Skip to content
This repository was archived by the owner on Oct 16, 2024. It is now read-only.

Commit 877dea3

Browse files
committed
optimized naming of shared instances
1 parent beac84d commit 877dea3

File tree

10 files changed

+79
-95
lines changed

10 files changed

+79
-95
lines changed

packages/core/src/logCodeManager.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ const niceLogCodeMessages = {
4343
"Couldn't find Storage '${0}'. " +
4444
"The Storage with the key/name '${0}' doesn't exists!",
4545
'11:03:02': "Storage with the key/name '${0}' isn't ready yet!",
46-
'11:02:06':
47-
'By registering a new Storage Manager the old one will be overwritten!',
4846
'11:03:03':
4947
'No Storage found to get a value from! Please specify at least one Storage.',
5048
'11:03:04':
@@ -306,7 +304,7 @@ if (process.env.NODE_ENV !== 'production') {
306304
logCodeLogTypes: logCodeTypes,
307305
logCodeMessages: logCodeMessages,
308306
getLogger: () => {
309-
return loggerPackage?.getLogger() ?? null;
307+
return loggerPackage?.sharedLogger || null;
310308
},
311309
logIfTags,
312310
setAllowLogging,

packages/core/src/storages/shared.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,24 @@
11
import { defineConfig, removeProperties } from '@agile-ts/utils';
2-
import { LogCodeManager } from '../logCodeManager';
32
import { runsOnServer } from '../utils';
43
import { CreateAgileSubInstanceInterface, shared } from '../shared';
54
import { CreateStoragesConfigInterface, Storages } from './storages';
65

7-
// Handles the permanent persistence of Agile Classes
8-
let storageManager: Storages | null = null;
6+
/**
7+
* Handles the permanent persistence of Agile Classes.
8+
*/
9+
let sharedStorageManager: Storages | null = null;
10+
export { sharedStorageManager };
11+
12+
/**
13+
* Assigns the specified Storage Manager
14+
* as default (shared) Storage Manager for all Agile Instances.
15+
*
16+
* @param instance - Storage Manager to be assigned as the shared Storage Manager.
17+
*/
18+
// https://stackoverflow.com/questions/32558514/javascript-es6-export-const-vs-export-let
19+
export const assignSharedStorageManager = (instance: Storages | null) => {
20+
sharedStorageManager = instance;
21+
};
922

1023
/**
1124
* Returns a newly created Storage Manager.
@@ -33,29 +46,16 @@ export function createStorageManager(
3346
* or creates a new one when no shared Storage Manager exists.
3447
*/
3548
export function getStorageManager(): Storages {
36-
if (storageManager == null) {
49+
if (sharedStorageManager == null) {
3750
const newStorageManager = createStorageManager({
3851
localStorage: !runsOnServer(),
3952
});
40-
assignSharedAgileStorageManager(newStorageManager);
53+
assignSharedStorageManager(newStorageManager);
4154
return newStorageManager;
4255
}
43-
return storageManager;
56+
return sharedStorageManager;
4457
}
4558

46-
/**
47-
* Assigns the specified Storage Manager
48-
* as default (shared) Storage Manager for all Agile Instances.
49-
*
50-
* @param instance - Storage Manager to be registered as the default Storage Manager.
51-
*/
52-
export const assignSharedAgileStorageManager = (instance: Storages | null) => {
53-
if (storageManager != null) {
54-
LogCodeManager.log('11:02:06', [], storageManager);
55-
}
56-
storageManager = instance;
57-
};
58-
5959
export interface CreateStorageManagerConfigInterfaceWithAgile
6060
extends CreateAgileSubInstanceInterface,
6161
CreateStoragesConfigInterface {}

packages/core/tests/integration/collection.persistent.integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
createStorage,
55
createCollection,
66
createStorageManager,
7-
assignSharedAgileStorageManager,
7+
assignSharedStorageManager,
88
} from '../../src';
99
import { LogMock } from '../helper/logMock';
1010

@@ -38,7 +38,7 @@ describe('Collection Persist Function Tests', () => {
3838
App = new Agile();
3939

4040
const storageManager = createStorageManager({ localStorage: false });
41-
assignSharedAgileStorageManager(storageManager);
41+
assignSharedStorageManager(storageManager);
4242
storageManager.register(
4343
createStorage({
4444
key: 'testStorage',

packages/core/tests/unit/collection/collection.persistent.test.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
StatePersistent,
88
Group,
99
Item,
10-
assignSharedAgileStorageManager,
10+
assignSharedStorageManager,
1111
createStorageManager,
1212
Storages,
1313
} from '../../../src';
@@ -34,7 +34,7 @@ describe('CollectionPersistent Tests', () => {
3434

3535
// Register Storage Manager
3636
storageManager = createStorageManager();
37-
assignSharedAgileStorageManager(storageManager);
37+
assignSharedStorageManager(storageManager);
3838

3939
jest.spyOn(CollectionPersistent.prototype, 'instantiatePersistent');
4040
jest.spyOn(CollectionPersistent.prototype, 'initialLoading');
@@ -488,12 +488,13 @@ describe('CollectionPersistent Tests', () => {
488488
expect(
489489
placeholderItem3?.persistent?.loadPersistedValue
490490
).toHaveBeenCalledTimes(1);
491-
expect(
492-
dummyCollection.assignItem
493-
).not.toHaveBeenCalledWith(placeholderItem3, {
494-
overwrite: true,
495-
rebuildGroups: false,
496-
}); // Because Item persistent 'leadPersistedValue()' returned false -> Item properly doesn't exist in Storage
491+
expect(dummyCollection.assignItem).not.toHaveBeenCalledWith(
492+
placeholderItem3,
493+
{
494+
overwrite: true,
495+
rebuildGroups: false,
496+
}
497+
); // Because Item persistent 'leadPersistedValue()' returned false -> Item properly doesn't exist in Storage
497498
expect(placeholderItem3.isPersisted).toBeFalsy();
498499

499500
expect(collectionPersistent.setupSideEffects).toHaveBeenCalledWith(

packages/core/tests/unit/state/state.persistent.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
Persistent,
66
EnhancedState,
77
Storages,
8-
assignSharedAgileStorageManager,
8+
assignSharedStorageManager,
99
createStorageManager,
1010
} from '../../../src';
1111
import { LogMock } from '../../helper/logMock';
@@ -24,7 +24,7 @@ describe('StatePersistent Tests', () => {
2424

2525
// Register Storage Manager
2626
storageManager = createStorageManager();
27-
assignSharedAgileStorageManager(storageManager);
27+
assignSharedStorageManager(storageManager);
2828

2929
jest.spyOn(StatePersistent.prototype, 'instantiatePersistent');
3030
jest.spyOn(StatePersistent.prototype, 'initialLoading');

packages/core/tests/unit/storages/persistent.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
Storage,
55
createStorage,
66
Storages,
7-
assignSharedAgileStorageManager,
7+
assignSharedStorageManager,
88
createStorageManager,
99
} from '../../../src';
1010
import { LogMock } from '../../helper/logMock';
@@ -20,7 +20,7 @@ describe('Persistent Tests', () => {
2020

2121
// Register Storage Manager
2222
storageManager = createStorageManager();
23-
assignSharedAgileStorageManager(storageManager);
23+
assignSharedStorageManager(storageManager);
2424

2525
jest.spyOn(Persistent.prototype, 'instantiatePersistent');
2626

packages/core/tests/unit/storages/shared.test.ts

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('Shared (Storage) Tests', () => {
1414
assignSharedAgileInstance(sharedAgileInstance);
1515

1616
// Reset Storage Manager
17-
SharedStorageManager.assignSharedAgileStorageManager(null);
17+
SharedStorageManager.assignSharedStorageManager(null);
1818

1919
jest.clearAllMocks();
2020
});
@@ -52,19 +52,17 @@ describe('Shared (Storage) Tests', () => {
5252

5353
describe('getStorageManager function tests', () => {
5454
beforeEach(() => {
55-
SharedStorageManager.assignSharedAgileStorageManager(null);
55+
SharedStorageManager.assignSharedStorageManager(null);
5656

57-
jest.spyOn(SharedStorageManager, 'assignSharedAgileStorageManager');
57+
jest.spyOn(SharedStorageManager, 'assignSharedStorageManager');
5858
jest.spyOn(SharedStorageManager, 'createStorageManager');
5959
});
6060

6161
it('should return shared Storage Manager', () => {
6262
const createdStorageManager = new Storages(sharedAgileInstance, {
6363
localStorage: false,
6464
});
65-
SharedStorageManager.assignSharedAgileStorageManager(
66-
createdStorageManager
67-
);
65+
SharedStorageManager.assignSharedStorageManager(createdStorageManager);
6866
jest.clearAllMocks();
6967

7068
const returnedStorageManager = SharedStorageManager.getStorageManager();
@@ -73,7 +71,7 @@ describe('Shared (Storage) Tests', () => {
7371
expect(returnedStorageManager).toBe(createdStorageManager);
7472
expect(SharedStorageManager.createStorageManager).not.toHaveBeenCalled();
7573
expect(
76-
SharedStorageManager.assignSharedAgileStorageManager
74+
SharedStorageManager.assignSharedStorageManager
7775
).not.toHaveBeenCalled();
7876
});
7977

@@ -104,29 +102,13 @@ describe('Shared (Storage) Tests', () => {
104102
// );
105103
});
106104

107-
describe('assignSharedAgileStorageManager function tests', () => {
105+
describe('assignSharedStorageManager function tests', () => {
108106
it('should assign the specified Storage Manager as shared Storage Manager', () => {
109107
const storageManager = new Storages(sharedAgileInstance);
110108

111-
SharedStorageManager.assignSharedAgileStorageManager(storageManager);
109+
SharedStorageManager.assignSharedStorageManager(storageManager);
112110

113111
expect(SharedStorageManager.getStorageManager()).toBe(storageManager);
114-
LogMock.hasNotLoggedCode('11:02:06');
115112
});
116-
117-
it(
118-
'should assign the specified Storage Manager as shared Storage Manager ' +
119-
'and print warning if a shared Storage Manager is already set',
120-
() => {
121-
const oldStorageManager = new Storages(sharedAgileInstance);
122-
SharedStorageManager.assignSharedAgileStorageManager(oldStorageManager);
123-
const storageManager = new Storages(sharedAgileInstance);
124-
125-
SharedStorageManager.assignSharedAgileStorageManager(storageManager);
126-
127-
expect(SharedStorageManager.getStorageManager()).toBe(storageManager);
128-
LogMock.hasLoggedCode('11:02:06', [], oldStorageManager);
129-
}
130-
);
131113
});
132114
});

packages/core/tests/unit/storages/storages.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
Agile,
44
Storage,
55
Persistent,
6-
assignSharedAgileStorageManager,
6+
assignSharedStorageManager,
77
} from '../../../src';
88
import { LogMock } from '../../helper/logMock';
99

@@ -50,7 +50,7 @@ describe('Storages Tests', () => {
5050

5151
beforeEach(() => {
5252
storages = new Storages(dummyAgile);
53-
assignSharedAgileStorageManager(storages);
53+
assignSharedStorageManager(storages);
5454

5555
dummyStorageMethods = {
5656
get: jest.fn(),

packages/logger/src/index.ts

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,6 @@
1-
import { CreateLoggerConfigInterface, Logger } from './logger';
2-
import { defineConfig } from '@agile-ts/utils';
1+
import { Logger } from './logger';
32

43
export * from './logger';
5-
export default Logger;
6-
7-
const defaultLogConfig = {
8-
prefix: 'Agile',
9-
active: true,
10-
level: Logger.level.WARN,
11-
canUseCustomStyles: true,
12-
allowedTags: ['runtime', 'storage', 'subscription', 'multieditor'],
13-
};
14-
15-
let sharedAgileLogger = new Logger(defaultLogConfig);
4+
export * from './shared';
165

17-
/**
18-
* Assigns the specified configuration object to the shared Agile Logger.
19-
*
20-
* @param config - Configuration object
21-
*/
22-
export function assignSharedAgileLoggerConfig(
23-
config: CreateLoggerConfigInterface = {}
24-
): Logger {
25-
config = defineConfig(config, defaultLogConfig);
26-
sharedAgileLogger = new Logger(config);
27-
return sharedAgileLogger;
28-
}
29-
30-
/**
31-
* Returns the shared Agile Logger.
32-
*/
33-
export function getLogger(): Logger {
34-
return sharedAgileLogger;
35-
}
6+
export default Logger;

packages/logger/src/shared.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { defineConfig } from '@agile-ts/utils';
2+
import { Logger, LoggerConfig } from './logger';
3+
4+
export const defaultSharedLoggerConfig = {
5+
prefix: 'Agile',
6+
active: true,
7+
level: Logger.level.WARN,
8+
canUseCustomStyles: true,
9+
allowedTags: ['runtime', 'storage', 'subscription', 'multieditor'],
10+
};
11+
12+
let sharedLogger = new Logger(defaultSharedLoggerConfig);
13+
export { sharedLogger };
14+
15+
/**
16+
* Assigns the specified configuration object to the shared Agile Logger.
17+
*
18+
* @param logger - Configuration object
19+
*/
20+
export function assignSharedLogger(logger: Logger): void {
21+
sharedLogger = logger;
22+
}
23+
24+
/**
25+
* Returns a newly created Logger.
26+
*
27+
* @param config - Configuration object
28+
*/
29+
export function createLogger(config: LoggerConfig = {}): Logger {
30+
config = defineConfig(config, defaultSharedLoggerConfig);
31+
return new Logger(config);
32+
}

0 commit comments

Comments
 (0)