@nikovirtala/projen-constructs 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +4114 -18
- package/API.md +257 -257
- package/README.md +137 -23
- package/lib/components/bundle-lambda-function-code.d.ts +62 -0
- package/lib/components/bundle-lambda-function-code.js +175 -0
- package/lib/components/colima.d.ts +5 -0
- package/lib/components/colima.js +22 -0
- package/lib/components/homebrew.d.ts +12 -0
- package/lib/components/homebrew.js +42 -0
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.js +24 -0
- package/lib/components/lambda-function-construct-generator.d.ts +30 -0
- package/lib/components/lambda-function-construct-generator.js +195 -0
- package/lib/components/localstack.d.ts +11 -0
- package/lib/components/localstack.js +42 -0
- package/lib/components/typedoc-config.d.ts +78 -0
- package/lib/components/typedoc-config.js +93 -0
- package/lib/components/typedoc.d.ts +18 -0
- package/lib/components/typedoc.js +58 -0
- package/lib/components/vitest-bundled-define-config.d.ts +1 -0
- package/lib/components/vitest-bundled-define-config.js +6 -0
- package/lib/components/vitest.d.ts +87 -0
- package/lib/components/vitest.js +204 -0
- package/lib/index.d.ts +1 -4
- package/lib/index.js +2 -5
- package/lib/projects/awscdk-app.js +38 -0
- package/lib/{awscdk-construct-project.d.ts → projects/awscdk-construct.d.ts} +1 -1
- package/lib/projects/awscdk-construct.js +38 -0
- package/lib/projects/index.d.ts +4 -0
- package/lib/projects/index.js +21 -0
- package/lib/projects/jsii.js +38 -0
- package/lib/projects/typescript.js +39 -0
- package/node_modules/case/LICENSE +22 -0
- package/node_modules/case/README.md +139 -0
- package/node_modules/case/case.d.ts +43 -0
- package/node_modules/case/dist/Case.js +171 -0
- package/node_modules/case/dist/Case.min.js +5 -0
- package/node_modules/case/dist/Case.min.js.map +1 -0
- package/node_modules/case/dist/Case.plus.js +189 -0
- package/node_modules/case/dist/Case.plus.min.js +5 -0
- package/node_modules/case/dist/Case.plus.min.js.map +1 -0
- package/node_modules/case/package.json +58 -0
- package/package.json +10 -2
- package/lib/awscdk-app-project.js +0 -38
- package/lib/awscdk-construct-project.js +0 -38
- package/lib/jsii-project.js +0 -38
- package/lib/typescript-project.js +0 -39
- /package/lib/{awscdk-app-project.d.ts → projects/awscdk-app.d.ts} +0 -0
- /package/lib/{jsii-project.d.ts → projects/jsii.d.ts} +0 -0
- /package/lib/{typescript-project.d.ts → projects/typescript.d.ts} +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
### Case: An extensible utility to convert, identify, and flip string case.
|
|
2
|
+
|
|
3
|
+
Download: [Case.min.js][min] or [Case.js][full]
|
|
4
|
+
[NPM][npm]: `npm install case` (little 'c' due to NPM restrictions)
|
|
5
|
+
[NuGet][]: `Install-Package Case`
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
[](https://travis-ci.org/nbubna/Case)
|
|
9
|
+
[][npm]
|
|
10
|
+
[][npm]
|
|
11
|
+
|
|
12
|
+
[NuGet]: http://nuget.org/packages/Case/
|
|
13
|
+
[min]: https://raw.github.com/nbubna/Case/master/dist/Case.min.js
|
|
14
|
+
[full]: https://raw.github.com/nbubna/Case/master/dist/Case.js
|
|
15
|
+
[npm]: https://npmjs.org/package/case
|
|
16
|
+
|
|
17
|
+
## Documentation
|
|
18
|
+
Each of the following functions will first "undo" previous case manipulations
|
|
19
|
+
before applying the desired case to the given string.
|
|
20
|
+
|
|
21
|
+
### Foundations
|
|
22
|
+
```javascript
|
|
23
|
+
Case.upper('foo_bar') -> 'FOO BAR'
|
|
24
|
+
Case.lower('fooBar') -> 'foo bar'
|
|
25
|
+
Case.capital('foo_v_bar') -> 'Foo V Bar'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Code Helpers
|
|
29
|
+
```javascript
|
|
30
|
+
Case.snake('Foo bar!') -> 'foo_bar'
|
|
31
|
+
Case.pascal('foo.bar') -> 'FooBar'
|
|
32
|
+
Case.camel('foo, bar') -> 'fooBar'
|
|
33
|
+
Case.kebab('Foo? Bar.') -> 'foo-bar'
|
|
34
|
+
Case.header('fooBar=') -> 'Foo-Bar'
|
|
35
|
+
Case.constant('Foo-Bar') -> 'FOO_BAR'
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### UI Helpers
|
|
40
|
+
```javascript
|
|
41
|
+
Case.title('foo v. bar') -> 'Foo v. Bar'
|
|
42
|
+
Case.sentence('"foo!" said bar', ['Bar']) -> '"Foo!" said Bar'
|
|
43
|
+
Case.sentence('the 12 oz. can', null, ['oz']) -> 'The 12 oz. can'
|
|
44
|
+
```
|
|
45
|
+
`Case.sentence(str, names, abbreviations)` accepts an array of proper names that should be capitalized,
|
|
46
|
+
regardless of location in the sentence. This function is specialized, but useful
|
|
47
|
+
when dealing with input generated with capslock on (i.e. everything my grandma types).
|
|
48
|
+
It can also accept a list of abbreviations (words that may end in a period but aren't meant
|
|
49
|
+
to end a sentence).
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Custom Casing
|
|
53
|
+
```javascript
|
|
54
|
+
Case.lower('FOO-BAR', '.') -> 'foo.bar'
|
|
55
|
+
Case.upper('Foo? Bar.', '__') -> 'FOO__BAR'
|
|
56
|
+
Case.capital('fooBar', ' + ') -> 'Foo + Bar'
|
|
57
|
+
|
|
58
|
+
Case.lower("Don't keep 'em!", "/", true) -> 'dont/keep/em'
|
|
59
|
+
Case.capital("'ello, world.", null, true) -> 'Ello, World.'
|
|
60
|
+
```
|
|
61
|
+
`Case.upper`, `Case.lower`, and `Case.capital` accept an optional "fill" value
|
|
62
|
+
that will replace any characters which are not letters and numbers. All three also accept
|
|
63
|
+
a third optional boolean argument indicating if apostrophes are to be stripped out or left in.
|
|
64
|
+
For example, programmatic case changes (snake, kebab, pascal, camel, constant) are best without
|
|
65
|
+
apostrophes, but user-facing ones (title, sentence) do not want "don't" turned into "Dont".
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Extending Case
|
|
69
|
+
```javascript
|
|
70
|
+
Case.type('bang', function(s) {
|
|
71
|
+
return Case.upper(s, '!')+'!';
|
|
72
|
+
});
|
|
73
|
+
Case.bang('bang') -> 'BANG!'
|
|
74
|
+
Case.of('TEST!THIS!') -> 'bang'
|
|
75
|
+
```
|
|
76
|
+
`Case.type(name, fn)`: extends Case, creating a new function on `Case` and adding `Case.of` support automatically.
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### Utilities
|
|
80
|
+
```javascript
|
|
81
|
+
Case.of('foo') -> 'lower'
|
|
82
|
+
Case.of('foo_bar') -> 'snake'
|
|
83
|
+
Case.of('Foo v Bar') -> 'title'
|
|
84
|
+
Case.of('foo_ Bar') -> undefined
|
|
85
|
+
|
|
86
|
+
Case.of('Hello there, Bob!', ['Bob']) -> 'sentence'
|
|
87
|
+
|
|
88
|
+
Case.flip('FlipMe') -> 'fLIPmE'
|
|
89
|
+
Case.flip('TEST THIS!') -> 'test this!'
|
|
90
|
+
|
|
91
|
+
Case.random('Hello!') -> 'hElLO!'
|
|
92
|
+
```
|
|
93
|
+
* `Case.of(str[, names])`: identifies the case of a string, returns undefined if it doesn't match a known type
|
|
94
|
+
* `Case.flip(str)`: reverses the case of letters, no other changes
|
|
95
|
+
* `Case.random(str)`: randomizes the case of letters, no other changes
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## Release History
|
|
99
|
+
* 2013-06-10 [v1.0.0][] (public, initial)
|
|
100
|
+
* 2013-06-20 [v1.0.1][] (regex improvements)
|
|
101
|
+
* 2013-08-23 [v1.0.3][] (better support for Node, Component and AMD)
|
|
102
|
+
* 2014-10-24 [v1.1.2][] (regexps used are now extensible and support more latin diacritics)
|
|
103
|
+
* 2015-01-27 [v1.2.0][] (deprecate squish in favor of pascal)
|
|
104
|
+
* 2015-01-28 [v1.2.1][] (fix UMD regression)
|
|
105
|
+
* 2015-10-27 [v1.3.0][] (Case.kebab and Case.random)
|
|
106
|
+
* 2015-12-02 [v1.3.2][] (fix title case when small word is first or last)
|
|
107
|
+
* 2016-02-01 [v1.3.3][] (Case.of('foo') to return lower, not snake)
|
|
108
|
+
* 2016-02-07 [v1.4.0][] (fix apostrophe handling)
|
|
109
|
+
* 2016-02-08 [v1.4.1][] (fix swallowed prefix/suffix on lone words)
|
|
110
|
+
* 2016-11-11 [v1.4.2][] (add typings for TypeScript support)
|
|
111
|
+
* 2017-03-09 [v1.5.2][] (add Header-Case and expose noApostrophes option for upper/lower/capital fns)
|
|
112
|
+
* 2017-07-11 [v1.5.3][] (Case.of and to[Type]Case functions should accept extra arguments, like the rest)
|
|
113
|
+
* 2017-10-23 [v1.5.4][] (Shift order of Case.of tests to prioritize 'capital' over 'header')
|
|
114
|
+
* 2018-05-04 [v1.5.5][] (Fix issue #26, corner case of bad "decamelizing" of string w/number after caps)
|
|
115
|
+
* 2018-11-15 [v1.6.0][] (PR #29, support 'abbreviations' argument for Case.sentence to avoid incorrect sentence ends)
|
|
116
|
+
* 2019-01-11 [v1.6.1][] (PR #30, update typings to include 'abbreviations' argument for Case.sentence)
|
|
117
|
+
* 2019-07-26 [v1.6.2][] (PR #31, allow importing as default)
|
|
118
|
+
* 2020-03-24 [v1.6.3][] (PR #33, update license structure in package.json for automated checkers)
|
|
119
|
+
|
|
120
|
+
[v1.0.0]: https://github.com/nbubna/store/tree/1.0.0
|
|
121
|
+
[v1.0.1]: https://github.com/nbubna/store/tree/1.0.1
|
|
122
|
+
[v1.0.3]: https://github.com/nbubna/store/tree/1.0.3
|
|
123
|
+
[v1.1.2]: https://github.com/nbubna/store/tree/1.1.2
|
|
124
|
+
[v1.2.0]: https://github.com/nbubna/store/tree/1.2.0
|
|
125
|
+
[v1.2.1]: https://github.com/nbubna/store/tree/1.2.1
|
|
126
|
+
[v1.3.0]: https://github.com/nbubna/store/tree/1.3.0
|
|
127
|
+
[v1.3.2]: https://github.com/nbubna/store/tree/1.3.2
|
|
128
|
+
[v1.3.3]: https://github.com/nbubna/store/tree/1.3.3
|
|
129
|
+
[v1.4.0]: https://github.com/nbubna/store/tree/1.4.0
|
|
130
|
+
[v1.4.1]: https://github.com/nbubna/store/tree/1.4.1
|
|
131
|
+
[v1.4.2]: https://github.com/nbubna/store/tree/1.4.2
|
|
132
|
+
[v1.5.2]: https://github.com/nbubna/store/tree/1.5.2
|
|
133
|
+
[v1.5.3]: https://github.com/nbubna/store/tree/1.5.3
|
|
134
|
+
[v1.5.4]: https://github.com/nbubna/store/tree/1.5.4
|
|
135
|
+
[v1.5.5]: https://github.com/nbubna/store/tree/1.5.5
|
|
136
|
+
[v1.6.0]: https://github.com/nbubna/store/tree/1.6.0
|
|
137
|
+
[v1.6.1]: https://github.com/nbubna/store/tree/1.6.1
|
|
138
|
+
[v1.6.2]: https://github.com/nbubna/store/tree/1.6.2
|
|
139
|
+
[v1.6.3]: https://github.com/nbubna/store/tree/1.6.3
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
|
|
2
|
+
declare module 'case' {
|
|
3
|
+
namespace Case {
|
|
4
|
+
function upper(str: string, fill: string, noApostrophes: boolean) : string;
|
|
5
|
+
function upper(str: string, fill: string) : string;
|
|
6
|
+
function upper(str: string) : string;
|
|
7
|
+
|
|
8
|
+
function lower(str: string, fill: string, noApostrophes: boolean) : string;
|
|
9
|
+
function lower(str: string, fill: string) : string;
|
|
10
|
+
function lower(str: string) : string;
|
|
11
|
+
|
|
12
|
+
function capital(str: string, fill: string, noApostrophes: boolean) : string;
|
|
13
|
+
function capital(str: string, fill: string) : string;
|
|
14
|
+
function capital(str: string) : string;
|
|
15
|
+
|
|
16
|
+
function snake(str: string) : string;
|
|
17
|
+
|
|
18
|
+
function pascal(str: string) : string;
|
|
19
|
+
|
|
20
|
+
function camel(str: string) : string;
|
|
21
|
+
|
|
22
|
+
function kebab(str: string) : string;
|
|
23
|
+
|
|
24
|
+
function header(str: string) : string;
|
|
25
|
+
|
|
26
|
+
function constant(str: string) : string;
|
|
27
|
+
|
|
28
|
+
function title(str: string) : string;
|
|
29
|
+
|
|
30
|
+
function sentence(str: string, names?: Array<string> | null, abbreviations?: Array<string>) : string;
|
|
31
|
+
|
|
32
|
+
function of(str: string) : string;
|
|
33
|
+
function of(str: string, names: Array<string>) : string;
|
|
34
|
+
|
|
35
|
+
function flip(str: string) : string
|
|
36
|
+
|
|
37
|
+
function random(str: string) : string;
|
|
38
|
+
|
|
39
|
+
function type(type: string, converter: (str: string) => string) : string;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export = Case;
|
|
43
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/*! Case - v1.6.2 - 2020-03-24
|
|
2
|
+
* Copyright (c) 2020 Nathan Bubna; Licensed MIT, GPL */
|
|
3
|
+
(function() {
|
|
4
|
+
"use strict";
|
|
5
|
+
var unicodes = function(s, prefix) {
|
|
6
|
+
prefix = prefix || '';
|
|
7
|
+
return s.replace(/(^|-)/g, '$1\\u'+prefix).replace(/,/g, '\\u'+prefix);
|
|
8
|
+
},
|
|
9
|
+
basicSymbols = unicodes('20-26,28-2F,3A-40,5B-60,7B-7E,A0-BF,D7,F7', '00'),
|
|
10
|
+
baseLowerCase = 'a-z'+unicodes('DF-F6,F8-FF', '00'),
|
|
11
|
+
baseUpperCase = 'A-Z'+unicodes('C0-D6,D8-DE', '00'),
|
|
12
|
+
improperInTitle = 'A|An|And|As|At|But|By|En|For|If|In|Of|On|Or|The|To|Vs?\\.?|Via',
|
|
13
|
+
regexps = function(symbols, lowers, uppers, impropers) {
|
|
14
|
+
symbols = symbols || basicSymbols;
|
|
15
|
+
lowers = lowers || baseLowerCase;
|
|
16
|
+
uppers = uppers || baseUpperCase;
|
|
17
|
+
impropers = impropers || improperInTitle;
|
|
18
|
+
return {
|
|
19
|
+
capitalize: new RegExp('(^|['+symbols+'])(['+lowers+'])', 'g'),
|
|
20
|
+
pascal: new RegExp('(^|['+symbols+'])+(['+lowers+uppers+'])', 'g'),
|
|
21
|
+
fill: new RegExp('['+symbols+']+(.|$)','g'),
|
|
22
|
+
sentence: new RegExp('(^\\s*|[\\?\\!\\.]+"?\\s+"?|,\\s+")(['+lowers+'])', 'g'),
|
|
23
|
+
improper: new RegExp('\\b('+impropers+')\\b', 'g'),
|
|
24
|
+
relax: new RegExp('([^'+uppers+'])(['+uppers+']*)(['+uppers+'])(?=[^'+uppers+']|$)', 'g'),
|
|
25
|
+
upper: new RegExp('^[^'+lowers+']+$'),
|
|
26
|
+
hole: /[^\s]\s[^\s]/,
|
|
27
|
+
apostrophe: /'/g,
|
|
28
|
+
room: new RegExp('['+symbols+']')
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
re = regexps(),
|
|
32
|
+
_ = {
|
|
33
|
+
re: re,
|
|
34
|
+
unicodes: unicodes,
|
|
35
|
+
regexps: regexps,
|
|
36
|
+
types: [],
|
|
37
|
+
up: String.prototype.toUpperCase,
|
|
38
|
+
low: String.prototype.toLowerCase,
|
|
39
|
+
cap: function(s) {
|
|
40
|
+
return _.up.call(s.charAt(0))+s.slice(1);
|
|
41
|
+
},
|
|
42
|
+
decap: function(s) {
|
|
43
|
+
return _.low.call(s.charAt(0))+s.slice(1);
|
|
44
|
+
},
|
|
45
|
+
deapostrophe: function(s) {
|
|
46
|
+
return s.replace(re.apostrophe, '');
|
|
47
|
+
},
|
|
48
|
+
fill: function(s, fill, deapostrophe) {
|
|
49
|
+
if (fill != null) {
|
|
50
|
+
s = s.replace(re.fill, function(m, next) {
|
|
51
|
+
return next ? fill + next : '';
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (deapostrophe) {
|
|
55
|
+
s = _.deapostrophe(s);
|
|
56
|
+
}
|
|
57
|
+
return s;
|
|
58
|
+
},
|
|
59
|
+
prep: function(s, fill, pascal, upper) {
|
|
60
|
+
s = s == null ? '' : s + '';// force to string
|
|
61
|
+
if (!upper && re.upper.test(s)) {
|
|
62
|
+
s = _.low.call(s);
|
|
63
|
+
}
|
|
64
|
+
if (!fill && !re.hole.test(s)) {
|
|
65
|
+
var holey = _.fill(s, ' ');
|
|
66
|
+
if (re.hole.test(holey)) {
|
|
67
|
+
s = holey;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!pascal && !re.room.test(s)) {
|
|
71
|
+
s = s.replace(re.relax, _.relax);
|
|
72
|
+
}
|
|
73
|
+
return s;
|
|
74
|
+
},
|
|
75
|
+
relax: function(m, before, acronym, caps) {
|
|
76
|
+
return before + ' ' + (acronym ? acronym+' ' : '') + caps;
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
Case = {
|
|
80
|
+
_: _,
|
|
81
|
+
of: function(s) {
|
|
82
|
+
for (var i=0,m=_.types.length; i<m; i++) {
|
|
83
|
+
if (Case[_.types[i]].apply(Case, arguments) === s){ return _.types[i]; }
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
flip: function(s) {
|
|
87
|
+
return s.replace(/\w/g, function(l) {
|
|
88
|
+
return (l == _.up.call(l) ? _.low : _.up).call(l);
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
random: function(s) {
|
|
92
|
+
return s.replace(/\w/g, function(l) {
|
|
93
|
+
return (Math.round(Math.random()) ? _.up : _.low).call(l);
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
type: function(type, fn) {
|
|
97
|
+
Case[type] = fn;
|
|
98
|
+
_.types.push(type);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
types = {
|
|
102
|
+
lower: function(s, fill, deapostrophe) {
|
|
103
|
+
return _.fill(_.low.call(_.prep(s, fill)), fill, deapostrophe);
|
|
104
|
+
},
|
|
105
|
+
snake: function(s) {
|
|
106
|
+
return Case.lower(s, '_', true);
|
|
107
|
+
},
|
|
108
|
+
constant: function(s) {
|
|
109
|
+
return Case.upper(s, '_', true);
|
|
110
|
+
},
|
|
111
|
+
camel: function(s) {
|
|
112
|
+
return _.decap(Case.pascal(s));
|
|
113
|
+
},
|
|
114
|
+
kebab: function(s) {
|
|
115
|
+
return Case.lower(s, '-', true);
|
|
116
|
+
},
|
|
117
|
+
upper: function(s, fill, deapostrophe) {
|
|
118
|
+
return _.fill(_.up.call(_.prep(s, fill, false, true)), fill, deapostrophe);
|
|
119
|
+
},
|
|
120
|
+
capital: function(s, fill, deapostrophe) {
|
|
121
|
+
return _.fill(_.prep(s).replace(re.capitalize, function(m, border, letter) {
|
|
122
|
+
return border+_.up.call(letter);
|
|
123
|
+
}), fill, deapostrophe);
|
|
124
|
+
},
|
|
125
|
+
header: function(s) {
|
|
126
|
+
return Case.capital(s, '-', true);
|
|
127
|
+
},
|
|
128
|
+
pascal: function(s) {
|
|
129
|
+
return _.fill(_.prep(s, false, true).replace(re.pascal, function(m, border, letter) {
|
|
130
|
+
return _.up.call(letter);
|
|
131
|
+
}), '', true);
|
|
132
|
+
},
|
|
133
|
+
title: function(s) {
|
|
134
|
+
return Case.capital(s).replace(re.improper, function(small, p, i, s) {
|
|
135
|
+
return i > 0 && i < s.lastIndexOf(' ') ? _.low.call(small) : small;
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
sentence: function(s, names, abbreviations) {
|
|
139
|
+
s = Case.lower(s).replace(re.sentence, function(m, prelude, letter) {
|
|
140
|
+
return prelude + _.up.call(letter);
|
|
141
|
+
});
|
|
142
|
+
if (names) {
|
|
143
|
+
names.forEach(function(name) {
|
|
144
|
+
s = s.replace(new RegExp('\\b'+Case.lower(name)+'\\b', "g"), _.cap);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (abbreviations) {
|
|
148
|
+
abbreviations.forEach(function(abbr) {
|
|
149
|
+
s = s.replace(new RegExp('(\\b'+Case.lower(abbr)+'\\. +)(\\w)'), function(m, abbrAndSpace, letter) {
|
|
150
|
+
return abbrAndSpace + _.low.call(letter);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return s;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// TODO: Remove "squish" in a future breaking release.
|
|
159
|
+
types.squish = types.pascal;
|
|
160
|
+
|
|
161
|
+
// Allow import default
|
|
162
|
+
Case.default = Case;
|
|
163
|
+
|
|
164
|
+
for (var type in types) {
|
|
165
|
+
Case.type(type, types[type]);
|
|
166
|
+
}
|
|
167
|
+
// export Case (AMD, commonjs, or global)
|
|
168
|
+
var define = typeof define === "function" ? define : function(){};
|
|
169
|
+
define(typeof module === "object" && module.exports ? module.exports = Case : this.Case = Case);
|
|
170
|
+
|
|
171
|
+
}).call(this);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*! Case - v1.6.2 - 2020-03-24
|
|
2
|
+
* Copyright (c) 2020 Nathan Bubna; Licensed MIT, GPL */
|
|
3
|
+
|
|
4
|
+
(function(){"use strict";function e(e,n){return n=n||"",e.replace(/(^|-)/g,"$1\\u"+n).replace(/,/g,"\\u"+n)}function n(e,n,r,t){return e=e||l,n=n||p,r=r||o,t=t||"A|An|And|As|At|But|By|En|For|If|In|Of|On|Or|The|To|Vs?\\.?|Via",{capitalize:new RegExp("(^|["+e+"])(["+n+"])","g"),pascal:new RegExp("(^|["+e+"])+(["+n+r+"])","g"),fill:new RegExp("["+e+"]+(.|$)","g"),sentence:new RegExp('(^\\s*|[\\?\\!\\.]+"?\\s+"?|,\\s+")(['+n+"])","g"),improper:new RegExp("\\b("+t+")\\b","g"),relax:new RegExp("([^"+r+"])(["+r+"]*)(["+r+"])(?=[^"+r+"]|$)","g"),upper:new RegExp("^[^"+n+"]+$"),hole:/[^\s]\s[^\s]/,apostrophe:/'/g,room:new RegExp("["+e+"]")}}var l=e("20-26,28-2F,3A-40,5B-60,7B-7E,A0-BF,D7,F7","00"),p="a-z"+e("DF-F6,F8-FF","00"),o="A-Z"+e("C0-D6,D8-DE","00"),u=n(),c={re:u,unicodes:e,regexps:n,types:[],up:String.prototype.toUpperCase,low:String.prototype.toLowerCase,cap:function(e){return c.up.call(e.charAt(0))+e.slice(1)},decap:function(e){return c.low.call(e.charAt(0))+e.slice(1)},deapostrophe:function(e){return e.replace(u.apostrophe,"")},fill:function(e,r,n){return null!=r&&(e=e.replace(u.fill,function(e,n){return n?r+n:""})),n&&(e=c.deapostrophe(e)),e},prep:function(e,n,r,t){if(e=null==e?"":e+"",!t&&u.upper.test(e)&&(e=c.low.call(e)),!n&&!u.hole.test(e)){var l=c.fill(e," ");u.hole.test(l)&&(e=l)}return r||u.room.test(e)||(e=e.replace(u.relax,c.relax)),e},relax:function(e,n,r,t){return n+" "+(r?r+" ":"")+t}},t={_:c,of:function(e){for(var n=0,r=c.types.length;n<r;n++)if(t[c.types[n]].apply(t,arguments)===e)return c.types[n]},flip:function(e){return e.replace(/\w/g,function(e){return(e==c.up.call(e)?c.low:c.up).call(e)})},random:function(e){return e.replace(/\w/g,function(e){return(Math.round(Math.random())?c.up:c.low).call(e)})},type:function(e,n){t[e]=n,c.types.push(e)}},r={lower:function(e,n,r){return c.fill(c.low.call(c.prep(e,n)),n,r)},snake:function(e){return t.lower(e,"_",!0)},constant:function(e){return t.upper(e,"_",!0)},camel:function(e){return c.decap(t.pascal(e))},kebab:function(e){return t.lower(e,"-",!0)},upper:function(e,n,r){return c.fill(c.up.call(c.prep(e,n,!1,!0)),n,r)},capital:function(e,n,r){return c.fill(c.prep(e).replace(u.capitalize,function(e,n,r){return n+c.up.call(r)}),n,r)},header:function(e){return t.capital(e,"-",!0)},pascal:function(e){return c.fill(c.prep(e,!1,!0).replace(u.pascal,function(e,n,r){return c.up.call(r)}),"",!0)},title:function(e){return t.capital(e).replace(u.improper,function(e,n,r,t){return 0<r&&r<t.lastIndexOf(" ")?c.low.call(e):e})},sentence:function(n,e,r){return n=t.lower(n).replace(u.sentence,function(e,n,r){return n+c.up.call(r)}),e&&e.forEach(function(e){n=n.replace(new RegExp("\\b"+t.lower(e)+"\\b","g"),c.cap)}),r&&r.forEach(function(e){n=n.replace(new RegExp("(\\b"+t.lower(e)+"\\. +)(\\w)"),function(e,n,r){return n+c.low.call(r)})}),n}};for(var a in r.squish=r.pascal,t.default=t,r)t.type(a,r[a]);var i="function"==typeof i?i:function(){};i("object"==typeof module&&module.exports?module.exports=t:this.Case=t)}).call(this);
|
|
5
|
+
//# sourceMappingURL=Case.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Case.js"],"names":["unicodes","s","prefix","replace","regexps","symbols","lowers","uppers","impropers","basicSymbols","baseLowerCase","baseUpperCase","capitalize","RegExp","pascal","fill","sentence","improper","relax","upper","hole","apostrophe","room","re","_","types","up","String","prototype","toUpperCase","low","toLowerCase","cap","call","charAt","slice","decap","deapostrophe","m","next","prep","test","holey","before","acronym","caps","Case","of","i","length","apply","arguments","flip","l","random","Math","round","type","fn","push","lower","snake","constant","camel","kebab","capital","border","letter","header","title","small","p","lastIndexOf","names","abbreviations","prelude","forEach","name","abbr","abbrAndSpace","squish","default","define","module","exports","this"],"mappings":"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","file":"Case.min.js"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/*! Case - v1.6.2 - 2020-03-24
|
|
2
|
+
* Copyright (c) 2020 Nathan Bubna; Licensed MIT, GPL */
|
|
3
|
+
(function() {
|
|
4
|
+
"use strict";
|
|
5
|
+
var unicodes = function(s, prefix) {
|
|
6
|
+
prefix = prefix || '';
|
|
7
|
+
return s.replace(/(^|-)/g, '$1\\u'+prefix).replace(/,/g, '\\u'+prefix);
|
|
8
|
+
},
|
|
9
|
+
basicSymbols = unicodes('20-26,28-2F,3A-40,5B-60,7B-7E,A0-BF,D7,F7', '00'),
|
|
10
|
+
baseLowerCase = 'a-z'+unicodes('DF-F6,F8-FF', '00'),
|
|
11
|
+
baseUpperCase = 'A-Z'+unicodes('C0-D6,D8-DE', '00'),
|
|
12
|
+
improperInTitle = 'A|An|And|As|At|But|By|En|For|If|In|Of|On|Or|The|To|Vs?\\.?|Via',
|
|
13
|
+
regexps = function(symbols, lowers, uppers, impropers) {
|
|
14
|
+
symbols = symbols || basicSymbols;
|
|
15
|
+
lowers = lowers || baseLowerCase;
|
|
16
|
+
uppers = uppers || baseUpperCase;
|
|
17
|
+
impropers = impropers || improperInTitle;
|
|
18
|
+
return {
|
|
19
|
+
capitalize: new RegExp('(^|['+symbols+'])(['+lowers+'])', 'g'),
|
|
20
|
+
pascal: new RegExp('(^|['+symbols+'])+(['+lowers+uppers+'])', 'g'),
|
|
21
|
+
fill: new RegExp('['+symbols+']+(.|$)','g'),
|
|
22
|
+
sentence: new RegExp('(^\\s*|[\\?\\!\\.]+"?\\s+"?|,\\s+")(['+lowers+'])', 'g'),
|
|
23
|
+
improper: new RegExp('\\b('+impropers+')\\b', 'g'),
|
|
24
|
+
relax: new RegExp('([^'+uppers+'])(['+uppers+']*)(['+uppers+'])(?=[^'+uppers+']|$)', 'g'),
|
|
25
|
+
upper: new RegExp('^[^'+lowers+']+$'),
|
|
26
|
+
hole: /[^\s]\s[^\s]/,
|
|
27
|
+
apostrophe: /'/g,
|
|
28
|
+
room: new RegExp('['+symbols+']')
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
re = regexps(),
|
|
32
|
+
_ = {
|
|
33
|
+
re: re,
|
|
34
|
+
unicodes: unicodes,
|
|
35
|
+
regexps: regexps,
|
|
36
|
+
types: [],
|
|
37
|
+
up: String.prototype.toUpperCase,
|
|
38
|
+
low: String.prototype.toLowerCase,
|
|
39
|
+
cap: function(s) {
|
|
40
|
+
return _.up.call(s.charAt(0))+s.slice(1);
|
|
41
|
+
},
|
|
42
|
+
decap: function(s) {
|
|
43
|
+
return _.low.call(s.charAt(0))+s.slice(1);
|
|
44
|
+
},
|
|
45
|
+
deapostrophe: function(s) {
|
|
46
|
+
return s.replace(re.apostrophe, '');
|
|
47
|
+
},
|
|
48
|
+
fill: function(s, fill, deapostrophe) {
|
|
49
|
+
if (fill != null) {
|
|
50
|
+
s = s.replace(re.fill, function(m, next) {
|
|
51
|
+
return next ? fill + next : '';
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (deapostrophe) {
|
|
55
|
+
s = _.deapostrophe(s);
|
|
56
|
+
}
|
|
57
|
+
return s;
|
|
58
|
+
},
|
|
59
|
+
prep: function(s, fill, pascal, upper) {
|
|
60
|
+
s = s == null ? '' : s + '';// force to string
|
|
61
|
+
if (!upper && re.upper.test(s)) {
|
|
62
|
+
s = _.low.call(s);
|
|
63
|
+
}
|
|
64
|
+
if (!fill && !re.hole.test(s)) {
|
|
65
|
+
var holey = _.fill(s, ' ');
|
|
66
|
+
if (re.hole.test(holey)) {
|
|
67
|
+
s = holey;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!pascal && !re.room.test(s)) {
|
|
71
|
+
s = s.replace(re.relax, _.relax);
|
|
72
|
+
}
|
|
73
|
+
return s;
|
|
74
|
+
},
|
|
75
|
+
relax: function(m, before, acronym, caps) {
|
|
76
|
+
return before + ' ' + (acronym ? acronym+' ' : '') + caps;
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
Case = {
|
|
80
|
+
_: _,
|
|
81
|
+
of: function(s) {
|
|
82
|
+
for (var i=0,m=_.types.length; i<m; i++) {
|
|
83
|
+
if (Case[_.types[i]].apply(Case, arguments) === s){ return _.types[i]; }
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
flip: function(s) {
|
|
87
|
+
return s.replace(/\w/g, function(l) {
|
|
88
|
+
return (l == _.up.call(l) ? _.low : _.up).call(l);
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
random: function(s) {
|
|
92
|
+
return s.replace(/\w/g, function(l) {
|
|
93
|
+
return (Math.round(Math.random()) ? _.up : _.low).call(l);
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
type: function(type, fn) {
|
|
97
|
+
Case[type] = fn;
|
|
98
|
+
_.types.push(type);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
types = {
|
|
102
|
+
lower: function(s, fill, deapostrophe) {
|
|
103
|
+
return _.fill(_.low.call(_.prep(s, fill)), fill, deapostrophe);
|
|
104
|
+
},
|
|
105
|
+
snake: function(s) {
|
|
106
|
+
return Case.lower(s, '_', true);
|
|
107
|
+
},
|
|
108
|
+
constant: function(s) {
|
|
109
|
+
return Case.upper(s, '_', true);
|
|
110
|
+
},
|
|
111
|
+
camel: function(s) {
|
|
112
|
+
return _.decap(Case.pascal(s));
|
|
113
|
+
},
|
|
114
|
+
kebab: function(s) {
|
|
115
|
+
return Case.lower(s, '-', true);
|
|
116
|
+
},
|
|
117
|
+
upper: function(s, fill, deapostrophe) {
|
|
118
|
+
return _.fill(_.up.call(_.prep(s, fill, false, true)), fill, deapostrophe);
|
|
119
|
+
},
|
|
120
|
+
capital: function(s, fill, deapostrophe) {
|
|
121
|
+
return _.fill(_.prep(s).replace(re.capitalize, function(m, border, letter) {
|
|
122
|
+
return border+_.up.call(letter);
|
|
123
|
+
}), fill, deapostrophe);
|
|
124
|
+
},
|
|
125
|
+
header: function(s) {
|
|
126
|
+
return Case.capital(s, '-', true);
|
|
127
|
+
},
|
|
128
|
+
pascal: function(s) {
|
|
129
|
+
return _.fill(_.prep(s, false, true).replace(re.pascal, function(m, border, letter) {
|
|
130
|
+
return _.up.call(letter);
|
|
131
|
+
}), '', true);
|
|
132
|
+
},
|
|
133
|
+
title: function(s) {
|
|
134
|
+
return Case.capital(s).replace(re.improper, function(small, p, i, s) {
|
|
135
|
+
return i > 0 && i < s.lastIndexOf(' ') ? _.low.call(small) : small;
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
sentence: function(s, names, abbreviations) {
|
|
139
|
+
s = Case.lower(s).replace(re.sentence, function(m, prelude, letter) {
|
|
140
|
+
return prelude + _.up.call(letter);
|
|
141
|
+
});
|
|
142
|
+
if (names) {
|
|
143
|
+
names.forEach(function(name) {
|
|
144
|
+
s = s.replace(new RegExp('\\b'+Case.lower(name)+'\\b', "g"), _.cap);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (abbreviations) {
|
|
148
|
+
abbreviations.forEach(function(abbr) {
|
|
149
|
+
s = s.replace(new RegExp('(\\b'+Case.lower(abbr)+'\\. +)(\\w)'), function(m, abbrAndSpace, letter) {
|
|
150
|
+
return abbrAndSpace + _.low.call(letter);
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return s;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// TODO: Remove "squish" in a future breaking release.
|
|
159
|
+
types.squish = types.pascal;
|
|
160
|
+
|
|
161
|
+
// Allow import default
|
|
162
|
+
Case.default = Case;
|
|
163
|
+
|
|
164
|
+
for (var type in types) {
|
|
165
|
+
Case.type(type, types[type]);
|
|
166
|
+
}
|
|
167
|
+
// export Case (AMD, commonjs, or global)
|
|
168
|
+
var define = typeof define === "function" ? define : function(){};
|
|
169
|
+
define(typeof module === "object" && module.exports ? module.exports = Case : this.Case = Case);
|
|
170
|
+
|
|
171
|
+
}).call(this);
|
|
172
|
+
|
|
173
|
+
(function(Case, _) {
|
|
174
|
+
function create(type) {
|
|
175
|
+
var fn = 'to'+_.cap(type)+'Case';
|
|
176
|
+
String.prototype[fn] = function() {
|
|
177
|
+
Array.prototype.unshift.call(arguments, this);
|
|
178
|
+
return Case[type].apply(Case, arguments);
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
for (var i=0,m=_.types.length; i<m; i++) {
|
|
182
|
+
create(_.types[i]);
|
|
183
|
+
}
|
|
184
|
+
var _type = Case.type;
|
|
185
|
+
Case.type = function(type, fn) {
|
|
186
|
+
_type(type, fn);
|
|
187
|
+
create(type);
|
|
188
|
+
};
|
|
189
|
+
})(Case, Case._);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*! Case - v1.6.2 - 2020-03-24
|
|
2
|
+
* Copyright (c) 2020 Nathan Bubna; Licensed MIT, GPL */
|
|
3
|
+
|
|
4
|
+
(function(){"use strict";function e(e,n){return n=n||"",e.replace(/(^|-)/g,"$1\\u"+n).replace(/,/g,"\\u"+n)}function n(e,n,r,t){return e=e||p,n=n||l,r=r||o,t=t||"A|An|And|As|At|But|By|En|For|If|In|Of|On|Or|The|To|Vs?\\.?|Via",{capitalize:new RegExp("(^|["+e+"])(["+n+"])","g"),pascal:new RegExp("(^|["+e+"])+(["+n+r+"])","g"),fill:new RegExp("["+e+"]+(.|$)","g"),sentence:new RegExp('(^\\s*|[\\?\\!\\.]+"?\\s+"?|,\\s+")(['+n+"])","g"),improper:new RegExp("\\b("+t+")\\b","g"),relax:new RegExp("([^"+r+"])(["+r+"]*)(["+r+"])(?=[^"+r+"]|$)","g"),upper:new RegExp("^[^"+n+"]+$"),hole:/[^\s]\s[^\s]/,apostrophe:/'/g,room:new RegExp("["+e+"]")}}var p=e("20-26,28-2F,3A-40,5B-60,7B-7E,A0-BF,D7,F7","00"),l="a-z"+e("DF-F6,F8-FF","00"),o="A-Z"+e("C0-D6,D8-DE","00"),u=n(),c={re:u,unicodes:e,regexps:n,types:[],up:String.prototype.toUpperCase,low:String.prototype.toLowerCase,cap:function(e){return c.up.call(e.charAt(0))+e.slice(1)},decap:function(e){return c.low.call(e.charAt(0))+e.slice(1)},deapostrophe:function(e){return e.replace(u.apostrophe,"")},fill:function(e,r,n){return null!=r&&(e=e.replace(u.fill,function(e,n){return n?r+n:""})),n&&(e=c.deapostrophe(e)),e},prep:function(e,n,r,t){if(e=null==e?"":e+"",!t&&u.upper.test(e)&&(e=c.low.call(e)),!n&&!u.hole.test(e)){var p=c.fill(e," ");u.hole.test(p)&&(e=p)}return r||u.room.test(e)||(e=e.replace(u.relax,c.relax)),e},relax:function(e,n,r,t){return n+" "+(r?r+" ":"")+t}},t={_:c,of:function(e){for(var n=0,r=c.types.length;n<r;n++)if(t[c.types[n]].apply(t,arguments)===e)return c.types[n]},flip:function(e){return e.replace(/\w/g,function(e){return(e==c.up.call(e)?c.low:c.up).call(e)})},random:function(e){return e.replace(/\w/g,function(e){return(Math.round(Math.random())?c.up:c.low).call(e)})},type:function(e,n){t[e]=n,c.types.push(e)}},r={lower:function(e,n,r){return c.fill(c.low.call(c.prep(e,n)),n,r)},snake:function(e){return t.lower(e,"_",!0)},constant:function(e){return t.upper(e,"_",!0)},camel:function(e){return c.decap(t.pascal(e))},kebab:function(e){return t.lower(e,"-",!0)},upper:function(e,n,r){return c.fill(c.up.call(c.prep(e,n,!1,!0)),n,r)},capital:function(e,n,r){return c.fill(c.prep(e).replace(u.capitalize,function(e,n,r){return n+c.up.call(r)}),n,r)},header:function(e){return t.capital(e,"-",!0)},pascal:function(e){return c.fill(c.prep(e,!1,!0).replace(u.pascal,function(e,n,r){return c.up.call(r)}),"",!0)},title:function(e){return t.capital(e).replace(u.improper,function(e,n,r,t){return 0<r&&r<t.lastIndexOf(" ")?c.low.call(e):e})},sentence:function(n,e,r){return n=t.lower(n).replace(u.sentence,function(e,n,r){return n+c.up.call(r)}),e&&e.forEach(function(e){n=n.replace(new RegExp("\\b"+t.lower(e)+"\\b","g"),c.cap)}),r&&r.forEach(function(e){n=n.replace(new RegExp("(\\b"+t.lower(e)+"\\. +)(\\w)"),function(e,n,r){return n+c.low.call(r)})}),n}};for(var a in r.squish=r.pascal,t.default=t,r)t.type(a,r[a]);var i="function"==typeof i?i:function(){};i("object"==typeof module&&module.exports?module.exports=t:this.Case=t)}).call(this),function(r,t){function p(e){var n="to"+t.cap(e)+"Case";String.prototype[n]=function(){return Array.prototype.unshift.call(arguments,this),r[e].apply(r,arguments)}}for(var e=0,n=t.types.length;e<n;e++)p(t.types[e]);var l=r.type;r.type=function(e,n){l(e,n),p(e)}}(Case,Case._);
|
|
5
|
+
//# sourceMappingURL=Case.plus.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Case.plus.js"],"names":["unicodes","s","prefix","replace","regexps","symbols","lowers","uppers","impropers","basicSymbols","baseLowerCase","baseUpperCase","capitalize","RegExp","pascal","fill","sentence","improper","relax","upper","hole","apostrophe","room","re","_","types","up","String","prototype","toUpperCase","low","toLowerCase","cap","call","charAt","slice","decap","deapostrophe","m","next","prep","test","holey","before","acronym","caps","Case","of","i","length","apply","arguments","flip","l","random","Math","round","type","fn","push","lower","snake","constant","camel","kebab","capital","border","letter","header","title","small","p","lastIndexOf","names","abbreviations","prelude","forEach","name","abbr","abbrAndSpace","squish","default","define","module","exports","this","create","Array","unshift","_type"],"mappings":"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","file":"Case.plus.min.js"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "case",
|
|
3
|
+
"description": "Extensible string utility for converting, identifying and flipping string case",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"string",
|
|
6
|
+
"case",
|
|
7
|
+
"camel",
|
|
8
|
+
"title",
|
|
9
|
+
"upper",
|
|
10
|
+
"lower",
|
|
11
|
+
"snake",
|
|
12
|
+
"squish",
|
|
13
|
+
"pascal",
|
|
14
|
+
"constant",
|
|
15
|
+
"flip",
|
|
16
|
+
"capitalization",
|
|
17
|
+
"converter"
|
|
18
|
+
],
|
|
19
|
+
"version": "1.6.3",
|
|
20
|
+
"author": {
|
|
21
|
+
"name": "Nathan Bubna",
|
|
22
|
+
"email": "nathan@esha.com",
|
|
23
|
+
"url": "http://www.esha.com/"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">= 0.8.0"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"case.d.ts"
|
|
31
|
+
],
|
|
32
|
+
"main": "dist/Case.js",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "http://github.com/nbubna/Case/issues",
|
|
35
|
+
"email": "nathan@esharesearch.com"
|
|
36
|
+
},
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "http://github.com/nbubna/Case.git"
|
|
40
|
+
},
|
|
41
|
+
"license": "(MIT OR GPL-3.0-or-later)",
|
|
42
|
+
"scripts": {
|
|
43
|
+
"test": "grunt qunit"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"grunt": "^1.0.4",
|
|
47
|
+
"grunt-cli": "^1.3.2",
|
|
48
|
+
"grunt-component-build": "^0.5.3",
|
|
49
|
+
"grunt-contrib-clean": "^2.0.0",
|
|
50
|
+
"grunt-contrib-concat": "^1.0.1",
|
|
51
|
+
"grunt-contrib-jshint": "^2.1.0",
|
|
52
|
+
"grunt-contrib-qunit": "^3.1.0",
|
|
53
|
+
"grunt-contrib-uglify": "^4.0.1",
|
|
54
|
+
"grunt-contrib-watch": "^1.1.0",
|
|
55
|
+
"grunt-nuget": "~0.3.1"
|
|
56
|
+
},
|
|
57
|
+
"typings": "case.d.ts"
|
|
58
|
+
}
|