orcas-angular 1.0.3 → 1.0.5
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/fesm2022/orcas-angular.mjs +1608 -0
- package/fesm2022/orcas-angular.mjs.map +1 -0
- package/package.json +39 -25
- package/types/orcas-angular.d.ts +460 -0
- package/async/README.md +0 -46
- package/async/async.ts +0 -16
- package/async/cancellation-token.ts +0 -90
- package/dev/README.md +0 -41
- package/dev/console-hook.ts +0 -25
- package/dev/debug.service.ts.example +0 -29
- package/framework/README.md +0 -34
- package/framework/services-init.ts +0 -25
- package/index.ts +0 -25
- package/localization/README.md +0 -73
- package/localization/localization.interface.ts +0 -18
- package/localization/localization.service.ts +0 -131
- package/localization/localize.pipe.ts +0 -30
- package/log/README.md +0 -275
- package/log/echo-provider.ts +0 -27
- package/log/echo.ts +0 -635
- package/log/index.ts +0 -6
- package/log/log-systems.ts +0 -20
- package/navigation/README.md +0 -47
- package/navigation/back-on-click.directive.ts +0 -19
- package/navigation/index.ts +0 -3
- package/navigation/navigation-stack.service.ts +0 -33
- package/storage/README.md +0 -75
- package/storage/capacitor-files.service.ts +0 -38
- package/storage/file-box.service.ts +0 -112
- package/storage/files.ts +0 -42
- package/storage/key-signals.ts +0 -49
- package/storage/local-storage-files.service.ts +0 -49
- package/storage/settings-signals.service.ts +0 -24
- package/storage/settings.service.ts +0 -24
- package/storage/tauri-files.service.ts +0 -69
- package/theme/README.md +0 -44
- package/theme/theme.service.ts +0 -33
- package/ui/README.md +0 -42
- package/ui/context-menu/context-button.component.ts +0 -55
- package/ui/context-menu/context-header.component.ts +0 -15
- package/ui/context-menu/context-menu-trigger.directive.ts +0 -26
- package/ui/context-menu/context-menu.component.ts +0 -95
- package/ui/context-menu/index.ts +0 -4
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injector, Signal, PipeTransform, InjectionToken, Provider, ElementRef } from '@angular/core';
|
|
3
|
+
import { Location } from '@angular/common';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
5
|
+
|
|
6
|
+
declare class Async {
|
|
7
|
+
static delay(ms: number): Promise<void>;
|
|
8
|
+
static until(check: () => boolean, timeoutMs?: number, frequencyMs?: number): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface CancellationToken {
|
|
12
|
+
isCancelled(): boolean;
|
|
13
|
+
throwIfCancelled(): void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when an operation is cancelled
|
|
17
|
+
*/
|
|
18
|
+
declare class CancellationError extends Error {
|
|
19
|
+
constructor(message?: string);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Source for creating and managing cancellation tokens
|
|
23
|
+
*/
|
|
24
|
+
declare class CancellationTokenSource {
|
|
25
|
+
private _token;
|
|
26
|
+
/**
|
|
27
|
+
* Gets the token currently associated with this source
|
|
28
|
+
*/
|
|
29
|
+
get token(): CancellationToken;
|
|
30
|
+
/**
|
|
31
|
+
* Cancels the current token and creates a new one
|
|
32
|
+
*/
|
|
33
|
+
newUnique(timeoutMs?: number): CancellationToken;
|
|
34
|
+
/**
|
|
35
|
+
* Cancels the current token
|
|
36
|
+
*/
|
|
37
|
+
cancel(): void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class ConsoleHook {
|
|
41
|
+
private static commands;
|
|
42
|
+
static initialize(): void;
|
|
43
|
+
static register(commandName: string, method: Function): void;
|
|
44
|
+
static run(input: string, ...additionalParams: any[]): any;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
declare class ServicesInit {
|
|
48
|
+
private injector;
|
|
49
|
+
constructor(injector: Injector);
|
|
50
|
+
init<T>(serviceClass: any, ...params: unknown[]): Promise<T>;
|
|
51
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ServicesInit, never>;
|
|
52
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ServicesInit>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface ILocalizationService {
|
|
56
|
+
/** Emits the current language as a signal */
|
|
57
|
+
$currentLang: Signal<string>;
|
|
58
|
+
/** Gets the current active language code */
|
|
59
|
+
getLanguage(): string;
|
|
60
|
+
/** Gets the default language code */
|
|
61
|
+
getDefaultLanguage(): string;
|
|
62
|
+
/** Sets the current active language */
|
|
63
|
+
setActiveLanguage(lang: string): void;
|
|
64
|
+
/** Translates a key, possibly with params and for a specific language */
|
|
65
|
+
translate(key: string, params?: any, language?: string): string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare class LocalizationService implements ILocalizationService {
|
|
69
|
+
private defaultLanguage;
|
|
70
|
+
private storageKey;
|
|
71
|
+
private translations;
|
|
72
|
+
private loaded;
|
|
73
|
+
private $language;
|
|
74
|
+
$currentLang: i0.Signal<string>;
|
|
75
|
+
private http;
|
|
76
|
+
constructor();
|
|
77
|
+
init(jsonPath?: string, defaultLanguage?: string, storageKey?: string): Promise<void>;
|
|
78
|
+
getLanguage(): string;
|
|
79
|
+
getDefaultLanguage(): string;
|
|
80
|
+
setActiveLanguage(lang: string): void;
|
|
81
|
+
translate(key: string, params?: any, language?: string): string;
|
|
82
|
+
private resolveKey;
|
|
83
|
+
private getStoredLanguage;
|
|
84
|
+
private replaceArrayParams;
|
|
85
|
+
private replaceObjectParams;
|
|
86
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizationService, never>;
|
|
87
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LocalizationService>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare class LocalizePipe implements PipeTransform {
|
|
91
|
+
private localizationService;
|
|
92
|
+
private lastLanguage;
|
|
93
|
+
private lastKey;
|
|
94
|
+
private lastParams;
|
|
95
|
+
private lastResult;
|
|
96
|
+
constructor(localizationService: LocalizationService);
|
|
97
|
+
transform(key: string, params?: any): string;
|
|
98
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalizePipe, never>;
|
|
99
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<LocalizePipe, "localize", true>;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Echo - A flexible logging library
|
|
104
|
+
* TypeScript port of Echo.cs core functionality (excluding Unity-specific features)
|
|
105
|
+
*/
|
|
106
|
+
declare enum LogLevel {
|
|
107
|
+
None = 0,
|
|
108
|
+
Error = 1,
|
|
109
|
+
Warn = 2,
|
|
110
|
+
Info = 3,
|
|
111
|
+
Debug = 4
|
|
112
|
+
}
|
|
113
|
+
declare enum LogMode {
|
|
114
|
+
Always = 0,
|
|
115
|
+
Once = 1
|
|
116
|
+
}
|
|
117
|
+
declare enum SystemColor {
|
|
118
|
+
None = 0,
|
|
119
|
+
LabelOnly = 1,
|
|
120
|
+
LabelAndMessage = 2
|
|
121
|
+
}
|
|
122
|
+
interface EchoLogWriter {
|
|
123
|
+
writeLog(level: LogLevel, system: string, message: string): void;
|
|
124
|
+
}
|
|
125
|
+
declare class LogWriterConfig {
|
|
126
|
+
timestamp: boolean;
|
|
127
|
+
levelLabels: boolean;
|
|
128
|
+
levelColors: boolean;
|
|
129
|
+
systemColor: SystemColor;
|
|
130
|
+
}
|
|
131
|
+
declare class HashesManager {
|
|
132
|
+
private hashes;
|
|
133
|
+
tryAdd(system: string, message: string): boolean;
|
|
134
|
+
clear(): void;
|
|
135
|
+
}
|
|
136
|
+
declare class LoggerCore {
|
|
137
|
+
private readonly logWriter;
|
|
138
|
+
private readonly echoSettings;
|
|
139
|
+
private readonly hashes;
|
|
140
|
+
constructor(config: EchoSettings, hashes: HashesManager, logger: EchoLogWriter);
|
|
141
|
+
private isEnabled;
|
|
142
|
+
private shouldLogOnce;
|
|
143
|
+
clearHashes(): void;
|
|
144
|
+
private write;
|
|
145
|
+
writeIfEnabled(level: LogLevel, mode: LogMode, system: string, message: string): void;
|
|
146
|
+
writeIfEnabled1<T1>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1): void;
|
|
147
|
+
writeIfEnabled2<T1, T2>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2): void;
|
|
148
|
+
writeIfEnabled3<T1, T2, T3>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2, param3: T3): void;
|
|
149
|
+
writeIfEnabled4<T1, T2, T3, T4>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2, param3: T3, param4: T4): void;
|
|
150
|
+
private formatString1;
|
|
151
|
+
private formatString2;
|
|
152
|
+
private formatString3;
|
|
153
|
+
private formatString4;
|
|
154
|
+
}
|
|
155
|
+
declare class EchoSettings {
|
|
156
|
+
private systemLevels;
|
|
157
|
+
private _defaultLevel;
|
|
158
|
+
private updateCallbacks;
|
|
159
|
+
get defaultLevel(): LogLevel;
|
|
160
|
+
onUpdated(callback: () => void): void;
|
|
161
|
+
private triggerUpdate;
|
|
162
|
+
setSystemLevel(system: string, level: LogLevel): void;
|
|
163
|
+
clearSystemLevel(system: string): void;
|
|
164
|
+
getSystemLevel(system: string): LogLevel;
|
|
165
|
+
tryGetSystemLevel(system: string): {
|
|
166
|
+
success: boolean;
|
|
167
|
+
level?: LogLevel;
|
|
168
|
+
};
|
|
169
|
+
clearSystemLevels(): void;
|
|
170
|
+
setDefaultLevel(level: LogLevel): void;
|
|
171
|
+
getAllSystemLevels(): ReadonlyMap<string, LogLevel>;
|
|
172
|
+
private throwIfInvalidSystem;
|
|
173
|
+
}
|
|
174
|
+
declare class EchoLogger {
|
|
175
|
+
private readonly loggerCore;
|
|
176
|
+
constructor(loggerCore: LoggerCore);
|
|
177
|
+
debug(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
178
|
+
debug1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
179
|
+
info(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
180
|
+
info1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
181
|
+
warn(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
182
|
+
warn1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
183
|
+
error(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
184
|
+
error1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
185
|
+
}
|
|
186
|
+
declare class EchoSystemLogger {
|
|
187
|
+
private readonly loggerCore;
|
|
188
|
+
private readonly system;
|
|
189
|
+
constructor(loggerCore: LoggerCore, system: string);
|
|
190
|
+
debug(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
191
|
+
debug1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
192
|
+
info(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
193
|
+
info1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
194
|
+
warn(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
195
|
+
warn1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
196
|
+
error(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
197
|
+
error1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void;
|
|
198
|
+
}
|
|
199
|
+
declare class Echo {
|
|
200
|
+
private readonly loggerCore;
|
|
201
|
+
private readonly loggers;
|
|
202
|
+
private readonly _settings;
|
|
203
|
+
constructor(writer: EchoLogWriter);
|
|
204
|
+
getLogger(): EchoLogger;
|
|
205
|
+
getSystemLogger(system: string): EchoSystemLogger;
|
|
206
|
+
get settings(): EchoSettings;
|
|
207
|
+
}
|
|
208
|
+
declare class EchoConsole {
|
|
209
|
+
static new(config?: LogWriterConfig): Echo;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Constants for Echo logging system names.
|
|
214
|
+
* Using constants ensures consistency and prevents typos.
|
|
215
|
+
*/
|
|
216
|
+
declare class LogSystems {
|
|
217
|
+
/** System for profiling and performance measurements */
|
|
218
|
+
static readonly PROFILING = "Profiling";
|
|
219
|
+
/** System for general application logs */
|
|
220
|
+
static readonly GENERAL = "General";
|
|
221
|
+
/** System for Git-related operations */
|
|
222
|
+
static readonly GIT = "Git";
|
|
223
|
+
/** System for UI and visual operations */
|
|
224
|
+
static readonly UI = "UI";
|
|
225
|
+
/** System for repository operations */
|
|
226
|
+
static readonly REPOSITORY = "Repository";
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Echo provider for Angular dependency injection.
|
|
231
|
+
* Provides a singleton Echo instance with console writer.
|
|
232
|
+
*/
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Injection token for Echo logger instance
|
|
236
|
+
*/
|
|
237
|
+
declare const ECHO: InjectionToken<Echo>;
|
|
238
|
+
/**
|
|
239
|
+
* Factory function to create Echo instance
|
|
240
|
+
*/
|
|
241
|
+
declare function echoFactory(): Echo;
|
|
242
|
+
/**
|
|
243
|
+
* Provider for Echo logger
|
|
244
|
+
* Use this in your module providers or inject it in services
|
|
245
|
+
*/
|
|
246
|
+
declare const ECHO_PROVIDER: Provider;
|
|
247
|
+
|
|
248
|
+
declare class NavigationStackService {
|
|
249
|
+
private router;
|
|
250
|
+
private location;
|
|
251
|
+
private history;
|
|
252
|
+
constructor(router: Router, location: Location);
|
|
253
|
+
goBack(): void;
|
|
254
|
+
getBack(): string;
|
|
255
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NavigationStackService, never>;
|
|
256
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NavigationStackService>;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
declare class BackOnClickDirective {
|
|
260
|
+
private navigationStack;
|
|
261
|
+
constructor(navigationStack: NavigationStackService);
|
|
262
|
+
onClick(event: Event): void;
|
|
263
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BackOnClickDirective, never>;
|
|
264
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BackOnClickDirective, "[back-on-click]", never, {}, {}, never, never, true, never>;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
declare abstract class FilesService {
|
|
268
|
+
/**
|
|
269
|
+
* Initializes the service.
|
|
270
|
+
* This should handle any setup required by the specific implementation.
|
|
271
|
+
*/
|
|
272
|
+
abstract init(...args: any[]): Promise<void>;
|
|
273
|
+
/**
|
|
274
|
+
* Joins a filename with the storage base directory to get a full path.
|
|
275
|
+
* Returns a string or a Promise of a string depending on implementation.
|
|
276
|
+
* In some platforms, this may return null if paths are not supported.
|
|
277
|
+
*/
|
|
278
|
+
abstract joinStoragePath(filePath: string): Promise<string | null>;
|
|
279
|
+
/**
|
|
280
|
+
* Checks if a file exists in the platform-specific storage.
|
|
281
|
+
*/
|
|
282
|
+
abstract hasInStorage(filePath: string): Promise<boolean>;
|
|
283
|
+
/**
|
|
284
|
+
* Reads a file from the platform-specific storage.
|
|
285
|
+
*/
|
|
286
|
+
abstract readFromStorage(filePath: string): Promise<string>;
|
|
287
|
+
/**
|
|
288
|
+
* Writes data to a file in the platform-specific storage.
|
|
289
|
+
*/
|
|
290
|
+
abstract writeToStorage(filePath: string, data: string): Promise<void>;
|
|
291
|
+
/**
|
|
292
|
+
* Checks if a file exists in the project's assets/resources.
|
|
293
|
+
*/
|
|
294
|
+
abstract hasInProject(filePath: string): Promise<boolean>;
|
|
295
|
+
/**
|
|
296
|
+
* Reads a file from the project's assets/resources.
|
|
297
|
+
*/
|
|
298
|
+
abstract readFromProject(filePath: string): Promise<string>;
|
|
299
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilesService, never>;
|
|
300
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FilesService>;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
interface BoxData {
|
|
304
|
+
[key: string]: any;
|
|
305
|
+
}
|
|
306
|
+
declare class FileBoxService {
|
|
307
|
+
private files;
|
|
308
|
+
private status;
|
|
309
|
+
private path;
|
|
310
|
+
private saveEnqueued;
|
|
311
|
+
private $dataWritable;
|
|
312
|
+
$data: i0.Signal<BoxData>;
|
|
313
|
+
init(path: string): Promise<void>;
|
|
314
|
+
has(key: string): boolean;
|
|
315
|
+
set(key: string, value: any): void;
|
|
316
|
+
setAll(data: BoxData): void;
|
|
317
|
+
remove(key: string): void;
|
|
318
|
+
private checkType;
|
|
319
|
+
save(): Promise<void>;
|
|
320
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileBoxService, never>;
|
|
321
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FileBoxService>;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
declare abstract class KeySignals {
|
|
325
|
+
protected abstract $data(): Record<string, any>;
|
|
326
|
+
protected abstract setRawValue(key: string, value: any): Promise<void>;
|
|
327
|
+
protected abstract setMultipleRawValues(values: Record<string, any>): Promise<void>;
|
|
328
|
+
protected readonly SEPARATOR = "|";
|
|
329
|
+
getCanonicalKey(path: string[]): string;
|
|
330
|
+
getNewSignal<T>(defaultValue: T, ...path: string[]): Signal<T>;
|
|
331
|
+
getValue<T>(defaultValue: T, ...path: string[]): T;
|
|
332
|
+
set(value: any, ...path: string[]): Promise<void>;
|
|
333
|
+
/**
|
|
334
|
+
* Clears all keys that start with the given prefix.
|
|
335
|
+
*/
|
|
336
|
+
clearByPrefix(...pathPrefix: string[]): Promise<void>;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
declare class SettingsSignalsService extends KeySignals {
|
|
340
|
+
private filebox;
|
|
341
|
+
protected $data(): Record<string, any>;
|
|
342
|
+
protected setRawValue(key: string, value: any): Promise<void>;
|
|
343
|
+
protected setMultipleRawValues(values: Record<string, any>): Promise<void>;
|
|
344
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SettingsSignalsService, never>;
|
|
345
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SettingsSignalsService>;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
declare class SettingsService {
|
|
349
|
+
private fileboxService;
|
|
350
|
+
private sss;
|
|
351
|
+
private readonly SETTINGS_KEY;
|
|
352
|
+
getNewSignal<T>(defaultValue: T, ...path: string[]): Signal<T>;
|
|
353
|
+
set(value: any, ...path: string[]): Promise<void>;
|
|
354
|
+
save(): Promise<void>;
|
|
355
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SettingsService, never>;
|
|
356
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SettingsService>;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
declare class TauriFilesService extends FilesService {
|
|
360
|
+
private static _isTauri;
|
|
361
|
+
static isSupported(): boolean;
|
|
362
|
+
init(): Promise<void>;
|
|
363
|
+
joinStoragePath(filePath: string): Promise<string | null>;
|
|
364
|
+
hasInStorage(filePath: string): Promise<boolean>;
|
|
365
|
+
readFromStorage(filePath: string): Promise<string>;
|
|
366
|
+
writeToStorage(filePath: string, data: string): Promise<void>;
|
|
367
|
+
hasInProject(filePath: string): Promise<boolean>;
|
|
368
|
+
readFromProject(filePath: string): Promise<string>;
|
|
369
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TauriFilesService, never>;
|
|
370
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TauriFilesService>;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
declare class CapacitorFilesService extends FilesService {
|
|
374
|
+
static isSupported(): boolean;
|
|
375
|
+
init(): Promise<void>;
|
|
376
|
+
joinStoragePath(filePath: string): Promise<string | null>;
|
|
377
|
+
hasInStorage(filePath: string): Promise<boolean>;
|
|
378
|
+
readFromStorage(filePath: string): Promise<string>;
|
|
379
|
+
writeToStorage(filePath: string, data: string): Promise<void>;
|
|
380
|
+
hasInProject(filePath: string): Promise<boolean>;
|
|
381
|
+
readFromProject(filePath: string): Promise<string>;
|
|
382
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CapacitorFilesService, never>;
|
|
383
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CapacitorFilesService>;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
declare class LocalStorageFilesService extends FilesService {
|
|
387
|
+
private http;
|
|
388
|
+
static isSupported(): boolean;
|
|
389
|
+
init(): Promise<void>;
|
|
390
|
+
joinStoragePath(filePath: string): Promise<string | null>;
|
|
391
|
+
hasInStorage(filePath: string): Promise<boolean>;
|
|
392
|
+
readFromStorage(filePath: string): Promise<string>;
|
|
393
|
+
writeToStorage(filePath: string, data: string): Promise<void>;
|
|
394
|
+
hasInProject(filePath: string): Promise<boolean>;
|
|
395
|
+
readFromProject(filePath: string): Promise<string>;
|
|
396
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageFilesService, never>;
|
|
397
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageFilesService>;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
declare enum ThemeType {
|
|
401
|
+
Unset = "",
|
|
402
|
+
Light = "light",
|
|
403
|
+
Dark = "dark"
|
|
404
|
+
}
|
|
405
|
+
declare class ThemeService {
|
|
406
|
+
private settings;
|
|
407
|
+
$theme: i0.Signal<ThemeType>;
|
|
408
|
+
$darkMode: i0.Signal<boolean>;
|
|
409
|
+
private effectSetDarkMode;
|
|
410
|
+
setTheme(theme: ThemeType): Promise<void>;
|
|
411
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
412
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
declare class ContextMenuComponent {
|
|
416
|
+
private elementRef;
|
|
417
|
+
$isSubmenu: i0.InputSignalWithTransform<boolean, unknown>;
|
|
418
|
+
$isVisible: i0.WritableSignal<boolean>;
|
|
419
|
+
$isMeasuring: i0.WritableSignal<boolean>;
|
|
420
|
+
$x: i0.WritableSignal<number>;
|
|
421
|
+
$y: i0.WritableSignal<number>;
|
|
422
|
+
container?: ElementRef<HTMLDivElement>;
|
|
423
|
+
close: i0.OutputEmitterRef<void>;
|
|
424
|
+
constructor(elementRef: ElementRef);
|
|
425
|
+
onDocumentClick(event: MouseEvent): void;
|
|
426
|
+
show(x: number, y: number): void;
|
|
427
|
+
hide(): void;
|
|
428
|
+
private closeMenu;
|
|
429
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuComponent, never>;
|
|
430
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContextMenuComponent, "context-menu", never, { "$isSubmenu": { "alias": "$isSubmenu"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["*"], true, never>;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
declare class ContextHeaderComponent {
|
|
434
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextHeaderComponent, never>;
|
|
435
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContextHeaderComponent, "context-header", never, {}, {}, never, ["*"], true, never>;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
declare class ContextButtonComponent {
|
|
439
|
+
danger: i0.InputSignalWithTransform<boolean, unknown>;
|
|
440
|
+
disabled: i0.InputSignalWithTransform<boolean, unknown>;
|
|
441
|
+
hasSubmenu: i0.InputSignalWithTransform<boolean, unknown>;
|
|
442
|
+
$showSubmenu: i0.WritableSignal<boolean>;
|
|
443
|
+
onMouseEnter(): void;
|
|
444
|
+
onMouseLeave(): void;
|
|
445
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextButtonComponent, never>;
|
|
446
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContextButtonComponent, "context-button", never, { "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasSubmenu": { "alias": "hasSubmenu"; "required": false; "isSignal": true; }; }, {}, never, ["[icon]", "*", "context-menu"], true, never>;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
declare class ContextMenuTriggerDirective {
|
|
450
|
+
private elementRef;
|
|
451
|
+
appContextMenu: i0.InputSignal<ContextMenuComponent>;
|
|
452
|
+
beforeOpen: i0.OutputEmitterRef<void>;
|
|
453
|
+
constructor(elementRef: ElementRef);
|
|
454
|
+
onContextMenu(event: MouseEvent): void;
|
|
455
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuTriggerDirective, never>;
|
|
456
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ContextMenuTriggerDirective, "[appContextMenu]", never, { "appContextMenu": { "alias": "appContextMenu"; "required": true; "isSignal": true; }; }, { "beforeOpen": "beforeOpen"; }, never, never, true, never>;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
export { Async, BackOnClickDirective, CancellationError, CancellationTokenSource, CapacitorFilesService, ConsoleHook, ContextButtonComponent, ContextHeaderComponent, ContextMenuComponent, ContextMenuTriggerDirective, ECHO, ECHO_PROVIDER, Echo, EchoConsole, EchoLogger, EchoSettings, EchoSystemLogger, FileBoxService, FilesService, KeySignals, LocalStorageFilesService, LocalizationService, LocalizePipe, LogLevel, LogSystems, LogWriterConfig, NavigationStackService, ServicesInit, SettingsService, SettingsSignalsService, SystemColor, TauriFilesService, ThemeService, ThemeType, echoFactory };
|
|
460
|
+
export type { CancellationToken, EchoLogWriter, ILocalizationService };
|
package/async/README.md
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# async
|
|
2
|
-
|
|
3
|
-
Utilities for working with asynchronous operations.
|
|
4
|
-
|
|
5
|
-
## Files
|
|
6
|
-
|
|
7
|
-
### `async.ts`
|
|
8
|
-
|
|
9
|
-
The `Async` class provides static helper methods for common async patterns:
|
|
10
|
-
|
|
11
|
-
- **`Async.delay(ms)`** — Returns a `Promise` that resolves after a given number of milliseconds. Useful for introducing deliberate pauses in async flows.
|
|
12
|
-
- **`Async.until(check, timeoutMs?, frequencyMs?)`** — Polls a condition function at a given interval until it returns `true`. Throws a `Error` if the timeout is exceeded. Defaults to a 10-second timeout and 100 ms polling frequency.
|
|
13
|
-
|
|
14
|
-
### `cancellation-token.ts`
|
|
15
|
-
|
|
16
|
-
Provides a cooperative cancellation mechanism inspired by .NET's `CancellationToken` pattern:
|
|
17
|
-
|
|
18
|
-
- **`CancellationToken`** *(interface)* — Read-only token that exposes `isCancelled()` and `throwIfCancelled()`. Passed to async operations to signal cancellation without forcing an abort.
|
|
19
|
-
- **`CancellationTokenSource`** — Owns and controls a `CancellationToken`. Call `cancel()` to signal cancellation, or `newUnique(timeoutMs?)` to cancel the previous token and issue a fresh one (optionally with an auto-cancel timeout).
|
|
20
|
-
- **`CancellationError`** — Error subclass thrown by `throwIfCancelled()` when cancellation has been requested.
|
|
21
|
-
|
|
22
|
-
## Usage
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
import { Async } from '@/lib/orcas-angular/async/async';
|
|
26
|
-
import { CancellationTokenSource } from '@/lib/orcas-angular/async/cancellation-token';
|
|
27
|
-
|
|
28
|
-
// Delay example
|
|
29
|
-
await Async.delay(500);
|
|
30
|
-
|
|
31
|
-
// Poll until condition
|
|
32
|
-
await Async.until(() => someFlag === true);
|
|
33
|
-
|
|
34
|
-
// Cancellation example
|
|
35
|
-
const cts = new CancellationTokenSource();
|
|
36
|
-
const token = cts.newUnique(5000); // auto-cancels after 5 s
|
|
37
|
-
|
|
38
|
-
async function doWork() {
|
|
39
|
-
token.throwIfCancelled();
|
|
40
|
-
await Async.delay(100);
|
|
41
|
-
token.throwIfCancelled();
|
|
42
|
-
// ...
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
cts.cancel(); // cancel from outside
|
|
46
|
-
```
|
package/async/async.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export class Async {
|
|
2
|
-
static async delay(ms: number): Promise<void> {
|
|
3
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
static async until(check: () => boolean, timeoutMs: number = 10000, frequencyMs: number = 100): Promise<void> {
|
|
7
|
-
let timePassed = 0;
|
|
8
|
-
while (!check() && timePassed < timeoutMs) {
|
|
9
|
-
await Async.delay(frequencyMs);
|
|
10
|
-
timePassed += frequencyMs;
|
|
11
|
-
|
|
12
|
-
if (timePassed >= timeoutMs)
|
|
13
|
-
throw new Error('Timeout while waiting for condition');
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
export interface CancellationToken {
|
|
2
|
-
isCancelled(): boolean;
|
|
3
|
-
|
|
4
|
-
throwIfCancelled(): void;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
class CancellationTokenInternal implements CancellationToken {
|
|
8
|
-
private _isCancelled: boolean = false;
|
|
9
|
-
|
|
10
|
-
constructor(isCancelled: boolean = false) {
|
|
11
|
-
this._isCancelled = isCancelled;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Gets whether cancellation has been requested
|
|
16
|
-
*/
|
|
17
|
-
public isCancelled(): boolean {
|
|
18
|
-
return this._isCancelled;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Throws an error if cancellation has been requested
|
|
23
|
-
*/
|
|
24
|
-
public throwIfCancelled(): void {
|
|
25
|
-
if (this._isCancelled) {
|
|
26
|
-
throw new CancellationError('Operation was cancelled');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Internal method to cancel the token
|
|
32
|
-
*/
|
|
33
|
-
cancel(): void {
|
|
34
|
-
this._isCancelled = true;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* A token that is never cancelled
|
|
39
|
-
*/
|
|
40
|
-
public static readonly None: CancellationToken = new CancellationTokenInternal(false);
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* A token that is already cancelled
|
|
44
|
-
*/
|
|
45
|
-
public static readonly Cancelled: CancellationToken = new CancellationTokenInternal(true);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Error thrown when an operation is cancelled
|
|
50
|
-
*/
|
|
51
|
-
export class CancellationError extends Error {
|
|
52
|
-
constructor(message: string = 'Operation was cancelled') {
|
|
53
|
-
super(message);
|
|
54
|
-
this.name = 'CancellationError';
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Source for creating and managing cancellation tokens
|
|
60
|
-
*/
|
|
61
|
-
export class CancellationTokenSource {
|
|
62
|
-
private _token: CancellationTokenInternal = new CancellationTokenInternal();
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Gets the token currently associated with this source
|
|
66
|
-
*/
|
|
67
|
-
public get token(): CancellationToken {
|
|
68
|
-
return this._token;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Cancels the current token and creates a new one
|
|
73
|
-
*/
|
|
74
|
-
public newUnique(timeoutMs: number = -1): CancellationToken {
|
|
75
|
-
this._token.cancel();
|
|
76
|
-
this._token = new CancellationTokenInternal();
|
|
77
|
-
|
|
78
|
-
if (timeoutMs != -1)
|
|
79
|
-
setTimeout(() => this._token.cancel(), timeoutMs);
|
|
80
|
-
|
|
81
|
-
return this._token;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Cancels the current token
|
|
86
|
-
*/
|
|
87
|
-
public cancel(): void {
|
|
88
|
-
this._token.cancel();
|
|
89
|
-
}
|
|
90
|
-
}
|
package/dev/README.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# dev
|
|
2
|
-
|
|
3
|
-
Development and debugging utilities. These helpers are meant for use during development only and should not be shipped as core application services.
|
|
4
|
-
|
|
5
|
-
## Files
|
|
6
|
-
|
|
7
|
-
### `console-hook.ts`
|
|
8
|
-
|
|
9
|
-
`ConsoleHook` exposes a lightweight command registry that can be invoked from the browser console. It registers a global `window.r(command, ...args)` function so that developers can call application methods without needing to open Angular DevTools.
|
|
10
|
-
|
|
11
|
-
**Methods:**
|
|
12
|
-
- **`ConsoleHook.initialize()`** — Sets up `window.r` if it has not been set up yet.
|
|
13
|
-
- **`ConsoleHook.register(commandName, method)`** — Registers a named command. Automatically calls `initialize()`.
|
|
14
|
-
- **`ConsoleHook.run(input, ...additionalParams)`** — Parses the input string (command name + space-separated arguments) and executes the matching registered command.
|
|
15
|
-
|
|
16
|
-
**Browser console usage:**
|
|
17
|
-
```javascript
|
|
18
|
-
// Call a registered command named "example" with no extra args
|
|
19
|
-
r("example")
|
|
20
|
-
|
|
21
|
-
// Call "myCommand" with arguments
|
|
22
|
-
r("myCommand arg1 arg2")
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### `debug.service.ts.example`
|
|
26
|
-
|
|
27
|
-
A template showing how to integrate `ConsoleHook` into an Angular service. Copy this file, rename it to `debug.service.ts`, and adapt it to register the commands relevant to your application.
|
|
28
|
-
|
|
29
|
-
The example registers two commands:
|
|
30
|
-
- `"example"` — returns the injected `ExampleService` instance.
|
|
31
|
-
- `"nop"` — logs `"nop"` to the console and returns `"1"`.
|
|
32
|
-
|
|
33
|
-
## Usage
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
import { ConsoleHook } from '@/lib/orcas-angular/dev/console-hook';
|
|
37
|
-
|
|
38
|
-
// In any service or component constructor:
|
|
39
|
-
ConsoleHook.register('reload', () => location.reload());
|
|
40
|
-
ConsoleHook.register('clearStorage', () => localStorage.clear());
|
|
41
|
-
```
|
package/dev/console-hook.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export class ConsoleHook {
|
|
2
|
-
private static commands: { [key: string]: Function } = {};
|
|
3
|
-
|
|
4
|
-
static initialize() {
|
|
5
|
-
if (!(window as any).r)
|
|
6
|
-
(window as any).r = ConsoleHook.run.bind(ConsoleHook);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
static register(commandName: string, method: Function) {
|
|
10
|
-
ConsoleHook.initialize();
|
|
11
|
-
ConsoleHook.commands[commandName] = method;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
static run(input: string, ...additionalParams: any[]) {
|
|
15
|
-
const [commandName, ...params] = input.split(' ');
|
|
16
|
-
const command = ConsoleHook.commands[commandName];
|
|
17
|
-
|
|
18
|
-
if (command) {
|
|
19
|
-
return command(...params, ...additionalParams);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
console.error(`Custom command "${commandName}" not found.`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|