@burmese/pet-format 3.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenPets
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,74 @@
1
+ export interface PetFormatPackageMarker {
2
+ readonly packageName: "@burmese/pet-format";
3
+ }
4
+ export declare const petFormatPackageName = "@burmese/pet-format";
5
+ export declare const maxJsonAvatarBytes: number;
6
+ export declare const maxJsonAvatarActionBytes: number;
7
+ export declare const maxJsonAvatarActions = 64;
8
+ export declare const maxJsonAvatarRenderedPixels = 340;
9
+ export interface JsonAvatarCanvasDefinition {
10
+ readonly width: number;
11
+ readonly height: number;
12
+ readonly scale: number;
13
+ }
14
+ export interface JsonAvatarHitAreaDefinition {
15
+ readonly x: number;
16
+ readonly y: number;
17
+ readonly w: number;
18
+ readonly h: number;
19
+ }
20
+ export interface JsonAvatarRectDefinition {
21
+ readonly x: number;
22
+ readonly y: number;
23
+ readonly w: number;
24
+ readonly h: number;
25
+ readonly color: string;
26
+ readonly opacity?: number;
27
+ }
28
+ export interface JsonAvatarPartDefinition {
29
+ readonly id: string;
30
+ readonly z: number;
31
+ readonly rects: readonly JsonAvatarRectDefinition[];
32
+ }
33
+ export interface JsonAvatarDefinition {
34
+ readonly id: string;
35
+ readonly displayName: string;
36
+ readonly canvas: JsonAvatarCanvasDefinition;
37
+ readonly palette: Record<string, string>;
38
+ readonly hitAreas: Record<string, JsonAvatarHitAreaDefinition>;
39
+ readonly parts: readonly JsonAvatarPartDefinition[];
40
+ }
41
+ export interface JsonAvatarTriggerDefinition {
42
+ readonly type: string;
43
+ readonly hitArea?: string;
44
+ readonly minDirectionChanges?: number;
45
+ readonly withinMs?: number;
46
+ readonly state?: string;
47
+ readonly reaction?: string;
48
+ }
49
+ export interface JsonAvatarPoseDefinition {
50
+ readonly neckStretch?: number;
51
+ readonly headOffsetY?: number;
52
+ readonly bodySquashY?: number;
53
+ readonly headBob?: number;
54
+ readonly headTilt?: number;
55
+ readonly blush?: number;
56
+ readonly tailWag?: number;
57
+ readonly earPerk?: number;
58
+ readonly eyeFollow?: boolean;
59
+ readonly eyeMode?: string;
60
+ readonly mouthMode?: string;
61
+ }
62
+ export interface JsonAvatarActionDefinition {
63
+ readonly id: string;
64
+ readonly priority: number;
65
+ readonly loop: boolean;
66
+ readonly durationMs: number;
67
+ readonly trigger: JsonAvatarTriggerDefinition;
68
+ readonly pose: JsonAvatarPoseDefinition;
69
+ }
70
+ export declare function validateJsonAvatarDefinition(value: unknown): JsonAvatarDefinition;
71
+ export declare function validateJsonAvatarActionDefinition(value: unknown, fallbackId?: string): JsonAvatarActionDefinition;
72
+ export declare function validateJsonAvatarActionCount(count: number): void;
73
+ export declare function normalizeJsonAvatarActionFileName(value: string): string;
74
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,202 @@
1
+ export const petFormatPackageName = "@burmese/pet-format";
2
+ export const maxJsonAvatarBytes = 256 * 1024;
3
+ export const maxJsonAvatarActionBytes = 64 * 1024;
4
+ export const maxJsonAvatarActions = 64;
5
+ export const maxJsonAvatarRenderedPixels = 340;
6
+ const maxParts = 128;
7
+ const maxRectsPerPart = 128;
8
+ const maxTotalRects = 2048;
9
+ const maxPaletteEntries = 128;
10
+ const maxHitAreas = 64;
11
+ export function validateJsonAvatarDefinition(value) {
12
+ if (!isRecord(value))
13
+ throw new Error("avatar.json must be an object.");
14
+ const id = readId(value.id, "avatar id");
15
+ const displayName = readText(value.displayName, "avatar displayName", 80);
16
+ const canvas = validateCanvas(value.canvas);
17
+ const palette = validatePalette(value.palette);
18
+ const hitAreas = validateHitAreas(value.hitAreas);
19
+ const parts = validateParts(value.parts, palette);
20
+ return { id, displayName, canvas, palette, hitAreas, parts };
21
+ }
22
+ export function validateJsonAvatarActionDefinition(value, fallbackId = "action") {
23
+ if (!isRecord(value))
24
+ throw new Error("JSON avatar action must be an object.");
25
+ const id = typeof value.id === "string" && value.id.trim() ? readId(value.id, "action id") : fallbackId;
26
+ const priority = readOptionalInteger(value.priority, 0, -100, 100, "action priority");
27
+ const loop = typeof value.loop === "boolean" ? value.loop : false;
28
+ const durationMs = readOptionalNumber(value.durationMs, 0, 0, 60_000, "action durationMs");
29
+ const trigger = validateTrigger(value.trigger);
30
+ const pose = validatePose(value.pose);
31
+ return { id, priority, loop, durationMs, trigger, pose };
32
+ }
33
+ export function validateJsonAvatarActionCount(count) {
34
+ if (!Number.isInteger(count) || count < 0)
35
+ throw new Error("JSON avatar action count is invalid.");
36
+ if (count === 0)
37
+ throw new Error("JSON avatar must include at least one action JSON file.");
38
+ if (count > maxJsonAvatarActions)
39
+ throw new Error("JSON avatar has too many actions.");
40
+ }
41
+ export function normalizeJsonAvatarActionFileName(value) {
42
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]{0,63}\.json$/.test(value) || value.startsWith(".")) {
43
+ throw new Error("JSON avatar action file name is invalid.");
44
+ }
45
+ return value;
46
+ }
47
+ function validateCanvas(value) {
48
+ if (!isRecord(value))
49
+ throw new Error("avatar canvas must be an object.");
50
+ const width = readNumber(value.width, 1, 512, "canvas width");
51
+ const height = readNumber(value.height, 1, 512, "canvas height");
52
+ const scale = readNumber(value.scale, 1, 16, "canvas scale");
53
+ // The pet window is 340px wide; larger rendered avatars can clip at normal scale.
54
+ if (width * scale > maxJsonAvatarRenderedPixels || height * scale > maxJsonAvatarRenderedPixels) {
55
+ throw new Error(`JSON avatar rendered size must be ${maxJsonAvatarRenderedPixels}px or smaller.`);
56
+ }
57
+ return { width, height, scale };
58
+ }
59
+ function validatePalette(value) {
60
+ if (!isRecord(value))
61
+ throw new Error("avatar palette must be an object.");
62
+ const entries = Object.entries(value);
63
+ if (entries.length === 0 || entries.length > maxPaletteEntries)
64
+ throw new Error("avatar palette size is invalid.");
65
+ const palette = {};
66
+ for (const [key, rawColor] of entries) {
67
+ const name = readId(key, "palette color name");
68
+ if (typeof rawColor !== "string" || !/^#[0-9a-fA-F]{6}(?:[0-9a-fA-F]{2})?$/.test(rawColor)) {
69
+ throw new Error(`avatar palette color is invalid: ${name}`);
70
+ }
71
+ palette[name] = rawColor;
72
+ }
73
+ return palette;
74
+ }
75
+ function validateHitAreas(value) {
76
+ if (!isRecord(value))
77
+ return {};
78
+ const entries = Object.entries(value);
79
+ if (entries.length > maxHitAreas)
80
+ throw new Error("avatar has too many hit areas.");
81
+ const hitAreas = {};
82
+ for (const [key, area] of entries) {
83
+ if (!isRecord(area))
84
+ throw new Error("avatar hit area must be an object.");
85
+ const id = readId(key, "hit area id");
86
+ hitAreas[id] = {
87
+ x: readNumber(area.x, -512, 512, "hit area x"),
88
+ y: readNumber(area.y, -512, 512, "hit area y"),
89
+ w: readNumber(area.w, 0.1, 512, "hit area width"),
90
+ h: readNumber(area.h, 0.1, 512, "hit area height"),
91
+ };
92
+ }
93
+ return hitAreas;
94
+ }
95
+ function validateParts(value, palette) {
96
+ if (!Array.isArray(value) || value.length === 0 || value.length > maxParts)
97
+ throw new Error("avatar parts must be a non-empty array.");
98
+ let totalRects = 0;
99
+ return value.map((partValue, index) => {
100
+ if (!isRecord(partValue))
101
+ throw new Error("avatar part must be an object.");
102
+ const id = readId(partValue.id, `part ${index} id`);
103
+ const z = readInteger(partValue.z, -1000, 1000, `part ${id} z`);
104
+ if (!Array.isArray(partValue.rects) || partValue.rects.length === 0 || partValue.rects.length > maxRectsPerPart)
105
+ throw new Error(`part ${id} rects are invalid.`);
106
+ const rects = partValue.rects.map((rectValue, rectIndex) => {
107
+ if (!isRecord(rectValue))
108
+ throw new Error(`part ${id} rect ${rectIndex} must be an object.`);
109
+ const color = readId(rectValue.color, `part ${id} rect ${rectIndex} color`);
110
+ if (!palette[color])
111
+ throw new Error(`part ${id} references missing palette color: ${color}`);
112
+ return {
113
+ x: readNumber(rectValue.x, -512, 512, `part ${id} rect x`),
114
+ y: readNumber(rectValue.y, -512, 512, `part ${id} rect y`),
115
+ w: readNumber(rectValue.w, 0.1, 512, `part ${id} rect width`),
116
+ h: readNumber(rectValue.h, 0.1, 512, `part ${id} rect height`),
117
+ color,
118
+ opacity: rectValue.opacity === undefined ? undefined : readNumber(rectValue.opacity, 0, 1, `part ${id} rect opacity`),
119
+ };
120
+ });
121
+ totalRects += rects.length;
122
+ if (totalRects > maxTotalRects)
123
+ throw new Error("avatar has too many rects.");
124
+ return { id, z, rects };
125
+ });
126
+ }
127
+ function validateTrigger(value) {
128
+ if (!isRecord(value))
129
+ throw new Error("action trigger must be an object.");
130
+ const type = readId(value.type, "trigger type");
131
+ const trigger = { type };
132
+ if (value.hitArea !== undefined)
133
+ trigger.hitArea = readId(value.hitArea, "trigger hitArea");
134
+ if (value.minDirectionChanges !== undefined)
135
+ trigger.minDirectionChanges = readInteger(value.minDirectionChanges, 1, 32, "trigger minDirectionChanges");
136
+ if (value.withinMs !== undefined)
137
+ trigger.withinMs = readNumber(value.withinMs, 50, 30_000, "trigger withinMs");
138
+ if (value.state !== undefined)
139
+ trigger.state = readId(value.state, "trigger state");
140
+ if (value.reaction !== undefined)
141
+ trigger.reaction = readId(value.reaction, "trigger reaction");
142
+ return trigger;
143
+ }
144
+ function validatePose(value) {
145
+ if (!isRecord(value))
146
+ throw new Error("action pose must be an object.");
147
+ const pose = {};
148
+ assignOptionalPoseNumber(pose, "neckStretch", value.neckStretch, 0.1, 4);
149
+ assignOptionalPoseNumber(pose, "headOffsetY", value.headOffsetY, -64, 64);
150
+ assignOptionalPoseNumber(pose, "bodySquashY", value.bodySquashY, 0.1, 4);
151
+ assignOptionalPoseNumber(pose, "headBob", value.headBob, 0, 32);
152
+ assignOptionalPoseNumber(pose, "headTilt", value.headTilt, -32, 32);
153
+ assignOptionalPoseNumber(pose, "blush", value.blush, 0, 1);
154
+ assignOptionalPoseNumber(pose, "tailWag", value.tailWag, 0, 32);
155
+ assignOptionalPoseNumber(pose, "earPerk", value.earPerk, 0, 32);
156
+ if (value.eyeFollow !== undefined) {
157
+ if (typeof value.eyeFollow !== "boolean")
158
+ throw new Error("pose eyeFollow must be boolean.");
159
+ pose.eyeFollow = value.eyeFollow;
160
+ }
161
+ if (value.eyeMode !== undefined)
162
+ pose.eyeMode = readId(value.eyeMode, "pose eyeMode");
163
+ if (value.mouthMode !== undefined)
164
+ pose.mouthMode = readId(value.mouthMode, "pose mouthMode");
165
+ return pose;
166
+ }
167
+ function assignOptionalPoseNumber(target, key, value, min, max) {
168
+ if (value === undefined)
169
+ return;
170
+ target[key] = readNumber(value, min, max, `pose ${key}`);
171
+ }
172
+ function readText(value, label, maxLength) {
173
+ if (typeof value !== "string" || value.trim().length === 0 || value.length > maxLength)
174
+ throw new Error(`${label} is invalid.`);
175
+ return value.trim();
176
+ }
177
+ function readId(value, label) {
178
+ if (typeof value !== "string" || !/^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/.test(value))
179
+ throw new Error(`${label} is invalid.`);
180
+ return value;
181
+ }
182
+ function readNumber(value, min, max, label) {
183
+ if (typeof value !== "number" || !Number.isFinite(value) || value < min || value > max)
184
+ throw new Error(`${label} is invalid.`);
185
+ return value;
186
+ }
187
+ function readInteger(value, min, max, label) {
188
+ const number = readNumber(value, min, max, label);
189
+ if (!Number.isInteger(number))
190
+ throw new Error(`${label} must be an integer.`);
191
+ return number;
192
+ }
193
+ function readOptionalNumber(value, fallback, min, max, label) {
194
+ return value === undefined ? fallback : readNumber(value, min, max, label);
195
+ }
196
+ function readOptionalInteger(value, fallback, min, max, label) {
197
+ return value === undefined ? fallback : readInteger(value, min, max, label);
198
+ }
199
+ function isRecord(value) {
200
+ return typeof value === "object" && value !== null && !Array.isArray(value);
201
+ }
202
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@burmese/pet-format",
3
+ "version": "3.1.0",
4
+ "license": "MIT",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/wannabeepolymath/pet-assistant.git",
8
+ "directory": "packages/pet-format"
9
+ },
10
+ "type": "module",
11
+ "main": "dist/index.js",
12
+ "types": "dist/index.d.ts",
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.js"
23
+ }
24
+ },
25
+ "devDependencies": {
26
+ "typescript": "^6.0.3"
27
+ },
28
+ "scripts": {
29
+ "check": "pnpm typecheck",
30
+ "typecheck": "tsc --noEmit",
31
+ "build": "tsc"
32
+ }
33
+ }