@ehfuse/forma 2.0.10 → 2.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.
Files changed (58) hide show
  1. package/README.md +333 -185
  2. package/dist/core/FieldStore.d.ts +41 -0
  3. package/dist/core/FieldStore.d.ts.map +1 -1
  4. package/dist/core/FieldStore.js +121 -7
  5. package/dist/core/FieldStore.js.map +1 -1
  6. package/dist/esm/core/FieldStore.d.ts +41 -0
  7. package/dist/esm/core/FieldStore.d.ts.map +1 -1
  8. package/dist/esm/core/FieldStore.js +121 -7
  9. package/dist/esm/core/FieldStore.js.map +1 -1
  10. package/dist/esm/hooks/useForm.js +6 -3
  11. package/dist/esm/hooks/useForm.js.map +1 -1
  12. package/dist/esm/hooks/useFormaState.d.ts +3 -1
  13. package/dist/esm/hooks/useFormaState.d.ts.map +1 -1
  14. package/dist/esm/hooks/useFormaState.js +31 -3
  15. package/dist/esm/hooks/useFormaState.js.map +1 -1
  16. package/dist/esm/hooks/useGlobalForm.d.ts +8 -12
  17. package/dist/esm/hooks/useGlobalForm.d.ts.map +1 -1
  18. package/dist/esm/hooks/useGlobalForm.js +36 -2
  19. package/dist/esm/hooks/useGlobalForm.js.map +1 -1
  20. package/dist/esm/hooks/useGlobalFormaState.d.ts +8 -72
  21. package/dist/esm/hooks/useGlobalFormaState.d.ts.map +1 -1
  22. package/dist/esm/hooks/useGlobalFormaState.js +8 -2
  23. package/dist/esm/hooks/useGlobalFormaState.js.map +1 -1
  24. package/dist/esm/index.d.ts +1 -1
  25. package/dist/esm/index.d.ts.map +1 -1
  26. package/dist/esm/index.js +2 -44
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/types/form.d.ts +18 -0
  29. package/dist/esm/types/form.d.ts.map +1 -1
  30. package/dist/esm/types/globalForm.d.ts +23 -2
  31. package/dist/esm/types/globalForm.d.ts.map +1 -1
  32. package/dist/esm/types/globalForm.js.map +1 -1
  33. package/dist/hooks/useForm.js +6 -3
  34. package/dist/hooks/useForm.js.map +1 -1
  35. package/dist/hooks/useFormaState.d.ts +3 -1
  36. package/dist/hooks/useFormaState.d.ts.map +1 -1
  37. package/dist/hooks/useFormaState.js +31 -3
  38. package/dist/hooks/useFormaState.js.map +1 -1
  39. package/dist/hooks/useGlobalForm.d.ts +8 -12
  40. package/dist/hooks/useGlobalForm.d.ts.map +1 -1
  41. package/dist/hooks/useGlobalForm.js +36 -2
  42. package/dist/hooks/useGlobalForm.js.map +1 -1
  43. package/dist/hooks/useGlobalFormaState.d.ts +8 -72
  44. package/dist/hooks/useGlobalFormaState.d.ts.map +1 -1
  45. package/dist/hooks/useGlobalFormaState.js +8 -2
  46. package/dist/hooks/useGlobalFormaState.js.map +1 -1
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +2 -67
  50. package/dist/index.js.map +1 -1
  51. package/dist/types/form.d.ts +18 -0
  52. package/dist/types/form.d.ts.map +1 -1
  53. package/dist/types/globalForm.d.ts +23 -2
  54. package/dist/types/globalForm.d.ts.map +1 -1
  55. package/dist/types/globalForm.js.map +1 -1
  56. package/package.json +4 -10
  57. package/dist/esm/index.min.js +0 -28
  58. package/dist/index.min.js +0 -28
@@ -31,18 +31,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  exports.FieldStore = void 0;
32
32
  const dotNotation_1 = require("../utils/dotNotation");
33
33
  const environment_1 = require("../utils/environment");
34
- /**
35
- * 개별 필드 상태 관리 Store / Individual field state management store
36
- * 선택적 구독과 성능 최적화를 위한 핵심 클래스
37
- * Core class for selective subscriptions and performance optimization
38
- *
39
- * @template T 폼 데이터의 타입 / Form data type
40
- */
41
34
  class FieldStore {
42
35
  constructor(initialValues) {
43
36
  this.fields = new Map();
44
37
  this.dotNotationListeners = new Map(); // Dot notation 구독자 / Dot notation subscribers
45
38
  this.globalListeners = new Set();
39
+ this.watchers = new Map(); // Watch 콜백 관리 / Watch callback management
46
40
  this.initialValues = { ...initialValues };
47
41
  // 초기값으로 필드 초기화 / Initialize fields with initial values
48
42
  Object.keys(initialValues).forEach((key) => {
@@ -172,6 +166,7 @@ class FieldStore {
172
166
  const oldRootValue = field.value;
173
167
  const newRootValue = (0, dotNotation_1.setNestedValue)(field.value || {}, remainingPath, value);
174
168
  if (JSON.stringify(field.value) !== JSON.stringify(newRootValue)) {
169
+ const prevValue = field.value;
175
170
  field.value = newRootValue;
176
171
  // 루트 필드 구독자들 알림 / Notify root field subscribers
177
172
  field.listeners.forEach((listener) => {
@@ -179,9 +174,15 @@ class FieldStore {
179
174
  });
180
175
  // Dot notation 구독자들 알림 / Notify dot notation subscribers
181
176
  this.dotNotationListeners.forEach((listeners, subscribedPath) => {
177
+ // 1. 정확히 일치하는 경로
182
178
  if (subscribedPath === fieldNameStr) {
183
179
  listeners.forEach((listener) => listener());
184
180
  }
181
+ // 2. 구독 경로가 변경 경로의 부모인 경우
182
+ // 예: subscribedPath가 "todos.2"이고 fieldNameStr이 "todos.2.completed"
183
+ else if (fieldNameStr.startsWith(subscribedPath + ".")) {
184
+ listeners.forEach((listener) => listener());
185
+ }
185
186
  // 배열 필드나 .length 구독자들에게 알림
186
187
  // Notify array field or .length subscribers
187
188
  else if (subscribedPath === `${rootFieldStr}.length`) {
@@ -201,6 +202,8 @@ class FieldStore {
201
202
  });
202
203
  // 전역 구독자들 알림 / Notify global subscribers
203
204
  this.globalListeners.forEach((listener) => listener());
205
+ // Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
206
+ this.notifyWatchers(fieldNameStr, value, prevValue);
204
207
  }
205
208
  return;
206
209
  }
@@ -271,6 +274,8 @@ class FieldStore {
271
274
  if (this.globalListeners.size > 0) {
272
275
  this.globalListeners.forEach((listener) => listener());
273
276
  }
277
+ // Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
278
+ this.notifyWatchers(fieldStr, value, oldValue);
274
279
  }
275
280
  }
276
281
  /**
@@ -296,9 +301,14 @@ class FieldStore {
296
301
  }
297
302
  // 성능 최적화: 영향받는 리스너들을 먼저 수집
298
303
  const affectedListeners = new Set();
304
+ const watcherNotifications = [];
299
305
  // 각 업데이트를 개별적으로 처리하되, 리스너 실행은 마지막에 일괄 처리
300
306
  Object.entries(newValues).forEach(([fieldName, value]) => {
307
+ // 이전 값 저장 (watch 알림용)
308
+ const prevValue = this.getValue(fieldName);
301
309
  this.setValueWithoutNotify(fieldName, value, affectedListeners);
310
+ // watch 알림 예약
311
+ watcherNotifications.push({ path: fieldName, value, prevValue });
302
312
  });
303
313
  // 글로벌 리스너들도 추가
304
314
  this.globalListeners.forEach((listener) => affectedListeners.add(listener));
@@ -311,6 +321,10 @@ class FieldStore {
311
321
  (0, environment_1.devError)("setValues 리스너 실행 중 오류:", error);
312
322
  }
313
323
  });
324
+ // watch 알림 실행
325
+ watcherNotifications.forEach(({ path, value, prevValue }) => {
326
+ this.notifyWatchers(path, value, prevValue);
327
+ });
314
328
  }
315
329
  /**
316
330
  * 초기값 재설정 / Reset initial values
@@ -647,6 +661,105 @@ class FieldStore {
647
661
  // 글로벌 리스너들에게도 알림
648
662
  this.globalListeners.forEach((listener) => listener());
649
663
  }
664
+ /**
665
+ * 필드 변경 감시 / Watch field changes
666
+ * @param path 감시할 필드 경로 (dot notation 지원) / Field path to watch (supports dot notation)
667
+ * @param callback 변경 시 실행할 콜백 / Callback to execute on change
668
+ * @param options 옵션 / Options
669
+ * @returns cleanup 함수 / Cleanup function
670
+ */
671
+ watch(path, callback, options) {
672
+ if (!this.watchers.has(path)) {
673
+ this.watchers.set(path, new Set());
674
+ }
675
+ const watcherSet = this.watchers.get(path);
676
+ watcherSet.add(callback);
677
+ // immediate: true면 현재 값으로 즉시 실행 / Execute immediately with current value if immediate: true
678
+ if (options?.immediate) {
679
+ const currentValue = this.getValue(path);
680
+ callback(currentValue, undefined);
681
+ }
682
+ // cleanup 함수 반환 / Return cleanup function
683
+ return () => {
684
+ watcherSet.delete(callback);
685
+ if (watcherSet.size === 0) {
686
+ this.watchers.delete(path);
687
+ }
688
+ };
689
+ }
690
+ /**
691
+ * Watcher 알림 실행 / Notify watchers
692
+ * @param path 변경된 필드 경로 / Changed field path
693
+ * @param value 새 값 / New value
694
+ * @param prevValue 이전 값 / Previous value
695
+ */
696
+ notifyWatchers(path, value, prevValue) {
697
+ // 1. 정확한 경로 매칭 / Exact path match
698
+ const exactWatchers = this.watchers.get(path);
699
+ if (exactWatchers && exactWatchers.size > 0) {
700
+ exactWatchers.forEach((callback) => {
701
+ try {
702
+ callback(value, prevValue);
703
+ }
704
+ catch (error) {
705
+ console.error(`Error in watcher for path "${path}":`, error);
706
+ }
707
+ });
708
+ }
709
+ // 2. 와일드카드 패턴 매칭 / Wildcard pattern matching
710
+ // todos.0.completed 변경 시 "todos.*.completed" 패턴도 트리거
711
+ this.watchers.forEach((watcherSet, watcherPath) => {
712
+ if (watcherPath.includes("*")) {
713
+ if (this.matchesWildcard(path, watcherPath)) {
714
+ watcherSet.forEach((callback) => {
715
+ try {
716
+ callback(value, prevValue);
717
+ }
718
+ catch (error) {
719
+ console.error(`Error in wildcard watcher for pattern "${watcherPath}" (triggered by "${path}"):`, error);
720
+ }
721
+ });
722
+ }
723
+ }
724
+ });
725
+ }
726
+ /**
727
+ * 와일드카드 패턴 매칭 / Wildcard pattern matching
728
+ * @param path 실제 경로 / Actual path (e.g., "todos.0.completed")
729
+ * @param pattern 와일드카드 패턴 / Wildcard pattern (e.g., "todos.*.completed")
730
+ * @returns 매칭 여부 / Whether path matches pattern
731
+ */
732
+ matchesWildcard(path, pattern) {
733
+ const pathParts = path.split(".");
734
+ const patternParts = pattern.split(".");
735
+ if (pathParts.length !== patternParts.length) {
736
+ return false;
737
+ }
738
+ for (let i = 0; i < patternParts.length; i++) {
739
+ if (patternParts[i] === "*") {
740
+ continue; // 와일드카드는 모든 값과 매칭 / Wildcard matches any value
741
+ }
742
+ if (patternParts[i] !== pathParts[i]) {
743
+ return false;
744
+ }
745
+ }
746
+ return true;
747
+ }
748
+ /**
749
+ * 특정 path에 watcher가 등록되어 있는지 확인 / Check if watcher is registered for specific path
750
+ * @param path 확인할 경로 / Path to check
751
+ * @returns watcher 등록 여부 / Whether watcher is registered
752
+ */
753
+ hasWatcher(path) {
754
+ return this.watchers.has(path);
755
+ }
756
+ /**
757
+ * 등록된 모든 watcher path 목록 반환 (디버깅용) / Return all registered watcher paths (for debugging)
758
+ * @returns watcher path 배열 / Array of watcher paths
759
+ */
760
+ getWatchedPaths() {
761
+ return Array.from(this.watchers.keys());
762
+ }
650
763
  /**
651
764
  * 리소스 정리 / Clean up resources
652
765
  */
@@ -654,6 +767,7 @@ class FieldStore {
654
767
  this.fields.clear();
655
768
  this.globalListeners.clear();
656
769
  this.dotNotationListeners.clear();
770
+ this.watchers.clear();
657
771
  }
658
772
  }
659
773
  exports.FieldStore = FieldStore;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldStore.js","sourceRoot":"","sources":["../../core/FieldStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldStore.js","sourceRoot":"","sources":["../../core/FieldStore.ts"],"names":[],"mappings":"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"}
@@ -33,11 +33,16 @@
33
33
  *
34
34
  * @template T 폼 데이터의 타입 / Form data type
35
35
  */
36
+ /**
37
+ * Watch 콜백 타입 / Watch callback type
38
+ */
39
+ type WatchCallback = (value: any, prevValue: any) => void;
36
40
  export declare class FieldStore<T extends Record<string, any>> {
37
41
  private fields;
38
42
  private dotNotationListeners;
39
43
  private initialValues;
40
44
  private globalListeners;
45
+ private watchers;
41
46
  constructor(initialValues: T);
42
47
  /**
43
48
  * 특정 필드 값 가져오기 / Get specific field value
@@ -130,9 +135,45 @@ export declare class FieldStore<T extends Record<string, any>> {
130
135
  * 초기값으로 리셋 / Reset to initial values
131
136
  */
132
137
  reset(): void;
138
+ /**
139
+ * 필드 변경 감시 / Watch field changes
140
+ * @param path 감시할 필드 경로 (dot notation 지원) / Field path to watch (supports dot notation)
141
+ * @param callback 변경 시 실행할 콜백 / Callback to execute on change
142
+ * @param options 옵션 / Options
143
+ * @returns cleanup 함수 / Cleanup function
144
+ */
145
+ watch(path: string, callback: WatchCallback, options?: {
146
+ immediate?: boolean;
147
+ }): () => void;
148
+ /**
149
+ * Watcher 알림 실행 / Notify watchers
150
+ * @param path 변경된 필드 경로 / Changed field path
151
+ * @param value 새 값 / New value
152
+ * @param prevValue 이전 값 / Previous value
153
+ */
154
+ private notifyWatchers;
155
+ /**
156
+ * 와일드카드 패턴 매칭 / Wildcard pattern matching
157
+ * @param path 실제 경로 / Actual path (e.g., "todos.0.completed")
158
+ * @param pattern 와일드카드 패턴 / Wildcard pattern (e.g., "todos.*.completed")
159
+ * @returns 매칭 여부 / Whether path matches pattern
160
+ */
161
+ private matchesWildcard;
162
+ /**
163
+ * 특정 path에 watcher가 등록되어 있는지 확인 / Check if watcher is registered for specific path
164
+ * @param path 확인할 경로 / Path to check
165
+ * @returns watcher 등록 여부 / Whether watcher is registered
166
+ */
167
+ hasWatcher(path: string): boolean;
168
+ /**
169
+ * 등록된 모든 watcher path 목록 반환 (디버깅용) / Return all registered watcher paths (for debugging)
170
+ * @returns watcher path 배열 / Array of watcher paths
171
+ */
172
+ getWatchedPaths(): string[];
133
173
  /**
134
174
  * 리소스 정리 / Clean up resources
135
175
  */
136
176
  destroy(): void;
137
177
  }
178
+ export {};
138
179
  //# sourceMappingURL=FieldStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjD,OAAO,CAAC,MAAM,CACA;IACd,OAAO,CAAC,oBAAoB,CAA2C;IACvE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,eAAe,CAAyB;gBAEpC,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IA8B1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuD3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IA2JhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IA4B/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAkBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU/B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAyC/B;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAYzD;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2CnC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA4B5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAsF7B;;OAEG;IACH,KAAK;IA6DL;;OAEG;IACH,OAAO;CAKV"}
1
+ {"version":3,"file":"FieldStore.d.ts","sourceRoot":"","sources":["../../../core/FieldStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH;;;;;;GAMG;AACH;;GAEG;AACH,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC;AAE1D,qBAAa,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACjD,OAAO,CAAC,MAAM,CACA;IACd,OAAO,CAAC,oBAAoB,CAA2C;IACvE,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA8C;gBAElD,aAAa,EAAE,CAAC;IAW5B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,GAAG;IA8B1C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;IAuD3D;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI;IAOpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;IA0KhD;;;OAGG;IACH,SAAS,IAAI,CAAC;IAUd;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IA4C/B;;;OAGG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAyBpC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAkBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU/B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAyC/B;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAYzD;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2CnC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA4B5C;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAsF7B;;OAEG;IACH,KAAK;IA6DL;;;;;;OAMG;IACH,KAAK,CACD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAClC,MAAM,IAAI;IAuBb;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoCtB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAoBvB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACH,OAAO;CAMV"}
@@ -28,18 +28,12 @@
28
28
  */
29
29
  import { getNestedValue, setNestedValue } from "../utils/dotNotation";
30
30
  import { devError } from "../utils/environment";
31
- /**
32
- * 개별 필드 상태 관리 Store / Individual field state management store
33
- * 선택적 구독과 성능 최적화를 위한 핵심 클래스
34
- * Core class for selective subscriptions and performance optimization
35
- *
36
- * @template T 폼 데이터의 타입 / Form data type
37
- */
38
31
  export class FieldStore {
39
32
  constructor(initialValues) {
40
33
  this.fields = new Map();
41
34
  this.dotNotationListeners = new Map(); // Dot notation 구독자 / Dot notation subscribers
42
35
  this.globalListeners = new Set();
36
+ this.watchers = new Map(); // Watch 콜백 관리 / Watch callback management
43
37
  this.initialValues = { ...initialValues };
44
38
  // 초기값으로 필드 초기화 / Initialize fields with initial values
45
39
  Object.keys(initialValues).forEach((key) => {
@@ -169,6 +163,7 @@ export class FieldStore {
169
163
  const oldRootValue = field.value;
170
164
  const newRootValue = setNestedValue(field.value || {}, remainingPath, value);
171
165
  if (JSON.stringify(field.value) !== JSON.stringify(newRootValue)) {
166
+ const prevValue = field.value;
172
167
  field.value = newRootValue;
173
168
  // 루트 필드 구독자들 알림 / Notify root field subscribers
174
169
  field.listeners.forEach((listener) => {
@@ -176,9 +171,15 @@ export class FieldStore {
176
171
  });
177
172
  // Dot notation 구독자들 알림 / Notify dot notation subscribers
178
173
  this.dotNotationListeners.forEach((listeners, subscribedPath) => {
174
+ // 1. 정확히 일치하는 경로
179
175
  if (subscribedPath === fieldNameStr) {
180
176
  listeners.forEach((listener) => listener());
181
177
  }
178
+ // 2. 구독 경로가 변경 경로의 부모인 경우
179
+ // 예: subscribedPath가 "todos.2"이고 fieldNameStr이 "todos.2.completed"
180
+ else if (fieldNameStr.startsWith(subscribedPath + ".")) {
181
+ listeners.forEach((listener) => listener());
182
+ }
182
183
  // 배열 필드나 .length 구독자들에게 알림
183
184
  // Notify array field or .length subscribers
184
185
  else if (subscribedPath === `${rootFieldStr}.length`) {
@@ -198,6 +199,8 @@ export class FieldStore {
198
199
  });
199
200
  // 전역 구독자들 알림 / Notify global subscribers
200
201
  this.globalListeners.forEach((listener) => listener());
202
+ // Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
203
+ this.notifyWatchers(fieldNameStr, value, prevValue);
201
204
  }
202
205
  return;
203
206
  }
@@ -268,6 +271,8 @@ export class FieldStore {
268
271
  if (this.globalListeners.size > 0) {
269
272
  this.globalListeners.forEach((listener) => listener());
270
273
  }
274
+ // Watcher 실행 (와일드카드 매칭 포함) / Execute watcher (including wildcard matching)
275
+ this.notifyWatchers(fieldStr, value, oldValue);
271
276
  }
272
277
  }
273
278
  /**
@@ -293,9 +298,14 @@ export class FieldStore {
293
298
  }
294
299
  // 성능 최적화: 영향받는 리스너들을 먼저 수집
295
300
  const affectedListeners = new Set();
301
+ const watcherNotifications = [];
296
302
  // 각 업데이트를 개별적으로 처리하되, 리스너 실행은 마지막에 일괄 처리
297
303
  Object.entries(newValues).forEach(([fieldName, value]) => {
304
+ // 이전 값 저장 (watch 알림용)
305
+ const prevValue = this.getValue(fieldName);
298
306
  this.setValueWithoutNotify(fieldName, value, affectedListeners);
307
+ // watch 알림 예약
308
+ watcherNotifications.push({ path: fieldName, value, prevValue });
299
309
  });
300
310
  // 글로벌 리스너들도 추가
301
311
  this.globalListeners.forEach((listener) => affectedListeners.add(listener));
@@ -308,6 +318,10 @@ export class FieldStore {
308
318
  devError("setValues 리스너 실행 중 오류:", error);
309
319
  }
310
320
  });
321
+ // watch 알림 실행
322
+ watcherNotifications.forEach(({ path, value, prevValue }) => {
323
+ this.notifyWatchers(path, value, prevValue);
324
+ });
311
325
  }
312
326
  /**
313
327
  * 초기값 재설정 / Reset initial values
@@ -644,6 +658,105 @@ export class FieldStore {
644
658
  // 글로벌 리스너들에게도 알림
645
659
  this.globalListeners.forEach((listener) => listener());
646
660
  }
661
+ /**
662
+ * 필드 변경 감시 / Watch field changes
663
+ * @param path 감시할 필드 경로 (dot notation 지원) / Field path to watch (supports dot notation)
664
+ * @param callback 변경 시 실행할 콜백 / Callback to execute on change
665
+ * @param options 옵션 / Options
666
+ * @returns cleanup 함수 / Cleanup function
667
+ */
668
+ watch(path, callback, options) {
669
+ if (!this.watchers.has(path)) {
670
+ this.watchers.set(path, new Set());
671
+ }
672
+ const watcherSet = this.watchers.get(path);
673
+ watcherSet.add(callback);
674
+ // immediate: true면 현재 값으로 즉시 실행 / Execute immediately with current value if immediate: true
675
+ if (options?.immediate) {
676
+ const currentValue = this.getValue(path);
677
+ callback(currentValue, undefined);
678
+ }
679
+ // cleanup 함수 반환 / Return cleanup function
680
+ return () => {
681
+ watcherSet.delete(callback);
682
+ if (watcherSet.size === 0) {
683
+ this.watchers.delete(path);
684
+ }
685
+ };
686
+ }
687
+ /**
688
+ * Watcher 알림 실행 / Notify watchers
689
+ * @param path 변경된 필드 경로 / Changed field path
690
+ * @param value 새 값 / New value
691
+ * @param prevValue 이전 값 / Previous value
692
+ */
693
+ notifyWatchers(path, value, prevValue) {
694
+ // 1. 정확한 경로 매칭 / Exact path match
695
+ const exactWatchers = this.watchers.get(path);
696
+ if (exactWatchers && exactWatchers.size > 0) {
697
+ exactWatchers.forEach((callback) => {
698
+ try {
699
+ callback(value, prevValue);
700
+ }
701
+ catch (error) {
702
+ console.error(`Error in watcher for path "${path}":`, error);
703
+ }
704
+ });
705
+ }
706
+ // 2. 와일드카드 패턴 매칭 / Wildcard pattern matching
707
+ // todos.0.completed 변경 시 "todos.*.completed" 패턴도 트리거
708
+ this.watchers.forEach((watcherSet, watcherPath) => {
709
+ if (watcherPath.includes("*")) {
710
+ if (this.matchesWildcard(path, watcherPath)) {
711
+ watcherSet.forEach((callback) => {
712
+ try {
713
+ callback(value, prevValue);
714
+ }
715
+ catch (error) {
716
+ console.error(`Error in wildcard watcher for pattern "${watcherPath}" (triggered by "${path}"):`, error);
717
+ }
718
+ });
719
+ }
720
+ }
721
+ });
722
+ }
723
+ /**
724
+ * 와일드카드 패턴 매칭 / Wildcard pattern matching
725
+ * @param path 실제 경로 / Actual path (e.g., "todos.0.completed")
726
+ * @param pattern 와일드카드 패턴 / Wildcard pattern (e.g., "todos.*.completed")
727
+ * @returns 매칭 여부 / Whether path matches pattern
728
+ */
729
+ matchesWildcard(path, pattern) {
730
+ const pathParts = path.split(".");
731
+ const patternParts = pattern.split(".");
732
+ if (pathParts.length !== patternParts.length) {
733
+ return false;
734
+ }
735
+ for (let i = 0; i < patternParts.length; i++) {
736
+ if (patternParts[i] === "*") {
737
+ continue; // 와일드카드는 모든 값과 매칭 / Wildcard matches any value
738
+ }
739
+ if (patternParts[i] !== pathParts[i]) {
740
+ return false;
741
+ }
742
+ }
743
+ return true;
744
+ }
745
+ /**
746
+ * 특정 path에 watcher가 등록되어 있는지 확인 / Check if watcher is registered for specific path
747
+ * @param path 확인할 경로 / Path to check
748
+ * @returns watcher 등록 여부 / Whether watcher is registered
749
+ */
750
+ hasWatcher(path) {
751
+ return this.watchers.has(path);
752
+ }
753
+ /**
754
+ * 등록된 모든 watcher path 목록 반환 (디버깅용) / Return all registered watcher paths (for debugging)
755
+ * @returns watcher path 배열 / Array of watcher paths
756
+ */
757
+ getWatchedPaths() {
758
+ return Array.from(this.watchers.keys());
759
+ }
647
760
  /**
648
761
  * 리소스 정리 / Clean up resources
649
762
  */
@@ -651,6 +764,7 @@ export class FieldStore {
651
764
  this.fields.clear();
652
765
  this.globalListeners.clear();
653
766
  this.dotNotationListeners.clear();
767
+ this.watchers.clear();
654
768
  }
655
769
  }
656
770
  //# sourceMappingURL=FieldStore.js.map