Skip to content

Commit 9cb6da2

Browse files
Merge pull request #1229 from opencomponents/mocks-auth-clean-require-ts
move mocks, authentication and clean-require to TS
2 parents beadffa + 91e85b4 commit 9cb6da2

13 files changed

+118
-102
lines changed

package.json

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -44,75 +44,75 @@
4444
"oc"
4545
],
4646
"devDependencies": {
47-
"@types/errorhandler": "^1.5.0",
48-
"@types/express": "^4.17.13",
49-
"@types/morgan": "^1.9.3",
50-
"@types/multer": "^1.4.7",
51-
"@types/colors": "^1.2.1",
52-
"@types/node": "^16.9.6",
53-
"@types/semver": "^7.3.8",
54-
"@types/yargs": "^17.0.3",
55-
"@typescript-eslint/eslint-plugin": "^4.31.2",
56-
"@typescript-eslint/parser": "^4.31.2",
47+
"@types/errorhandler": "1.5.0",
48+
"@types/express": "4.17.13",
49+
"@types/morgan": "1.9.3",
50+
"@types/multer": "1.4.7",
51+
"@types/colors": "1.2.1",
52+
"@types/node": "16.10.1",
53+
"@types/semver": "7.3.8",
54+
"@types/yargs": "17.0.3",
55+
"@typescript-eslint/eslint-plugin": "4.32.0",
56+
"@typescript-eslint/parser": "4.32.0",
5757
"chai": "4.3.4",
5858
"chalk": "4.1.2",
5959
"glob": "7.2.0",
6060
"husky": "7.0.2",
6161
"injectr": "0.5.1",
6262
"lint-staged": "11.1.2",
6363
"minimist": "1.2.5",
64-
"mocha": "9.1.1",
64+
"mocha": "9.1.2",
6565
"node-emoji": "1.11.0",
6666
"oc-template-es6-compiler": "1.1.10",
6767
"prettier-eslint-cli": "5.0.1",
6868
"semver-sort": "0.0.4",
6969
"simple-git": "2.45.1",
7070
"sinon": "11.1.2",
71-
"ts-node": "^10.2.1",
72-
"typescript": "^4.4.3"
71+
"ts-node": "10.2.1",
72+
"typescript": "4.4.3"
7373
},
7474
"dependencies": {
7575
"accept-language-parser": "1.5.0",
7676
"async": "3.2.1",
77-
"basic-auth-connect": "^1.0.0",
77+
"basic-auth-connect": "1.0.0",
7878
"body-parser": "1.19.0",
79-
"builtin-modules": "^3.0.0",
80-
"chokidar": "^3.5.2",
79+
"builtin-modules": "3.2.0",
80+
"chokidar": "3.5.2",
8181
"colors": "1.4.0",
8282
"cross-spawn": "7.0.3",
8383
"dependency-graph": "0.11.0",
84-
"errorhandler": "^1.5.0",
84+
"errorhandler": "1.5.1",
8585
"express": "4.17.1",
8686
"form-data": "4.0.0",
8787
"fs-extra": "10.0.0",
88-
"getport": "^0.1.0",
88+
"getport": "0.1.0",
8989
"livereload": "0.9.3",
90-
"lodash": "^4.17.15",
90+
"lodash": "4.17.21",
9191
"minimal-request": "3.0.0",
9292
"morgan": "1.10.0",
93-
"multer": "^1.3.0",
93+
"multer": "1.4.3",
9494
"nice-cache": "0.0.5",
95-
"oc-client": "3.2.12",
96-
"oc-client-browser": "1.5.3",
95+
"oc-client": "4.0.0",
96+
"oc-client-browser": "1.5.4",
9797
"oc-empty-response-handler": "1.0.1",
9898
"oc-get-unix-utc-timestamp": "1.0.3",
9999
"oc-s3-storage-adapter": "1.1.6",
100100
"oc-storage-adapters-utils": "1.0.3",
101101
"oc-template-es6": "1.0.3",
102102
"oc-template-handlebars": "6.0.21",
103-
"oc-template-handlebars-compiler": "6.2.13",
103+
"oc-template-handlebars-compiler": "6.2.15",
104104
"oc-template-jade": "7.0.2",
105105
"oc-template-jade-compiler": "7.0.3",
106106
"open": "8.2.1",
107107
"parse-author": "2.0.0",
108108
"read": "1.0.7",
109109
"require-package-name": "2.0.1",
110-
"response-time": "^2.3.2",
110+
"response-time": "2.3.2",
111111
"semver": "7.3.5",
112112
"semver-extra": "3.0.0",
113113
"serialize-error": "8.1.0",
114114
"targz": "1.0.1",
115-
"try-require": "^1.2.1",
116-
"yargs": "17.2.0"
115+
"try-require": "1.2.1",
116+
"yargs": "17.2.1"
117117
}
118118
}

src/cli/domain/handle-dependencies/get-compiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const path = require('path');
44

5-
const cleanRequire = require('../../../utils/clean-require');
5+
const cleanRequire = require('../../../utils/clean-require').default;
66
const installCompiler = require('./install-compiler');
77

88
module.exports = (options, cb) => {

src/cli/domain/handle-dependencies/install-compiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
const cleanRequire = require('../../../utils/clean-require');
3+
const cleanRequire = require('../../../utils/clean-require').default;
44
const isTemplateValid = require('../../../utils/is-template-valid').default;
55
const npm = require('../../../utils/npm-utils');
66
const strings = require('../../../resources/index').default;

src/cli/domain/handle-dependencies/require-template.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const path = require('path');
44

5-
const cleanRequire = require('../../../utils/clean-require');
5+
const cleanRequire = require('../../../utils/clean-require').default;
66
const isTemplateLegacy = require('../../../utils/is-template-legacy').default;
77
const isTemplateValid = require('../../../utils/is-template-valid').default;
88
const strings = require('../../../resources').default;

src/cli/domain/local.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const clean = require('./clean');
88
const getComponentsByDir = require('./get-components-by-dir').default;
99
const initTemplate = require('./init-template');
1010
const isTemplateLegacy = require('../../utils/is-template-legacy').default;
11-
const mock = require('./mock');
11+
const mock = require('./mock').default;
1212
const packageComponents = require('./package-components');
1313
const strings = require('../../resources').default;
1414
const validator = require('../../registry/domain/validators');

src/cli/domain/mock.js renamed to src/cli/domain/mock.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
'use strict';
1+
import fs from 'fs-extra';
2+
import path from 'path';
23

3-
const fs = require('fs-extra');
4-
const path = require('path');
4+
import settings from '../../resources/settings';
55

6-
const settings = require('../../resources/settings').default;
7-
8-
module.exports = function() {
9-
return function(params, callback) {
6+
export default function mock() {
7+
return function(
8+
params: { targetType: string; targetValue: string; targetName: string },
9+
callback: Callback
10+
) {
1011
fs.readJson(settings.configFile.src, (err, localConfig) => {
1112
localConfig = localConfig || {};
1213

@@ -40,4 +41,4 @@ module.exports = function() {
4041
);
4142
});
4243
};
43-
};
44+
}

src/registry/domain/authentication.js

Lines changed: 0 additions & 55 deletions
This file was deleted.

src/registry/domain/authentication.ts

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import basicAuth from 'basic-auth-connect';
2+
import path from 'path';
3+
4+
import strings from '../../resources/';
5+
6+
type Validate<T = unknown> = (
7+
config: T
8+
) => { isValid: boolean; message: string };
9+
type Middleware<T> = (config: T) => any;
10+
11+
type Authentication<T = any> = {
12+
validate: Validate<T>;
13+
middleware: Middleware<T>;
14+
};
15+
16+
const basicAuthentication: Authentication<{
17+
username: string;
18+
password: string;
19+
}> = {
20+
validate(authConfig) {
21+
const isValid = !!authConfig.username && !!authConfig.password;
22+
23+
return {
24+
isValid,
25+
message: isValid
26+
? ''
27+
: strings.errors.registry
28+
.CONFIGURATION_PUBLISH_BASIC_AUTH_CREDENTIALS_MISSING
29+
};
30+
},
31+
middleware(authConfig) {
32+
return basicAuth(authConfig.username, authConfig.password);
33+
}
34+
};
35+
36+
const builtin: Dictionary<Authentication> = {
37+
basic: basicAuthentication
38+
};
39+
40+
let scheme: Authentication;
41+
42+
export function validate(authConfig: { type: string }) {
43+
if (builtin[authConfig.type]) {
44+
scheme = builtin[authConfig.type];
45+
} else {
46+
const cwd = process.cwd();
47+
module.paths.push(cwd, path.join(cwd, 'node_modules'));
48+
49+
const moduleName = `oc-auth-${authConfig.type}`;
50+
51+
try {
52+
scheme = require(moduleName);
53+
} catch (err) {
54+
return {
55+
isValid: false,
56+
message: strings.errors.registry.CONFIGURATION_PUBLISH_AUTH_MODULE_NOT_FOUND(
57+
moduleName
58+
)
59+
};
60+
}
61+
}
62+
63+
return scheme.validate(authConfig);
64+
}
65+
66+
export function middleware(authConfig: any) {
67+
return scheme.middleware(authConfig);
68+
}
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
'use strict';
1+
import tryRequire from 'try-require';
22

3-
const tryRequire = require('try-require');
4-
5-
module.exports = (path, { justTry = false, resolve = false }) => {
3+
export default function cleanRequire(
4+
path: string,
5+
{ justTry = false, resolve = false }
6+
) {
67
const shouldThrow = !justTry;
8+
79
if (require.cache && !!require.cache[path]) {
810
delete require.cache[path];
911
}
@@ -14,4 +16,4 @@ module.exports = (path, { justTry = false, resolve = false }) => {
1416
}
1517

1618
return action(path);
17-
};
19+
}

test/unit/cli-domain-handle-dependencies-get-compiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ describe('cli : domain : handle-dependencies : get-compiler', () => {
2626
'../../dist/cli/domain/handle-dependencies/get-compiler.js',
2727
{
2828
path: { join: (...args) => args.join('/') },
29-
'../../../utils/clean-require': cleanRequireStub,
29+
'../../../utils/clean-require': { default: cleanRequireStub },
3030
'./install-compiler': installCompilerStub
3131
}
3232
);

0 commit comments

Comments
 (0)