@novo-learning/service-lib 1.7.4 → 1.8.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/README.md +28 -0
- package/dist/modules/clients/pronunciation-api/pronunciation.service.js +1 -2
- package/dist/modules/clients/pronunciation-api/pronunciation.service.js.map +1 -1
- package/dist/modules/clients/publisher-api/publisher.service.js +2 -4
- package/dist/modules/clients/publisher-api/publisher.service.js.map +1 -1
- package/dist/modules/db-migration/db-migration.service.js +2 -1
- package/dist/modules/db-migration/db-migration.service.js.map +1 -1
- package/dist/modules/db-migration/db-migration.service.spec.js +44 -2
- package/dist/modules/db-migration/db-migration.service.spec.js.map +1 -1
- package/package.json +3 -24
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
NPM heeft de ondersteuning voor langlevende tokens beëindigd. Hierdoor worden tokens automatisch ongeldig na een korte periode (maximaal 90 dagen). Dit verhoogt de veiligheid, maar betekent ook dat tokens regelmatig vernieuwd moeten worden. Aangezien de NPM packages niet zo vaak geupdate worden, betekent dit dat er meestal een nieuwe token gegenereerd dient te worden. Daarom is ervoor gekozen om het NPM token als parameter in te stellen voor de CI/CD pipeline. Met het onderstande stappenplan kan er een NPM access token gegenereerd worden.
|
|
2
|
+
|
|
3
|
+
## Stappenplan: Granular NPM Token genereren
|
|
4
|
+
|
|
5
|
+
1. **Log in op de npm website**
|
|
6
|
+
|
|
7
|
+
- Ga naar [npmjs.com](https://www.npmjs.com/) en log in met je npm-account.
|
|
8
|
+
|
|
9
|
+
2. **Navigeer naar Access Tokens**
|
|
10
|
+
|
|
11
|
+
- Klik rechtsboven op je profiel.
|
|
12
|
+
- Kies **Access Tokens** in het menu.
|
|
13
|
+
|
|
14
|
+
3. **Maak een nieuw granular token**
|
|
15
|
+
|
|
16
|
+
- Klik op **Create Token**.
|
|
17
|
+
- Selecteer **Granular Access Token**.
|
|
18
|
+
|
|
19
|
+
4. **Configureer token instellingen**
|
|
20
|
+
|
|
21
|
+
- **Expiration date**: stel in op **morgen**.
|
|
22
|
+
- **Permissions**: kies **Read and Write**.
|
|
23
|
+
- **Package selectie**: selecteer het specifieke package dat je wilt deployen.
|
|
24
|
+
- **Organisatie**: laat **organisatie-permissies leeg**.
|
|
25
|
+
|
|
26
|
+
5. **Genereer en kopieer token**
|
|
27
|
+
- Klik op **Generate Token**.
|
|
28
|
+
- Kopieer het gegenereerde token en gebruik deze als invoer voor de pipeline.
|
|
@@ -31,9 +31,8 @@ let PronunciationService = PronunciationService_1 = class PronunciationService {
|
|
|
31
31
|
return pronunciation;
|
|
32
32
|
}
|
|
33
33
|
catch (err) {
|
|
34
|
-
const message = err.response?.data?.message;
|
|
35
34
|
return {
|
|
36
|
-
error: `${PronunciationService_1.name}: ${
|
|
35
|
+
error: `${PronunciationService_1.name}: ${(0, novo_sdk_1.formatError)(err)}`,
|
|
37
36
|
};
|
|
38
37
|
}
|
|
39
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pronunciation.service.js","sourceRoot":"","sources":["../../../../src/modules/clients/pronunciation-api/pronunciation.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"pronunciation.service.js","sourceRoot":"","sources":["../../../../src/modules/clients/pronunciation-api/pronunciation.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,8 +47,7 @@ let PublisherService = PublisherService_1 = class PublisherService {
|
|
|
47
47
|
return publisher;
|
|
48
48
|
}
|
|
49
49
|
catch (err) {
|
|
50
|
-
const
|
|
51
|
-
const error = `${PublisherService_1.name}: ${message || err.message || err.response?.statusText || err.code}`;
|
|
50
|
+
const error = `${PublisherService_1.name}: ${(0, novo_sdk_1.formatError)(err)}`;
|
|
52
51
|
this.logger.error(error);
|
|
53
52
|
const cachedPublisher = await this.cacheManager.get(this.makeKey(id));
|
|
54
53
|
if (cachedPublisher) {
|
|
@@ -83,8 +82,7 @@ let PublisherService = PublisherService_1 = class PublisherService {
|
|
|
83
82
|
return configurations;
|
|
84
83
|
}
|
|
85
84
|
catch (err) {
|
|
86
|
-
const
|
|
87
|
-
const error = `${PublisherService_1.name}: ${message || err.message || err.response?.statusText || err.code}`;
|
|
85
|
+
const error = `${PublisherService_1.name}: ${(0, novo_sdk_1.formatError)(err)}`;
|
|
88
86
|
this.logger.error(error);
|
|
89
87
|
return { error };
|
|
90
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publisher.service.js","sourceRoot":"","sources":["../../../../src/modules/clients/publisher-api/publisher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"publisher.service.js","sourceRoot":"","sources":["../../../../src/modules/clients/publisher-api/publisher.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.DbMigrationService = void 0;
|
|
16
16
|
const common_1 = require("@nestjs/common");
|
|
17
17
|
const mongoose_1 = require("@nestjs/mongoose");
|
|
18
|
+
const novo_sdk_1 = require("@novo-learning/novo-sdk");
|
|
18
19
|
const mongoose_2 = require("mongoose");
|
|
19
20
|
const db_migration_schema_1 = require("./schema/db-migration.schema");
|
|
20
21
|
let DbMigrationService = class DbMigrationService {
|
|
@@ -39,7 +40,7 @@ let DbMigrationService = class DbMigrationService {
|
|
|
39
40
|
this.migrationModel.create({ name: migration.name, performedAt: new Date() });
|
|
40
41
|
}
|
|
41
42
|
catch (err) {
|
|
42
|
-
this.logger.error(`An error occurred while performing migration [${migration.name}]!`, err);
|
|
43
|
+
this.logger.error(`An error occurred while performing migration [${migration.name}]!`, (0, novo_sdk_1.formatError)(err));
|
|
43
44
|
success = false;
|
|
44
45
|
break;
|
|
45
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-migration.service.js","sourceRoot":"","sources":["../../../src/modules/db-migration/db-migration.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAA+C;AAC/C,uCAAiC;AAEjC,sEAAoF;AAG7E,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YACwC,cAA0C,EAC/D,MAAc;QADO,mBAAc,GAAd,cAAc,CAA4B;QAC/D,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,iBAAiB,CAAC,aAA8B,EAAE;QACtD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5E,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC;YAE/D,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,sBAAsB,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,IAAI,sBAAsB,CAAC,CAAC;gBACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC;gBAE/D,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAEzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChF,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,SAAS,CAAC,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"db-migration.service.js","sourceRoot":"","sources":["../../../src/modules/db-migration/db-migration.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAA+C;AAC/C,sDAAsD;AACtD,uCAAiC;AAEjC,sEAAoF;AAG7E,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YACwC,cAA0C,EAC/D,MAAc;QADO,mBAAc,GAAd,cAAc,CAA4B;QAC/D,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,iBAAiB,CAAC,aAA8B,EAAE;QACtD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5E,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC;YAE/D,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,sBAAsB,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,SAAS,CAAC,IAAI,sBAAsB,CAAC,CAAC;gBACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,SAAS,CAAC,IAAI,MAAM,CAAC,CAAC;gBAE/D,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAEzB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChF,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,SAAS,CAAC,IAAI,IAAI,EAAE,IAAA,sBAAW,EAAC,GAAG,CAAC,CAAC,CAAC;oBACzG,OAAO,GAAG,KAAK,CAAC;oBAChB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF,CAAA;AArCY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,sBAAW,EAAC,qCAAe,CAAC,CAAA;qCAAyB,gBAAK;QAClC,eAAM;GAHtB,kBAAkB,CAqC9B"}
|
|
@@ -5,14 +5,25 @@ const testing_1 = require("@nestjs/testing");
|
|
|
5
5
|
const db_migration_service_1 = require("./db-migration.service");
|
|
6
6
|
describe('DbMigrationService', () => {
|
|
7
7
|
let service;
|
|
8
|
+
let migrationModel;
|
|
9
|
+
let logger;
|
|
8
10
|
beforeEach(async () => {
|
|
11
|
+
migrationModel = {
|
|
12
|
+
find: jest.fn(),
|
|
13
|
+
create: jest.fn(),
|
|
14
|
+
};
|
|
15
|
+
logger = {
|
|
16
|
+
debug: jest.fn(),
|
|
17
|
+
log: jest.fn(),
|
|
18
|
+
error: jest.fn(),
|
|
19
|
+
};
|
|
9
20
|
const module = await testing_1.Test.createTestingModule({
|
|
10
21
|
providers: [
|
|
11
22
|
db_migration_service_1.DbMigrationService,
|
|
12
|
-
common_1.Logger,
|
|
23
|
+
{ provide: common_1.Logger, useValue: logger },
|
|
13
24
|
{
|
|
14
25
|
provide: 'DbMigrationModel',
|
|
15
|
-
useValue:
|
|
26
|
+
useValue: migrationModel,
|
|
16
27
|
},
|
|
17
28
|
],
|
|
18
29
|
}).compile();
|
|
@@ -21,5 +32,36 @@ describe('DbMigrationService', () => {
|
|
|
21
32
|
it('should be defined', () => {
|
|
22
33
|
expect(service).toBeDefined();
|
|
23
34
|
});
|
|
35
|
+
it('should skip migrations that are already performed', async () => {
|
|
36
|
+
migrationModel.find.mockResolvedValue([{ name: 'migration1' }]);
|
|
37
|
+
const migration1 = { name: 'migration1', migrate: jest.fn() };
|
|
38
|
+
const migration2 = {
|
|
39
|
+
name: 'migration2',
|
|
40
|
+
migrate: jest.fn().mockResolvedValue(undefined),
|
|
41
|
+
};
|
|
42
|
+
await service.performMigrations([migration1, migration2]);
|
|
43
|
+
expect(migration1.migrate).not.toHaveBeenCalled();
|
|
44
|
+
expect(migration2.migrate).toHaveBeenCalled();
|
|
45
|
+
expect(migrationModel.create).toHaveBeenCalledWith(expect.objectContaining({ name: 'migration2' }));
|
|
46
|
+
});
|
|
47
|
+
it('should log error and stop if migration fails', async () => {
|
|
48
|
+
migrationModel.find.mockResolvedValue([]);
|
|
49
|
+
const failingMigration = {
|
|
50
|
+
name: 'failMigration',
|
|
51
|
+
migrate: jest.fn().mockRejectedValue(new Error('Migration failed')),
|
|
52
|
+
};
|
|
53
|
+
await service.performMigrations([failingMigration]);
|
|
54
|
+
expect(logger.error).toHaveBeenCalledWith(expect.stringContaining('An error occurred while performing migration [failMigration]!'), expect.stringContaining('Migration failed'));
|
|
55
|
+
expect(migrationModel.create).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
it('should log success if all migrations performed', async () => {
|
|
58
|
+
migrationModel.find.mockResolvedValue([]);
|
|
59
|
+
const migration = {
|
|
60
|
+
name: 'migrationX',
|
|
61
|
+
migrate: jest.fn().mockResolvedValue(undefined),
|
|
62
|
+
};
|
|
63
|
+
await service.performMigrations([migration]);
|
|
64
|
+
expect(logger.debug).toHaveBeenCalledWith('All migrations performed!');
|
|
65
|
+
});
|
|
24
66
|
});
|
|
25
67
|
//# sourceMappingURL=db-migration.service.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-migration.service.spec.js","sourceRoot":"","sources":["../../../src/modules/db-migration/db-migration.service.spec.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AACxC,6CAAsD;
|
|
1
|
+
{"version":3,"file":"db-migration.service.spec.js","sourceRoot":"","sources":["../../../src/modules/db-migration/db-migration.service.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,33 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@novo-learning/service-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.1",
|
|
4
4
|
"description": "Common components for Novo services",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
|
-
"jest": {
|
|
11
|
-
"moduleFileExtensions": [
|
|
12
|
-
"js",
|
|
13
|
-
"json",
|
|
14
|
-
"ts"
|
|
15
|
-
],
|
|
16
|
-
"rootDir": "src",
|
|
17
|
-
"testRegex": ".*\\.spec\\.ts$",
|
|
18
|
-
"transform": {
|
|
19
|
-
"^.+\\.(t|j)s$": "ts-jest"
|
|
20
|
-
},
|
|
21
|
-
"collectCoverageFrom": [
|
|
22
|
-
"**/*.(t|j)s"
|
|
23
|
-
],
|
|
24
|
-
"coverageDirectory": "../coverage",
|
|
25
|
-
"testEnvironment": "node",
|
|
26
|
-
"coveragePathIgnorePatterns": [
|
|
27
|
-
"generated/*",
|
|
28
|
-
"/*.module.ts"
|
|
29
|
-
]
|
|
30
|
-
},
|
|
31
10
|
"scripts": {
|
|
32
11
|
"postinstall": "license-report > licenses.html",
|
|
33
12
|
"build": "tsc",
|
|
@@ -45,7 +24,7 @@
|
|
|
45
24
|
"@nestjs/core": "^10.4.13",
|
|
46
25
|
"@nestjs/mongoose": "^10.1.0",
|
|
47
26
|
"@nestjs/passport": "^10.0.3",
|
|
48
|
-
"@novo-learning/novo-sdk": "^0.
|
|
27
|
+
"@novo-learning/novo-sdk": "^0.8.1",
|
|
49
28
|
"axios": "^1.8.4",
|
|
50
29
|
"axios-retry": "^4.5.0",
|
|
51
30
|
"buffer": "^6.0.3",
|
|
@@ -99,6 +78,6 @@
|
|
|
99
78
|
"webpack-node-externals": "^3.0.0"
|
|
100
79
|
},
|
|
101
80
|
"overrides": {
|
|
102
|
-
"multer": "2.0.
|
|
81
|
+
"multer": "2.0.2"
|
|
103
82
|
}
|
|
104
83
|
}
|