@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 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
@@ -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;AAGjB;;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;;GAEG;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;;GAEG;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;;;;aAM3D,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,+BAA+B,CAAC,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([literal("jwtSecret"), literal("usersTable"), literal("serviceTokensTable")])),
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":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -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;AAGpF;;;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"}
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"}
@@ -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;AACpF,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"}
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"}
@@ -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<{
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAqC,MAAM,yBAAyB,CAAC;AA8C5F;;;;;;;;;;;;;;;;;GAiBG;AAMH,eAAO,MAAM,oBAAoB;;;;;;;;;QAIN,GAAG;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;QAIH,GAAG;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;QAIN,GAAG;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;QAGlB,GAAG;;;;;;;CAC5B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;;;;QAIlC,GAAG;;;;;;;;;QACH,GAAG;;;;;;;;;;CAEL,CAAC;AAMH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;QAIZ,GAAG;;;;;;;;;;;;;;;;;;CAC5B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB;;;;QAGV,GAAG;;;;;;;;;;;;;;;;;;CAC5B,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;QAIZ,GAAG;;;;;;;;;;;;;;;;;CAC5B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B;;;;;;;QAId,GAAG;;;;;;;;;;;;;CAC5B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB;;;;;QAIX,GAAG;;;;;;;;CAC5B,CAAC;AAWH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;QAMN,GAAG;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;QAKN,GAAG;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;QAIX,GAAG;;;;;;;;;;;CAC5B,CAAC;AAYH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;QAKR,GAAG;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;QAMV,GAAG;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;QAKR,GAAG;;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;QAIR,GAAG;;;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;QAIX,GAAG;;;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;QAKV,GAAG;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;QAKZ,GAAG;;;;;;;CAC5B,CAAC;AAMH,eAAO,MAAM,qBAAqB;;;;;QAIP,GAAG;;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;QAGJ,GAAG;;;;;;;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;QAIP,GAAG;;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;QAIR,GAAG;;;;;;;;;;;;;;CAC5B,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;QAIR,GAAG;;;;;;;CAC5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;QAGH,GAAG;;;;;CAC5B,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() }));
@@ -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;AACzC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,kCAAkC,EAClC,+BAA+B,EAC/B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,EAChC,+BAA+B,EAC/B,gCAAgC,EAChC,gCAAgC,EAChC,iCAAiC,EACjC,kCAAkC,GACnC,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AAEH,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB;IACpC,iBAAiB,EAAE,qBAAqB;IACxC,qBAAqB,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE;CACvD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IACjD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa;IACjC,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;CACpD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,gBAAgB;IACpC,iBAAiB,EAAE,0BAA0B;IAC7C,qBAAqB,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE;CAC5D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,iBAAiB,CAAC;IAChE,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,8BAA8B;IAClD,qBAAqB,EAAE,EAAE,GAAG,EAAE,kCAAkC,EAAE;CACnE,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ;IAC5B,qBAAqB,EAAE;QACrB,GAAG,EAAE,+BAA+B;QACpC,GAAG,EAAE,+BAA+B;KACrC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB;IACrC,iBAAiB,EAAE,+BAA+B;IAClD,qBAAqB,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE;CACjE,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,iBAAiB;IACrC,qBAAqB,EAAE,EAAE,GAAG,EAAE,+BAA+B,EAAE;CAChE,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACtE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,mBAAmB,OAAO,EAAE;IAC3D,qBAAqB,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE;CACjE,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;IAC5D,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,0BAA0B;IAC9C,iBAAiB,EAAE,iCAAiC;IACpD,qBAAqB,EAAE,EAAE,GAAG,EAAE,kCAAkC,EAAE;CACnE,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;IAC3C,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE;CACjE,CAAC,CAAC;AAEH,+EAA+E;AAC/E,+DAA+D;AAC/D,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,cAAc,CACvC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CACnE,CAAC;AACF,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,kBAAkB;IAC3C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC7C,UAAU,MAAM,UAAU,MAAM,UAAU,QAAQ,EAAE;IACtD,iBAAiB,EAAE,yBAAyB;IAC5C,qBAAqB,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;IACpD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,kBAAkB;IAC3C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC7C,UAAU,MAAM,UAAU,MAAM,UAAU,QAAQ,EAAE;IACtD,qBAAqB,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,kBAAkB;IAC3C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,MAAM,UAAU,MAAM,QAAQ;IAC9E,qBAAqB,EAAE,EAAE,GAAG,EAAE,+BAA+B,EAAE;CAChE,CAAC,CAAC;AAEH,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;AAChG,MAAM,oBAAoB,GAAG,cAAc,CACzC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CACvE,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,MAAM,WAAW;IACzD,iBAAiB,EAAE,2BAA2B;IAC9C,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjD,UAAU,MAAM,aAAa,UAAU,IAAI,QAAQ,EAAE;IACvD,iBAAiB,EAAE,2BAA2B;IAC9C,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjD,UAAU,MAAM,aAAa,UAAU,IAAI,QAAQ,EAAE;IACvD,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,MAAM,aAAa,UAAU,EAAE;IACnF,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;IACzD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,MAAM,WAAW;IACzD,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;IACxD,MAAM,EAAE,QAAQ;IAChB,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjD,UAAU,MAAM,aAAa,UAAU,IAAI,QAAQ,EAAE;IACvD,qBAAqB,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE;CAC/D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,iBAAiB,CAAC;IAC1D,MAAM,EAAE,MAAM;IACd,uBAAuB,EAAE,oBAAoB;IAC7C,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,MAAM,gBAAgB;IAC9D,iBAAiB,EAAE,+BAA+B;IAClD,qBAAqB,EAAE,EAAE,GAAG,EAAE,gCAAgC,EAAE;CACjE,CAAC,CAAC;AAEH,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACrD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;IAC3C,iBAAiB,EAAE,cAAc;IACjC,qBAAqB,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE;CAC5D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;IAClD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,eAAe;IACnC,qBAAqB,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACrD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,uBAAuB;IAC3C,iBAAiB,EAAE,0BAA0B;IAC7C,qBAAqB,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE;CAC5D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,KAAK;IACb,uBAAuB,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACxE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,iBAAiB,SAAS,WAAW;IACtE,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;IACtD,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,GAAG,EAAE,CAAC,WAAW;IAC/B,iBAAiB,EAAE,2BAA2B;IAC9C,qBAAqB,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IACjD,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY;IAChC,qBAAqB,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE;CAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -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;AAGjB;;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"}
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"}
@@ -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;AACjB,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"}
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"}
@@ -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;AAO5E;;;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"}
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"}
@@ -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;AAC5E,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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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,GAChC,MAAM,WAAW,CAAC;AAYnB,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,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,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,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"}
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"}
@@ -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;AAGpF;;;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"}
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"}
@@ -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;AACpF,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
+ {"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":"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"}
1
+ {"version":3,"file":"serviceToken.d.ts","sourceRoot":"","sources":["../src/serviceToken.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"serviceToken.js","sourceRoot":"","sources":["../src/serviceToken.ts"],"names":[],"mappings":"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"}
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
@@ -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.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.1.2",
34
+ "@types/node": "^26.6.3",
35
35
  "rimraf": "^6.1.3",
36
36
  "typescript": "^7.0.2",
37
- "valibot": "^1.4.2",
38
- "vitest": "^4.1.10"
37
+ "valibot": "^1.5.0",
38
+ "vitest": "^4.1.11"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "valibot": "^1.4.0"