@miurajs/miura-data-flow 0.0.2 → 0.1.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.
- package/README.md +15 -15
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/src/global-state.d.ts +79 -0
- package/dist/src/global-state.d.ts.map +1 -0
- package/dist/src/global-state.js +111 -0
- package/dist/src/global-state.js.map +1 -0
- package/dist/src/middleware.d.ts +38 -0
- package/dist/src/middleware.d.ts.map +1 -0
- package/dist/src/middleware.js +143 -0
- package/dist/src/middleware.js.map +1 -0
- package/{src/miura-data-flow.ts → dist/src/miura-data-flow.d.ts} +38 -67
- package/dist/src/miura-data-flow.d.ts.map +1 -0
- package/dist/src/miura-data-flow.js +96 -0
- package/dist/src/miura-data-flow.js.map +1 -0
- package/dist/src/providers/firebase-provider.d.ts +8 -0
- package/dist/src/providers/firebase-provider.d.ts.map +1 -0
- package/dist/src/providers/firebase-provider.js +27 -0
- package/dist/src/providers/firebase-provider.js.map +1 -0
- package/dist/src/providers/graphql-provider.d.ts +9 -0
- package/dist/src/providers/graphql-provider.d.ts.map +1 -0
- package/dist/src/providers/graphql-provider.js +19 -0
- package/dist/src/providers/graphql-provider.js.map +1 -0
- package/dist/src/providers/grpc-web-provider.d.ts +8 -0
- package/dist/src/providers/grpc-web-provider.d.ts.map +1 -0
- package/dist/src/providers/grpc-web-provider.js +24 -0
- package/dist/src/providers/grpc-web-provider.js.map +1 -0
- package/{src/providers/index.ts → dist/src/providers/index.d.ts} +1 -5
- package/dist/src/providers/index.d.ts.map +1 -0
- package/dist/src/providers/index.js +11 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/providers/indexed-db-provider.d.ts +9 -0
- package/dist/src/providers/indexed-db-provider.d.ts.map +1 -0
- package/dist/src/providers/indexed-db-provider.js +35 -0
- package/dist/src/providers/indexed-db-provider.js.map +1 -0
- package/dist/src/providers/local-storage-provider.d.ts +7 -0
- package/dist/src/providers/local-storage-provider.d.ts.map +1 -0
- package/dist/src/providers/local-storage-provider.js +29 -0
- package/dist/src/providers/local-storage-provider.js.map +1 -0
- package/dist/src/providers/provider-manager.d.ts +4 -0
- package/dist/src/providers/provider-manager.d.ts.map +1 -0
- package/dist/src/providers/provider-manager.js +15 -0
- package/dist/src/providers/provider-manager.js.map +1 -0
- package/dist/src/providers/provider.d.ts +12 -0
- package/dist/src/providers/provider.d.ts.map +1 -0
- package/dist/src/providers/provider.js +2 -0
- package/dist/src/providers/provider.js.map +1 -0
- package/dist/src/providers/rest-provider.d.ts +86 -0
- package/dist/src/providers/rest-provider.d.ts.map +1 -0
- package/dist/src/providers/rest-provider.js +210 -0
- package/dist/src/providers/rest-provider.js.map +1 -0
- package/dist/src/providers/s3-provider.d.ts +9 -0
- package/dist/src/providers/s3-provider.d.ts.map +1 -0
- package/dist/src/providers/s3-provider.js +31 -0
- package/dist/src/providers/s3-provider.js.map +1 -0
- package/dist/src/providers/supabase-provider.d.ts +9 -0
- package/dist/src/providers/supabase-provider.d.ts.map +1 -0
- package/dist/src/providers/supabase-provider.js +33 -0
- package/dist/src/providers/supabase-provider.js.map +1 -0
- package/dist/src/providers/websockets-provider.d.ts +9 -0
- package/dist/src/providers/websockets-provider.d.ts.map +1 -0
- package/dist/src/providers/websockets-provider.js +43 -0
- package/dist/src/providers/websockets-provider.js.map +1 -0
- package/dist/src/store.d.ts +94 -0
- package/dist/src/store.d.ts.map +1 -0
- package/dist/src/store.js +169 -0
- package/dist/src/store.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +34 -7
- package/index.ts +0 -1
- package/src/global-state.ts +0 -158
- package/src/middleware.ts +0 -162
- package/src/providers/indexed-db-provider.ts +0 -48
- package/src/providers/local-storage-provider.ts +0 -36
- package/src/providers/provider-manager.ts +0 -21
- package/src/providers/provider.ts +0 -23
- package/src/providers/rest-provider.ts +0 -351
- package/src/providers/websockets-provider.ts +0 -54
- package/src/store.ts +0 -237
- package/stories/data-flow-demo.stories.ts +0 -640
- package/tsconfig.json +0 -17
|
@@ -1,38 +1,14 @@
|
|
|
1
|
-
// miuraDataFlow main entry point
|
|
2
|
-
|
|
3
|
-
// Core exports
|
|
4
1
|
export { Store, type StoreState, type StoreActions, type StoreMiddleware } from './store';
|
|
5
2
|
export { GlobalStateManager, globalState, type GlobalState } from './global-state';
|
|
6
|
-
|
|
7
|
-
// Middleware exports
|
|
8
|
-
export {
|
|
9
|
-
createLoggerMiddleware,
|
|
10
|
-
createPersistenceMiddleware,
|
|
11
|
-
loadPersistedState,
|
|
12
|
-
createApiMiddleware,
|
|
13
|
-
createCacheMiddleware,
|
|
14
|
-
createDevToolsMiddleware
|
|
15
|
-
} from './middleware';
|
|
16
|
-
|
|
17
|
-
// Provider exports
|
|
3
|
+
export { createLoggerMiddleware, createPersistenceMiddleware, loadPersistedState, createApiMiddleware, createCacheMiddleware, createDevToolsMiddleware } from './middleware';
|
|
18
4
|
export * from './providers';
|
|
19
|
-
|
|
20
|
-
// Import for default export
|
|
21
5
|
import { Store } from './store';
|
|
22
|
-
import { GlobalStateManager
|
|
23
|
-
import {
|
|
24
|
-
createLoggerMiddleware,
|
|
25
|
-
createPersistenceMiddleware,
|
|
26
|
-
loadPersistedState,
|
|
27
|
-
createApiMiddleware,
|
|
28
|
-
createCacheMiddleware,
|
|
29
|
-
createDevToolsMiddleware
|
|
30
|
-
} from './middleware';
|
|
6
|
+
import { GlobalStateManager } from './global-state';
|
|
7
|
+
import { createLoggerMiddleware, createPersistenceMiddleware, loadPersistedState, createApiMiddleware, createCacheMiddleware, createDevToolsMiddleware } from './middleware';
|
|
31
8
|
import * as providers from './providers';
|
|
32
|
-
|
|
33
9
|
/**
|
|
34
10
|
* miura Data Flow - Modern State Management
|
|
35
|
-
*
|
|
11
|
+
*
|
|
36
12
|
* Features:
|
|
37
13
|
* - Reactive state management with subscriptions
|
|
38
14
|
* - Middleware system for logging, persistence, API calls
|
|
@@ -41,74 +17,69 @@ import * as providers from './providers';
|
|
|
41
17
|
* - Redux DevTools support
|
|
42
18
|
* - TypeScript support
|
|
43
19
|
* - Extensible provider system for connecting to any data source
|
|
44
|
-
*
|
|
20
|
+
*
|
|
45
21
|
* Usage:
|
|
46
|
-
*
|
|
22
|
+
*
|
|
47
23
|
* // Create a store
|
|
48
24
|
* const store = new Store({ count: 0, user: null });
|
|
49
|
-
*
|
|
25
|
+
*
|
|
50
26
|
* // Define actions
|
|
51
27
|
* store.defineActions({
|
|
52
28
|
* increment: (state) => ({ count: state.count + 1 }),
|
|
53
29
|
* setUser: (state, user) => ({ user })
|
|
54
30
|
* });
|
|
55
|
-
*
|
|
31
|
+
*
|
|
56
32
|
* // Add middleware
|
|
57
33
|
* store.use(createLoggerMiddleware());
|
|
58
34
|
* store.use(createPersistenceMiddleware(['user']));
|
|
59
|
-
*
|
|
35
|
+
*
|
|
60
36
|
* // Subscribe to changes
|
|
61
37
|
* const unsubscribe = store.subscribe((state, prevState) => {
|
|
62
38
|
* console.log('State changed:', state);
|
|
63
39
|
* });
|
|
64
|
-
*
|
|
40
|
+
*
|
|
65
41
|
* // Dispatch actions
|
|
66
42
|
* await store.dispatch('increment');
|
|
67
43
|
* await store.dispatch('setUser', { id: '1', name: 'John' });
|
|
68
|
-
*
|
|
44
|
+
*
|
|
69
45
|
* // Using Data Providers
|
|
70
46
|
* // 1. Register a provider factory (e.g., in your app's entry point)
|
|
71
47
|
* providers.registerProvider('restApi', new providers.RestProviderFactory());
|
|
72
|
-
*
|
|
48
|
+
*
|
|
73
49
|
* // 2. Create an instance of the provider
|
|
74
50
|
* const apiProvider = providers.createProvider('restApi', { baseUrl: 'https://my-api.com' });
|
|
75
|
-
*
|
|
51
|
+
*
|
|
76
52
|
* // 3. Use the provider, for example in custom middleware
|
|
77
53
|
* // const user = await apiProvider.get('123', { endpoint: 'users' });
|
|
78
|
-
*
|
|
54
|
+
*
|
|
79
55
|
* // Global state
|
|
80
56
|
* globalState.set('theme', 'dark');
|
|
81
57
|
* globalState.subscribeTo('my-component', 'theme', (theme) => {
|
|
82
58
|
* console.log('Theme changed:', theme);
|
|
83
59
|
* });
|
|
84
60
|
*/
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
IndexedDBProviderFactory: providers.IndexedDBProviderFactory,
|
|
108
|
-
WebSocketProviderFactory: providers.WebSocketProviderFactory,
|
|
109
|
-
FirebaseProviderFactory: providers.FirebaseProviderFactory,
|
|
110
|
-
SupabaseProviderFactory: providers.SupabaseProviderFactory,
|
|
111
|
-
GrpcWebProviderFactory: providers.GrpcWebProviderFactory,
|
|
112
|
-
}
|
|
113
|
-
}
|
|
61
|
+
declare const _default: {
|
|
62
|
+
Store: typeof Store;
|
|
63
|
+
GlobalStateManager: typeof GlobalStateManager;
|
|
64
|
+
globalState: GlobalStateManager;
|
|
65
|
+
middleware: {
|
|
66
|
+
createLoggerMiddleware: typeof createLoggerMiddleware;
|
|
67
|
+
createPersistenceMiddleware: typeof createPersistenceMiddleware;
|
|
68
|
+
loadPersistedState: typeof loadPersistedState;
|
|
69
|
+
createApiMiddleware: typeof createApiMiddleware;
|
|
70
|
+
createCacheMiddleware: typeof createCacheMiddleware;
|
|
71
|
+
createDevToolsMiddleware: typeof createDevToolsMiddleware;
|
|
72
|
+
};
|
|
73
|
+
providers: {
|
|
74
|
+
registerProvider: (name: string, factory: providers.ProviderFactory) => void;
|
|
75
|
+
createProvider: <T>(name: string, options: any) => providers.DataProvider<T> | undefined;
|
|
76
|
+
factories: {
|
|
77
|
+
RestProviderFactory: typeof providers.RestProviderFactory;
|
|
78
|
+
LocalStorageProviderFactory: typeof providers.LocalStorageProviderFactory;
|
|
79
|
+
IndexedDBProviderFactory: typeof providers.IndexedDBProviderFactory;
|
|
80
|
+
WebSocketProviderFactory: typeof providers.WebSocketProviderFactory;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
114
83
|
};
|
|
84
|
+
export default _default;
|
|
85
|
+
//# sourceMappingURL=miura-data-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miura-data-flow.d.ts","sourceRoot":"","sources":["../../src/miura-data-flow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGnF,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAGtB,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAe,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;;;;;;;;;;;;;;;;;;;;;;;;AAGH,wBA4BE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// miuraDataFlow main entry point
|
|
2
|
+
// Core exports
|
|
3
|
+
export { Store } from './store';
|
|
4
|
+
export { GlobalStateManager, globalState } from './global-state';
|
|
5
|
+
// Middleware exports
|
|
6
|
+
export { createLoggerMiddleware, createPersistenceMiddleware, loadPersistedState, createApiMiddleware, createCacheMiddleware, createDevToolsMiddleware } from './middleware';
|
|
7
|
+
// Provider exports
|
|
8
|
+
export * from './providers';
|
|
9
|
+
// Import for default export
|
|
10
|
+
import { Store } from './store';
|
|
11
|
+
import { GlobalStateManager, globalState } from './global-state';
|
|
12
|
+
import { createLoggerMiddleware, createPersistenceMiddleware, loadPersistedState, createApiMiddleware, createCacheMiddleware, createDevToolsMiddleware } from './middleware';
|
|
13
|
+
import * as providers from './providers';
|
|
14
|
+
/**
|
|
15
|
+
* miura Data Flow - Modern State Management
|
|
16
|
+
*
|
|
17
|
+
* Features:
|
|
18
|
+
* - Reactive state management with subscriptions
|
|
19
|
+
* - Middleware system for logging, persistence, API calls
|
|
20
|
+
* - Global state management
|
|
21
|
+
* - Built-in caching and API integration
|
|
22
|
+
* - Redux DevTools support
|
|
23
|
+
* - TypeScript support
|
|
24
|
+
* - Extensible provider system for connecting to any data source
|
|
25
|
+
*
|
|
26
|
+
* Usage:
|
|
27
|
+
*
|
|
28
|
+
* // Create a store
|
|
29
|
+
* const store = new Store({ count: 0, user: null });
|
|
30
|
+
*
|
|
31
|
+
* // Define actions
|
|
32
|
+
* store.defineActions({
|
|
33
|
+
* increment: (state) => ({ count: state.count + 1 }),
|
|
34
|
+
* setUser: (state, user) => ({ user })
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Add middleware
|
|
38
|
+
* store.use(createLoggerMiddleware());
|
|
39
|
+
* store.use(createPersistenceMiddleware(['user']));
|
|
40
|
+
*
|
|
41
|
+
* // Subscribe to changes
|
|
42
|
+
* const unsubscribe = store.subscribe((state, prevState) => {
|
|
43
|
+
* console.log('State changed:', state);
|
|
44
|
+
* });
|
|
45
|
+
*
|
|
46
|
+
* // Dispatch actions
|
|
47
|
+
* await store.dispatch('increment');
|
|
48
|
+
* await store.dispatch('setUser', { id: '1', name: 'John' });
|
|
49
|
+
*
|
|
50
|
+
* // Using Data Providers
|
|
51
|
+
* // 1. Register a provider factory (e.g., in your app's entry point)
|
|
52
|
+
* providers.registerProvider('restApi', new providers.RestProviderFactory());
|
|
53
|
+
*
|
|
54
|
+
* // 2. Create an instance of the provider
|
|
55
|
+
* const apiProvider = providers.createProvider('restApi', { baseUrl: 'https://my-api.com' });
|
|
56
|
+
*
|
|
57
|
+
* // 3. Use the provider, for example in custom middleware
|
|
58
|
+
* // const user = await apiProvider.get('123', { endpoint: 'users' });
|
|
59
|
+
*
|
|
60
|
+
* // Global state
|
|
61
|
+
* globalState.set('theme', 'dark');
|
|
62
|
+
* globalState.subscribeTo('my-component', 'theme', (theme) => {
|
|
63
|
+
* console.log('Theme changed:', theme);
|
|
64
|
+
* });
|
|
65
|
+
*/
|
|
66
|
+
// Default export for convenience
|
|
67
|
+
export default {
|
|
68
|
+
Store,
|
|
69
|
+
GlobalStateManager,
|
|
70
|
+
globalState,
|
|
71
|
+
middleware: {
|
|
72
|
+
createLoggerMiddleware,
|
|
73
|
+
createPersistenceMiddleware,
|
|
74
|
+
loadPersistedState,
|
|
75
|
+
createApiMiddleware,
|
|
76
|
+
createCacheMiddleware,
|
|
77
|
+
createDevToolsMiddleware
|
|
78
|
+
},
|
|
79
|
+
providers: {
|
|
80
|
+
registerProvider: providers.registerProvider,
|
|
81
|
+
createProvider: providers.createProvider,
|
|
82
|
+
factories: {
|
|
83
|
+
RestProviderFactory: providers.RestProviderFactory,
|
|
84
|
+
LocalStorageProviderFactory: providers.LocalStorageProviderFactory,
|
|
85
|
+
IndexedDBProviderFactory: providers.IndexedDBProviderFactory,
|
|
86
|
+
WebSocketProviderFactory: providers.WebSocketProviderFactory,
|
|
87
|
+
// Optional providers (require additional dependencies):
|
|
88
|
+
// GraphQLProviderFactory: providers.GraphQLProviderFactory, // requires graphql-request
|
|
89
|
+
// S3ProviderFactory: providers.S3ProviderFactory, // requires @aws-sdk/client-s3
|
|
90
|
+
// FirebaseProviderFactory: providers.FirebaseProviderFactory, // requires firebase
|
|
91
|
+
// SupabaseProviderFactory: providers.SupabaseProviderFactory, // requires @supabase/supabase-js
|
|
92
|
+
// GrpcWebProviderFactory: providers.GrpcWebProviderFactory, // requires grpc-web
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=miura-data-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miura-data-flow.js","sourceRoot":"","sources":["../../src/miura-data-flow.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,eAAe;AACf,OAAO,EAAE,KAAK,EAA4D,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AAEnF,qBAAqB;AACrB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAEtB,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAE5B,4BAA4B;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,iCAAiC;AACjC,eAAe;IACb,KAAK;IACL,kBAAkB;IAClB,WAAW;IACX,UAAU,EAAE;QACV,sBAAsB;QACtB,2BAA2B;QAC3B,kBAAkB;QAClB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;KACzB;IACD,SAAS,EAAE;QACT,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;QAC5C,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,SAAS,EAAE;YACT,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;YAClD,2BAA2B,EAAE,SAAS,CAAC,2BAA2B;YAClE,wBAAwB,EAAE,SAAS,CAAC,wBAAwB;YAC5D,wBAAwB,EAAE,SAAS,CAAC,wBAAwB;YAC5D,wDAAwD;YACxD,wFAAwF;YACxF,iFAAiF;YACjF,mFAAmF;YACnF,gGAAgG;YAChG,iFAAiF;SAClF;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DataProvider, ProviderFactory } from './provider';
|
|
2
|
+
export interface FirebaseProviderOptions {
|
|
3
|
+
firebaseConfig: object;
|
|
4
|
+
}
|
|
5
|
+
export declare class FirebaseProviderFactory implements ProviderFactory {
|
|
6
|
+
create<T>(options: FirebaseProviderOptions): DataProvider<T>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=firebase-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebase-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/firebase-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK3D,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB;AA2BD,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAAC,CAAC,CAAC;CAG7D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class FirebaseProvider {
|
|
2
|
+
// private firestore: any;
|
|
3
|
+
constructor(options) {
|
|
4
|
+
// const app = initializeApp(options.firebaseConfig);
|
|
5
|
+
// this.firestore = getFirestore(app);
|
|
6
|
+
console.log('FirebaseProvider initialized with config:', options.firebaseConfig);
|
|
7
|
+
}
|
|
8
|
+
async get(id, options) {
|
|
9
|
+
console.log(`[Firestore] Getting doc "${id}" from collection "${options.collection}"`);
|
|
10
|
+
// const docRef = doc(this.firestore, options.collection, id);
|
|
11
|
+
// const docSnap = await getDoc(docRef);
|
|
12
|
+
// if (!docSnap.exists()) throw new Error('Document not found');
|
|
13
|
+
// return docSnap.data() as T;
|
|
14
|
+
return Promise.resolve({});
|
|
15
|
+
}
|
|
16
|
+
async put(id, data, options) {
|
|
17
|
+
console.log(`[Firestore] Putting doc "${id}" in collection "${options.collection}"`);
|
|
18
|
+
// await setDoc(doc(this.firestore, options.collection, id), data);
|
|
19
|
+
return Promise.resolve(data);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class FirebaseProviderFactory {
|
|
23
|
+
create(options) {
|
|
24
|
+
return new FirebaseProvider(options);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=firebase-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebase-provider.js","sourceRoot":"","sources":["../../../src/providers/firebase-provider.ts"],"names":[],"mappings":"AASA,MAAM,gBAAgB;IACpB,0BAA0B;IAE1B,YAAY,OAAgC;QAC1C,qDAAqD;QACrD,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,OAA+B;QACnD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,sBAAsB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QACvF,8DAA8D;QAC9D,wCAAwC;QACxC,gEAAgE;QAChE,8BAA8B;QAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAO,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,IAAO,EAAE,OAA+B;QAC5D,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,oBAAoB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QACrF,mEAAmE;QACnE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IAClC,MAAM,CAAI,OAAgC;QACxC,OAAO,IAAI,gBAAgB,CAAI,OAAO,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DataProvider, ProviderFactory } from './provider';
|
|
2
|
+
export interface GraphQLProviderOptions {
|
|
3
|
+
endpoint: string;
|
|
4
|
+
headers?: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export declare class GraphQLProviderFactory implements ProviderFactory {
|
|
7
|
+
create<T>(options: GraphQLProviderOptions): DataProvider<T>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=graphql-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/graphql-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG3D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AA4BD,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAAC,CAAC,CAAC;CAG5D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { request } from 'graphql-request'; // Example dependency
|
|
2
|
+
class GraphQLProvider {
|
|
3
|
+
options;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.options = options;
|
|
6
|
+
}
|
|
7
|
+
async query(options) {
|
|
8
|
+
return request(this.options.endpoint, options.query, options.variables, this.options.headers);
|
|
9
|
+
}
|
|
10
|
+
async mutate(options) {
|
|
11
|
+
return request(this.options.endpoint, options.mutation, options.variables, this.options.headers);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class GraphQLProviderFactory {
|
|
15
|
+
create(options) {
|
|
16
|
+
return new GraphQLProvider(options);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=graphql-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-provider.js","sourceRoot":"","sources":["../../../src/providers/graphql-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC,CAAC,qBAAqB;AAOhE,MAAM,eAAe;IACX,OAAO,CAAyB;IAExC,YAAY,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAA2C;QACrD,OAAO,OAAO,CACZ,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,SAAS,EACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA8C;QACzD,OAAO,OAAO,CACZ,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,SAAS,EACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CACrB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACjC,MAAM,CAAI,OAA+B;QACvC,OAAO,IAAI,eAAe,CAAI,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DataProvider, ProviderFactory } from './provider';
|
|
2
|
+
export interface GrpcWebProviderOptions {
|
|
3
|
+
hostname: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class GrpcWebProviderFactory implements ProviderFactory {
|
|
6
|
+
create<T>(options: GrpcWebProviderOptions): DataProvider<T>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=grpc-web-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-web-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/grpc-web-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI3D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwBD,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,GAAG,YAAY,CAAC,CAAC,CAAC;CAG5D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// This is highly conceptual as gRPC is strongly-typed and code-generated
|
|
2
|
+
class GrpcWebProvider {
|
|
3
|
+
// private client: GrpcWebClientBase;
|
|
4
|
+
hostname;
|
|
5
|
+
constructor(options) {
|
|
6
|
+
// this.client = new GrpcWebClientBase(options);
|
|
7
|
+
this.hostname = options.hostname;
|
|
8
|
+
console.log('gRPC-Web Provider initialized for host:', options.hostname);
|
|
9
|
+
}
|
|
10
|
+
async query(options) {
|
|
11
|
+
console.log(`[gRPC-Web] Query on "${this.hostname}"`, options);
|
|
12
|
+
return Promise.resolve([]);
|
|
13
|
+
}
|
|
14
|
+
async mutate(options) {
|
|
15
|
+
console.log(`[gRPC-Web] Mutate on "${this.hostname}"`, options);
|
|
16
|
+
return Promise.resolve({});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class GrpcWebProviderFactory {
|
|
20
|
+
create(options) {
|
|
21
|
+
return new GrpcWebProvider(options);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=grpc-web-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-web-provider.js","sourceRoot":"","sources":["../../../src/providers/grpc-web-provider.ts"],"names":[],"mappings":"AAQA,yEAAyE;AACzE,MAAM,eAAe;IACnB,qCAAqC;IAC7B,QAAQ,CAAS;IAEzB,YAAY,OAA+B;QACzC,gDAAgD;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAY;QACtB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAY;QACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,QAAQ,GAAG,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAO,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACjC,MAAM,CAAI,OAA+B;QACvC,OAAO,IAAI,eAAe,CAAI,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
export * from './provider';
|
|
2
2
|
export * from './provider-manager';
|
|
3
|
-
export * from './graphql-provider';
|
|
4
|
-
export * from './s3-provider';
|
|
5
3
|
export * from './local-storage-provider';
|
|
6
4
|
export * from './rest-provider';
|
|
7
5
|
export * from './indexed-db-provider';
|
|
8
6
|
export * from './websockets-provider';
|
|
9
|
-
|
|
10
|
-
export * from './supabase-provider';
|
|
11
|
-
export * from './grpc-web-provider';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './provider';
|
|
2
|
+
export * from './provider-manager';
|
|
3
|
+
export * from './local-storage-provider';
|
|
4
|
+
export * from './rest-provider';
|
|
5
|
+
export * from './indexed-db-provider';
|
|
6
|
+
export * from './websockets-provider';
|
|
7
|
+
// Note: Optional providers (GraphQL, S3, Firebase, Supabase, gRPC-Web)
|
|
8
|
+
// are not exported here to avoid requiring their dependencies.
|
|
9
|
+
// They can be imported directly when needed:
|
|
10
|
+
// import { GraphQLProviderFactory } from '@miurajs/miura-data-flow/providers/graphql-provider';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAEtC,wEAAwE;AACxE,+DAA+D;AAC/D,6CAA6C;AAC7C,iGAAiG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DataProvider, ProviderFactory } from './provider';
|
|
2
|
+
export interface IndexedDBProviderOptions {
|
|
3
|
+
dbName: string;
|
|
4
|
+
storeName: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class IndexedDBProviderFactory implements ProviderFactory {
|
|
7
|
+
create<T>(options: IndexedDBProviderOptions): DataProvider<T>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=indexed-db-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexed-db-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/indexed-db-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI3D,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAoCD,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,wBAAwB,GAAG,YAAY,CAAC,CAAC,CAAC;CAG9D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
class IndexedDBProvider {
|
|
2
|
+
dbPromise; // Promise<IDBPDatabase>
|
|
3
|
+
constructor(options) {
|
|
4
|
+
// This is highly simplified
|
|
5
|
+
this.dbPromise = Promise.resolve(); // openDB(options.dbName, 1, { ... });
|
|
6
|
+
}
|
|
7
|
+
async get(id) {
|
|
8
|
+
console.log(`[IndexedDB] Getting item with id: ${id}`);
|
|
9
|
+
// const db = await this.dbPromise;
|
|
10
|
+
// const tx = db.transaction(this.storeName, 'readonly');
|
|
11
|
+
// const store = tx.objectStore(this.storeName);
|
|
12
|
+
// const result = await store.get(id);
|
|
13
|
+
// if (!result) throw new Error('Not found');
|
|
14
|
+
// return result;
|
|
15
|
+
return Promise.resolve({});
|
|
16
|
+
}
|
|
17
|
+
async put(id, data) {
|
|
18
|
+
console.log(`[IndexedDB] Putting item with id: ${id}`);
|
|
19
|
+
// const db = await this.dbPromise;
|
|
20
|
+
// const tx = db.transaction(this.storeName, 'readwrite');
|
|
21
|
+
// ...
|
|
22
|
+
return Promise.resolve(data);
|
|
23
|
+
}
|
|
24
|
+
async delete(id) {
|
|
25
|
+
console.log(`[IndexedDB] Deleting item with id: ${id}`);
|
|
26
|
+
// ...
|
|
27
|
+
return Promise.resolve();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class IndexedDBProviderFactory {
|
|
31
|
+
create(options) {
|
|
32
|
+
return new IndexedDBProvider(options);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=indexed-db-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexed-db-provider.js","sourceRoot":"","sources":["../../../src/providers/indexed-db-provider.ts"],"names":[],"mappings":"AASA,MAAM,iBAAiB;IACb,SAAS,CAAe,CAAC,wBAAwB;IAEzD,YAAY,OAAiC;QAC3C,4BAA4B;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,sCAAsC;IAC5E,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QACvD,mCAAmC;QACnC,yDAAyD;QACzD,gDAAgD;QAChD,sCAAsC;QACtC,6CAA6C;QAC7C,iBAAiB;QACjB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAO,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,IAAO;QAC3B,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QACvD,mCAAmC;QACnC,0DAA0D;QAC1D,MAAM;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,wBAAwB;IACnC,MAAM,CAAI,OAAiC;QACzC,OAAO,IAAI,iBAAiB,CAAI,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-provider.d.ts","sourceRoot":"","sources":["../../../src/providers/local-storage-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA+B3D,qBAAa,2BAA4B,YAAW,eAAe;IACjE,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,CAAC,CAAC,CAAC;CAGxD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
class LocalStorageProvider {
|
|
2
|
+
prefix;
|
|
3
|
+
constructor(options) {
|
|
4
|
+
this.prefix = options.prefix || 'miura';
|
|
5
|
+
}
|
|
6
|
+
getKey(id) {
|
|
7
|
+
return `${this.prefix}:${id}`;
|
|
8
|
+
}
|
|
9
|
+
async get(id) {
|
|
10
|
+
const item = localStorage.getItem(this.getKey(id));
|
|
11
|
+
if (item === null) {
|
|
12
|
+
throw new Error(`Item with id "${id}" not found in localStorage.`);
|
|
13
|
+
}
|
|
14
|
+
return JSON.parse(item);
|
|
15
|
+
}
|
|
16
|
+
async put(id, data) {
|
|
17
|
+
localStorage.setItem(this.getKey(id), JSON.stringify(data));
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
async delete(id) {
|
|
21
|
+
localStorage.removeItem(this.getKey(id));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class LocalStorageProviderFactory {
|
|
25
|
+
create(options) {
|
|
26
|
+
return new LocalStorageProvider(options);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=local-storage-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-storage-provider.js","sourceRoot":"","sources":["../../../src/providers/local-storage-provider.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB;IAChB,MAAM,CAAS;IAEvB,YAAY,OAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;IAC1C,CAAC;IAEO,MAAM,CAAC,EAAU;QACvB,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,8BAA8B,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,IAAO;QAC3B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IACtC,MAAM,CAAI,OAA2B;QACnC,OAAO,IAAI,oBAAoB,CAAI,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DataProvider, ProviderFactory } from './provider';
|
|
2
|
+
export declare const registerProvider: (name: string, factory: ProviderFactory) => void;
|
|
3
|
+
export declare const createProvider: <T>(name: string, options: any) => DataProvider<T> | undefined;
|
|
4
|
+
//# sourceMappingURL=provider-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../src/providers/provider-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI3D,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,SAAS,eAAe,SAKtE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,MAAM,MAAM,EACZ,SAAS,GAAG,KACX,YAAY,CAAC,CAAC,CAAC,GAAG,SAMpB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const providerFactories = new Map();
|
|
2
|
+
export const registerProvider = (name, factory) => {
|
|
3
|
+
if (providerFactories.has(name)) {
|
|
4
|
+
console.warn(`Provider with name "${name}" is already registered.`);
|
|
5
|
+
}
|
|
6
|
+
providerFactories.set(name, factory);
|
|
7
|
+
};
|
|
8
|
+
export const createProvider = (name, options) => {
|
|
9
|
+
const factory = providerFactories.get(name);
|
|
10
|
+
if (!factory) {
|
|
11
|
+
throw new Error(`No provider registered with name "${name}"`);
|
|
12
|
+
}
|
|
13
|
+
return factory.create(options);
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=provider-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../src/providers/provider-manager.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,OAAwB,EAAE,EAAE;IACzE,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,0BAA0B,CAAC,CAAC;IACtE,CAAC;IACD,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,IAAY,EACZ,OAAY,EACiB,EAAE;IAC/B,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,GAAG,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAI,OAAO,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface DataProvider<T> {
|
|
2
|
+
query?(options: any): Promise<T[]>;
|
|
3
|
+
mutate?(options: any): Promise<T>;
|
|
4
|
+
get?(id: string, options?: any): Promise<T>;
|
|
5
|
+
put?(id: string, data: T, options?: any): Promise<T>;
|
|
6
|
+
delete?(id: string, options?: any): Promise<void>;
|
|
7
|
+
subscribe?(options: any, callback: (data: T) => void): () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ProviderFactory {
|
|
10
|
+
create<T>(options: any): DataProvider<T>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/providers/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY,CAAC,CAAC;IAE7B,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAGnC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAGlC,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAG5C,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAGrD,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGlD,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/providers/provider.ts"],"names":[],"mappings":""}
|