@inpageedit/core 0.3.2 → 0.4.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.
@@ -14,6 +14,6 @@ export default class BasePlugin<T extends unknown = any> {
14
14
  protected removeDisposeHandler(fn: DisposeHandler): void;
15
15
  set name(name: string);
16
16
  get name(): string;
17
- get logger(): import('cordis').Logger;
17
+ get logger(): import('../InPageEdit').Logger;
18
18
  }
19
19
  export {};
@@ -29,6 +29,7 @@ export declare class SsiModalService {
29
29
  private modal?;
30
30
  constructor(ctx: InPageEdit);
31
31
  protected start(): void | Promise<void>;
32
+ get logger(): import('../InPageEdit').Logger;
32
33
  protected stop(): void | Promise<void>;
33
34
  hackSsiModal(ssiModalLib: LibSsiModal): SsiModal.ssi_modal;
34
35
  }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Browser Logger — tiny extensible logger for the browser.
3
+ *
4
+ * Goals:
5
+ * - Support `new Logger({...})` AND callable instances: `logger('group', opts?)`.
6
+ * - Log levels with threshold filtering; per-call override via `{ print: true }`.
7
+ * - Prefix (app name) and nested groups with colorized labels (CSS `%c`).
8
+ * - Deterministic colors per label; overrideable, last-set wins.
9
+ * - Custom levels (e.g., success, debug) with `logger.defineLevel(...)`.
10
+ * - Extensible via lightweight hooks.
11
+ *
12
+ * Usage:
13
+ * const logger = new Logger({ level: 2, name: 'MyApp', color: 'green' });
14
+ * logger.info('message', { any: 'value' });
15
+ * const group = logger('group', { color: 'blue' });
16
+ * group.warn('message');
17
+ * logger.defineLevel('success', { rank: 1, label: 'S', method: 'info' });
18
+ * logger.success('Saved!', { id: 123 }, { print: true });
19
+ */
20
+ export type ConsoleMethod = 'log' | 'info' | 'warn' | 'error';
21
+ export interface LevelDef {
22
+ /** Severity rank. Lower = less severe. Only messages with rank >= logger.level print, unless per-call {print:true}. */
23
+ rank: number;
24
+ /** Badge shown like [I], [W]. */
25
+ label?: string;
26
+ /** console method used for emission. */
27
+ method?: ConsoleMethod;
28
+ }
29
+ export declare enum LoggerLevel {
30
+ debug = -1,
31
+ log = 0,
32
+ info = 1,
33
+ warn = 2,
34
+ error = 3,
35
+ silent = 4
36
+ }
37
+ export interface LoggerOptions {
38
+ /** Minimum severity to print: 0 log, 1 info, 2 warn, 3 error. */
39
+ level?: LoggerLevel | number;
40
+ /** App prefix. Can be empty string to omit. */
41
+ name?: string;
42
+ /** CSS color for the prefix. If omitted, deterministic color will be chosen. */
43
+ color?: string;
44
+ /** Quick on/off switch. */
45
+ enabled?: boolean;
46
+ /** Optional custom levels at construction time. */
47
+ levels?: Record<string, LevelDef>;
48
+ }
49
+ export interface GroupOptions {
50
+ /** CSS color for the group label. */
51
+ color?: string;
52
+ }
53
+ export interface LogCallOptions {
54
+ /** Force printing this call even if below the threshold. */
55
+ print?: boolean;
56
+ }
57
+ export interface Hooks {
58
+ /** Called right before emitting. Return false to cancel. */
59
+ beforeEmit?: (payload: EmitPayload) => boolean | void;
60
+ /** Called after a successful emit. */
61
+ afterEmit?: (payload: EmitPayload) => void;
62
+ }
63
+ export interface EmitPayload {
64
+ level: string;
65
+ rank: number;
66
+ method: ConsoleMethod;
67
+ prefix?: string;
68
+ groupPath: string[];
69
+ args: unknown[];
70
+ enabled: boolean;
71
+ willPrint: boolean;
72
+ }
73
+ export interface LoggerInstance {
74
+ readonly isLogger: true;
75
+ /** Current threshold. Set like: logger.level = 2 */
76
+ level: number;
77
+ /** Toggle output. */
78
+ enabled: boolean;
79
+ /** Prefix name (app). */
80
+ name?: string;
81
+ /** Explicit prefix color. */
82
+ color?: string;
83
+ log: (...args: unknown[]) => void;
84
+ info: (...args: unknown[]) => void;
85
+ warn: (...args: unknown[]) => void;
86
+ error: (...args: unknown[]) => void;
87
+ /** Emit at a specific level name. */
88
+ at: (levelName: string, ...args: unknown[]) => void;
89
+ /** Define or override a level and create a convenience method. */
90
+ defineLevel: (name: string, def: LevelDef) => void;
91
+ /** Return a child logger under a group (also available via calling the instance). */
92
+ group: (label: string, opts?: GroupOptions) => Logger;
93
+ /** Register hooks. Any missing callbacks keep their previous values. */
94
+ setHooks: (hooks: Hooks) => void;
95
+ /** Assign or override colors for labels (prefix/groups). */
96
+ setLabelColor: (label: string, color: string) => void;
97
+ }
98
+ export interface LoggerCallable {
99
+ (label: string, opts?: GroupOptions): Logger;
100
+ }
101
+ export type Logger = LoggerInstance & LoggerCallable;
102
+ export declare const Logger: {
103
+ new (opts?: LoggerOptions): Logger;
104
+ /** Helper factory without `new` */
105
+ create: (opts?: LoggerOptions) => Logger;
106
+ };
@@ -2,4 +2,4 @@ import { InPageEdit } from '../InPageEdit';
2
2
  import { App } from 'vue';
3
3
  export declare const IPEInjectKey: unique symbol;
4
4
  export declare const injectIPE: (ipe: InPageEdit, app?: App) => InPageEdit;
5
- export declare const useIPE: () => InPageEdit | undefined;
5
+ export declare const useIPE: () => InPageEdit;