@flusys/nestjs-task-manager 7.1.0 → 8.0.0-beta.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/config/index.d.ts +3 -3
- package/controllers/index.d.ts +5 -5
- package/controllers/task-board.controller.d.ts +3 -3
- package/controllers/task-comment.controller.d.ts +2 -2
- package/controllers/task-label.controller.d.ts +2 -2
- package/controllers/task-list.controller.d.ts +3 -3
- package/controllers/task.controller.d.ts +4 -4
- package/docs/index.d.ts +1 -1
- package/docs/task-manager-swagger.config.d.ts +1 -1
- package/dtos/index.d.ts +5 -5
- package/dtos/task-board.dto.d.ts +1 -1
- package/dtos/task.dto.d.ts +2 -2
- package/entities/index.d.ts +19 -19
- package/entities/task-board-with-company.entity.d.ts +1 -1
- package/fesm/234.js +1393 -0
- package/fesm/431.js +981 -0
- package/fesm/827.js +1054 -0
- package/fesm/988.js +881 -0
- package/fesm/config/index.js +156 -3
- package/fesm/controllers/index.js +21 -5
- package/fesm/docs/index.js +58 -1
- package/fesm/dtos/index.js +280 -5
- package/fesm/entities/index.js +26 -46
- package/fesm/gateways/index.js +288 -1
- package/fesm/index.js +440 -9
- package/fesm/interfaces/index.js +16 -2
- package/fesm/modules/index.js +210 -1
- package/fesm/runtime.js +85 -0
- package/fesm/services/index.js +53 -8
- package/gateways/index.d.ts +1 -1
- package/gateways/task-board.gateway.d.ts +3 -3
- package/index.d.ts +9 -9
- package/interfaces/index.d.ts +2 -2
- package/interfaces/task-manager-module.interface.d.ts +3 -3
- package/interfaces/task.interface.d.ts +2 -2
- package/modules/index.d.ts +1 -1
- package/modules/task-manager.module.d.ts +2 -2
- package/package.json +26 -36
- package/services/index.d.ts +8 -8
- package/services/task-activity.service.d.ts +1 -1
- package/services/task-board.service.d.ts +5 -5
- package/services/task-comment.service.d.ts +4 -4
- package/services/task-label.service.d.ts +4 -4
- package/services/task-list.service.d.ts +4 -4
- package/services/task-manager-config.service.d.ts +3 -3
- package/services/task-manager-datasource.provider.d.ts +3 -3
- package/services/task.service.d.ts +7 -7
- package/cjs/config/event-actions.js +0 -37
- package/cjs/config/index.js +0 -20
- package/cjs/config/message-keys.js +0 -92
- package/cjs/config/task-manager.constants.js +0 -11
- package/cjs/controllers/index.js +0 -22
- package/cjs/controllers/task-board.controller.js +0 -219
- package/cjs/controllers/task-board.controller.spec.js +0 -132
- package/cjs/controllers/task-comment.controller.js +0 -103
- package/cjs/controllers/task-comment.controller.spec.js +0 -86
- package/cjs/controllers/task-label.controller.js +0 -112
- package/cjs/controllers/task-label.controller.spec.js +0 -88
- package/cjs/controllers/task-list.controller.js +0 -158
- package/cjs/controllers/task-list.controller.spec.js +0 -112
- package/cjs/controllers/task.controller.js +0 -199
- package/cjs/controllers/task.controller.spec.js +0 -131
- package/cjs/docs/index.js +0 -18
- package/cjs/docs/task-manager-swagger.config.js +0 -43
- package/cjs/docs/task-manager-swagger.config.spec.js +0 -28
- package/cjs/dtos/index.js +0 -22
- package/cjs/dtos/task-board.dto.js +0 -310
- package/cjs/dtos/task-comment.dto.js +0 -131
- package/cjs/dtos/task-label.dto.js +0 -120
- package/cjs/dtos/task-list.dto.js +0 -198
- package/cjs/dtos/task.dto.js +0 -367
- package/cjs/entities/index.js +0 -72
- package/cjs/entities/index.spec.js +0 -30
- package/cjs/entities/task-activity.entity.js +0 -98
- package/cjs/entities/task-assignee.entity.js +0 -67
- package/cjs/entities/task-board-member.entity.js +0 -94
- package/cjs/entities/task-board-with-company.entity.js +0 -57
- package/cjs/entities/task-board.entity.js +0 -88
- package/cjs/entities/task-comment.entity.js +0 -80
- package/cjs/entities/task-label.entity.js +0 -72
- package/cjs/entities/task-list.entity.js +0 -104
- package/cjs/entities/task-task-label.entity.js +0 -67
- package/cjs/entities/task.entity.js +0 -151
- package/cjs/gateways/index.js +0 -18
- package/cjs/gateways/task-board.gateway.js +0 -167
- package/cjs/gateways/task-board.gateway.spec.js +0 -243
- package/cjs/index.js +0 -26
- package/cjs/interfaces/index.js +0 -19
- package/cjs/interfaces/task-manager-module.interface.js +0 -4
- package/cjs/interfaces/task.interface.js +0 -4
- package/cjs/modules/index.js +0 -18
- package/cjs/modules/task-manager.module.js +0 -135
- package/cjs/modules/task-manager.module.spec.js +0 -144
- package/cjs/services/index.js +0 -25
- package/cjs/services/task-activity.service.js +0 -76
- package/cjs/services/task-activity.service.spec.js +0 -125
- package/cjs/services/task-board.service.js +0 -247
- package/cjs/services/task-board.service.spec.js +0 -465
- package/cjs/services/task-comment.service.js +0 -103
- package/cjs/services/task-comment.service.spec.js +0 -160
- package/cjs/services/task-label.service.js +0 -97
- package/cjs/services/task-label.service.spec.js +0 -138
- package/cjs/services/task-list.service.js +0 -130
- package/cjs/services/task-list.service.spec.js +0 -284
- package/cjs/services/task-manager-config.service.js +0 -69
- package/cjs/services/task-manager-config.service.spec.js +0 -98
- package/cjs/services/task-manager-datasource.provider.js +0 -84
- package/cjs/services/task-manager-datasource.provider.spec.js +0 -131
- package/cjs/services/task.service.js +0 -398
- package/cjs/services/task.service.spec.js +0 -700
- package/fesm/config/event-actions.js +0 -16
- package/fesm/config/message-keys.js +0 -65
- package/fesm/config/task-manager.constants.js +0 -1
- package/fesm/controllers/task-board.controller.js +0 -209
- package/fesm/controllers/task-board.controller.spec.js +0 -128
- package/fesm/controllers/task-comment.controller.js +0 -93
- package/fesm/controllers/task-comment.controller.spec.js +0 -82
- package/fesm/controllers/task-label.controller.js +0 -102
- package/fesm/controllers/task-label.controller.spec.js +0 -84
- package/fesm/controllers/task-list.controller.js +0 -148
- package/fesm/controllers/task-list.controller.spec.js +0 -108
- package/fesm/controllers/task.controller.js +0 -189
- package/fesm/controllers/task.controller.spec.js +0 -127
- package/fesm/docs/task-manager-swagger.config.js +0 -33
- package/fesm/docs/task-manager-swagger.config.spec.js +0 -24
- package/fesm/dtos/task-board.dto.js +0 -277
- package/fesm/dtos/task-comment.dto.js +0 -110
- package/fesm/dtos/task-label.dto.js +0 -99
- package/fesm/dtos/task-list.dto.js +0 -174
- package/fesm/dtos/task.dto.js +0 -337
- package/fesm/entities/index.spec.js +0 -26
- package/fesm/entities/task-activity.entity.js +0 -88
- package/fesm/entities/task-assignee.entity.js +0 -57
- package/fesm/entities/task-board-member.entity.js +0 -76
- package/fesm/entities/task-board-with-company.entity.js +0 -47
- package/fesm/entities/task-board.entity.js +0 -78
- package/fesm/entities/task-comment.entity.js +0 -70
- package/fesm/entities/task-label.entity.js +0 -62
- package/fesm/entities/task-list.entity.js +0 -94
- package/fesm/entities/task-task-label.entity.js +0 -57
- package/fesm/entities/task.entity.js +0 -133
- package/fesm/gateways/task-board.gateway.js +0 -157
- package/fesm/gateways/task-board.gateway.spec.js +0 -239
- package/fesm/interfaces/task-manager-module.interface.js +0 -1
- package/fesm/interfaces/task.interface.js +0 -1
- package/fesm/modules/task-manager.module.js +0 -125
- package/fesm/modules/task-manager.module.spec.js +0 -140
- package/fesm/services/task-activity.service.js +0 -66
- package/fesm/services/task-activity.service.spec.js +0 -121
- package/fesm/services/task-board.service.js +0 -237
- package/fesm/services/task-board.service.spec.js +0 -461
- package/fesm/services/task-comment.service.js +0 -93
- package/fesm/services/task-comment.service.spec.js +0 -156
- package/fesm/services/task-label.service.js +0 -87
- package/fesm/services/task-label.service.spec.js +0 -134
- package/fesm/services/task-list.service.js +0 -120
- package/fesm/services/task-list.service.spec.js +0 -280
- package/fesm/services/task-manager-config.service.js +0 -59
- package/fesm/services/task-manager-config.service.spec.js +0 -94
- package/fesm/services/task-manager-datasource.provider.js +0 -74
- package/fesm/services/task-manager-datasource.provider.spec.js +0 -127
- package/fesm/services/task.service.js +0 -388
- package/fesm/services/task.service.spec.js +0 -696
package/cjs/modules/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_export_star(require("./task-manager.module"), exports);
|
|
6
|
-
function _export_star(from, to) {
|
|
7
|
-
Object.keys(from).forEach(function(k) {
|
|
8
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
9
|
-
Object.defineProperty(to, k, {
|
|
10
|
-
enumerable: true,
|
|
11
|
-
get: function() {
|
|
12
|
-
return from[k];
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
return from;
|
|
18
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TaskManagerModule", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TaskManagerModule;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _modules = require("@flusys/nestjs-shared/modules");
|
|
12
|
-
const _common = require("@nestjs/common");
|
|
13
|
-
const _jwt = require("@nestjs/jwt");
|
|
14
|
-
const _taskmanagerconstants = require("../config/task-manager.constants");
|
|
15
|
-
const _controllers = require("../controllers");
|
|
16
|
-
const _taskboardgateway = require("../gateways/task-board.gateway");
|
|
17
|
-
const _services = require("../services");
|
|
18
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
19
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
-
}
|
|
24
|
-
const CONTROLLERS = [
|
|
25
|
-
_controllers.TaskBoardController,
|
|
26
|
-
_controllers.TaskListController,
|
|
27
|
-
_controllers.TaskController,
|
|
28
|
-
_controllers.TaskLabelController,
|
|
29
|
-
_controllers.TaskCommentController
|
|
30
|
-
];
|
|
31
|
-
const EXPORTED_SERVICES = [
|
|
32
|
-
_services.TaskManagerConfigService,
|
|
33
|
-
_services.TaskManagerDataSourceProvider,
|
|
34
|
-
_services.TaskBoardService,
|
|
35
|
-
_services.TaskListService,
|
|
36
|
-
_services.TaskService,
|
|
37
|
-
_services.TaskLabelService,
|
|
38
|
-
_services.TaskCommentService,
|
|
39
|
-
_services.TaskActivityService
|
|
40
|
-
];
|
|
41
|
-
let TaskManagerModule = class TaskManagerModule {
|
|
42
|
-
static forRoot(options) {
|
|
43
|
-
return {
|
|
44
|
-
module: TaskManagerModule,
|
|
45
|
-
global: options.global ?? false,
|
|
46
|
-
imports: [
|
|
47
|
-
_modules.CacheModule,
|
|
48
|
-
_modules.UtilsModule
|
|
49
|
-
],
|
|
50
|
-
controllers: options.includeController !== false ? CONTROLLERS : [],
|
|
51
|
-
providers: [
|
|
52
|
-
...this.buildProviders(options),
|
|
53
|
-
_jwt.JwtService,
|
|
54
|
-
_taskboardgateway.TaskBoardGateway
|
|
55
|
-
],
|
|
56
|
-
exports: [
|
|
57
|
-
...EXPORTED_SERVICES,
|
|
58
|
-
_taskboardgateway.TaskBoardGateway
|
|
59
|
-
]
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
static forRootAsync(options) {
|
|
63
|
-
return {
|
|
64
|
-
module: TaskManagerModule,
|
|
65
|
-
global: options.global ?? false,
|
|
66
|
-
imports: [
|
|
67
|
-
...options.imports || [],
|
|
68
|
-
_modules.CacheModule,
|
|
69
|
-
_modules.UtilsModule
|
|
70
|
-
],
|
|
71
|
-
controllers: options.includeController !== false ? CONTROLLERS : [],
|
|
72
|
-
providers: [
|
|
73
|
-
...this.createAsyncProviders(options),
|
|
74
|
-
...this.buildProviders(),
|
|
75
|
-
_jwt.JwtService,
|
|
76
|
-
_taskboardgateway.TaskBoardGateway
|
|
77
|
-
],
|
|
78
|
-
exports: [
|
|
79
|
-
...EXPORTED_SERVICES,
|
|
80
|
-
_taskboardgateway.TaskBoardGateway
|
|
81
|
-
]
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
static buildProviders(options) {
|
|
85
|
-
const providers = [
|
|
86
|
-
...EXPORTED_SERVICES
|
|
87
|
-
];
|
|
88
|
-
if (options) {
|
|
89
|
-
providers.unshift({
|
|
90
|
-
provide: _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS,
|
|
91
|
-
useValue: options
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
providers.push((0, _modules.createModuleEventsProvider)('task-manager', _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS));
|
|
95
|
-
return providers;
|
|
96
|
-
}
|
|
97
|
-
static createAsyncProviders(options) {
|
|
98
|
-
if (options.useFactory) {
|
|
99
|
-
return [
|
|
100
|
-
{
|
|
101
|
-
provide: _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS,
|
|
102
|
-
useFactory: async (...args)=>({
|
|
103
|
-
...options,
|
|
104
|
-
config: await options.useFactory(...args)
|
|
105
|
-
}),
|
|
106
|
-
inject: options.inject || []
|
|
107
|
-
}
|
|
108
|
-
];
|
|
109
|
-
}
|
|
110
|
-
const factoryClass = options.useClass || options.useExisting;
|
|
111
|
-
if (!factoryClass) return [];
|
|
112
|
-
const providers = [
|
|
113
|
-
{
|
|
114
|
-
provide: _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS,
|
|
115
|
-
useFactory: async (factory)=>({
|
|
116
|
-
...options,
|
|
117
|
-
config: await factory.createTaskManagerOptions()
|
|
118
|
-
}),
|
|
119
|
-
inject: [
|
|
120
|
-
factoryClass
|
|
121
|
-
]
|
|
122
|
-
}
|
|
123
|
-
];
|
|
124
|
-
if (options.useClass) {
|
|
125
|
-
providers.push({
|
|
126
|
-
provide: options.useClass,
|
|
127
|
-
useClass: options.useClass
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
return providers;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
TaskManagerModule = _ts_decorate([
|
|
134
|
-
(0, _common.Module)({})
|
|
135
|
-
], TaskManagerModule);
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _taskmanagermodule = require("./task-manager.module");
|
|
6
|
-
const _taskmanagerconstants = require("../config/task-manager.constants");
|
|
7
|
-
const _controllers = require("../controllers");
|
|
8
|
-
const _taskboardgateway = require("../gateways/task-board.gateway");
|
|
9
|
-
function _define_property(obj, key, value) {
|
|
10
|
-
if (key in obj) {
|
|
11
|
-
Object.defineProperty(obj, key, {
|
|
12
|
-
value: value,
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true,
|
|
15
|
-
writable: true
|
|
16
|
-
});
|
|
17
|
-
} else {
|
|
18
|
-
obj[key] = value;
|
|
19
|
-
}
|
|
20
|
-
return obj;
|
|
21
|
-
}
|
|
22
|
-
function providerTokens(providers) {
|
|
23
|
-
return providers.map((p)=>typeof p === 'function' ? p : p.provide);
|
|
24
|
-
}
|
|
25
|
-
describe('TaskManagerModule', ()=>{
|
|
26
|
-
describe('forRoot', ()=>{
|
|
27
|
-
it('should default to a non-global module with all controllers registered', ()=>{
|
|
28
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRoot({});
|
|
29
|
-
expect(dynamicModule.module).toBe(_taskmanagermodule.TaskManagerModule);
|
|
30
|
-
expect(dynamicModule.global).toBe(false);
|
|
31
|
-
expect(dynamicModule.controllers).toEqual([
|
|
32
|
-
_controllers.TaskBoardController,
|
|
33
|
-
_controllers.TaskListController,
|
|
34
|
-
_controllers.TaskController,
|
|
35
|
-
_controllers.TaskLabelController,
|
|
36
|
-
_controllers.TaskCommentController
|
|
37
|
-
]);
|
|
38
|
-
});
|
|
39
|
-
it('should respect global: true', ()=>{
|
|
40
|
-
expect(_taskmanagermodule.TaskManagerModule.forRoot({
|
|
41
|
-
global: true
|
|
42
|
-
}).global).toBe(true);
|
|
43
|
-
});
|
|
44
|
-
it('should register no controllers when includeController is false', ()=>{
|
|
45
|
-
expect(_taskmanagermodule.TaskManagerModule.forRoot({
|
|
46
|
-
includeController: false
|
|
47
|
-
}).controllers).toEqual([]);
|
|
48
|
-
});
|
|
49
|
-
it('should register TaskBoardGateway as both a provider and an export', ()=>{
|
|
50
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRoot({});
|
|
51
|
-
expect(providerTokens(dynamicModule.providers)).toContain(_taskboardgateway.TaskBoardGateway);
|
|
52
|
-
expect(dynamicModule.exports).toContain(_taskboardgateway.TaskBoardGateway);
|
|
53
|
-
});
|
|
54
|
-
it('should register a TASK_MANAGER_MODULE_OPTIONS provider carrying the given options', ()=>{
|
|
55
|
-
const options = {
|
|
56
|
-
bootstrapAppConfig: {}
|
|
57
|
-
};
|
|
58
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRoot(options);
|
|
59
|
-
const provider = dynamicModule.providers.find((p)=>p.provide === _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS);
|
|
60
|
-
expect(provider.useValue).toBe(options);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
describe('forRootAsync', ()=>{
|
|
64
|
-
it('should forward external imports alongside CacheModule/UtilsModule', ()=>{
|
|
65
|
-
let FakeImportedModule = class FakeImportedModule {
|
|
66
|
-
};
|
|
67
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRootAsync({
|
|
68
|
-
imports: [
|
|
69
|
-
FakeImportedModule
|
|
70
|
-
]
|
|
71
|
-
});
|
|
72
|
-
expect(dynamicModule.imports).toEqual(expect.arrayContaining([
|
|
73
|
-
FakeImportedModule
|
|
74
|
-
]));
|
|
75
|
-
});
|
|
76
|
-
it('should still register TaskBoardGateway when using async registration', ()=>{
|
|
77
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRootAsync({
|
|
78
|
-
useFactory: jest.fn()
|
|
79
|
-
});
|
|
80
|
-
expect(providerTokens(dynamicModule.providers)).toContain(_taskboardgateway.TaskBoardGateway);
|
|
81
|
-
expect(dynamicModule.exports).toContain(_taskboardgateway.TaskBoardGateway);
|
|
82
|
-
});
|
|
83
|
-
it('useFactory: builds a TASK_MANAGER_MODULE_OPTIONS provider merging resolved config', async ()=>{
|
|
84
|
-
const useFactory = jest.fn().mockResolvedValue({
|
|
85
|
-
foo: 'bar'
|
|
86
|
-
});
|
|
87
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRootAsync({
|
|
88
|
-
useFactory,
|
|
89
|
-
inject: [
|
|
90
|
-
'SOME_TOKEN'
|
|
91
|
-
]
|
|
92
|
-
});
|
|
93
|
-
const provider = dynamicModule.providers.find((p)=>p.provide === _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS);
|
|
94
|
-
expect(provider.inject).toEqual([
|
|
95
|
-
'SOME_TOKEN'
|
|
96
|
-
]);
|
|
97
|
-
const resolved = await provider.useFactory('injected');
|
|
98
|
-
expect(useFactory).toHaveBeenCalledWith('injected');
|
|
99
|
-
expect(resolved.config).toEqual({
|
|
100
|
-
foo: 'bar'
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
it('useClass: registers both the class provider and an options provider calling createTaskManagerOptions()', async ()=>{
|
|
104
|
-
let MyOptionsFactory = class MyOptionsFactory {
|
|
105
|
-
constructor(){
|
|
106
|
-
_define_property(this, "createTaskManagerOptions", jest.fn().mockResolvedValue({
|
|
107
|
-
foo: 'from-class'
|
|
108
|
-
}));
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRootAsync({
|
|
112
|
-
useClass: MyOptionsFactory
|
|
113
|
-
});
|
|
114
|
-
const classProvider = dynamicModule.providers.find((p)=>p.provide === MyOptionsFactory);
|
|
115
|
-
expect(classProvider.useClass).toBe(MyOptionsFactory);
|
|
116
|
-
const optionsProvider = dynamicModule.providers.find((p)=>p.provide === _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS);
|
|
117
|
-
const instance = new MyOptionsFactory();
|
|
118
|
-
const resolved = await optionsProvider.useFactory(instance);
|
|
119
|
-
expect(instance.createTaskManagerOptions).toHaveBeenCalled();
|
|
120
|
-
expect(resolved.config).toEqual({
|
|
121
|
-
foo: 'from-class'
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
it('useExisting: registers a single options provider without a duplicate class registration', ()=>{
|
|
125
|
-
let MyOptionsFactory = class MyOptionsFactory {
|
|
126
|
-
constructor(){
|
|
127
|
-
_define_property(this, "createTaskManagerOptions", jest.fn());
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRootAsync({
|
|
131
|
-
useExisting: MyOptionsFactory
|
|
132
|
-
});
|
|
133
|
-
expect(dynamicModule.providers.filter((p)=>p.provide === MyOptionsFactory)).toHaveLength(0);
|
|
134
|
-
const optionsProvider = dynamicModule.providers.find((p)=>p.provide === _taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS);
|
|
135
|
-
expect(optionsProvider.inject).toEqual([
|
|
136
|
-
MyOptionsFactory
|
|
137
|
-
]);
|
|
138
|
-
});
|
|
139
|
-
it('should register no TASK_MANAGER_MODULE_OPTIONS provider when neither useFactory, useClass, nor useExisting is given', ()=>{
|
|
140
|
-
const dynamicModule = _taskmanagermodule.TaskManagerModule.forRootAsync({});
|
|
141
|
-
expect(providerTokens(dynamicModule.providers)).not.toContain(_taskmanagerconstants.TASK_MANAGER_MODULE_OPTIONS);
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
});
|
package/cjs/services/index.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_export_star(require("./task-manager-config.service"), exports);
|
|
6
|
-
_export_star(require("./task-manager-datasource.provider"), exports);
|
|
7
|
-
_export_star(require("./task-board.service"), exports);
|
|
8
|
-
_export_star(require("./task-list.service"), exports);
|
|
9
|
-
_export_star(require("./task-activity.service"), exports);
|
|
10
|
-
_export_star(require("./task-label.service"), exports);
|
|
11
|
-
_export_star(require("./task-comment.service"), exports);
|
|
12
|
-
_export_star(require("./task.service"), exports);
|
|
13
|
-
function _export_star(from, to) {
|
|
14
|
-
Object.keys(from).forEach(function(k) {
|
|
15
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
16
|
-
Object.defineProperty(to, k, {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
get: function() {
|
|
19
|
-
return from[k];
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
return from;
|
|
25
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TaskActivityService", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TaskActivityService;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _common = require("@nestjs/common");
|
|
12
|
-
const _entities = require("../entities");
|
|
13
|
-
const _taskmanagerdatasourceprovider = require("./task-manager-datasource.provider");
|
|
14
|
-
function _define_property(obj, key, value) {
|
|
15
|
-
if (key in obj) {
|
|
16
|
-
Object.defineProperty(obj, key, {
|
|
17
|
-
value: value,
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true,
|
|
20
|
-
writable: true
|
|
21
|
-
});
|
|
22
|
-
} else {
|
|
23
|
-
obj[key] = value;
|
|
24
|
-
}
|
|
25
|
-
return obj;
|
|
26
|
-
}
|
|
27
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
28
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
29
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
30
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
31
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
32
|
-
}
|
|
33
|
-
function _ts_metadata(k, v) {
|
|
34
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
35
|
-
}
|
|
36
|
-
function _ts_param(paramIndex, decorator) {
|
|
37
|
-
return function(target, key) {
|
|
38
|
-
decorator(target, key, paramIndex);
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
let TaskActivityService = class TaskActivityService {
|
|
42
|
-
async log(taskId, boardId, userId, action, oldValue, newValue) {
|
|
43
|
-
const repo = await this.ensureRepository();
|
|
44
|
-
const activity = repo.create({
|
|
45
|
-
taskId,
|
|
46
|
-
boardId,
|
|
47
|
-
userId,
|
|
48
|
-
action,
|
|
49
|
-
oldValue,
|
|
50
|
-
newValue
|
|
51
|
-
});
|
|
52
|
-
await repo.save(activity);
|
|
53
|
-
}
|
|
54
|
-
async ensureRepository() {
|
|
55
|
-
if (!this.repository) {
|
|
56
|
-
this.repository = await this.dataSourceProvider.getRepository(_entities.TaskActivity);
|
|
57
|
-
}
|
|
58
|
-
return this.repository;
|
|
59
|
-
}
|
|
60
|
-
constructor(dataSourceProvider){
|
|
61
|
-
_define_property(this, "dataSourceProvider", void 0);
|
|
62
|
-
_define_property(this, "repository", void 0);
|
|
63
|
-
this.dataSourceProvider = dataSourceProvider;
|
|
64
|
-
this.repository = null;
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
TaskActivityService = _ts_decorate([
|
|
68
|
-
(0, _common.Injectable)({
|
|
69
|
-
scope: _common.Scope.REQUEST
|
|
70
|
-
}),
|
|
71
|
-
_ts_param(0, (0, _common.Inject)(_taskmanagerdatasourceprovider.TaskManagerDataSourceProvider)),
|
|
72
|
-
_ts_metadata("design:type", Function),
|
|
73
|
-
_ts_metadata("design:paramtypes", [
|
|
74
|
-
typeof _taskmanagerdatasourceprovider.TaskManagerDataSourceProvider === "undefined" ? Object : _taskmanagerdatasourceprovider.TaskManagerDataSourceProvider
|
|
75
|
-
])
|
|
76
|
-
], TaskActivityService);
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _testing = require("@nestjs/testing");
|
|
6
|
-
const _entities = require("../entities");
|
|
7
|
-
const _taskactivityservice = require("./task-activity.service");
|
|
8
|
-
const _taskmanagerdatasourceprovider = require("./task-manager-datasource.provider");
|
|
9
|
-
describe('TaskActivityService', ()=>{
|
|
10
|
-
let service;
|
|
11
|
-
let mockRepo;
|
|
12
|
-
let mockDataSourceProvider;
|
|
13
|
-
beforeEach(async ()=>{
|
|
14
|
-
mockRepo = {
|
|
15
|
-
create: jest.fn((data)=>({
|
|
16
|
-
id: 'activity-uuid-1',
|
|
17
|
-
...data
|
|
18
|
-
})),
|
|
19
|
-
save: jest.fn().mockResolvedValue(undefined)
|
|
20
|
-
};
|
|
21
|
-
mockDataSourceProvider = {
|
|
22
|
-
getRepository: jest.fn().mockResolvedValue(mockRepo)
|
|
23
|
-
};
|
|
24
|
-
const module = await _testing.Test.createTestingModule({
|
|
25
|
-
providers: [
|
|
26
|
-
_taskactivityservice.TaskActivityService,
|
|
27
|
-
{
|
|
28
|
-
provide: _taskmanagerdatasourceprovider.TaskManagerDataSourceProvider,
|
|
29
|
-
useValue: mockDataSourceProvider
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
}).compile();
|
|
33
|
-
service = await module.resolve(_taskactivityservice.TaskActivityService);
|
|
34
|
-
});
|
|
35
|
-
it('lazily resolves the TaskActivity repository from the DataSource provider', async ()=>{
|
|
36
|
-
await service.log('task-1', 'board-1', 'user-1', 'task.created', null, {
|
|
37
|
-
title: 'New task'
|
|
38
|
-
});
|
|
39
|
-
expect(mockDataSourceProvider.getRepository).toHaveBeenCalledWith(_entities.TaskActivity);
|
|
40
|
-
expect(mockDataSourceProvider.getRepository).toHaveBeenCalledTimes(1);
|
|
41
|
-
});
|
|
42
|
-
it('caches the repository across multiple log calls (only resolved once)', async ()=>{
|
|
43
|
-
await service.log('task-1', 'board-1', 'user-1', 'task.created', null, {
|
|
44
|
-
title: 'New task'
|
|
45
|
-
});
|
|
46
|
-
await service.log('task-1', 'board-1', 'user-1', 'task.moved', {
|
|
47
|
-
listId: 'a'
|
|
48
|
-
}, {
|
|
49
|
-
listId: 'b'
|
|
50
|
-
});
|
|
51
|
-
expect(mockDataSourceProvider.getRepository).toHaveBeenCalledTimes(1);
|
|
52
|
-
expect(mockRepo.save).toHaveBeenCalledTimes(2);
|
|
53
|
-
});
|
|
54
|
-
it('records "task.created" activity with title in newValue and null oldValue', async ()=>{
|
|
55
|
-
await service.log('task-1', 'board-1', 'user-1', 'task.created', null, {
|
|
56
|
-
title: 'New task'
|
|
57
|
-
});
|
|
58
|
-
expect(mockRepo.create).toHaveBeenCalledWith({
|
|
59
|
-
taskId: 'task-1',
|
|
60
|
-
boardId: 'board-1',
|
|
61
|
-
userId: 'user-1',
|
|
62
|
-
action: 'task.created',
|
|
63
|
-
oldValue: null,
|
|
64
|
-
newValue: {
|
|
65
|
-
title: 'New task'
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
expect(mockRepo.save).toHaveBeenCalledWith(expect.objectContaining({
|
|
69
|
-
action: 'task.created',
|
|
70
|
-
newValue: {
|
|
71
|
-
title: 'New task'
|
|
72
|
-
}
|
|
73
|
-
}));
|
|
74
|
-
});
|
|
75
|
-
it('records "task.moved" activity with old and new listId', async ()=>{
|
|
76
|
-
await service.log('task-1', 'board-1', 'user-1', 'task.moved', {
|
|
77
|
-
listId: 'list-old'
|
|
78
|
-
}, {
|
|
79
|
-
listId: 'list-new'
|
|
80
|
-
});
|
|
81
|
-
expect(mockRepo.create).toHaveBeenCalledWith(expect.objectContaining({
|
|
82
|
-
action: 'task.moved',
|
|
83
|
-
oldValue: {
|
|
84
|
-
listId: 'list-old'
|
|
85
|
-
},
|
|
86
|
-
newValue: {
|
|
87
|
-
listId: 'list-new'
|
|
88
|
-
}
|
|
89
|
-
}));
|
|
90
|
-
});
|
|
91
|
-
it('records "task.assigned" activity with old and new assigneeIds', async ()=>{
|
|
92
|
-
await service.log('task-1', 'board-1', 'user-1', 'task.assigned', {
|
|
93
|
-
assigneeIds: [
|
|
94
|
-
'u1'
|
|
95
|
-
]
|
|
96
|
-
}, {
|
|
97
|
-
assigneeIds: [
|
|
98
|
-
'u1',
|
|
99
|
-
'u2'
|
|
100
|
-
]
|
|
101
|
-
});
|
|
102
|
-
expect(mockRepo.create).toHaveBeenCalledWith(expect.objectContaining({
|
|
103
|
-
action: 'task.assigned',
|
|
104
|
-
oldValue: {
|
|
105
|
-
assigneeIds: [
|
|
106
|
-
'u1'
|
|
107
|
-
]
|
|
108
|
-
},
|
|
109
|
-
newValue: {
|
|
110
|
-
assigneeIds: [
|
|
111
|
-
'u1',
|
|
112
|
-
'u2'
|
|
113
|
-
]
|
|
114
|
-
}
|
|
115
|
-
}));
|
|
116
|
-
});
|
|
117
|
-
it('records an activity with a null userId (system-initiated action)', async ()=>{
|
|
118
|
-
await service.log('task-1', 'board-1', null, 'task.created', null, {
|
|
119
|
-
title: 'System task'
|
|
120
|
-
});
|
|
121
|
-
expect(mockRepo.create).toHaveBeenCalledWith(expect.objectContaining({
|
|
122
|
-
userId: null
|
|
123
|
-
}));
|
|
124
|
-
});
|
|
125
|
-
});
|