@game-infra/api-schemas-core 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/dist/auth.d.ts +61 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +48 -1
- package/dist/auth.js.map +1 -1
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js.map +1 -1
- package/dist/contracts.d.ts +177 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +97 -1
- package/dist/contracts.js.map +1 -1
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js.map +1 -1
- package/dist/gameEntity.d.ts.map +1 -1
- package/dist/gameEntity.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/savegame.d.ts.map +1 -1
- package/dist/savegame.js.map +1 -1
- package/dist/serviceToken.d.ts.map +1 -1
- package/dist/serviceToken.js.map +1 -1
- package/dist/user.d.ts +251 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +147 -0
- package/dist/user.js.map +1 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -60,6 +60,20 @@ created.token; // shown once; the issuer never stores it
|
|
|
60
60
|
|
|
61
61
|
`ServiceTokenSchema` is what the issuer does store: id, owner, claims, issue time, expiry, revocation time. That is enough to revoke a token and nothing more, which is why revocation has to be checked with `serviceTokenValidateContract` rather than inferred from a signature.
|
|
62
62
|
|
|
63
|
+
### Account administration
|
|
64
|
+
|
|
65
|
+
`userListContract`, `userCreateContract`, `userUpdateContract`, and `userDeleteContract` serve `/users` on identity-service, for accounts holding the `admin` claim. `UserAccountSchema` never carries the password hash; `hasPassword` says whether the account has one that can match at login. Claims are lowercase tokens (`UserAdminValidation.CLAIM_PATTERN`), because every consumer compares them byte for byte:
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import { userUpdateContract } from "@game-infra/api-schemas-core";
|
|
69
|
+
import { sendByApiContract } from "@toad-contracts/frontend-http-client";
|
|
70
|
+
|
|
71
|
+
await sendByApiContract(client, userUpdateContract, {
|
|
72
|
+
pathParams: { userId: "42" },
|
|
73
|
+
body: { claims: ["admin"], password: "new-secret" },
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
63
77
|
## Extension points
|
|
64
78
|
|
|
65
79
|
- **Entity types**: `entityType` is a plain `string()`. The old `EntityTypes` enum (spell/item/persona/secret) was dropped; games re-tighten it via their own config/validation.
|
package/dist/auth.d.ts
CHANGED
|
@@ -19,6 +19,9 @@ export declare const AuthValidation: {
|
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
21
|
* Registration request schema
|
|
22
|
+
*
|
|
23
|
+
* @deprecated identity-service no longer accepts self-registration; use
|
|
24
|
+
* `CreateUserRequestSchema` with `userCreateContract`.
|
|
22
25
|
*/
|
|
23
26
|
export declare const RegisterRequestSchema: import("valibot").ObjectSchema<{
|
|
24
27
|
readonly email: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").EmailAction<string, undefined>]>;
|
|
@@ -36,6 +39,9 @@ export declare const AuthResponseFieldsSchema: {
|
|
|
36
39
|
};
|
|
37
40
|
/**
|
|
38
41
|
* Registration response schema
|
|
42
|
+
*
|
|
43
|
+
* @deprecated identity-service no longer accepts self-registration; use
|
|
44
|
+
* `UserResponseSchema` with `userCreateContract`.
|
|
39
45
|
*/
|
|
40
46
|
export declare const RegisterResponseSchema: import("valibot").ObjectSchema<{
|
|
41
47
|
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
@@ -119,8 +125,13 @@ export declare const IdentityReadinessResponseSchema: import("valibot").ObjectSc
|
|
|
119
125
|
readonly usersTable: import("valibot").BooleanSchema<undefined>;
|
|
120
126
|
/** Absent from a deployment predating service tokens. */
|
|
121
127
|
readonly serviceTokensTable: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
128
|
+
/**
|
|
129
|
+
* False when `JWT_SIGNING_KEY` or `JWT_PREVIOUS_PUBLIC_KEYS` is bound but
|
|
130
|
+
* unreadable. Absent from a deployment predating ES256 tokens.
|
|
131
|
+
*/
|
|
132
|
+
readonly signingKeys: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
122
133
|
}, undefined>;
|
|
123
|
-
readonly failedChecks: import("valibot").ArraySchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"jwtSecret", undefined>, import("valibot").LiteralSchema<"usersTable", undefined>, import("valibot").LiteralSchema<"serviceTokensTable", undefined>], undefined>, undefined>;
|
|
134
|
+
readonly failedChecks: import("valibot").ArraySchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"jwtSecret", undefined>, import("valibot").LiteralSchema<"usersTable", undefined>, import("valibot").LiteralSchema<"serviceTokensTable", undefined>, import("valibot").LiteralSchema<"signingKeys", undefined>], undefined>, undefined>;
|
|
124
135
|
}, undefined>;
|
|
125
136
|
/**
|
|
126
137
|
* Inferred identity-service readiness response.
|
|
@@ -132,4 +143,53 @@ export declare const IdentityReadinessResponseSchema: import("valibot").ObjectSc
|
|
|
132
143
|
* ```
|
|
133
144
|
*/
|
|
134
145
|
export type IdentityReadinessResponse = InferOutput<typeof IdentityReadinessResponseSchema>;
|
|
146
|
+
/**
|
|
147
|
+
* One public ES256 key identity-service signs tokens with, as RFC 7517 lists
|
|
148
|
+
* it. A token's header `kid` names the key that verifies it.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```ts
|
|
152
|
+
* import { PublicJwkSchema } from '@game-infra/api-schemas-core'
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare const PublicJwkSchema: import("valibot").ObjectSchema<{
|
|
156
|
+
readonly kty: import("valibot").LiteralSchema<"EC", undefined>;
|
|
157
|
+
readonly crv: import("valibot").LiteralSchema<"P-256", undefined>;
|
|
158
|
+
readonly x: import("valibot").StringSchema<undefined>;
|
|
159
|
+
readonly y: import("valibot").StringSchema<undefined>;
|
|
160
|
+
readonly kid: import("valibot").StringSchema<undefined>;
|
|
161
|
+
readonly alg: import("valibot").LiteralSchema<"ES256", undefined>;
|
|
162
|
+
readonly use: import("valibot").LiteralSchema<"sig", undefined>;
|
|
163
|
+
}, undefined>;
|
|
164
|
+
/**
|
|
165
|
+
* The JWKS document at `/.well-known/jwks.json`: the key tokens are signed with
|
|
166
|
+
* now, then keys that signed before the last rotation. Unwrapped, in the
|
|
167
|
+
* standard shape, so any JWT library can read it.
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts
|
|
171
|
+
* import { JwksResponseSchema } from '@game-infra/api-schemas-core'
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
export declare const JwksResponseSchema: import("valibot").ObjectSchema<{
|
|
175
|
+
readonly keys: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
176
|
+
readonly kty: import("valibot").LiteralSchema<"EC", undefined>;
|
|
177
|
+
readonly crv: import("valibot").LiteralSchema<"P-256", undefined>;
|
|
178
|
+
readonly x: import("valibot").StringSchema<undefined>;
|
|
179
|
+
readonly y: import("valibot").StringSchema<undefined>;
|
|
180
|
+
readonly kid: import("valibot").StringSchema<undefined>;
|
|
181
|
+
readonly alg: import("valibot").LiteralSchema<"ES256", undefined>;
|
|
182
|
+
readonly use: import("valibot").LiteralSchema<"sig", undefined>;
|
|
183
|
+
}, undefined>, undefined>;
|
|
184
|
+
}, undefined>;
|
|
185
|
+
/**
|
|
186
|
+
* Inferred JWKS document.
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```ts
|
|
190
|
+
* import type { JwksResponse } from '@game-infra/api-schemas-core'
|
|
191
|
+
* const empty: JwksResponse = { keys: [] }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export type JwksResponse = InferOutput<typeof JwksResponseSchema>;
|
|
135
195
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAcjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAcjB,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,eAAO,MAAM,cAAc;aACzB,mBAAmB,EAAE,CAAC;aACtB,mBAAmB,EAAE,GAAG;aACxB,mBAAmB,EAAE,CAAC;aACtB,mBAAmB,EAAE,EAAE;IACvB;;;;;;;OAOG;aACH,gBAAgB;CACR,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;aAahC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,wBAAwB;IACnC,KAAK;IACL,MAAM;IACN,QAAQ;CACT,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;aAAwD,CAAC;AAE5F,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;aAG7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;aAAwD,CAAC;AAEzF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;aAErC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;aAItC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC;;;;;aAE7C,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,WAAW,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAElG;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,+BAA+B;;;;;QAKxC,yDAAyD;;QAEzD;;;WAGG;;;;aAWL,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAE5F;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;aAQ1B,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;aAE7B,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -20,6 +20,9 @@ export const AuthValidation = {
|
|
|
20
20
|
};
|
|
21
21
|
/**
|
|
22
22
|
* Registration request schema
|
|
23
|
+
*
|
|
24
|
+
* @deprecated identity-service no longer accepts self-registration; use
|
|
25
|
+
* `CreateUserRequestSchema` with `userCreateContract`.
|
|
23
26
|
*/
|
|
24
27
|
export const RegisterRequestSchema = object({
|
|
25
28
|
email: pipe(string(), email()),
|
|
@@ -36,6 +39,9 @@ export const AuthResponseFieldsSchema = {
|
|
|
36
39
|
};
|
|
37
40
|
/**
|
|
38
41
|
* Registration response schema
|
|
42
|
+
*
|
|
43
|
+
* @deprecated identity-service no longer accepts self-registration; use
|
|
44
|
+
* `UserResponseSchema` with `userCreateContract`.
|
|
39
45
|
*/
|
|
40
46
|
export const RegisterResponseSchema = createSuccessResponseSchema(AuthResponseFieldsSchema);
|
|
41
47
|
/**
|
|
@@ -93,7 +99,48 @@ export const IdentityReadinessResponseSchema = object({
|
|
|
93
99
|
usersTable: boolean(),
|
|
94
100
|
/** Absent from a deployment predating service tokens. */
|
|
95
101
|
serviceTokensTable: optional(boolean()),
|
|
102
|
+
/**
|
|
103
|
+
* False when `JWT_SIGNING_KEY` or `JWT_PREVIOUS_PUBLIC_KEYS` is bound but
|
|
104
|
+
* unreadable. Absent from a deployment predating ES256 tokens.
|
|
105
|
+
*/
|
|
106
|
+
signingKeys: optional(boolean()),
|
|
96
107
|
}),
|
|
97
|
-
failedChecks: array(union([
|
|
108
|
+
failedChecks: array(union([
|
|
109
|
+
literal("jwtSecret"),
|
|
110
|
+
literal("usersTable"),
|
|
111
|
+
literal("serviceTokensTable"),
|
|
112
|
+
literal("signingKeys"),
|
|
113
|
+
])),
|
|
114
|
+
});
|
|
115
|
+
/**
|
|
116
|
+
* One public ES256 key identity-service signs tokens with, as RFC 7517 lists
|
|
117
|
+
* it. A token's header `kid` names the key that verifies it.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* import { PublicJwkSchema } from '@game-infra/api-schemas-core'
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export const PublicJwkSchema = object({
|
|
125
|
+
kty: literal("EC"),
|
|
126
|
+
crv: literal("P-256"),
|
|
127
|
+
x: string(),
|
|
128
|
+
y: string(),
|
|
129
|
+
kid: string(),
|
|
130
|
+
alg: literal("ES256"),
|
|
131
|
+
use: literal("sig"),
|
|
132
|
+
});
|
|
133
|
+
/**
|
|
134
|
+
* The JWKS document at `/.well-known/jwks.json`: the key tokens are signed with
|
|
135
|
+
* now, then keys that signed before the last rotation. Unwrapped, in the
|
|
136
|
+
* standard shape, so any JWT library can read it.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```ts
|
|
140
|
+
* import { JwksResponseSchema } from '@game-infra/api-schemas-core'
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export const JwksResponseSchema = object({
|
|
144
|
+
keys: array(PublicJwkSchema),
|
|
98
145
|
});
|
|
99
146
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,GACN,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/backup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,SAAS,CAAC;AAIpF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;aAO3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;aAKtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;aAEpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;aAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;aAGtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;aAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
package/dist/backup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,EAAE;IACnB,QAAQ,EAAE,MAAM,EAAE;IAClB,WAAW,EAAE,MAAM,EAAE;IACrB,IAAI,EAAE,MAAM,EAAE;IACd,SAAS,EAAE,MAAM,EAAE;IACnB,MAAM,EAAE,MAAM,EAAE,EAAE,oCAAoC;CACvD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;IACrE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CACzB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;IACnE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;CAC3C,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;IAC/C,SAAS,EAAE,MAAM,EAAE;IACnB,MAAM,EAAE,MAAM,EAAE,EAAE,oCAAoC;CACvD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;IACrE,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IACjC,yBAAyB,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC9C,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;IACtE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC;CACnC,CAAC,CAAC"}
|
package/dist/contracts.d.ts
CHANGED
|
@@ -17,6 +17,20 @@ import { ContractNoBody } from "@toad-contracts/valibot";
|
|
|
17
17
|
* // '/games/g1/entities/item/e1'
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
|
+
/**
|
|
21
|
+
* Self-registration.
|
|
22
|
+
*
|
|
23
|
+
* @deprecated identity-service no longer serves `/auth/register`: accounts are
|
|
24
|
+
* created by an admin with {@link userCreateContract}. Kept so consumers still
|
|
25
|
+
* typecheck while they drop their sign-up forms; it will be removed in a later
|
|
26
|
+
* release.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { userCreateContract } from '@game-infra/api-schemas-core'
|
|
31
|
+
* userCreateContract.pathResolver({}) // '/users'
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
20
34
|
export declare const authRegisterContract: {
|
|
21
35
|
readonly method: "post";
|
|
22
36
|
readonly pathResolver: () => string;
|
|
@@ -102,8 +116,9 @@ export declare const identityReadinessContract: {
|
|
|
102
116
|
readonly jwtSecret: import("valibot").BooleanSchema<undefined>;
|
|
103
117
|
readonly usersTable: import("valibot").BooleanSchema<undefined>;
|
|
104
118
|
readonly serviceTokensTable: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
119
|
+
readonly signingKeys: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
105
120
|
}, undefined>;
|
|
106
|
-
readonly failedChecks: import("valibot").ArraySchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"jwtSecret", undefined>, import("valibot").LiteralSchema<"usersTable", undefined>, import("valibot").LiteralSchema<"serviceTokensTable", undefined>], undefined>, undefined>;
|
|
121
|
+
readonly failedChecks: import("valibot").ArraySchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"jwtSecret", undefined>, import("valibot").LiteralSchema<"usersTable", undefined>, import("valibot").LiteralSchema<"serviceTokensTable", undefined>, import("valibot").LiteralSchema<"signingKeys", undefined>], undefined>, undefined>;
|
|
107
122
|
}, undefined>;
|
|
108
123
|
503: import("valibot").ObjectSchema<{
|
|
109
124
|
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
@@ -111,8 +126,37 @@ export declare const identityReadinessContract: {
|
|
|
111
126
|
readonly jwtSecret: import("valibot").BooleanSchema<undefined>;
|
|
112
127
|
readonly usersTable: import("valibot").BooleanSchema<undefined>;
|
|
113
128
|
readonly serviceTokensTable: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
129
|
+
readonly signingKeys: import("valibot").OptionalSchema<import("valibot").BooleanSchema<undefined>, undefined>;
|
|
114
130
|
}, undefined>;
|
|
115
|
-
readonly failedChecks: import("valibot").ArraySchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"jwtSecret", undefined>, import("valibot").LiteralSchema<"usersTable", undefined>, import("valibot").LiteralSchema<"serviceTokensTable", undefined>], undefined>, undefined>;
|
|
131
|
+
readonly failedChecks: import("valibot").ArraySchema<import("valibot").UnionSchema<[import("valibot").LiteralSchema<"jwtSecret", undefined>, import("valibot").LiteralSchema<"usersTable", undefined>, import("valibot").LiteralSchema<"serviceTokensTable", undefined>, import("valibot").LiteralSchema<"signingKeys", undefined>], undefined>, undefined>;
|
|
132
|
+
}, undefined>;
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* The public keys identity-service signs ES256 tokens with.
|
|
137
|
+
*
|
|
138
|
+
* Unauthenticated: a verifier fetches this before it can check any token.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```ts
|
|
142
|
+
* import { jwksContract } from '@game-infra/api-schemas-core'
|
|
143
|
+
* jwksContract.pathResolver({}) // '/.well-known/jwks.json'
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare const jwksContract: {
|
|
147
|
+
readonly method: "get";
|
|
148
|
+
readonly pathResolver: () => string;
|
|
149
|
+
readonly responsesByStatusCode: {
|
|
150
|
+
200: import("valibot").ObjectSchema<{
|
|
151
|
+
readonly keys: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
152
|
+
readonly kty: import("valibot").LiteralSchema<"EC", undefined>;
|
|
153
|
+
readonly crv: import("valibot").LiteralSchema<"P-256", undefined>;
|
|
154
|
+
readonly x: import("valibot").StringSchema<undefined>;
|
|
155
|
+
readonly y: import("valibot").StringSchema<undefined>;
|
|
156
|
+
readonly kid: import("valibot").StringSchema<undefined>;
|
|
157
|
+
readonly alg: import("valibot").LiteralSchema<"ES256", undefined>;
|
|
158
|
+
readonly use: import("valibot").LiteralSchema<"sig", undefined>;
|
|
159
|
+
}, undefined>, undefined>;
|
|
116
160
|
}, undefined>;
|
|
117
161
|
};
|
|
118
162
|
};
|
|
@@ -284,6 +328,137 @@ export declare const serviceTokenPurgeContract: {
|
|
|
284
328
|
}, undefined>;
|
|
285
329
|
};
|
|
286
330
|
};
|
|
331
|
+
/**
|
|
332
|
+
* List every account. Requires the `admin` claim.
|
|
333
|
+
*
|
|
334
|
+
* @example
|
|
335
|
+
* ```ts
|
|
336
|
+
* import { userListContract } from '@game-infra/api-schemas-core'
|
|
337
|
+
* userListContract.pathResolver({}) // '/users'
|
|
338
|
+
* ```
|
|
339
|
+
*/
|
|
340
|
+
export declare const userListContract: {
|
|
341
|
+
readonly method: "get";
|
|
342
|
+
readonly pathResolver: () => string;
|
|
343
|
+
readonly responsesByStatusCode: {
|
|
344
|
+
200: import("valibot").ObjectSchema<{
|
|
345
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
346
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
347
|
+
} & {
|
|
348
|
+
users: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
349
|
+
readonly id: import("valibot").NumberSchema<undefined>;
|
|
350
|
+
readonly username: import("valibot").StringSchema<undefined>;
|
|
351
|
+
readonly email: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
352
|
+
readonly claims: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
353
|
+
readonly hasPassword: import("valibot").BooleanSchema<undefined>;
|
|
354
|
+
readonly createdAt: import("valibot").StringSchema<undefined>;
|
|
355
|
+
readonly updatedAt: import("valibot").StringSchema<undefined>;
|
|
356
|
+
}, undefined>, undefined>, undefined>;
|
|
357
|
+
}, undefined>;
|
|
358
|
+
};
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* Create an account, optionally with claims. Requires the `admin` claim.
|
|
362
|
+
*
|
|
363
|
+
* @example
|
|
364
|
+
* ```ts
|
|
365
|
+
* import { userCreateContract } from '@game-infra/api-schemas-core'
|
|
366
|
+
* userCreateContract.pathResolver({}) // '/users'
|
|
367
|
+
* ```
|
|
368
|
+
*/
|
|
369
|
+
export declare const userCreateContract: {
|
|
370
|
+
readonly method: "post";
|
|
371
|
+
readonly pathResolver: () => string;
|
|
372
|
+
readonly requestBodySchema: import("valibot").ObjectSchema<{
|
|
373
|
+
readonly username: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 3, undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Username may not contain @ or whitespace">]>;
|
|
374
|
+
readonly email: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").EmailAction<string, undefined>]>, undefined>;
|
|
375
|
+
readonly password: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 6, undefined>, import("valibot").MaxLengthAction<string, 128, undefined>]>;
|
|
376
|
+
readonly claims: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Claims are lowercase letters, digits, '.', ':', '_' or '-', starting with a letter">]>, undefined>, import("valibot").MaxLengthAction<string[], 32, undefined>]>, undefined>;
|
|
377
|
+
}, undefined>;
|
|
378
|
+
readonly responsesByStatusCode: {
|
|
379
|
+
200: import("valibot").ObjectSchema<{
|
|
380
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
381
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
382
|
+
} & {
|
|
383
|
+
user: import("valibot").OptionalSchema<import("valibot").ObjectSchema<{
|
|
384
|
+
readonly id: import("valibot").NumberSchema<undefined>;
|
|
385
|
+
readonly username: import("valibot").StringSchema<undefined>;
|
|
386
|
+
readonly email: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
387
|
+
readonly claims: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
388
|
+
readonly hasPassword: import("valibot").BooleanSchema<undefined>;
|
|
389
|
+
readonly createdAt: import("valibot").StringSchema<undefined>;
|
|
390
|
+
readonly updatedAt: import("valibot").StringSchema<undefined>;
|
|
391
|
+
}, undefined>, undefined>;
|
|
392
|
+
}, undefined>;
|
|
393
|
+
};
|
|
394
|
+
};
|
|
395
|
+
/**
|
|
396
|
+
* Change an account's username, email, password, or claims. Requires the
|
|
397
|
+
* `admin` claim.
|
|
398
|
+
*
|
|
399
|
+
* @example
|
|
400
|
+
* ```ts
|
|
401
|
+
* import { userUpdateContract } from '@game-infra/api-schemas-core'
|
|
402
|
+
* userUpdateContract.pathResolver({ userId: '42' }) // '/users/42'
|
|
403
|
+
* ```
|
|
404
|
+
*/
|
|
405
|
+
export declare const userUpdateContract: {
|
|
406
|
+
readonly method: "patch";
|
|
407
|
+
readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
|
|
408
|
+
readonly userId: import("valibot").StringSchema<undefined>;
|
|
409
|
+
}, undefined> & import("@toad-contracts/valibot").StandardObjectKeysV1<unknown, unknown>;
|
|
410
|
+
readonly pathResolver: ({ userId }: {
|
|
411
|
+
userId: string;
|
|
412
|
+
}) => string;
|
|
413
|
+
readonly requestBodySchema: import("valibot").ObjectSchema<{
|
|
414
|
+
readonly username: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 3, undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Username may not contain @ or whitespace">]>, undefined>;
|
|
415
|
+
readonly email: import("valibot").OptionalSchema<import("valibot").NullableSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").EmailAction<string, undefined>]>, undefined>, undefined>;
|
|
416
|
+
readonly password: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 6, undefined>, import("valibot").MaxLengthAction<string, 128, undefined>]>, undefined>;
|
|
417
|
+
readonly claims: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Claims are lowercase letters, digits, '.', ':', '_' or '-', starting with a letter">]>, undefined>, import("valibot").MaxLengthAction<string[], 32, undefined>]>, undefined>;
|
|
418
|
+
}, undefined>;
|
|
419
|
+
readonly responsesByStatusCode: {
|
|
420
|
+
200: import("valibot").ObjectSchema<{
|
|
421
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
422
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
423
|
+
} & {
|
|
424
|
+
user: import("valibot").OptionalSchema<import("valibot").ObjectSchema<{
|
|
425
|
+
readonly id: import("valibot").NumberSchema<undefined>;
|
|
426
|
+
readonly username: import("valibot").StringSchema<undefined>;
|
|
427
|
+
readonly email: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
428
|
+
readonly claims: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
429
|
+
readonly hasPassword: import("valibot").BooleanSchema<undefined>;
|
|
430
|
+
readonly createdAt: import("valibot").StringSchema<undefined>;
|
|
431
|
+
readonly updatedAt: import("valibot").StringSchema<undefined>;
|
|
432
|
+
}, undefined>, undefined>;
|
|
433
|
+
}, undefined>;
|
|
434
|
+
};
|
|
435
|
+
};
|
|
436
|
+
/**
|
|
437
|
+
* Delete an account and revoke its service tokens. Requires the `admin` claim.
|
|
438
|
+
*
|
|
439
|
+
* @example
|
|
440
|
+
* ```ts
|
|
441
|
+
* import { userDeleteContract } from '@game-infra/api-schemas-core'
|
|
442
|
+
* userDeleteContract.pathResolver({ userId: '42' }) // '/users/42'
|
|
443
|
+
* ```
|
|
444
|
+
*/
|
|
445
|
+
export declare const userDeleteContract: {
|
|
446
|
+
readonly method: "delete";
|
|
447
|
+
readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
|
|
448
|
+
readonly userId: import("valibot").StringSchema<undefined>;
|
|
449
|
+
}, undefined> & import("@toad-contracts/valibot").StandardObjectKeysV1<unknown, unknown>;
|
|
450
|
+
readonly pathResolver: ({ userId }: {
|
|
451
|
+
userId: string;
|
|
452
|
+
}) => string;
|
|
453
|
+
readonly responsesByStatusCode: {
|
|
454
|
+
200: import("valibot").ObjectSchema<{
|
|
455
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
456
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
457
|
+
} & {
|
|
458
|
+
revokedServiceTokens: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
459
|
+
}, undefined>;
|
|
460
|
+
};
|
|
461
|
+
};
|
|
287
462
|
export declare const savegameSaveContract: {
|
|
288
463
|
readonly method: "put";
|
|
289
464
|
readonly requestPathParamsSchema: import("valibot").ObjectSchema<{
|
package/dist/contracts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/contracts.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ContractNoBody, defineApiContract, withObjectKeys } from "@toad-contracts/valibot";
|
|
2
2
|
import { object, string } from "valibot";
|
|
3
|
-
import { LoginRequestSchema, LoginResponseSchema, RegisterRequestSchema, RegisterResponseSchema, ValidateServiceTokenResponseSchema, IdentityReadinessResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, } from "./auth.js";
|
|
3
|
+
import { LoginRequestSchema, LoginResponseSchema, RegisterRequestSchema, RegisterResponseSchema, ValidateServiceTokenResponseSchema, IdentityReadinessResponseSchema, JwksResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, } from "./auth.js";
|
|
4
4
|
import { DownloadBackupResponseSchema, ListBackupsResponseSchema, RestoreBackupRequestSchema, RestoreBackupResponseSchema, TriggerBackupResponseSchema, } from "./backup.js";
|
|
5
5
|
import { ApiResponseSchema } from "./common.js";
|
|
6
6
|
import { FeedbackSubmitRequestSchema, FeedbackSubmitResponseSchema } from "./feedback.js";
|
|
7
7
|
import { GameEntityBulkSaveRequestSchema, GameEntityBulkSaveResponseSchema, GameEntityDeleteResponseSchema, GameEntityListResponseSchema, GameEntityLoadResponseSchema, GameEntitySaveRequestSchema, GameEntitySaveResponseSchema, } from "./gameEntity.js";
|
|
8
8
|
import { SavegameListSlotsResponseSchema, SavegameLoadResponseSchema, SavegameSaveRequestSchema, SavegameSaveResponseSchema, } from "./savegame.js";
|
|
9
9
|
import { CreateServiceTokenRequestSchema, CreateServiceTokenResponseSchema, ListServiceTokensResponseSchema, PurgeServiceTokensResponseSchema, RevokeServiceTokenResponseSchema, ServiceTokenValidateRequestSchema, ServiceTokenValidateResponseSchema, } from "./serviceToken.js";
|
|
10
|
+
import { CreateUserRequestSchema, DeleteUserResponseSchema, ListUsersResponseSchema, UpdateUserRequestSchema, UserResponseSchema, } from "./user.js";
|
|
10
11
|
/**
|
|
11
12
|
* Typed endpoint contracts for the generic service API.
|
|
12
13
|
*
|
|
@@ -28,6 +29,20 @@ import { CreateServiceTokenRequestSchema, CreateServiceTokenResponseSchema, List
|
|
|
28
29
|
// ============================================================================
|
|
29
30
|
// Auth
|
|
30
31
|
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Self-registration.
|
|
34
|
+
*
|
|
35
|
+
* @deprecated identity-service no longer serves `/auth/register`: accounts are
|
|
36
|
+
* created by an admin with {@link userCreateContract}. Kept so consumers still
|
|
37
|
+
* typecheck while they drop their sign-up forms; it will be removed in a later
|
|
38
|
+
* release.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { userCreateContract } from '@game-infra/api-schemas-core'
|
|
43
|
+
* userCreateContract.pathResolver({}) // '/users'
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
31
46
|
export const authRegisterContract = defineApiContract({
|
|
32
47
|
method: "post",
|
|
33
48
|
pathResolver: () => "/auth/register",
|
|
@@ -68,6 +83,22 @@ export const identityReadinessContract = defineApiContract({
|
|
|
68
83
|
503: IdentityReadinessResponseSchema,
|
|
69
84
|
},
|
|
70
85
|
});
|
|
86
|
+
/**
|
|
87
|
+
* The public keys identity-service signs ES256 tokens with.
|
|
88
|
+
*
|
|
89
|
+
* Unauthenticated: a verifier fetches this before it can check any token.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* import { jwksContract } from '@game-infra/api-schemas-core'
|
|
94
|
+
* jwksContract.pathResolver({}) // '/.well-known/jwks.json'
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export const jwksContract = defineApiContract({
|
|
98
|
+
method: "get",
|
|
99
|
+
pathResolver: () => "/.well-known/jwks.json",
|
|
100
|
+
responsesByStatusCode: { 200: JwksResponseSchema },
|
|
101
|
+
});
|
|
71
102
|
// ============================================================================
|
|
72
103
|
// Service tokens
|
|
73
104
|
// ============================================================================
|
|
@@ -156,6 +187,71 @@ export const serviceTokenPurgeContract = defineApiContract({
|
|
|
156
187
|
responsesByStatusCode: { 200: PurgeServiceTokensResponseSchema },
|
|
157
188
|
});
|
|
158
189
|
// ============================================================================
|
|
190
|
+
// Account administration (admin claim required)
|
|
191
|
+
// ============================================================================
|
|
192
|
+
const userIdParams = withObjectKeys(object({ userId: string() }));
|
|
193
|
+
/**
|
|
194
|
+
* List every account. Requires the `admin` claim.
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```ts
|
|
198
|
+
* import { userListContract } from '@game-infra/api-schemas-core'
|
|
199
|
+
* userListContract.pathResolver({}) // '/users'
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
export const userListContract = defineApiContract({
|
|
203
|
+
method: "get",
|
|
204
|
+
pathResolver: () => "/users",
|
|
205
|
+
responsesByStatusCode: { 200: ListUsersResponseSchema },
|
|
206
|
+
});
|
|
207
|
+
/**
|
|
208
|
+
* Create an account, optionally with claims. Requires the `admin` claim.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```ts
|
|
212
|
+
* import { userCreateContract } from '@game-infra/api-schemas-core'
|
|
213
|
+
* userCreateContract.pathResolver({}) // '/users'
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
export const userCreateContract = defineApiContract({
|
|
217
|
+
method: "post",
|
|
218
|
+
pathResolver: () => "/users",
|
|
219
|
+
requestBodySchema: CreateUserRequestSchema,
|
|
220
|
+
responsesByStatusCode: { 200: UserResponseSchema },
|
|
221
|
+
});
|
|
222
|
+
/**
|
|
223
|
+
* Change an account's username, email, password, or claims. Requires the
|
|
224
|
+
* `admin` claim.
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```ts
|
|
228
|
+
* import { userUpdateContract } from '@game-infra/api-schemas-core'
|
|
229
|
+
* userUpdateContract.pathResolver({ userId: '42' }) // '/users/42'
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export const userUpdateContract = defineApiContract({
|
|
233
|
+
method: "patch",
|
|
234
|
+
requestPathParamsSchema: userIdParams,
|
|
235
|
+
pathResolver: ({ userId }) => `/users/${userId}`,
|
|
236
|
+
requestBodySchema: UpdateUserRequestSchema,
|
|
237
|
+
responsesByStatusCode: { 200: UserResponseSchema },
|
|
238
|
+
});
|
|
239
|
+
/**
|
|
240
|
+
* Delete an account and revoke its service tokens. Requires the `admin` claim.
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```ts
|
|
244
|
+
* import { userDeleteContract } from '@game-infra/api-schemas-core'
|
|
245
|
+
* userDeleteContract.pathResolver({ userId: '42' }) // '/users/42'
|
|
246
|
+
* ```
|
|
247
|
+
*/
|
|
248
|
+
export const userDeleteContract = defineApiContract({
|
|
249
|
+
method: "delete",
|
|
250
|
+
requestPathParamsSchema: userIdParams,
|
|
251
|
+
pathResolver: ({ userId }) => `/users/${userId}`,
|
|
252
|
+
responsesByStatusCode: { 200: DeleteUserResponseSchema },
|
|
253
|
+
});
|
|
254
|
+
// ============================================================================
|
|
159
255
|
// Savegame (save/load share one path, disambiguated by method)
|
|
160
256
|
// ============================================================================
|
|
161
257
|
const savegameSlotParams = withObjectKeys(object({ userId: string(), gameId: string(), saveSlot: string() }));
|
package/dist/contracts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/feedback.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EASjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EASjB,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,eAAO,MAAM,YAAY;aACvB,GAAG,EAAE,KAAK;aACV,UAAU,EAAE,YAAY;aACxB,OAAO,EAAE,SAAS;CACV,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;aAOtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;aAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
package/dist/feedback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,GACN,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,SAAS,EACT,KAAK,GACN,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,KAAK;IACV,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;CACV,CAAC;AAOX;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC;IAChD,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC3C,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC7B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;IACtE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC5B,CAAC,CAAC"}
|
package/dist/gameEntity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameEntity.d.ts","sourceRoot":"","sources":["../src/gameEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAmC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"gameEntity.d.ts","sourceRoot":"","sources":["../src/gameEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAmC,MAAM,SAAS,CAAC;AAQ5E;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;aAItC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;aAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;aAKvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;aAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;aAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,8BAA8B;;;aAAkC,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAE1F;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;aAQ1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAE5F;;GAEG;AACH,eAAO,MAAM,gCAAgC;;;;;aAE3C,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,WAAW,CAAC,OAAO,gCAAgC,CAAC,CAAC"}
|
package/dist/gameEntity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameEntity.js","sourceRoot":"","sources":["../src/gameEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"gameEntity.js","sourceRoot":"","sources":["../src/gameEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAE1E;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC;IAChD,QAAQ,EAAE,MAAM,EAAE;IAClB,UAAU,EAAE,MAAM,EAAE;IACpB,UAAU,EAAE,MAAM,EAAE,EAAE,4BAA4B;CACnD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;IACtE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC7B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;IACtE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC9B,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;IACzC,QAAQ,EAAE,MAAM,EAAE;IAClB,UAAU,EAAE,MAAM,EAAE;IACpB,SAAS,EAAE,MAAM,EAAE;CACpB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC;IACtE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;CAChD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,2BAA2B,CAAC,EAAE,CAAC,CAAC;AAI9E;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;IACpD,QAAQ,EAAE,KAAK,CACb,MAAM,CAAC;QACL,QAAQ,EAAE,MAAM,EAAE;QAClB,UAAU,EAAE,MAAM,EAAE;QACpB,UAAU,EAAE,MAAM,EAAE;KACrB,CAAC,CACH;CACF,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,2BAA2B,CAAC;IAC1E,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,12 @@ export { ApiResponseSchema, createSuccessResponseSchema, TimestampFieldsSchema,
|
|
|
2
2
|
export type { ApiResponse, TimestampFields, EntityMetadata } from "./common.js";
|
|
3
3
|
export { AI_PROVIDERS, AIProviderSchema } from "./aiProvider.js";
|
|
4
4
|
export type { AIProviderType } from "./aiProvider.js";
|
|
5
|
-
export { AuthValidation, RegisterRequestSchema, AuthResponseFieldsSchema, RegisterResponseSchema, LoginRequestSchema, LoginResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, ValidateServiceTokenResponseSchema, IdentityReadinessResponseSchema, } from "./auth.js";
|
|
6
|
-
export type { RegisterRequest, RegisterResponse, LoginRequest, LoginResponse, ValidateTokenRequest, ValidateTokenResponse, ValidateServiceTokenResponse, IdentityReadinessResponse, } from "./auth.js";
|
|
5
|
+
export { AuthValidation, RegisterRequestSchema, AuthResponseFieldsSchema, RegisterResponseSchema, LoginRequestSchema, LoginResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, ValidateServiceTokenResponseSchema, IdentityReadinessResponseSchema, PublicJwkSchema, JwksResponseSchema, } from "./auth.js";
|
|
6
|
+
export type { RegisterRequest, RegisterResponse, LoginRequest, LoginResponse, ValidateTokenRequest, ValidateTokenResponse, ValidateServiceTokenResponse, IdentityReadinessResponse, JwksResponse, } from "./auth.js";
|
|
7
7
|
export { ServiceTokenValidation, ServiceTokenIdSchema, ServiceTokenSchema, CreateServiceTokenRequestSchema, CreateServiceTokenResponseSchema, ListServiceTokensResponseSchema, RevokeServiceTokenResponseSchema, ServiceTokenValidateRequestSchema, ServiceTokenRejectionSchema, ServiceTokenValidateResponseSchema, PurgeServiceTokensResponseSchema, } from "./serviceToken.js";
|
|
8
8
|
export type { ServiceToken, CreateServiceTokenRequest, CreateServiceTokenResponse, ListServiceTokensResponse, RevokeServiceTokenResponse, ServiceTokenValidateRequest, ServiceTokenRejection, ServiceTokenValidateResponse, PurgeServiceTokensResponse, } from "./serviceToken.js";
|
|
9
|
+
export { UserAdminValidation, UserAccountSchema, ListUsersResponseSchema, CreateUserRequestSchema, UpdateUserRequestSchema, UserResponseSchema, DeleteUserResponseSchema, } from "./user.js";
|
|
10
|
+
export type { UserAccount, ListUsersResponse, CreateUserRequest, UpdateUserRequest, UserResponse, DeleteUserResponse, } from "./user.js";
|
|
9
11
|
export { BackupInfoSchema, TriggerBackupResponseSchema, ListBackupsResponseSchema, RestoreBackupRequestSchema, RestoreBackupResponseSchema, DownloadBackupResponseSchema, } from "./backup.js";
|
|
10
12
|
export type { BackupInfo, TriggerBackupResponse, ListBackupsResponse, RestoreBackupRequest, RestoreBackupResponse, DownloadBackupResponse, } from "./backup.js";
|
|
11
13
|
export { FeedbackType, FeedbackSubmitRequestSchema, FeedbackSubmitResponseSchema, } from "./feedback.js";
|
|
@@ -16,5 +18,5 @@ export { GameEntitySaveRequestSchema, GameEntitySaveResponseSchema, GameEntityLo
|
|
|
16
18
|
export type { GameEntitySaveRequest, GameEntitySaveResponse, GameEntityLoadResponse, GameEntityInfo, GameEntityListResponse, GameEntityDeleteResponse, GameEntityBulkSaveRequest, GameEntityBulkSaveResponse, } from "./gameEntity.js";
|
|
17
19
|
export { DEFAULT_DEVELOPMENT_API_URL, createApiUrlResolver } from "./apiConfig.js";
|
|
18
20
|
export type { ApiUrlResolverOptions, ApiUrlResolver } from "./apiConfig.js";
|
|
19
|
-
export { authRegisterContract, authLoginContract, authValidateContract, authValidateServiceTokenContract, identityReadinessContract, serviceTokenCreateContract, serviceTokenListContract, serviceTokenRevokeContract, serviceTokenValidateContract, serviceTokenPurgeContract, savegameSaveContract, savegameLoadContract, savegameListSlotsContract, gameEntitySaveContract, gameEntityUpdateContract, gameEntityLoadContract, gameEntityListContract, gameEntityListAllContract, gameEntityDeleteContract, gameEntityBulkSaveContract, backupTriggerContract, backupListContract, backupRestoreContract, backupDownloadContract, feedbackSubmitContract, heartbeatContract, } from "./contracts.js";
|
|
21
|
+
export { authRegisterContract, authLoginContract, authValidateContract, authValidateServiceTokenContract, identityReadinessContract, jwksContract, serviceTokenCreateContract, serviceTokenListContract, serviceTokenRevokeContract, serviceTokenValidateContract, serviceTokenPurgeContract, userListContract, userCreateContract, userUpdateContract, userDeleteContract, savegameSaveContract, savegameLoadContract, savegameListSlotsContract, gameEntitySaveContract, gameEntityUpdateContract, gameEntityLoadContract, gameEntityListContract, gameEntityListAllContract, gameEntityDeleteContract, gameEntityBulkSaveContract, backupTriggerContract, backupListContract, backupRestoreContract, backupDownloadContract, feedbackSubmitContract, heartbeatContract, } from "./contracts.js";
|
|
20
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,kCAAkC,EAClC,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -3,9 +3,11 @@ export { ApiResponseSchema, createSuccessResponseSchema, TimestampFieldsSchema,
|
|
|
3
3
|
// AI provider enum
|
|
4
4
|
export { AI_PROVIDERS, AIProviderSchema } from "./aiProvider.js";
|
|
5
5
|
// Auth
|
|
6
|
-
export { AuthValidation, RegisterRequestSchema, AuthResponseFieldsSchema, RegisterResponseSchema, LoginRequestSchema, LoginResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, ValidateServiceTokenResponseSchema, IdentityReadinessResponseSchema, } from "./auth.js";
|
|
6
|
+
export { AuthValidation, RegisterRequestSchema, AuthResponseFieldsSchema, RegisterResponseSchema, LoginRequestSchema, LoginResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, ValidateServiceTokenResponseSchema, IdentityReadinessResponseSchema, PublicJwkSchema, JwksResponseSchema, } from "./auth.js";
|
|
7
7
|
// Service tokens
|
|
8
8
|
export { ServiceTokenValidation, ServiceTokenIdSchema, ServiceTokenSchema, CreateServiceTokenRequestSchema, CreateServiceTokenResponseSchema, ListServiceTokensResponseSchema, RevokeServiceTokenResponseSchema, ServiceTokenValidateRequestSchema, ServiceTokenRejectionSchema, ServiceTokenValidateResponseSchema, PurgeServiceTokensResponseSchema, } from "./serviceToken.js";
|
|
9
|
+
// Account administration
|
|
10
|
+
export { UserAdminValidation, UserAccountSchema, ListUsersResponseSchema, CreateUserRequestSchema, UpdateUserRequestSchema, UserResponseSchema, DeleteUserResponseSchema, } from "./user.js";
|
|
9
11
|
// Backup
|
|
10
12
|
export { BackupInfoSchema, TriggerBackupResponseSchema, ListBackupsResponseSchema, RestoreBackupRequestSchema, RestoreBackupResponseSchema, DownloadBackupResponseSchema, } from "./backup.js";
|
|
11
13
|
// Feedback
|
|
@@ -18,5 +20,5 @@ export { GameEntitySaveRequestSchema, GameEntitySaveResponseSchema, GameEntityLo
|
|
|
18
20
|
export { DEFAULT_DEVELOPMENT_API_URL, createApiUrlResolver } from "./apiConfig.js";
|
|
19
21
|
// Typed endpoint contracts (toad-contracts). Each contract carries its own
|
|
20
22
|
// `pathResolver`; wire them into a client via @toad-contracts/frontend-http-client.
|
|
21
|
-
export { authRegisterContract, authLoginContract, authValidateContract, authValidateServiceTokenContract, identityReadinessContract, serviceTokenCreateContract, serviceTokenListContract, serviceTokenRevokeContract, serviceTokenValidateContract, serviceTokenPurgeContract, savegameSaveContract, savegameLoadContract, savegameListSlotsContract, gameEntitySaveContract, gameEntityUpdateContract, gameEntityLoadContract, gameEntityListContract, gameEntityListAllContract, gameEntityDeleteContract, gameEntityBulkSaveContract, backupTriggerContract, backupListContract, backupRestoreContract, backupDownloadContract, feedbackSubmitContract, heartbeatContract, } from "./contracts.js";
|
|
23
|
+
export { authRegisterContract, authLoginContract, authValidateContract, authValidateServiceTokenContract, identityReadinessContract, jwksContract, serviceTokenCreateContract, serviceTokenListContract, serviceTokenRevokeContract, serviceTokenValidateContract, serviceTokenPurgeContract, userListContract, userCreateContract, userUpdateContract, userDeleteContract, savegameSaveContract, savegameLoadContract, savegameListSlotsContract, gameEntitySaveContract, gameEntityUpdateContract, gameEntityLoadContract, gameEntityListContract, gameEntityListAllContract, gameEntityDeleteContract, gameEntityBulkSaveContract, backupTriggerContract, backupListContract, backupRestoreContract, backupDownloadContract, feedbackSubmitContract, heartbeatContract, } from "./contracts.js";
|
|
22
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO;AACP,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,kCAAkC,EAClC,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO;AACP,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,kCAAkC,EAClC,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAanB,iBAAiB;AACjB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,2BAA2B,EAC3B,kCAAkC,EAClC,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAa3B,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAUnB,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AAUrB,WAAW;AACX,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AAGvB,WAAW;AACX,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,EACd,+BAA+B,GAChC,MAAM,eAAe,CAAC;AASvB,gBAAgB;AAChB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AAYzB,2BAA2B;AAC3B,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGnF,2EAA2E;AAC3E,oFAAoF;AAEpF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,gCAAgC,EAChC,yBAAyB,EACzB,YAAY,EACZ,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
|
package/dist/savegame.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"savegame.d.ts","sourceRoot":"","sources":["../src/savegame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"savegame.d.ts","sourceRoot":"","sources":["../src/savegame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,SAAS,CAAC;AAIpF;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;aAGpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;aAAkC,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;aAIrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;aAIzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;aAE1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
|
package/dist/savegame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"savegame.js","sourceRoot":"","sources":["../src/savegame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"savegame.js","sourceRoot":"","sources":["../src/savegame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;IAC9C,WAAW,EAAE,MAAM,EAAE;IACrB,cAAc,EAAE,MAAM,EAAE;CACzB,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,EAAE,CAAC,CAAC;AAI1E;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;IACpE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClC,WAAW,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;IACnC,QAAQ,EAAE,MAAM,EAAE;IAClB,WAAW,EAAE,MAAM,EAAE;IACrB,SAAS,EAAE,MAAM,EAAE;CACpB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,2BAA2B,CAAC;IACzE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;CACvC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceToken.d.ts","sourceRoot":"","sources":["../src/serviceToken.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAiBjB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"serviceToken.d.ts","sourceRoot":"","sources":["../src/serviceToken.ts"],"names":[],"mappings":"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"}
|
package/dist/serviceToken.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceToken.js","sourceRoot":"","sources":["../src/serviceToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,GACN,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"serviceToken.js","sourceRoot":"","sources":["../src/serviceToken.ts"],"names":[],"mappings":"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"}
|
package/dist/user.d.ts
ADDED
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { type InferOutput } from "valibot";
|
|
2
|
+
/**
|
|
3
|
+
* Account administration: the endpoints an `admin` account uses to create,
|
|
4
|
+
* edit, and delete other accounts.
|
|
5
|
+
*
|
|
6
|
+
* Every field an administrator can write is validated here rather than in the
|
|
7
|
+
* service, so the console and the service reject the same input with the same
|
|
8
|
+
* message.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Bounds on the claims an administrator can grant.
|
|
12
|
+
*
|
|
13
|
+
* Claims are free-form strings so a game can introduce its own without a
|
|
14
|
+
* release of this package, but they are restricted to a lowercase token: a
|
|
15
|
+
* claim is compared byte for byte by every consumer, and `Admin` or `admin `
|
|
16
|
+
* would be granted, displayed, and then silently never match.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { UserAdminValidation } from '@game-infra/api-schemas-core'
|
|
21
|
+
*
|
|
22
|
+
* UserAdminValidation.CLAIM_PATTERN.test('admin') // true
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const UserAdminValidation: {
|
|
26
|
+
readonly MAX_CLAIM_LENGTH: 64;
|
|
27
|
+
readonly MAX_CLAIMS: 32;
|
|
28
|
+
/** Lowercase letters, digits, and `.`, `:`, `_`, `-`, starting with a letter. */
|
|
29
|
+
readonly CLAIM_PATTERN: RegExp;
|
|
30
|
+
/** The claim that grants account administration, and most internal tools. */
|
|
31
|
+
readonly ADMIN_CLAIM: "admin";
|
|
32
|
+
/** Account ids as they appear in a path: legacy accounts carry negative ids. */
|
|
33
|
+
readonly USER_ID_PATTERN: RegExp;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* An account as an administrator sees it. The password hash never leaves the
|
|
37
|
+
* service; `hasPassword` says whether there is one that can match anything.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import type { UserAccount } from '@game-infra/api-schemas-core'
|
|
42
|
+
*
|
|
43
|
+
* const isAdmin = (user: UserAccount) => user.claims.includes('admin')
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare const UserAccountSchema: import("valibot").ObjectSchema<{
|
|
47
|
+
/** Stable account id. Legacy imported accounts have negative ids. */
|
|
48
|
+
readonly id: import("valibot").NumberSchema<undefined>;
|
|
49
|
+
readonly username: import("valibot").StringSchema<undefined>;
|
|
50
|
+
/** `null` for accounts created without one, such as the legacy imports. */
|
|
51
|
+
readonly email: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
52
|
+
/** Authorization claims the account holds now. */
|
|
53
|
+
readonly claims: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
54
|
+
/**
|
|
55
|
+
* Whether the account has a password that can match at login. `false` for
|
|
56
|
+
* the imported legacy rows until an administrator sets one.
|
|
57
|
+
*/
|
|
58
|
+
readonly hasPassword: import("valibot").BooleanSchema<undefined>;
|
|
59
|
+
/** ISO-8601 creation time. */
|
|
60
|
+
readonly createdAt: import("valibot").StringSchema<undefined>;
|
|
61
|
+
/** ISO-8601 time of the last change to the row. */
|
|
62
|
+
readonly updatedAt: import("valibot").StringSchema<undefined>;
|
|
63
|
+
}, undefined>;
|
|
64
|
+
/**
|
|
65
|
+
* Inferred account record.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* import type { UserAccount } from '@game-infra/api-schemas-core'
|
|
70
|
+
*
|
|
71
|
+
* const label = (user: UserAccount) => user.email ?? user.username
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export type UserAccount = InferOutput<typeof UserAccountSchema>;
|
|
75
|
+
/**
|
|
76
|
+
* Every account, ordered by username.
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```ts
|
|
80
|
+
* import type { ListUsersResponse } from '@game-infra/api-schemas-core'
|
|
81
|
+
*
|
|
82
|
+
* const count = (response: ListUsersResponse) => response.users?.length ?? 0
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare const ListUsersResponseSchema: import("valibot").ObjectSchema<{
|
|
86
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
87
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
88
|
+
} & {
|
|
89
|
+
users: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
|
|
90
|
+
/** Stable account id. Legacy imported accounts have negative ids. */
|
|
91
|
+
readonly id: import("valibot").NumberSchema<undefined>;
|
|
92
|
+
readonly username: import("valibot").StringSchema<undefined>;
|
|
93
|
+
/** `null` for accounts created without one, such as the legacy imports. */
|
|
94
|
+
readonly email: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
95
|
+
/** Authorization claims the account holds now. */
|
|
96
|
+
readonly claims: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
97
|
+
/**
|
|
98
|
+
* Whether the account has a password that can match at login. `false` for
|
|
99
|
+
* the imported legacy rows until an administrator sets one.
|
|
100
|
+
*/
|
|
101
|
+
readonly hasPassword: import("valibot").BooleanSchema<undefined>;
|
|
102
|
+
/** ISO-8601 creation time. */
|
|
103
|
+
readonly createdAt: import("valibot").StringSchema<undefined>;
|
|
104
|
+
/** ISO-8601 time of the last change to the row. */
|
|
105
|
+
readonly updatedAt: import("valibot").StringSchema<undefined>;
|
|
106
|
+
}, undefined>, undefined>, undefined>;
|
|
107
|
+
}, undefined>;
|
|
108
|
+
/**
|
|
109
|
+
* Inferred list-users response.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* import type { ListUsersResponse } from '@game-infra/api-schemas-core'
|
|
114
|
+
*
|
|
115
|
+
* const ok: ListUsersResponse['success'] = true
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export type ListUsersResponse = InferOutput<typeof ListUsersResponseSchema>;
|
|
119
|
+
/**
|
|
120
|
+
* An administrator creating an account.
|
|
121
|
+
*
|
|
122
|
+
* Unlike self-registration, this can grant claims and can leave the email out.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* import { CreateUserRequestSchema } from '@game-infra/api-schemas-core'
|
|
127
|
+
* import { parse } from 'valibot'
|
|
128
|
+
*
|
|
129
|
+
* parse(CreateUserRequestSchema, { username: 'ada', password: 'hunter22', claims: ['admin'] })
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export declare const CreateUserRequestSchema: import("valibot").ObjectSchema<{
|
|
133
|
+
readonly username: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 3, undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Username may not contain @ or whitespace">]>;
|
|
134
|
+
readonly email: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").EmailAction<string, undefined>]>, undefined>;
|
|
135
|
+
readonly password: import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 6, undefined>, import("valibot").MaxLengthAction<string, 128, undefined>]>;
|
|
136
|
+
readonly claims: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Claims are lowercase letters, digits, '.', ':', '_' or '-', starting with a letter">]>, undefined>, import("valibot").MaxLengthAction<string[], 32, undefined>]>, undefined>;
|
|
137
|
+
}, undefined>;
|
|
138
|
+
/**
|
|
139
|
+
* Inferred create-user request.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* import type { CreateUserRequest } from '@game-infra/api-schemas-core'
|
|
144
|
+
*
|
|
145
|
+
* const request: CreateUserRequest = { username: 'ada', password: 'hunter22' }
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export type CreateUserRequest = InferOutput<typeof CreateUserRequestSchema>;
|
|
149
|
+
/**
|
|
150
|
+
* An administrator editing an account. Every field is optional and a missing
|
|
151
|
+
* field keeps its stored value. `email: null` removes the email; `password`
|
|
152
|
+
* replaces the stored hash.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* import { UpdateUserRequestSchema } from '@game-infra/api-schemas-core'
|
|
157
|
+
* import { parse } from 'valibot'
|
|
158
|
+
*
|
|
159
|
+
* parse(UpdateUserRequestSchema, { claims: [], password: 'new-secret' })
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export declare const UpdateUserRequestSchema: import("valibot").ObjectSchema<{
|
|
163
|
+
readonly username: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 3, undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Username may not contain @ or whitespace">]>, undefined>;
|
|
164
|
+
readonly email: import("valibot").OptionalSchema<import("valibot").NullableSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").EmailAction<string, undefined>]>, undefined>, undefined>;
|
|
165
|
+
readonly password: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MinLengthAction<string, 6, undefined>, import("valibot").MaxLengthAction<string, 128, undefined>]>, undefined>;
|
|
166
|
+
readonly claims: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").StringSchema<undefined>, import("valibot").MaxLengthAction<string, 64, undefined>, import("valibot").RegexAction<string, "Claims are lowercase letters, digits, '.', ':', '_' or '-', starting with a letter">]>, undefined>, import("valibot").MaxLengthAction<string[], 32, undefined>]>, undefined>;
|
|
167
|
+
}, undefined>;
|
|
168
|
+
/**
|
|
169
|
+
* Inferred update-user request.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```ts
|
|
173
|
+
* import type { UpdateUserRequest } from '@game-infra/api-schemas-core'
|
|
174
|
+
*
|
|
175
|
+
* const demote: UpdateUserRequest = { claims: [] }
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export type UpdateUserRequest = InferOutput<typeof UpdateUserRequestSchema>;
|
|
179
|
+
/**
|
|
180
|
+
* The account as stored after a create or update.
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```ts
|
|
184
|
+
* import type { UserResponse } from '@game-infra/api-schemas-core'
|
|
185
|
+
*
|
|
186
|
+
* const id = (response: UserResponse) => response.user?.id
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
export declare const UserResponseSchema: import("valibot").ObjectSchema<{
|
|
190
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
191
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
192
|
+
} & {
|
|
193
|
+
user: import("valibot").OptionalSchema<import("valibot").ObjectSchema<{
|
|
194
|
+
/** Stable account id. Legacy imported accounts have negative ids. */
|
|
195
|
+
readonly id: import("valibot").NumberSchema<undefined>;
|
|
196
|
+
readonly username: import("valibot").StringSchema<undefined>;
|
|
197
|
+
/** `null` for accounts created without one, such as the legacy imports. */
|
|
198
|
+
readonly email: import("valibot").NullableSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
199
|
+
/** Authorization claims the account holds now. */
|
|
200
|
+
readonly claims: import("valibot").ArraySchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
201
|
+
/**
|
|
202
|
+
* Whether the account has a password that can match at login. `false` for
|
|
203
|
+
* the imported legacy rows until an administrator sets one.
|
|
204
|
+
*/
|
|
205
|
+
readonly hasPassword: import("valibot").BooleanSchema<undefined>;
|
|
206
|
+
/** ISO-8601 creation time. */
|
|
207
|
+
readonly createdAt: import("valibot").StringSchema<undefined>;
|
|
208
|
+
/** ISO-8601 time of the last change to the row. */
|
|
209
|
+
readonly updatedAt: import("valibot").StringSchema<undefined>;
|
|
210
|
+
}, undefined>, undefined>;
|
|
211
|
+
}, undefined>;
|
|
212
|
+
/**
|
|
213
|
+
* Inferred single-user response.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```ts
|
|
217
|
+
* import type { UserResponse } from '@game-infra/api-schemas-core'
|
|
218
|
+
*
|
|
219
|
+
* const ok: UserResponse['success'] = true
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
export type UserResponse = InferOutput<typeof UserResponseSchema>;
|
|
223
|
+
/**
|
|
224
|
+
* Result of deleting an account. `revokedServiceTokens` counts the account's
|
|
225
|
+
* service tokens that were still honoured and are now revoked.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* import type { DeleteUserResponse } from '@game-infra/api-schemas-core'
|
|
230
|
+
*
|
|
231
|
+
* const revoked = (response: DeleteUserResponse) => response.revokedServiceTokens ?? 0
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
export declare const DeleteUserResponseSchema: import("valibot").ObjectSchema<{
|
|
235
|
+
readonly success: import("valibot").BooleanSchema<undefined>;
|
|
236
|
+
readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
|
|
237
|
+
} & {
|
|
238
|
+
revokedServiceTokens: import("valibot").OptionalSchema<import("valibot").NumberSchema<undefined>, undefined>;
|
|
239
|
+
}, undefined>;
|
|
240
|
+
/**
|
|
241
|
+
* Inferred delete-user response.
|
|
242
|
+
*
|
|
243
|
+
* @example
|
|
244
|
+
* ```ts
|
|
245
|
+
* import type { DeleteUserResponse } from '@game-infra/api-schemas-core'
|
|
246
|
+
*
|
|
247
|
+
* const ok: DeleteUserResponse['success'] = true
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
export type DeleteUserResponse = InferOutput<typeof DeleteUserResponseSchema>;
|
|
251
|
+
//# sourceMappingURL=user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAajB,MAAM,SAAS,CAAC;AAKjB;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB;aAC9B,gBAAgB,EAAE,EAAE;aACpB,UAAU,EAAE,EAAE;IACd,iFAAiF;aACjF,aAAa;IACb,6EAA6E;aAC7E,WAAW,EAAE,OAAO;IACpB,gFAAgF;aAChF,eAAe;CACP,CAAC;AA6BX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB;IAC5B,qEAAqE;;;IAGrE,2EAA2E;;IAE3E,kDAAkD;;IAElD;;;OAGG;;IAEH,8BAA8B;;IAE9B,mDAAmD;;aAEnD,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEhE;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB;;;;;QAxClC,qEAAqE;;;QAGrE,2EAA2E;;QAE3E,kDAAkD;;QAElD;;;WAGG;;QAEH,8BAA8B;;QAE9B,mDAAmD;;;aA4BnD,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB;;;;;aAKlC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE5E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB;;;;;aAKlC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE5E;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB;;;;;QAlI7B,qEAAqE;;;QAGrE,2EAA2E;;QAE3E,kDAAkD;;QAElD;;;WAGG;;QAEH,8BAA8B;;QAE9B,mDAAmD;;;aAsHnD,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAElE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB;;;;;aAEnC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
package/dist/user.js
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { array, boolean, email, maxLength, minLength, nullable, number, object, optional, pipe, regex, string, } from "valibot";
|
|
2
|
+
import { AuthValidation } from "./auth.js";
|
|
3
|
+
import { createSuccessResponseSchema } from "./common.js";
|
|
4
|
+
/**
|
|
5
|
+
* Account administration: the endpoints an `admin` account uses to create,
|
|
6
|
+
* edit, and delete other accounts.
|
|
7
|
+
*
|
|
8
|
+
* Every field an administrator can write is validated here rather than in the
|
|
9
|
+
* service, so the console and the service reject the same input with the same
|
|
10
|
+
* message.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Bounds on the claims an administrator can grant.
|
|
14
|
+
*
|
|
15
|
+
* Claims are free-form strings so a game can introduce its own without a
|
|
16
|
+
* release of this package, but they are restricted to a lowercase token: a
|
|
17
|
+
* claim is compared byte for byte by every consumer, and `Admin` or `admin `
|
|
18
|
+
* would be granted, displayed, and then silently never match.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { UserAdminValidation } from '@game-infra/api-schemas-core'
|
|
23
|
+
*
|
|
24
|
+
* UserAdminValidation.CLAIM_PATTERN.test('admin') // true
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const UserAdminValidation = {
|
|
28
|
+
MAX_CLAIM_LENGTH: 64,
|
|
29
|
+
MAX_CLAIMS: 32,
|
|
30
|
+
/** Lowercase letters, digits, and `.`, `:`, `_`, `-`, starting with a letter. */
|
|
31
|
+
CLAIM_PATTERN: /^[a-z][a-z0-9.:_-]*$/,
|
|
32
|
+
/** The claim that grants account administration, and most internal tools. */
|
|
33
|
+
ADMIN_CLAIM: "admin",
|
|
34
|
+
/** Account ids as they appear in a path: legacy accounts carry negative ids. */
|
|
35
|
+
USER_ID_PATTERN: /^-?\d+$/,
|
|
36
|
+
};
|
|
37
|
+
const UsernameSchema = pipe(string(), minLength(AuthValidation.MIN_USERNAME_LENGTH), maxLength(AuthValidation.MAX_USERNAME_LENGTH), regex(AuthValidation.USERNAME_PATTERN, "Username may not contain @ or whitespace"));
|
|
38
|
+
const PasswordSchema = pipe(string(), minLength(AuthValidation.MIN_PASSWORD_LENGTH), maxLength(AuthValidation.MAX_PASSWORD_LENGTH));
|
|
39
|
+
const ClaimsSchema = pipe(array(pipe(string(), maxLength(UserAdminValidation.MAX_CLAIM_LENGTH), regex(UserAdminValidation.CLAIM_PATTERN, "Claims are lowercase letters, digits, '.', ':', '_' or '-', starting with a letter"))), maxLength(UserAdminValidation.MAX_CLAIMS));
|
|
40
|
+
/**
|
|
41
|
+
* An account as an administrator sees it. The password hash never leaves the
|
|
42
|
+
* service; `hasPassword` says whether there is one that can match anything.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* import type { UserAccount } from '@game-infra/api-schemas-core'
|
|
47
|
+
*
|
|
48
|
+
* const isAdmin = (user: UserAccount) => user.claims.includes('admin')
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export const UserAccountSchema = object({
|
|
52
|
+
/** Stable account id. Legacy imported accounts have negative ids. */
|
|
53
|
+
id: number(),
|
|
54
|
+
username: string(),
|
|
55
|
+
/** `null` for accounts created without one, such as the legacy imports. */
|
|
56
|
+
email: nullable(string()),
|
|
57
|
+
/** Authorization claims the account holds now. */
|
|
58
|
+
claims: array(string()),
|
|
59
|
+
/**
|
|
60
|
+
* Whether the account has a password that can match at login. `false` for
|
|
61
|
+
* the imported legacy rows until an administrator sets one.
|
|
62
|
+
*/
|
|
63
|
+
hasPassword: boolean(),
|
|
64
|
+
/** ISO-8601 creation time. */
|
|
65
|
+
createdAt: string(),
|
|
66
|
+
/** ISO-8601 time of the last change to the row. */
|
|
67
|
+
updatedAt: string(),
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Every account, ordered by username.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* import type { ListUsersResponse } from '@game-infra/api-schemas-core'
|
|
75
|
+
*
|
|
76
|
+
* const count = (response: ListUsersResponse) => response.users?.length ?? 0
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export const ListUsersResponseSchema = createSuccessResponseSchema({
|
|
80
|
+
users: optional(array(UserAccountSchema)),
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* An administrator creating an account.
|
|
84
|
+
*
|
|
85
|
+
* Unlike self-registration, this can grant claims and can leave the email out.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* import { CreateUserRequestSchema } from '@game-infra/api-schemas-core'
|
|
90
|
+
* import { parse } from 'valibot'
|
|
91
|
+
*
|
|
92
|
+
* parse(CreateUserRequestSchema, { username: 'ada', password: 'hunter22', claims: ['admin'] })
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export const CreateUserRequestSchema = object({
|
|
96
|
+
username: UsernameSchema,
|
|
97
|
+
email: optional(pipe(string(), email())),
|
|
98
|
+
password: PasswordSchema,
|
|
99
|
+
claims: optional(ClaimsSchema),
|
|
100
|
+
});
|
|
101
|
+
/**
|
|
102
|
+
* An administrator editing an account. Every field is optional and a missing
|
|
103
|
+
* field keeps its stored value. `email: null` removes the email; `password`
|
|
104
|
+
* replaces the stored hash.
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* import { UpdateUserRequestSchema } from '@game-infra/api-schemas-core'
|
|
109
|
+
* import { parse } from 'valibot'
|
|
110
|
+
*
|
|
111
|
+
* parse(UpdateUserRequestSchema, { claims: [], password: 'new-secret' })
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export const UpdateUserRequestSchema = object({
|
|
115
|
+
username: optional(UsernameSchema),
|
|
116
|
+
email: optional(nullable(pipe(string(), email()))),
|
|
117
|
+
password: optional(PasswordSchema),
|
|
118
|
+
claims: optional(ClaimsSchema),
|
|
119
|
+
});
|
|
120
|
+
/**
|
|
121
|
+
* The account as stored after a create or update.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```ts
|
|
125
|
+
* import type { UserResponse } from '@game-infra/api-schemas-core'
|
|
126
|
+
*
|
|
127
|
+
* const id = (response: UserResponse) => response.user?.id
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export const UserResponseSchema = createSuccessResponseSchema({
|
|
131
|
+
user: optional(UserAccountSchema),
|
|
132
|
+
});
|
|
133
|
+
/**
|
|
134
|
+
* Result of deleting an account. `revokedServiceTokens` counts the account's
|
|
135
|
+
* service tokens that were still honoured and are now revoked.
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```ts
|
|
139
|
+
* import type { DeleteUserResponse } from '@game-infra/api-schemas-core'
|
|
140
|
+
*
|
|
141
|
+
* const revoked = (response: DeleteUserResponse) => response.revokedServiceTokens ?? 0
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export const DeleteUserResponseSchema = createSuccessResponseSchema({
|
|
145
|
+
revokedServiceTokens: optional(number()),
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=user.js.map
|
package/dist/user.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@game-infra/api-schemas-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Generic service API contract: auth, savegame, game-entity, backup, feedback, heartbeat schemas + toad-contracts endpoint definitions",
|
|
5
5
|
"homepage": "https://github.com/kibertoad/game-infra/tree/main/packages/schemas/api-schemas-core#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"@toad-contracts/valibot": "0.5.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@types/node": "^26.
|
|
34
|
+
"@types/node": "^26.6.3",
|
|
35
35
|
"rimraf": "^6.1.3",
|
|
36
36
|
"typescript": "^7.0.2",
|
|
37
|
-
"valibot": "^1.
|
|
38
|
-
"vitest": "^4.1.
|
|
37
|
+
"valibot": "^1.5.0",
|
|
38
|
+
"vitest": "^4.1.11"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"valibot": "^1.4.0"
|