devlog-ui 0.1.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/dist/noop.js ADDED
@@ -0,0 +1,132 @@
1
+ var c = Object.defineProperty;
2
+ var g = (s, t, o) => t in s ? c(s, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : s[t] = o;
3
+ var n = (s, t, o) => g(s, typeof t != "symbol" ? t + "" : t, o);
4
+ const e = () => {
5
+ }, f = async () => !1, r = {
6
+ id: "",
7
+ event: {},
8
+ ended: !0,
9
+ debug: e,
10
+ info: e,
11
+ warn: e,
12
+ error: e,
13
+ span: () => r,
14
+ end: e,
15
+ fail: e
16
+ }, i = {
17
+ debug: e,
18
+ info: e,
19
+ warn: e,
20
+ error: e,
21
+ span: () => r,
22
+ withContext: () => i
23
+ }, a = {
24
+ changes: [],
25
+ summary: { added: 0, removed: 0, changed: 0, unchanged: 0 }
26
+ }, p = {
27
+ info: e,
28
+ warn: e,
29
+ error: e,
30
+ debug: e,
31
+ configure: e,
32
+ clear: e,
33
+ importLogs: e,
34
+ getLogs: () => [],
35
+ subscribe: () => e,
36
+ getSessionId: () => "",
37
+ getConfig: () => ({ maxLogs: 1e3, persist: !1, minLevel: "debug", enabled: !1 }),
38
+ isEnabled: () => !1,
39
+ // Span API
40
+ span: () => r,
41
+ getSpans: () => [],
42
+ getSpan: () => {
43
+ },
44
+ getSpanLogs: () => [],
45
+ subscribeSpans: () => e,
46
+ // Context API
47
+ setGlobalContext: e,
48
+ updateGlobalContext: e,
49
+ getGlobalContext: () => ({}),
50
+ clearGlobalContext: e,
51
+ withContext: () => i,
52
+ // Export API
53
+ exportLogs: () => "[]",
54
+ copyLogs: f,
55
+ // Diff API
56
+ diff: () => a,
57
+ computeDiff: () => a
58
+ }, u = {
59
+ init: e,
60
+ open: e,
61
+ close: e,
62
+ toggle: e,
63
+ popout: e,
64
+ closePopout: e,
65
+ isPopoutOpen: () => !1,
66
+ setFilter: e,
67
+ getFilter: () => ({ levels: /* @__PURE__ */ new Set(["debug", "info", "warn", "error"]), search: "", file: "" }),
68
+ clearFilter: e,
69
+ destroy: e,
70
+ isVisible: () => !1,
71
+ isInitialized: () => !1
72
+ }, b = {
73
+ install: e,
74
+ uninstall: e,
75
+ isActive: () => !1,
76
+ getConfig: () => ({
77
+ captureErrors: !1,
78
+ captureRejections: !1,
79
+ errorPrefix: "[Uncaught Error]",
80
+ rejectionPrefix: "[Unhandled Rejection]"
81
+ })
82
+ }, h = {
83
+ enable: e,
84
+ disable: e,
85
+ isActive: () => !1,
86
+ hadCrash: () => !1,
87
+ getPersistedLogs: () => [],
88
+ rehydrate: () => 0,
89
+ clear: e,
90
+ getConfig: () => ({
91
+ storage: "session",
92
+ maxPersisted: 500,
93
+ debounceMs: 100
94
+ })
95
+ }, m = {
96
+ install: e,
97
+ uninstall: e,
98
+ isActive: () => !1,
99
+ getConfig: () => ({
100
+ captureFetch: !1,
101
+ captureXHR: !1,
102
+ includeHeaders: !1,
103
+ includeBody: !1,
104
+ includeResponse: !1,
105
+ maxResponseLength: 1e3,
106
+ ignorePatterns: [],
107
+ context: {}
108
+ }),
109
+ addIgnorePattern: e
110
+ };
111
+ class l {
112
+ constructor() {
113
+ n(this, "setTimeWindow", e);
114
+ n(this, "destroy", e);
115
+ }
116
+ }
117
+ const x = l, C = () => new l(), L = () => [], w = () => a, v = () => !1, P = (s) => String(s), S = "0.1.0";
118
+ export {
119
+ u as DevLoggerUI,
120
+ b as ErrorCapture,
121
+ h as LogPersistence,
122
+ m as NetworkCapture,
123
+ x as Timeline,
124
+ S as VERSION,
125
+ L as computeDiff,
126
+ w as createDiffResult,
127
+ C as createTimeline,
128
+ P as formatValue,
129
+ v as hasChanges,
130
+ p as logger
131
+ };
132
+ //# sourceMappingURL=noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop.js","sources":["../src/noop.ts"],"sourcesContent":["/**\n * DevLogger - No-Op Export for Production\n *\n * Import this instead of the main export in production builds\n * to completely eliminate logging code via tree-shaking.\n *\n * Usage in vite.config.ts:\n * ```ts\n * resolve: {\n * alias: {\n * 'devlogger': process.env.NODE_ENV === 'production'\n * ? 'devlogger/noop'\n * : 'devlogger'\n * }\n * }\n * ```\n *\n * @packageDocumentation\n */\n\n// No-op logger that does nothing\nconst noop = () => {};\nconst noopAsync = async () => false;\n\n// No-op span\nconst noopSpan = {\n id: '',\n event: {} as never,\n ended: true,\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n span: () => noopSpan,\n end: noop,\n fail: noop,\n};\n\n// No-op context logger\nconst noopContextLogger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n span: () => noopSpan,\n withContext: () => noopContextLogger,\n};\n\n// No-op diff result\nconst noopDiffResult = {\n changes: [] as const,\n summary: { added: 0, removed: 0, changed: 0, unchanged: 0 },\n};\n\nexport const logger = {\n info: noop,\n warn: noop,\n error: noop,\n debug: noop,\n configure: noop,\n clear: noop,\n importLogs: noop,\n getLogs: () => [] as const,\n subscribe: () => noop,\n getSessionId: () => '',\n getConfig: () => ({ maxLogs: 1000, persist: false, minLevel: 'debug' as const, enabled: false }),\n isEnabled: () => false,\n // Span API\n span: () => noopSpan,\n getSpans: () => [] as const,\n getSpan: () => undefined,\n getSpanLogs: () => [] as const,\n subscribeSpans: () => noop,\n // Context API\n setGlobalContext: noop,\n updateGlobalContext: noop,\n getGlobalContext: () => ({}),\n clearGlobalContext: noop,\n withContext: () => noopContextLogger,\n // Export API\n exportLogs: () => '[]',\n copyLogs: noopAsync,\n // Diff API\n diff: () => noopDiffResult,\n computeDiff: () => noopDiffResult,\n};\n\nexport const DevLoggerUI = {\n init: noop,\n open: noop,\n close: noop,\n toggle: noop,\n popout: noop,\n closePopout: noop,\n isPopoutOpen: () => false,\n setFilter: noop,\n getFilter: () => ({ levels: new Set(['debug', 'info', 'warn', 'error'] as const), search: '', file: '' }),\n clearFilter: noop,\n destroy: noop,\n isVisible: () => false,\n isInitialized: () => false,\n};\n\nexport const ErrorCapture = {\n install: noop,\n uninstall: noop,\n isActive: () => false,\n getConfig: () => ({\n captureErrors: false,\n captureRejections: false,\n errorPrefix: '[Uncaught Error]',\n rejectionPrefix: '[Unhandled Rejection]',\n }),\n};\n\nexport const LogPersistence = {\n enable: noop,\n disable: noop,\n isActive: () => false,\n hadCrash: () => false,\n getPersistedLogs: () => [] as const,\n rehydrate: () => 0,\n clear: noop,\n getConfig: () => ({\n storage: 'session' as const,\n maxPersisted: 500,\n debounceMs: 100,\n }),\n};\n\nexport const NetworkCapture = {\n install: noop,\n uninstall: noop,\n isActive: () => false,\n getConfig: () => ({\n captureFetch: false,\n captureXHR: false,\n includeHeaders: false,\n includeBody: false,\n includeResponse: false,\n maxResponseLength: 1000,\n ignorePatterns: [] as const,\n context: {},\n }),\n addIgnorePattern: noop,\n};\n\n// No-op timeline\nclass NoopTimeline {\n setTimeWindow = noop;\n destroy = noop;\n}\n\nexport const Timeline = NoopTimeline;\nexport const createTimeline = () => new NoopTimeline();\n\n// No-op diff utilities\nexport const computeDiff = () => [] as const;\nexport const createDiffResult = () => noopDiffResult;\nexport const hasChanges = () => false;\nexport const formatValue = (v: unknown) => String(v);\n\nexport const VERSION = '0.1.0';\n\n// Types are still exported for type-checking\nexport type {\n LogEvent,\n LogLevel,\n LoggerConfig,\n Source,\n LogSubscriber,\n SpanSubscriber,\n Unsubscribe,\n LogContext,\n SpanEvent,\n SpanStatus,\n DiffEntry,\n DiffResult,\n DiffChangeType,\n} from './core/types';\nexport type { FilterState } from './ui/filter';\nexport type { ErrorCaptureConfig } from './core/error-capture';\nexport type { PersistenceConfig } from './core/persistence';\nexport type { NetworkCaptureConfig } from './core/network-capture';\nexport type { TimelineConfig } from './ui/timeline';\nexport type { ExportOptions, LogSpan, ContextLogger } from './core/logger';\n"],"names":["noop","noopAsync","noopSpan","noopContextLogger","noopDiffResult","logger","DevLoggerUI","ErrorCapture","LogPersistence","NetworkCapture","NoopTimeline","__publicField","Timeline","createTimeline","computeDiff","createDiffResult","hasChanges","formatValue","v","VERSION"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "devlog-ui",
3
+ "version": "0.1.0",
4
+ "description": "Lightweight browser dev-logger with UI overlay and pop-out window. Zero overhead in production.",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./noop": {
16
+ "types": "./dist/noop.d.ts",
17
+ "import": "./dist/noop.js",
18
+ "require": "./dist/noop.cjs"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "scripts": {
25
+ "dev": "vite",
26
+ "build": "tsc && vite build",
27
+ "preview": "vite preview",
28
+ "typecheck": "tsc --noEmit",
29
+ "lint": "eslint src --ext .ts,.tsx",
30
+ "test": "vitest run",
31
+ "test:watch": "vitest"
32
+ },
33
+ "keywords": [
34
+ "logger",
35
+ "debug",
36
+ "console",
37
+ "devtools",
38
+ "browser",
39
+ "development",
40
+ "debugging",
41
+ "log-viewer",
42
+ "overlay"
43
+ ],
44
+ "author": "Alexander Remer",
45
+ "license": "MIT",
46
+ "repository": {
47
+ "type": "git",
48
+ "url": "https://github.com/Oko-Tester/logview.git"
49
+ },
50
+ "bugs": {
51
+ "url": "https://github.com/Oko-Tester/logview/issues"
52
+ },
53
+ "homepage": "https://github.com/Oko-Tester/logview#readme",
54
+ "engines": {
55
+ "node": ">=18.0.0"
56
+ },
57
+ "sideEffects": false,
58
+ "devDependencies": {
59
+ "@eslint/js": "^9.18.0",
60
+ "@typescript-eslint/eslint-plugin": "^8.18.2",
61
+ "@typescript-eslint/parser": "^8.18.2",
62
+ "eslint": "^9.18.0",
63
+ "jsdom": "^27.4.0",
64
+ "typescript": "^5.7.3",
65
+ "vite": "^6.0.7",
66
+ "vite-plugin-dts": "^4.3.0",
67
+ "vitest": "^2.1.8"
68
+ }
69
+ }