Merge branch 'staging' into fix/normalize-flash-type
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"frontEnd": "isFrontEndCert",
|
||||
"backEnd": "isBackEndCert",
|
||||
"fullStack": "isFullStackCert",
|
||||
"respWebDesign": "isRespWebDesignCert",
|
||||
"frontEndLibs": "isFrontEndLibsCert",
|
||||
"jsAlgoDataStruct": "isJsAlgoDataStructCert",
|
||||
"dataVis": "isDataVisCert",
|
||||
"fullStack": "isFullStackCert"
|
||||
"apisMicroservices": "isApisMicroservicesCert",
|
||||
"infosecQa": "isInfosecQaCert"
|
||||
}
|
||||
|
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"frontEndCert": "Front End Development Certification",
|
||||
"backEndCert": "Back End Development Certification",
|
||||
"dataVisCert": "Data Visualisation Certification",
|
||||
"fullStackCert": "Full Stack Development Certification"
|
||||
"fullStackCert": "Full Stack Development Certification",
|
||||
"respWebDesign": "Responsive Web Design Certification",
|
||||
"frontEndLibs": "Front End Libraries Certification",
|
||||
"jsAlgoDataStruct": "JavaScript Algorithms and Data Structures Certification",
|
||||
"dataVis": "Data Visualisation Certification",
|
||||
"apisMicroservices": "APIs and Microservices Certification",
|
||||
"infosecQa": "Information Security and Quality Assurance Certification"
|
||||
}
|
||||
|
@@ -10,9 +10,14 @@ export { commitGoals };
|
||||
export function completeCommitment$(user) {
|
||||
const {
|
||||
isFrontEndCert,
|
||||
isDataVisCert,
|
||||
isBackEndCert,
|
||||
isFullStackCert
|
||||
isFullStackCert,
|
||||
isRespWebDesignCert,
|
||||
isFrontEndLibsCert,
|
||||
isJsAlgoDataStructCert,
|
||||
isDataVisCert,
|
||||
isApisMicroservicesCert,
|
||||
isInfosecQaCert
|
||||
} = user;
|
||||
|
||||
return Observable.fromNodeCallback(user.pledge, user)()
|
||||
@@ -25,9 +30,15 @@ export function completeCommitment$(user) {
|
||||
|
||||
if (
|
||||
(isFrontEndCert && goal === commitGoals.frontEndCert) ||
|
||||
(isDataVisCert && goal === commitGoals.dataVisCert) ||
|
||||
(isBackEndCert && goal === commitGoals.backEndCert) ||
|
||||
(isFullStackCert && goal === commitGoals.fullStackCert)
|
||||
(isFullStackCert && goal === commitGoals.fullStackCert) ||
|
||||
(isRespWebDesignCert && goal === commitGoals.respWebDesignCert) ||
|
||||
(isFrontEndLibsCert && goal === commitGoals.frontEndLibsCert) ||
|
||||
(isJsAlgoDataStructCert && goal === commitGoals.jsAlgoDataStructCert) ||
|
||||
(isDataVisCert && goal === commitGoals.dataVisCert) ||
|
||||
(isApisMicroservicesCert &&
|
||||
goal === commitGoals.apisMicroservicesCert) ||
|
||||
(isInfosecQaCert && goal === commitGoals.infosecQaCert)
|
||||
) {
|
||||
debug('marking goal complete');
|
||||
pledge.isCompleted = true;
|
||||
|
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"gitHubUserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1521.3 Safari/537.36",
|
||||
"frontEndChallengeId": "561add10cb82ac38a17513be",
|
||||
"dataVisChallengeId": "561add10cb82ac38a17513b3",
|
||||
"backEndChallengeId": "660add10cb82ac38a17513be"
|
||||
"backEndChallengeId": "660add10cb82ac38a17513be",
|
||||
"respWebDesignId": "561add10cb82ac38a17513bc",
|
||||
"frontEndLibsId": "561acd10cb82ac38a17513bc",
|
||||
"jsAlgoDataStructId": "561abd10cb81ac38a17513bc",
|
||||
"dataVisId": "561add10cb82ac39a17513bc",
|
||||
"apisMicroservicesId": "561add10cb82ac38a17523bc",
|
||||
"infosecQaId": "561add10cb82ac38a17213bc"
|
||||
}
|
||||
|
@@ -11,8 +11,20 @@ export function unwrapHandledError(err) {
|
||||
export function wrapHandledError(err, {
|
||||
type,
|
||||
message,
|
||||
redirectTo
|
||||
redirectTo,
|
||||
status = 200
|
||||
}) {
|
||||
err[_handledError] = { type, message, redirectTo };
|
||||
err[_handledError] = { type, message, redirectTo, status };
|
||||
return err;
|
||||
}
|
||||
|
||||
export const createValidatorErrorFormatter = (type, redirectTo, status) =>
|
||||
({ msg }) => wrapHandledError(
|
||||
new Error(msg),
|
||||
{
|
||||
type,
|
||||
message: msg,
|
||||
redirectTo,
|
||||
status
|
||||
}
|
||||
);
|
||||
|
@@ -209,6 +209,7 @@ export function getChallenge(
|
||||
) {
|
||||
return map
|
||||
.flatMap(({ entities, result: { superBlocks } }) => {
|
||||
const superBlock = entities.superBlock;
|
||||
const block = entities.block[blockDashedName];
|
||||
const challenge = entities.challenge[challengeDashedName];
|
||||
return Observable.if(
|
||||
@@ -226,6 +227,7 @@ export function getChallenge(
|
||||
`/challenges/${block.dashedName}/${challenge.dashedName}` :
|
||||
false,
|
||||
entities: {
|
||||
superBlock,
|
||||
challenge: {
|
||||
[challenge.dashedName]: mapChallengeToLang(challenge, lang)
|
||||
}
|
||||
|
@@ -43,3 +43,13 @@ export function ifNotVerifiedRedirectToSettings(req, res, next) {
|
||||
}
|
||||
return next();
|
||||
}
|
||||
|
||||
export function ifUserRedirectTo(path = '/', status) {
|
||||
status = status === 302 ? 302 : 301;
|
||||
return (req, res, next) => {
|
||||
if (req.user) {
|
||||
return res.status(status).redirect(path);
|
||||
}
|
||||
return next();
|
||||
};
|
||||
}
|
||||
|
18
server/utils/webpack-code-split-polyfill.js
Normal file
18
server/utils/webpack-code-split-polyfill.js
Normal file
@@ -0,0 +1,18 @@
|
||||
export default function codeSplitPolyfill() {
|
||||
// polyfill for webpack bundle splitting
|
||||
const requireProto = Object.getPrototypeOf(require);
|
||||
if (!requireProto.hasOwnProperty('ensure')) {
|
||||
Object.defineProperties(
|
||||
requireProto,
|
||||
{
|
||||
ensure: {
|
||||
value: function ensure(modules, callback) {
|
||||
callback(this);
|
||||
},
|
||||
writable: false,
|
||||
enumerable: false
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user