the-best-sort 1.1.0 ā 1.2.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/index.d.ts +30 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -2
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
interface ISortable {
|
|
1
|
+
export interface ISortable {
|
|
2
2
|
getValue(): number;
|
|
3
3
|
toString(): string;
|
|
4
4
|
}
|
|
5
|
-
interface IObserver<T> {
|
|
5
|
+
export interface IObserver<T> {
|
|
6
6
|
update(event: SortingEvent<T>): void;
|
|
7
7
|
}
|
|
8
|
-
interface ISubject<T> {
|
|
8
|
+
export interface ISubject<T> {
|
|
9
9
|
attach(observer: IObserver<T>): void;
|
|
10
10
|
detach(observer: IObserver<T>): void;
|
|
11
11
|
notify(event: SortingEvent<T>): void;
|
|
12
12
|
}
|
|
13
|
-
declare enum EventType {
|
|
13
|
+
export declare enum EventType {
|
|
14
14
|
STARTED = "STARTED",
|
|
15
15
|
ELEMENT_SORTED = "ELEMENT_SORTED",
|
|
16
16
|
COMPLETED = "COMPLETED",
|
|
17
17
|
ERROR = "ERROR"
|
|
18
18
|
}
|
|
19
|
-
interface SortingEvent<T> {
|
|
19
|
+
export interface SortingEvent<T> {
|
|
20
20
|
type: EventType;
|
|
21
21
|
element?: T;
|
|
22
22
|
index?: number;
|
|
@@ -24,34 +24,34 @@ interface SortingEvent<T> {
|
|
|
24
24
|
delay?: number;
|
|
25
25
|
metadata?: Record<string, any>;
|
|
26
26
|
}
|
|
27
|
-
interface ISortingStrategy<T extends ISortable> {
|
|
27
|
+
export interface ISortingStrategy<T extends ISortable> {
|
|
28
28
|
sort(array: T[], context: SortingContext<T>): Promise<T[]>;
|
|
29
29
|
getName(): string;
|
|
30
30
|
getDescription(): string;
|
|
31
31
|
}
|
|
32
|
-
interface ISortingStrategyFactory<T extends ISortable> {
|
|
32
|
+
export interface ISortingStrategyFactory<T extends ISortable> {
|
|
33
33
|
createStrategy(type: StrategyType): ISortingStrategy<T>;
|
|
34
34
|
registerStrategy(type: StrategyType, strategy: ISortingStrategy<T>): void;
|
|
35
35
|
listAvailableStrategies(): string[];
|
|
36
36
|
}
|
|
37
|
-
declare enum StrategyType {
|
|
37
|
+
export declare enum StrategyType {
|
|
38
38
|
DEFAULT = "DEFAULT"
|
|
39
39
|
}
|
|
40
|
-
interface SortingConfig {
|
|
40
|
+
export interface SortingConfig {
|
|
41
41
|
baseDelayMs: number;
|
|
42
42
|
enableLogging: boolean;
|
|
43
43
|
logPrefix: string;
|
|
44
44
|
showTimestamps: boolean;
|
|
45
45
|
colorize: boolean;
|
|
46
46
|
}
|
|
47
|
-
declare class SortableNumber implements ISortable {
|
|
47
|
+
export declare class SortableNumber implements ISortable {
|
|
48
48
|
private readonly value;
|
|
49
49
|
constructor(value: number);
|
|
50
50
|
getValue(): number;
|
|
51
51
|
toString(): string;
|
|
52
52
|
toDetailedString(): string;
|
|
53
53
|
}
|
|
54
|
-
declare class ConfigurationManager {
|
|
54
|
+
export declare class ConfigurationManager {
|
|
55
55
|
private static instance;
|
|
56
56
|
private config;
|
|
57
57
|
private constructor();
|
|
@@ -60,10 +60,7 @@ declare class ConfigurationManager {
|
|
|
60
60
|
updateConfig(partial: Partial<SortingConfig>): void;
|
|
61
61
|
resetToDefaults(): void;
|
|
62
62
|
}
|
|
63
|
-
declare
|
|
64
|
-
declare function Log(target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
|
|
65
|
-
declare function ValidateArray(target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
|
|
66
|
-
declare class SortingContext<T extends ISortable> implements ISubject<T> {
|
|
63
|
+
export declare class SortingContext<T extends ISortable> implements ISubject<T> {
|
|
67
64
|
private strategyName;
|
|
68
65
|
private observers;
|
|
69
66
|
private eventHistory;
|
|
@@ -80,11 +77,11 @@ declare class SortingContext<T extends ISortable> implements ISubject<T> {
|
|
|
80
77
|
getElementCount(): number;
|
|
81
78
|
getStrategyName(): string;
|
|
82
79
|
}
|
|
83
|
-
declare class ConsoleLoggingObserver<T extends ISortable> implements IObserver<T> {
|
|
80
|
+
export declare class ConsoleLoggingObserver<T extends ISortable> implements IObserver<T> {
|
|
84
81
|
private config;
|
|
85
82
|
update(event: SortingEvent<T>): void;
|
|
86
83
|
}
|
|
87
|
-
declare class StatisticsObserver<T extends ISortable> implements IObserver<T> {
|
|
84
|
+
export declare class StatisticsObserver<T extends ISortable> implements IObserver<T> {
|
|
88
85
|
private startTime;
|
|
89
86
|
private endTime;
|
|
90
87
|
private sortedElements;
|
|
@@ -95,14 +92,14 @@ declare class StatisticsObserver<T extends ISortable> implements IObserver<T> {
|
|
|
95
92
|
printStatistics(): void;
|
|
96
93
|
reset(): void;
|
|
97
94
|
}
|
|
98
|
-
interface SortingStatistics {
|
|
95
|
+
export interface SortingStatistics {
|
|
99
96
|
duration: number;
|
|
100
97
|
sortedElements: number;
|
|
101
98
|
totalDelay: number;
|
|
102
99
|
averageDelay: number;
|
|
103
100
|
eventCounts: Map<EventType, number>;
|
|
104
101
|
}
|
|
105
|
-
declare class HistoryObserver<T extends ISortable> implements IObserver<T> {
|
|
102
|
+
export declare class HistoryObserver<T extends ISortable> implements IObserver<T> {
|
|
106
103
|
private history;
|
|
107
104
|
update(event: SortingEvent<T>): void;
|
|
108
105
|
getHistory(): Array<{
|
|
@@ -112,18 +109,18 @@ declare class HistoryObserver<T extends ISortable> implements IObserver<T> {
|
|
|
112
109
|
printHistory(): void;
|
|
113
110
|
clear(): void;
|
|
114
111
|
}
|
|
115
|
-
declare abstract class AbstractSortingStrategy<T extends ISortable> implements ISortingStrategy<T> {
|
|
112
|
+
export declare abstract class AbstractSortingStrategy<T extends ISortable> implements ISortingStrategy<T> {
|
|
116
113
|
abstract sort(array: T[], context: SortingContext<T>): Promise<T[]>;
|
|
117
114
|
abstract getName(): string;
|
|
118
115
|
abstract getDescription(): string;
|
|
119
116
|
protected getConfig(): Readonly<SortingConfig>;
|
|
120
117
|
}
|
|
121
|
-
declare class DefaultStrategy<T extends ISortable> extends AbstractSortingStrategy<T> {
|
|
118
|
+
export declare class DefaultStrategy<T extends ISortable> extends AbstractSortingStrategy<T> {
|
|
122
119
|
sort(array: T[], context: SortingContext<T>): Promise<T[]>;
|
|
123
120
|
getName(): string;
|
|
124
121
|
getDescription(): string;
|
|
125
122
|
}
|
|
126
|
-
declare class ConcreteSortingStrategyFactory<T extends ISortable> implements ISortingStrategyFactory<T> {
|
|
123
|
+
export declare class ConcreteSortingStrategyFactory<T extends ISortable> implements ISortingStrategyFactory<T> {
|
|
127
124
|
private strategies;
|
|
128
125
|
constructor();
|
|
129
126
|
createStrategy(type: StrategyType): ISortingStrategy<T>;
|
|
@@ -131,7 +128,7 @@ declare class ConcreteSortingStrategyFactory<T extends ISortable> implements ISo
|
|
|
131
128
|
listAvailableStrategies(): string[];
|
|
132
129
|
hasStrategy(type: StrategyType): boolean;
|
|
133
130
|
}
|
|
134
|
-
declare class SorterBuilder<T extends ISortable> {
|
|
131
|
+
export declare class SorterBuilder<T extends ISortable> {
|
|
135
132
|
private array?;
|
|
136
133
|
private strategy?;
|
|
137
134
|
private observers;
|
|
@@ -145,7 +142,7 @@ declare class SorterBuilder<T extends ISortable> {
|
|
|
145
142
|
build(): ArraySorter<T>;
|
|
146
143
|
reset(): this;
|
|
147
144
|
}
|
|
148
|
-
declare class ArraySorter<T extends ISortable> {
|
|
145
|
+
export declare class ArraySorter<T extends ISortable> {
|
|
149
146
|
private array;
|
|
150
147
|
private strategy;
|
|
151
148
|
private context;
|
|
@@ -156,23 +153,23 @@ declare class ArraySorter<T extends ISortable> {
|
|
|
156
153
|
getContext(): SortingContext<T>;
|
|
157
154
|
getEventHistory(): SortingEvent<T>[];
|
|
158
155
|
}
|
|
159
|
-
interface ICommand {
|
|
156
|
+
export interface ICommand {
|
|
160
157
|
execute(): Promise<any>;
|
|
161
158
|
getDescription(): string;
|
|
162
159
|
}
|
|
163
|
-
declare class ExecuteSortingCommand<T extends ISortable> implements ICommand {
|
|
160
|
+
export declare class ExecuteSortingCommand<T extends ISortable> implements ICommand {
|
|
164
161
|
private sorter;
|
|
165
162
|
constructor(sorter: ArraySorter<T>);
|
|
166
163
|
execute(): Promise<T[]>;
|
|
167
164
|
getDescription(): string;
|
|
168
165
|
}
|
|
169
|
-
declare class UpdateConfigCommand implements ICommand {
|
|
166
|
+
export declare class UpdateConfigCommand implements ICommand {
|
|
170
167
|
private config;
|
|
171
168
|
constructor(config: Partial<SortingConfig>);
|
|
172
169
|
execute(): Promise<void>;
|
|
173
170
|
getDescription(): string;
|
|
174
171
|
}
|
|
175
|
-
declare class CommandInvoker {
|
|
172
|
+
export declare class CommandInvoker {
|
|
176
173
|
private commandQueue;
|
|
177
174
|
private executedCommands;
|
|
178
175
|
enqueueCommand(command: ICommand): void;
|
|
@@ -182,18 +179,18 @@ declare class CommandInvoker {
|
|
|
182
179
|
clearQueue(): void;
|
|
183
180
|
getExecutedCommands(): ICommand[];
|
|
184
181
|
}
|
|
185
|
-
declare abstract class AbstractSortingRunner<T extends ISortable> {
|
|
182
|
+
export declare abstract class AbstractSortingRunner<T extends ISortable> {
|
|
186
183
|
run(array: T[], strategyType: StrategyType): Promise<T[]>;
|
|
187
184
|
protected abstract beforeRun(): void;
|
|
188
185
|
protected abstract afterRun(): void;
|
|
189
186
|
protected buildSorter(builder: SorterBuilder<T>, array: T[], strategy: ISortingStrategy<T>): ArraySorter<T>;
|
|
190
187
|
protected executeSorting(sorter: ArraySorter<T>): Promise<T[]>;
|
|
191
188
|
}
|
|
192
|
-
declare class LoggingSortingRunner<T extends ISortable> extends AbstractSortingRunner<T> {
|
|
189
|
+
export declare class LoggingSortingRunner<T extends ISortable> extends AbstractSortingRunner<T> {
|
|
193
190
|
protected beforeRun(): void;
|
|
194
191
|
protected afterRun(): void;
|
|
195
192
|
}
|
|
196
|
-
declare function demonstrateSorting(): Promise<void>;
|
|
197
|
-
declare function demonstrateWithTemplateMethod(): Promise<void>;
|
|
198
|
-
declare function demonstrateWithCustomConfig(): Promise<void>;
|
|
193
|
+
export declare function demonstrateSorting(): Promise<void>;
|
|
194
|
+
export declare function demonstrateWithTemplateMethod(): Promise<void>;
|
|
195
|
+
export declare function demonstrateWithCustomConfig(): Promise<void>;
|
|
199
196
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,17 +8,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LoggingSortingRunner = exports.AbstractSortingRunner = exports.CommandInvoker = exports.UpdateConfigCommand = exports.ExecuteSortingCommand = exports.ArraySorter = exports.SorterBuilder = exports.ConcreteSortingStrategyFactory = exports.DefaultStrategy = exports.AbstractSortingStrategy = exports.HistoryObserver = exports.StatisticsObserver = exports.ConsoleLoggingObserver = exports.SortingContext = exports.ConfigurationManager = exports.SortableNumber = exports.StrategyType = exports.EventType = void 0;
|
|
13
|
+
exports.demonstrateSorting = demonstrateSorting;
|
|
14
|
+
exports.demonstrateWithTemplateMethod = demonstrateWithTemplateMethod;
|
|
15
|
+
exports.demonstrateWithCustomConfig = demonstrateWithCustomConfig;
|
|
11
16
|
var EventType;
|
|
12
17
|
(function (EventType) {
|
|
13
18
|
EventType["STARTED"] = "STARTED";
|
|
14
19
|
EventType["ELEMENT_SORTED"] = "ELEMENT_SORTED";
|
|
15
20
|
EventType["COMPLETED"] = "COMPLETED";
|
|
16
21
|
EventType["ERROR"] = "ERROR";
|
|
17
|
-
})(EventType || (EventType = {}));
|
|
22
|
+
})(EventType || (exports.EventType = EventType = {}));
|
|
18
23
|
var StrategyType;
|
|
19
24
|
(function (StrategyType) {
|
|
20
25
|
StrategyType["DEFAULT"] = "DEFAULT";
|
|
21
|
-
})(StrategyType || (StrategyType = {}));
|
|
26
|
+
})(StrategyType || (exports.StrategyType = StrategyType = {}));
|
|
22
27
|
class SortableNumber {
|
|
23
28
|
constructor(value) {
|
|
24
29
|
this.value = value;
|
|
@@ -33,6 +38,7 @@ class SortableNumber {
|
|
|
33
38
|
return `SortableNumber(${this.value})`;
|
|
34
39
|
}
|
|
35
40
|
}
|
|
41
|
+
exports.SortableNumber = SortableNumber;
|
|
36
42
|
class ConfigurationManager {
|
|
37
43
|
constructor() {
|
|
38
44
|
this.config = {
|
|
@@ -65,6 +71,7 @@ class ConfigurationManager {
|
|
|
65
71
|
};
|
|
66
72
|
}
|
|
67
73
|
}
|
|
74
|
+
exports.ConfigurationManager = ConfigurationManager;
|
|
68
75
|
function Measure(target, propertyKey, descriptor) {
|
|
69
76
|
const originalMethod = descriptor.value;
|
|
70
77
|
descriptor.value = function (...args) {
|
|
@@ -174,6 +181,7 @@ class SortingContext {
|
|
|
174
181
|
return this.strategyName;
|
|
175
182
|
}
|
|
176
183
|
}
|
|
184
|
+
exports.SortingContext = SortingContext;
|
|
177
185
|
class ConsoleLoggingObserver {
|
|
178
186
|
constructor() {
|
|
179
187
|
this.config = ConfigurationManager.getInstance().getConfig();
|
|
@@ -201,6 +209,7 @@ class ConsoleLoggingObserver {
|
|
|
201
209
|
}
|
|
202
210
|
}
|
|
203
211
|
}
|
|
212
|
+
exports.ConsoleLoggingObserver = ConsoleLoggingObserver;
|
|
204
213
|
class StatisticsObserver {
|
|
205
214
|
constructor() {
|
|
206
215
|
this.startTime = 0;
|
|
@@ -256,6 +265,7 @@ class StatisticsObserver {
|
|
|
256
265
|
this.events.clear();
|
|
257
266
|
}
|
|
258
267
|
}
|
|
268
|
+
exports.StatisticsObserver = StatisticsObserver;
|
|
259
269
|
class HistoryObserver {
|
|
260
270
|
constructor() {
|
|
261
271
|
this.history = [];
|
|
@@ -279,11 +289,13 @@ class HistoryObserver {
|
|
|
279
289
|
this.history = [];
|
|
280
290
|
}
|
|
281
291
|
}
|
|
292
|
+
exports.HistoryObserver = HistoryObserver;
|
|
282
293
|
class AbstractSortingStrategy {
|
|
283
294
|
getConfig() {
|
|
284
295
|
return ConfigurationManager.getInstance().getConfig();
|
|
285
296
|
}
|
|
286
297
|
}
|
|
298
|
+
exports.AbstractSortingStrategy = AbstractSortingStrategy;
|
|
287
299
|
class DefaultStrategy extends AbstractSortingStrategy {
|
|
288
300
|
sort(array, context) {
|
|
289
301
|
return new Promise((resolve, reject) => {
|
|
@@ -319,6 +331,7 @@ class DefaultStrategy extends AbstractSortingStrategy {
|
|
|
319
331
|
return 'Sorts array using blazing fast algorithm. Elements are added to result array in order of completion.';
|
|
320
332
|
}
|
|
321
333
|
}
|
|
334
|
+
exports.DefaultStrategy = DefaultStrategy;
|
|
322
335
|
__decorate([
|
|
323
336
|
Log,
|
|
324
337
|
ValidateArray,
|
|
@@ -349,6 +362,7 @@ class ConcreteSortingStrategyFactory {
|
|
|
349
362
|
return this.strategies.has(type);
|
|
350
363
|
}
|
|
351
364
|
}
|
|
365
|
+
exports.ConcreteSortingStrategyFactory = ConcreteSortingStrategyFactory;
|
|
352
366
|
class SorterBuilder {
|
|
353
367
|
constructor() {
|
|
354
368
|
this.observers = [];
|
|
@@ -400,6 +414,7 @@ class SorterBuilder {
|
|
|
400
414
|
return this;
|
|
401
415
|
}
|
|
402
416
|
}
|
|
417
|
+
exports.SorterBuilder = SorterBuilder;
|
|
403
418
|
class ArraySorter {
|
|
404
419
|
constructor(array, strategy) {
|
|
405
420
|
this.array = array;
|
|
@@ -432,6 +447,7 @@ class ArraySorter {
|
|
|
432
447
|
return this.context.getEventHistory();
|
|
433
448
|
}
|
|
434
449
|
}
|
|
450
|
+
exports.ArraySorter = ArraySorter;
|
|
435
451
|
__decorate([
|
|
436
452
|
Measure,
|
|
437
453
|
__metadata("design:type", Function),
|
|
@@ -449,6 +465,7 @@ class ExecuteSortingCommand {
|
|
|
449
465
|
return 'Execute array sorting';
|
|
450
466
|
}
|
|
451
467
|
}
|
|
468
|
+
exports.ExecuteSortingCommand = ExecuteSortingCommand;
|
|
452
469
|
class UpdateConfigCommand {
|
|
453
470
|
constructor(config) {
|
|
454
471
|
this.config = config;
|
|
@@ -461,6 +478,7 @@ class UpdateConfigCommand {
|
|
|
461
478
|
return 'Update sorting configuration';
|
|
462
479
|
}
|
|
463
480
|
}
|
|
481
|
+
exports.UpdateConfigCommand = UpdateConfigCommand;
|
|
464
482
|
class CommandInvoker {
|
|
465
483
|
constructor() {
|
|
466
484
|
this.commandQueue = [];
|
|
@@ -496,6 +514,7 @@ class CommandInvoker {
|
|
|
496
514
|
return [...this.executedCommands];
|
|
497
515
|
}
|
|
498
516
|
}
|
|
517
|
+
exports.CommandInvoker = CommandInvoker;
|
|
499
518
|
class AbstractSortingRunner {
|
|
500
519
|
async run(array, strategyType) {
|
|
501
520
|
this.beforeRun();
|
|
@@ -517,6 +536,7 @@ class AbstractSortingRunner {
|
|
|
517
536
|
return await sorter.execute();
|
|
518
537
|
}
|
|
519
538
|
}
|
|
539
|
+
exports.AbstractSortingRunner = AbstractSortingRunner;
|
|
520
540
|
class LoggingSortingRunner extends AbstractSortingRunner {
|
|
521
541
|
beforeRun() {
|
|
522
542
|
console.log('\nš Starting sorting process...');
|
|
@@ -525,6 +545,7 @@ class LoggingSortingRunner extends AbstractSortingRunner {
|
|
|
525
545
|
console.log('\nā
Sorting process completed.');
|
|
526
546
|
}
|
|
527
547
|
}
|
|
548
|
+
exports.LoggingSortingRunner = LoggingSortingRunner;
|
|
528
549
|
async function demonstrateSorting() {
|
|
529
550
|
ConfigurationManager.getInstance().updateConfig({
|
|
530
551
|
enableLogging: true,
|
package/package.json
CHANGED