UNPKG

@bmat/translation-management

Version:

Manage Front-End translations from multiple sources

1 lines 1.61 kB
'use strict';var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value));}catch(e){reject(e);}}function rejected(value){try{step(generator['throw'](value));}catch(e){reject(e);}}function step(result){result.done?resolve(result.value):new P(function(resolve){resolve(result.value);}).then(fulfilled,rejected);}step((generator=generator.apply(thisArg,_arguments||[])).next());});};Object.defineProperty(exports,'__esModule',{value:true});const fs=require('fs');const path=require('path');function generatorFactory(folders){return function*(){for(let i=0;i<folders.length;i+=1){if(folders[i]===''){continue;}yield new Promise((resolve,reject)=>{const currentPath=folders.slice(0,i+1).join(path.sep);fs.stat(currentPath,(err,stats)=>{if(err){if(err.code==='ENOENT'){fs.mkdir(currentPath,errMk=>{if(errMk){reject(errMk);}else{resolve();}});}else{reject(err);}}else{if(!stats.isDirectory()){reject();}else{resolve();}}});});}};}function scheduler(generator,onError,onDone){const currentStep=generator.next();if(!currentStep.done){currentStep.value.then(()=>{scheduler(generator,onError,onDone);}).catch(onError);}else{onDone();}}function createFolderIfNotExists(target){return __awaiter(this,void 0,void 0,function*(){const normalPath=path.normalize(target);const folders=path.dirname(normalPath).split(path.sep);return new Promise((resolve,reject)=>{const iterable=generatorFactory(folders);scheduler(iterable(),reject,resolve);});});}exports.createFolderIfNotExists=createFolderIfNotExists;