@limetech/lime-web-components 6.6.0 → 6.8.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/CHANGELOG.md +17 -0
- package/dist/error/error.d.ts +15 -0
- package/dist/error/error.d.ts.map +1 -0
- package/dist/error/error.spec.d.ts +2 -0
- package/dist/error/error.spec.d.ts.map +1 -0
- package/dist/error/index.d.ts +2 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/eventdispatcher/eventdispatcher.d.ts +76 -10
- package/dist/eventdispatcher/eventdispatcher.d.ts.map +1 -1
- package/dist/filter/decorator.d.ts +21 -3
- package/dist/filter/decorator.d.ts.map +1 -1
- package/dist/filter/repository.d.ts +84 -6
- package/dist/filter/repository.d.ts.map +1 -1
- package/dist/http/http.d.ts +244 -37
- package/dist/http/http.d.ts.map +1 -1
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +467 -333
- package/dist/index.esm.js.map +1 -1
- package/dist/keybindings/registry.d.ts +140 -27
- package/dist/keybindings/registry.d.ts.map +1 -1
- package/dist/logger/factory.d.ts +51 -0
- package/dist/logger/factory.d.ts.map +1 -0
- package/dist/logger/factory.spec.d.ts +2 -0
- package/dist/logger/factory.spec.d.ts.map +1 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/problem/index.d.ts +6 -0
- package/dist/problem/index.d.ts.map +1 -0
- package/dist/problem/problem.d.ts +394 -0
- package/dist/problem/problem.d.ts.map +1 -0
- package/dist/problem/provider.d.ts +192 -0
- package/dist/problem/provider.d.ts.map +1 -0
- package/dist/problem/query.d.ts +312 -0
- package/dist/problem/query.d.ts.map +1 -0
- package/dist/problem/repository.d.ts +111 -0
- package/dist/problem/repository.d.ts.map +1 -0
- package/dist/problem/types.d.ts +15 -0
- package/dist/problem/types.d.ts.map +1 -0
- package/package.json +6 -6
|
@@ -6,31 +6,66 @@
|
|
|
6
6
|
* to individual keys typed by a user. The key combination can be pressing a single
|
|
7
7
|
* key or a sequence of keys one after the other.
|
|
8
8
|
*
|
|
9
|
-
* The service works together with the
|
|
9
|
+
* The service works together with the {@link CommandBus} to execute the commands and
|
|
10
10
|
* a command needs to already be registered on the command bus in order to be
|
|
11
11
|
* bound as a keyboard shortcut.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* Keybindings are scoped to the component that creates them and should be
|
|
14
|
+
* cleaned up when the component is removed from the DOM to prevent memory leaks
|
|
15
|
+
* and unintended behavior.
|
|
16
16
|
*
|
|
17
|
-
*
|
|
18
|
-
* `unbind` method.
|
|
17
|
+
* ## Key Combination Format
|
|
19
18
|
*
|
|
20
|
-
*
|
|
19
|
+
* Key combinations can be:
|
|
20
|
+
* - Single keys: `'a'`, `'enter'`, `'escape'`
|
|
21
|
+
* - Modifier combinations: `'ctrl+s'`, `'alt+shift+n'`, `'meta+k'`
|
|
22
|
+
* - Sequences: `'g i'` (press 'g' then 'i')
|
|
23
|
+
*
|
|
24
|
+
* Supported modifiers: `ctrl`, `alt`, `shift`, `meta` (Command on Mac)
|
|
25
|
+
*
|
|
26
|
+
* @example Binding a command to a key combination
|
|
27
|
+
* ```ts
|
|
28
|
+
* const saveCommand = new SaveCommand();
|
|
29
|
+
* commandBus.register(SaveCommand, { handle: (cmd) => handleSave(cmd) });
|
|
30
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
31
|
+
* registry.bind('ctrl+s', saveCommand);
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @example Checking for conflicts before binding
|
|
35
|
+
* ```ts
|
|
36
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
37
|
+
* if (!registry.isBound('j')) {
|
|
38
|
+
* registry.bind('j', navigateNextCommand);
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Vim-style key sequences
|
|
43
|
+
* ```ts
|
|
44
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
45
|
+
* registry.bind('g i', goToInboxCommand);
|
|
46
|
+
* registry.bind('g s', goToSentCommand);
|
|
47
|
+
* registry.bind('g d', goToDraftsCommand);
|
|
21
48
|
* ```
|
|
22
|
-
* // The command bus needs to have a handler registered for the command
|
|
23
|
-
* // before it can be bound to a key sequence
|
|
24
|
-
* const handler = new MyHandler();
|
|
25
|
-
* commandBus.register(MyCommand, handler);
|
|
26
49
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
50
|
+
* @example Usage in a component
|
|
51
|
+
* ```ts
|
|
52
|
+
* class MyComponent {
|
|
53
|
+
* private saveCommand = new SaveCommand();
|
|
30
54
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
55
|
+
* connectedCallback() {
|
|
56
|
+
* this.keybindingRegistry.bind('ctrl+s', this.saveCommand);
|
|
57
|
+
* }
|
|
58
|
+
*
|
|
59
|
+
* disconnectedCallback() {
|
|
60
|
+
* this.keybindingRegistry.unbind('ctrl+s', this.saveCommand);
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
63
|
+
* private get keybindingRegistry() {
|
|
64
|
+
* return this.platform.get(PlatformServiceName.KeybindingRegistry);
|
|
65
|
+
* }
|
|
66
|
+
* }
|
|
33
67
|
* ```
|
|
68
|
+
*
|
|
34
69
|
* @note This service is work in progress
|
|
35
70
|
* @beta
|
|
36
71
|
* @group Keyboard shortcuts
|
|
@@ -39,46 +74,124 @@ export interface KeybindingRegistry {
|
|
|
39
74
|
/**
|
|
40
75
|
* Bind a command to a specific key combination to add it to the registry
|
|
41
76
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
77
|
+
* When a user presses the specified key combination, the command will be
|
|
78
|
+
* dispatched through the {@link CommandBus}. The command must already have
|
|
79
|
+
* a handler registered on the command bus before binding.
|
|
80
|
+
*
|
|
81
|
+
* If the same key combination is bound to multiple commands, all commands
|
|
82
|
+
* will be executed in the order they were registered.
|
|
83
|
+
*
|
|
84
|
+
* @param keys - the string representation of keys (e.g., 'ctrl+s', 'alt+shift+n', 'g i')
|
|
85
|
+
* @param command - the command instance to trigger when keys are pressed
|
|
86
|
+
* @throws Will throw an error if the command is invalid or not registered on the command bus
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* const command = new SaveCommand();
|
|
91
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
92
|
+
* registry.bind('ctrl+s', command);
|
|
93
|
+
* ```
|
|
45
94
|
*/
|
|
46
95
|
bind: (keys: string, command: object) => void;
|
|
47
96
|
/**
|
|
48
97
|
* Unbind a keybinding to remove it from the registry
|
|
49
98
|
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
99
|
+
* Removes the association between a key combination and a command. After
|
|
100
|
+
* unbinding, pressing the key combination will no longer trigger the command.
|
|
101
|
+
* This is essential for cleanup when components are removed from the DOM.
|
|
102
|
+
*
|
|
103
|
+
* If multiple commands are bound to the same key combination, only the
|
|
104
|
+
* specified command will be unbound.
|
|
105
|
+
*
|
|
106
|
+
* @param keys - the string representation of the key combination (e.g., 'ctrl+s')
|
|
107
|
+
* @param command - the command instance connected to the key combination
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts
|
|
111
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
112
|
+
* registry.unbind('ctrl+s', saveCommand);
|
|
113
|
+
* ```
|
|
52
114
|
*/
|
|
53
115
|
unbind: (keys: string, command: object) => void;
|
|
54
116
|
/**
|
|
55
117
|
* Get a list of the key bindings that are currently in the registry
|
|
56
118
|
*
|
|
57
|
-
*
|
|
119
|
+
* Returns all active keybindings across all components. Useful for debugging,
|
|
120
|
+
* displaying keyboard shortcuts to users, or detecting conflicts.
|
|
121
|
+
*
|
|
122
|
+
* @returns the list of all active keybindings with their commands
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```ts
|
|
126
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
127
|
+
* const bindings = registry.getKeybindings();
|
|
128
|
+
* bindings.forEach(binding => {
|
|
129
|
+
* console.log(`${binding.keys} → ${binding.command}`);
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
58
132
|
*/
|
|
59
133
|
getKeybindings: () => Keybinding[];
|
|
60
134
|
/**
|
|
61
135
|
* Checks if a key combination or a specific keybinding is already bound
|
|
62
136
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
137
|
+
* Use this method to detect conflicts before binding new keybindings.
|
|
138
|
+
* When called with just a key combination, returns true if any command
|
|
139
|
+
* is bound to those keys. When called with both keys and a command,
|
|
140
|
+
* returns true only if that specific combination exists.
|
|
141
|
+
*
|
|
142
|
+
* @param keys - the string representation of a key combination (e.g., 'ctrl+s')
|
|
143
|
+
* @param command - optional command instance to check for a specific binding
|
|
144
|
+
* @returns true if the key combination is bound (to any or the specified command), false otherwise
|
|
145
|
+
*
|
|
146
|
+
* @example Check if any command is bound to keys
|
|
147
|
+
* ```ts
|
|
148
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
149
|
+
* if (registry.isBound('ctrl+s')) {
|
|
150
|
+
* console.warn('ctrl+s is already bound');
|
|
151
|
+
* }
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @example Check if a specific command is bound to keys
|
|
155
|
+
* ```ts
|
|
156
|
+
* const registry = platform.get(PlatformServiceName.KeybindingRegistry);
|
|
157
|
+
* if (registry.isBound('ctrl+s', saveCommand)) {
|
|
158
|
+
* console.log('Save command is bound to ctrl+s');
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
66
161
|
*/
|
|
67
162
|
isBound: (keys: string, command?: object) => boolean;
|
|
68
163
|
}
|
|
69
164
|
/**
|
|
70
165
|
* A key combination and its corresponding command that will be triggered when
|
|
71
166
|
* the key combination is pressed
|
|
167
|
+
*
|
|
168
|
+
* Represents an active binding in the {@link KeybindingRegistry}. Each keybinding
|
|
169
|
+
* associates a specific key combination with a command instance that will be
|
|
170
|
+
* executed via the {@link CommandBus} when the keys are pressed.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```ts
|
|
174
|
+
* const binding: Keybinding = {
|
|
175
|
+
* keys: 'ctrl+s',
|
|
176
|
+
* command: new SaveCommand(),
|
|
177
|
+
* };
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
72
180
|
* @beta
|
|
73
181
|
* @group Keyboard shortcuts
|
|
74
182
|
*/
|
|
75
183
|
export interface Keybinding {
|
|
76
184
|
/**
|
|
77
|
-
* The string representation of key combination
|
|
185
|
+
* The string representation of a key combination
|
|
186
|
+
*
|
|
187
|
+
* Examples: `'ctrl+s'`, `'alt+shift+n'`, `'g i'`, `'escape'`
|
|
78
188
|
*/
|
|
79
189
|
keys: string;
|
|
80
190
|
/**
|
|
81
|
-
* The command to trigger when the key combination is pressed
|
|
191
|
+
* The command instance to trigger when the key combination is pressed
|
|
192
|
+
*
|
|
193
|
+
* This command must be registered on the {@link CommandBus} before the
|
|
194
|
+
* keybinding is created.
|
|
82
195
|
*/
|
|
83
196
|
command: object;
|
|
84
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/keybindings/registry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/keybindings/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhD;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,EAAE,MAAM,UAAU,EAAE,CAAC;IAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,UAAU;IACvB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Logger } from './logger';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a logger instance using the platform's logger factory
|
|
4
|
+
*
|
|
5
|
+
* This function retrieves the logger factory from the global Lime platform
|
|
6
|
+
* object and creates a scoped logger. If the platform factory is not available,
|
|
7
|
+
* it falls back to the browser console.
|
|
8
|
+
*
|
|
9
|
+
* The package name is automatically determined from the module's URL on the first
|
|
10
|
+
* call and cached for all subsequent calls. This ensures consistent logger scopes
|
|
11
|
+
* across all loggers created from the same module instance.
|
|
12
|
+
*
|
|
13
|
+
* @param scope - The scope/category for the logger (e.g., 'my-component', 'http-client')
|
|
14
|
+
* @returns A logger instance integrated with the platform or console fallback
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* The console fallback is provided for development scenarios where the full
|
|
18
|
+
* Lime platform is not available. The console object does not fully implement
|
|
19
|
+
* the Logger interface but provides compatible logging methods.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const logger = createLogger('my-component');
|
|
24
|
+
* logger.info('Component initialized');
|
|
25
|
+
* logger.debug('Processing data', { count: 42 });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @beta
|
|
29
|
+
* @group Logger
|
|
30
|
+
*/
|
|
31
|
+
export declare function createLogger(scope: string): Logger;
|
|
32
|
+
/**
|
|
33
|
+
* Extracts the package name from a given URL
|
|
34
|
+
*
|
|
35
|
+
* Supports multiple URL patterns:
|
|
36
|
+
* - `/packages/@scope/name/version/...` → extracts `name`
|
|
37
|
+
* - `/static/name+version/...` → extracts `name`
|
|
38
|
+
* - `/static/directory/name+version/...` → extracts `name`
|
|
39
|
+
* - `/static/name/...` → extracts `name`
|
|
40
|
+
*
|
|
41
|
+
* The extracted name is cleaned by removing common prefixes and suffixes.
|
|
42
|
+
*
|
|
43
|
+
* @param url - The URL string to extract the package name from
|
|
44
|
+
*
|
|
45
|
+
* @returns The extracted package name, or null if not found
|
|
46
|
+
*
|
|
47
|
+
* @beta
|
|
48
|
+
* @group Logger
|
|
49
|
+
*/
|
|
50
|
+
export declare function getPackageNameFromUrl(url: string | null): string | null;
|
|
51
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/logger/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqBlD;AAqCD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAcvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.spec.d.ts","sourceRoot":"","sources":["../../src/logger/factory.spec.ts"],"names":[],"mappings":""}
|
package/dist/logger/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/problem/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|