1
0
mirror of https://github.com/S2-/gitlit synced 2025-08-02 20:30:05 +02:00

73 Commits

Author SHA1 Message Date
s2
16138409f9 2.0.12 2020-12-11 12:34:12 +01:00
s2
f604749ce8 update electron 2020-12-11 12:33:55 +01:00
s2
a259bd3e14 2.0.11 2020-10-16 12:01:12 +02:00
s2
e3ed1c6e44 update node modules 2020-10-16 12:00:49 +02:00
s2
5d60c8baac 2.0.10 2020-09-13 12:53:00 +02:00
s2
8afc7fdac1 update node modules 2020-09-13 12:52:30 +02:00
s2
e934617a03 ask if the update should be downloaded 2020-09-13 12:52:22 +02:00
s2
9f696e12f9 2.0.9 2020-09-13 10:24:36 +02:00
s2
b326c45593 update node modules 2020-09-13 10:24:23 +02:00
s2
c905040f0e 2.0.8 2020-07-21 14:29:51 +02:00
s2
a171760bd6 update npm modules 2020-07-21 14:29:38 +02:00
s2
ce50a38e35 2.0.7 2020-07-07 11:50:30 +02:00
s2
133f72df2a fix updater 2020-07-07 11:50:21 +02:00
s2
bebaf95f70 2.0.6 2020-07-07 10:42:56 +02:00
s2
e719261427 update to latest electron version 2020-07-07 10:40:27 +02:00
s2
1fe4d0d90c 2.0.5 2020-06-07 22:43:44 +02:00
s2
9873246826 auto update only on windows 2020-06-07 22:43:33 +02:00
s2
b8a94f650f 2.0.4 2020-06-07 22:17:29 +02:00
s2
e97a5c1fc2 just readme 2020-06-07 22:17:26 +02:00
s2
3d020a3ddd 2.0.3 2020-06-07 20:22:57 +02:00
s2
8765f99f19 update node modules 2020-06-07 20:22:50 +02:00
s2
cee594fcd9 2.0.2 2020-06-07 20:16:05 +02:00
s2
3c4d33eb83 just a note 2020-06-07 20:15:56 +02:00
s2
48b5f33eb9 2.0.1 2020-06-07 20:04:45 +02:00
s2
64b500f414 update node modules 2020-06-07 20:04:45 +02:00
s2
caeaab14b8 remove console.log 2020-06-07 19:50:00 +02:00
s2
94e7c5ce71 don't publish by default in electron builder 2020-06-07 19:48:06 +02:00
s2
cdafb7a006 2.0.0 2020-06-07 19:38:18 +02:00
s2
6c2bc3397e auto update app 2020-06-07 19:37:56 +02:00
s2
a6666452d7 remove update-electron-app 2020-06-07 17:48:58 +02:00
s2
e9feebce51 1.5.2 2020-05-09 15:48:10 +02:00
s2
510e4786b7 create installer package 2020-05-09 15:45:01 +02:00
s2
b540eae1b9 1.5.1 2020-05-09 12:22:28 +02:00
s2
8f3705ba74 show gitlit version in window title 2020-05-09 12:22:21 +02:00
s2
e032eb2ab0 1.5.0 2020-05-09 12:10:34 +02:00
s2
519d719545 auto updater 2020-05-09 12:10:25 +02:00
s2
f8076499ba build windows portable binary 2020-05-09 12:09:23 +02:00
s2
edeadfd7fc 1.4.4 2020-05-06 20:23:03 +02:00
s2
9c26b8fb10 bump exec maxBuffer size to 10MB 2020-05-06 20:22:47 +02:00
s2
b0f3ba27b5 1.4.3 2020-05-06 20:08:09 +02:00
s2
99c858e5a7 update npm modules 2020-05-06 20:08:04 +02:00
s2
9f02f5f27c 1.4.2 2020-03-16 21:46:57 +01:00
s2
48ecb505d7 update node modules 2020-03-16 21:46:15 +01:00
s2
a04c84abb4 1.4.1 2019-06-21 14:15:57 +02:00
s2
31c19d5534 make jumbotron nicer 2019-06-21 09:31:36 +02:00
s2
171b79e355 1.4.0 2019-06-20 15:52:56 +02:00
s2
4178caa94a show splash screen on startup if passed path is not a git repo 2019-06-20 15:51:56 +02:00
s2
7cae3f33ec 1.3.1 2019-06-20 15:15:46 +02:00
s2
3952948a15 fix sortable 2019-06-20 15:14:33 +02:00
s2
011a78a75f style fixes 2019-06-20 15:14:33 +02:00
s2
e0ad69a5b1 remove old templates 2019-06-20 15:14:33 +02:00
s2
e994b98dcc show open an other folder button if there are no tracked files 2019-06-20 10:59:46 +02:00
s2
6431183092 1.3.0 2019-06-20 10:32:04 +02:00
s2
28acea0c74 ejs.rr & open folder button 2019-06-20 10:17:28 +02:00
s2
f69e80e306 add d&d instructions to readme 2019-06-19 15:44:20 +02:00
s2
81fd51656e 1.2.0 2019-06-19 10:07:49 +02:00
s2
b54fb104be add folder drag&drop functionality 2019-06-19 10:07:39 +02:00
s2
1072c27e6d remove ide files from repo 2019-06-17 21:02:02 +02:00
s2
ead56bac77 readme fix 2019-06-17 20:54:45 +02:00
s2
4eef037145 1.1.1 2019-06-17 20:37:09 +02:00
s2
2be62645d9 change icon colors 2019-06-17 20:36:47 +02:00
s2
5abd0d6f27 logo size 2019-06-17 20:26:31 +02:00
s2
8fb44bc439 make image nicer in readme 2019-06-17 20:20:37 +02:00
s2
42c754d5c2 1.1.0 2019-06-17 20:14:08 +02:00
s2
4d28e8495d add icon 2019-06-17 20:13:59 +02:00
s2
28662aa961 minor readme fix 2019-06-17 20:01:33 +02:00
s2
67be0c888e build for win and linux 2019-06-17 17:57:18 +02:00
s2
769ea1ce73 switch to electron-builder 2019-06-17 17:35:36 +02:00
s2
5fef5c7236 1.0.9 2019-06-17 15:34:52 +02:00
s2
81e88046d2 add some keywords 2019-06-17 15:33:27 +02:00
s2
c577446cc5 change git repo url 2019-06-17 15:32:51 +02:00
s2
b841785adb 1.0.8 2019-06-12 15:53:41 +02:00
s2
9eae13612e fix lock/unlock refresh 2019-06-12 15:52:58 +02:00
92678 changed files with 2819 additions and 637606 deletions

33
.eslintrc.json Normal file
View File

@@ -0,0 +1,33 @@
{"parserOptions":
{"ecmaVersion": 6},
"rules": {
"quotes": [2, "single", {"allowTemplateLiterals": true}],
"curly": [2, "all"],
"keyword-spacing": [2, {"overrides": {"else": {"before": true}, "catch": {"before": true, "after": false}}}],
"space-before-blocks": [2, "always"],
"wrap-iife": [2, "inside"],
"space-before-function-paren": [2, "never"],
"one-var": [2, "never"],
"vars-on-top": 0, "no-empty": [2, {"allowEmptyCatch": true}],
"array-bracket-spacing": [2, "never"],
"space-in-parens": [2, "never"],
"no-underscore-dangle": 0,
"comma-style": [2, "last"],
"comma-spacing": [2, {"before": false, "after": true}],
"space-unary-ops": [2, {"words": false, "nonwords": false}],
"no-multi-spaces": 2,
"space-infix-ops": 2,
"no-with": 2,
"indent": [2, "tab", {"SwitchCase": 1, "FunctionExpression": {"body": 1, "parameters": 1}, "MemberExpression": 0}],
"no-mixed-spaces-and-tabs": 2,
"no-trailing-spaces": 2,
"comma-dangle": [2, "never"],
"semi": [2, "always"],
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"eol-last": 2,
"dot-notation": 0,
"no-multi-str": 2,
"key-spacing": [2, {"afterColon": true}],
"func-call-spacing": [2, "never"]
}
}

2
.gitignore vendored
View File

@@ -1 +1,3 @@
dist
node_modules
.vscode

78
.jscsrc
View File

@@ -1,78 +0,0 @@
{
"requireCurlyBraces": [
"if",
"else",
"for",
"while",
"do",
"try",
"catch"
],
"requireSpaceAfterKeywords": [
"if",
"else",
"for",
"while",
"do",
"switch",
"case",
"return",
"try"
],
"requireSpaceBeforeKeywords": [
"else",
"catch"
],
"disallowSpaceAfterKeywords": [
"catch"
],
"requireSpaceBeforeBlockStatements": true,
"requireParenthesesAroundIIFE": true,
"requireSpacesInConditionalExpression": true,
"disallowSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInFunctionDeclaration": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"requireSpaceBetweenArguments": true,
"disallowMultipleVarDecl": true,
"requireVarDeclFirst": false,
"requireBlocksOnNewline": false,
"disallowEmptyBlocks": true,
"disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideObjectBrackets": true,
"disallowSpacesInsideParentheses": true,
"disallowDanglingUnderscores": false,
"requireCommaBeforeLineBreak": true,
"disallowSpaceAfterPrefixUnaryOperators": true,
"disallowSpaceBeforePostfixUnaryOperators": true,
"disallowSpaceBeforeBinaryOperators": [
","
],
"requireSpacesInForStatement": true,
"requireSpacesInAnonymousFunctionExpression": {
"beforeOpeningCurlyBrace": true
},
"requireSpaceBeforeBinaryOperators": true,
"requireSpaceAfterBinaryOperators": true,
"disallowKeywords": [
"with"
],
"validateIndentation": "\t",
"disallowMixedSpacesAndTabs": true,
"disallowTrailingWhitespace": true,
"disallowTrailingComma": true,
"disallowKeywordsOnNewLine": [
"else"
],
"requireLineFeedAtFileEnd": true,
"requireCapitalizedConstructors": true,
"requireDotNotation": false,
"disallowNewlineBeforeBlockStatements": true,
"disallowMultipleLineStrings": true,
"requireSpaceBeforeObjectValues": true
}

16
.vscode/launch.json vendored
View File

@@ -1,16 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Electron Main",
"runtimeExecutable": "${workspaceFolder}/app/node_modules/.bin/electron",
//"program": "${workspaceFolder}/app/main.js",
"args": ["${workspaceFolder}/app/main.js", "C:\\Temp\\mobs"]
}
]
}

View File

@@ -1,3 +0,0 @@
{
"git.ignoreLimitWarning": true
}

View File

@@ -1,4 +1,4 @@
# gitlit
# <img src="logo/logo.png" alt="gitlit">
gitlit is a very simple desktop app that allows you to handle [git lfs file locks](https://github.com/git-lfs/git-lfs/wiki/File-Locking).
@@ -19,10 +19,12 @@ gitlit /home/s2/myApp
If no folder is specified, gitlit looks at the current path.
You can also drag&drop a folder inside the main window.
## contribute
The code is very easy. Just clone the repo and have look!
Use the `.jscrc` for formatting the code and keep it clean and consistent.
Use the `.eslintrc.json` for formatting the code and keep it clean and consistent.
There are just some js libraries:
- [ejs](http://ejs.co/) is used for templating. The templates are in `app/js/templates.js`.
@@ -33,15 +35,19 @@ There are just some js libraries:
### run the app
```
cd app
npm install
npm start
```
### make a release
```
./makedist.sh
npm install
npm run dist
```
## notes
Since version 2.0.1 the app auto updates itself using the [github-app-updater](https://www.npmjs.com/package/github-app-updater).
## license
ISC

View File

@@ -1,3 +1,12 @@
html {
margin-bottom: 10px;
}
.jumbotron {
height: 640px;
margin-bottom: 0px;
}
.js-container {
margin: 5px;
}
@@ -40,3 +49,13 @@ table.sortable thead {
table.sortable .sorttable_nosort {
cursor: default;
}
/*
* updater
*/
.updatenotice {
position: fixed;
bottom: 5px;
right: 5px;
}

View File

@@ -3,26 +3,26 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>gitlit</title>
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="node_modules/jquery/dist/jquery.js"></script>
<script src="node_modules/bootstrap/dist/js/bootstrap.js"></script>
<script type="text/javascript" src="../node_modules/jquery/dist/jquery.js"></script>
<script type="text/javascript" src="../node_modules/bootstrap/dist/js/bootstrap.js"></script>
<script type="text/javascript" src="node_modules/pnotify/dist/iife/PNotify.js"></script>
<script type="text/javascript" src="node_modules/pnotify/dist/iife/PNotifyButtons.js"></script>
<script type="text/javascript" src="../node_modules/pnotify/dist/iife/PNotify.js"></script>
<script type="text/javascript" src="../node_modules/pnotify/dist/iife/PNotifyButtons.js"></script>
<script src="node_modules/ejs/ejs.js"></script>
<script src="js/templates.js"></script>
<script src="js/sorttable.js"></script>
<script type="text/javascript" src="../node_modules/ejs/ejs.js"></script>
<script type="text/javascript" src="../node_modules/ejs-render-remote/ejs-render-remote.js"></script>
<script type="text/javascript" src="js/sorttable.js"></script>
<link href="node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet">
<link href="../node_modules/bootstrap/dist/css/bootstrap.css" rel="stylesheet">
<link href="css/app.css" rel="stylesheet">
</head>
<body>
<div class="js-container">
</div>
<div class="js-container"></div>
<script src="js/index.js"></script>
<div class="js-updatenotice btn btn-warning btn-sm updatenotice" style="display:none" disabled>Update ready to install</div>
</body>
</html>

View File

@@ -2,26 +2,82 @@
const ipcRenderer = require('electron').ipcRenderer;
const remote = require('electron').remote;
const electronFind = require('electron-find');
const dialog = remote.require('electron').dialog;
let findInPage = new electronFind.FindInPage(remote.getCurrentWebContents());
let firstRun = true;
//events
//update stuff
ipcRenderer.on('update', (event, state) => {
if (state.event === 'updateAvailable') {
$('.js-updatenotice').text(`New version ${state.version} available. Click here to download.`);
$('.js-updatenotice').show();
$('.js-updatenotice').prop('disabled', false);
$('.js-updatenotice').prop('state', 'ready-to-download');
$('.js-updatenotice').data('asset', state.asset);
}
if (state.event === 'updateReadyToInstall') {
$('.js-updatenotice').text(`New version ready to install. Click here to start installer.`);
$('.js-updatenotice').show();
$('.js-updatenotice').prop('disabled', false);
$('.js-updatenotice').prop('state', 'ready-to-install');
$('.js-updatenotice').data('file', state.file);
}
});
$(document).on('click', '.js-updatenotice', (ev) => {
ev.preventDefault();
if ($('.js-updatenotice').prop('disabled')) {
return;
}
if ($('.js-updatenotice').prop('state') === 'ready-to-download') {
$('.js-updatenotice').prop('disabled', true);
$('.js-updatenotice').text(`Downloading new version...`);
ipcRenderer.send('downloadUpdate', $('.js-updatenotice').data('asset'));
} else if ($('.js-updatenotice').prop('state') === 'ready-to-install') {
$('.js-updatenotice').prop('disabled', true);
$('.js-updatenotice').text(`Launching installer...`);
ipcRenderer.send('installUpdate', $('.js-updatenotice').data('file'));
}
});
//end update stuff
ipcRenderer.on('fileList', (event, files) => {
firstRun = false;
if (files && files.length > 0) {
$('.files-table-container').html(gitlit.templates.files({files: files}));
ejs.preloadTemplate('templates/files.ejs')
.then(t => {
$('.files-table-container').html(ejs.rr(t, {files: files}));
sorttable.makeSortable($('.js-filestable')[0]);
var myTH = document.getElementsByTagName("th")[0];
var myTH = document.getElementsByTagName('th')[0];
sorttable.innerSortFunction.apply(myTH, []);
});
} else {
$('.files-table-container').html(gitlit.templates.noGitLfsFiles());
$('.files-table-container').html(ejs.rr('templates/noGitLfsFiles.ejs'));
}
});
ipcRenderer.on('repoDir', (event, repoDir) => {
ejs.preloadTemplate('templates/main.ejs')
.then(t => {
$('.js-container').html(ejs.rr(t));
$('.js-repo-dir').text('current repo dir: ' + repoDir).show();
});
});
ipcRenderer.on('isNoGitLfsRepo', (event, repoDir) => {
$('.js-container').html(gitlit.templates.isNoGitLfsRepo({repoDir: repoDir}));
if (firstRun) {
firstRun = false;
$('.js-container').html(ejs.rr('templates/firstRun.ejs', {repoDir: repoDir}));
} else {
$('.js-container').html(ejs.rr('templates/isNoGitLfsRepo.ejs', {repoDir: repoDir}));
}
});
ipcRenderer.on('notification', (event, notification) => {
@@ -43,16 +99,18 @@
}
if (notification.event && notification.event === 'unlock') {
$('[data-file="' + notification.file + '"].js-unlock').hide();
$('[data-file="' + notification.file + '"].js-lock').show();
let file = notification.file.replace(/\\/g, '\\\\');
$('[data-file="' + file + '"].js-unlock').hide();
$('[data-file="' + file + '"].js-lock').show();
let text = 'not locked';
$('[data-file="' + notification.file + '"]').parent().prev().text(text);
$('[data-file="' + file + '"]').parent().prev().text(text);
}
if (notification.event && notification.event === 'lock') {
$('[data-file="' + notification.file + '"].js-lock').hide();
$('[data-file="' + notification.file + '"].js-unlock').show();
let file = notification.file.replace(/\\/g, '\\\\');
$('[data-file="' + file + '"].js-lock').hide();
$('[data-file="' + file + '"].js-unlock').show();
let text = notification.data.owner.name + ' (id: ' + notification.data.id + ')';
$('[data-file="' + notification.file + '"]').parent().prev().text(text);
$('[data-file="' + file + '"]').parent().prev().text(text);
}
});
@@ -73,6 +131,19 @@
window.location.reload(false);
});
$(document).on('click', '.js-open-folder', (ev) => {
ev.preventDefault();
dialog.showOpenDialog({
properties: ['openDirectory']
})
.then((path) => {
if (path && path.filePaths.length > 0) {
ipcRenderer.send('restart', path.filePaths[0]);
};
});
});
$(document).on('keypress', (ev) => {
//ctrl + f
if (ev.ctrlKey && ev.charCode == 6) {
@@ -85,8 +156,21 @@
}
});
$(document).on('drop', (ev) => {
ev.preventDefault();
ev.stopPropagation();
if (ev.originalEvent.dataTransfer.files && ev.originalEvent.dataTransfer.files.length > 0) {
ipcRenderer.send('restart', ev.originalEvent.dataTransfer.files[0].path);
}
});
$(document).on('dragover', (ev) => {
ev.preventDefault();
ev.stopPropagation();
});
//startup
PNotify.defaults.styling = 'bootstrap4'; // Bootstrap version 4
$('.js-container').html(gitlit.templates.main());
})(jQuery);

View File

@@ -1,63 +0,0 @@
window.gitlit = window.gitlit || {};
gitlit.templates = {
main: ejs.compile(`
<div class="alert alert-success js-repo-dir" style="display:none;"></div>
<div class="files-table-container">
<div class="alert alert-primary" role="alert">
Getting file list...
</div>
</div>
`),
files: ejs.compile(`
<table class="table table-striped sortable js-filestable">
<thead class="thead-light">
<tr>
<th>file</th>
<th>status</th>
<th class="sorttable_nosort">action</th>
</tr>
<thead>
<tbody>
<% files.forEach((file) => { %>
<tr>
<td><%= file.file %></td>
<td><%= file.lockedBy ? file.lockedBy + ' (id: ' + file.id + ')' : 'not locked' %></td>
<td>
<a class="btn btn-primary btn-sm js-lock"
href="javascript:///"
data-file="<%= file.file %>"
style="<%= file.lockedBy ? 'display: none;' : '' %>"
>
Lock
</a>
<a class="btn btn-danger btn-sm js-unlock"
href="javascript:///"
data-file="<%= file.file %>"
style="<%= file.lockedBy ? '' : 'display: none;' %>"
>
Unlock
</a>
</td>
</tr>
<% }); %>
</tbody>
</table>
<div class="float-right">
<a class="btn btn-secondary btn-sm js-refresh" href="javascript:///">
Refresh
</a>
</div>
`),
isNoGitLfsRepo: ejs.compile(`
<div class="alert alert-danger">
<%= repoDir %> is not a git lfs repo.
</div>
`),
noGitLfsFiles: ejs.compile(`
<div class="alert alert-info">
no files tracked with lfs here.
</div>
`)
};

View File

@@ -3,18 +3,60 @@ const path = require('path');
const url = require('url');
const electronLocalshortcut = require('electron-localshortcut');
const exec = require('child_process').exec;
const gau = require('github-app-updater');
const args = require('minimist')(process.defaultApp ? process.argv.slice(3) : process.argv.slice(1), {
default: {
_: process.cwd()
}
});
const repoDir = path.resolve(path.normalize(args._.join(' ')));
let win;
let repoDir = path.resolve(path.normalize(args._.join(' ')));
let repoRootDir = repoDir;
//auto update stuff
if (process.platform === 'win32') {
setTimeout(() => {
gau.checkForUpdate({
currentVersion: app.getVersion(),
repo: 'https://api.github.com/repos/S2-/gitlit/releases/latest',
assetMatch: /.+setup.+exe/i
});
gau.onUpdateAvailable = (version, asset) => {
win.webContents.send('update', {
event: 'updateAvailable',
version: version,
asset: asset
});
};
gau.onNewVersionReadyToInstall = (file) => {
win.webContents.send('update', {
event: 'updateReadyToInstall',
file: file
});
};
ipcMain.on('downloadUpdate', (event, asset) => {
gau.downloadNewVersion(asset);
});
ipcMain.on('installUpdate', (event, file) => {
gau.executeUpdate(file);
win.webContents.send('update', {
event: 'updateInstalling'
});
app.quit();
});
}, 5000);
}
//end update stuff
function getLfsFileList(dir, cb) {
exec('git ls-files | git check-attr --stdin lockable', {
maxBuffer: 1024 * 1024,
maxBuffer: (1024 * 1024) * 10, //10MB
cwd: dir
},
(error, stdout, stderr) => {
@@ -46,7 +88,7 @@ function getLfsFileList(dir, cb) {
function getLfsLocks(dir, cb) {
exec('git lfs locks', {
maxBuffer: 1024 * 1024,
maxBuffer: (1024 * 1024) * 10, //10MB
cwd: dir
},
(error, stdout, stderr) => {
@@ -86,25 +128,9 @@ function getArrayObjectByKey(array, key, value, defaultKeyValue) {
return defaultKeyValue ? o[0][defaultKeyValue] : o[0];
}
return undefined;
}
};
function createWindow() {
// Create the browser window.
win = new BrowserWindow({width: 800, height: 600});
win.setMenu(null);
// and load the index.html of the app.
win.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
electronLocalshortcut.register(win, 'F12', () => {
win.webContents.toggleDevTools();
});
win.webContents.on('did-finish-load', () => {
function loadRepoPage() {
win.webContents.send('repoDir', repoDir);
getLfsFileList(repoDir, (err, files) => {
@@ -137,12 +163,63 @@ function createWindow() {
win.webContents.send('fileList', allFiles);
});
});
});
};
function createWindow() {
// Create the browser window.
win = new BrowserWindow({
title: 'gitlit v' + app.getVersion(),
width: 800,
height: 700,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true
}
});
win.setMenu(null);
// and load the index.html of the app.
win.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}));
electronLocalshortcut.register(win, 'F12', () => {
win.webContents.toggleDevTools();
});
win.webContents.on('did-finish-load', () => {
loadRepoPage();
});
};
function startup(cb) {
exec('git rev-parse --show-toplevel', {
maxBuffer: (1024 * 1024) * 10, //10MB
cwd: repoDir
},
(error, stdout, stderr) => {
if (error) {
if (win) {
win.webContents.send('isNoGitLfsRepo', repoDir);
}
console.error(error);
}
if (stdout) {
repoRootDir = path.normalize(stdout.replace(/\n/g, ''));
}
if (cb) {
cb();
}
});
};
ipcMain.on('unlock', (event, file) => {
exec('git lfs unlock "' + file + '"', {
maxBuffer: 1024 * 1024,
maxBuffer: (1024 * 1024) * 10, //10MB
cwd: repoDir
},
(error, stdout, stderr) => {
@@ -165,7 +242,7 @@ ipcMain.on('unlock', (event, file) => {
ipcMain.on('lock', (event, file) => {
exec('git lfs lock --json "' + file + '"', {
maxBuffer: 1024 * 1024,
maxBuffer: (1024 * 1024) * 10, //10MB
cwd: repoDir
},
(error, stdout, stderr) => {
@@ -187,26 +264,11 @@ ipcMain.on('lock', (event, file) => {
});
});
ipcMain.on('restart', (event, newRepoDir) => {
repoDir = newRepoDir;
startup(loadRepoPage);
});
app.on('ready', () => {
exec('git rev-parse --show-toplevel', {
maxBuffer: 1024 * 1024,
cwd: repoDir
},
(error, stdout, stderr) => {
if (error) {
console.error(error);
}
if (stdout) {
repoRootDir = path.normalize(stdout.replace(/\n/g, ''));
}
createWindow();
});
});
app.on('window-all-closed', function() {
if (process.platform != 'darwin') {
app.quit();
}
startup(createWindow);
});

15
app/node_modules/.bin/asar generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../asar/bin/asar.js" "$@"
ret=$?
else
node "$basedir/../asar/bin/asar.js" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/asar.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\asar\bin\asar.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\asar\bin\asar.js" %*
)

15
app/node_modules/.bin/decompress-zip generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../decompress-zip/bin/decompress-zip" "$@"
ret=$?
else
node "$basedir/../decompress-zip/bin/decompress-zip" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\decompress-zip\bin\decompress-zip" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\decompress-zip\bin\decompress-zip" %*
)

15
app/node_modules/.bin/electron generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../electron/cli.js" "$@"
ret=$?
else
node "$basedir/../electron/cli.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../electron-osx-sign/bin/electron-osx-flat.js" "$@"
ret=$?
else
node "$basedir/../electron-osx-sign/bin/electron-osx-flat.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\electron-osx-sign\bin\electron-osx-flat.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\electron-osx-sign\bin\electron-osx-flat.js" %*
)

View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../electron-osx-sign/bin/electron-osx-sign.js" "$@"
ret=$?
else
node "$basedir/../electron-osx-sign/bin/electron-osx-sign.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\electron-osx-sign\bin\electron-osx-sign.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\electron-osx-sign\bin\electron-osx-sign.js" %*
)

View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../electron-packager/cli.js" "$@"
ret=$?
else
node "$basedir/../electron-packager/cli.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\electron-packager\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\electron-packager\cli.js" %*
)

7
app/node_modules/.bin/electron.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\electron\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\electron\cli.js" %*
)

15
app/node_modules/.bin/extract-zip generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../extract-zip/cli.js" "$@"
ret=$?
else
node "$basedir/../extract-zip/cli.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\extract-zip\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\extract-zip\cli.js" %*
)

15
app/node_modules/.bin/mkdirp generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@"
ret=$?
else
node "$basedir/../mkdirp/bin/cmd.js" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/mkdirp.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\mkdirp\bin\cmd.js" %*
)

15
app/node_modules/.bin/nopt generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../nopt/bin/nopt.js" "$@"
ret=$?
else
node "$basedir/../nopt/bin/nopt.js" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/nopt.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\nopt\bin\nopt.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\nopt\bin\nopt.js" %*
)

15
app/node_modules/.bin/nugget generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../nugget/bin.js" "$@"
ret=$?
else
node "$basedir/../nugget/bin.js" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/nugget.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\nugget\bin.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\nugget\bin.js" %*
)

15
app/node_modules/.bin/pretty-bytes generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../pretty-bytes/cli.js" "$@"
ret=$?
else
node "$basedir/../pretty-bytes/cli.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\pretty-bytes\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\pretty-bytes\cli.js" %*
)

15
app/node_modules/.bin/rc generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../rc/cli.js" "$@"
ret=$?
else
node "$basedir/../rc/cli.js" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/rc.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\rc\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\rc\cli.js" %*
)

15
app/node_modules/.bin/rimraf generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../rimraf/bin.js" "$@"
ret=$?
else
node "$basedir/../rimraf/bin.js" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/rimraf.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\rimraf\bin.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\rimraf\bin.js" %*
)

15
app/node_modules/.bin/semver generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../semver/bin/semver" "$@"
ret=$?
else
node "$basedir/../semver/bin/semver" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/semver.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\semver\bin\semver" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\semver\bin\semver" %*
)

15
app/node_modules/.bin/sshpk-conv generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../sshpk/bin/sshpk-conv" "$@"
ret=$?
else
node "$basedir/../sshpk/bin/sshpk-conv" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\sshpk\bin\sshpk-conv" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\sshpk\bin\sshpk-conv" %*
)

15
app/node_modules/.bin/sshpk-sign generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../sshpk/bin/sshpk-sign" "$@"
ret=$?
else
node "$basedir/../sshpk/bin/sshpk-sign" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\sshpk\bin\sshpk-sign" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\sshpk\bin\sshpk-sign" %*
)

15
app/node_modules/.bin/sshpk-verify generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../sshpk/bin/sshpk-verify" "$@"
ret=$?
else
node "$basedir/../sshpk/bin/sshpk-verify" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\sshpk\bin\sshpk-verify" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\sshpk\bin\sshpk-verify" %*
)

15
app/node_modules/.bin/strip-indent generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../strip-indent/cli.js" "$@"
ret=$?
else
node "$basedir/../strip-indent/cli.js" "$@"
ret=$?
fi
exit $ret

View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\strip-indent\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\strip-indent\cli.js" %*
)

15
app/node_modules/.bin/uuid generated vendored
View File

@@ -1,15 +0,0 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../uuid/bin/uuid" "$@"
ret=$?
else
node "$basedir/../uuid/bin/uuid" "$@"
ret=$?
fi
exit $ret

7
app/node_modules/.bin/uuid.cmd generated vendored
View File

@@ -1,7 +0,0 @@
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\uuid\bin\uuid" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\uuid\bin\uuid" %*
)

21
app/node_modules/@types/node/LICENSE generated vendored
View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE

View File

@@ -1,16 +0,0 @@
# Installation
> `npm install --save @types/node`
# Summary
This package contains type definitions for Node.js ( http://nodejs.org/ ).
# Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node/v8
Additional Details
* Last updated: Thu, 30 May 2019 18:05:38 GMT
* Dependencies: none
* Global values: Buffer, NodeJS, SlowBuffer, Symbol, __dirname, __filename, clearImmediate, clearInterval, clearTimeout, console, exports, global, module, process, require, setImmediate, setInterval, setTimeout
# Credits
These definitions were written by Microsoft TypeScript <https://github.com/Microsoft>, DefinitelyTyped <https://github.com/DefinitelyTyped>, Parambir Singh <https://github.com/parambirs>, Christian Vaagland Tellnes <https://github.com/tellnes>, Wilco Bakker <https://github.com/WilcoBakker>, Nicolas Voigt <https://github.com/octo-sniffle>, Chigozirim C. <https://github.com/smac89>, Flarna <https://github.com/Flarna>, Mariusz Wiktorczyk <https://github.com/mwiktorczyk>, wwwy3y3 <https://github.com/wwwy3y3>, Deividas Bakanas <https://github.com/DeividasBakanas>, Kelvin Jin <https://github.com/kjin>, Alvis HT Tang <https://github.com/alvis>, Sebastian Silbermann <https://github.com/eps1lon>, Hannes Magnusson <https://github.com/Hannes-Magnusson-CK>, Alberto Schiabel <https://github.com/jkomyno>, Huw <https://github.com/hoo29>, Nicolas Even <https://github.com/n-e>, Bruno Scheufler <https://github.com/brunoscheufler>, Hoàng Văn Khải <https://github.com/KSXGitHub>, Lishude <https://github.com/islishude>, Andrew Makarov <https://github.com/r3nya>, Jordi Oliveras Rovira <https://github.com/j-oliveras>, Thanik Bhongbhibhat <https://github.com/bhongy>.

7328
app/node_modules/@types/node/base.d.ts generated vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,68 +0,0 @@
// Type definitions for Node.js 8.10
// Project: http://nodejs.org/
// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
// DefinitelyTyped <https://github.com/DefinitelyTyped>
// Parambir Singh <https://github.com/parambirs>
// Christian Vaagland Tellnes <https://github.com/tellnes>
// Wilco Bakker <https://github.com/WilcoBakker>
// Nicolas Voigt <https://github.com/octo-sniffle>
// Chigozirim C. <https://github.com/smac89>
// Flarna <https://github.com/Flarna>
// Mariusz Wiktorczyk <https://github.com/mwiktorczyk>
// wwwy3y3 <https://github.com/wwwy3y3>
// Deividas Bakanas <https://github.com/DeividasBakanas>
// Kelvin Jin <https://github.com/kjin>
// Alvis HT Tang <https://github.com/alvis>
// Sebastian Silbermann <https://github.com/eps1lon>
// Hannes Magnusson <https://github.com/Hannes-Magnusson-CK>
// Alberto Schiabel <https://github.com/jkomyno>
// Huw <https://github.com/hoo29>
// Nicolas Even <https://github.com/n-e>
// Bruno Scheufler <https://github.com/brunoscheufler>
// Hoàng Văn Khải <https://github.com/KSXGitHub>
// Lishude <https://github.com/islishude>
// Andrew Makarov <https://github.com/r3nya>
// Jordi Oliveras Rovira <https://github.com/j-oliveras>
// Thanik Bhongbhibhat <https://github.com/bhongy>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
// NOTE: These definitions support NodeJS and TypeScript 3.1.
// NOTE: TypeScript version-specific augmentations can be found in the following paths:
// - ~/base.d.ts - Shared definitions common to all TypeScript versions
// - ~/index.d.ts - Definitions specific to TypeScript 2.1
// - ~/ts3.1/index.d.ts - Definitions specific to TypeScript 3.1
// NOTE: Augmentations for TypeScript 3.1 and later should use individual files for overrides
// within the respective ~/ts3.1 (or later) folder. However, this is disallowed for versions
// prior to TypeScript 3.1, so the older definitions will be found here.
// Base definitions for all NodeJS modules that are not specific to any version of TypeScript:
/// <reference path="base.d.ts" />
// TypeScript 2.1-specific augmentations:
// Forward-declarations for needed types from es2015 and later (in case users are using `--lib es5`)
interface MapConstructor { }
interface WeakMapConstructor { }
interface SetConstructor { }
interface WeakSetConstructor { }
interface IteratorResult<T> { }
interface Iterable<T> { }
interface Iterator<T> {
next(value?: any): IteratorResult<T>;
}
interface IterableIterator<T> { }
interface SymbolConstructor {
readonly iterator: symbol;
}
declare var Symbol: SymbolConstructor;
declare module "util" {
namespace inspect {
const custom: symbol;
}
namespace promisify {
const custom: symbol;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,152 +0,0 @@
{
"_from": "@types/node@^8.0.24",
"_id": "@types/node@8.10.49",
"_inBundle": false,
"_integrity": "sha512-YX30JVx0PvSmJ3Eqr74fYLGeBxD+C7vIL20ek+GGGLJeUbVYRUW3EzyAXpIRA0K8c8o0UWqR/GwEFYiFoz1T8w==",
"_location": "/@types/node",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "@types/node@^8.0.24",
"name": "@types/node",
"escapedName": "@types%2fnode",
"scope": "@types",
"rawSpec": "^8.0.24",
"saveSpec": null,
"fetchSpec": "^8.0.24"
},
"_requiredBy": [
"/electron"
],
"_resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.49.tgz",
"_shasum": "f331afc5efed0796798e5591d6e0ece636969b7b",
"_spec": "@types/node@^8.0.24",
"_where": "F:\\projects\\p\\gitlit\\app\\node_modules\\electron",
"bugs": {
"url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Microsoft TypeScript",
"url": "https://github.com/Microsoft"
},
{
"name": "DefinitelyTyped",
"url": "https://github.com/DefinitelyTyped"
},
{
"name": "Parambir Singh",
"url": "https://github.com/parambirs"
},
{
"name": "Christian Vaagland Tellnes",
"url": "https://github.com/tellnes"
},
{
"name": "Wilco Bakker",
"url": "https://github.com/WilcoBakker"
},
{
"name": "Nicolas Voigt",
"url": "https://github.com/octo-sniffle"
},
{
"name": "Chigozirim C.",
"url": "https://github.com/smac89"
},
{
"name": "Flarna",
"url": "https://github.com/Flarna"
},
{
"name": "Mariusz Wiktorczyk",
"url": "https://github.com/mwiktorczyk"
},
{
"name": "wwwy3y3",
"url": "https://github.com/wwwy3y3"
},
{
"name": "Deividas Bakanas",
"url": "https://github.com/DeividasBakanas"
},
{
"name": "Kelvin Jin",
"url": "https://github.com/kjin"
},
{
"name": "Alvis HT Tang",
"url": "https://github.com/alvis"
},
{
"name": "Sebastian Silbermann",
"url": "https://github.com/eps1lon"
},
{
"name": "Hannes Magnusson",
"url": "https://github.com/Hannes-Magnusson-CK"
},
{
"name": "Alberto Schiabel",
"url": "https://github.com/jkomyno"
},
{
"name": "Huw",
"url": "https://github.com/hoo29"
},
{
"name": "Nicolas Even",
"url": "https://github.com/n-e"
},
{
"name": "Bruno Scheufler",
"url": "https://github.com/brunoscheufler"
},
{
"name": "Hoàng Văn Khải",
"url": "https://github.com/KSXGitHub"
},
{
"name": "Lishude",
"url": "https://github.com/islishude"
},
{
"name": "Andrew Makarov",
"url": "https://github.com/r3nya"
},
{
"name": "Jordi Oliveras Rovira",
"url": "https://github.com/j-oliveras"
},
{
"name": "Thanik Bhongbhibhat",
"url": "https://github.com/bhongy"
}
],
"dependencies": {},
"deprecated": false,
"description": "TypeScript definitions for Node.js",
"homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
"license": "MIT",
"main": "",
"name": "@types/node",
"repository": {
"type": "git",
"url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
"directory": "types/node"
},
"scripts": {},
"typeScriptVersion": "2.1",
"types": "index",
"typesPublisherContentHash": "fc9e00a24af87d67b480380695032fd718d8739851c9557d4040bfeb7b7d32f4",
"typesVersions": {
">=3.2.0-0": {
"*": [
"ts3.2/*"
]
}
},
"version": "8.10.49"
}

View File

@@ -1,23 +0,0 @@
// NOTE: These definitions support NodeJS and TypeScript 3.2.
// NOTE: TypeScript version-specific augmentations can be found in the following paths:
// - ~/base.d.ts - Shared definitions common to all TypeScript versions
// - ~/index.d.ts - Definitions specific to TypeScript 2.1
// - ~/ts3.2/index.d.ts - Definitions specific to TypeScript 3.2
// Reference required types from the default lib:
/// <reference lib="es2017" />
// Base definitions for all NodeJS modules that are not specific to any version of TypeScript:
// tslint:disable-next-line:no-bad-reference
/// <reference path="../base.d.ts" />
// TypeScript 3.2-specific augmentations:
declare module "util" {
namespace inspect {
const custom: unique symbol;
}
namespace promisify {
const custom: unique symbol;
}
}

46
app/node_modules/abbrev/LICENSE generated vendored
View File

@@ -1,46 +0,0 @@
This software is dual-licensed under the ISC and MIT licenses.
You may use this software under EITHER of the following licenses.
----------
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----------
Copyright Isaac Z. Schlueter and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

23
app/node_modules/abbrev/README.md generated vendored
View File

@@ -1,23 +0,0 @@
# abbrev-js
Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
Usage:
var abbrev = require("abbrev");
abbrev("foo", "fool", "folding", "flop");
// returns:
{ fl: 'flop'
, flo: 'flop'
, flop: 'flop'
, fol: 'folding'
, fold: 'folding'
, foldi: 'folding'
, foldin: 'folding'
, folding: 'folding'
, foo: 'foo'
, fool: 'fool'
}
This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.

61
app/node_modules/abbrev/abbrev.js generated vendored
View File

@@ -1,61 +0,0 @@
module.exports = exports = abbrev.abbrev = abbrev
abbrev.monkeyPatch = monkeyPatch
function monkeyPatch () {
Object.defineProperty(Array.prototype, 'abbrev', {
value: function () { return abbrev(this) },
enumerable: false, configurable: true, writable: true
})
Object.defineProperty(Object.prototype, 'abbrev', {
value: function () { return abbrev(Object.keys(this)) },
enumerable: false, configurable: true, writable: true
})
}
function abbrev (list) {
if (arguments.length !== 1 || !Array.isArray(list)) {
list = Array.prototype.slice.call(arguments, 0)
}
for (var i = 0, l = list.length, args = [] ; i < l ; i ++) {
args[i] = typeof list[i] === "string" ? list[i] : String(list[i])
}
// sort them lexicographically, so that they're next to their nearest kin
args = args.sort(lexSort)
// walk through each, seeing how much it has in common with the next and previous
var abbrevs = {}
, prev = ""
for (var i = 0, l = args.length ; i < l ; i ++) {
var current = args[i]
, next = args[i + 1] || ""
, nextMatches = true
, prevMatches = true
if (current === next) continue
for (var j = 0, cl = current.length ; j < cl ; j ++) {
var curChar = current.charAt(j)
nextMatches = nextMatches && curChar === next.charAt(j)
prevMatches = prevMatches && curChar === prev.charAt(j)
if (!nextMatches && !prevMatches) {
j ++
break
}
}
prev = current
if (j === cl) {
abbrevs[current] = current
continue
}
for (var a = current.substr(0, j) ; j <= cl ; j ++) {
abbrevs[a] = current
a += current.charAt(j)
}
}
return abbrevs
}
function lexSort (a, b) {
return a === b ? 0 : a > b ? 1 : -1
}

57
app/node_modules/abbrev/package.json generated vendored
View File

@@ -1,57 +0,0 @@
{
"_from": "abbrev@1",
"_id": "abbrev@1.1.1",
"_inBundle": false,
"_integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"_location": "/abbrev",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "abbrev@1",
"name": "abbrev",
"escapedName": "abbrev",
"rawSpec": "1",
"saveSpec": null,
"fetchSpec": "1"
},
"_requiredBy": [
"/nopt",
"/touch/nopt"
],
"_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"_shasum": "f8f2c887ad10bf67f634f005b6987fed3179aac8",
"_spec": "abbrev@1",
"_where": "F:\\projects\\p\\gitlit\\app\\node_modules\\nopt",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me"
},
"bugs": {
"url": "https://github.com/isaacs/abbrev-js/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "Like ruby's abbrev module, but in js",
"devDependencies": {
"tap": "^10.1"
},
"files": [
"abbrev.js"
],
"homepage": "https://github.com/isaacs/abbrev-js#readme",
"license": "ISC",
"main": "abbrev.js",
"name": "abbrev",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
},
"scripts": {
"postpublish": "git push origin --all; git push origin --tags",
"postversion": "npm publish",
"preversion": "npm test",
"test": "tap test.js --100"
},
"version": "1.1.1"
}

View File

@@ -1,12 +0,0 @@
# editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 100
tab_width = 2
trim_trailing_whitespace = true

View File

@@ -1 +0,0 @@
animate.min.css

View File

@@ -1,6 +0,0 @@
language: node_js
node_js:
- "10"
before_script:
- npm install -g gulp
script: gulp

View File

@@ -1,76 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at callmeelton@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

21
app/node_modules/animate.css/LICENSE generated vendored
View File

@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019 Daniel Eden
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,211 +0,0 @@
# Animate.css [![GitHub release](https://img.shields.io/github/release/daneden/animate.css.svg)](https://github.com/daneden/animate.css/releases) [![CDNJS](https://img.shields.io/cdnjs/v/animate.css.svg)](https://cdnjs.com/libraries/animate.css) [![Build Status](https://travis-ci.com/daneden/animate.css.svg?branch=master)](https://travis-ci.com/daneden/animate.css) [![devDependencies Status](https://david-dm.org/daneden/animate.css/dev-status.svg)](https://david-dm.org/daneden/animate.css?type=dev) [![chat](https://img.shields.io/badge/chat-gitter-green.svg)](https://gitter.im/animate-css/Lobby) [![npm version](https://badge.fury.io/js/animate.css.svg)](https://www.npmjs.com/package/animate.css)
_Just-add-water CSS animation_
`animate.css` is a bunch of cool, fun, and cross-browser animations for you to use in your projects. Great for emphasis, home pages, sliders, and general just-add-water-awesomeness.
## Installation
Install via npm:
```bash
$ npm install animate.css --save
```
or yarn:
```bash
$ yarn add animate.css
```
## Usage
To use animate.css in your website, simply drop the stylesheet into your document's `<head>`, and add the class `animated` to an element, along with any of the animation names. That's it! You've got a CSS animated element. Super!
```html
<head>
<link rel="stylesheet" href="animate.min.css">
</head>
```
or use a CDN hosted version by [CDNJS](https://cdnjs.com/libraries/animate.css)
```html
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.0/animate.min.css">
</head>
```
### Animations
To animate an element, add the class `animated` to an element. You can include the class `infinite` for an infinite loop. Finally you need to add one of the following classes to the element:
| Class Name | | | |
| ----------------- | ------------------ | ------------------- | -------------------- |
| `bounce` | `flash` | `pulse` | `rubberBand` |
| `shake` | `headShake` | `swing` | `tada` |
| `wobble` | `jello` | `bounceIn` | `bounceInDown` |
| `bounceInLeft` | `bounceInRight` | `bounceInUp` | `bounceOut` |
| `bounceOutDown` | `bounceOutLeft` | `bounceOutRight` | `bounceOutUp` |
| `fadeIn` | `fadeInDown` | `fadeInDownBig` | `fadeInLeft` |
| `fadeInLeftBig` | `fadeInRight` | `fadeInRightBig` | `fadeInUp` |
| `fadeInUpBig` | `fadeOut` | `fadeOutDown` | `fadeOutDownBig` |
| `fadeOutLeft` | `fadeOutLeftBig` | `fadeOutRight` | `fadeOutRightBig` |
| `fadeOutUp` | `fadeOutUpBig` | `flipInX` | `flipInY` |
| `flipOutX` | `flipOutY` | `lightSpeedIn` | `lightSpeedOut` |
| `rotateIn` | `rotateInDownLeft` | `rotateInDownRight` | `rotateInUpLeft` |
| `rotateInUpRight` | `rotateOut` | `rotateOutDownLeft` | `rotateOutDownRight` |
| `rotateOutUpLeft` | `rotateOutUpRight` | `hinge` | `jackInTheBox` |
| `rollIn` | `rollOut` | `zoomIn` | `zoomInDown` |
| `zoomInLeft` | `zoomInRight` | `zoomInUp` | `zoomOut` |
| `zoomOutDown` | `zoomOutLeft` | `zoomOutRight` | `zoomOutUp` |
| `slideInDown` | `slideInLeft` | `slideInRight` | `slideInUp` |
| `slideOutDown` | `slideOutLeft` | `slideOutRight` | `slideOutUp` |
| `heartBeat` |
Full example:
```html
<h1 class="animated infinite bounce delay-2s">Example</h1>
```
[Check out all the animations here!](https://daneden.github.io/animate.css/)
It's possible to change the duration of your animations, add a delay or change the number of times that it plays:
```css
.yourElement {
animation-duration: 3s;
animation-delay: 2s;
animation-iteration-count: infinite;
}
```
## Usage with Javascript
You can do a whole bunch of other stuff with animate.css when you combine it with Javascript. A simple example:
```javascript
const element = document.querySelector('.my-element')
element.classList.add('animated', 'bounceOutLeft')
```
You can also detect when an animation ends:
```javascript
const element = document.querySelector('.my-element')
element.classList.add('animated', 'bounceOutLeft')
element.addEventListener('animationend', function() { doSomething() })
```
You can use this simple function to add and remove the animations:
```javascript
function animateCSS(element, animationName, callback) {
const node = document.querySelector(element)
node.classList.add('animated', animationName)
function handleAnimationEnd() {
node.classList.remove('animated', animationName)
node.removeEventListener('animationend', handleAnimationEnd)
if (typeof callback === 'function') callback()
}
node.addEventListener('animationend', handleAnimationEnd)
}
```
And use it like this:
```javascript
animateCSS('.my-element', 'bounce')
// or
animateCSS('.my-element', 'bounce', function() {
// Do something after animation
})
```
Notice that the examples are using ES6's `const` declaration, dropping support for IE10 and some aging browsers. If you prefer, switch the `const` to `var` declarations and IE10 and some old browsers will get support (they still have to provide [classList](https://developer.mozilla.org/en-US/docs/Web/API/Element/classList) support, so do your [research](https://caniuse.com/#feat=classlist)).
## Setting _Delay_ and _Speed_
### Delay Class
It's possible to add delays directly on the element's class attribute, just like this:
```html
<div class="animated bounce delay-2s">Example</div>
```
| Class Name | Delay Time |
| ---------- | ---------- |
| `delay-2s` | `2s` |
| `delay-3s` | `3s` |
| `delay-4s` | `4s` |
| `delay-5s` | `5s` |
> _**Note**: The default delays are from 1 second to 5 seconds only. If you need custom delays, add it directly to your own CSS code._
### Slow, Slower, Fast, and Faster Class
It's possible to control the speed of the animation by adding these classes, as a sample below:
```html
<div class="animated bounce faster">Example</div>
```
| Class Name | Speed Time |
| ---------- | ---------- |
| `slow` | `2s` |
| `slower` | `3s` |
| `fast` | `800ms` |
| `faster` | `500ms` |
> _**Note**: The `animated` class has a default speed of `1s`. If you need custom duration, add it directly to your own CSS code._
## Custom Builds
Animate.css is powered by [gulp.js](http://gulpjs.com/), which means you can create custom builds pretty easily. First of all, youll need Gulp and all other dependencies:
```sh
$ cd path/to/animate.css/
$ sudo npm install
```
Next, run `gulp` to compile your custom builds. For example, if you want only some of the “attention seekers”, simply edit the `animate-config.json` file to select only the animations you want to use.
```javascript
"attention_seekers": {
"bounce": true,
"flash": false,
"pulse": false,
"shake": true,
"headShake": true,
"swing": true,
"tada": true,
"wobble": true,
"jello":true
}
```
## Accessibility
Animate.css supports the [`prefers-reduced-motion` media query](https://webkit.org/blog/7551/responsive-design-for-motion/) so that users with motion sensitivity can opt out of animations. On supported platforms (currently Firefox, OSX Safari and iOS Safari), users can select "reduce motion" on their operating system preferences and it will turn off CSS transitions for them without any further work required.
## License
Animate.css is licensed under the MIT license. (http://opensource.org/licenses/MIT)
## Code of Conduct
This project and everyone participating in it is governed by the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [callmeelton@gmail.com](mailto:callmeelton@gmail.com).
## Contributing
Pull requests are the way to go here. We only have two rules for submitting a pull request: match the naming convention (camelCase, categorised [fades, bounces, etc]) and let us see a demo of submitted animations in a [pen](http://codepen.io). That **last one is important**.

View File

@@ -1,121 +0,0 @@
{
"attention_seekers": {
"bounce": true,
"flash": true,
"pulse": true,
"rubberBand": true,
"shake": true,
"headShake": true,
"swing": true,
"tada": true,
"wobble": true,
"jello": true,
"heartBeat": true
},
"bouncing_entrances": {
"bounceIn": true,
"bounceInDown": true,
"bounceInLeft": true,
"bounceInRight": true,
"bounceInUp": true
},
"bouncing_exits": {
"bounceOut": true,
"bounceOutDown": true,
"bounceOutLeft": true,
"bounceOutRight": true,
"bounceOutUp": true
},
"fading_entrances": {
"fadeIn": true,
"fadeInDown": true,
"fadeInDownBig": true,
"fadeInLeft": true,
"fadeInLeftBig": true,
"fadeInRight": true,
"fadeInRightBig": true,
"fadeInUp": true,
"fadeInUpBig": true
},
"fading_exits": {
"fadeOut": true,
"fadeOutDown": true,
"fadeOutDownBig": true,
"fadeOutLeft": true,
"fadeOutLeftBig": true,
"fadeOutRight": true,
"fadeOutRightBig": true,
"fadeOutUp": true,
"fadeOutUpBig": true
},
"flippers": {
"flip": true,
"flipInX": true,
"flipInY": true,
"flipOutX": true,
"flipOutY": true
},
"lightspeed": {
"lightSpeedIn": true,
"lightSpeedOut": true
},
"rotating_entrances": {
"rotateIn": true,
"rotateInDownLeft": true,
"rotateInDownRight": true,
"rotateInUpLeft": true,
"rotateInUpRight": true
},
"rotating_exits": {
"rotateOut": true,
"rotateOutDownLeft": true,
"rotateOutDownRight": true,
"rotateOutUpLeft": true,
"rotateOutUpRight": true
},
"specials": {
"hinge": true,
"jackInTheBox": true,
"rollIn": true,
"rollOut": true
},
"zooming_entrances": {
"zoomIn": true,
"zoomInDown": true,
"zoomInLeft": true,
"zoomInRight": true,
"zoomInUp": true
},
"zooming_exits": {
"zoomOut": true,
"zoomOutDown": true,
"zoomOutLeft": true,
"zoomOutRight": true,
"zoomOutUp": true
},
"sliding_entrances": {
"slideInDown": true,
"slideInLeft": true,
"slideInRight": true,
"slideInUp": true
},
"sliding_exits": {
"slideOutDown": true,
"slideOutLeft": true,
"slideOutRight": true,
"slideOutUp": true
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +0,0 @@
{
"name": "animate.css",
"main": "./animate.css",
"ignore": [".*", "*.yml", "Gemfile", "Gemfile.lock", "*.md"]
}

View File

@@ -1,107 +0,0 @@
// Utilities
var autoprefixer = require('autoprefixer');
var cssnano = require('cssnano');
var fs = require('fs');
// Gulp
var gulp = require('gulp');
// Gulp plugins
var concat = require('gulp-concat');
var gutil = require('gulp-util');
var header = require('gulp-header');
var postcss = require('gulp-postcss');
var rename = require('gulp-rename');
var runSequence = require('run-sequence');
// Misc/global vars
var pkg = JSON.parse(fs.readFileSync('package.json'));
var activatedAnimations = activateAnimations();
// Task options
var opts = {
destPath: './',
concatName: 'animate.css',
autoprefixer: {
browsers: ['> 1%', 'last 2 versions', 'Firefox ESR'],
cascade: false,
},
minRename: {
suffix: '.min',
},
banner: [
'@charset "UTF-8";\n',
'/*!',
' * <%= name %> -<%= homepage %>',
' * Version - <%= version %>',
' * Licensed under the MIT license - http://opensource.org/licenses/MIT',
' *',
' * Copyright (c) <%= new Date().getFullYear() %> <%= author.name %>',
' */\n\n',
].join('\n'),
};
// ----------------------------
// Gulp task definitions
// ----------------------------
gulp.task('createCSS', function() {
return gulp
.src(activatedAnimations)
.pipe(concat(opts.concatName))
.pipe(postcss([autoprefixer(opts.autoprefixer)]))
.pipe(gulp.dest(opts.destPath))
.pipe(postcss([cssnano({reduceIdents: {keyframes: false}})]))
.pipe(rename(opts.minRename))
.pipe(gulp.dest(opts.destPath));
});
gulp.task('addHeader', function() {
return gulp
.src('*.css')
.pipe(header(opts.banner, pkg))
.pipe(gulp.dest(opts.destPath));
});
gulp.task('default', gulp.series('createCSS', 'addHeader'));
// ----------------------------
// Helpers/functions
// ----------------------------
// Read the config file and return an array of the animations to be activated
function activateAnimations() {
var categories = JSON.parse(fs.readFileSync('animate-config.json')),
category,
files,
file,
target = [],
count = 0;
for (category in categories) {
if (categories.hasOwnProperty(category)) {
files = categories[category];
for (file in files) {
if (files[file]) {
// marked as true
target.push('source/' + category + '/' + file + '.css');
count += 1;
}
}
}
}
// prepend base CSS
target.push('source/_base.css');
if (!count) {
gutil.log('No animations activated.');
} else {
gutil.log(count + (count > 1 ? ' animations' : ' animation') + ' activated.');
}
return target;
}

View File

@@ -1,87 +0,0 @@
{
"_from": "animate.css@^3.5.2",
"_id": "animate.css@3.7.2",
"_inBundle": false,
"_integrity": "sha512-0bE8zYo7C0KvgOYrSVfrzkbYk6IOTVPNqkiHg2cbyF4Pq/PXzilz4BRWA3hwEUBoMp5VBgrC29lQIZyhRWdBTw==",
"_location": "/animate.css",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "animate.css@^3.5.2",
"name": "animate.css",
"escapedName": "animate.css",
"rawSpec": "^3.5.2",
"saveSpec": null,
"fetchSpec": "^3.5.2"
},
"_requiredBy": [
"/"
],
"_resolved": "https://registry.npmjs.org/animate.css/-/animate.css-3.7.2.tgz",
"_shasum": "e73e0d50e92cb1cfef1597d9b38a9481020e08ea",
"_spec": "animate.css@^3.5.2",
"_where": "F:\\projects\\p\\gitlit\\app",
"author": {
"name": "Daniel Eden"
},
"bugs": {
"url": "https://github.com/daneden/animate.css/issues"
},
"bundleDependencies": false,
"deprecated": false,
"description": "_Just-add-water CSS animation_",
"devDependencies": {
"autoprefixer": "^9.0.1",
"cssnano": "^4.0.3",
"eslint": "^5.2.0",
"gulp": "^4.0.0",
"gulp-concat": "^2.6.1",
"gulp-header": "^2.0.1",
"gulp-postcss": "^8.0.0",
"gulp-rename": "^1.2.2",
"gulp-util": "^3.0.8",
"husky": "^1.2.0",
"lint-staged": "^8.1.0",
"prettier": "^1.10.2",
"run-sequence": "^2.2.1"
},
"homepage": "https://daneden.github.io/animate.css/",
"jspm": {
"main": "animate.css!",
"format": "global",
"directories": {
"lib": "./"
}
},
"license": "MIT",
"lint-staged": {
"*.{js,json,md,css}": [
"prettier --write",
"git add"
]
},
"main": "animate.css",
"name": "animate.css",
"prettier": {
"bracketSpacing": false,
"proseWrap": "never",
"singleQuote": true,
"trailingComma": "all"
},
"repository": {
"type": "git",
"url": "git+https://github.com/daneden/animate.css.git"
},
"scripts": {
"gulp": "./node_modules/gulp/bin/gulp.js",
"precommit": "lint-staged",
"prettier": "prettier --write \"**/*.{js,json,md,css}\"",
"start": "gulp"
},
"spm": {
"main": "./animate.css"
},
"style": "./animate.css",
"version": "3.7.2"
}

View File

@@ -1,52 +0,0 @@
.animated {
animation-duration: 1s;
animation-fill-mode: both;
}
.animated.infinite {
animation-iteration-count: infinite;
}
.animated.delay-1s {
animation-delay: 1s;
}
.animated.delay-2s {
animation-delay: 2s;
}
.animated.delay-3s {
animation-delay: 3s;
}
.animated.delay-4s {
animation-delay: 4s;
}
.animated.delay-5s {
animation-delay: 5s;
}
.animated.fast {
animation-duration: 800ms;
}
.animated.faster {
animation-duration: 500ms;
}
.animated.slow {
animation-duration: 2s;
}
.animated.slower {
animation-duration: 3s;
}
@media (print), (prefers-reduced-motion: reduce) {
.animated {
animation-duration: 1ms !important;
transition-duration: 1ms !important;
animation-iteration-count: 1 !important;
}
}

View File

@@ -1,4 +0,0 @@
.animated {
--animate-duration: 1s;
--animate-delay: 1s;
}

View File

@@ -1,30 +0,0 @@
@keyframes bounce {
from,
20%,
53%,
80%,
to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
transform: translate3d(0, 0, 0);
}
40%,
43% {
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
transform: translate3d(0, -30px, 0);
}
70% {
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
transform: translate3d(0, -15px, 0);
}
90% {
transform: translate3d(0, -4px, 0);
}
}
.bounce {
animation-name: bounce;
transform-origin: center bottom;
}

View File

@@ -1,16 +0,0 @@
@keyframes flash {
from,
50%,
to {
opacity: 1;
}
25%,
75% {
opacity: 0;
}
}
.flash {
animation-name: flash;
}

View File

@@ -1,30 +0,0 @@
@keyframes headShake {
0% {
transform: translateX(0);
}
6.5% {
transform: translateX(-6px) rotateY(-9deg);
}
18.5% {
transform: translateX(5px) rotateY(7deg);
}
31.5% {
transform: translateX(-3px) rotateY(-5deg);
}
43.5% {
transform: translateX(2px) rotateY(3deg);
}
50% {
transform: translateX(0);
}
}
.headShake {
animation-timing-function: ease-in-out;
animation-name: headShake;
}

View File

@@ -1,27 +0,0 @@
@keyframes heartBeat {
0% {
transform: scale(1);
}
14% {
transform: scale(1.3);
}
28% {
transform: scale(1);
}
42% {
transform: scale(1.3);
}
70% {
transform: scale(1);
}
}
.heartBeat {
animation-name: heartBeat;
animation-duration: 1.3s;
animation-timing-function: ease-in-out;
}

View File

@@ -1,40 +0,0 @@
@keyframes jello {
from,
11.1%,
to {
transform: translate3d(0, 0, 0);
}
22.2% {
transform: skewX(-12.5deg) skewY(-12.5deg);
}
33.3% {
transform: skewX(6.25deg) skewY(6.25deg);
}
44.4% {
transform: skewX(-3.125deg) skewY(-3.125deg);
}
55.5% {
transform: skewX(1.5625deg) skewY(1.5625deg);
}
66.6% {
transform: skewX(-0.78125deg) skewY(-0.78125deg);
}
77.7% {
transform: skewX(0.390625deg) skewY(0.390625deg);
}
88.8% {
transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
}
}
.jello {
animation-name: jello;
transform-origin: center;
}

View File

@@ -1,19 +0,0 @@
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@keyframes pulse {
from {
transform: scale3d(1, 1, 1);
}
50% {
transform: scale3d(1.05, 1.05, 1.05);
}
to {
transform: scale3d(1, 1, 1);
}
}
.pulse {
animation-name: pulse;
}

View File

@@ -1,33 +0,0 @@
@keyframes rubberBand {
from {
transform: scale3d(1, 1, 1);
}
30% {
transform: scale3d(1.25, 0.75, 1);
}
40% {
transform: scale3d(0.75, 1.25, 1);
}
50% {
transform: scale3d(1.15, 0.85, 1);
}
65% {
transform: scale3d(0.95, 1.05, 1);
}
75% {
transform: scale3d(1.05, 0.95, 1);
}
to {
transform: scale3d(1, 1, 1);
}
}
.rubberBand {
animation-name: rubberBand;
}

View File

@@ -1,25 +0,0 @@
@keyframes shake {
from,
to {
transform: translate3d(0, 0, 0);
}
10%,
30%,
50%,
70%,
90% {
transform: translate3d(-10px, 0, 0);
}
20%,
40%,
60%,
80% {
transform: translate3d(10px, 0, 0);
}
}
.shake {
animation-name: shake;
}

View File

@@ -1,26 +0,0 @@
@keyframes swing {
20% {
transform: rotate3d(0, 0, 1, 15deg);
}
40% {
transform: rotate3d(0, 0, 1, -10deg);
}
60% {
transform: rotate3d(0, 0, 1, 5deg);
}
80% {
transform: rotate3d(0, 0, 1, -5deg);
}
to {
transform: rotate3d(0, 0, 1, 0deg);
}
}
.swing {
transform-origin: top center;
animation-name: swing;
}

View File

@@ -1,31 +0,0 @@
@keyframes tada {
from {
transform: scale3d(1, 1, 1);
}
10%,
20% {
transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
}
30%,
50%,
70%,
90% {
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
}
40%,
60%,
80% {
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
}
to {
transform: scale3d(1, 1, 1);
}
}
.tada {
animation-name: tada;
}

View File

@@ -1,35 +0,0 @@
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@keyframes wobble {
from {
transform: translate3d(0, 0, 0);
}
15% {
transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
}
30% {
transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
}
45% {
transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
}
60% {
transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
}
75% {
transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
}
to {
transform: translate3d(0, 0, 0);
}
}
.wobble {
animation-name: wobble;
}

View File

@@ -1,42 +0,0 @@
@keyframes bounceIn {
from,
20%,
40%,
60%,
80%,
to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
20% {
transform: scale3d(1.1, 1.1, 1.1);
}
40% {
transform: scale3d(0.9, 0.9, 0.9);
}
60% {
opacity: 1;
transform: scale3d(1.03, 1.03, 1.03);
}
80% {
transform: scale3d(0.97, 0.97, 0.97);
}
to {
opacity: 1;
transform: scale3d(1, 1, 1);
}
}
.bounceIn {
animation-duration: 0.75s;
animation-name: bounceIn;
}

View File

@@ -1,35 +0,0 @@
@keyframes bounceInDown {
from,
60%,
75%,
90%,
to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
transform: translate3d(0, -3000px, 0);
}
60% {
opacity: 1;
transform: translate3d(0, 25px, 0);
}
75% {
transform: translate3d(0, -10px, 0);
}
90% {
transform: translate3d(0, 5px, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.bounceInDown {
animation-name: bounceInDown;
}

View File

@@ -1,35 +0,0 @@
@keyframes bounceInLeft {
from,
60%,
75%,
90%,
to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
transform: translate3d(-3000px, 0, 0);
}
60% {
opacity: 1;
transform: translate3d(25px, 0, 0);
}
75% {
transform: translate3d(-10px, 0, 0);
}
90% {
transform: translate3d(5px, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.bounceInLeft {
animation-name: bounceInLeft;
}

View File

@@ -1,35 +0,0 @@
@keyframes bounceInRight {
from,
60%,
75%,
90%,
to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
transform: translate3d(3000px, 0, 0);
}
60% {
opacity: 1;
transform: translate3d(-25px, 0, 0);
}
75% {
transform: translate3d(10px, 0, 0);
}
90% {
transform: translate3d(-5px, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.bounceInRight {
animation-name: bounceInRight;
}

View File

@@ -1,35 +0,0 @@
@keyframes bounceInUp {
from,
60%,
75%,
90%,
to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
transform: translate3d(0, 3000px, 0);
}
60% {
opacity: 1;
transform: translate3d(0, -20px, 0);
}
75% {
transform: translate3d(0, 10px, 0);
}
90% {
transform: translate3d(0, -5px, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.bounceInUp {
animation-name: bounceInUp;
}

View File

@@ -1,21 +0,0 @@
@keyframes bounceOut {
20% {
transform: scale3d(0.9, 0.9, 0.9);
}
50%,
55% {
opacity: 1;
transform: scale3d(1.1, 1.1, 1.1);
}
to {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
}
.bounceOut {
animation-duration: 0.75s;
animation-name: bounceOut;
}

View File

@@ -1,20 +0,0 @@
@keyframes bounceOutDown {
20% {
transform: translate3d(0, 10px, 0);
}
40%,
45% {
opacity: 1;
transform: translate3d(0, -20px, 0);
}
to {
opacity: 0;
transform: translate3d(0, 2000px, 0);
}
}
.bounceOutDown {
animation-name: bounceOutDown;
}

View File

@@ -1,15 +0,0 @@
@keyframes bounceOutLeft {
20% {
opacity: 1;
transform: translate3d(20px, 0, 0);
}
to {
opacity: 0;
transform: translate3d(-2000px, 0, 0);
}
}
.bounceOutLeft {
animation-name: bounceOutLeft;
}

View File

@@ -1,15 +0,0 @@
@keyframes bounceOutRight {
20% {
opacity: 1;
transform: translate3d(-20px, 0, 0);
}
to {
opacity: 0;
transform: translate3d(2000px, 0, 0);
}
}
.bounceOutRight {
animation-name: bounceOutRight;
}

View File

@@ -1,20 +0,0 @@
@keyframes bounceOutUp {
20% {
transform: translate3d(0, -10px, 0);
}
40%,
45% {
opacity: 1;
transform: translate3d(0, 20px, 0);
}
to {
opacity: 0;
transform: translate3d(0, -2000px, 0);
}
}
.bounceOutUp {
animation-name: bounceOutUp;
}

View File

@@ -1,13 +0,0 @@
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadeIn {
animation-name: fadeIn;
}

View File

@@ -1,15 +0,0 @@
@keyframes fadeInDown {
from {
opacity: 0;
transform: translate3d(0, -100%, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
.fadeInDown {
animation-name: fadeInDown;
}

View File

@@ -1,15 +0,0 @@
@keyframes fadeInDownBig {
from {
opacity: 0;
transform: translate3d(0, -2000px, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
.fadeInDownBig {
animation-name: fadeInDownBig;
}

View File

@@ -1,15 +0,0 @@
@keyframes fadeInLeft {
from {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
.fadeInLeft {
animation-name: fadeInLeft;
}

Some files were not shown because too many files have changed in this diff Show More