70 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | const apiPlaceholderRE = /#\{\{API\}\}/g; | ||
|  | const homePlaceholderRE = /#\{\{HOME\}\}/g; | ||
|  | const forumPlacehilderRE = /#\{\{FORUM\}\}/g; | ||
|  | const forumProxyPlaceholderRE = /#\{\{FORUM_PROXY\}\}/g; | ||
|  | 
 | ||
|  | exports.createRedirects = function createRedirects(locations) { | ||
|  |   const { api, home, forum, forumProxy } = locations; | ||
|  | 
 | ||
|  |   if (!(api && home && forum && forumProxy)) { | ||
|  |     throw new Error(`One or more locations are missing, all are required.
 | ||
|  | 
 | ||
|  |     api: ${api} | ||
|  |     home: ${home} | ||
|  |     forum: ${forum} | ||
|  |     forumProxy: ${forumProxy} | ||
|  | 
 | ||
|  |     `);
 | ||
|  |   } | ||
|  | 
 | ||
|  |   return template | ||
|  |     .replace(apiPlaceholderRE, api) | ||
|  |     .replace(homePlaceholderRE, home) | ||
|  |     .replace(forumPlacehilderRE, forum) | ||
|  |     .replace(forumProxyPlaceholderRE, forumProxy); | ||
|  | }; | ||
|  | 
 | ||
|  | /* eslint-disable max-len */ | ||
|  | const template = `#api redirect
 | ||
|  | 
 | ||
|  | /internal/*                                   #{{API}}/internal/:splat | ||
|  | 
 | ||
|  | # auth redirects | ||
|  | /signup                                       /signin 301 | ||
|  | /email-signin                                 /signin 301 | ||
|  | /login                                        /signin 301 | ||
|  | /deprecated-signin                            /signin 301 | ||
|  | /logout                                       /signout 301 | ||
|  | /passwordless-change                          /confirm-email 301 | ||
|  | 
 | ||
|  | # certification redirects | ||
|  | /:username/front-end-certification            /certification/:username/legacy-front-end 301 | ||
|  | /:username/data-visualization-certification   /certification/:username/legacy-data-visualization 301 | ||
|  | /:username/back-end-certification             /certification/:username/legacy-back-end 301 | ||
|  | /:username/full-stack-certification           /certification/:username/full-stack 301 | ||
|  | 
 | ||
|  | # unsunscribe redirects | ||
|  | /u/*                                          #{{API}}/u/:splat | ||
|  | /unsunscribe/*                                #{{API}}/unsunscribe/:splat | ||
|  | /ue/*                                         #{{API}}/ue/:splat | ||
|  | 
 | ||
|  | # misc redirects | ||
|  | /agile                                        / 200 | ||
|  | /chat                                         https://gitter.im/FreeCodeCamp/FreeCodeCamp 301 | ||
|  | /twitch                                       https://twitch.tv/freecodecamp 301 | ||
|  | /nonprofits-form                              / 200 | ||
|  | /pmi-acp-agile-project-managers               / 200 | ||
|  | /pmi-acp-agile-project-managers-form          / 200 | ||
|  | /stories                                      / 200 | ||
|  | /all-stories                                  / 200 | ||
|  | /field-guide/*                                #{{FORUM}} 301 | ||
|  | /learn-to-code                                /learn 200 | ||
|  | /map                                          /learn 200 | ||
|  | /forum/*                                      #{{FORUM_PROXY}} 200 | ||
|  | /privacy                                      #{{HOME}}/forum/t/free-code-camp-privacy-policy/19545 301 | ||
|  | /nonprofit-project-instructions               #{{HOME}}/forum/t/how-free-code-camps-nonprofits-projects-work/19547 301 | ||
|  | /how-nonprofit-projects-work                  https://medium.freecodecamp.org/open-source-for-good-1a0ea9f32d5a 301 | ||
|  | 
 | ||
|  | `;
 | ||
|  | /* eslint-enable max-len */ |