Compare commits

...

24 Commits

Author SHA1 Message Date
be91e22447 3.0.2 2016-04-05 00:37:15 +02:00
a337663830 now using carets 2016-04-05 00:37:10 +02:00
2cbb14c515 3.0.1 2016-04-05 00:36:23 +02:00
68cc85b684 update deps 2016-04-05 00:36:19 +02:00
7e875212b5 3.0.0 2016-04-05 00:17:33 +02:00
372e00597c update deps 2016-04-05 00:17:08 +02:00
6e32af1c9b 2.3.0 2016-04-04 15:44:04 +02:00
c60eac7787 now has working memory module 2016-04-04 15:44:00 +02:00
581b9e21d3 implemented memory module 2016-04-02 23:03:18 +02:00
0661744614 2.2.0 2016-03-21 00:28:39 +01:00
20a3fdba03 now can remove files 2016-03-21 00:28:29 +01:00
580cb95aa7 2.1.1 2016-03-20 17:36:49 +01:00
9a05df4200 restructure code and make remote and local file delivery conform 2016-03-20 17:36:38 +01:00
9afe7c8a9e 2.1.0 2016-03-19 22:08:13 +01:00
9aac47cae3 now handling gulp streams allright 2016-03-19 22:07:59 +01:00
4e62bbeeea 2.0.0 2016-03-18 17:34:43 +01:00
4a8df9c12f tests running though, can now handle local and remote files 2016-03-18 17:34:31 +01:00
34d38cd3d4 work in progress 2016-03-18 09:19:46 +00:00
834b22ed8d 1.0.1 2016-03-14 04:22:42 +01:00
8e9b080004 update travis 2016-03-14 04:22:36 +01:00
d5d4d3ff67 1.0.0 2016-03-14 03:50:34 +01:00
075ffff713 0.1.0 2016-03-14 03:50:21 +01:00
641218e841 add copy 2016-03-14 03:50:14 +01:00
0ad455a483 cleanup 2016-03-14 01:28:58 +01:00
48 changed files with 1123 additions and 1494 deletions

5
.gitignore vendored
View File

@ -1,7 +1,12 @@
node_modules/
.settings/
.idea/
coverage/
docs/
ts/*.js
ts/*.js.map
ts/typings/
test/temp/

4
.npmignore Normal file
View File

@ -0,0 +1,4 @@
coverage/
docs/
test/
ts/

View File

@ -1,11 +1,11 @@
language: node_js
node_js:
- '4.2.4'
- 4.2.4
deploy:
provider: npm
email: npm@lossless.digital
api_key:
secure: 3RdzAcS9d6sLJs3tHM2uCVU2wV2NsKiLiYWue98DevgijIqTFDHtYuoP29p7fbB4SV87JRbTK1y41QM2u/CCjnbB+mrAUg/Pn08dTibmzi9liom67sLczIPD4eZeMznXPRaddESQdzqrtQfc/6P+1JQO7XWexLNebgYtMrUzYcOrHPWf/Uktk2cKiYfrO8piSR+HOFh2rzC5HjVZ/7fKDIa9bqTlBETkNc7s2NgB++jKRF9LNMVGI/9EmxjBzSSE1juOz26Ahp4+/+P3Lc5LngnTFOYsPoW5iWNY+AQltZxhu9K+rrtfn90rmQDnO7RCGO5yZgMS2+0UjJedwV+4ancU3nzoNmiuoIL7DjQ7NQlt0QKMmIqZuBFBc3tdxqotxNoJDk8/Ui0yfHWzJz0Fd22OI+VdTWNH1y5Vyywsql6wwkl2+Da1WhZf/Mn2gPgLPI0lssPTIl/u3Bey+167tZ3HvX0yqlvPO/JbqK02+5VrRBaV67vT00DG+dh4nnwqcX14Umx2a3JHt3tSGkDnDKpsLbvqjhPhkMRsCIloju+wMnyKjtScMZW+2FeO2n4PgbjNhF+5SG8pDmTS8p0Vy7iohUOiGIJty7K/1r6sQ1FNluhO5Ol3mBDs6wjg6S5QCSNL9eylpV52FV0UX4cRCijmzso+n48I2BbSwjghTB8=
secure: wIOQHE7Jbck2j5lcv1Rc8T9/1wbHNGLxqJ6pttNZ+hG1+w77TYnjNYuGtM2xQCXitXSFDoogU8MpiYieOQHYypFgJ6Ns8MTeKIzNJSnlOWdCSN/lVptscT8pyC6qD4IBAyi8m5F2HoGQR+IzcdDBPjXLaPbH7jn8hc9rNY+LNktmYOXfOr37P40pxYrf16GLwrkjQIK8pbkdIbNA0D0k3apTGqw+HsneN2D/O/zAYaB3ojm40ttgPAGYF5PO5t6uqIbPFgIPkMWsO1HbV6I+vOAuIf0KYUqnR/YZd5yFcxFt3c+bfyc8/LP4vy5FyKMLXHe4IXIjXPYetOSiVHgMMYaxawU51OqwIKO+87FJ1TdaVmacMFO0wagl2QS0ceQBn8KBUhljHu/fDInK82uy15Iddk44EhnTx1MIxxgH5WMM6aQB2vuqnViPghs4nA0Y/Dz2U69267fhvmZvEWWUndz058EksHdZsIt5WCqQErI/dWLXMGom94CuZv6nkoVHCw8CO5dqVvfqUFL7Qyw59kRbiUPItFVoiV8ptLUX9tnQ5xBukNRkFX34ViM9YvBRlGt5e//f+cWjUpXFvbrwkqusXArplpxIaUSsQKh7XaMB5DcZ5jDDdjKzIMDf6QWsMTU1rjfQS5ZS3eV5LPy0UlfpDGK28oK2/o8fM+yydVk=
on:
tags: true
repo: pushrocks/smartfile

View File

@ -1,6 +1,13 @@
# smartfile
make files easily accessible for processing in javascript.
## Status
[![Build Status](https://travis-ci.org/pushrocks/smartfile.svg?branch=master)](https://travis-ci.org/pushrocks/smartfile)
[![Dependency Status](https://david-dm.org/pushrocks/smartfile.svg)](https://david-dm.org/pushrocks/smartfile)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/smartfile/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/smartfile/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/smartfile/badges/code.svg)](https://www.bithound.io/github/pushrocks/smartfile)
[![codecov.io](https://codecov.io/github/pushrocks/smartfile/coverage.svg?branch=master)](https://codecov.io/github/pushrocks/smartfile?branch=master)
## Supported file types:
* .yml .yaml
* .json

File diff suppressed because one or more lines are too long

View File

@ -1,212 +0,0 @@
body, html {
margin:0; padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
}
.small { font-size: 12px;; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}
.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
}
.quiet a { opacity: 0.7; }
.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}
div.path a:link, div.path a:visited { color: #333; }
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
padding: 0;
}
table.coverage td {
margin: 0;
padding: 0;
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
}
table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}
.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }
.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.status-line { height: 10px; }
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
/* light red */
.low, .cline-no { background:#FCE1E5 }
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }
.medium .chart { border:1px solid #666; }
.medium .cover-fill { background: #666; }
.cbranch-no { background: yellow !important; color: #111; }
.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }
span.cline-neutral { background: #eaeaea; }
.medium { background: #eaeaea; }
.cover-fill, .cover-empty {
display:inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
}
.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }
.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
height: 48px;
}

View File

@ -1,93 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>
/
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">92.31% </span>
<span class="quiet">Statements</span>
<span class='fraction'>60/65</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">80.95% </span>
<span class="quiet">Branches</span>
<span class='fraction'>17/21</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">94.12% </span>
<span class="quiet">Functions</span>
<span class='fraction'>16/17</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">92.06% </span>
<span class="quiet">Lines</span>
<span class='fraction'>58/63</span>
</div>
</div>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="smartfile/"><a href="smartfile/index.html">smartfile/</a></td>
<td data-value="92.31" class="pic high"><div class="chart"><div class="cover-fill" style="width: 92%;"></div><div class="cover-empty" style="width:8%;"></div></div></td>
<td data-value="92.31" class="pct high">92.31%</td>
<td data-value="65" class="abs high">60/65</td>
<td data-value="80.95" class="pct high">80.95%</td>
<td data-value="21" class="abs high">17/21</td>
<td data-value="94.12" class="pct high">94.12%</td>
<td data-value="17" class="abs high">16/17</td>
<td data-value="92.06" class="pct high">92.06%</td>
<td data-value="63" class="abs high">58/63</td>
</tr>
</tbody>
</table>
</div><div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 09 2016 20:50:58 GMT+0100 (CET)
</div>
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="sorter.js"></script>
</body>
</html>

View File

@ -1 +0,0 @@
.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}

File diff suppressed because one or more lines are too long

View File

@ -1,93 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for smartfile/</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>
<a href="../index.html">all files</a> smartfile/
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">92.31% </span>
<span class="quiet">Statements</span>
<span class='fraction'>60/65</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">80.95% </span>
<span class="quiet">Branches</span>
<span class='fraction'>17/21</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">94.12% </span>
<span class="quiet">Functions</span>
<span class='fraction'>16/17</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">92.06% </span>
<span class="quiet">Lines</span>
<span class='fraction'>58/63</span>
</div>
</div>
</div>
<div class='status-line high'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="index.js"><a href="index.js.html">index.js</a></td>
<td data-value="92.31" class="pic high"><div class="chart"><div class="cover-fill" style="width: 92%;"></div><div class="cover-empty" style="width:8%;"></div></div></td>
<td data-value="92.31" class="pct high">92.31%</td>
<td data-value="65" class="abs high">60/65</td>
<td data-value="80.95" class="pct high">80.95%</td>
<td data-value="21" class="abs high">17/21</td>
<td data-value="94.12" class="pct high">94.12%</td>
<td data-value="17" class="abs high">16/17</td>
<td data-value="92.06" class="pct high">92.06%</td>
<td data-value="63" class="abs high">58/63</td>
</tr>
</tbody>
</table>
</div><div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 09 2016 20:50:58 GMT+0100 (CET)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="../sorter.js"></script>
</body>
</html>

View File

@ -1,434 +0,0 @@
<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for smartfile/index.js</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../prettify.css" />
<link rel="stylesheet" href="../base.css" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(../sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>
<a href="../index.html">all files</a> / <a href="index.html">smartfile/</a> index.js
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">92.31% </span>
<span class="quiet">Statements</span>
<span class='fraction'>60/65</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">80.95% </span>
<span class="quiet">Branches</span>
<span class='fraction'>17/21</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">94.12% </span>
<span class="quiet">Functions</span>
<span class='fraction'>16/17</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">92.06% </span>
<span class="quiet">Lines</span>
<span class='fraction'>58/63</span>
</div>
</div>
</div>
<div class='status-line high'></div>
<pre><table class="coverage">
<tr><td class="line-count quiet">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">#!/usr/bin/env node
&nbsp;
/// &lt;reference path="./index.ts" /&gt;
var SmartfilePlugins;
(function (SmartfilePlugins) {
SmartfilePlugins.init = function () {
var plugins = {
beautylog: require("beautylog"),
fs: require("fs-extra"),
path: require("path"),
q: require("q"),
vinyl: require("vinyl"),
vinylFile: require("vinyl-file"),
yaml: require("js-yaml"),
requireReload: require("require-reload")
};
return plugins;
};
})(SmartfilePlugins || (SmartfilePlugins = {}));
/// &lt;reference path="./index.ts" /&gt;
var SmartfileCheck;
(function (SmartfileCheck) {
var checks = {
fileExistsSync: function (filePath) {
var fileExistsBool = false;
try {
plugins.fs.readFileSync(filePath);
fileExistsBool = true;
}
catch (err) {
fileExistsBool = false;
}
return fileExistsBool;
},
fileExists: function (filePath) {
var done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
});
return done.promise;
}
};
SmartfileCheck.init = function (objectArg) {
objectArg.checks = checks;
};
})(SmartfileCheck || (SmartfileCheck = {}));
/// &lt;reference path="./index.ts" /&gt;
var SmartfileSimple;
(function (SmartfileSimple) {
/**
* reads a file content to a String
* @param filePath
* @returns {string|Buffer|any}
*/
var readFileToString = function (filePath) {
var fileString;
fileString = plugins.fs.readFileSync(filePath, "utf8");
return fileString;
};
var readFileToObject = function (filePath, fileTypeArg) {
<span class="missing-if-branch" title="else path not taken" >E</span>if (fileTypeArg === void 0) { fileTypeArg = "undefined"; }
var fileType;
<span class="missing-if-branch" title="else path not taken" >E</span>if (fileTypeArg == "undefined") {
fileType = plugins.path.extname(filePath);
}
else {
<span class="cstat-no" title="statement not covered" > fileType = fileTypeArg;</span>
}
fileType = fileType.replace(/\.([a-z]*)/, "$1"); //remove . form fileType
switch (fileType) {
<span class="branch-0 cbranch-no" title="branch not covered" > case "yml":</span>
case "yaml":
try {
return plugins.yaml.safeLoad(plugins.fs.readFileSync(filePath, 'utf8'));
}
catch (e) {
<span class="cstat-no" title="statement not covered" > plugins.beautylog.error("check that " + filePath.blue + " points to a valid file");</span>
}
<span class="cstat-no" title="statement not covered" > break;</span>
case "json":
return plugins.fs.readJsonSync(filePath, {});
<span class="cstat-no" title="statement not covered" > break;</span>
}
};
SmartfileSimple.init = function (objectArg) {
objectArg.readFileToString = readFileToString;
objectArg.readFileToObject = readFileToObject;
};
})(SmartfileSimple || (SmartfileSimple = {}));
/// &lt;reference path="./index.ts" /&gt;
var SmartfileVinyl;
(function (SmartfileVinyl) {
var readFileToVinyl = function (filePathArg, options) {
<span class="missing-if-branch" title="else path not taken" >E</span>if (options === void 0) { options = {}; }
return plugins.vinylFile.readSync(filePathArg, options);
};
SmartfileVinyl.init = function (objectArg) {
objectArg.readFileToVinyl = readFileToVinyl;
};
})(SmartfileVinyl || (SmartfileVinyl = {}));
/// &lt;reference path="./index.ts" /&gt;
var SmartfileRequire;
(function (SmartfileRequire) {
var requireReload = <span class="fstat-no" title="function not covered" >function (path) {</span>
<span class="cstat-no" title="statement not covered" > return plugins.requireReload(path);</span>
};
SmartfileRequire.init = function (objectArg) {
objectArg.requireReload = requireReload;
};
})(SmartfileRequire || (SmartfileRequire = {}));
/// &lt;reference path="./typings/main.d.ts" /&gt;
/// &lt;reference path="./smartfile.plugins.ts" /&gt;
/// &lt;reference path="./smartfile.check.ts" /&gt;
/// &lt;reference path="./smartfile.simple.ts" /&gt;
/// &lt;reference path="./smartfile.vinyl.ts" /&gt;
/// &lt;reference path="./smartfile.require.ts" /&gt;
var plugins = SmartfilePlugins.init();
var smartfile = {};
SmartfileCheck.init(smartfile);
SmartfileSimple.init(smartfile);
SmartfileVinyl.init(smartfile);
SmartfileRequire.init(smartfile);
module.exports = smartfile;
&nbsp;</pre></td></tr>
</table></pre>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 09 2016 20:50:58 GMT+0100 (CET)
</div>
</div>
<script src="../prettify.js"></script>
<script>
window.onload = function () {
if (typeof prettyPrint === 'function') {
prettyPrint();
}
};
</script>
<script src="../sorter.js"></script>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 B

View File

@ -1,158 +0,0 @@
var addSorting = (function () {
"use strict";
var cols,
currentSort = {
index: 0,
desc: false
};
// returns the summary table element
function getTable() { return document.querySelector('.coverage-summary'); }
// returns the thead element of the summary table
function getTableHeader() { return getTable().querySelector('thead tr'); }
// returns the tbody element of the summary table
function getTableBody() { return getTable().querySelector('tbody'); }
// returns the th element for nth column
function getNthColumn(n) { return getTableHeader().querySelectorAll('th')[n]; }
// loads all columns
function loadColumns() {
var colNodes = getTableHeader().querySelectorAll('th'),
colNode,
cols = [],
col,
i;
for (i = 0; i < colNodes.length; i += 1) {
colNode = colNodes[i];
col = {
key: colNode.getAttribute('data-col'),
sortable: !colNode.getAttribute('data-nosort'),
type: colNode.getAttribute('data-type') || 'string'
};
cols.push(col);
if (col.sortable) {
col.defaultDescSort = col.type === 'number';
colNode.innerHTML = colNode.innerHTML + '<span class="sorter"></span>';
}
}
return cols;
}
// attaches a data attribute to every tr element with an object
// of data values keyed by column name
function loadRowData(tableRow) {
var tableCols = tableRow.querySelectorAll('td'),
colNode,
col,
data = {},
i,
val;
for (i = 0; i < tableCols.length; i += 1) {
colNode = tableCols[i];
col = cols[i];
val = colNode.getAttribute('data-value');
if (col.type === 'number') {
val = Number(val);
}
data[col.key] = val;
}
return data;
}
// loads all row data
function loadData() {
var rows = getTableBody().querySelectorAll('tr'),
i;
for (i = 0; i < rows.length; i += 1) {
rows[i].data = loadRowData(rows[i]);
}
}
// sorts the table using the data for the ith column
function sortByIndex(index, desc) {
var key = cols[index].key,
sorter = function (a, b) {
a = a.data[key];
b = b.data[key];
return a < b ? -1 : a > b ? 1 : 0;
},
finalSorter = sorter,
tableBody = document.querySelector('.coverage-summary tbody'),
rowNodes = tableBody.querySelectorAll('tr'),
rows = [],
i;
if (desc) {
finalSorter = function (a, b) {
return -1 * sorter(a, b);
};
}
for (i = 0; i < rowNodes.length; i += 1) {
rows.push(rowNodes[i]);
tableBody.removeChild(rowNodes[i]);
}
rows.sort(finalSorter);
for (i = 0; i < rows.length; i += 1) {
tableBody.appendChild(rows[i]);
}
}
// removes sort indicators for current column being sorted
function removeSortIndicators() {
var col = getNthColumn(currentSort.index),
cls = col.className;
cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
col.className = cls;
}
// adds sort indicators for current column being sorted
function addSortIndicators() {
getNthColumn(currentSort.index).className += currentSort.desc ? ' sorted-desc' : ' sorted';
}
// adds event listeners for all sorter widgets
function enableUI() {
var i,
el,
ithSorter = function ithSorter(i) {
var col = cols[i];
return function () {
var desc = col.defaultDescSort;
if (currentSort.index === i) {
desc = !currentSort.desc;
}
sortByIndex(i, desc);
removeSortIndicators();
currentSort.index = i;
currentSort.desc = desc;
addSortIndicators();
};
};
for (i =0 ; i < cols.length; i += 1) {
if (cols[i].sortable) {
// add the click event handler on the th so users
// dont have to click on those tiny arrows
el = getNthColumn(i).querySelector('.sorter').parentElement;
if (el.addEventListener) {
el.addEventListener('click', ithSorter(i));
} else {
el.attachEvent('onclick', ithSorter(i));
}
}
}
}
// adds sorting functionality to the UI
return function () {
if (!getTable()) {
return;
}
cols = loadColumns();
loadData(cols);
addSortIndicators();
enableUI();
};
})();
window.addEventListener('load', addSorting);

View File

@ -1,127 +0,0 @@
TN:
SF:/Users/philkunz/github/pushrocks/smartfile/index.js
FN:5,(anonymous_1)
FN:6,(anonymous_2)
FN:22,(anonymous_3)
FN:24,(anonymous_4)
FN:35,(anonymous_5)
FN:37,(anonymous_6)
FN:43,(anonymous_7)
FN:49,(anonymous_8)
FN:55,(anonymous_9)
FN:60,(anonymous_10)
FN:85,(anonymous_11)
FN:92,(anonymous_12)
FN:93,(anonymous_13)
FN:97,(anonymous_14)
FN:103,(anonymous_15)
FN:104,(anonymous_16)
FN:107,(anonymous_17)
FNF:17
FNH:16
FNDA:1,(anonymous_1)
FNDA:1,(anonymous_2)
FNDA:1,(anonymous_3)
FNDA:2,(anonymous_4)
FNDA:3,(anonymous_5)
FNDA:3,(anonymous_6)
FNDA:1,(anonymous_7)
FNDA:1,(anonymous_8)
FNDA:1,(anonymous_9)
FNDA:2,(anonymous_10)
FNDA:1,(anonymous_11)
FNDA:1,(anonymous_12)
FNDA:1,(anonymous_13)
FNDA:1,(anonymous_14)
FNDA:1,(anonymous_15)
FNDA:0,(anonymous_16)
FNDA:1,(anonymous_17)
DA:4,1
DA:5,1
DA:6,1
DA:7,1
DA:17,1
DA:21,1
DA:22,1
DA:23,1
DA:25,2
DA:26,2
DA:27,2
DA:28,1
DA:31,1
DA:33,2
DA:36,3
DA:37,3
DA:38,3
DA:40,3
DA:43,1
DA:44,1
DA:48,1
DA:49,1
DA:55,1
DA:56,1
DA:57,1
DA:58,1
DA:60,1
DA:61,2
DA:62,2
DA:63,2
DA:64,2
DA:67,0
DA:69,2
DA:70,2
DA:73,1
DA:74,1
DA:77,0
DA:79,0
DA:81,1
DA:82,0
DA:85,1
DA:86,1
DA:87,1
DA:91,1
DA:92,1
DA:93,1
DA:94,1
DA:95,1
DA:97,1
DA:98,1
DA:102,1
DA:103,1
DA:104,1
DA:105,0
DA:107,1
DA:108,1
DA:117,1
DA:118,1
DA:119,1
DA:120,1
DA:121,1
DA:122,1
DA:123,1
LF:63
LH:58
BRDA:19,1,0,1
BRDA:19,1,1,1
BRDA:38,2,0,1
BRDA:38,2,1,2
BRDA:46,3,0,1
BRDA:46,3,1,1
BRDA:61,4,0,2
BRDA:61,4,1,0
BRDA:63,5,0,2
BRDA:63,5,1,0
BRDA:70,6,0,0
BRDA:70,6,1,1
BRDA:70,6,2,1
BRDA:89,7,0,1
BRDA:89,7,1,1
BRDA:94,8,0,1
BRDA:94,8,1,0
BRDA:100,9,0,1
BRDA:100,9,1,1
BRDA:110,10,0,1
BRDA:110,10,1,1
BRF:21
BRH:17
end_of_record

22
dist/index.js vendored Normal file
View File

@ -0,0 +1,22 @@
/// <reference path="./typings/main.d.ts" />
"use strict";
var plugins = require("./smartfile.plugins");
var SmartfileChecks = require("./smartfile.checks");
var SmartfileFsaction = require("./smartfile.fsaction");
var SmartfileGet = require("./smartfile.get");
var SmartfileLocal = require("./smartfile.local");
var SmartfileMemory = require("./smartfile.memory");
var SmartfileRemote = require("./smartfile.remote");
var smartfile = {
fsaction: SmartfileFsaction,
fs: plugins.fs,
checks: SmartfileChecks,
get: SmartfileGet,
local: SmartfileLocal,
memory: SmartfileMemory,
remote: SmartfileRemote,
requireReload: SmartfileLocal.requireReload
};
module.exports = smartfile;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRDQUE0Qzs7QUFFNUMsSUFBTyxPQUFPLFdBQVcscUJBQXFCLENBQUMsQ0FBQztBQUNoRCxJQUFPLGVBQWUsV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3ZELElBQU8saUJBQWlCLFdBQVcsc0JBQXNCLENBQUMsQ0FBQztBQUMzRCxJQUFPLFlBQVksV0FBVyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ2pELElBQU8sY0FBYyxXQUFXLG1CQUFtQixDQUFDLENBQUM7QUFDckQsSUFBTyxlQUFlLFdBQVcsb0JBQW9CLENBQUMsQ0FBQztBQUN2RCxJQUFPLGVBQWUsV0FBVyxvQkFBb0IsQ0FBQyxDQUFDO0FBR3ZELElBQUksU0FBUyxHQUFPO0lBQ2hCLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO0lBQ2QsTUFBTSxFQUFFLGVBQWU7SUFDdkIsR0FBRyxFQUFFLFlBQVk7SUFDakIsS0FBSyxFQUFFLGNBQWM7SUFDckIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLGNBQWMsQ0FBQyxhQUFhO0NBQzlDLENBQUM7QUFFRixpQkFBUyxTQUFTLENBQUMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5pbXBvcnQgU21hcnRmaWxlQ2hlY2tzID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLmNoZWNrc1wiKTtcbmltcG9ydCBTbWFydGZpbGVGc2FjdGlvbiA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5mc2FjdGlvblwiKTtcbmltcG9ydCBTbWFydGZpbGVHZXQgPSByZXF1aXJlKFwiLi9zbWFydGZpbGUuZ2V0XCIpO1xuaW1wb3J0IFNtYXJ0ZmlsZUxvY2FsID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLmxvY2FsXCIpO1xuaW1wb3J0IFNtYXJ0ZmlsZU1lbW9yeSA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5tZW1vcnlcIik7XG5pbXBvcnQgU21hcnRmaWxlUmVtb3RlID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnJlbW90ZVwiKTtcblxuXG52YXIgc21hcnRmaWxlOmFueSA9IHtcbiAgICBmc2FjdGlvbjogU21hcnRmaWxlRnNhY3Rpb24sXG4gICAgZnM6IHBsdWdpbnMuZnMsXG4gICAgY2hlY2tzOiBTbWFydGZpbGVDaGVja3MsXG4gICAgZ2V0OiBTbWFydGZpbGVHZXQsXG4gICAgbG9jYWw6IFNtYXJ0ZmlsZUxvY2FsLFxuICAgIG1lbW9yeTogU21hcnRmaWxlTWVtb3J5LFxuICAgIHJlbW90ZTogU21hcnRmaWxlUmVtb3RlLFxuICAgIHJlcXVpcmVSZWxvYWQ6IFNtYXJ0ZmlsZUxvY2FsLnJlcXVpcmVSZWxvYWRcbn07XG5cbmV4cG9ydCA9IHNtYXJ0ZmlsZTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

39
dist/smartfile.checks.js vendored Normal file
View File

@ -0,0 +1,39 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./smartfile.plugins");
/**
*
* @param filePath
* @returns {boolean}
*/
exports.fileExistsSync = function (filePath) {
var fileExistsBool = false;
try {
plugins.fs.readFileSync(filePath);
fileExistsBool = true;
}
catch (err) {
fileExistsBool = false;
}
return fileExistsBool;
};
/**
*
* @param filePath
* @returns {any}
*/
exports.fileExists = function (filePath) {
var done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
});
return done.promise;
};
exports.isDirectory = function (pathArg) {
return plugins.fs.statSync(pathArg).isDirectory();
};
exports.isFile = function (pathArg) {
return plugins.fs.statSync(pathArg).isFile();
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5jaGVja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0QztBQUM1QyxJQUFPLE9BQU8sV0FBVyxxQkFBcUIsQ0FBQyxDQUFDO0FBRWhEOzs7O0dBSUc7QUFDUSxzQkFBYyxHQUFHLFVBQVMsUUFBUTtJQUN6QyxJQUFJLGNBQWMsR0FBVyxLQUFLLENBQUM7SUFDbkMsSUFBSSxDQUFDO1FBQ0QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsY0FBYyxHQUFHLElBQUksQ0FBQTtJQUN6QixDQUNBO0lBQUEsS0FBSyxDQUFBLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQztRQUNQLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNELE1BQU0sQ0FBQyxjQUFjLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNRLGtCQUFVLEdBQUcsVUFBUyxRQUFRO0lBQ3JDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRztRQUN0RCxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVTLG1CQUFXLEdBQUcsVUFBUyxPQUFPO0lBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUN0RCxDQUFDLENBQUM7QUFFUyxjQUFNLEdBQUcsVUFBUyxPQUFPO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNqRCxDQUFDLENBQUMiLCJmaWxlIjoic21hcnRmaWxlLmNoZWNrcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuL3R5cGluZ3MvbWFpbi5kLnRzXCIgLz5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBsZXQgZmlsZUV4aXN0c1N5bmMgPSBmdW5jdGlvbihmaWxlUGF0aCk6Ym9vbGVhbiB7XG4gICAgbGV0IGZpbGVFeGlzdHNCb29sOmJvb2xlYW4gPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBwbHVnaW5zLmZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCk7XG4gICAgICAgIGZpbGVFeGlzdHNCb29sID0gdHJ1ZVxuICAgIH1cbiAgICBjYXRjaChlcnIpe1xuICAgICAgICBmaWxlRXhpc3RzQm9vbCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZUV4aXN0c0Jvb2w7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0gZmlsZVBhdGhcbiAqIEByZXR1cm5zIHthbnl9XG4gKi9cbmV4cG9ydCBsZXQgZmlsZUV4aXN0cyA9IGZ1bmN0aW9uKGZpbGVQYXRoKXtcbiAgICBsZXQgZG9uZSA9IHBsdWdpbnMucS5kZWZlcigpO1xuICAgIHBsdWdpbnMuZnMuYWNjZXNzKGZpbGVQYXRoLCBwbHVnaW5zLmZzLlJfT0ssIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgZXJyID8gZG9uZS5yZWplY3QoKSA6IGRvbmUucmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59O1xuXG5leHBvcnQgbGV0IGlzRGlyZWN0b3J5ID0gZnVuY3Rpb24ocGF0aEFyZyk6Ym9vbGVhbntcbiAgICByZXR1cm4gcGx1Z2lucy5mcy5zdGF0U3luYyhwYXRoQXJnKS5pc0RpcmVjdG9yeSgpO1xufTtcblxuZXhwb3J0IGxldCBpc0ZpbGUgPSBmdW5jdGlvbihwYXRoQXJnKTpib29sZWFue1xuICAgIHJldHVybiBwbHVnaW5zLmZzLnN0YXRTeW5jKHBhdGhBcmcpLmlzRmlsZSgpO1xufTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

27
dist/smartfile.fsaction.js vendored Normal file
View File

@ -0,0 +1,27 @@
/// <reference path="./typings/main.d.ts" />
"use strict";
var plugins = require("./smartfile.plugins");
exports.copy = function (fromArg, toArg) {
var done = plugins.q.defer();
plugins.fs.copy(fromArg, toArg, {}, function () {
done.resolve();
});
return done.promise;
};
exports.copySync = function (fromArg, toArg) {
plugins.fs.copySync(fromArg, toArg);
return true;
};
exports.remove = function (pathArg) {
var done = plugins.q.defer();
plugins.fs.remove(pathArg, function () {
done.resolve();
});
return done.promise;
};
exports.removeSync = function (pathArg) {
plugins.fs.removeSync(pathArg);
return true;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5mc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7O0FBRTVDLElBQU8sT0FBTyxXQUFXLHFCQUFxQixDQUFDLENBQUM7QUFHckMsWUFBSSxHQUFHLFVBQVMsT0FBYyxFQUFFLEtBQVk7SUFDbkQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQztRQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFUyxnQkFBUSxHQUFHLFVBQVMsT0FBYyxFQUFDLEtBQVk7SUFDdEQsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRVMsY0FBTSxHQUFHLFVBQVMsT0FBYztJQUN2QyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQztRQUN0QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFUyxrQkFBVSxHQUFHLFVBQVMsT0FBYztJQUMzQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsImZpbGUiOiJzbWFydGZpbGUuZnNhY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5pbXBvcnQgU21hcnRmaWxlQ2hlY2tzID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLmNoZWNrc1wiKTtcblxuZXhwb3J0IGxldCBjb3B5ID0gZnVuY3Rpb24oZnJvbUFyZzpzdHJpbmcsIHRvQXJnOnN0cmluZyl7XG4gICAgdmFyIGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBwbHVnaW5zLmZzLmNvcHkoZnJvbUFyZyx0b0FyZyx7fSxmdW5jdGlvbigpe1xuICAgICAgICBkb25lLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xufTtcblxuZXhwb3J0IGxldCBjb3B5U3luYyA9IGZ1bmN0aW9uKGZyb21Bcmc6c3RyaW5nLHRvQXJnOnN0cmluZyk6Ym9vbGVhbntcbiAgICBwbHVnaW5zLmZzLmNvcHlTeW5jKGZyb21BcmcsdG9BcmcpO1xuICAgIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGxldCByZW1vdmUgPSBmdW5jdGlvbihwYXRoQXJnOnN0cmluZyl7XG4gICAgdmFyIGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICBwbHVnaW5zLmZzLnJlbW92ZShwYXRoQXJnLGZ1bmN0aW9uKCl7XG4gICAgICAgIGRvbmUucmVzb2x2ZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBkb25lLnByb21pc2U7XG59O1xuXG5leHBvcnQgbGV0IHJlbW92ZVN5bmMgPSBmdW5jdGlvbihwYXRoQXJnOnN0cmluZyk6Ym9vbGVhbntcbiAgICBwbHVnaW5zLmZzLnJlbW92ZVN5bmMocGF0aEFyZyk7XG4gICAgcmV0dXJuIHRydWU7XG59OyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

10
dist/smartfile.get.js vendored Normal file
View File

@ -0,0 +1,10 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./smartfile.plugins");
exports.filetype = function (pathArg) {
var extName = plugins.path.extname(pathArg);
var fileType = extName.replace(/\.([a-z]*)/, "$1"); //remove . form fileType
return fileType;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDRDQUE0QztBQUM1QyxJQUFPLE9BQU8sV0FBVyxxQkFBcUIsQ0FBQyxDQUFDO0FBRXJDLGdCQUFRLEdBQUcsVUFBUyxPQUFjO0lBQ3pDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCO0lBQzNFLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwiZmlsZSI6InNtYXJ0ZmlsZS5nZXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5wbHVnaW5zXCIpO1xuXG5leHBvcnQgbGV0IGZpbGV0eXBlID0gZnVuY3Rpb24ocGF0aEFyZzpzdHJpbmcpOnN0cmluZyB7XG4gICAgbGV0IGV4dE5hbWUgPSBwbHVnaW5zLnBhdGguZXh0bmFtZShwYXRoQXJnKTtcbiAgICBsZXQgZmlsZVR5cGUgPSBleHROYW1lLnJlcGxhY2UoL1xcLihbYS16XSopLyxcIiQxXCIpOyAvL3JlbW92ZSAuIGZvcm0gZmlsZVR5cGVcbiAgICByZXR1cm4gZmlsZVR5cGU7XG59OyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

17
dist/smartfile.interpreter.js vendored Normal file
View File

@ -0,0 +1,17 @@
/// <reference path="./typings/main.d.ts" />
"use strict";
var plugins = require("./smartfile.plugins");
module.exports = function (fileStringArg, fileTypeArg) {
switch (fileTypeArg) {
case "yml":
case "yaml":
return plugins.yaml.safeLoad(fileStringArg);
case "json":
return JSON.parse(fileStringArg);
default:
plugins.beautylog.error("file type " + fileTypeArg.blue + " not supported");
break;
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5pbnRlcnByZXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7O0FBRTVDLElBQU8sT0FBTyxXQUFXLHFCQUFxQixDQUFDLENBQUM7QUFFaEQsaUJBQVMsVUFBUyxhQUFvQixFQUFFLFdBQVc7SUFDL0MsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNsQixLQUFLLEtBQUssQ0FBRTtRQUNaLEtBQUssTUFBTTtZQUNQLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU07WUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQztZQUNJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUM7WUFDNUUsS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNMLENBQUMsQ0FBQSIsImZpbGUiOiJzbWFydGZpbGUuaW50ZXJwcmV0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi90eXBpbmdzL21haW4uZC50c1wiIC8+XG5cbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vc21hcnRmaWxlLnBsdWdpbnNcIik7XG5cbmV4cG9ydCA9IGZ1bmN0aW9uKGZpbGVTdHJpbmdBcmc6c3RyaW5nLCBmaWxlVHlwZUFyZyl7XG4gICAgc3dpdGNoIChmaWxlVHlwZUFyZykge1xuICAgICAgICBjYXNlIFwieW1sXCIgOlxuICAgICAgICBjYXNlIFwieWFtbFwiOlxuICAgICAgICAgICAgcmV0dXJuIHBsdWdpbnMueWFtbC5zYWZlTG9hZChmaWxlU3RyaW5nQXJnKTtcbiAgICAgICAgY2FzZSBcImpzb25cIjpcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGZpbGVTdHJpbmdBcmcpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcGx1Z2lucy5iZWF1dHlsb2cuZXJyb3IoXCJmaWxlIHR5cGUgXCIgKyBmaWxlVHlwZUFyZy5ibHVlICsgXCIgbm90IHN1cHBvcnRlZFwiKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbn0iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

62
dist/smartfile.local.js vendored Normal file
View File

@ -0,0 +1,62 @@
/// <reference path="./typings/main.d.ts" />
"use strict";
var plugins = require("./smartfile.plugins");
var SmartfileGet = require("./smartfile.get");
var SmartfileInterpreter = require("./smartfile.interpreter");
exports.toFS = function (options, cb) {
if (cb === void 0) { cb = undefined; }
};
/**
*
* @param filePathArg
* @returns {*}
*/
exports.toGulpStreamSync = function (filePathArg) {
var stream = plugins.gulp.src(filePathArg);
return stream;
};
exports.toGulpDestSync = function (folderPathArg) {
return plugins.gulp.dest(folderPathArg);
};
/**
*
* @param filePathArg
* @param fileTypeArg
* @returns {any}
*/
exports.toObjectSync = function (filePathArg, fileTypeArg) {
var fileString = plugins.fs.readFileSync(filePathArg, 'utf8');
var fileType;
fileTypeArg ? fileType = fileTypeArg : fileType = SmartfileGet.filetype(filePathArg);
return SmartfileInterpreter(fileString, fileType);
};
/**
* reads a file content to a String
* @param filePath
* @returns {string|Buffer|any}
*/
exports.toStringSync = function (filePath) {
var fileString;
fileString = plugins.fs.readFileSync(filePath, "utf8");
return fileString;
};
/**
*
* @param filePathArg
* @param options
* @returns {number}
*/
exports.toVinylSync = function (filePathArg, options) {
if (options === void 0) { options = {}; }
return plugins.vinylFile.readSync(filePathArg, options);
};
/**
* lets you reload files hot.
* @param path
* @returns {any}
*/
exports.requireReload = function (path) {
return plugins.requireReload(path);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5sb2NhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0Q0FBNEM7O0FBRTVDLElBQU8sT0FBTyxXQUFXLHFCQUFxQixDQUFDLENBQUM7QUFDaEQsSUFBTyxZQUFZLFdBQVcsaUJBQWlCLENBQUMsQ0FBQztBQUNqRCxJQUFPLG9CQUFvQixXQUFXLHlCQUF5QixDQUFDLENBQUM7QUFDdEQsWUFBSSxHQUFHLFVBQVMsT0FBbUMsRUFBRSxFQUFZO0lBQVosa0JBQVksR0FBWixjQUFZO0FBRTVFLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDUSx3QkFBZ0IsR0FBRyxVQUFTLFdBQWtCO0lBQ3JELElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRVMsc0JBQWMsR0FBRyxVQUFTLGFBQW9CO0lBQ3JELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNRLG9CQUFZLEdBQUcsVUFBUyxXQUFXLEVBQUMsV0FBWTtJQUN2RCxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUQsSUFBSSxRQUFRLENBQUM7SUFDYixXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRixNQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDUSxvQkFBWSxHQUFHLFVBQVMsUUFBUTtJQUN2QyxJQUFJLFVBQVUsQ0FBQztJQUNmLFVBQVUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUN0QixDQUFDLENBQUM7QUFFRjs7Ozs7R0FLRztBQUNRLG1CQUFXLEdBQUcsVUFBUyxXQUFXLEVBQUMsT0FBWTtJQUFaLHVCQUFZLEdBQVosWUFBWTtJQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNELENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDUSxxQkFBYSxHQUFHLFVBQVMsSUFBVztJQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMiLCJmaWxlIjoic21hcnRmaWxlLmxvY2FsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuXG5pbXBvcnQgcGx1Z2lucyA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5wbHVnaW5zXCIpO1xuaW1wb3J0IFNtYXJ0ZmlsZUdldCA9IHJlcXVpcmUoXCIuL3NtYXJ0ZmlsZS5nZXRcIik7XG5pbXBvcnQgU21hcnRmaWxlSW50ZXJwcmV0ZXIgPSByZXF1aXJlKFwiLi9zbWFydGZpbGUuaW50ZXJwcmV0ZXJcIik7XG5leHBvcnQgbGV0IHRvRlMgPSBmdW5jdGlvbihvcHRpb25zOntmcm9tOnN0cmluZyx0b1BhdGg6c3RyaW5nfSwgY2I9dW5kZWZpbmVkKXtcbiAgICBcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aEFyZ1xuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBsZXQgdG9HdWxwU3RyZWFtU3luYyA9IGZ1bmN0aW9uKGZpbGVQYXRoQXJnOnN0cmluZyl7XG4gICAgbGV0IHN0cmVhbSA9IHBsdWdpbnMuZ3VscC5zcmMoZmlsZVBhdGhBcmcpO1xuICAgIHJldHVybiBzdHJlYW07XG59O1xuXG5leHBvcnQgbGV0IHRvR3VscERlc3RTeW5jID0gZnVuY3Rpb24oZm9sZGVyUGF0aEFyZzpzdHJpbmcpe1xuICAgIHJldHVybiBwbHVnaW5zLmd1bHAuZGVzdChmb2xkZXJQYXRoQXJnKTtcbn07XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBmaWxlUGF0aEFyZ1xuICogQHBhcmFtIGZpbGVUeXBlQXJnXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5leHBvcnQgbGV0IHRvT2JqZWN0U3luYyA9IGZ1bmN0aW9uKGZpbGVQYXRoQXJnLGZpbGVUeXBlQXJnPykge1xuICAgIGxldCBmaWxlU3RyaW5nID0gcGx1Z2lucy5mcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGhBcmcsICd1dGY4Jyk7XG4gICAgbGV0IGZpbGVUeXBlO1xuICAgIGZpbGVUeXBlQXJnID8gZmlsZVR5cGUgPSBmaWxlVHlwZUFyZyA6IGZpbGVUeXBlID0gU21hcnRmaWxlR2V0LmZpbGV0eXBlKGZpbGVQYXRoQXJnKTtcbiAgICByZXR1cm4gU21hcnRmaWxlSW50ZXJwcmV0ZXIoZmlsZVN0cmluZyxmaWxlVHlwZSk7XG59O1xuXG4vKipcbiAqIHJlYWRzIGEgZmlsZSBjb250ZW50IHRvIGEgU3RyaW5nXG4gKiBAcGFyYW0gZmlsZVBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd8QnVmZmVyfGFueX1cbiAqL1xuZXhwb3J0IGxldCB0b1N0cmluZ1N5bmMgPSBmdW5jdGlvbihmaWxlUGF0aCkge1xuICAgIGxldCBmaWxlU3RyaW5nO1xuICAgIGZpbGVTdHJpbmcgPSBwbHVnaW5zLmZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGY4XCIpO1xuICAgIHJldHVybiBmaWxlU3RyaW5nO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIGZpbGVQYXRoQXJnXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGxldCB0b1ZpbnlsU3luYyA9IGZ1bmN0aW9uKGZpbGVQYXRoQXJnLG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiBwbHVnaW5zLnZpbnlsRmlsZS5yZWFkU3luYyhmaWxlUGF0aEFyZyxvcHRpb25zKTtcbn07XG5cbi8qKlxuICogbGV0cyB5b3UgcmVsb2FkIGZpbGVzIGhvdC5cbiAqIEBwYXJhbSBwYXRoXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5leHBvcnQgbGV0IHJlcXVpcmVSZWxvYWQgPSBmdW5jdGlvbihwYXRoOnN0cmluZyl7XG4gICAgcmV0dXJuIHBsdWdpbnMucmVxdWlyZVJlbG9hZChwYXRoKTtcbn07Il0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9

117
dist/smartfile.memory.js vendored Normal file

File diff suppressed because one or more lines are too long

17
dist/smartfile.plugins.js vendored Normal file
View File

@ -0,0 +1,17 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
exports.beautylog = require("beautylog");
exports.fs = require("fs-extra");
exports.gulp = require("gulp");
exports.g = {
remoteSrc: require("gulp-remote-src")
};
exports.path = require("path");
exports.q = require("q");
exports.vinyl = require("vinyl");
exports.vinylFile = require("vinyl-file");
exports.yaml = require("js-yaml");
exports.request = require("request");
exports.requireReload = require("require-reload");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0ZmlsZS5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0Q0FBNEM7QUFDakMsaUJBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakMsVUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QixZQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLFNBQUMsR0FBRztJQUNYLFNBQVMsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7Q0FDeEMsQ0FBQztBQUNZLFlBQUksV0FBVyxNQUFNLENBQUMsQ0FBQztBQUMxQixTQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsYUFBSyxXQUFXLE9BQU8sQ0FBQyxDQUFDO0FBQzVCLGlCQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2xDLFlBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUIsZUFBTyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixxQkFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDIiwiZmlsZSI6InNtYXJ0ZmlsZS5wbHVnaW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9tYWluLmQudHNcIiAvPlxuZXhwb3J0IGxldCBiZWF1dHlsb2cgPSByZXF1aXJlKFwiYmVhdXR5bG9nXCIpO1xuZXhwb3J0IGxldCBmcyA9IHJlcXVpcmUoXCJmcy1leHRyYVwiKTtcbmV4cG9ydCBsZXQgZ3VscCA9IHJlcXVpcmUoXCJndWxwXCIpO1xuZXhwb3J0IGxldCBnID0ge1xuICAgIHJlbW90ZVNyYzogcmVxdWlyZShcImd1bHAtcmVtb3RlLXNyY1wiKVxufTtcbmV4cG9ydCBpbXBvcnQgcGF0aCA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuZXhwb3J0IGxldCBxID0gcmVxdWlyZShcInFcIik7XG5leHBvcnQgaW1wb3J0IHZpbnlsID0gcmVxdWlyZShcInZpbnlsXCIpO1xuZXhwb3J0IGxldCB2aW55bEZpbGUgPSByZXF1aXJlKFwidmlueWwtZmlsZVwiKTtcbmV4cG9ydCBsZXQgeWFtbCA9IHJlcXVpcmUoXCJqcy15YW1sXCIpO1xuZXhwb3J0IGxldCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XG5leHBvcnQgbGV0IHJlcXVpcmVSZWxvYWQgPSByZXF1aXJlKFwicmVxdWlyZS1yZWxvYWRcIik7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

68
dist/smartfile.remote.js vendored Normal file

File diff suppressed because one or more lines are too long

36
index.d.ts vendored
View File

@ -1,36 +0,0 @@
/// <reference path="ts/typings/main.d.ts" />
declare module SmartfilePlugins {
var init: () => {
beautylog: any;
fs: any;
path: any;
q: any;
vinyl: any;
vinylFile: any;
yaml: any;
requireReload: any;
};
}
declare module SmartfileCheck {
var init: (objectArg: any) => void;
}
declare module SmartfileSimple {
var init: (objectArg: any) => void;
}
declare module SmartfileVinyl {
var init: (objectArg: any) => void;
}
declare module SmartfileRequire {
var init: (objectArg: any) => void;
}
declare var plugins: {
beautylog: any;
fs: any;
path: any;
q: any;
vinyl: any;
vinylFile: any;
yaml: any;
requireReload: any;
};
declare var smartfile: any;

123
index.js
View File

@ -1,123 +0,0 @@
#!/usr/bin/env node
/// <reference path="./index.ts" />
var SmartfilePlugins;
(function (SmartfilePlugins) {
SmartfilePlugins.init = function () {
var plugins = {
beautylog: require("beautylog"),
fs: require("fs-extra"),
path: require("path"),
q: require("q"),
vinyl: require("vinyl"),
vinylFile: require("vinyl-file"),
yaml: require("js-yaml"),
requireReload: require("require-reload")
};
return plugins;
};
})(SmartfilePlugins || (SmartfilePlugins = {}));
/// <reference path="./index.ts" />
var SmartfileCheck;
(function (SmartfileCheck) {
var checks = {
fileExistsSync: function (filePath) {
var fileExistsBool = false;
try {
plugins.fs.readFileSync(filePath);
fileExistsBool = true;
}
catch (err) {
fileExistsBool = false;
}
return fileExistsBool;
},
fileExists: function (filePath) {
var done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
});
return done.promise;
}
};
SmartfileCheck.init = function (objectArg) {
objectArg.checks = checks;
};
})(SmartfileCheck || (SmartfileCheck = {}));
/// <reference path="./index.ts" />
var SmartfileSimple;
(function (SmartfileSimple) {
/**
* reads a file content to a String
* @param filePath
* @returns {string|Buffer|any}
*/
var readFileToString = function (filePath) {
var fileString;
fileString = plugins.fs.readFileSync(filePath, "utf8");
return fileString;
};
var readFileToObject = function (filePath, fileTypeArg) {
if (fileTypeArg === void 0) { fileTypeArg = "undefined"; }
var fileType;
if (fileTypeArg == "undefined") {
fileType = plugins.path.extname(filePath);
}
else {
fileType = fileTypeArg;
}
fileType = fileType.replace(/\.([a-z]*)/, "$1"); //remove . form fileType
switch (fileType) {
case "yml":
case "yaml":
try {
return plugins.yaml.safeLoad(plugins.fs.readFileSync(filePath, 'utf8'));
}
catch (e) {
plugins.beautylog.error("check that " + filePath.blue + " points to a valid file");
}
break;
case "json":
return plugins.fs.readJsonSync(filePath, {});
break;
}
};
SmartfileSimple.init = function (objectArg) {
objectArg.readFileToString = readFileToString;
objectArg.readFileToObject = readFileToObject;
};
})(SmartfileSimple || (SmartfileSimple = {}));
/// <reference path="./index.ts" />
var SmartfileVinyl;
(function (SmartfileVinyl) {
var readFileToVinyl = function (filePathArg, options) {
if (options === void 0) { options = {}; }
return plugins.vinylFile.readSync(filePathArg, options);
};
SmartfileVinyl.init = function (objectArg) {
objectArg.readFileToVinyl = readFileToVinyl;
};
})(SmartfileVinyl || (SmartfileVinyl = {}));
/// <reference path="./index.ts" />
var SmartfileRequire;
(function (SmartfileRequire) {
var requireReload = function (path) {
return plugins.requireReload(path);
};
SmartfileRequire.init = function (objectArg) {
objectArg.requireReload = requireReload;
};
})(SmartfileRequire || (SmartfileRequire = {}));
/// <reference path="./typings/main.d.ts" />
/// <reference path="./smartfile.plugins.ts" />
/// <reference path="./smartfile.check.ts" />
/// <reference path="./smartfile.simple.ts" />
/// <reference path="./smartfile.vinyl.ts" />
/// <reference path="./smartfile.require.ts" />
var plugins = SmartfilePlugins.init();
var smartfile = {};
SmartfileCheck.init(smartfile);
SmartfileSimple.init(smartfile);
SmartfileVinyl.init(smartfile);
SmartfileRequire.init(smartfile);
module.exports = smartfile;

View File

@ -1,4 +1,5 @@
{
"mode":"default",
"coveralls":true
"codecov":true,
"coverageTreshold":80
}

View File

@ -1,8 +1,8 @@
{
"name": "smartfile",
"version": "0.0.12",
"version": "3.0.2",
"description": "offers smart ways to work with files in nodejs",
"main": "index.js",
"main": "dist/index.js",
"scripts": {
"test": "(npmts)",
"reinstall": "(rm -r node_modules && npm install)",
@ -25,17 +25,20 @@
},
"homepage": "https://github.com/pushrocks/smartfile",
"dependencies": {
"beautylog": "2.0.6",
"fs-extra": "0.26.5",
"js-yaml": "3.5.2",
"beautylog": "^4.1.0",
"fs-extra": "^0.26.7",
"gulp": "^3.9.1",
"gulp-remote-src": "^0.4.1",
"js-yaml": "^3.5.5",
"q": "^1.4.1",
"request": "^2.69.0",
"require-reload": "0.2.2",
"vinyl": "1.1.1",
"vinyl-file": "2.0.0"
"vinyl": "^1.1.1",
"vinyl-file": "^2.0.0"
},
"devDependencies": {
"beautylog": "2.0.7",
"npmts": "2.2.2",
"should": "^8.2.2"
"gulp-function": "^1.2.3",
"npmts": "^5.0.1",
"should": "^8.3.0"
}
}

5
test/test.d.ts vendored
View File

@ -1,5 +0,0 @@
/// <reference path="ts/typings/main.d.ts" />
declare var smartfile: any;
declare var beautylog: any;
declare var should: any;
declare var vinyl: any;

File diff suppressed because one or more lines are too long

1
test/test.js.map Normal file

File diff suppressed because one or more lines are too long

182
test/test.ts Normal file
View File

@ -0,0 +1,182 @@
/// <reference path="../ts/typings/main.d.ts" />
let smartfile = require("../dist/index.js");
let beautylog = require("beautylog");
let gulp = require("gulp");
let gFunction = require("gulp-function");
import should = require("should");
let vinyl = require("vinyl");
describe("smartfile".yellow,function(){
describe(".checks".yellow,function(){
describe(".fileExistsSync".yellow,function(){
it("should return an accurate boolean",function(){
(smartfile.checks.fileExistsSync("./test/mytest.json")).should.be.true();
(smartfile.checks.fileExistsSync("./test/notthere.json")).should.be.false();
});
});
describe(".fileExists".yellow,function(){
it("should return a working promise",function(){
(smartfile.checks.fileExists("./test/mytest.json")).should.be.Promise();
(smartfile.checks.fileExists("./test/mytest.json")).should.be.fulfilled();
(smartfile.checks.fileExists("./test/notthere.json")).should.not.be.fulfilled();
});
})
});
describe(".fsaction".yellow,function(){
describe(".copy()".yellow,function(){
it("should copy a directory",function(){
smartfile.fsaction.copy("./test/testfolder/","./test/temp/")
});
it("should copy a file",function(){
smartfile.fsaction.copy("./test/mytest.yaml","./test/temp/")
});
it("should copy a file and rename it",function(){
smartfile.fsaction.copy("./test/mytest.yaml","./test/temp/mytestRenamed.yaml")
});
});
describe(".remove()",function(){
it("should remove an entire directory",function(){
});
it("should remove single files",function(){
});
});
});
describe(".local".yellow,function(){
describe("toGulpStreamSync() and toGulpDestSync",function(){
it("should produce a gulp stream",function(done){
smartfile.local.toGulpStreamSync("./test/my*")
.pipe(smartfile.local.toGulpDestSync("./test/temp/"))
.pipe(gFunction(done,"atEnd"));
});
});
describe(".toObjectSync()".yellow,function(){
it("should read an " + ".yaml".blue + " file to an object",function(){
let testData = smartfile.local.toObjectSync("./test/mytest.yaml");
testData.should.have.property("key1","this works");
testData.should.have.property("key2","this works too");
});
it("should state unknown file type for unknown file types",function(){
let testData = smartfile.local.toObjectSync("./test/mytest.txt");
});
it("should read an " + ".json".blue + " file to an object",function(){
let testData = smartfile.local.toObjectSync("./test/mytest.json");
testData.should.have.property("key1","this works");
testData.should.have.property("key2","this works too");
});
});
describe(".toStringSync()".yellow,function(){
it("should read a file to a string",function(){
should.equal(
smartfile.local.toStringSync("./test/mytest.txt"),
"Some TestString &&%$"
);
});
});
describe(".toVinylSync".yellow,function(){
it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan,function(){
let testData = smartfile.local.toVinylSync("./test/mytest.json");
(vinyl.isVinyl(testData)).should.be.true();
});
});
});
describe(".memory",function(){
describe(".toGulpStream()",function(){
it("should produce a valid gulp stream",function(){
let localArray = ["test1","test2","test3"];
smartfile.memory.toGulpStream(localArray)
.pipe(gulp.dest("./test/temp/"));
});
});
describe("toVinylFileSync()",function(){
it("should produce a vinylFile",function(){
let localString = "myString";
let localOptions = {filename:"vinylfile2",base:"/someDir"};
(smartfile.memory.toVinylFileSync(localString,localOptions) instanceof vinyl).should.be.true();
});
});
describe("toVinylArraySync()",function(){
it("should produce a an array of vinylfiles",function(){
let localStringArray = ["string1","string2","string3"];
let localOptions = {filename:"vinylfile2",base:"/someDir"};
let testResult = smartfile.memory.toVinylArraySync(localStringArray,localOptions);
testResult.should.be.Array();
(testResult.length === 3).should.be.true();
for (let myKey in testResult){
(testResult[myKey] instanceof vinyl).should.be.true();
}
});
});
describe("toStringSync()",function(){
it("should produce a String from vinyl file",function(){
let localString = smartfile.memory.toStringSync(new vinyl({
base:"/",
path:"/test.txt",
contents: new Buffer("myString")
}));
localString.should.equal("myString");
});
});
describe("toFs()",function(){
it("should write a file to disk and return a promise",function(done){
let localString = "myString";
smartfile.memory.toFs(
localString,
{
fileName:"./test/temp/testMemToFs.txt",
filePath:process.cwd()
}
).then(done);
});
});
describe("toFsSync()",function(){
it("should write a file to disk and return true if successfull",function(){
let localString = "myString";
smartfile.memory.toFsSync(
localString,{
fileName:"./test/temp/testMemToFsSync.txt",
filePath:process.cwd()
}
);
});
});
});
describe(".remote",function(){
describe("toGulpStreamSync()",function(){
it("should produce a gulp stream",function(done){
smartfile.remote.toGulpStreamSync("mytest.txt","https://raw.githubusercontent.com/pushrocks/smartfile/master/test/")
.pipe(smartfile.local.toGulpDestSync("./test/temp/"))
.pipe(gFunction(done,"atEnd"));
});
});
describe(".toString()",function(){
it("should load a remote file to a variable",function(done){
this.timeout(5000);
smartfile.remote.toString("https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt")
.then(function(responseString){
should.equal(responseString,"Some TestString &&%$");
done();
});
});
it("should reject a Promise when the link is false",function(done){
this.timeout(10000);
smartfile.remote.toString("https://push.rocks/doesnotexist.txt")
.then(function(){
throw new Error("this test should not be resolved");
},function(){
done();
})
});
});
})
});

View File

View File

View File

@ -1,19 +1,23 @@
/// <reference path="./typings/main.d.ts" />
/// <reference path="./smartfile.plugins.ts" />
/// <reference path="./smartfile.check.ts" />
/// <reference path="./smartfile.simple.ts" />
/// <reference path="./smartfile.vinyl.ts" />
/// <reference path="./smartfile.require.ts" />
var plugins = SmartfilePlugins.init();
import plugins = require("./smartfile.plugins");
import SmartfileChecks = require("./smartfile.checks");
import SmartfileFsaction = require("./smartfile.fsaction");
import SmartfileGet = require("./smartfile.get");
import SmartfileLocal = require("./smartfile.local");
import SmartfileMemory = require("./smartfile.memory");
import SmartfileRemote = require("./smartfile.remote");
var smartfile:any = {};
SmartfileCheck.init(smartfile);
SmartfileSimple.init(smartfile);
SmartfileVinyl.init(smartfile);
SmartfileRequire.init(smartfile);
var smartfile:any = {
fsaction: SmartfileFsaction,
fs: plugins.fs,
checks: SmartfileChecks,
get: SmartfileGet,
local: SmartfileLocal,
memory: SmartfileMemory,
remote: SmartfileRemote,
requireReload: SmartfileLocal.requireReload
};
module.exports = smartfile;
export = smartfile;

View File

@ -1,26 +0,0 @@
/// <reference path="./index.ts" />
module SmartfileCheck {
var checks = {
fileExistsSync: function(filePath):boolean {
var fileExistsBool:boolean = false;
try {
plugins.fs.readFileSync(filePath)
fileExistsBool = true
}
catch(err){
fileExistsBool = false;
}
return fileExistsBool;
},
fileExists: function(filePath){
var done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
});
return done.promise;
}
};
export var init = function(objectArg){
objectArg.checks = checks;
}
}

40
ts/smartfile.checks.ts Normal file
View File

@ -0,0 +1,40 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
/**
*
* @param filePath
* @returns {boolean}
*/
export let fileExistsSync = function(filePath):boolean {
let fileExistsBool:boolean = false;
try {
plugins.fs.readFileSync(filePath);
fileExistsBool = true
}
catch(err){
fileExistsBool = false;
}
return fileExistsBool;
};
/**
*
* @param filePath
* @returns {any}
*/
export let fileExists = function(filePath){
let done = plugins.q.defer();
plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject() : done.resolve();
});
return done.promise;
};
export let isDirectory = function(pathArg):boolean{
return plugins.fs.statSync(pathArg).isDirectory();
};
export let isFile = function(pathArg):boolean{
return plugins.fs.statSync(pathArg).isFile();
};

30
ts/smartfile.fsaction.ts Normal file
View File

@ -0,0 +1,30 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
import SmartfileChecks = require("./smartfile.checks");
export let copy = function(fromArg:string, toArg:string){
var done = plugins.q.defer();
plugins.fs.copy(fromArg,toArg,{},function(){
done.resolve();
});
return done.promise;
};
export let copySync = function(fromArg:string,toArg:string):boolean{
plugins.fs.copySync(fromArg,toArg);
return true;
};
export let remove = function(pathArg:string){
var done = plugins.q.defer();
plugins.fs.remove(pathArg,function(){
done.resolve();
});
return done.promise;
};
export let removeSync = function(pathArg:string):boolean{
plugins.fs.removeSync(pathArg);
return true;
};

8
ts/smartfile.get.ts Normal file
View File

@ -0,0 +1,8 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
export let filetype = function(pathArg:string):string {
let extName = plugins.path.extname(pathArg);
let fileType = extName.replace(/\.([a-z]*)/,"$1"); //remove . form fileType
return fileType;
};

View File

@ -0,0 +1,16 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
export = function(fileStringArg:string, fileTypeArg){
switch (fileTypeArg) {
case "yml" :
case "yaml":
return plugins.yaml.safeLoad(fileStringArg);
case "json":
return JSON.parse(fileStringArg);
default:
plugins.beautylog.error("file type " + fileTypeArg.blue + " not supported");
break;
}
}

65
ts/smartfile.local.ts Normal file
View File

@ -0,0 +1,65 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
import SmartfileGet = require("./smartfile.get");
import SmartfileInterpreter = require("./smartfile.interpreter");
export let toFS = function(options:{from:string,toPath:string}, cb=undefined){
};
/**
*
* @param filePathArg
* @returns {*}
*/
export let toGulpStreamSync = function(filePathArg:string){
let stream = plugins.gulp.src(filePathArg);
return stream;
};
export let toGulpDestSync = function(folderPathArg:string){
return plugins.gulp.dest(folderPathArg);
};
/**
*
* @param filePathArg
* @param fileTypeArg
* @returns {any}
*/
export let toObjectSync = function(filePathArg,fileTypeArg?) {
let fileString = plugins.fs.readFileSync(filePathArg, 'utf8');
let fileType;
fileTypeArg ? fileType = fileTypeArg : fileType = SmartfileGet.filetype(filePathArg);
return SmartfileInterpreter(fileString,fileType);
};
/**
* reads a file content to a String
* @param filePath
* @returns {string|Buffer|any}
*/
export let toStringSync = function(filePath) {
let fileString;
fileString = plugins.fs.readFileSync(filePath, "utf8");
return fileString;
};
/**
*
* @param filePathArg
* @param options
* @returns {number}
*/
export let toVinylSync = function(filePathArg,options = {}) {
return plugins.vinylFile.readSync(filePathArg,options);
};
/**
* lets you reload files hot.
* @param path
* @returns {any}
*/
export let requireReload = function(path:string){
return plugins.requireReload(path);
};

121
ts/smartfile.memory.ts Normal file
View File

@ -0,0 +1,121 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
let Readable = require("stream").Readable;
/**
* allows you to create a gulp stream from filestring
* @param fileArg
* @returns stream.Readable
* @TODO: make it async;
*/
export let toGulpStream = function(fileArg:string|string[]|plugins.vinyl|plugins.vinyl[],baseArg:string = "/"){
let fileArray = [];
if(typeof fileArg === "string" || fileArg instanceof plugins.vinyl){ // make sure we work with an array later on
fileArray.push(fileArg);
} else if (Array.isArray(fileArg)){
fileArray = fileArg;
} else {
throw new Error("fileArg has unknown format");
}
let vinylFileArray:plugins.vinyl[] = []; //we want to have an array of vinylFiles
for (let fileIndexArg in fileArray){ //convert fileArray in vinylArray
let file = fileArray[fileIndexArg];
file instanceof plugins.vinyl ?
vinylFileArray.push(file) :
vinylFileArray.push(toVinylFileSync(file,{filename:fileIndexArg,base:baseArg}));
};
let stream = new Readable({ objectMode: true });
for(let vinylFileIndexArg in vinylFileArray){
let vinylFile = vinylFileArray[vinylFileIndexArg];
stream.push(vinylFile);
};
stream.push(null); //signal end of stream;
return stream;
};
/**
* takes a string and converts it to vinyl file
* @param fileArg
* @param optionsArg
*/
export let toVinylFileSync = function(fileArg:string,optionsArg?:{filename?:string,base?:string,relPath?:string}){
optionsArg? void(0) : optionsArg = {filename: "vinylfile", base: "/"};
optionsArg.filename ? void(0) : optionsArg.filename = "vinylfile";
optionsArg.base ? void(0) : optionsArg.base = "/";
optionsArg.relPath ? void("0") : optionsArg.relPath = "";
let vinylFile = new plugins.vinyl({
base: optionsArg.base,
path: plugins.path.join(optionsArg.base,optionsArg.relPath,optionsArg.filename),
contents: new Buffer(fileArg)
});
return vinylFile;
};
/**
* takes a string array and some options and returns a vinylfile array
* @param arrayArg
* @param optionsArg
*/
export let toVinylArraySync = function(arrayArg:string[],optionsArg?:{filename?:string,base?:string,relPath?:string}){
let vinylArray = [];
for(let stringIndexArg in arrayArg){
let myString = arrayArg[stringIndexArg];
vinylArray.push(toVinylFileSync(myString,optionsArg));
}
return vinylArray;
};
/**
* takes a vinylFile object and converts it to String
*/
export let toStringSync = function(fileArg:plugins.vinyl){
return fileArg.contents.toString("utf8");
};
/**
* writes string or vinyl file to disk.
* @param fileArg
* @param fileNameArg
* @param fileBaseArg
*/
export let toFs = function(fileArg,optionsArg:{fileName:string,filePath:string}){
let done = plugins.q.defer();
//function checks to abort if needed
if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
throw new Error("expected a valid arguments");
if (!(typeof optionsArg.filePath === "string")) optionsArg.filePath = "/";
let filePath:string = plugins.path.join(optionsArg.filePath,optionsArg.fileName);
let fileString:string;
if (fileArg instanceof plugins.vinyl){
fileString = toStringSync(fileArg);
} else if (typeof fileArg === "string") {
fileString = fileArg;
}
plugins.fs.writeFile(filePath,fileString,"utf8",done.resolve);
return done.promise;
};
export let toFsSync = function(fileArg,optionsArg:{fileName:string,filePath:string}){
//function checks to abort if needed
if (!fileArg || !optionsArg || !(typeof optionsArg.fileName === "string"))
throw new Error("expected a valid arguments");
if (!(typeof optionsArg.filePath === "string")) optionsArg.filePath = "/";
let filePath = plugins.path.join(optionsArg.filePath,optionsArg.fileName);
let fileString:string;
if (fileArg instanceof plugins.vinyl){
fileString = toStringSync(fileArg);
} else if (typeof fileArg === "string") {
fileString = fileArg;
}
plugins.fs.writeFileSync(filePath,fileString,"utf8");
};

View File

@ -1,16 +1,14 @@
/// <reference path="./index.ts" />
module SmartfilePlugins {
export var init = function() {
var plugins = {
beautylog: require("beautylog"),
fs: require("fs-extra"),
path: require("path"),
q: require("q"),
vinyl: require("vinyl"),
vinylFile: require("vinyl-file"),
yaml: require("js-yaml"),
requireReload: require("require-reload")
};
return plugins;
}
}
/// <reference path="./typings/main.d.ts" />
export let beautylog = require("beautylog");
export let fs = require("fs-extra");
export let gulp = require("gulp");
export let g = {
remoteSrc: require("gulp-remote-src")
};
export import path = require("path");
export let q = require("q");
export import vinyl = require("vinyl");
export let vinylFile = require("vinyl-file");
export let yaml = require("js-yaml");
export let request = require("request");
export let requireReload = require("require-reload");

66
ts/smartfile.remote.ts Normal file
View File

@ -0,0 +1,66 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./smartfile.plugins");
import SmartfileInterpreter = require("./smartfile.interpreter");
import SmartfileGet = require("./smartfile.get");
export let toFs = function(from:string,toPath:string) {
var done = plugins.q.defer();
var stream = plugins.request(from).pipe(plugins.fs.createWriteStream(toPath));
stream.on('finish',function(){
done.resolve(toPath);
});
return done.promise;
};
/**
*
* @param filePathArg
* @returns {*}
*/
export let toGulpStreamSync = function(filePathArg:string,baseArg:string){
let stream = plugins.g.remoteSrc(filePathArg, {
base: baseArg
});
return stream;
};
/**
*
* @param fromArg
* @returns {any}
*/
export let toObject = function(fromArg:string){
let done = plugins.q.defer();
plugins.request.get(fromArg, function (error, response, bodyString) {
let returnObject;
if (!error && response.statusCode == 200) {
returnObject = SmartfileInterpreter(bodyString,SmartfileGet.filetype(fromArg));
done.resolve(returnObject);
} else {
console.log('could not get remote file from ' + fromArg);
returnObject = undefined;
done.reject(returnObject);
};
});
return done.promise;
};
/**
*
* @param fromArg
* @returns {any}
*/
export let toString = (fromArg:string) => {
let done = plugins.q.defer();
plugins.request.get(fromArg, function (error, response, bodyString) {
if (!error && response.statusCode == 200) {
done.resolve(bodyString);
} else {
plugins.beautylog.error('could not get remote file from ' + fromArg);
bodyString = undefined;
done.reject(bodyString);
};
});
return done.promise;
};

View File

@ -1,10 +0,0 @@
/// <reference path="./index.ts" />
module SmartfileRequire {
var requireReload = function(path:string){
return plugins.requireReload(path);
};
export var init = function(objectArg){
objectArg.requireReload = requireReload;
}
}

View File

@ -1,39 +0,0 @@
/// <reference path="./index.ts" />
module SmartfileSimple {
/**
* reads a file content to a String
* @param filePath
* @returns {string|Buffer|any}
*/
var readFileToString = function(filePath) {
var fileString;
fileString = plugins.fs.readFileSync(filePath, "utf8");
return fileString;
};
var readFileToObject = function(filePath,fileTypeArg = "undefined") {
var fileType;
if (fileTypeArg == "undefined") {
fileType = plugins.path.extname(filePath);
} else {
fileType = fileTypeArg;
}
fileType = fileType.replace(/\.([a-z]*)/,"$1"); //remove . form fileType
switch (fileType) {
case "yml" :
case "yaml":
try {
return plugins.yaml.safeLoad(plugins.fs.readFileSync(filePath, 'utf8'));
} catch (e){
plugins.beautylog.error("check that " + filePath.blue + " points to a valid file");
}
break;
case "json":
return plugins.fs.readJsonSync(filePath,{});
break;
}
};
export var init = function(objectArg) {
objectArg.readFileToString = readFileToString;
objectArg.readFileToObject = readFileToObject;
};
}

View File

@ -1,9 +0,0 @@
/// <reference path="./index.ts" />
module SmartfileVinyl {
var readFileToVinyl = function(filePathArg,options = {}) {
return plugins.vinylFile.readSync(filePathArg,options);
};
export var init = function(objectArg) {
objectArg.readFileToVinyl = readFileToVinyl;
};
}

View File

@ -1,51 +0,0 @@
/// <reference path="typings/main.d.ts" />
var smartfile = require("../index.js");
var beautylog = require("beautylog");
var should = require("should");
var vinyl = require("vinyl");
describe("smartfile",function(){
describe(".readFileToString".yellow,function(){
it("should read a file to a string",function(){
should.equal(
smartfile.readFileToString("./test/mytest.txt"),
"Some TestString &&%$"
);
});
});
describe(".readFileToObject".yellow,function(){
it("should read an " + ".yaml".blue + " file to an object",function(){
var testData = smartfile.readFileToObject("./test/mytest.yaml");
testData.should.have.property("key1","this works");
testData.should.have.property("key2","this works too");
});
it("should read an " + ".json".blue + " file to an object",function(){
var testData = smartfile.readFileToObject("./test/mytest.json");
testData.should.have.property("key1","this works");
testData.should.have.property("key2","this works too");
});
});
describe(".readFileToVinyl".yellow,function(){
it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan,function(){
var testData = smartfile.readFileToVinyl("./test/mytest.json");
(vinyl.isVinyl(testData)).should.be.true();
});
});
describe(".checks".yellow,function(){
describe(".fileExistsSync".yellow,function(){
it("should return an accurate boolean",function(){
(smartfile.checks.fileExistsSync("./test/mytest.json")).should.be.true();
(smartfile.checks.fileExistsSync("./test/notthere.json")).should.be.false();
});
});
describe(".fileExists".yellow,function(){
it("should return a working promise",function(){
(smartfile.checks.fileExists("./test/mytest.json")).should.be.Promise();
(smartfile.checks.fileExists("./test/mytest.json")).should.be.fulfilled();
(smartfile.checks.fileExists("./test/notthere.json")).should.not.be.fulfilled();
});
})
});
});

View File

@ -1,8 +1,9 @@
{
"ambientDependencies": {
"browserify": "github:DefinitelyTyped/DefinitelyTyped/browserify/browserify.d.ts",
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts",
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts"
"node": "registry:dt/node",
"should": "registry:dt/should",
"vinyl": "registry:dt/vinyl"
}
}