mirror of https://github.com/actions/setup-python
719 lines
21 KiB
JavaScript
719 lines
21 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
|
|
function _v() {
|
|
const data = _interopRequireDefault(require('v8'));
|
|
|
|
_v = function _v() {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _fs() {
|
|
const data = _interopRequireDefault(require('fs'));
|
|
|
|
_fs = function _fs() {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
function _betterSqlite() {
|
|
const data = _interopRequireDefault(require('better-sqlite3'));
|
|
|
|
_betterSqlite = function _betterSqlite() {
|
|
return data;
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
var _constants = _interopRequireDefault(require('../constants'));
|
|
|
|
function _interopRequireDefault(obj) {
|
|
return obj && obj.__esModule ? obj : {default: obj};
|
|
}
|
|
|
|
function _slicedToArray(arr, i) {
|
|
return (
|
|
_arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest()
|
|
);
|
|
}
|
|
|
|
function _nonIterableRest() {
|
|
throw new TypeError('Invalid attempt to destructure non-iterable instance');
|
|
}
|
|
|
|
function _iterableToArrayLimit(arr, i) {
|
|
var _arr = [];
|
|
var _n = true;
|
|
var _d = false;
|
|
var _e = undefined;
|
|
try {
|
|
for (
|
|
var _i = arr[Symbol.iterator](), _s;
|
|
!(_n = (_s = _i.next()).done);
|
|
_n = true
|
|
) {
|
|
_arr.push(_s.value);
|
|
if (i && _arr.length === i) break;
|
|
}
|
|
} catch (err) {
|
|
_d = true;
|
|
_e = err;
|
|
} finally {
|
|
try {
|
|
if (!_n && _i['return'] != null) _i['return']();
|
|
} finally {
|
|
if (_d) throw _e;
|
|
}
|
|
}
|
|
return _arr;
|
|
}
|
|
|
|
function _arrayWithHoles(arr) {
|
|
if (Array.isArray(arr)) return arr;
|
|
}
|
|
|
|
class SQLitePersistence {
|
|
read(cachePath) {
|
|
// Get database, throw if does not exist.
|
|
const db = this.getDatabase(cachePath, true); // Create empty map to populate.
|
|
|
|
const internalHasteMap = {
|
|
files: new Map(),
|
|
map: new Map(),
|
|
mocks: new Map(),
|
|
duplicates: new Map(),
|
|
clocks: new Map()
|
|
}; // Fetch files.
|
|
|
|
const filesArr = db.prepare(`SELECT * FROM files`).all();
|
|
var _iteratorNormalCompletion = true;
|
|
var _didIteratorError = false;
|
|
var _iteratorError = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator = filesArr[Symbol.iterator](), _step;
|
|
!(_iteratorNormalCompletion = (_step = _iterator.next()).done);
|
|
_iteratorNormalCompletion = true
|
|
) {
|
|
const file = _step.value;
|
|
internalHasteMap.files.set(file.filePath, [
|
|
file.id,
|
|
file.mtime,
|
|
file.size,
|
|
file.visited,
|
|
file.dependencies,
|
|
file.sha1
|
|
]);
|
|
} // Fetch map.
|
|
} catch (err) {
|
|
_didIteratorError = true;
|
|
_iteratorError = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
_iterator.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError) {
|
|
throw _iteratorError;
|
|
}
|
|
}
|
|
}
|
|
|
|
const mapsArr = db.prepare(`SELECT * FROM map`).all();
|
|
var _iteratorNormalCompletion2 = true;
|
|
var _didIteratorError2 = false;
|
|
var _iteratorError2 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator2 = mapsArr[Symbol.iterator](), _step2;
|
|
!(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done);
|
|
_iteratorNormalCompletion2 = true
|
|
) {
|
|
const map = _step2.value;
|
|
const mapItem = {};
|
|
|
|
if (map.genericPath !== null && map.genericType !== null) {
|
|
mapItem[_constants.default.GENERIC_PLATFORM] = [
|
|
map.genericPath,
|
|
map.genericType
|
|
];
|
|
}
|
|
|
|
if (map.nativePath !== null && map.nativeType !== null) {
|
|
mapItem[_constants.default.NATIVE_PLATFORM] = [
|
|
map.nativePath,
|
|
map.nativeType
|
|
];
|
|
}
|
|
|
|
if (map.iosPath !== null && map.iosType !== null) {
|
|
mapItem[_constants.default.IOS_PLATFORM] = [map.iosPath, map.iosType];
|
|
}
|
|
|
|
if (map.androidPath !== null && map.androidType !== null) {
|
|
mapItem[_constants.default.ANDROID_PLATFORM] = [
|
|
map.androidPath,
|
|
map.androidType
|
|
];
|
|
}
|
|
|
|
internalHasteMap.map.set(map.name, mapItem);
|
|
} // Fetch mocks.
|
|
} catch (err) {
|
|
_didIteratorError2 = true;
|
|
_iteratorError2 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
_iterator2.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError2) {
|
|
throw _iteratorError2;
|
|
}
|
|
}
|
|
}
|
|
|
|
const mocksArr = db.prepare(`SELECT * FROM mocks`).all();
|
|
var _iteratorNormalCompletion3 = true;
|
|
var _didIteratorError3 = false;
|
|
var _iteratorError3 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator3 = mocksArr[Symbol.iterator](), _step3;
|
|
!(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done);
|
|
_iteratorNormalCompletion3 = true
|
|
) {
|
|
const mock = _step3.value;
|
|
internalHasteMap.mocks.set(mock.name, mock.filePath);
|
|
} // Fetch duplicates.
|
|
} catch (err) {
|
|
_didIteratorError3 = true;
|
|
_iteratorError3 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
|
_iterator3.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError3) {
|
|
throw _iteratorError3;
|
|
}
|
|
}
|
|
}
|
|
|
|
const duplicatesArr = db.prepare(`SELECT * FROM duplicates`).all();
|
|
var _iteratorNormalCompletion4 = true;
|
|
var _didIteratorError4 = false;
|
|
var _iteratorError4 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator4 = duplicatesArr[Symbol.iterator](), _step4;
|
|
!(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done);
|
|
_iteratorNormalCompletion4 = true
|
|
) {
|
|
const duplicate = _step4.value;
|
|
internalHasteMap.duplicates.set(
|
|
name,
|
|
_v().default.deserialize(new Buffer(duplicate.serialized))
|
|
);
|
|
} // Fetch clocks.
|
|
} catch (err) {
|
|
_didIteratorError4 = true;
|
|
_iteratorError4 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
|
_iterator4.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError4) {
|
|
throw _iteratorError4;
|
|
}
|
|
}
|
|
}
|
|
|
|
const clocksArr = db.prepare(`SELECT * FROM clocks`).all();
|
|
var _iteratorNormalCompletion5 = true;
|
|
var _didIteratorError5 = false;
|
|
var _iteratorError5 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator5 = clocksArr[Symbol.iterator](), _step5;
|
|
!(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done);
|
|
_iteratorNormalCompletion5 = true
|
|
) {
|
|
const clock = _step5.value;
|
|
internalHasteMap.clocks.set(clock.relativeRoot, clock.since);
|
|
} // Close database connection,
|
|
} catch (err) {
|
|
_didIteratorError5 = true;
|
|
_iteratorError5 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
|
_iterator5.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError5) {
|
|
throw _iteratorError5;
|
|
}
|
|
}
|
|
}
|
|
|
|
db.close();
|
|
return internalHasteMap;
|
|
}
|
|
|
|
write(cachePath, internalHasteMap, removedFiles, changedFiles) {
|
|
const db = this.getDatabase(cachePath, false);
|
|
db.transaction(() => {
|
|
// Incrementally update files.
|
|
const runFileStmt = (stmt, [filePath, file]) => {
|
|
stmt.run(
|
|
filePath,
|
|
file[_constants.default.ID],
|
|
file[_constants.default.MTIME],
|
|
file[_constants.default.SIZE],
|
|
file[_constants.default.VISITED],
|
|
file[_constants.default.DEPENDENCIES],
|
|
file[_constants.default.SHA1]
|
|
);
|
|
};
|
|
|
|
if (changedFiles !== undefined) {
|
|
const removeFileStmt = db.prepare(`DELETE FROM files WHERE filePath=?`);
|
|
var _iteratorNormalCompletion6 = true;
|
|
var _didIteratorError6 = false;
|
|
var _iteratorError6 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator6 = removedFiles.keys()[Symbol.iterator](), _step6;
|
|
!(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done);
|
|
_iteratorNormalCompletion6 = true
|
|
) {
|
|
const filePath = _step6.value;
|
|
removeFileStmt.run(filePath);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError6 = true;
|
|
_iteratorError6 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion6 && _iterator6.return != null) {
|
|
_iterator6.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError6) {
|
|
throw _iteratorError6;
|
|
}
|
|
}
|
|
}
|
|
|
|
const upsertFileStmt = db.prepare(
|
|
`INSERT OR REPLACE INTO files (filePath, id, mtime, size, visited, dependencies, sha1) VALUES (?, ?, ?, ?, ?, ?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion7 = true;
|
|
var _didIteratorError7 = false;
|
|
var _iteratorError7 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator7 = changedFiles[Symbol.iterator](), _step7;
|
|
!(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done);
|
|
_iteratorNormalCompletion7 = true
|
|
) {
|
|
const changedFile = _step7.value;
|
|
runFileStmt(upsertFileStmt, changedFile);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError7 = true;
|
|
_iteratorError7 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion7 && _iterator7.return != null) {
|
|
_iterator7.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError7) {
|
|
throw _iteratorError7;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
db.exec('DELETE FROM files');
|
|
const insertFileStmt = db.prepare(
|
|
`INSERT INTO files (filePath, id, mtime, size, visited, dependencies, sha1) VALUES (?, ?, ?, ?, ?, ?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion8 = true;
|
|
var _didIteratorError8 = false;
|
|
var _iteratorError8 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator8 = internalHasteMap.files[Symbol.iterator](), _step8;
|
|
!(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done);
|
|
_iteratorNormalCompletion8 = true
|
|
) {
|
|
const file = _step8.value;
|
|
runFileStmt(insertFileStmt, file);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError8 = true;
|
|
_iteratorError8 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
|
|
_iterator8.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError8) {
|
|
throw _iteratorError8;
|
|
}
|
|
}
|
|
}
|
|
} // Incrementally update map.
|
|
|
|
const runMapStmt = (stmt, [name, mapItem]) => {
|
|
stmt.run(
|
|
name,
|
|
mapItem[_constants.default.GENERIC_PLATFORM] || [null, null],
|
|
mapItem[_constants.default.NATIVE_PLATFORM] || [null, null],
|
|
mapItem[_constants.default.IOS_PLATFORM] || [null, null],
|
|
mapItem[_constants.default.ANDROID_PLATFORM] || [null, null]
|
|
);
|
|
};
|
|
|
|
if (changedFiles !== undefined) {
|
|
const removeMapItemStmt = db.prepare(`DELETE FROM map WHERE name=?`);
|
|
var _iteratorNormalCompletion9 = true;
|
|
var _didIteratorError9 = false;
|
|
var _iteratorError9 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator9 = removedFiles.values()[Symbol.iterator](), _step9;
|
|
!(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done);
|
|
_iteratorNormalCompletion9 = true
|
|
) {
|
|
const file = _step9.value;
|
|
removeMapItemStmt.run(file[_constants.default.ID]);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError9 = true;
|
|
_iteratorError9 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
|
|
_iterator9.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError9) {
|
|
throw _iteratorError9;
|
|
}
|
|
}
|
|
}
|
|
|
|
const upsertFileStmt = db.prepare(
|
|
`INSERT OR REPLACE INTO map (name, genericPath, genericType, nativePath, nativeType) VALUES (?, ?, ?, ?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion10 = true;
|
|
var _didIteratorError10 = false;
|
|
var _iteratorError10 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator10 = changedFiles.values()[Symbol.iterator](), _step10;
|
|
!(_iteratorNormalCompletion10 = (_step10 = _iterator10.next())
|
|
.done);
|
|
_iteratorNormalCompletion10 = true
|
|
) {
|
|
const changedFile = _step10.value;
|
|
|
|
if (changedFile[_constants.default.MODULE]) {
|
|
const mapItem = internalHasteMap.map.get(
|
|
changedFile[_constants.default.MODULE]
|
|
);
|
|
runMapStmt(upsertFileStmt, [
|
|
changedFile[_constants.default.MODULE],
|
|
mapItem
|
|
]);
|
|
}
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError10 = true;
|
|
_iteratorError10 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
|
|
_iterator10.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError10) {
|
|
throw _iteratorError10;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
db.exec('DELETE FROM map');
|
|
const insertMapItem = db.prepare(
|
|
`INSERT INTO map (name, genericPath, genericType, nativePath, nativeType, iosPath, iosType, androidPath, androidType) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion11 = true;
|
|
var _didIteratorError11 = false;
|
|
var _iteratorError11 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator11 = internalHasteMap.map[Symbol.iterator](), _step11;
|
|
!(_iteratorNormalCompletion11 = (_step11 = _iterator11.next())
|
|
.done);
|
|
_iteratorNormalCompletion11 = true
|
|
) {
|
|
const mapItem = _step11.value;
|
|
runMapStmt(insertMapItem, mapItem);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError11 = true;
|
|
_iteratorError11 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
|
|
_iterator11.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError11) {
|
|
throw _iteratorError11;
|
|
}
|
|
}
|
|
}
|
|
} // Replace mocks.
|
|
|
|
db.exec('DELETE FROM mocks');
|
|
const insertMock = db.prepare(
|
|
`INSERT INTO mocks (name, filePath) VALUES (?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion12 = true;
|
|
var _didIteratorError12 = false;
|
|
var _iteratorError12 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator12 = internalHasteMap.mocks[Symbol.iterator](), _step12;
|
|
!(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done);
|
|
_iteratorNormalCompletion12 = true
|
|
) {
|
|
const _step12$value = _slicedToArray(_step12.value, 2),
|
|
name = _step12$value[0],
|
|
filePath = _step12$value[1];
|
|
|
|
insertMock.run(name, filePath);
|
|
} // Incrementally update duplicates.
|
|
} catch (err) {
|
|
_didIteratorError12 = true;
|
|
_iteratorError12 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
|
|
_iterator12.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError12) {
|
|
throw _iteratorError12;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (changedFiles === undefined) {
|
|
const insertDuplicateStmt = db.prepare(
|
|
`INSERT INTO duplicates (name, serialized) VALUES (?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion13 = true;
|
|
var _didIteratorError13 = false;
|
|
var _iteratorError13 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator13 = internalHasteMap.duplicates[Symbol.iterator](),
|
|
_step13;
|
|
!(_iteratorNormalCompletion13 = (_step13 = _iterator13.next())
|
|
.done);
|
|
_iteratorNormalCompletion13 = true
|
|
) {
|
|
const _step13$value = _slicedToArray(_step13.value, 2),
|
|
name = _step13$value[0],
|
|
duplicate = _step13$value[1];
|
|
|
|
insertDuplicateStmt.run(name, _v().default.serialize(duplicate));
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError13 = true;
|
|
_iteratorError13 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
|
|
_iterator13.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError13) {
|
|
throw _iteratorError13;
|
|
}
|
|
}
|
|
}
|
|
} else if (removedFiles.size) {
|
|
const upsertDuplicateStmt = db.prepare(
|
|
`INSERT OR REPLACE INTO duplicates (name, serialized) VALUES (?, ?)`
|
|
);
|
|
const deleteDuplicateStmt = db.prepare(
|
|
`DELETE FROM duplicates WHERE name=?`
|
|
);
|
|
var _iteratorNormalCompletion14 = true;
|
|
var _didIteratorError14 = false;
|
|
var _iteratorError14 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator14 = removedFiles.values()[Symbol.iterator](), _step14;
|
|
!(_iteratorNormalCompletion14 = (_step14 = _iterator14.next())
|
|
.done);
|
|
_iteratorNormalCompletion14 = true
|
|
) {
|
|
const file = _step14.value;
|
|
const moduleID = file[_constants.default.ID];
|
|
const duplicate = internalHasteMap.duplicates.get(moduleID);
|
|
|
|
if (duplicate) {
|
|
upsertDuplicateStmt.run(name, _v().default.serialize(duplicate));
|
|
} else {
|
|
deleteDuplicateStmt.run(name);
|
|
}
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError14 = true;
|
|
_iteratorError14 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
|
|
_iterator14.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError14) {
|
|
throw _iteratorError14;
|
|
}
|
|
}
|
|
}
|
|
} // Replace clocks.
|
|
|
|
db.exec('DELETE FROM clocks');
|
|
const insertClock = db.prepare(
|
|
`INSERT INTO clocks (relativeRoot, since) VALUES (?, ?)`
|
|
);
|
|
var _iteratorNormalCompletion15 = true;
|
|
var _didIteratorError15 = false;
|
|
var _iteratorError15 = undefined;
|
|
|
|
try {
|
|
for (
|
|
var _iterator15 = internalHasteMap.clocks[Symbol.iterator](), _step15;
|
|
!(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done);
|
|
_iteratorNormalCompletion15 = true
|
|
) {
|
|
const _step15$value = _slicedToArray(_step15.value, 2),
|
|
relativeRoot = _step15$value[0],
|
|
since = _step15$value[1];
|
|
|
|
insertClock.run(relativeRoot, since);
|
|
}
|
|
} catch (err) {
|
|
_didIteratorError15 = true;
|
|
_iteratorError15 = err;
|
|
} finally {
|
|
try {
|
|
if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
|
|
_iterator15.return();
|
|
}
|
|
} finally {
|
|
if (_didIteratorError15) {
|
|
throw _iteratorError15;
|
|
}
|
|
}
|
|
}
|
|
})();
|
|
db.close();
|
|
}
|
|
|
|
getDatabase(cachePath, mustExist) {
|
|
const dbExists = _fs().default.existsSync(cachePath);
|
|
|
|
if (dbExists === false && mustExist) {
|
|
throw new Error(`Haste SQLite DB does not exist at ${cachePath}`);
|
|
}
|
|
|
|
const db = (0, _betterSqlite().default)(cachePath, {
|
|
fileMustExist: dbExists
|
|
});
|
|
|
|
if (dbExists === false) {
|
|
db.exec(`CREATE TABLE IF NOT EXISTS files(
|
|
filePath text PRIMARY KEY,
|
|
id text NOT NULL,
|
|
mtime integer NOT NULL,
|
|
size integer NOT NULL,
|
|
visited integer NOT NULL,
|
|
dependencies text NOT NULL,
|
|
sha1 text
|
|
);`);
|
|
db.exec(`CREATE TABLE IF NOT EXISTS map(
|
|
name text NOT NULL,
|
|
genericPath text,
|
|
genericType integer,
|
|
nativePath text,
|
|
nativeType integer,
|
|
iosPath text,
|
|
iosType integer,
|
|
androidPath text,
|
|
androidType integer
|
|
);`);
|
|
db.exec(`CREATE TABLE IF NOT EXISTS mocks(
|
|
name text PRIMARY KEY,
|
|
filePath text NOT NULL
|
|
);`);
|
|
db.exec(`CREATE TABLE IF NOT EXISTS duplicates(
|
|
name text PRIMARY KEY,
|
|
serialized text NOT NULL
|
|
);`);
|
|
db.exec(`CREATE TABLE IF NOT EXISTS clocks(
|
|
relativeRoot text,
|
|
since text
|
|
);`);
|
|
}
|
|
|
|
return db;
|
|
}
|
|
|
|
getType() {
|
|
return 'sqlite';
|
|
}
|
|
}
|
|
|
|
var _default = new SQLitePersistence();
|
|
|
|
exports.default = _default;
|