@doki-land/live2d-core 0.0.17 → 0.0.18

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/dist/index.d.ts CHANGED
@@ -37,51 +37,6 @@ interface SessionState {
37
37
  readonly generation: number;
38
38
  }
39
39
 
40
- /** Model binary family (file extension / settings shape). */
41
- type ModelFormat = "moc2" | "moc3";
42
- /** Normalized, format-agnostic model settings. */
43
- interface ModelSettings {
44
- format: ModelFormat;
45
- url: string;
46
- name?: string;
47
- moc: string;
48
- textures: string[];
49
- motionGroups: Record<string, MotionDefinition[]>;
50
- expressions: ExpressionDefinition[];
51
- physics?: string;
52
- pose?: string;
53
- hitAreas: HitAreaDefinition[];
54
- layout?: Record<string, number>;
55
- }
56
- interface MotionDefinition {
57
- file: string;
58
- sound?: string;
59
- fadeInTime?: number;
60
- fadeOutTime?: number;
61
- }
62
- interface ExpressionDefinition {
63
- name: string;
64
- file: string;
65
- }
66
- interface HitAreaDefinition {
67
- name: string;
68
- id: string;
69
- }
70
- /** Opaque in-memory model handle. */
71
- interface InternalModel {
72
- readonly id: string;
73
- readonly settings: ModelSettings;
74
- readonly format: ModelFormat;
75
- }
76
-
77
- /**
78
- * Settings JSON format detection (moc2 vs moc3).
79
- * Shared by loader normalize and renderer backends — keep binary peek in renderer.
80
- */
81
-
82
- /** Detect moc2 vs moc3 from model settings JSON shape. Returns null if unknown. */
83
- declare function detectModelSettingsFormat(json: unknown): ModelFormat | null;
84
-
85
40
  /** Load pipeline stage for progress UI. */
86
41
  type LoadProgressStage = "mounting" | "resolve" | "settings" | "moc" | "textures" | "decode" | "ready";
87
42
  interface LoadProgress {
@@ -151,6 +106,51 @@ declare class EventEmitter {
151
106
  clear(): void;
152
107
  }
153
108
 
109
+ /** Model binary family (file extension / settings shape). */
110
+ type ModelFormat = "moc2" | "moc3";
111
+ /** Normalized, format-agnostic model settings. */
112
+ interface ModelSettings {
113
+ format: ModelFormat;
114
+ url: string;
115
+ name?: string;
116
+ moc: string;
117
+ textures: string[];
118
+ motionGroups: Record<string, MotionDefinition[]>;
119
+ expressions: ExpressionDefinition[];
120
+ physics?: string;
121
+ pose?: string;
122
+ hitAreas: HitAreaDefinition[];
123
+ layout?: Record<string, number>;
124
+ }
125
+ interface MotionDefinition {
126
+ file: string;
127
+ sound?: string;
128
+ fadeInTime?: number;
129
+ fadeOutTime?: number;
130
+ }
131
+ interface ExpressionDefinition {
132
+ name: string;
133
+ file: string;
134
+ }
135
+ interface HitAreaDefinition {
136
+ name: string;
137
+ id: string;
138
+ }
139
+ /** Opaque in-memory model handle. */
140
+ interface InternalModel {
141
+ readonly id: string;
142
+ readonly settings: ModelSettings;
143
+ readonly format: ModelFormat;
144
+ }
145
+
146
+ /**
147
+ * Settings JSON format detection (moc2 vs moc3).
148
+ * Shared by loader normalize and renderer backends — keep binary peek in renderer.
149
+ */
150
+
151
+ /** Detect moc2 vs moc3 from model settings JSON shape. Returns null if unknown. */
152
+ declare function detectModelSettingsFormat(json: unknown): ModelFormat | null;
153
+
154
154
  /**
155
155
  * CPU frame output — format-agnostic mesh list ready for any RenderDevice.
156
156
  */
package/dist/index.js CHANGED
@@ -9,6 +9,28 @@ function modelSourceUrl(source) {
9
9
  return source.baseUrl;
10
10
  }
11
11
 
12
+ // src/events.ts
13
+ var EventEmitter = class {
14
+ #listeners = /* @__PURE__ */ new Map();
15
+ on(event, listener) {
16
+ const set = this.#listeners.get(event) ?? /* @__PURE__ */ new Set();
17
+ set.add(listener);
18
+ this.#listeners.set(event, set);
19
+ return () => this.off(event, listener);
20
+ }
21
+ off(event, listener) {
22
+ this.#listeners.get(event)?.delete(listener);
23
+ }
24
+ emit(event, payload) {
25
+ for (const listener of this.#listeners.get(event) ?? []) {
26
+ listener(payload);
27
+ }
28
+ }
29
+ clear() {
30
+ this.#listeners.clear();
31
+ }
32
+ };
33
+
12
34
  // src/format/detect-format.ts
13
35
  function detectModelSettingsFormat(json) {
14
36
  if (!json || typeof json !== "object") return null;
@@ -33,28 +55,6 @@ function detectModelSettingsFormat(json) {
33
55
  return null;
34
56
  }
35
57
 
36
- // src/events.ts
37
- var EventEmitter = class {
38
- #listeners = /* @__PURE__ */ new Map();
39
- on(event, listener) {
40
- const set = this.#listeners.get(event) ?? /* @__PURE__ */ new Set();
41
- set.add(listener);
42
- this.#listeners.set(event, set);
43
- return () => this.off(event, listener);
44
- }
45
- off(event, listener) {
46
- this.#listeners.get(event)?.delete(listener);
47
- }
48
- emit(event, payload) {
49
- for (const listener of this.#listeners.get(event) ?? []) {
50
- listener(payload);
51
- }
52
- }
53
- clear() {
54
- this.#listeners.clear();
55
- }
56
- };
57
-
58
58
  // src/frame.ts
59
59
  var FrameBlendMode = {
60
60
  Normal: 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doki-land/live2d-core",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "Shared TypeScript contracts for live2d.ts — ModelSource, Live2dStage/Actor, ModelAsset, events (no DOM/GPU).",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/index.ts CHANGED
@@ -16,7 +16,6 @@ export type {
16
16
  SessionState,
17
17
  } from "./contracts.js";
18
18
  export { modelSourceUrl } from "./contracts.js";
19
- export { detectModelSettingsFormat } from "./format/detect-format.js";
20
19
  export {
21
20
  EventEmitter,
22
21
  type FrameProfile,
@@ -26,6 +25,7 @@ export {
26
25
  type LoadProgress,
27
26
  type LoadProgressStage,
28
27
  } from "./events.js";
28
+ export { detectModelSettingsFormat } from "./format/detect-format.js";
29
29
  export {
30
30
  FrameBlendMode,
31
31
  type FrameDrawable,