@game-infra/api-schemas-core 0.0.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.
@@ -0,0 +1,28 @@
1
+ import { object, optional, string, picklist, pipe, minLength, maxLength, email, } from "valibot";
2
+ import { createSuccessResponseSchema } from "./common.js";
3
+ /**
4
+ * Feedback type enum
5
+ */
6
+ export const FeedbackType = {
7
+ BUG: "bug",
8
+ SUGGESTION: "suggestion",
9
+ GENERAL: "general",
10
+ };
11
+ /**
12
+ * Feedback submit request schema
13
+ */
14
+ export const FeedbackSubmitRequestSchema = object({
15
+ type: picklist(Object.values(FeedbackType)),
16
+ content: pipe(string(), minLength(1), maxLength(5000)),
17
+ email: optional(pipe(string(), email())),
18
+ gameVersion: optional(string()),
19
+ browser: optional(string()),
20
+ platform: optional(string()),
21
+ });
22
+ /**
23
+ * Feedback submit response schema
24
+ */
25
+ export const FeedbackSubmitResponseSchema = createSuccessResponseSchema({
26
+ message: optional(string()),
27
+ });
28
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +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"}
@@ -0,0 +1,87 @@
1
+ import { type InferOutput } from "valibot";
2
+ /**
3
+ * Game entity save request schema
4
+ * Used for creating or updating a game entity
5
+ */
6
+ export declare const GameEntitySaveRequestSchema: import("valibot").ObjectSchema<{
7
+ readonly entityId: import("valibot").StringSchema<undefined>;
8
+ readonly entityType: import("valibot").StringSchema<undefined>;
9
+ readonly entityData: import("valibot").StringSchema<undefined>;
10
+ }, undefined>;
11
+ export type GameEntitySaveRequest = InferOutput<typeof GameEntitySaveRequestSchema>;
12
+ /**
13
+ * Game entity save response schema
14
+ */
15
+ export declare const GameEntitySaveResponseSchema: import("valibot").ObjectSchema<{
16
+ readonly success: import("valibot").BooleanSchema<undefined>;
17
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
18
+ } & {
19
+ entityId: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
20
+ }, undefined>;
21
+ export type GameEntitySaveResponse = InferOutput<typeof GameEntitySaveResponseSchema>;
22
+ /**
23
+ * Game entity load response schema
24
+ */
25
+ export declare const GameEntityLoadResponseSchema: import("valibot").ObjectSchema<{
26
+ readonly success: import("valibot").BooleanSchema<undefined>;
27
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
28
+ } & {
29
+ entityId: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
30
+ entityType: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
31
+ entityData: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
32
+ updatedAt: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
33
+ }, undefined>;
34
+ export type GameEntityLoadResponse = InferOutput<typeof GameEntityLoadResponseSchema>;
35
+ /**
36
+ * Game entity info (for list responses)
37
+ */
38
+ export declare const GameEntityInfoSchema: import("valibot").ObjectSchema<{
39
+ readonly entityId: import("valibot").StringSchema<undefined>;
40
+ readonly entityType: import("valibot").StringSchema<undefined>;
41
+ readonly updatedAt: import("valibot").StringSchema<undefined>;
42
+ }, undefined>;
43
+ export type GameEntityInfo = InferOutput<typeof GameEntityInfoSchema>;
44
+ /**
45
+ * Game entity list response schema
46
+ */
47
+ export declare const GameEntityListResponseSchema: import("valibot").ObjectSchema<{
48
+ readonly success: import("valibot").BooleanSchema<undefined>;
49
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
50
+ } & {
51
+ entities: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
52
+ readonly entityId: import("valibot").StringSchema<undefined>;
53
+ readonly entityType: import("valibot").StringSchema<undefined>;
54
+ readonly updatedAt: import("valibot").StringSchema<undefined>;
55
+ }, undefined>, undefined>, undefined>;
56
+ }, undefined>;
57
+ export type GameEntityListResponse = InferOutput<typeof GameEntityListResponseSchema>;
58
+ /**
59
+ * Game entity delete response schema
60
+ */
61
+ export declare const GameEntityDeleteResponseSchema: import("valibot").ObjectSchema<{
62
+ readonly success: import("valibot").BooleanSchema<undefined>;
63
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
64
+ }, undefined>;
65
+ export type GameEntityDeleteResponse = InferOutput<typeof GameEntityDeleteResponseSchema>;
66
+ /**
67
+ * Bulk save request - save multiple entities at once
68
+ */
69
+ export declare const GameEntityBulkSaveRequestSchema: import("valibot").ObjectSchema<{
70
+ readonly entities: import("valibot").ArraySchema<import("valibot").ObjectSchema<{
71
+ readonly entityId: import("valibot").StringSchema<undefined>;
72
+ readonly entityType: import("valibot").StringSchema<undefined>;
73
+ readonly entityData: import("valibot").StringSchema<undefined>;
74
+ }, undefined>, undefined>;
75
+ }, undefined>;
76
+ export type GameEntityBulkSaveRequest = InferOutput<typeof GameEntityBulkSaveRequestSchema>;
77
+ /**
78
+ * Bulk save response
79
+ */
80
+ export declare const GameEntityBulkSaveResponseSchema: import("valibot").ObjectSchema<{
81
+ readonly success: import("valibot").BooleanSchema<undefined>;
82
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
83
+ } & {
84
+ savedCount: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
85
+ }, undefined>;
86
+ export type GameEntityBulkSaveResponse = InferOutput<typeof GameEntityBulkSaveResponseSchema>;
87
+ //# sourceMappingURL=gameEntity.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
1
+ import { object, optional, string, array } from "valibot";
2
+ import { createSuccessResponseSchema } from "./common.js";
3
+ // NOTE: the game-specific `EntityTypes` const (spell/item/persona/secret) was
4
+ // intentionally dropped during the game-infra extraction. `entityType` is a
5
+ // plain `string()` in every schema below; games re-tighten it via config.
6
+ /**
7
+ * Game entity save request schema
8
+ * Used for creating or updating a game entity
9
+ */
10
+ export const GameEntitySaveRequestSchema = object({
11
+ entityId: string(),
12
+ entityType: string(),
13
+ entityData: string(), // JSON string of the entity
14
+ });
15
+ /**
16
+ * Game entity save response schema
17
+ */
18
+ export const GameEntitySaveResponseSchema = createSuccessResponseSchema({
19
+ entityId: optional(string()),
20
+ });
21
+ /**
22
+ * Game entity load response schema
23
+ */
24
+ export const GameEntityLoadResponseSchema = createSuccessResponseSchema({
25
+ entityId: optional(string()),
26
+ entityType: optional(string()),
27
+ entityData: optional(string()),
28
+ updatedAt: optional(string()),
29
+ });
30
+ /**
31
+ * Game entity info (for list responses)
32
+ */
33
+ export const GameEntityInfoSchema = object({
34
+ entityId: string(),
35
+ entityType: string(),
36
+ updatedAt: string(),
37
+ });
38
+ /**
39
+ * Game entity list response schema
40
+ */
41
+ export const GameEntityListResponseSchema = createSuccessResponseSchema({
42
+ entities: optional(array(GameEntityInfoSchema)),
43
+ });
44
+ /**
45
+ * Game entity delete response schema
46
+ */
47
+ export const GameEntityDeleteResponseSchema = createSuccessResponseSchema({});
48
+ /**
49
+ * Bulk save request - save multiple entities at once
50
+ */
51
+ export const GameEntityBulkSaveRequestSchema = object({
52
+ entities: array(object({
53
+ entityId: string(),
54
+ entityType: string(),
55
+ entityData: string(),
56
+ })),
57
+ });
58
+ /**
59
+ * Bulk save response
60
+ */
61
+ export const GameEntityBulkSaveResponseSchema = createSuccessResponseSchema({
62
+ savedCount: optional(string()),
63
+ });
64
+ //# sourceMappingURL=gameEntity.js.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ export { ApiResponseSchema, createSuccessResponseSchema, TimestampFieldsSchema, EntityMetadataSchema, } from "./common.js";
2
+ export type { ApiResponse, TimestampFields, EntityMetadata } from "./common.js";
3
+ export { AI_PROVIDERS, AIProviderSchema } from "./aiProvider.js";
4
+ export type { AIProviderType } from "./aiProvider.js";
5
+ export { AuthValidation, RegisterRequestSchema, AuthResponseFieldsSchema, RegisterResponseSchema, LoginRequestSchema, LoginResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, ValidateServiceTokenResponseSchema, } from "./auth.js";
6
+ export type { RegisterRequest, RegisterResponse, LoginRequest, LoginResponse, ValidateTokenRequest, ValidateTokenResponse, ValidateServiceTokenResponse, } from "./auth.js";
7
+ export { BackupInfoSchema, TriggerBackupResponseSchema, ListBackupsResponseSchema, RestoreBackupRequestSchema, RestoreBackupResponseSchema, DownloadBackupResponseSchema, } from "./backup.js";
8
+ export type { BackupInfo, TriggerBackupResponse, ListBackupsResponse, RestoreBackupRequest, RestoreBackupResponse, DownloadBackupResponse, } from "./backup.js";
9
+ export { FeedbackType, FeedbackSubmitRequestSchema, FeedbackSubmitResponseSchema, } from "./feedback.js";
10
+ export type { FeedbackSubmitRequest, FeedbackSubmitResponse } from "./feedback.js";
11
+ export { SavegameSaveRequestSchema, SavegameSaveResponseSchema, SavegameLoadResponseSchema, SaveSlotSchema, SavegameListSlotsResponseSchema, } from "./savegame.js";
12
+ export type { SavegameSaveRequest, SavegameSaveResponse, SavegameLoadResponse, SaveSlot, SavegameListSlotsResponse, } from "./savegame.js";
13
+ export { GameEntitySaveRequestSchema, GameEntitySaveResponseSchema, GameEntityLoadResponseSchema, GameEntityInfoSchema, GameEntityListResponseSchema, GameEntityDeleteResponseSchema, GameEntityBulkSaveRequestSchema, GameEntityBulkSaveResponseSchema, } from "./gameEntity.js";
14
+ export type { GameEntitySaveRequest, GameEntitySaveResponse, GameEntityLoadResponse, GameEntityInfo, GameEntityListResponse, GameEntityDeleteResponse, GameEntityBulkSaveRequest, GameEntityBulkSaveResponse, } from "./gameEntity.js";
15
+ export { DEFAULT_DEVELOPMENT_API_URL, createApiUrlResolver } from "./apiConfig.js";
16
+ export type { ApiUrlResolverOptions, ApiUrlResolver } from "./apiConfig.js";
17
+ export { authRegisterContract, authLoginContract, authValidateContract, authValidateServiceTokenContract, savegameSaveContract, savegameLoadContract, savegameListSlotsContract, gameEntitySaveContract, gameEntityUpdateContract, gameEntityLoadContract, gameEntityListContract, gameEntityListAllContract, gameEntityDeleteContract, gameEntityBulkSaveContract, backupTriggerContract, backupListContract, backupRestoreContract, backupDownloadContract, feedbackSubmitContract, heartbeatContract, } from "./contracts.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,GACnC,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,cAAc,EACd,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAK5E,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,gCAAgC,EAChC,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/index.js ADDED
@@ -0,0 +1,20 @@
1
+ // Common response wrappers + shared field schemas
2
+ export { ApiResponseSchema, createSuccessResponseSchema, TimestampFieldsSchema, EntityMetadataSchema, } from "./common.js";
3
+ // AI provider enum
4
+ export { AI_PROVIDERS, AIProviderSchema } from "./aiProvider.js";
5
+ // Auth
6
+ export { AuthValidation, RegisterRequestSchema, AuthResponseFieldsSchema, RegisterResponseSchema, LoginRequestSchema, LoginResponseSchema, ValidateTokenRequestSchema, ValidateTokenResponseSchema, ValidateServiceTokenResponseSchema, } from "./auth.js";
7
+ // Backup
8
+ export { BackupInfoSchema, TriggerBackupResponseSchema, ListBackupsResponseSchema, RestoreBackupRequestSchema, RestoreBackupResponseSchema, DownloadBackupResponseSchema, } from "./backup.js";
9
+ // Feedback
10
+ export { FeedbackType, FeedbackSubmitRequestSchema, FeedbackSubmitResponseSchema, } from "./feedback.js";
11
+ // Savegame
12
+ export { SavegameSaveRequestSchema, SavegameSaveResponseSchema, SavegameLoadResponseSchema, SaveSlotSchema, SavegameListSlotsResponseSchema, } from "./savegame.js";
13
+ // Game entities
14
+ export { GameEntitySaveRequestSchema, GameEntitySaveResponseSchema, GameEntityLoadResponseSchema, GameEntityInfoSchema, GameEntityListResponseSchema, GameEntityDeleteResponseSchema, GameEntityBulkSaveRequestSchema, GameEntityBulkSaveResponseSchema, } from "./gameEntity.js";
15
+ // API URL resolver factory
16
+ export { DEFAULT_DEVELOPMENT_API_URL, createApiUrlResolver } from "./apiConfig.js";
17
+ // Typed endpoint contracts (toad-contracts). Each contract carries its own
18
+ // `pathResolver`; wire them into a client via @toad-contracts/frontend-http-client.
19
+ export { authRegisterContract, authLoginContract, authValidateContract, authValidateServiceTokenContract, savegameSaveContract, savegameLoadContract, savegameListSlotsContract, gameEntitySaveContract, gameEntityUpdateContract, gameEntityLoadContract, gameEntityListContract, gameEntityListAllContract, gameEntityDeleteContract, gameEntityBulkSaveContract, backupTriggerContract, backupListContract, backupRestoreContract, backupDownloadContract, feedbackSubmitContract, heartbeatContract, } from "./contracts.js";
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,GACnC,MAAM,WAAW,CAAC;AAWnB,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,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"}
@@ -0,0 +1,55 @@
1
+ import { type InferOutput } from "valibot";
2
+ /**
3
+ * Savegame save request schema
4
+ * Note: userId, gameId, and saveSlot are now in the URL path
5
+ */
6
+ export declare const SavegameSaveRequestSchema: import("valibot").ObjectSchema<{
7
+ readonly gameVersion: import("valibot").StringSchema<undefined>;
8
+ readonly compressedData: import("valibot").StringSchema<undefined>;
9
+ }, undefined>;
10
+ export type SavegameSaveRequest = InferOutput<typeof SavegameSaveRequestSchema>;
11
+ /**
12
+ * Savegame save response schema
13
+ * Simple success/error response with no additional data
14
+ */
15
+ export declare const SavegameSaveResponseSchema: import("valibot").ObjectSchema<{
16
+ readonly success: import("valibot").BooleanSchema<undefined>;
17
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
18
+ }, undefined>;
19
+ export type SavegameSaveResponse = InferOutput<typeof SavegameSaveResponseSchema>;
20
+ /**
21
+ * Savegame load response schema
22
+ */
23
+ export declare const SavegameLoadResponseSchema: import("valibot").ObjectSchema<{
24
+ readonly success: import("valibot").BooleanSchema<undefined>;
25
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
26
+ } & {
27
+ compressedData: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
28
+ gameVersion: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
29
+ updatedAt: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
30
+ }, undefined>;
31
+ export type SavegameLoadResponse = InferOutput<typeof SavegameLoadResponseSchema>;
32
+ /**
33
+ * Save slot info schema
34
+ */
35
+ export declare const SaveSlotSchema: import("valibot").ObjectSchema<{
36
+ readonly saveSlot: import("valibot").NumberSchema<undefined>;
37
+ readonly gameVersion: import("valibot").StringSchema<undefined>;
38
+ readonly updatedAt: import("valibot").StringSchema<undefined>;
39
+ }, undefined>;
40
+ export type SaveSlot = InferOutput<typeof SaveSlotSchema>;
41
+ /**
42
+ * Savegame list slots response schema
43
+ */
44
+ export declare const SavegameListSlotsResponseSchema: import("valibot").ObjectSchema<{
45
+ readonly success: import("valibot").BooleanSchema<undefined>;
46
+ readonly error: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
47
+ } & {
48
+ slots: import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").ObjectSchema<{
49
+ readonly saveSlot: import("valibot").NumberSchema<undefined>;
50
+ readonly gameVersion: import("valibot").StringSchema<undefined>;
51
+ readonly updatedAt: import("valibot").StringSchema<undefined>;
52
+ }, undefined>, undefined>, undefined>;
53
+ }, undefined>;
54
+ export type SavegameListSlotsResponse = InferOutput<typeof SavegameListSlotsResponseSchema>;
55
+ //# sourceMappingURL=savegame.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,38 @@
1
+ import { number, object, optional, string, array } from "valibot";
2
+ import { createSuccessResponseSchema } from "./common.js";
3
+ /**
4
+ * Savegame save request schema
5
+ * Note: userId, gameId, and saveSlot are now in the URL path
6
+ */
7
+ export const SavegameSaveRequestSchema = object({
8
+ gameVersion: string(),
9
+ compressedData: string(),
10
+ });
11
+ /**
12
+ * Savegame save response schema
13
+ * Simple success/error response with no additional data
14
+ */
15
+ export const SavegameSaveResponseSchema = createSuccessResponseSchema({});
16
+ /**
17
+ * Savegame load response schema
18
+ */
19
+ export const SavegameLoadResponseSchema = createSuccessResponseSchema({
20
+ compressedData: optional(string()),
21
+ gameVersion: optional(string()),
22
+ updatedAt: optional(string()),
23
+ });
24
+ /**
25
+ * Save slot info schema
26
+ */
27
+ export const SaveSlotSchema = object({
28
+ saveSlot: number(),
29
+ gameVersion: string(),
30
+ updatedAt: string(),
31
+ });
32
+ /**
33
+ * Savegame list slots response schema
34
+ */
35
+ export const SavegameListSlotsResponseSchema = createSuccessResponseSchema({
36
+ slots: optional(array(SaveSlotSchema)),
37
+ });
38
+ //# sourceMappingURL=savegame.js.map
@@ -0,0 +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"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@game-infra/api-schemas-core",
3
+ "version": "0.0.0",
4
+ "description": "Generic service API contract: auth, savegame, game-entity, backup, feedback, heartbeat schemas + toad-contracts endpoint definitions",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ }
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "dependencies": {
20
+ "@toad-contracts/core": "0.4.0",
21
+ "@toad-contracts/valibot": "0.5.0"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^22.19.7",
25
+ "rimraf": "^6.1.3",
26
+ "typescript": "^7.0.2",
27
+ "valibot": "^1.4.0",
28
+ "vitest": "^4.0.0"
29
+ },
30
+ "peerDependencies": {
31
+ "valibot": "^1.4.0"
32
+ },
33
+ "scripts": {
34
+ "build": "rimraf dist && tsc --project tsconfig.build.json",
35
+ "typecheck": "tsc --noEmit",
36
+ "test": "vitest run",
37
+ "clean": "rimraf dist"
38
+ }
39
+ }