@hamak/ui-store 0.6.0 → 0.7.2

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 (90) hide show
  1. package/dist/api/api/index.d.ts +3 -3
  2. package/dist/api/api/index.js +3 -3
  3. package/dist/api/api/middleware-registry.d.ts +1 -1
  4. package/dist/api/api/reducer-registry.d.ts +1 -1
  5. package/dist/api/api/store-manager.d.ts +3 -3
  6. package/dist/api/autosave/autosave-action-factory.d.ts +2 -2
  7. package/dist/api/autosave/autosave-action-factory.js +1 -1
  8. package/dist/api/autosave/autosave-action-types.d.ts +1 -1
  9. package/dist/api/autosave/index.d.ts +3 -3
  10. package/dist/api/autosave/index.js +3 -3
  11. package/dist/api/fs/index.d.ts +2 -2
  12. package/dist/api/fs/index.js +2 -2
  13. package/dist/api/index.d.ts +5 -5
  14. package/dist/api/index.js +5 -5
  15. package/dist/api/tokens/index.d.ts +1 -1
  16. package/dist/api/tokens/index.js +1 -1
  17. package/dist/api/tokens/service-tokens.d.ts +8 -0
  18. package/dist/api/tokens/service-tokens.d.ts.map +1 -1
  19. package/dist/api/tokens/service-tokens.js +11 -0
  20. package/dist/api/types/extension-types.d.ts +1 -1
  21. package/dist/api/types/index.d.ts +4 -4
  22. package/dist/api/types/index.js +4 -4
  23. package/dist/api/types/store-types.d.ts +20 -12
  24. package/dist/api/types/store-types.d.ts.map +1 -1
  25. package/dist/impl/autosave/autosave-config-resolver.d.ts +1 -1
  26. package/dist/impl/autosave/autosave-config-resolver.js +1 -1
  27. package/dist/impl/autosave/autosave-middleware.d.ts +2 -2
  28. package/dist/impl/autosave/autosave-middleware.js +2 -2
  29. package/dist/impl/autosave/autosave-registry.d.ts +1 -1
  30. package/dist/impl/autosave/autosave-sync-middleware.d.ts +1 -1
  31. package/dist/impl/autosave/autosave-sync-middleware.js +1 -1
  32. package/dist/impl/autosave/index.d.ts +4 -4
  33. package/dist/impl/autosave/index.js +4 -4
  34. package/dist/impl/core/index.d.ts +3 -3
  35. package/dist/impl/core/index.js +3 -3
  36. package/dist/impl/core/middleware-registry.d.ts +1 -1
  37. package/dist/impl/core/reducer-registry.d.ts +1 -1
  38. package/dist/impl/core/store-manager.d.ts +16 -4
  39. package/dist/impl/core/store-manager.d.ts.map +1 -1
  40. package/dist/impl/core/store-manager.js +19 -2
  41. package/dist/impl/extensions/store-extensions.d.ts +1 -1
  42. package/dist/impl/fs/commands/fs-commands.d.ts +3 -3
  43. package/dist/impl/fs/commands/fs-commands.d.ts.map +1 -1
  44. package/dist/impl/fs/commands/fs-commands.js +35 -9
  45. package/dist/impl/fs/commands/structure-commands.d.ts +25 -0
  46. package/dist/impl/fs/commands/structure-commands.d.ts.map +1 -1
  47. package/dist/impl/fs/core/fs-adapter.d.ts +3 -3
  48. package/dist/impl/fs/core/fs-adapter.js +2 -2
  49. package/dist/impl/fs/core/fs-facade.d.ts +2 -2
  50. package/dist/impl/fs/index.d.ts +6 -6
  51. package/dist/impl/fs/index.js +6 -6
  52. package/dist/impl/fs/utils/data-updater.d.ts +1 -1
  53. package/dist/impl/index.d.ts +8 -7
  54. package/dist/impl/index.d.ts.map +1 -1
  55. package/dist/impl/index.js +8 -7
  56. package/dist/impl/middleware/index.d.ts +2 -2
  57. package/dist/impl/middleware/index.js +2 -2
  58. package/dist/impl/persistence/index.d.ts +9 -0
  59. package/dist/impl/persistence/index.d.ts.map +1 -0
  60. package/dist/impl/persistence/index.js +8 -0
  61. package/dist/impl/persistence/persistence-filter.d.ts +11 -0
  62. package/dist/impl/persistence/persistence-filter.d.ts.map +1 -0
  63. package/dist/impl/persistence/persistence-filter.js +24 -0
  64. package/dist/impl/persistence/persistence-resolver.d.ts +9 -0
  65. package/dist/impl/persistence/persistence-resolver.d.ts.map +1 -0
  66. package/dist/impl/persistence/persistence-resolver.js +22 -0
  67. package/dist/impl/persistence/persistence-wiring.d.ts +29 -0
  68. package/dist/impl/persistence/persistence-wiring.d.ts.map +1 -0
  69. package/dist/impl/persistence/persistence-wiring.js +69 -0
  70. package/dist/impl/persistence/web-storage-persistence-provider.d.ts +46 -0
  71. package/dist/impl/persistence/web-storage-persistence-provider.d.ts.map +1 -0
  72. package/dist/impl/persistence/web-storage-persistence-provider.js +155 -0
  73. package/dist/impl/plugin/index.d.ts +1 -1
  74. package/dist/impl/plugin/index.js +1 -1
  75. package/dist/impl/plugin/store-plugin-factory.d.ts +13 -1
  76. package/dist/impl/plugin/store-plugin-factory.d.ts.map +1 -1
  77. package/dist/impl/plugin/store-plugin-factory.js +60 -5
  78. package/dist/index.d.ts +1 -1
  79. package/dist/index.js +1 -1
  80. package/dist/spi/autosave/i-autosave-registry.d.ts +1 -1
  81. package/dist/spi/autosave/index.d.ts +2 -2
  82. package/dist/spi/autosave/index.js +2 -2
  83. package/dist/spi/index.d.ts +4 -4
  84. package/dist/spi/index.js +4 -4
  85. package/dist/spi/middleware/index.d.ts +1 -1
  86. package/dist/spi/middleware/index.js +1 -1
  87. package/dist/spi/middleware/middleware-provider.d.ts +1 -1
  88. package/dist/spi/persistence/index.d.ts +1 -1
  89. package/dist/spi/persistence/index.js +1 -1
  90. package/package.json +8 -4
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * API Interfaces Export
3
3
  */
4
- export * from './store-manager';
5
- export * from './middleware-registry';
6
- export * from './reducer-registry';
4
+ export * from './store-manager.js';
5
+ export * from './middleware-registry.js';
6
+ export * from './reducer-registry.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * API Interfaces Export
3
3
  */
4
- export * from './store-manager';
5
- export * from './middleware-registry';
6
- export * from './reducer-registry';
4
+ export * from './store-manager.js';
5
+ export * from './middleware-registry.js';
6
+ export * from './reducer-registry.js';
@@ -3,7 +3,7 @@
3
3
  * Extension point for plugins to contribute middleware
4
4
  */
5
5
  import type { Middleware } from 'redux';
6
- import type { MiddlewareRegistration } from '../types';
6
+ import type { MiddlewareRegistration } from '../types/index.js';
7
7
  export interface IMiddlewareRegistry {
8
8
  /**
9
9
  * Register a middleware
@@ -3,7 +3,7 @@
3
3
  * Allows dynamic reducer registration and hot replacement
4
4
  */
5
5
  import type { Reducer } from 'redux';
6
- import type { ReducerMap, ReducerRegistration } from '../types';
6
+ import type { ReducerMap, ReducerRegistration } from '../types/index.js';
7
7
  export interface IReducerRegistry {
8
8
  /**
9
9
  * Register a reducer for a state slice key
@@ -3,9 +3,9 @@
3
3
  * Main orchestrator for Redux store management
4
4
  */
5
5
  import type { Store, Reducer, Action } from 'redux';
6
- import type { StoreConfig, RootState, AppAction } from '../types';
7
- import type { IMiddlewareRegistry } from './middleware-registry';
8
- import type { IReducerRegistry } from './reducer-registry';
6
+ import type { StoreConfig, RootState, AppAction } from '../types/index.js';
7
+ import type { IMiddlewareRegistry } from './middleware-registry.js';
8
+ import type { IReducerRegistry } from './reducer-registry.js';
9
9
  export interface IStoreManager {
10
10
  /**
11
11
  * Get the Redux store instance
@@ -4,8 +4,8 @@
4
4
  * Factory for creating autosave actions.
5
5
  */
6
6
  import type { AnyAction } from 'redux';
7
- import type { AutosaveConfig } from './autosave-types';
8
- import { type SetAutosaveConfigAction, type ClearAutosaveConfigAction, type ChangeDetectedAction, type DebounceExpiredAction, type SaveStartedAction, type SaveSucceededAction, type SaveFailedAction, type RetryScheduledAction, type FlushPendingAction, type FlushAllPendingAction, type CancelPendingAction, type AutosaveAction } from './autosave-action-types';
7
+ import type { AutosaveConfig } from './autosave-types.js';
8
+ import { type SetAutosaveConfigAction, type ClearAutosaveConfigAction, type ChangeDetectedAction, type DebounceExpiredAction, type SaveStartedAction, type SaveSucceededAction, type SaveFailedAction, type RetryScheduledAction, type FlushPendingAction, type FlushAllPendingAction, type CancelPendingAction, type AutosaveAction } from './autosave-action-types.js';
9
9
  /**
10
10
  * Factory class for creating autosave actions
11
11
  */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Factory for creating autosave actions.
5
5
  */
6
- import { AutosaveActionTypes, } from './autosave-action-types';
6
+ import { AutosaveActionTypes, } from './autosave-action-types.js';
7
7
  /**
8
8
  * Factory class for creating autosave actions
9
9
  */
@@ -5,7 +5,7 @@
5
5
  * Actual saves are performed by plugin providers using their own actions
6
6
  * (e.g., PUT_REQUEST for remote-fs, UPDATE_ENTITY for remote-resource).
7
7
  */
8
- import type { AutosaveConfig, AutosaveError } from './autosave-types';
8
+ import type { AutosaveConfig, AutosaveError } from './autosave-types.js';
9
9
  /**
10
10
  * Autosave action type constants
11
11
  */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Public API for autosave functionality.
5
5
  */
6
- export * from './autosave-types';
7
- export * from './autosave-action-types';
8
- export * from './autosave-action-factory';
6
+ export * from './autosave-types.js';
7
+ export * from './autosave-action-types.js';
8
+ export * from './autosave-action-factory.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -3,6 +3,6 @@
3
3
  *
4
4
  * Public API for autosave functionality.
5
5
  */
6
- export * from './autosave-types';
7
- export * from './autosave-action-types';
8
- export * from './autosave-action-factory';
6
+ export * from './autosave-types.js';
7
+ export * from './autosave-action-types.js';
8
+ export * from './autosave-action-factory.js';
@@ -1,5 +1,5 @@
1
1
  export type { FileSystemNode, DirectoryNode, FileNode, FileSystemNodeBase, FileSystemNodeState, FileMemoState, FileSystemState, FileContentSchema } from '@hamak/shared-utils';
2
2
  export { fileSystemNodeInitialState } from '@hamak/shared-utils';
3
- export * from './contracts/filesystem-manager.contract';
4
- export * from './contracts/filesystem-facade.contract';
3
+ export * from './contracts/filesystem-manager.contract.js';
4
+ export * from './contracts/filesystem-facade.contract.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
1
  export { fileSystemNodeInitialState } from '@hamak/shared-utils';
2
2
  // Filesystem contracts
3
- export * from './contracts/filesystem-manager.contract';
4
- export * from './contracts/filesystem-facade.contract';
3
+ export * from './contracts/filesystem-manager.contract.js';
4
+ export * from './contracts/filesystem-facade.contract.js';
@@ -2,9 +2,9 @@
2
2
  * UI Store API
3
3
  * Public interfaces, types, and tokens for Redux state management
4
4
  */
5
- export * from './types';
6
- export * from './api';
7
- export * from './tokens';
8
- export * from './fs';
9
- export * from './autosave';
5
+ export * from './types/index.js';
6
+ export * from './api/index.js';
7
+ export * from './tokens/index.js';
8
+ export * from './fs/index.js';
9
+ export * from './autosave/index.js';
10
10
  //# sourceMappingURL=index.d.ts.map
package/dist/api/index.js CHANGED
@@ -2,8 +2,8 @@
2
2
  * UI Store API
3
3
  * Public interfaces, types, and tokens for Redux state management
4
4
  */
5
- export * from './types';
6
- export * from './api';
7
- export * from './tokens';
8
- export * from './fs';
9
- export * from './autosave';
5
+ export * from './types/index.js';
6
+ export * from './api/index.js';
7
+ export * from './tokens/index.js';
8
+ export * from './fs/index.js';
9
+ export * from './autosave/index.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Tokens Export
3
3
  */
4
- export * from './service-tokens';
4
+ export * from './service-tokens.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Tokens Export
3
3
  */
4
- export * from './service-tokens';
4
+ export * from './service-tokens.js';
@@ -7,4 +7,12 @@ export declare const MIDDLEWARE_REGISTRY_TOKEN: unique symbol;
7
7
  export declare const REDUCER_REGISTRY_TOKEN: unique symbol;
8
8
  export declare const STORE_EXTENSIONS_TOKEN: unique symbol;
9
9
  export declare const AUTOSAVE_REGISTRY_TOKEN: unique symbol;
10
+ export declare const PERSISTENCE_PROVIDER_TOKEN: unique symbol;
11
+ /**
12
+ * Global-registry alias for {@link PERSISTENCE_PROVIDER_TOKEN}. The unique
13
+ * symbol above only resolves for consumers that import it from this package;
14
+ * decoupled sibling plugins look the provider up via `Symbol.for(...)` instead
15
+ * (same convention as `Symbol.for('StoreManager')`, see #28 and #5).
16
+ */
17
+ export declare const PERSISTENCE_PROVIDER_GLOBAL_TOKEN: unique symbol;
10
18
  //# sourceMappingURL=service-tokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-tokens.d.ts","sourceRoot":"","sources":["../../../src/api/tokens/service-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,mBAAmB,eAAyB,CAAC;AAC1D,eAAO,MAAM,yBAAyB,eAA+B,CAAC;AACtE,eAAO,MAAM,sBAAsB,eAA4B,CAAC;AAChE,eAAO,MAAM,sBAAsB,eAA4B,CAAC;AAGhE,eAAO,MAAM,uBAAuB,eAA6B,CAAC"}
1
+ {"version":3,"file":"service-tokens.d.ts","sourceRoot":"","sources":["../../../src/api/tokens/service-tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,mBAAmB,eAAyB,CAAC;AAC1D,eAAO,MAAM,yBAAyB,eAA+B,CAAC;AACtE,eAAO,MAAM,sBAAsB,eAA4B,CAAC;AAChE,eAAO,MAAM,sBAAsB,eAA4B,CAAC;AAGhE,eAAO,MAAM,uBAAuB,eAA6B,CAAC;AAKlE,eAAO,MAAM,0BAA0B,eAAgC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,eAE7C,CAAC"}
@@ -8,3 +8,14 @@ export const REDUCER_REGISTRY_TOKEN = Symbol('ReducerRegistry');
8
8
  export const STORE_EXTENSIONS_TOKEN = Symbol('StoreExtensions');
9
9
  // Autosave tokens
10
10
  export const AUTOSAVE_REGISTRY_TOKEN = Symbol('AutosaveRegistry');
11
+ // Persistence token — resolves the active IPersistenceProvider so consumers
12
+ // (or sibling plugins) can mount a custom provider instead of the default
13
+ // web-storage one. See amah/app-framework#30.
14
+ export const PERSISTENCE_PROVIDER_TOKEN = Symbol('PersistenceProvider');
15
+ /**
16
+ * Global-registry alias for {@link PERSISTENCE_PROVIDER_TOKEN}. The unique
17
+ * symbol above only resolves for consumers that import it from this package;
18
+ * decoupled sibling plugins look the provider up via `Symbol.for(...)` instead
19
+ * (same convention as `Symbol.for('StoreManager')`, see #28 and #5).
20
+ */
21
+ export const PERSISTENCE_PROVIDER_GLOBAL_TOKEN = Symbol.for('@hamak/ui-store:PersistenceProvider');
@@ -2,7 +2,7 @@
2
2
  * Store extension types
3
3
  */
4
4
  import type { Reducer } from 'redux';
5
- import type { MiddlewareRegistration } from './middleware-types';
5
+ import type { MiddlewareRegistration } from './middleware-types.js';
6
6
  /**
7
7
  * Middleware contribution matches registry entries
8
8
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Type Definitions Export
3
3
  */
4
- export * from './store-types';
5
- export * from './middleware-types';
6
- export * from './reducer-types';
7
- export * from './extension-types';
4
+ export * from './store-types.js';
5
+ export * from './middleware-types.js';
6
+ export * from './reducer-types.js';
7
+ export * from './extension-types.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Type Definitions Export
3
3
  */
4
- export * from './store-types';
5
- export * from './middleware-types';
6
- export * from './reducer-types';
7
- export * from './extension-types';
4
+ export * from './store-types.js';
5
+ export * from './middleware-types.js';
6
+ export * from './reducer-types.js';
7
+ export * from './extension-types.js';
@@ -2,6 +2,25 @@
2
2
  * Store Type Definitions
3
3
  */
4
4
  import type { Store, Action, StoreEnhancer } from 'redux';
5
+ /**
6
+ * State persistence configuration. Persistence is applied at the slice
7
+ * (top-level reducer key) level: a whitelisted slice is serialized to the
8
+ * configured web storage and rehydrated on boot. See amah/app-framework#30.
9
+ */
10
+ export interface StorePersistenceConfig {
11
+ /** Enable state persistence */
12
+ enabled: boolean;
13
+ /** Storage key the serialized slice is written under */
14
+ key?: string;
15
+ /** Storage type (indexedDB is not yet implemented and falls back to localStorage) */
16
+ storage?: 'localStorage' | 'sessionStorage' | 'indexedDB';
17
+ /** Slices to persist (top-level reducer keys); when set, only these are written */
18
+ whitelist?: string[];
19
+ /** Slices to never persist (top-level reducer keys); applied after the whitelist */
20
+ blacklist?: string[];
21
+ /** Debounce window (ms) for save-on-change; defaults to 250ms */
22
+ debounceMs?: number;
23
+ }
5
24
  /**
6
25
  * Store configuration
7
26
  */
@@ -13,18 +32,7 @@ export interface StoreConfig {
13
32
  /** Additional store enhancers */
14
33
  enhancers?: StoreEnhancer[];
15
34
  /** Persistence configuration */
16
- persistence?: {
17
- /** Enable state persistence */
18
- enabled: boolean;
19
- /** Storage key prefix */
20
- key?: string;
21
- /** Storage type */
22
- storage?: 'localStorage' | 'sessionStorage' | 'indexedDB';
23
- /** Keys to persist (whitelist) */
24
- whitelist?: string[];
25
- /** Keys to ignore (blacklist) */
26
- blacklist?: string[];
27
- };
35
+ persistence?: StorePersistenceConfig;
28
36
  }
29
37
  /**
30
38
  * Root state shape (can be extended by applications)
@@ -1 +1 @@
1
- {"version":3,"file":"store-types.d.ts","sourceRoot":"","sources":["../../../src/api/types/store-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,GAAG,CAAC;IAErB,iCAAiC;IACjC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,gCAAgC;IAChC,WAAW,CAAC,EAAE;QACZ,+BAA+B;QAC/B,OAAO,EAAE,OAAO,CAAC;QACjB,yBAAyB;QACzB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,mBAAmB;QACnB,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,WAAW,CAAC;QAC1D,kCAAkC;QAClC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,iCAAiC;QACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,MAAM,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"store-types.d.ts","sourceRoot":"","sources":["../../../src/api/types/store-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,OAAO,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,WAAW,CAAC;IAC1D,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,GAAG,CAAC;IAErB,iCAAiC;IACjC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,gCAAgC;IAChC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,MAAM,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC"}
@@ -8,7 +8,7 @@
8
8
  * 3. Default config
9
9
  */
10
10
  import type { FileSystemNode, DirectoryNode } from '@hamak/shared-utils';
11
- import { type AutosaveConfig, type AutosaveExtensionState } from '../../api';
11
+ import { type AutosaveConfig, type AutosaveExtensionState } from '../../api/index.js';
12
12
  /**
13
13
  * Get autosave extension state from a node
14
14
  */
@@ -7,7 +7,7 @@
7
7
  * 2. Parent folder config (recursive, respects inherit flag)
8
8
  * 3. Default config
9
9
  */
10
- import { AUTOSAVE_EXTENSION_KEY, DEFAULT_AUTOSAVE_CONFIG, } from '../../api';
10
+ import { AUTOSAVE_EXTENSION_KEY, DEFAULT_AUTOSAVE_CONFIG, } from '../../api/index.js';
11
11
  /**
12
12
  * Get autosave extension state from a node
13
13
  */
@@ -8,8 +8,8 @@
8
8
  * 4. Handles retries on failure
9
9
  */
10
10
  import type { Middleware } from 'redux';
11
- import type { IAutosaveProviderRegistry, AutosaveResult } from '../../spi';
12
- import { type AutosaveConfig } from '../../api';
11
+ import type { IAutosaveProviderRegistry, AutosaveResult } from '../../spi/index.js';
12
+ import { type AutosaveConfig } from '../../api/index.js';
13
13
  /**
14
14
  * Autosave middleware configuration
15
15
  */
@@ -7,8 +7,8 @@
7
7
  * 3. Delegates save operations to registered providers
8
8
  * 4. Handles retries on failure
9
9
  */
10
- import { AutosaveActionTypes, autosaveActions, DEFAULT_AUTOSAVE_CONFIG, } from '../../api';
11
- import { resolveAutosaveConfig, getNodeAtPath, pathToKey, } from './autosave-config-resolver';
10
+ import { AutosaveActionTypes, autosaveActions, DEFAULT_AUTOSAVE_CONFIG, } from '../../api/index.js';
11
+ import { resolveAutosaveConfig, getNodeAtPath, pathToKey, } from './autosave-config-resolver.js';
12
12
  /**
13
13
  * Content change action types to monitor
14
14
  */
@@ -2,7 +2,7 @@
2
2
  * Autosave Provider Registry Implementation
3
3
  */
4
4
  import type { FileSystemNode } from '@hamak/shared-utils';
5
- import type { IAutosaveProvider, IAutosaveProviderRegistry } from '../../spi';
5
+ import type { IAutosaveProvider, IAutosaveProviderRegistry } from '../../spi/index.js';
6
6
  export declare class AutosaveProviderRegistry implements IAutosaveProviderRegistry {
7
7
  private providers;
8
8
  register(provider: IAutosaveProvider): void;
@@ -6,7 +6,7 @@
6
6
  * state so components can display autosave status.
7
7
  */
8
8
  import type { Middleware, AnyAction } from 'redux';
9
- import { type AutosaveExtensionState } from '../../api';
9
+ import { type AutosaveExtensionState } from '../../api/index.js';
10
10
  /**
11
11
  * Autosave sync middleware configuration
12
12
  */
@@ -5,7 +5,7 @@
5
5
  * This middleware runs after the main autosave middleware and updates the
6
6
  * state so components can display autosave status.
7
7
  */
8
- import { AutosaveActionTypes, autosaveActions, } from '../../api';
8
+ import { AutosaveActionTypes, autosaveActions, } from '../../api/index.js';
9
9
  /**
10
10
  * Create autosave sync middleware
11
11
  */
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Autosave Implementation
3
3
  */
4
- export * from './autosave-registry';
5
- export * from './autosave-config-resolver';
6
- export * from './autosave-middleware';
7
- export * from './autosave-sync-middleware';
4
+ export * from './autosave-registry.js';
5
+ export * from './autosave-config-resolver.js';
6
+ export * from './autosave-middleware.js';
7
+ export * from './autosave-sync-middleware.js';
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Autosave Implementation
3
3
  */
4
- export * from './autosave-registry';
5
- export * from './autosave-config-resolver';
6
- export * from './autosave-middleware';
7
- export * from './autosave-sync-middleware';
4
+ export * from './autosave-registry.js';
5
+ export * from './autosave-config-resolver.js';
6
+ export * from './autosave-middleware.js';
7
+ export * from './autosave-sync-middleware.js';
@@ -1,4 +1,4 @@
1
- export * from './store-manager';
2
- export * from './middleware-registry';
3
- export * from './reducer-registry';
1
+ export * from './store-manager.js';
2
+ export * from './middleware-registry.js';
3
+ export * from './reducer-registry.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './store-manager';
2
- export * from './middleware-registry';
3
- export * from './reducer-registry';
1
+ export * from './store-manager.js';
2
+ export * from './middleware-registry.js';
3
+ export * from './reducer-registry.js';
@@ -2,7 +2,7 @@
2
2
  * Middleware Registry Implementation
3
3
  */
4
4
  import type { Middleware } from 'redux';
5
- import type { IMiddlewareRegistry, MiddlewareRegistration } from '../../api';
5
+ import type { IMiddlewareRegistry, MiddlewareRegistration } from '../../api/index.js';
6
6
  export declare class MiddlewareRegistry implements IMiddlewareRegistry {
7
7
  private registrations;
8
8
  private locked;
@@ -2,7 +2,7 @@
2
2
  * Reducer Registry Implementation
3
3
  */
4
4
  import { type Reducer } from 'redux';
5
- import type { IReducerRegistry, ReducerMap, ReducerRegistration } from '../../api';
5
+ import type { IReducerRegistry, ReducerMap, ReducerRegistration } from '../../api/index.js';
6
6
  export declare class ReducerRegistry implements IReducerRegistry {
7
7
  private reducers;
8
8
  private onReducerChange?;
@@ -2,22 +2,34 @@
2
2
  * Store Manager Implementation
3
3
  */
4
4
  import { type Store, type Reducer } from '@reduxjs/toolkit';
5
- import type { IStoreManager, StoreConfig, RootState, AppAction } from '../../api';
6
- import { MiddlewareRegistry } from './middleware-registry';
7
- import { ReducerRegistry } from './reducer-registry';
5
+ import type { IStoreManager, StoreConfig, RootState, AppAction } from '../../api/index.js';
6
+ import type { IPersistenceProvider } from '../../spi/index.js';
7
+ import { MiddlewareRegistry } from './middleware-registry.js';
8
+ import { ReducerRegistry } from './reducer-registry.js';
9
+ /**
10
+ * Internal store config. Extends the public {@link StoreConfig} with the
11
+ * resolved persistence provider, which the plugin factory injects after
12
+ * resolving it via DI (see amah/app-framework#30). Kept out of the public
13
+ * type so consumers configure persistence declaratively, not by passing
14
+ * provider instances.
15
+ */
16
+ export interface StoreManagerConfig extends StoreConfig {
17
+ persistenceProvider?: IPersistenceProvider;
18
+ }
8
19
  export declare class StoreManager implements IStoreManager {
9
20
  private store;
10
21
  private middlewareRegistry;
11
22
  private reducerRegistry;
12
23
  private initialized;
13
24
  private fileSystemAdapter;
25
+ private persistenceUnsubscribe;
14
26
  constructor();
15
27
  getMiddlewareRegistry(): MiddlewareRegistry;
16
28
  getReducerRegistry(): ReducerRegistry;
17
29
  setFileSystemAdapter(adapter: any): void;
18
30
  getFileSystemAdapter(): any;
19
31
  isInitialized(): boolean;
20
- initialize(config?: StoreConfig): Store<RootState, AppAction>;
32
+ initialize(config?: StoreManagerConfig): Store<RootState, AppAction>;
21
33
  getStore(): Store<RootState, AppAction>;
22
34
  dispatch<A extends AppAction>(action: A): A;
23
35
  getState<S = RootState>(): S;
@@ -1 +1 @@
1
- {"version":3,"file":"store-manager.d.ts","sourceRoot":"","sources":["../../../src/impl/core/store-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAoB;;IAY7C,qBAAqB;IAIrB,kBAAkB;IAIlB,oBAAoB,CAAC,OAAO,EAAE,GAAG;IAIjC,oBAAoB;IAIpB,aAAa,IAAI,OAAO;IAIxB,UAAU,CAAC,MAAM,GAAE,WAAgB,GAAG,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;IAsDjE,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;IAOvC,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAI3C,QAAQ,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC;IAI5B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAI3C,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI;IAIhE,OAAO,IAAI,IAAI;CAKhB"}
1
+ {"version":3,"file":"store-manager.d.ts","sourceRoot":"","sources":["../../../src/impl/core/store-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;CAC5C;AAED,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,sBAAsB,CAA6B;;IAY3D,qBAAqB;IAIrB,kBAAkB;IAIlB,oBAAoB,CAAC,OAAO,EAAE,GAAG;IAIjC,oBAAoB;IAIpB,aAAa,IAAI,OAAO;IAIxB,UAAU,CAAC,MAAM,GAAE,kBAAuB,GAAG,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;IAiExE,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;IAOvC,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAI3C,QAAQ,CAAC,CAAC,GAAG,SAAS,KAAK,CAAC;IAI5B,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAI3C,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI;IAIhE,OAAO,IAAI,IAAI;CAShB"}
@@ -2,8 +2,9 @@
2
2
  * Store Manager Implementation
3
3
  */
4
4
  import { configureStore } from '@reduxjs/toolkit';
5
- import { MiddlewareRegistry } from './middleware-registry';
6
- import { ReducerRegistry } from './reducer-registry';
5
+ import { attachPersistenceSave } from '../persistence/index.js';
6
+ import { MiddlewareRegistry } from './middleware-registry.js';
7
+ import { ReducerRegistry } from './reducer-registry.js';
7
8
  export class StoreManager {
8
9
  constructor() {
9
10
  Object.defineProperty(this, "store", {
@@ -36,6 +37,12 @@ export class StoreManager {
36
37
  writable: true,
37
38
  value: null
38
39
  });
40
+ Object.defineProperty(this, "persistenceUnsubscribe", {
41
+ enumerable: true,
42
+ configurable: true,
43
+ writable: true,
44
+ value: null
45
+ });
39
46
  this.middlewareRegistry = new MiddlewareRegistry();
40
47
  this.reducerRegistry = new ReducerRegistry((rootReducer) => {
41
48
  // Hot replacement callback
@@ -92,6 +99,12 @@ export class StoreManager {
92
99
  } : false,
93
100
  });
94
101
  this.initialized = true;
102
+ // Persist the whitelisted slice on change when persistence is enabled and a
103
+ // provider was injected (rehydration is handled upstream by the plugin via
104
+ // preloadedState, since load() is async). See amah/app-framework#30.
105
+ if (config.persistence?.enabled && config.persistenceProvider) {
106
+ this.persistenceUnsubscribe = attachPersistenceSave(this.store, config.persistenceProvider, config.persistence);
107
+ }
95
108
  console.log('[StoreManager] Store initialized with:', {
96
109
  reducers: this.reducerRegistry.getAllRegistrations().map(r => r.key),
97
110
  middleware: this.middlewareRegistry.getAllRegistrations().map(m => ({
@@ -122,6 +135,10 @@ export class StoreManager {
122
135
  this.getStore().replaceReducer(nextReducer);
123
136
  }
124
137
  destroy() {
138
+ if (this.persistenceUnsubscribe) {
139
+ this.persistenceUnsubscribe();
140
+ this.persistenceUnsubscribe = null;
141
+ }
125
142
  this.store = null;
126
143
  this.initialized = false;
127
144
  console.log('[StoreManager] Store destroyed');
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Store extensions collector
3
3
  */
4
- import type { IMiddlewareRegistry, IReducerRegistry, StoreExtensionsRegistry, StorePluginExtensions } from '../../api';
4
+ import type { IMiddlewareRegistry, IReducerRegistry, StoreExtensionsRegistry, StorePluginExtensions } from '../../api/index.js';
5
5
  interface StoreExtensionsEntry {
6
6
  source: string;
7
7
  extensions: StorePluginExtensions;
@@ -1,6 +1,6 @@
1
- import { FileNode, FileSystemNode, FileSystemState, FileContentSchema } from '../../../api';
2
- import { StructureNodeCommand } from './structure-commands';
3
- import { DataUpdater } from '../utils/data-updater';
1
+ import { FileNode, FileSystemNode, FileSystemState, FileContentSchema } from '../../../api/index.js';
2
+ import { StructureNodeCommand } from './structure-commands.js';
3
+ import { DataUpdater } from '../utils/data-updater.js';
4
4
  /**
5
5
  * Base interface for filesystem commands
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"fs-commands.d.ts","sourceRoot":"","sources":["../../../../src/impl/fs/commands/fs-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs-commands.d.ts","sourceRoot":"","sources":["../../../../src/impl/fs/commands/fs-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,cAAc,EACd,eAAe,EACf,iBAAiB,EAGlB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,qBAAqB,GAAG,kBAAkB,GAAG,qBAAqB,CAAA;IAC3G,IAAI,EAAG,MAAM,GAAG,MAAM,EAAE,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAG,OAAO,CAAA;IACd,OAAO,CAAC,EAAG,OAAO,CAAA;IAClB,eAAe,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,aAAa;IAClD,IAAI,EAAG,QAAQ,CAAA;IACf,SAAS,CAAC,EAAG,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,EAAG,UAAU,CAAA;IACjB,OAAO,EAAG,GAAG,CAAA;IACb,MAAM,EAAG,iBAAiB,CAAA;IAC1B,QAAQ,CAAC,EAAG,OAAO,CAAA;IACnB,gBAAgB,CAAC,EAAG,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,IAAI,EAAG,qBAAqB,CAAA;IAC5B,cAAc,EAAG,oBAAoB,CAAA;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,IAAI,EAAG,kBAAkB,CAAA;IACzB,OAAO,EAAG,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC7D,IAAI,EAAG,qBAAqB,CAAA;IAC5B,GAAG,EAAG,MAAM,CAAA;IACZ,KAAK,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,aAAa,GACb,cAAc,GACd,wBAAwB,GACxB,qBAAqB,GACrB,wBAAwB,CAAA;AAG5B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAG,MAAM,GAAG,MAAM,EAAE,GAAI,cAAc,GAAG,SAAS,CAe/G;AA4BD;;GAEG;AACH,qBAAa,wBAAwB;IACnC,QAAQ,CAAC,qBAAqB,4BAAkC;IAEhE,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,GAAG,eAAe;IAW5E,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,wBAAwB;IAmChC,OAAO,CAAC,wBAAwB;IA0BhC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAG,CAAC,GAAE,CAAC;IAQnC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,EAAG,CAAC,GAAE,CAAC,GAAG,SAAS;CAOjD;AAiBD;;GAEG;AACH,qBAAa,yBAAyB;IACpC,QAAQ,CAAC,OAAO,cAAoB;IAEpC,OAAO,CAAC,IAAI,EAAG,QAAQ,EAAE,OAAO,EAAE,oBAAoB;IAoBtD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACI,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;CAKxD"}