@kosdev-code/kos-ui-sdk 2.0.41 → 2.1.1
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/core/core/decorators/index.d.ts +4 -0
- package/core/core/decorators/index.d.ts.map +1 -1
- package/core/core/decorators/kos-companion.d.ts +125 -8
- package/core/core/decorators/kos-companion.d.ts.map +1 -1
- package/core/core/decorators/kos-container-aware.d.ts +465 -0
- package/core/core/decorators/kos-container-aware.d.ts.map +1 -0
- package/core/core/decorators/kos-future-aware.d.ts +150 -0
- package/core/core/decorators/kos-future-aware.d.ts.map +1 -0
- package/core/core/decorators/kos-logger-aware.d.ts +96 -0
- package/core/core/decorators/kos-logger-aware.d.ts.map +1 -0
- package/core/core/decorators/kos-trouble-aware.d.ts +71 -0
- package/core/core/decorators/kos-trouble-aware.d.ts.map +1 -0
- package/core/core/decorators/kosModel.d.ts +8 -2
- package/core/core/decorators/kosModel.d.ts.map +1 -1
- package/core/core/decorators/kosTopicHandler.d.ts.map +1 -1
- package/core/core/decorators/propKeys.d.ts +4 -0
- package/core/core/decorators/propKeys.d.ts.map +1 -1
- package/core/core/extension/extension-manager.d.ts +1 -1
- package/core/core/extension/extension-manager.d.ts.map +1 -1
- package/core/core/kosCore.d.ts.map +1 -1
- package/core/core/registration/index.d.ts +1 -0
- package/core/core/registration/index.d.ts.map +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.d.ts.map +1 -1
- package/core/util/container-utils.d.ts +3 -2
- package/core/util/container-utils.d.ts.map +1 -1
- package/core/util/observable-proxy-map.d.ts.map +1 -1
- package/index.cjs +79 -76
- package/index.cjs.map +1 -1
- package/index.d.cts +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +9672 -7760
- package/index.js.map +1 -1
- package/models/models/browser-router/browser-router-model.d.ts +80 -1
- package/models/models/browser-router/browser-router-model.d.ts.map +1 -1
- package/models/models/browser-router/types/index.d.ts +25 -1
- package/models/models/config-bean/config-bean-model-builder.d.ts +4 -2
- package/models/models/config-bean/config-bean-model-builder.d.ts.map +1 -1
- package/models/models/config-bean/config-bean-model.d.ts +117 -13
- package/models/models/config-bean/config-bean-model.d.ts.map +1 -1
- package/models/models/config-bean/config-bean-types.d.ts +6 -3
- package/models/models/config-bean/config-bean-types.d.ts.map +1 -1
- package/models/models/config-bean/types/index.d.ts +33 -0
- package/models/models/config-bean-prop/config-bean-prop-model.d.ts +112 -1
- package/models/models/config-bean-prop/config-bean-prop-model.d.ts.map +1 -1
- package/models/models/config-bean-prop/types/index.d.ts +293 -17
- package/models/models/device/device-model.d.ts +219 -9
- package/models/models/device/device-model.d.ts.map +1 -1
- package/models/models/device/device-registration.d.ts +61 -48
- package/models/models/device/device-registration.d.ts.map +1 -1
- package/models/models/device/types/index.d.ts +41 -0
- package/models/models/future/future-aware.d.ts +82 -0
- package/models/models/future/future-aware.d.ts.map +1 -1
- package/models/models/future/future-model.d.ts +34 -5
- package/models/models/future/future-model.d.ts.map +1 -1
- package/models/models/future/future-types.d.ts +186 -7
- package/models/models/future/future-types.d.ts.map +1 -1
- package/models/models/future-container/future-container-model.d.ts +2 -2
- package/models/models/index.d.ts +1 -0
- package/models/models/index.d.ts.map +1 -1
- package/models/models/key-value/index.d.ts +4 -0
- package/models/models/key-value/index.d.ts.map +1 -1
- package/models/models/key-value/key-value-model.d.ts +111 -0
- package/models/models/key-value/key-value-model.d.ts.map +1 -1
- package/models/models/key-value/services/key-value-services.d.ts +124 -2
- package/models/models/key-value/services/key-value-services.d.ts.map +1 -1
- package/models/models/key-value/types/index.d.ts +56 -0
- package/models/models/kos-expression-evaluator/index.d.ts +4 -0
- package/models/models/kos-expression-evaluator/index.d.ts.map +1 -0
- package/models/models/kos-expression-evaluator/kos-expression-evaluator-model.d.ts +209 -0
- package/models/models/kos-expression-evaluator/kos-expression-evaluator-model.d.ts.map +1 -0
- package/models/models/kos-expression-evaluator/services/index.d.ts +6 -0
- package/models/models/kos-expression-evaluator/services/index.d.ts.map +1 -0
- package/models/models/kos-expression-evaluator/services/kos-expression-evaluator-services.d.ts +15 -0
- package/models/models/kos-expression-evaluator/services/kos-expression-evaluator-services.d.ts.map +1 -0
- package/models/models/kos-expression-evaluator/types/index.d.ts +1 -0
- package/models/models/kos-log-manager/kos-log-manager-model.d.ts +61 -14
- package/models/models/kos-log-manager/kos-log-manager-model.d.ts.map +1 -1
- package/models/models/kos-log-manager/types/index.d.ts +187 -0
- package/models/models/kos-time/kos-time-model.d.ts +64 -0
- package/models/models/kos-time/kos-time-model.d.ts.map +1 -1
- package/models/models/kos-time/types/index.d.ts +80 -0
- package/models/models/log-block/log-block-container-model.d.ts +132 -0
- package/models/models/log-block/log-block-container-model.d.ts.map +1 -1
- package/models/models/log-block/log-block-model.d.ts +185 -0
- package/models/models/log-block/log-block-model.d.ts.map +1 -1
- package/models/models/log-block/types/index.d.ts +129 -0
- package/models/models/log-stream/index.d.ts +6 -2
- package/models/models/log-stream/index.d.ts.map +1 -1
- package/models/models/log-stream/log-stream-container-model.d.ts +62 -0
- package/models/models/log-stream/log-stream-container-model.d.ts.map +1 -1
- package/models/models/log-stream/log-stream-model.d.ts +55 -0
- package/models/models/log-stream/log-stream-model.d.ts.map +1 -1
- package/models/models/log-stream/services/log-stream-services.d.ts +2 -1
- package/models/models/log-stream/services/log-stream-services.d.ts.map +1 -1
- package/models/models/log-stream/types/index.d.ts +77 -0
- package/models/models/network-interface/index.d.ts +6 -2
- package/models/models/network-interface/index.d.ts.map +1 -1
- package/models/models/network-interface/network-interface-container-model.d.ts +62 -0
- package/models/models/network-interface/network-interface-container-model.d.ts.map +1 -1
- package/models/models/network-interface/network-interface-container-registration.d.ts +2 -1
- package/models/models/network-interface/network-interface-container-registration.d.ts.map +1 -1
- package/models/models/network-interface/network-interface-model.d.ts +77 -0
- package/models/models/network-interface/network-interface-model.d.ts.map +1 -1
- package/models/models/network-interface/network-interface-registration.d.ts +2 -1
- package/models/models/network-interface/network-interface-registration.d.ts.map +1 -1
- package/models/models/network-interface/services/network-interface-services.d.ts +54 -0
- package/models/models/network-interface/services/network-interface-services.d.ts.map +1 -1
- package/models/models/network-interface/types/index.d.ts +21 -0
- package/models/models/ota/ota-model.d.ts +82 -3
- package/models/models/ota/ota-model.d.ts.map +1 -1
- package/models/models/ota/types/index.d.ts +146 -0
- package/models/models/region-info/region-info-model.d.ts +7 -3
- package/models/models/region-info/region-info-model.d.ts.map +1 -1
- package/models/models/region-info/services/region-info-services.d.ts.map +1 -1
- package/models/models/region-info/types/index.d.ts +141 -13
- package/models/models/region-info/types/index.d.ts.map +1 -1
- package/models/models/software-info/software-info-model.d.ts +74 -2
- package/models/models/software-info/software-info-model.d.ts.map +1 -1
- package/models/models/software-info/types/index.d.ts +48 -16
- package/models/models/state-bean/state-bean-model.d.ts +86 -9
- package/models/models/state-bean/state-bean-model.d.ts.map +1 -1
- package/models/models/state-bean/types/index.d.ts +114 -6
- package/models/models/state-prop/state-prop-model.d.ts +78 -1
- package/models/models/state-prop/state-prop-model.d.ts.map +1 -1
- package/models/models/state-prop/types/index.d.ts +55 -7
- package/models/models/storage-device/storage-device-container-model.d.ts +289 -2
- package/models/models/storage-device/storage-device-container-model.d.ts.map +1 -1
- package/models/models/storage-device/storage-device-model.d.ts +84 -2
- package/models/models/storage-device/storage-device-model.d.ts.map +1 -1
- package/models/models/storage-device/types/index.d.ts +112 -0
- package/models/models/studio-properties/studio-properties-model.d.ts +75 -0
- package/models/models/studio-properties/studio-properties-model.d.ts.map +1 -1
- package/models/models/studio-properties/types/index.d.ts +29 -0
- package/models/models/translation/services/translation-services.d.ts +128 -2
- package/models/models/translation/services/translation-services.d.ts.map +1 -1
- package/models/models/translation/translation-container-model.d.ts +100 -10
- package/models/models/translation/translation-container-model.d.ts.map +1 -1
- package/models/models/translation/translation-container-registration.d.ts +2 -1
- package/models/models/translation/translation-container-registration.d.ts.map +1 -1
- package/models/models/translation/translation-context.d.ts +1 -16
- package/models/models/translation/translation-context.d.ts.map +1 -1
- package/models/models/translation/translation-model.d.ts +113 -1
- package/models/models/translation/translation-model.d.ts.map +1 -1
- package/models/models/translation/types/index.d.ts +340 -0
- package/models/models/trouble/services/trouble-services.d.ts +3 -3
- package/models/models/trouble/services/trouble-services.d.ts.map +1 -1
- package/models/models/trouble/trouble-model.d.ts +2 -1
- package/models/models/trouble/trouble-model.d.ts.map +1 -1
- package/models/models/trouble/types/index.d.ts +22 -93
- package/models/models/trouble/utils/is-trouble-aware.d.ts +2 -2
- package/models/models/trouble/utils/is-trouble-aware.d.ts.map +1 -1
- package/models/models/trouble-container/index.d.ts +4 -3
- package/models/models/trouble-container/index.d.ts.map +1 -1
- package/models/models/trouble-container/trouble-container-model.d.ts +9 -5
- package/models/models/trouble-container/trouble-container-model.d.ts.map +1 -1
- package/models/models/trouble-container/types/index.d.ts +2 -15
- package/models/utils/client.d.ts +8 -8
- package/models/utils/core-registration-manager.d.ts +1 -1
- package/models/utils/core-registration-manager.d.ts.map +1 -1
- package/models/utils/index.d.ts +0 -2
- package/models/utils/index.d.ts.map +1 -1
- package/models/utils/service.d.ts +9 -9
- package/package.json +2 -2
- package/ui/contexts/state-bean/state-bean-provider.d.ts.map +1 -1
- package/ui/hooks/state-bean/use-state-bean.d.ts +2 -2
- package/ui/hooks/state-bean/use-state-bean.d.ts.map +1 -1
- package/ui/hooks/state-bean/with-state-bean.d.ts.map +1 -1
- package/ui/hooks/translation-container/use-translation-container.d.ts +4 -33
- package/ui/hooks/translation-container/use-translation-container.d.ts.map +1 -1
- package/models/models/trouble-container/trouble-container-registration.d.ts +0 -5
- package/models/models/trouble-container/trouble-container-registration.d.ts.map +0 -1
- package/models/utils/kosmodel-compatible-future-mixin.d.ts +0 -142
- package/models/utils/kosmodel-compatible-future-mixin.d.ts.map +0 -1
- package/models/utils/kosmodel-interface-companion-mixin.d.ts +0 -83
- package/models/utils/kosmodel-interface-companion-mixin.d.ts.map +0 -1
|
@@ -4,7 +4,192 @@ import { IKosIdentifiable } from '../../../core/core/types';
|
|
|
4
4
|
import { IKosDataModel, KosCreationContext } from '../../../core/core/kosModel';
|
|
5
5
|
|
|
6
6
|
export declare const MODEL_TYPE = "log-block-model";
|
|
7
|
+
/**
|
|
8
|
+
* Log Block Model - Individual log data block management within streaming log systems.
|
|
9
|
+
*
|
|
10
|
+
* This model represents a single block of log data within a LogStreamModel, providing efficient
|
|
11
|
+
* memory management and organized access to log lines. Log blocks are the fundamental storage
|
|
12
|
+
* units that enable high-performance log streaming by breaking large log streams into
|
|
13
|
+
* manageable, sequential segments with precise line numbering and timing information.
|
|
14
|
+
*
|
|
15
|
+
* ## Key Features
|
|
16
|
+
* - **Block-based Storage** - Efficient memory usage through segmented log storage
|
|
17
|
+
* - **Line Management** - Precise line numbering with start/end tracking
|
|
18
|
+
* - **Time-based Organization** - Temporal ordering with start and end timestamps
|
|
19
|
+
* - **Dynamic Loading** - On-demand synchronization of log lines from source
|
|
20
|
+
* - **Incremental Updates** - Add new lines without full reload
|
|
21
|
+
* - **Stream Integration** - Seamless integration with LogStreamModel containers
|
|
22
|
+
*
|
|
23
|
+
* ## Architecture Relationship
|
|
24
|
+
* LogBlock works as a component within the broader log streaming architecture:
|
|
25
|
+
* - **LogStreamModel** contains multiple LogBlockModels via LogBlockContainerModel
|
|
26
|
+
* - **LogBlockContainerModel** manages and sorts blocks by block number
|
|
27
|
+
* - **LogBlockModel** stores the actual log lines and metadata for a specific segment
|
|
28
|
+
* - This design enables efficient memory usage and fast access to recent log data
|
|
29
|
+
*
|
|
30
|
+
* ## Common Use Cases
|
|
31
|
+
* - **Memory-efficient Log Storage** - Break large log streams into manageable blocks
|
|
32
|
+
* - **Sequential Log Access** - Navigate through log history by block
|
|
33
|
+
* - **Selective Loading** - Load only needed blocks for performance
|
|
34
|
+
* - **Log Line Management** - Add, retrieve, and manage individual log entries
|
|
35
|
+
* - **Time-based Log Analysis** - Filter and analyze logs by time ranges
|
|
36
|
+
* - **Stream Synchronization** - Keep log blocks synchronized with source streams
|
|
37
|
+
*
|
|
38
|
+
* @interface
|
|
39
|
+
* @example Basic Usage
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Typically accessed through LogStreamModel, not created directly
|
|
42
|
+
* const logStream = LogStream.instance('app-logs')
|
|
43
|
+
* .options({ name: 'application-logs', nodeId: 'primary' })
|
|
44
|
+
* .build();
|
|
45
|
+
*
|
|
46
|
+
* await logStream.load();
|
|
47
|
+
*
|
|
48
|
+
* // Access blocks within the stream
|
|
49
|
+
* const blocks = logStream.blocks;
|
|
50
|
+
* const currentBlock = logStream.currentBlock;
|
|
51
|
+
*
|
|
52
|
+
* if (currentBlock) {
|
|
53
|
+
* console.log(`Block ${currentBlock.blockNum}`);
|
|
54
|
+
* console.log(`Lines: ${currentBlock.startLineNum}-${currentBlock.endLineNum}`);
|
|
55
|
+
* console.log(`Time range: ${currentBlock.startTime} to ${currentBlock.endTime}`);
|
|
56
|
+
* console.log(`Line count: ${currentBlock.lineCount}`);
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example Block Line Management
|
|
61
|
+
* ```typescript
|
|
62
|
+
* // Access through log stream
|
|
63
|
+
* const logStream = LogStream.instance('system-logs').build();
|
|
64
|
+
* const block = logStream.currentBlock;
|
|
65
|
+
*
|
|
66
|
+
* if (block) {
|
|
67
|
+
* // Get current lines
|
|
68
|
+
* console.log(`Block has ${block.lines.length} loaded lines`);
|
|
69
|
+
*
|
|
70
|
+
* // Add new lines (typically done automatically by stream)
|
|
71
|
+
* block.addLines(['New log entry 1', 'New log entry 2']);
|
|
72
|
+
*
|
|
73
|
+
* // Sync with remote source
|
|
74
|
+
* await block.syncLines();
|
|
75
|
+
*
|
|
76
|
+
* // Process lines
|
|
77
|
+
* block.lines.forEach((line, index) => {
|
|
78
|
+
* const globalLineNum = block.startLineNum + index;
|
|
79
|
+
* console.log(`Line ${globalLineNum}: ${line}`);
|
|
80
|
+
* });
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @example Block Analysis and Filtering
|
|
85
|
+
* ```typescript
|
|
86
|
+
* // Analyze blocks within a stream
|
|
87
|
+
* const logStream = LogStream.instance('error-logs').build();
|
|
88
|
+
* await logStream.load();
|
|
89
|
+
*
|
|
90
|
+
* // Find blocks within a time range
|
|
91
|
+
* const startTime = new Date('2024-01-01T00:00:00Z');
|
|
92
|
+
* const endTime = new Date('2024-01-01T23:59:59Z');
|
|
93
|
+
*
|
|
94
|
+
* const blocksInRange = logStream.blocks.filter(block =>
|
|
95
|
+
* block.startTime >= startTime && block.endTime <= endTime
|
|
96
|
+
* );
|
|
97
|
+
*
|
|
98
|
+
* console.log(`Found ${blocksInRange.length} blocks in date range`);
|
|
99
|
+
*
|
|
100
|
+
* // Process error logs from specific blocks
|
|
101
|
+
* for (const block of blocksInRange) {
|
|
102
|
+
* await block.syncLines(); // Ensure lines are loaded
|
|
103
|
+
*
|
|
104
|
+
* const errorLines = block.lines
|
|
105
|
+
* .map((line, index) => ({ line, lineNum: block.startLineNum + index }))
|
|
106
|
+
* .filter(({ line }) => line.includes('ERROR'));
|
|
107
|
+
*
|
|
108
|
+
* if (errorLines.length > 0) {
|
|
109
|
+
* console.log(`Block ${block.blockNum} has ${errorLines.length} errors`);
|
|
110
|
+
* errorLines.forEach(({ line, lineNum }) => {
|
|
111
|
+
* console.log(`Line ${lineNum}: ${line}`);
|
|
112
|
+
* });
|
|
113
|
+
* }
|
|
114
|
+
* }
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @example Block Container Integration
|
|
118
|
+
* ```typescript
|
|
119
|
+
* // Access blocks through their container
|
|
120
|
+
* const logStream = LogStream.instance('debug-logs').build();
|
|
121
|
+
* const blockContainer = logStream.blocks; // This is a LogBlockContainerModel
|
|
122
|
+
*
|
|
123
|
+
* // Blocks are automatically sorted by block number
|
|
124
|
+
* const sortedBlocks = blockContainer.data;
|
|
125
|
+
* console.log(`Stream has ${sortedBlocks.length} blocks`);
|
|
126
|
+
*
|
|
127
|
+
* // Get specific block by ID
|
|
128
|
+
* const blockId = 'debug-logs-block-5';
|
|
129
|
+
* const specificBlock = blockContainer.getModel(blockId);
|
|
130
|
+
*
|
|
131
|
+
* if (specificBlock) {
|
|
132
|
+
* console.log(`Block ${specificBlock.blockNum} loaded`);
|
|
133
|
+
* await specificBlock.syncLines();
|
|
134
|
+
* }
|
|
135
|
+
*
|
|
136
|
+
* // Add new block to container (typically done automatically)
|
|
137
|
+
* const newBlockOptions: LogBlockOptions = {
|
|
138
|
+
* nodeId: 'primary',
|
|
139
|
+
* stream: 'debug-logs',
|
|
140
|
+
* blockNum: 10,
|
|
141
|
+
* startLineNum: 1000,
|
|
142
|
+
* endLineNum: 1099,
|
|
143
|
+
* startTime: new Date(),
|
|
144
|
+
* endTime: new Date(Date.now() + 60000),
|
|
145
|
+
* lineCount: 100
|
|
146
|
+
* };
|
|
147
|
+
*
|
|
148
|
+
* const newBlock = LogBlock.instance('debug-logs-block-10')
|
|
149
|
+
* .options(newBlockOptions)
|
|
150
|
+
* .build();
|
|
151
|
+
*
|
|
152
|
+
* blockContainer.addModel(newBlock);
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @example Block Update and Synchronization
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const block = logStream.currentBlock;
|
|
158
|
+
*
|
|
159
|
+
* if (block) {
|
|
160
|
+
* // Update block metadata (typically done by stream management)
|
|
161
|
+
* const updatedOptions: LogBlockOptions = {
|
|
162
|
+
* ...block,
|
|
163
|
+
* endLineNum: block.endLineNum + 50,
|
|
164
|
+
* endTime: new Date(),
|
|
165
|
+
* lineCount: block.lineCount + 50
|
|
166
|
+
* };
|
|
167
|
+
*
|
|
168
|
+
* block.updateModel(updatedOptions);
|
|
169
|
+
*
|
|
170
|
+
* // Sync to get new lines
|
|
171
|
+
* await block.syncLines();
|
|
172
|
+
*
|
|
173
|
+
* console.log(`Block now has ${block.lines.length} lines loaded`);
|
|
174
|
+
* console.log(`Updated end time: ${block.endTime}`);
|
|
175
|
+
* }
|
|
176
|
+
* ```
|
|
177
|
+
*
|
|
178
|
+
* @group KOS Model
|
|
179
|
+
* @category Device Logging
|
|
180
|
+
* @useDeclaredType
|
|
181
|
+
*
|
|
182
|
+
* @see {@link LogStreamModel} - Parent stream model that contains log blocks
|
|
183
|
+
* @see {@link LogBlockContainerModel} - Container that manages multiple log blocks
|
|
184
|
+
* @see {@link LogBlockOptions} - Configuration options for log block instances
|
|
185
|
+
* @see {@link LogBlockType} - Type definition for block data exchange
|
|
186
|
+
* @see {@link LogLinesType} - Type definition for line data with block metadata
|
|
187
|
+
*/
|
|
7
188
|
export type LogBlockModel = PublicModelInterface<LogBlockModelImpl>;
|
|
189
|
+
/**
|
|
190
|
+
* @ignore
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
8
193
|
export declare class LogBlockModelImpl implements IKosDataModel, IKosIdentifiable {
|
|
9
194
|
id: string;
|
|
10
195
|
private logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-block-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-block/log-block-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEpE,qBACa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,CAAmB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,GAAG,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,kBAAkB;IAiBvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAehC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAQ3C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAS5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
1
|
+
{"version":3,"file":"log-block-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-block/log-block-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoLG;AACH,MAAM,MAAM,aAAa,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAEpE;;;GAGG;AACH,qBACa,iBAAkB,YAAW,aAAa,EAAE,gBAAgB;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,CAAmB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,GAAG,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,kBAAkB;IAiBvB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAehC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAQ3C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAS5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -1,38 +1,167 @@
|
|
|
1
1
|
// --------------- LogBlock ---------------
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for LogBlock model instances.
|
|
5
|
+
*
|
|
6
|
+
* These options define the metadata and boundaries for a log block, including
|
|
7
|
+
* line numbering, timing information, and stream identification. Used when
|
|
8
|
+
* creating new log blocks or updating existing block metadata.
|
|
9
|
+
*
|
|
10
|
+
* @example Basic Configuration
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const blockOptions: LogBlockOptions = {
|
|
13
|
+
* nodeId: 'primary',
|
|
14
|
+
* stream: 'application-logs',
|
|
15
|
+
* blockNum: 5,
|
|
16
|
+
* startLineNum: 401,
|
|
17
|
+
* endLineNum: 500,
|
|
18
|
+
* startTime: new Date('2024-01-01T10:00:00Z'),
|
|
19
|
+
* endTime: new Date('2024-01-01T10:05:00Z'),
|
|
20
|
+
* lineCount: 100
|
|
21
|
+
* };
|
|
22
|
+
*
|
|
23
|
+
* const logBlock = LogBlock.instance('app-block-5')
|
|
24
|
+
* .options(blockOptions)
|
|
25
|
+
* .build();
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @group KOS Model
|
|
29
|
+
* @category Device Logging
|
|
30
|
+
*/
|
|
3
31
|
export interface LogBlockOptions {
|
|
32
|
+
/**
|
|
33
|
+
* Node identifier where the log block originates.
|
|
34
|
+
*
|
|
35
|
+
* Specifies which KOS device node contains this log block.
|
|
36
|
+
* Used for routing and organization in multi-node environments.
|
|
37
|
+
*/
|
|
4
38
|
nodeId: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Name of the log stream this block belongs to.
|
|
42
|
+
*
|
|
43
|
+
* Identifies the parent stream that contains this block.
|
|
44
|
+
* Used for organization and cross-referencing with LogStreamModel.
|
|
45
|
+
*/
|
|
5
46
|
stream: string;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Sequential block number within the stream.
|
|
50
|
+
*
|
|
51
|
+
* Used for ordering blocks chronologically within a stream.
|
|
52
|
+
* Blocks are automatically sorted by this number in containers.
|
|
53
|
+
*/
|
|
6
54
|
blockNum: number;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Global line number where this block starts.
|
|
58
|
+
*
|
|
59
|
+
* The first line number in this block relative to the entire stream.
|
|
60
|
+
* Used for accurate line numbering across the complete log stream.
|
|
61
|
+
*/
|
|
7
62
|
startLineNum: number;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Global line number where this block ends.
|
|
66
|
+
*
|
|
67
|
+
* The last line number in this block relative to the entire stream.
|
|
68
|
+
* Used with startLineNum to define the block's line range.
|
|
69
|
+
*/
|
|
8
70
|
endLineNum: number;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Timestamp when this log block period began.
|
|
74
|
+
*
|
|
75
|
+
* Used for time-based filtering and analysis of log blocks.
|
|
76
|
+
*/
|
|
9
77
|
startTime: Date;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Timestamp when this log block period ended.
|
|
81
|
+
*
|
|
82
|
+
* Used with startTime to define the temporal range of the block.
|
|
83
|
+
*/
|
|
10
84
|
endTime: Date;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Total number of log lines in this block.
|
|
88
|
+
*
|
|
89
|
+
* Should equal (endLineNum - startLineNum + 1). Used for
|
|
90
|
+
* validation and progress tracking during block loading.
|
|
91
|
+
*/
|
|
11
92
|
lineCount: number;
|
|
12
93
|
}
|
|
13
94
|
|
|
14
95
|
// --------------- LogBlockContainer ---------------
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Configuration options for LogBlockContainer model instances.
|
|
99
|
+
*
|
|
100
|
+
* Currently an empty interface but reserved for future container-level
|
|
101
|
+
* configuration options such as block sorting preferences, memory limits,
|
|
102
|
+
* or automatic cleanup policies.
|
|
103
|
+
*
|
|
104
|
+
* @group KOS Model
|
|
105
|
+
* @category Device Logging
|
|
106
|
+
*/
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
15
108
|
export interface LogBlockContainerOptions {}
|
|
16
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Data exchange format for log block information from KOS topics.
|
|
112
|
+
*
|
|
113
|
+
* Used in topic handlers for log block events, representing block metadata
|
|
114
|
+
* as received from the KOS system. Similar to LogBlockOptions but uses
|
|
115
|
+
* timestamp numbers instead of Date objects for serialization efficiency.
|
|
116
|
+
*
|
|
117
|
+
* @group KOS Model
|
|
118
|
+
* @category Device Logging
|
|
119
|
+
*/
|
|
17
120
|
export interface LogBlockType {
|
|
121
|
+
/** Node identifier where the log block originates */
|
|
18
122
|
nodeId: string;
|
|
123
|
+
/** Name of the log stream this block belongs to */
|
|
19
124
|
stream: string;
|
|
125
|
+
/** Sequential block number within the stream */
|
|
20
126
|
blockNum: number;
|
|
127
|
+
/** Global line number where this block starts */
|
|
21
128
|
startLineNum: number;
|
|
129
|
+
/** Global line number where this block ends */
|
|
22
130
|
endLineNum: number;
|
|
131
|
+
/** Timestamp when this log block period began (milliseconds since epoch) */
|
|
23
132
|
startTime: number;
|
|
133
|
+
/** Timestamp when this log block period ended (milliseconds since epoch) */
|
|
24
134
|
endTime: number;
|
|
135
|
+
/** Total number of log lines in this block */
|
|
25
136
|
lineCount: number;
|
|
26
137
|
}
|
|
27
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Data exchange format for log lines with block metadata from KOS topics.
|
|
141
|
+
*
|
|
142
|
+
* Used in topic handlers for log line events, containing both the actual
|
|
143
|
+
* log lines and the block metadata. Extends LogBlockType with the lines array.
|
|
144
|
+
*
|
|
145
|
+
* @group KOS Model
|
|
146
|
+
* @category Device Logging
|
|
147
|
+
*/
|
|
28
148
|
export interface LogLinesType {
|
|
149
|
+
/** Node identifier where the log block originates */
|
|
29
150
|
nodeId: string;
|
|
151
|
+
/** Name of the log stream this block belongs to */
|
|
30
152
|
stream: string;
|
|
153
|
+
/** Sequential block number within the stream */
|
|
31
154
|
blockNum: number;
|
|
155
|
+
/** Global line number where this block starts */
|
|
32
156
|
startLineNum: number;
|
|
157
|
+
/** Global line number where this block ends */
|
|
33
158
|
endLineNum: number;
|
|
159
|
+
/** Timestamp when this log block period began (milliseconds since epoch) */
|
|
34
160
|
startTime: number;
|
|
161
|
+
/** Timestamp when this log block period ended (milliseconds since epoch) */
|
|
35
162
|
endTime: number;
|
|
163
|
+
/** Total number of log lines in this block */
|
|
36
164
|
lineCount: number;
|
|
165
|
+
/** Array of actual log line strings */
|
|
37
166
|
lines: string[];
|
|
38
167
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
export type { LogStreamContainerModel } from './log-stream-container-model';
|
|
1
2
|
export { LogStreamContainer } from './log-stream-container-registration';
|
|
3
|
+
export type { LogStreamModel } from './log-stream-model';
|
|
2
4
|
export { LogStream } from './log-stream-registration';
|
|
3
5
|
export type * from './types';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @group KOS Model
|
|
8
|
+
* @category Device Logging
|
|
9
|
+
*/
|
|
6
10
|
export * as LogStreamServices from './services';
|
|
7
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,mBAAmB,SAAS,CAAC;AAC7B;;;GAGG;AACH,OAAO,KAAK,iBAAiB,MAAM,YAAY,CAAC"}
|
|
@@ -7,11 +7,67 @@ import { IKosDataModel, KosCreationContext } from '../../../core/core/kosModel';
|
|
|
7
7
|
import { IKosModelContainer } from '../../../core/core/kos-container-model';
|
|
8
8
|
|
|
9
9
|
export declare const MODEL_TYPE = "log-stream-container-model";
|
|
10
|
+
/**
|
|
11
|
+
* Log Stream Container Model - Manages multiple log streams with real-time topic-based synchronization.
|
|
12
|
+
*
|
|
13
|
+
* This container model manages multiple LogStreamModel instances and handles real-time log events
|
|
14
|
+
* from the KOS system. It provides centralized management of log streams, automatic stream discovery,
|
|
15
|
+
* and coordinated event handling for efficient log processing across multiple sources.
|
|
16
|
+
*
|
|
17
|
+
* ## Topic-Based Reactivity
|
|
18
|
+
* The container listens to these KOS topics for real-time log management:
|
|
19
|
+
* - **`/kos/logs/subscription/addBlock/*`** - Fired when new log blocks are created
|
|
20
|
+
* - **`/kos/logs/subscription/updateBlock/*`** - Fired when existing log blocks are updated
|
|
21
|
+
* - **`/kos/logs/subscription/removeBlock/*`** - Fired when log blocks are removed
|
|
22
|
+
* - **`/kos/logs/subscription/lines/*`** - Fired when new log lines are added to blocks
|
|
23
|
+
* - **`/kos/logs/streams/add/*`** - Fired when new log streams are discovered
|
|
24
|
+
*
|
|
25
|
+
* ## Key Features
|
|
26
|
+
* - **Multi-stream Management** - Handle multiple log streams simultaneously
|
|
27
|
+
* - **Automatic Stream Discovery** - Automatically add new streams as they become available
|
|
28
|
+
* - **Topic-based Synchronization** - Real-time updates via KOS event system
|
|
29
|
+
* - **Stream Selection** - Track currently selected stream for UI purposes
|
|
30
|
+
* - **Block Management** - Coordinate block updates across all managed streams
|
|
31
|
+
*
|
|
32
|
+
* ## Common Use Cases
|
|
33
|
+
* - **Log Dashboard** - Central management of multiple log sources
|
|
34
|
+
* - **System Monitoring** - Monitor logs from all system components
|
|
35
|
+
* - **Debugging Interface** - Switch between different log streams during troubleshooting
|
|
36
|
+
* - **Log Aggregation** - Collect and manage logs from distributed sources
|
|
37
|
+
*
|
|
38
|
+
* @example Basic Usage
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const logContainer = LogStreamContainer.instance('main-logger')
|
|
41
|
+
* .options({})
|
|
42
|
+
* .build();
|
|
43
|
+
*
|
|
44
|
+
* // Subscribe to and manage multiple streams
|
|
45
|
+
* await logContainer.subscribeToLogStream('application-logs');
|
|
46
|
+
* const appStream = logContainer.getModel('application-logs');
|
|
47
|
+
* logContainer.updateSelectedStream(appStream);
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @group KOS Model
|
|
51
|
+
* @category Device Logging
|
|
52
|
+
* @interface
|
|
53
|
+
* @useDeclaredType
|
|
54
|
+
*
|
|
55
|
+
* @see {@link LogStreamModel} - Individual log stream management
|
|
56
|
+
* @see {@link LogStreamContainerOptions} - Configuration options for the container
|
|
57
|
+
*/
|
|
10
58
|
export type LogStreamContainerModel = PublicModelInterface<LogStreamContainerModelImpl>;
|
|
59
|
+
/**
|
|
60
|
+
* @ignore
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
11
63
|
export declare class LogStreamContainerModelImpl implements IKosIdentifiable, IKosModelHolder<LogStreamModel>, IKosDataModel {
|
|
64
|
+
/** Unique identifier for the container model instance */
|
|
12
65
|
id: string;
|
|
66
|
+
/** Context logger for debugging log stream operations */
|
|
13
67
|
private logger;
|
|
68
|
+
/** Currently selected log stream for UI display purposes */
|
|
14
69
|
selectedStream?: LogStreamModel;
|
|
70
|
+
/** Container for managing LogStream model instances */
|
|
15
71
|
private _models;
|
|
16
72
|
constructor(modelId: string, options: LogStreamContainerOptions, context: KosCreationContext);
|
|
17
73
|
getModel(id: string): LogStreamModel | undefined;
|
|
@@ -28,8 +84,14 @@ export declare class LogStreamContainerModelImpl implements IKosIdentifiable, IK
|
|
|
28
84
|
handleRemoveBlock(data: LogBlockType, payload: any): void;
|
|
29
85
|
handleUpdateBlock(data: LogBlockType, payload: any): void;
|
|
30
86
|
handleLogLine(data: LogLinesType, payload: any): void;
|
|
87
|
+
/**
|
|
88
|
+
* @internal
|
|
89
|
+
*/
|
|
31
90
|
init(): Promise<void>;
|
|
32
91
|
subscribeToLogStream(stream: string): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* @internal
|
|
94
|
+
*/
|
|
33
95
|
load(): Promise<void>;
|
|
34
96
|
}
|
|
35
97
|
//# sourceMappingURL=log-stream-container-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-stream-container-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/log-stream-container-model.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD,MAAM,MAAM,uBAAuB,GACjC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"log-stream-container-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/log-stream-container-model.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,MAAM,uBAAuB,GACjC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC;AAQpD;;;GAGG;AACH,qBACa,2BACX,YAAW,gBAAgB,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,aAAa;IAE3E,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,OAAO,CAAC,MAAM,CAAmB;IACjC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uDAAuD;IAC7C,OAAO,CAAC,OAAO,CAAqC;gBAE5D,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,yBAAyB,EAClC,OAAO,EAAE,kBAAkB;IAW7B,QAAQ,CAAC,EAAE,EAAE,MAAM;IAGnB,IAAI,MAAM,uCAET;IACD,IAAI,IAAI,qBAEP;IAED,WAAW,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IAItD,QAAQ,CAAC,KAAK,EAAE,cAAc;IAI9B,WAAW,CAAC,EAAE,EAAE,MAAM;IAKtB,oBAAoB,CAAC,MAAM,CAAC,EAAE,cAAc;IAQ5C,iBAAiB,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IAgB1C,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,KAAA;IAa1C,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,KAAA;IAa7C,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,KAAA;IAa7C,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,KAAA;IAQzC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB5B"}
|
|
@@ -5,7 +5,56 @@ import { IKosIdentifiable } from '../../../core/core/types';
|
|
|
5
5
|
import { IKosDataModel, IKosVisitor, KosCreationContext } from '../../../core/core/kosModel';
|
|
6
6
|
|
|
7
7
|
export declare const MODEL_TYPE = "log-stream-model";
|
|
8
|
+
/**
|
|
9
|
+
* Log Stream Model - Real-time streaming log viewer with efficient block-based management and async iteration.
|
|
10
|
+
*
|
|
11
|
+
* This model provides high-performance log streaming capabilities for monitoring KOS device logs in real-time.
|
|
12
|
+
* It organizes log data into efficient blocks for memory management and provides async iterator support
|
|
13
|
+
* for continuous log consumption. Essential for debugging, monitoring, and troubleshooting KOS applications.
|
|
14
|
+
*
|
|
15
|
+
* ## Key Features
|
|
16
|
+
* - **Real-time Log Streaming** - Live log updates as they are generated on the device
|
|
17
|
+
* - **Block-based Management** - Efficient memory usage through log block organization
|
|
18
|
+
* - **Async Iterator Support** - Stream logs using modern async/await patterns
|
|
19
|
+
* - **Subscription Control** - Subscribe/unsubscribe to specific log streams
|
|
20
|
+
* - **Line Number Tracking** - Maintains accurate line numbering across blocks
|
|
21
|
+
* - **Multi-stream Support** - Handle multiple log streams simultaneously through container model
|
|
22
|
+
*
|
|
23
|
+
* ## Common Use Cases
|
|
24
|
+
* - **Development Debugging** - Monitor application logs during development
|
|
25
|
+
* - **Production Monitoring** - Track system health and errors in deployed applications
|
|
26
|
+
* - **Troubleshooting** - Analyze log patterns to diagnose issues
|
|
27
|
+
* - **Log Analysis** - Process log streams for metrics and insights
|
|
28
|
+
* - **Real-time Dashboards** - Display live log feeds in monitoring interfaces
|
|
29
|
+
* - **Automated Log Processing** - Stream logs to external analysis tools
|
|
30
|
+
*
|
|
31
|
+
* @interface
|
|
32
|
+
* @example Basic Usage
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const logStream = LogStream.instance('application-logs')
|
|
35
|
+
* .options({ name: 'application-logs', nodeId: 'primary' })
|
|
36
|
+
* .build();
|
|
37
|
+
*
|
|
38
|
+
* await logStream.subscribe();
|
|
39
|
+
* const iterator = logStream.start();
|
|
40
|
+
* for await (const logLine of iterator) {
|
|
41
|
+
* console.log(`[LOG] ${logLine}`);
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @group KOS Model
|
|
46
|
+
* @category Device Logging
|
|
47
|
+
* @useDeclaredType
|
|
48
|
+
*
|
|
49
|
+
* @see {@link LogStreamOptions} - Configuration options for log stream instances
|
|
50
|
+
* @see {@link LogStreamContainerModel} - Container model for managing multiple streams
|
|
51
|
+
* @see {@link LogBlockModel} - Individual log block management within streams
|
|
52
|
+
*/
|
|
8
53
|
export type LogStreamModel = PublicModelInterface<LogStreamModelImpl>;
|
|
54
|
+
/**
|
|
55
|
+
* @ignore
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
9
58
|
export declare class LogStreamModelImpl implements IKosDataModel, IKosIdentifiable {
|
|
10
59
|
id: string;
|
|
11
60
|
private logger;
|
|
@@ -27,7 +76,13 @@ export declare class LogStreamModelImpl implements IKosDataModel, IKosIdentifiab
|
|
|
27
76
|
subscribe(): Promise<void>;
|
|
28
77
|
unsubscribe(): Promise<void>;
|
|
29
78
|
reset(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
30
82
|
init(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
31
86
|
load(): Promise<void>;
|
|
32
87
|
private generatorInstance?;
|
|
33
88
|
private shouldStop;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-stream-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/log-stream-model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAEX,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"log-stream-model.d.ts","sourceRoot":"","sources":["../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/log-stream-model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EAEX,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;AACtE;;;GAGG;AACH,qBACa,kBAAmB,YAAW,aAAa,EAAE,gBAAgB;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,CAAmB;IACjC,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,OAAO,CAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;gBAEnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB;IAa7B,IAAI,YAAY,WAGf;IACD,IAAI,YAAY,qDAIf;IAED,IAAI,SAAS,2CAEZ;IACD,IAAI,MAAM,2CAET;IAED,IAAI,cAAc,WAEjB;IAED,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC;IAI1C,WAAW,CAAC,SAAS,EAAE,YAAY;IAgCnC,QAAQ,CAAC,SAAS,EAAE,YAAY;IAwBhC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAGtB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB3B,OAAO,CAAC,iBAAiB,CAAC,CAAqC;IAC/D,OAAO,CAAC,UAAU,CAAS;IAE3B,KAAK;IAML,IAAI;IAKG,UAAU,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;CAgExD"}
|
|
@@ -7,7 +7,8 @@ declare const SERVICE_PATH: ApiPath;
|
|
|
7
7
|
export type LogStreamContainerClientResponse = ClientResponse<KosApi, typeof SERVICE_PATH, "get">;
|
|
8
8
|
export type LogStreamContainerResponse = DeepRequired<ElementType<LogStreamContainerClientResponse>>;
|
|
9
9
|
/**
|
|
10
|
-
* @
|
|
10
|
+
* @group KOS Model
|
|
11
|
+
* @category Device Logging
|
|
11
12
|
* Retrieves the initial list of log-stream-container data.
|
|
12
13
|
*/
|
|
13
14
|
export declare const getLogStreams: () => Promise<ServiceResponse<LogStreamContainerClientResponse>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-stream-services.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/services/log-stream-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAY,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,SAQ9C,CAAC;AAIF,QAAA,MAAM,YAAY,EAAE,OAA+C,CAAC;AACpE,MAAM,MAAM,gCAAgC,GAAG,cAAc,CAC3D,MAAM,EACN,OAAO,YAAY,EACnB,KAAK,CACN,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CACnD,WAAW,CAAC,gCAAgC,CAAC,CAC9C,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"log-stream-services.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/sdk/kos-ui-sdk/src/models/models/log-stream/services/log-stream-services.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAY,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,SAQ9C,CAAC;AAIF,QAAA,MAAM,YAAY,EAAE,OAA+C,CAAC;AACpE,MAAM,MAAM,gCAAgC,GAAG,cAAc,CAC3D,MAAM,EACN,OAAO,YAAY,EACnB,KAAK,CACN,CAAC;AACF,MAAM,MAAM,0BAA0B,GAAG,YAAY,CACnD,WAAW,CAAC,gCAAgC,CAAC,CAC9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,QAAa,QACrC,gBAAgB,gCAAgC,CAAC,CAclD,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,MAAM,sBAEb,QAAQ,IAAI,CAcd,CAAC;AAEF,eAAO,MAAM,wBAAwB,WAC3B,MAAM,KACb,QAAQ,IAAI,CASd,CAAC;AAEF,eAAO,MAAM,cAAc,QAAa,QAAQ,IAAI,CAcnD,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,OACoB,CAAC;AAChD,MAAM,MAAM,6BAA6B,GAAG,cAAc,CACxD,MAAM,EACN,OAAO,mBAAmB,EAC1B,KAAK,CACN,CAAC;AAEF,eAAO,MAAM,kBAAkB,WACrB,MAAM,KACb,QAAQ,gBAAgB,6BAA6B,CAAC,CAcxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,WACpB,MAAM,WACL,MAAM,KACd,QAAQ,gBAAgB,YAAY,CAAC,CAevC,CAAC"}
|
|
@@ -1,9 +1,86 @@
|
|
|
1
1
|
// --------------- LogStream ---------------
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for LogStream model instances.
|
|
5
|
+
*
|
|
6
|
+
* These options specify the log stream identity and source location for connecting
|
|
7
|
+
* to specific log streams on KOS devices.
|
|
8
|
+
*
|
|
9
|
+
* @example Basic Log Stream Configuration
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const options: LogStreamOptions = {
|
|
12
|
+
* name: 'application-logs',
|
|
13
|
+
* nodeId: 'primary'
|
|
14
|
+
* };
|
|
15
|
+
*
|
|
16
|
+
* const logStream = LogStream.instance('app-logger')
|
|
17
|
+
* .options(options)
|
|
18
|
+
* .build();
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example Multiple Stream Types
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // System logs from primary node
|
|
24
|
+
* const systemLogs = LogStream.instance('system')
|
|
25
|
+
* .options({ name: 'system-logs', nodeId: 'primary' })
|
|
26
|
+
* .build();
|
|
27
|
+
*
|
|
28
|
+
* // Error logs from secondary node
|
|
29
|
+
* const errorLogs = LogStream.instance('errors')
|
|
30
|
+
* .options({ name: 'error-logs', nodeId: 'secondary' })
|
|
31
|
+
* .build();
|
|
32
|
+
*
|
|
33
|
+
* // Debug logs from development node
|
|
34
|
+
* const debugLogs = LogStream.instance('debug')
|
|
35
|
+
* .options({ name: 'debug-logs', nodeId: 'dev-node' })
|
|
36
|
+
* .build();
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @group KOS Model
|
|
40
|
+
* @category Device Logging
|
|
41
|
+
*/
|
|
3
42
|
export interface LogStreamOptions {
|
|
43
|
+
/**
|
|
44
|
+
* Name of the log stream to connect to.
|
|
45
|
+
*
|
|
46
|
+
* This should match the log stream name available on the target device.
|
|
47
|
+
* Common stream names include 'application-logs', 'system-logs', 'error-logs'.
|
|
48
|
+
*/
|
|
4
49
|
name: string;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Node identifier where the log stream is located.
|
|
53
|
+
*
|
|
54
|
+
* Specifies which KOS device node contains the target log stream.
|
|
55
|
+
* Typically 'primary' for main device logs, but can be any valid node ID.
|
|
56
|
+
*
|
|
57
|
+
* @default 'primary'
|
|
58
|
+
*/
|
|
5
59
|
nodeId: string;
|
|
6
60
|
}
|
|
7
61
|
|
|
8
62
|
// --------------- LogStreamContainer ---------------
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Configuration options for LogStreamContainer model instances.
|
|
66
|
+
*
|
|
67
|
+
* Currently an empty interface but reserved for future container-level
|
|
68
|
+
* configuration options such as stream filtering, automatic discovery settings,
|
|
69
|
+
* or performance tuning parameters.
|
|
70
|
+
*
|
|
71
|
+
* @example Basic Container Configuration
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const options: LogStreamContainerOptions = {
|
|
74
|
+
* // Future options will be added here
|
|
75
|
+
* };
|
|
76
|
+
*
|
|
77
|
+
* const container = LogStreamContainer.instance('log-manager')
|
|
78
|
+
* .options(options)
|
|
79
|
+
* .build();
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @category Model Configuration
|
|
83
|
+
* @category Data Persistence
|
|
84
|
+
*/
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
9
86
|
export interface LogStreamContainerOptions {}
|