alm
Version:
The best IDE for TypeScript
229 lines (228 loc) • 7.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var types = require("../../common/types");
var simpleRedux_1 = require("./simpleRedux");
var utils = require("../../common/utils");
var initialStoreState = {
activeProject: null,
errorsExpanded: false,
errorsDisplayMode: types.ErrorsDisplayMode.all,
errorsFilter: '',
activeProjectFilePathTruthTable: {},
filePathsInActiveProject: [],
outputStatusCache: {},
liveBuildResults: {
builtCount: 0,
totalCount: 0
},
pendingRequests: [],
findOptions: {
isShown: false,
query: '',
isRegex: false,
isCaseSensitive: false,
isFullWord: false
},
socketConnected: false,
filePaths: [],
filePathsCompleted: false,
fileTreeShown: false,
showDoctor: false,
showSemanticView: false,
tsWorking: {
working: false,
},
testedWorking: {
working: false,
},
};
var redux = new simpleRedux_1.SimpleRedux(initialStoreState);
exports.store = redux.store;
exports.getState = redux.getState;
exports.subscribe = redux.subscribe;
exports.subscribeSub = redux.subscribeSub;
exports.setActiveProject = redux.add('setActiveProject', function (state, payload) {
return {
activeProject: payload,
};
});
exports.inActiveProjectFilePath = function (filePath) { return !!exports.getState().activeProjectFilePathTruthTable[filePath]; };
exports.inActiveProjectUrl = function (url) {
if (!url)
return false;
var protocol = (_a = utils.getFilePathAndProtocolFromUrl(url), _a.protocol), filePath = _a.filePath;
if (protocol == 'file' || protocol == 'ast' || protocol == 'astfull') {
return exports.inActiveProjectFilePath(filePath);
}
else {
return true;
}
var _a;
};
exports.setFilePathsInActiveProject = redux.add('setActiveProjectFiles', function (state, payload) {
// Filter out the `.json` files. These are good for `project data loader` but we don't need it in the UI
payload = payload.filter(function (p) { return !p.endsWith('.json'); });
var truthTable = utils.createMap(payload);
/** Also add all the *folders* in any of the files */
payload.forEach(function (fp) {
// Basically we go up the file path
// If at any point its already in the truth table it means that we've already added everything else that is needed.
var folder = utils.getDirectory(fp);
while (folder && !truthTable[folder]) {
truthTable[folder] = true;
folder = utils.getDirectory(folder);
}
});
return {
activeProjectFilePathTruthTable: truthTable,
filePathsInActiveProject: payload,
};
});
exports.expandErrors = redux.add('expandErrors', function (state, payload) {
return {
errorsExpanded: true,
};
});
exports.collapseErrors = redux.add('collapseErrors', function (state, payload) {
return {
errorsExpanded: false,
};
});
exports.setErrorsDisplayMode = redux.add('setErrorsDisplayMode', function (state, payload) {
return {
errorsDisplayMode: payload,
};
});
exports.setErrorsFilter = redux.add('setErrorsFilter', function (state, payload) {
return {
errorsFilter: payload,
};
});
exports.setPendingRequests = redux.add('setPendingRequests', function (state, payload) {
return {
pendingRequests: payload
};
});
exports.setFindOptionsQuery = redux.add('setFindOptionsQuery', function (state, payload) {
var findQuery = state.findOptions;
var newFindQuery = redux.updateFields({ query: payload })(findQuery);
return {
findOptions: newFindQuery
};
});
exports.setFindOptionsIsCaseSensitive = redux.add('setFindOptionsIsCaseSensitive', function (state, payload) {
var findQuery = state.findOptions;
var newFindQuery = redux.updateFields({ isCaseSensitive: payload })(findQuery);
return {
findOptions: newFindQuery
};
});
exports.setFindOptionsIsRegex = redux.add('setFindOptionsIsRegex', function (state, payload) {
var findQuery = state.findOptions;
var newFindQuery = redux.updateFields({ isRegex: payload })(findQuery);
return {
findOptions: newFindQuery
};
});
exports.setFindOptionsIsFullWord = redux.add('setFindOptionsIsFullWord', function (state, payload) {
var findQuery = state.findOptions;
var newFindQuery = redux.updateFields({ isFullWord: payload })(findQuery);
return {
findOptions: newFindQuery
};
});
exports.setFindOptionsIsShown = redux.add('setFindOptionsIsShown', function (state, payload) {
var findQuery = state.findOptions;
var newFindQuery = redux.updateFields({ isShown: payload })(findQuery);
return {
findOptions: newFindQuery
};
});
exports.setSocketConnected = redux.add('setSocketConnected', function (state, payload) {
return {
socketConnected: payload
};
});
exports.setFilePaths = redux.add('setFilePaths', function (state, config) {
return {
filePaths: config.filePaths,
rootDir: config.rootDir,
filePathsCompleted: config.completed
};
});
exports.expandFileTree = redux.add('expandFileTree', function (state, payload) {
return {
fileTreeShown: true,
};
});
exports.collapseFileTree = redux.add('collapseFileTree', function (state, payload) {
return {
fileTreeShown: false,
};
});
exports.toggleDoctor = redux.add('toggleDoctor', function (state, payload) {
return {
showDoctor: !state.showDoctor
};
});
exports.setShowDoctor = redux.add('setShowDoctor', function (state, payload) {
return {
showDoctor: payload
};
});
exports.toggleSemanticView = redux.add('toggleSemanticView', function (state, payload) {
return {
showSemanticView: !state.showSemanticView
};
});
exports.setShowSemanticView = redux.add('setShowSemanticView', function (state, payload) {
return {
showSemanticView: payload
};
});
exports.fileOuputStatusUpdated = redux.add('fileOuputStatusUpdated', function (state, payload) {
var outputStatusCache = redux.updateFields((_a = {}, _a[payload.inputFilePath] = payload, _a))(state.outputStatusCache);
return {
outputStatusCache: outputStatusCache
};
var _a;
});
exports.completeOuputStatusCacheUpdated = redux.add('completeOuputStatusCacheUpdated', function (state, payload) {
var outputStatusCache = payload;
return {
outputStatusCache: outputStatusCache
};
});
exports.setLiveBuildResults = redux.add('setLiveBuildResults', function (state, payload) {
return {
liveBuildResults: payload
};
});
exports.ifJSStatusWasCurrentThenMoveToOutOfDate = redux.add('ifJSStatusWasCurrentThenMoveToOutOfDate', function (state, payload) {
var oldState = state.outputStatusCache[payload.inputFilePath];
// If we didn't think it was up to date then don't care
if (!oldState || oldState.state !== types.JSOutputState.JSUpToDate) {
return {};
}
// It might be out of date now. So move it there till the backend tells us something different
var newState = {
inputFilePath: oldState.inputFilePath,
outputFilePath: oldState.outputFilePath,
state: types.JSOutputState.JSOutOfDate
};
var outputStatusCache = redux.updateFields((_a = {}, _a[payload.inputFilePath] = newState, _a))(state.outputStatusCache);
return {
outputStatusCache: outputStatusCache
};
var _a;
});
exports.setTSWorking = redux.add('setTSWorking', function (state, payload) {
return {
tsWorking: payload
};
});
exports.setTestedWorking = redux.add('setTestedWorking', function (state, payload) {
return {
testedWorking: payload
};
});