@molecule/app-solid 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +115 -0
- package/README.md +2543 -0
- package/dist/context.d.ts +82 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +141 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/primitives/async-state.d.ts +46 -0
- package/dist/primitives/async-state.d.ts.map +1 -0
- package/dist/primitives/async-state.js +83 -0
- package/dist/primitives/async-state.js.map +1 -0
- package/dist/primitives/auth.d.ts +85 -0
- package/dist/primitives/auth.d.ts.map +1 -0
- package/dist/primitives/auth.js +147 -0
- package/dist/primitives/auth.js.map +1 -0
- package/dist/primitives/capacitor-app.d.ts +46 -0
- package/dist/primitives/capacitor-app.d.ts.map +1 -0
- package/dist/primitives/capacitor-app.js +57 -0
- package/dist/primitives/capacitor-app.js.map +1 -0
- package/dist/primitives/change-password.d.ts +36 -0
- package/dist/primitives/change-password.d.ts.map +1 -0
- package/dist/primitives/change-password.js +32 -0
- package/dist/primitives/change-password.js.map +1 -0
- package/dist/primitives/device.d.ts +48 -0
- package/dist/primitives/device.d.ts.map +1 -0
- package/dist/primitives/device.js +47 -0
- package/dist/primitives/device.js.map +1 -0
- package/dist/primitives/forms.d.ts +193 -0
- package/dist/primitives/forms.d.ts.map +1 -0
- package/dist/primitives/forms.js +309 -0
- package/dist/primitives/forms.js.map +1 -0
- package/dist/primitives/http.d.ts +176 -0
- package/dist/primitives/http.d.ts.map +1 -0
- package/dist/primitives/http.js +254 -0
- package/dist/primitives/http.js.map +1 -0
- package/dist/primitives/i18n.d.ts +146 -0
- package/dist/primitives/i18n.d.ts.map +1 -0
- package/dist/primitives/i18n.js +223 -0
- package/dist/primitives/i18n.js.map +1 -0
- package/dist/primitives/index.d.ts +27 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +27 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/logger.d.ts +143 -0
- package/dist/primitives/logger.d.ts.map +1 -0
- package/dist/primitives/logger.js +165 -0
- package/dist/primitives/logger.js.map +1 -0
- package/dist/primitives/login.d.ts +37 -0
- package/dist/primitives/login.d.ts.map +1 -0
- package/dist/primitives/login.js +32 -0
- package/dist/primitives/login.js.map +1 -0
- package/dist/primitives/oauth.d.ts +102 -0
- package/dist/primitives/oauth.d.ts.map +1 -0
- package/dist/primitives/oauth.js +232 -0
- package/dist/primitives/oauth.js.map +1 -0
- package/dist/primitives/password-reset.d.ts +46 -0
- package/dist/primitives/password-reset.d.ts.map +1 -0
- package/dist/primitives/password-reset.js +49 -0
- package/dist/primitives/password-reset.js.map +1 -0
- package/dist/primitives/platform.d.ts +48 -0
- package/dist/primitives/platform.d.ts.map +1 -0
- package/dist/primitives/platform.js +47 -0
- package/dist/primitives/platform.js.map +1 -0
- package/dist/primitives/promise.d.ts +46 -0
- package/dist/primitives/promise.d.ts.map +1 -0
- package/dist/primitives/promise.js +104 -0
- package/dist/primitives/promise.js.map +1 -0
- package/dist/primitives/push.d.ts +52 -0
- package/dist/primitives/push.d.ts.map +1 -0
- package/dist/primitives/push.js +72 -0
- package/dist/primitives/push.js.map +1 -0
- package/dist/primitives/router.d.ts +170 -0
- package/dist/primitives/router.d.ts.map +1 -0
- package/dist/primitives/router.js +251 -0
- package/dist/primitives/router.js.map +1 -0
- package/dist/primitives/signup.d.ts +37 -0
- package/dist/primitives/signup.d.ts.map +1 -0
- package/dist/primitives/signup.js +32 -0
- package/dist/primitives/signup.js.map +1 -0
- package/dist/primitives/state.d.ts +132 -0
- package/dist/primitives/state.d.ts.map +1 -0
- package/dist/primitives/state.js +167 -0
- package/dist/primitives/state.js.map +1 -0
- package/dist/primitives/storage.d.ts +132 -0
- package/dist/primitives/storage.d.ts.map +1 -0
- package/dist/primitives/storage.js +275 -0
- package/dist/primitives/storage.js.map +1 -0
- package/dist/primitives/theme.d.ts +106 -0
- package/dist/primitives/theme.d.ts.map +1 -0
- package/dist/primitives/theme.js +187 -0
- package/dist/primitives/theme.js.map +1 -0
- package/dist/primitives/version.d.ts +50 -0
- package/dist/primitives/version.d.ts.map +1 -0
- package/dist/primitives/version.js +62 -0
- package/dist/primitives/version.js.map +1 -0
- package/dist/provider.d.ts +36 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.jsx +71 -0
- package/dist/provider.jsx.map +1 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid.js primitives for molecule.dev framework bindings.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
export * from './async-state.js';
|
|
7
|
+
export * from './auth.js';
|
|
8
|
+
export * from './capacitor-app.js';
|
|
9
|
+
export * from './change-password.js';
|
|
10
|
+
export * from './device.js';
|
|
11
|
+
export * from './forms.js';
|
|
12
|
+
export * from './http.js';
|
|
13
|
+
export * from './i18n.js';
|
|
14
|
+
export * from './logger.js';
|
|
15
|
+
export * from './login.js';
|
|
16
|
+
export * from './oauth.js';
|
|
17
|
+
export * from './password-reset.js';
|
|
18
|
+
export * from './platform.js';
|
|
19
|
+
export * from './promise.js';
|
|
20
|
+
export * from './push.js';
|
|
21
|
+
export * from './router.js';
|
|
22
|
+
export * from './signup.js';
|
|
23
|
+
export * from './state.js';
|
|
24
|
+
export * from './storage.js';
|
|
25
|
+
export * from './theme.js';
|
|
26
|
+
export * from './version.js';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/primitives/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid.js primitives for logging.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Logger, LoggerConfig, LoggerProvider } from '@molecule/app-logger';
|
|
7
|
+
/**
|
|
8
|
+
* Get a logger instance.
|
|
9
|
+
*
|
|
10
|
+
* @param name - Logger name
|
|
11
|
+
* @returns Logger instance
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { getLogger } from '@molecule/app-solid'
|
|
16
|
+
* import { onMount, onCleanup } from 'solid-js'
|
|
17
|
+
*
|
|
18
|
+
* function MyComponent() {
|
|
19
|
+
* const logger = getLogger('MyComponent')
|
|
20
|
+
*
|
|
21
|
+
* onMount(() => {
|
|
22
|
+
* logger.info('Component mounted')
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* onCleanup(() => {
|
|
26
|
+
* logger.debug('Component unmounted')
|
|
27
|
+
* })
|
|
28
|
+
*
|
|
29
|
+
* const handleError = (error: Error) => {
|
|
30
|
+
* logger.error('Operation failed', error)
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* return <div>...</div>
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function getLogger(name?: string): Logger;
|
|
38
|
+
/**
|
|
39
|
+
* Create a logger with custom configuration.
|
|
40
|
+
*
|
|
41
|
+
* @param config - Logger configuration
|
|
42
|
+
* @returns Logger instance
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* const logger = createLogger({
|
|
47
|
+
* name: 'API',
|
|
48
|
+
* level: 'debug',
|
|
49
|
+
* context: { module: 'api' },
|
|
50
|
+
* })
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function createLogger(config: LoggerConfig): Logger;
|
|
54
|
+
/**
|
|
55
|
+
* Get the root logger.
|
|
56
|
+
*
|
|
57
|
+
* @returns Root logger instance
|
|
58
|
+
*/
|
|
59
|
+
export declare function getRootLogger(): Logger;
|
|
60
|
+
/**
|
|
61
|
+
* Create a child logger with additional context.
|
|
62
|
+
*
|
|
63
|
+
* @param name - Parent logger name
|
|
64
|
+
* @param context - Additional context
|
|
65
|
+
* @returns Child logger instance
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```tsx
|
|
69
|
+
* function UserProfile(props: { userId: string }) {
|
|
70
|
+
* const logger = getChildLogger('UserProfile', { userId: props.userId })
|
|
71
|
+
* // All logs will include userId in context
|
|
72
|
+
* logger.info('Profile loaded')
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function getChildLogger(name: string, context: Record<string, unknown>): Logger;
|
|
77
|
+
/**
|
|
78
|
+
* Create a component logger that includes component name in context.
|
|
79
|
+
*
|
|
80
|
+
* @param componentName - Name of the component
|
|
81
|
+
* @returns Logger configured for the component
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```tsx
|
|
85
|
+
* function Dashboard() {
|
|
86
|
+
* const logger = useComponentLogger('Dashboard')
|
|
87
|
+
*
|
|
88
|
+
* const handleRefresh = () => {
|
|
89
|
+
* logger.info('Dashboard refreshed')
|
|
90
|
+
* }
|
|
91
|
+
*
|
|
92
|
+
* return <button onClick={handleRefresh}>Refresh</button>
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function useComponentLogger(componentName: string): Logger;
|
|
97
|
+
/**
|
|
98
|
+
* Create logger helpers from context.
|
|
99
|
+
*
|
|
100
|
+
* @returns Logger helper functions
|
|
101
|
+
*/
|
|
102
|
+
/**
|
|
103
|
+
* Creates a logger helpers.
|
|
104
|
+
* @returns The created result.
|
|
105
|
+
*/
|
|
106
|
+
export declare function createLoggerHelpers(): {
|
|
107
|
+
getLogger: (name?: string) => Logger;
|
|
108
|
+
createLogger: (config: LoggerConfig) => Logger;
|
|
109
|
+
setLevel: (level: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent') => void;
|
|
110
|
+
getLevel: () => string;
|
|
111
|
+
enable: () => void;
|
|
112
|
+
disable: () => void;
|
|
113
|
+
isEnabled: () => boolean;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Create logger helpers from a specific provider.
|
|
117
|
+
*
|
|
118
|
+
* @param provider - Logger provider
|
|
119
|
+
* @returns Logger helper functions
|
|
120
|
+
*/
|
|
121
|
+
/**
|
|
122
|
+
* Creates a logger helpers from provider.
|
|
123
|
+
* @param provider - The provider implementation.
|
|
124
|
+
* @returns The created result.
|
|
125
|
+
*/
|
|
126
|
+
export declare function createLoggerHelpersFromProvider(provider: LoggerProvider): {
|
|
127
|
+
getLogger: (name?: string) => Logger;
|
|
128
|
+
createLogger: (config: LoggerConfig) => Logger;
|
|
129
|
+
setLevel: (level: 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent') => void;
|
|
130
|
+
getLevel: () => string;
|
|
131
|
+
enable: () => void;
|
|
132
|
+
disable: () => void;
|
|
133
|
+
isEnabled: () => boolean;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Create logger from a specific provider.
|
|
137
|
+
*
|
|
138
|
+
* @param provider - Logger provider
|
|
139
|
+
* @param name - Logger name
|
|
140
|
+
* @returns Logger instance
|
|
141
|
+
*/
|
|
142
|
+
export declare function createLoggerFromProvider(provider: LoggerProvider, name?: string): Logger;
|
|
143
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/primitives/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAGzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAGtC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAIrF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;GAIG;AAEH;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAA;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAA;IACnF,QAAQ,EAAE,MAAM,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,OAAO,CAAA;CACzB,CAaA;AAED;;;;;GAKG;AAEH;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,cAAc,GAAG;IACzE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAA;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAA;IACnF,QAAQ,EAAE,MAAM,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,OAAO,CAAA;CACzB,CAWA;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAExF"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid.js primitives for logging.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { getLoggerProvider } from '../context.js';
|
|
7
|
+
/**
|
|
8
|
+
* Get a logger instance.
|
|
9
|
+
*
|
|
10
|
+
* @param name - Logger name
|
|
11
|
+
* @returns Logger instance
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { getLogger } from '@molecule/app-solid'
|
|
16
|
+
* import { onMount, onCleanup } from 'solid-js'
|
|
17
|
+
*
|
|
18
|
+
* function MyComponent() {
|
|
19
|
+
* const logger = getLogger('MyComponent')
|
|
20
|
+
*
|
|
21
|
+
* onMount(() => {
|
|
22
|
+
* logger.info('Component mounted')
|
|
23
|
+
* })
|
|
24
|
+
*
|
|
25
|
+
* onCleanup(() => {
|
|
26
|
+
* logger.debug('Component unmounted')
|
|
27
|
+
* })
|
|
28
|
+
*
|
|
29
|
+
* const handleError = (error: Error) => {
|
|
30
|
+
* logger.error('Operation failed', error)
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* return <div>...</div>
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function getLogger(name) {
|
|
38
|
+
const provider = getLoggerProvider();
|
|
39
|
+
return provider.getLogger(name);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a logger with custom configuration.
|
|
43
|
+
*
|
|
44
|
+
* @param config - Logger configuration
|
|
45
|
+
* @returns Logger instance
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* const logger = createLogger({
|
|
50
|
+
* name: 'API',
|
|
51
|
+
* level: 'debug',
|
|
52
|
+
* context: { module: 'api' },
|
|
53
|
+
* })
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function createLogger(config) {
|
|
57
|
+
const provider = getLoggerProvider();
|
|
58
|
+
return provider.createLogger(config);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get the root logger.
|
|
62
|
+
*
|
|
63
|
+
* @returns Root logger instance
|
|
64
|
+
*/
|
|
65
|
+
export function getRootLogger() {
|
|
66
|
+
const provider = getLoggerProvider();
|
|
67
|
+
return provider.getLogger();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a child logger with additional context.
|
|
71
|
+
*
|
|
72
|
+
* @param name - Parent logger name
|
|
73
|
+
* @param context - Additional context
|
|
74
|
+
* @returns Child logger instance
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```tsx
|
|
78
|
+
* function UserProfile(props: { userId: string }) {
|
|
79
|
+
* const logger = getChildLogger('UserProfile', { userId: props.userId })
|
|
80
|
+
* // All logs will include userId in context
|
|
81
|
+
* logger.info('Profile loaded')
|
|
82
|
+
* }
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function getChildLogger(name, context) {
|
|
86
|
+
const provider = getLoggerProvider();
|
|
87
|
+
const parent = provider.getLogger(name);
|
|
88
|
+
return parent.withContext(context);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a component logger that includes component name in context.
|
|
92
|
+
*
|
|
93
|
+
* @param componentName - Name of the component
|
|
94
|
+
* @returns Logger configured for the component
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```tsx
|
|
98
|
+
* function Dashboard() {
|
|
99
|
+
* const logger = useComponentLogger('Dashboard')
|
|
100
|
+
*
|
|
101
|
+
* const handleRefresh = () => {
|
|
102
|
+
* logger.info('Dashboard refreshed')
|
|
103
|
+
* }
|
|
104
|
+
*
|
|
105
|
+
* return <button onClick={handleRefresh}>Refresh</button>
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export function useComponentLogger(componentName) {
|
|
110
|
+
return getLogger(componentName);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create logger helpers from context.
|
|
114
|
+
*
|
|
115
|
+
* @returns Logger helper functions
|
|
116
|
+
*/
|
|
117
|
+
/**
|
|
118
|
+
* Creates a logger helpers.
|
|
119
|
+
* @returns The created result.
|
|
120
|
+
*/
|
|
121
|
+
export function createLoggerHelpers() {
|
|
122
|
+
const provider = getLoggerProvider();
|
|
123
|
+
return {
|
|
124
|
+
getLogger: (name) => provider.getLogger(name),
|
|
125
|
+
createLogger: (config) => provider.createLogger(config),
|
|
126
|
+
setLevel: (level) => provider.setLevel(level),
|
|
127
|
+
getLevel: () => provider.getLevel(),
|
|
128
|
+
enable: () => provider.enable(),
|
|
129
|
+
disable: () => provider.disable(),
|
|
130
|
+
isEnabled: () => provider.isEnabled(),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Create logger helpers from a specific provider.
|
|
135
|
+
*
|
|
136
|
+
* @param provider - Logger provider
|
|
137
|
+
* @returns Logger helper functions
|
|
138
|
+
*/
|
|
139
|
+
/**
|
|
140
|
+
* Creates a logger helpers from provider.
|
|
141
|
+
* @param provider - The provider implementation.
|
|
142
|
+
* @returns The created result.
|
|
143
|
+
*/
|
|
144
|
+
export function createLoggerHelpersFromProvider(provider) {
|
|
145
|
+
return {
|
|
146
|
+
getLogger: (name) => provider.getLogger(name),
|
|
147
|
+
createLogger: (config) => provider.createLogger(config),
|
|
148
|
+
setLevel: (level) => provider.setLevel(level),
|
|
149
|
+
getLevel: () => provider.getLevel(),
|
|
150
|
+
enable: () => provider.enable(),
|
|
151
|
+
disable: () => provider.disable(),
|
|
152
|
+
isEnabled: () => provider.isEnabled(),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create logger from a specific provider.
|
|
157
|
+
*
|
|
158
|
+
* @param provider - Logger provider
|
|
159
|
+
* @param name - Logger name
|
|
160
|
+
* @returns Logger instance
|
|
161
|
+
*/
|
|
162
|
+
export function createLoggerFromProvider(provider, name) {
|
|
163
|
+
return provider.getLogger(name);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/primitives/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;IACpC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;IACpC,OAAO,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;IACpC,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAgC;IAC3E,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACvC,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,OAAO,SAAS,CAAC,aAAa,CAAC,CAAA;AACjC,CAAC;AAED;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IASjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;IAEpC,OAAO;QACL,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;QACtD,YAAY,EAAE,CAAC,MAAoB,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC;QACrE,QAAQ,EAAE,CAAC,KAA+D,EAAE,EAAE,CAC5E,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QACjC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;KACtC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,QAAwB;IAStE,OAAO;QACL,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC;QACtD,YAAY,EAAE,CAAC,MAAoB,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC;QACrE,QAAQ,EAAE,CAAC,KAA+D,EAAE,EAAE,CAC5E,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QACjC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE;KACtC,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAwB,EAAE,IAAa;IAC9E,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid.js primitive for login with async state tracking.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { Accessor } from 'solid-js';
|
|
7
|
+
import type { AuthResult, LoginCredentials } from '@molecule/app-auth';
|
|
8
|
+
import type { PromiseState } from '@molecule/app-utilities';
|
|
9
|
+
/**
|
|
10
|
+
* Return type for createLogin primitive.
|
|
11
|
+
*/
|
|
12
|
+
export interface CreateLoginReturn<T = unknown> {
|
|
13
|
+
state: Accessor<PromiseState<AuthResult<T>>>;
|
|
14
|
+
login: (credentials: LoginCredentials) => Promise<AuthResult<T>>;
|
|
15
|
+
reset: () => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates a login primitive with async state tracking.
|
|
19
|
+
*
|
|
20
|
+
* @returns Login state and action
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* const { state, login } = createLogin()
|
|
25
|
+
*
|
|
26
|
+
* return (
|
|
27
|
+
* <button
|
|
28
|
+
* onClick={() => login({ email: email(), password: password() })}
|
|
29
|
+
* disabled={state().status === 'pending'}
|
|
30
|
+
* >
|
|
31
|
+
* {state().status === 'pending' ? 'Logging in...' : 'Login'}
|
|
32
|
+
* </button>
|
|
33
|
+
* )
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function createLogin<T = unknown>(): CreateLoginReturn<T>;
|
|
37
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/primitives/login.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAK3D;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,KAAK,EAAE,CAAC,WAAW,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAO/D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid.js primitive for login with async state tracking.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { getAuthClient } from '../context.js';
|
|
7
|
+
import { createPromise } from './promise.js';
|
|
8
|
+
/**
|
|
9
|
+
* Creates a login primitive with async state tracking.
|
|
10
|
+
*
|
|
11
|
+
* @returns Login state and action
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* const { state, login } = createLogin()
|
|
16
|
+
*
|
|
17
|
+
* return (
|
|
18
|
+
* <button
|
|
19
|
+
* onClick={() => login({ email: email(), password: password() })}
|
|
20
|
+
* disabled={state().status === 'pending'}
|
|
21
|
+
* >
|
|
22
|
+
* {state().status === 'pending' ? 'Logging in...' : 'Login'}
|
|
23
|
+
* </button>
|
|
24
|
+
* )
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function createLogin() {
|
|
28
|
+
const client = getAuthClient();
|
|
29
|
+
const { state, call, reset } = createPromise((credentials) => client.login(credentials));
|
|
30
|
+
return { state, login: call, reset };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/primitives/login.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAW5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,aAAa,EAAK,CAAA;IACjC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,CAAC,WAA6B,EAAE,EAAE,CAC7E,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAC1B,CAAA;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACtC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solid.js primitive for OAuth authentication.
|
|
3
|
+
*
|
|
4
|
+
* Builds provider initiation URLs, starts the full-page redirect flow, and
|
|
5
|
+
* automatically handles the OAuth callback: when the page loads with a `code`
|
|
6
|
+
* (+ optional `state`) URL parameter and a stashed provider, the code is
|
|
7
|
+
* exchanged for a session via `POST {baseURL}{loginEndpoint}`.
|
|
8
|
+
*
|
|
9
|
+
* Session establishment prefers an auth client — an explicit
|
|
10
|
+
* {@link CreateOAuthOptions.authClient} override, else the surrounding
|
|
11
|
+
* `MoleculeProvider`'s client. Without any client, the code exchange itself
|
|
12
|
+
* has already established the httpOnly-cookie session server-side, so a
|
|
13
|
+
* user-carrying response still counts as a successful login.
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
import type { Accessor } from 'solid-js';
|
|
18
|
+
import type { AuthClient } from '@molecule/app-auth';
|
|
19
|
+
/**
|
|
20
|
+
* OAuth configuration options.
|
|
21
|
+
*/
|
|
22
|
+
export interface CreateOAuthOptions {
|
|
23
|
+
/** Base URL for the API server (e.g. `https://api.example.com`). */
|
|
24
|
+
baseURL?: string;
|
|
25
|
+
/** List of supported OAuth provider names (e.g. `['github', 'google']`). */
|
|
26
|
+
oauthProviders?: string[];
|
|
27
|
+
/** Path prefix for OAuth initiation routes. Defaults to `/oauth`. */
|
|
28
|
+
oauthEndpoint?: string;
|
|
29
|
+
/** Path for the OAuth login POST endpoint. Defaults to `/users/log-in/oauth`. */
|
|
30
|
+
loginEndpoint?: string;
|
|
31
|
+
/** Called after a successful OAuth login (session established). */
|
|
32
|
+
onSuccess?: () => void;
|
|
33
|
+
/** Called with a failure message when the OAuth login fails. */
|
|
34
|
+
onError?: (error: string) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Auth client used to establish the session after the code exchange.
|
|
37
|
+
* Overrides context resolution — when omitted, the client is resolved from
|
|
38
|
+
* the surrounding `MoleculeProvider` (tolerated when absent; see the
|
|
39
|
+
* cookie-session fallback documented on
|
|
40
|
+
* {@link CreateOAuthReturn.handleCallback}).
|
|
41
|
+
*/
|
|
42
|
+
authClient?: AuthClient<unknown>;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Return type for createOAuth primitive.
|
|
46
|
+
*/
|
|
47
|
+
export interface CreateOAuthReturn {
|
|
48
|
+
/** Accessor for the configured OAuth provider names. */
|
|
49
|
+
providers: Accessor<string[]>;
|
|
50
|
+
/** Builds the OAuth initiation URL for a provider. */
|
|
51
|
+
getOAuthUrl: (provider: string) => string;
|
|
52
|
+
/** Starts the full-page redirect flow for a provider. */
|
|
53
|
+
redirect: (provider: string) => void;
|
|
54
|
+
/**
|
|
55
|
+
* Handles the OAuth callback: exchanges the `code` URL parameter for a
|
|
56
|
+
* session. Invoked automatically at creation (see {@link createOAuth});
|
|
57
|
+
* exposed for callers that need to re-run it manually. No-ops unless
|
|
58
|
+
* running in a browser with a `code` URL parameter and a stashed provider.
|
|
59
|
+
*
|
|
60
|
+
* When an auth client is available (explicit option or context), the
|
|
61
|
+
* session is established locally (`setAccessToken` + `setUser` +
|
|
62
|
+
* `initialize`). When no client is available, the server has already
|
|
63
|
+
* established the httpOnly-cookie session during the exchange, so a
|
|
64
|
+
* user-carrying response still counts as success.
|
|
65
|
+
*/
|
|
66
|
+
handleCallback: () => Promise<void>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates OAuth helpers.
|
|
70
|
+
*
|
|
71
|
+
* Automatically handles OAuth callbacks by detecting `code` and `state` URL
|
|
72
|
+
* parameters and exchanging them for a session:
|
|
73
|
+
* - Inside a Solid owner (component setup / `createRoot`), the callback
|
|
74
|
+
* handling is deferred to `onMount` so it runs client-side after mount.
|
|
75
|
+
* - Outside an owner (a plain function call, e.g. bootstrap code), it runs
|
|
76
|
+
* immediately at creation, browser-guarded.
|
|
77
|
+
*
|
|
78
|
+
* @param options - OAuth configuration
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```tsx
|
|
82
|
+
* const { providers, getOAuthUrl, redirect } = createOAuth({
|
|
83
|
+
* baseURL: 'https://api.example.com',
|
|
84
|
+
* oauthProviders: ['github', 'google'],
|
|
85
|
+
* onSuccess: () => navigate('/dashboard'),
|
|
86
|
+
* onError: (error) => setErrorMessage(error),
|
|
87
|
+
* })
|
|
88
|
+
*
|
|
89
|
+
* return (
|
|
90
|
+
* <For each={providers()}>
|
|
91
|
+
* {(provider) => (
|
|
92
|
+
* <button onClick={() => redirect(provider)}>
|
|
93
|
+
* Login with {provider}
|
|
94
|
+
* </button>
|
|
95
|
+
* )}
|
|
96
|
+
* </For>
|
|
97
|
+
* )
|
|
98
|
+
* ```
|
|
99
|
+
* @returns The created instance.
|
|
100
|
+
*/
|
|
101
|
+
export declare function createOAuth(options?: CreateOAuthOptions): CreateOAuthReturn;
|
|
102
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/primitives/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAGxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7B,sDAAsD;IACtD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,yDAAyD;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC;;;;;;;;;;;OAWG;IACH,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAiM3E"}
|