angular-slickgrid 4.2.1 → 4.2.2

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.
Files changed (205) hide show
  1. package/LICENSE +20 -20
  2. package/app/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +2 -2
  3. package/app/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +0 -2
  4. package/docs/assets/lib/multiple-select/README.md +17 -17
  5. package/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +14 -14
  6. package/esm2020/app/modules/angular-slickgrid/constants.mjs +1 -1
  7. package/esm2020/app/modules/angular-slickgrid/extensions/index.mjs +1 -1
  8. package/esm2020/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +2 -4
  9. package/esm2020/app/modules/angular-slickgrid/global-grid-options.mjs +1 -1
  10. package/esm2020/app/modules/angular-slickgrid/index.mjs +1 -1
  11. package/esm2020/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +1 -1
  12. package/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +1 -1
  13. package/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +1 -1
  14. package/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +1 -1
  15. package/esm2020/app/modules/angular-slickgrid/models/index.mjs +1 -1
  16. package/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +1 -1
  17. package/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +1 -1
  18. package/esm2020/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +7 -10
  19. package/esm2020/app/modules/angular-slickgrid/services/angularUtil.service.mjs +4 -4
  20. package/esm2020/app/modules/angular-slickgrid/services/bsDropdown.service.mjs +4 -4
  21. package/esm2020/app/modules/angular-slickgrid/services/container.service.mjs +4 -4
  22. package/esm2020/app/modules/angular-slickgrid/services/index.mjs +1 -1
  23. package/esm2020/app/modules/angular-slickgrid/services/translater.service.mjs +4 -4
  24. package/esm2020/app/modules/angular-slickgrid/services/utilities.mjs +1 -1
  25. package/esm2020/app/modules/angular-slickgrid/slickgrid-config.mjs +1 -1
  26. package/esm2020/public_api.mjs +1 -1
  27. package/fesm2015/angular-slickgrid.mjs +32 -37
  28. package/fesm2015/angular-slickgrid.mjs.map +1 -1
  29. package/fesm2020/angular-slickgrid.mjs +32 -37
  30. package/fesm2020/angular-slickgrid.mjs.map +1 -1
  31. package/i18n/en.json +89 -89
  32. package/i18n/fr.json +90 -90
  33. package/{angular-slickgrid.d.ts → index.d.ts} +0 -0
  34. package/package.json +11 -11
  35. package/test/cypress/node_modules/@cypress/request/README.md +1038 -0
  36. package/test/cypress/node_modules/@cypress/xvfb/README.md +48 -0
  37. package/test/cypress/node_modules/@cypress/xvfb/node_modules/debug/README.md +437 -0
  38. package/test/cypress/node_modules/@types/node/README.md +16 -0
  39. package/test/cypress/node_modules/@types/sinonjs__fake-timers/README.md +16 -0
  40. package/test/cypress/node_modules/@types/sizzle/README.md +16 -0
  41. package/test/cypress/node_modules/@types/yauzl/README.md +16 -0
  42. package/test/cypress/node_modules/@types/yauzl/node_modules/@types/node/README.md +16 -0
  43. package/test/cypress/node_modules/aggregate-error/README.md +61 -0
  44. package/test/cypress/node_modules/ansi-colors/README.md +315 -0
  45. package/test/cypress/node_modules/ansi-escapes/README.md +245 -0
  46. package/test/cypress/node_modules/ansi-regex/README.md +78 -0
  47. package/test/cypress/node_modules/ansi-styles/README.md +152 -0
  48. package/test/cypress/node_modules/arch/README.md +71 -0
  49. package/test/cypress/node_modules/asn1/README.md +50 -0
  50. package/test/cypress/node_modules/assert-plus/README.md +162 -0
  51. package/test/cypress/node_modules/astral-regex/README.md +46 -0
  52. package/test/cypress/node_modules/async/README.md +60 -0
  53. package/test/cypress/node_modules/asynckit/README.md +233 -0
  54. package/test/cypress/node_modules/at-least-node/README.md +25 -0
  55. package/test/cypress/node_modules/aws-sign2/README.md +4 -0
  56. package/test/cypress/node_modules/aws4/README.md +183 -0
  57. package/test/cypress/node_modules/balanced-match/README.md +91 -0
  58. package/test/cypress/node_modules/base64-js/README.md +34 -0
  59. package/test/cypress/node_modules/bcrypt-pbkdf/README.md +45 -0
  60. package/test/cypress/node_modules/blob-util/README.md +623 -0
  61. package/test/cypress/node_modules/bluebird/README.md +57 -0
  62. package/test/cypress/node_modules/brace-expansion/README.md +129 -0
  63. package/test/cypress/node_modules/buffer/README.md +410 -0
  64. package/test/cypress/node_modules/buffer-crc32/README.md +47 -0
  65. package/test/cypress/node_modules/cachedir/README.md +27 -0
  66. package/test/cypress/node_modules/caseless/README.md +45 -0
  67. package/test/cypress/node_modules/chalk/README.md +293 -0
  68. package/test/cypress/node_modules/chalk/node_modules/supports-color/README.md +76 -0
  69. package/test/cypress/node_modules/check-more-types/README.md +952 -0
  70. package/test/cypress/node_modules/ci-info/README.md +114 -0
  71. package/test/cypress/node_modules/clean-stack/README.md +76 -0
  72. package/test/cypress/node_modules/cli-cursor/README.md +55 -0
  73. package/test/cypress/node_modules/cli-table3/README.md +218 -0
  74. package/test/cypress/node_modules/cli-truncate/README.md +139 -0
  75. package/test/cypress/node_modules/color-convert/README.md +68 -0
  76. package/test/cypress/node_modules/color-name/README.md +11 -0
  77. package/test/cypress/node_modules/colorette/README.md +102 -0
  78. package/test/cypress/node_modules/colors/README.md +221 -0
  79. package/test/cypress/node_modules/combined-stream/README.md +138 -0
  80. package/test/cypress/node_modules/commander/README.md +737 -0
  81. package/test/cypress/node_modules/common-tags/README.md +687 -0
  82. package/test/cypress/node_modules/core-util-is/README.md +3 -0
  83. package/test/cypress/node_modules/cross-spawn/README.md +96 -0
  84. package/test/cypress/node_modules/cypress/README.md +25 -0
  85. package/test/cypress/node_modules/cypress/mount-utils/README.md +14 -0
  86. package/test/cypress/node_modules/cypress/react/README.md +414 -0
  87. package/test/cypress/node_modules/cypress/vue/README.md +678 -0
  88. package/test/cypress/node_modules/cypress/vue2/README.md +693 -0
  89. package/test/cypress/node_modules/dashdash/README.md +574 -0
  90. package/test/cypress/node_modules/dayjs/README.md +128 -0
  91. package/test/cypress/node_modules/debug/README.md +455 -0
  92. package/test/cypress/node_modules/delayed-stream/README.md +141 -0
  93. package/test/cypress/node_modules/ecc-jsbn/README.md +8 -0
  94. package/test/cypress/node_modules/emoji-regex/README.md +73 -0
  95. package/test/cypress/node_modules/end-of-stream/README.md +54 -0
  96. package/test/cypress/node_modules/enquirer/README.md +1752 -0
  97. package/test/cypress/node_modules/escape-string-regexp/README.md +27 -0
  98. package/test/cypress/node_modules/eventemitter2/README.md +809 -0
  99. package/test/cypress/node_modules/execa/README.md +656 -0
  100. package/test/cypress/node_modules/executable/README.md +64 -0
  101. package/test/cypress/node_modules/extend/README.md +81 -0
  102. package/test/cypress/node_modules/extract-zip/README.md +57 -0
  103. package/test/cypress/node_modules/extract-zip/node_modules/debug/README.md +455 -0
  104. package/test/cypress/node_modules/extsprintf/README.md +46 -0
  105. package/test/cypress/node_modules/fd-slicer/README.md +199 -0
  106. package/test/cypress/node_modules/figures/README.md +139 -0
  107. package/test/cypress/node_modules/forever-agent/README.md +4 -0
  108. package/test/cypress/node_modules/form-data/README.md +234 -0
  109. package/test/cypress/node_modules/fs-extra/README.md +264 -0
  110. package/test/cypress/node_modules/fs.realpath/README.md +33 -0
  111. package/test/cypress/node_modules/get-stream/README.md +124 -0
  112. package/test/cypress/node_modules/getos/README.md +79 -0
  113. package/test/cypress/node_modules/getpass/README.md +32 -0
  114. package/test/cypress/node_modules/glob/README.md +375 -0
  115. package/test/cypress/node_modules/global-dirs/README.md +72 -0
  116. package/test/cypress/node_modules/graceful-fs/README.md +133 -0
  117. package/test/cypress/node_modules/has-flag/README.md +89 -0
  118. package/test/cypress/node_modules/http-signature/README.md +80 -0
  119. package/test/cypress/node_modules/human-signals/README.md +155 -0
  120. package/test/cypress/node_modules/ieee754/README.md +51 -0
  121. package/test/cypress/node_modules/indent-string/README.md +70 -0
  122. package/test/cypress/node_modules/inflight/README.md +37 -0
  123. package/test/cypress/node_modules/inherits/README.md +42 -0
  124. package/test/cypress/node_modules/ini/README.md +102 -0
  125. package/test/cypress/node_modules/is-ci/README.md +50 -0
  126. package/test/cypress/node_modules/is-fullwidth-code-point/README.md +39 -0
  127. package/test/cypress/node_modules/is-installed-globally/README.md +31 -0
  128. package/test/cypress/node_modules/is-path-inside/README.md +63 -0
  129. package/test/cypress/node_modules/is-stream/README.md +57 -0
  130. package/test/cypress/node_modules/is-typedarray/README.md +16 -0
  131. package/test/cypress/node_modules/isexe/README.md +51 -0
  132. package/test/cypress/node_modules/isstream/README.md +66 -0
  133. package/test/cypress/node_modules/jsbn/README.md +175 -0
  134. package/test/cypress/node_modules/json-schema/README.md +3 -0
  135. package/test/cypress/node_modules/json-stringify-safe/README.md +52 -0
  136. package/test/cypress/node_modules/jsonfile/README.md +205 -0
  137. package/test/cypress/node_modules/jsonfile/node_modules/universalify/README.md +76 -0
  138. package/test/cypress/node_modules/jsprim/README.md +287 -0
  139. package/test/cypress/node_modules/lazy-ass/README.md +269 -0
  140. package/test/cypress/node_modules/listr2/README.md +17 -0
  141. package/test/cypress/node_modules/lodash/README.md +39 -0
  142. package/test/cypress/node_modules/lodash.once/README.md +18 -0
  143. package/test/cypress/node_modules/log-symbols/README.md +51 -0
  144. package/test/cypress/node_modules/log-update/README.md +97 -0
  145. package/test/cypress/node_modules/log-update/node_modules/slice-ansi/README.md +66 -0
  146. package/test/cypress/node_modules/log-update/node_modules/wrap-ansi/README.md +97 -0
  147. package/test/cypress/node_modules/lru-cache/README.md +166 -0
  148. package/test/cypress/node_modules/merge-stream/README.md +78 -0
  149. package/test/cypress/node_modules/mime-db/README.md +102 -0
  150. package/test/cypress/node_modules/mime-types/README.md +123 -0
  151. package/test/cypress/node_modules/mimic-fn/README.md +69 -0
  152. package/test/cypress/node_modules/minimatch/README.md +209 -0
  153. package/test/cypress/node_modules/ms/README.md +60 -0
  154. package/test/cypress/node_modules/npm-run-path/README.md +115 -0
  155. package/test/cypress/node_modules/once/README.md +79 -0
  156. package/test/cypress/node_modules/onetime/README.md +94 -0
  157. package/test/cypress/node_modules/ospath/README.md +53 -0
  158. package/test/cypress/node_modules/p-map/README.md +89 -0
  159. package/test/cypress/node_modules/path-is-absolute/README.md +59 -0
  160. package/test/cypress/node_modules/path-key/README.md +61 -0
  161. package/test/cypress/node_modules/pend/README.md +41 -0
  162. package/test/cypress/node_modules/performance-now/README.md +30 -0
  163. package/test/cypress/node_modules/pify/README.md +119 -0
  164. package/test/cypress/node_modules/pretty-bytes/README.md +131 -0
  165. package/test/cypress/node_modules/proxy-from-env/README.md +131 -0
  166. package/test/cypress/node_modules/psl/README.md +215 -0
  167. package/test/cypress/node_modules/pump/README.md +65 -0
  168. package/test/cypress/node_modules/punycode/README.md +122 -0
  169. package/test/cypress/node_modules/qs/README.md +475 -0
  170. package/test/cypress/node_modules/request-progress/README.md +78 -0
  171. package/test/cypress/node_modules/restore-cursor/README.md +26 -0
  172. package/test/cypress/node_modules/rimraf/README.md +101 -0
  173. package/test/cypress/node_modules/rxjs/README.md +147 -0
  174. package/test/cypress/node_modules/rxjs/_esm2015/README.md +147 -0
  175. package/test/cypress/node_modules/rxjs/_esm5/README.md +147 -0
  176. package/test/cypress/node_modules/rxjs/src/README.md +147 -0
  177. package/test/cypress/node_modules/safe-buffer/README.md +584 -0
  178. package/test/cypress/node_modules/safer-buffer/README.md +156 -0
  179. package/test/cypress/node_modules/semver/README.md +566 -0
  180. package/test/cypress/node_modules/shebang-command/README.md +34 -0
  181. package/test/cypress/node_modules/shebang-regex/README.md +33 -0
  182. package/test/cypress/node_modules/signal-exit/README.md +39 -0
  183. package/test/cypress/node_modules/slice-ansi/README.md +72 -0
  184. package/test/cypress/node_modules/sshpk/README.md +804 -0
  185. package/test/cypress/node_modules/string-width/README.md +50 -0
  186. package/test/cypress/node_modules/strip-ansi/README.md +46 -0
  187. package/test/cypress/node_modules/strip-final-newline/README.md +30 -0
  188. package/test/cypress/node_modules/supports-color/README.md +77 -0
  189. package/test/cypress/node_modules/throttleit/README.md +32 -0
  190. package/test/cypress/node_modules/tmp/README.md +365 -0
  191. package/test/cypress/node_modules/tough-cookie/README.md +527 -0
  192. package/test/cypress/node_modules/tslib/README.md +142 -0
  193. package/test/cypress/node_modules/tunnel-agent/README.md +4 -0
  194. package/test/cypress/node_modules/tweetnacl/README.md +459 -0
  195. package/test/cypress/node_modules/type-fest/README.md +760 -0
  196. package/test/cypress/node_modules/universalify/README.md +76 -0
  197. package/test/cypress/node_modules/untildify/README.md +30 -0
  198. package/test/cypress/node_modules/uuid/README.md +505 -0
  199. package/test/cypress/node_modules/verror/README.md +528 -0
  200. package/test/cypress/node_modules/verror/node_modules/extsprintf/README.md +46 -0
  201. package/test/cypress/node_modules/which/README.md +54 -0
  202. package/test/cypress/node_modules/wrap-ansi/README.md +91 -0
  203. package/test/cypress/node_modules/wrappy/README.md +36 -0
  204. package/test/cypress/node_modules/yallist/README.md +204 -0
  205. package/test/cypress/node_modules/yauzl/README.md +658 -0
@@ -0,0 +1,574 @@
1
+ A light, featureful and explicit option parsing library for node.js.
2
+
3
+ [Why another one? See below](#why). tl;dr: The others I've tried are one of
4
+ too loosey goosey (not explicit), too big/too many deps, or ill specified.
5
+ YMMV.
6
+
7
+ Follow <a href="https://twitter.com/intent/user?screen_name=trentmick" target="_blank">@trentmick</a>
8
+ for updates to node-dashdash.
9
+
10
+ # Install
11
+
12
+ npm install dashdash
13
+
14
+
15
+ # Usage
16
+
17
+ ```javascript
18
+ var dashdash = require('dashdash');
19
+
20
+ // Specify the options. Minimally `name` (or `names`) and `type`
21
+ // must be given for each.
22
+ var options = [
23
+ {
24
+ // `names` or a single `name`. First element is the `opts.KEY`.
25
+ names: ['help', 'h'],
26
+ // See "Option specs" below for types.
27
+ type: 'bool',
28
+ help: 'Print this help and exit.'
29
+ }
30
+ ];
31
+
32
+ // Shortcut form. As called it infers `process.argv`. See below for
33
+ // the longer form to use methods like `.help()` on the Parser object.
34
+ var opts = dashdash.parse({options: options});
35
+
36
+ console.log("opts:", opts);
37
+ console.log("args:", opts._args);
38
+ ```
39
+
40
+
41
+ # Longer Example
42
+
43
+ A more realistic [starter script "foo.js"](./examples/foo.js) is as follows.
44
+ This also shows using `parser.help()` for formatted option help.
45
+
46
+ ```javascript
47
+ var dashdash = require('./lib/dashdash');
48
+
49
+ var options = [
50
+ {
51
+ name: 'version',
52
+ type: 'bool',
53
+ help: 'Print tool version and exit.'
54
+ },
55
+ {
56
+ names: ['help', 'h'],
57
+ type: 'bool',
58
+ help: 'Print this help and exit.'
59
+ },
60
+ {
61
+ names: ['verbose', 'v'],
62
+ type: 'arrayOfBool',
63
+ help: 'Verbose output. Use multiple times for more verbose.'
64
+ },
65
+ {
66
+ names: ['file', 'f'],
67
+ type: 'string',
68
+ help: 'File to process',
69
+ helpArg: 'FILE'
70
+ }
71
+ ];
72
+
73
+ var parser = dashdash.createParser({options: options});
74
+ try {
75
+ var opts = parser.parse(process.argv);
76
+ } catch (e) {
77
+ console.error('foo: error: %s', e.message);
78
+ process.exit(1);
79
+ }
80
+
81
+ console.log("# opts:", opts);
82
+ console.log("# args:", opts._args);
83
+
84
+ // Use `parser.help()` for formatted options help.
85
+ if (opts.help) {
86
+ var help = parser.help({includeEnv: true}).trimRight();
87
+ console.log('usage: node foo.js [OPTIONS]\n'
88
+ + 'options:\n'
89
+ + help);
90
+ process.exit(0);
91
+ }
92
+
93
+ // ...
94
+ ```
95
+
96
+
97
+ Some example output from this script (foo.js):
98
+
99
+ ```
100
+ $ node foo.js -h
101
+ # opts: { help: true,
102
+ _order: [ { name: 'help', value: true, from: 'argv' } ],
103
+ _args: [] }
104
+ # args: []
105
+ usage: node foo.js [OPTIONS]
106
+ options:
107
+ --version Print tool version and exit.
108
+ -h, --help Print this help and exit.
109
+ -v, --verbose Verbose output. Use multiple times for more verbose.
110
+ -f FILE, --file=FILE File to process
111
+
112
+ $ node foo.js -v
113
+ # opts: { verbose: [ true ],
114
+ _order: [ { name: 'verbose', value: true, from: 'argv' } ],
115
+ _args: [] }
116
+ # args: []
117
+
118
+ $ node foo.js --version arg1
119
+ # opts: { version: true,
120
+ _order: [ { name: 'version', value: true, from: 'argv' } ],
121
+ _args: [ 'arg1' ] }
122
+ # args: [ 'arg1' ]
123
+
124
+ $ node foo.js -f bar.txt
125
+ # opts: { file: 'bar.txt',
126
+ _order: [ { name: 'file', value: 'bar.txt', from: 'argv' } ],
127
+ _args: [] }
128
+ # args: []
129
+
130
+ $ node foo.js -vvv --file=blah
131
+ # opts: { verbose: [ true, true, true ],
132
+ file: 'blah',
133
+ _order:
134
+ [ { name: 'verbose', value: true, from: 'argv' },
135
+ { name: 'verbose', value: true, from: 'argv' },
136
+ { name: 'verbose', value: true, from: 'argv' },
137
+ { name: 'file', value: 'blah', from: 'argv' } ],
138
+ _args: [] }
139
+ # args: []
140
+ ```
141
+
142
+
143
+ See the ["examples"](examples/) dir for a number of starter examples using
144
+ some of dashdash's features.
145
+
146
+
147
+ # Environment variable integration
148
+
149
+ If you want to allow environment variables to specify options to your tool,
150
+ dashdash makes this easy. We can change the 'verbose' option in the example
151
+ above to include an 'env' field:
152
+
153
+ ```javascript
154
+ {
155
+ names: ['verbose', 'v'],
156
+ type: 'arrayOfBool',
157
+ env: 'FOO_VERBOSE', // <--- add this line
158
+ help: 'Verbose output. Use multiple times for more verbose.'
159
+ },
160
+ ```
161
+
162
+ then the **"FOO_VERBOSE" environment variable** can be used to set this
163
+ option:
164
+
165
+ ```shell
166
+ $ FOO_VERBOSE=1 node foo.js
167
+ # opts: { verbose: [ true ],
168
+ _order: [ { name: 'verbose', value: true, from: 'env' } ],
169
+ _args: [] }
170
+ # args: []
171
+ ```
172
+
173
+ Boolean options will interpret the empty string as unset, '0' as false
174
+ and anything else as true.
175
+
176
+ ```shell
177
+ $ FOO_VERBOSE= node examples/foo.js # not set
178
+ # opts: { _order: [], _args: [] }
179
+ # args: []
180
+
181
+ $ FOO_VERBOSE=0 node examples/foo.js # '0' is false
182
+ # opts: { verbose: [ false ],
183
+ _order: [ { key: 'verbose', value: false, from: 'env' } ],
184
+ _args: [] }
185
+ # args: []
186
+
187
+ $ FOO_VERBOSE=1 node examples/foo.js # true
188
+ # opts: { verbose: [ true ],
189
+ _order: [ { key: 'verbose', value: true, from: 'env' } ],
190
+ _args: [] }
191
+ # args: []
192
+
193
+ $ FOO_VERBOSE=boogabooga node examples/foo.js # true
194
+ # opts: { verbose: [ true ],
195
+ _order: [ { key: 'verbose', value: true, from: 'env' } ],
196
+ _args: [] }
197
+ # args: []
198
+ ```
199
+
200
+ Non-booleans can be used as well. Strings:
201
+
202
+ ```shell
203
+ $ FOO_FILE=data.txt node examples/foo.js
204
+ # opts: { file: 'data.txt',
205
+ _order: [ { key: 'file', value: 'data.txt', from: 'env' } ],
206
+ _args: [] }
207
+ # args: []
208
+ ```
209
+
210
+ Numbers:
211
+
212
+ ```shell
213
+ $ FOO_TIMEOUT=5000 node examples/foo.js
214
+ # opts: { timeout: 5000,
215
+ _order: [ { key: 'timeout', value: 5000, from: 'env' } ],
216
+ _args: [] }
217
+ # args: []
218
+
219
+ $ FOO_TIMEOUT=blarg node examples/foo.js
220
+ foo: error: arg for "FOO_TIMEOUT" is not a positive integer: "blarg"
221
+ ```
222
+
223
+ With the `includeEnv: true` config to `parser.help()` the environment
224
+ variable can also be included in **help output**:
225
+
226
+ usage: node foo.js [OPTIONS]
227
+ options:
228
+ --version Print tool version and exit.
229
+ -h, --help Print this help and exit.
230
+ -v, --verbose Verbose output. Use multiple times for more verbose.
231
+ Environment: FOO_VERBOSE=1
232
+ -f FILE, --file=FILE File to process
233
+
234
+
235
+ # Bash completion
236
+
237
+ Dashdash provides a simple way to create a Bash completion file that you
238
+ can place in your "bash_completion.d" directory -- sometimes that is
239
+ "/usr/local/etc/bash_completion.d/"). Features:
240
+
241
+ - Support for short and long opts
242
+ - Support for knowing which options take arguments
243
+ - Support for subcommands (e.g. 'git log <TAB>' to show just options for the
244
+ log subcommand). See
245
+ [node-cmdln](https://github.com/trentm/node-cmdln#bash-completion) for
246
+ how to integrate that.
247
+ - Does the right thing with "--" to stop options.
248
+ - Custom optarg and arg types for custom completions.
249
+
250
+ Dashdash will return bash completion file content given a parser instance:
251
+
252
+ var parser = dashdash.createParser({options: options});
253
+ console.log( parser.bashCompletion({name: 'mycli'}) );
254
+
255
+ or directly from a `options` array of options specs:
256
+
257
+ var code = dashdash.bashCompletionFromOptions({
258
+ name: 'mycli',
259
+ options: OPTIONS
260
+ });
261
+
262
+ Write that content to "/usr/local/etc/bash_completion.d/mycli" and you will
263
+ have Bash completions for `mycli`. Alternatively you can write it to
264
+ any file (e.g. "~/.bashrc") and source it.
265
+
266
+ You could add a `--completion` hidden option to your tool that emits the
267
+ completion content and document for your users to call that to install
268
+ Bash completions.
269
+
270
+ See [examples/ddcompletion.js](examples/ddcompletion.js) for a complete
271
+ example, including how one can define bash functions for completion of custom
272
+ option types. Also see [node-cmdln](https://github.com/trentm/node-cmdln) for
273
+ how it uses this for Bash completion for full multi-subcommand tools.
274
+
275
+ - TODO: document specExtra
276
+ - TODO: document includeHidden
277
+ - TODO: document custom types, `function complete\_FOO` guide, completionType
278
+ - TODO: document argtypes
279
+
280
+
281
+ # Parser config
282
+
283
+ Parser construction (i.e. `dashdash.createParser(CONFIG)`) takes the
284
+ following fields:
285
+
286
+ - `options` (Array of option specs). Required. See the
287
+ [Option specs](#option-specs) section below.
288
+
289
+ - `interspersed` (Boolean). Optional. Default is true. If true this allows
290
+ interspersed arguments and options. I.e.:
291
+
292
+ node ./tool.js -v arg1 arg2 -h # '-h' is after interspersed args
293
+
294
+ Set it to false to have '-h' **not** get parsed as an option in the above
295
+ example.
296
+
297
+ - `allowUnknown` (Boolean). Optional. Default is false. If false, this causes
298
+ unknown arguments to throw an error. I.e.:
299
+
300
+ node ./tool.js -v arg1 --afe8asefksjefhas
301
+
302
+ Set it to true to treat the unknown option as a positional
303
+ argument.
304
+
305
+ **Caveat**: When a shortopt group, such as `-xaz` contains a mix of
306
+ known and unknown options, the *entire* group is passed through
307
+ unmolested as a positional argument.
308
+
309
+ Consider if you have a known short option `-a`, and parse the
310
+ following command line:
311
+
312
+ node ./tool.js -xaz
313
+
314
+ where `-x` and `-z` are unknown. There are multiple ways to
315
+ interpret this:
316
+
317
+ 1. `-x` takes a value: `{x: 'az'}`
318
+ 2. `-x` and `-z` are both booleans: `{x:true,a:true,z:true}`
319
+
320
+ Since dashdash does not know what `-x` and `-z` are, it can't know
321
+ if you'd prefer to receive `{a:true,_args:['-x','-z']}` or
322
+ `{x:'az'}`, or `{_args:['-xaz']}`. Leaving the positional arg unprocessed
323
+ is the easiest mistake for the user to recover from.
324
+
325
+
326
+ # Option specs
327
+
328
+ Example using all fields (required fields are noted):
329
+
330
+ ```javascript
331
+ {
332
+ names: ['file', 'f'], // Required (one of `names` or `name`).
333
+ type: 'string', // Required.
334
+ completionType: 'filename',
335
+ env: 'MYTOOL_FILE',
336
+ help: 'Config file to load before running "mytool"',
337
+ helpArg: 'PATH',
338
+ helpWrap: false,
339
+ default: path.resolve(process.env.HOME, '.mytoolrc')
340
+ }
341
+ ```
342
+
343
+ Each option spec in the `options` array must/can have the following fields:
344
+
345
+ - `name` (String) or `names` (Array). Required. These give the option name
346
+ and aliases. The first name (if more than one given) is the key for the
347
+ parsed `opts` object.
348
+
349
+ - `type` (String). Required. One of:
350
+
351
+ - bool
352
+ - string
353
+ - number
354
+ - integer
355
+ - positiveInteger
356
+ - date (epoch seconds, e.g. 1396031701, or ISO 8601 format
357
+ `YYYY-MM-DD[THH:MM:SS[.sss][Z]]`, e.g. "2014-03-28T18:35:01.489Z")
358
+ - arrayOfBool
359
+ - arrayOfString
360
+ - arrayOfNumber
361
+ - arrayOfInteger
362
+ - arrayOfPositiveInteger
363
+ - arrayOfDate
364
+
365
+ FWIW, these names attempt to match with asserts on
366
+ [assert-plus](https://github.com/mcavage/node-assert-plus).
367
+ You can add your own custom option types with `dashdash.addOptionType`.
368
+ See below.
369
+
370
+ - `completionType` (String). Optional. This is used for [Bash
371
+ completion](#bash-completion) for an option argument. If not specified,
372
+ then the value of `type` is used. Any string may be specified, but only the
373
+ following values have meaning:
374
+
375
+ - `none`: Provide no completions.
376
+ - `file`: Bash's default completion (i.e. `complete -o default`), which
377
+ includes filenames.
378
+ - *Any string FOO for which a `function complete_FOO` Bash function is
379
+ defined.* This is for custom completions for a given tool. Typically
380
+ these custom functions are provided in the `specExtra` argument to
381
+ `dashdash.bashCompletionFromOptions()`. See
382
+ ["examples/ddcompletion.js"](examples/ddcompletion.js) for an example.
383
+
384
+ - `env` (String or Array of String). Optional. An environment variable name
385
+ (or names) that can be used as a fallback for this option. For example,
386
+ given a "foo.js" like this:
387
+
388
+ var options = [{names: ['dry-run', 'n'], env: 'FOO_DRY_RUN'}];
389
+ var opts = dashdash.parse({options: options});
390
+
391
+ Both `node foo.js --dry-run` and `FOO_DRY_RUN=1 node foo.js` would result
392
+ in `opts.dry_run = true`.
393
+
394
+ An environment variable is only used as a fallback, i.e. it is ignored if
395
+ the associated option is given in `argv`.
396
+
397
+ - `help` (String). Optional. Used for `parser.help()` output.
398
+
399
+ - `helpArg` (String). Optional. Used in help output as the placeholder for
400
+ the option argument, e.g. the "PATH" in:
401
+
402
+ ...
403
+ -f PATH, --file=PATH File to process
404
+ ...
405
+
406
+ - `helpWrap` (Boolean). Optional, default true. Set this to `false` to have
407
+ that option's `help` *not* be text wrapped in `<parser>.help()` output.
408
+
409
+ - `default`. Optional. A default value used for this option, if the
410
+ option isn't specified in argv.
411
+
412
+ - `hidden` (Boolean). Optional, default false. If true, help output will not
413
+ include this option. See also the `includeHidden` option to
414
+ `bashCompletionFromOptions()` for [Bash completion](#bash-completion).
415
+
416
+
417
+ # Option group headings
418
+
419
+ You can add headings between option specs in the `options` array. To do so,
420
+ simply add an object with only a `group` property -- the string to print as
421
+ the heading for the subsequent options in the array. For example:
422
+
423
+ ```javascript
424
+ var options = [
425
+ {
426
+ group: 'Armament Options'
427
+ },
428
+ {
429
+ names: [ 'weapon', 'w' ],
430
+ type: 'string'
431
+ },
432
+ {
433
+ group: 'General Options'
434
+ },
435
+ {
436
+ names: [ 'help', 'h' ],
437
+ type: 'bool'
438
+ }
439
+ ];
440
+ ...
441
+ ```
442
+
443
+ Note: You can use an empty string, `{group: ''}`, to get a blank line in help
444
+ output between groups of options.
445
+
446
+
447
+ # Help config
448
+
449
+ The `parser.help(...)` function is configurable as follows:
450
+
451
+ Options:
452
+ Armament Options:
453
+ ^^ -w WEAPON, --weapon=WEAPON Weapon with which to crush. One of: |
454
+ / sword, spear, maul |
455
+ / General Options: |
456
+ / -h, --help Print this help and exit. |
457
+ / ^^^^ ^ |
458
+ \ `-- indent `-- helpCol maxCol ---'
459
+ `-- headingIndent
460
+
461
+ - `indent` (Number or String). Default 4. Set to a number (for that many
462
+ spaces) or a string for the literal indent.
463
+ - `headingIndent` (Number or String). Default half length of `indent`. Set to
464
+ a number (for that many spaces) or a string for the literal indent. This
465
+ indent applies to group heading lines, between normal option lines.
466
+ - `nameSort` (String). Default is 'length'. By default the names are
467
+ sorted to put the short opts first (i.e. '-h, --help' preferred
468
+ to '--help, -h'). Set to 'none' to not do this sorting.
469
+ - `maxCol` (Number). Default 80. Note that reflow is just done on whitespace
470
+ so a long token in the option help can overflow maxCol.
471
+ - `helpCol` (Number). If not set a reasonable value will be determined
472
+ between `minHelpCol` and `maxHelpCol`.
473
+ - `minHelpCol` (Number). Default 20.
474
+ - `maxHelpCol` (Number). Default 40.
475
+ - `helpWrap` (Boolean). Default true. Set to `false` to have option `help`
476
+ strings *not* be textwrapped to the helpCol..maxCol range.
477
+ - `includeEnv` (Boolean). Default false. If the option has associated
478
+ environment variables (via the `env` option spec attribute), then
479
+ append mentioned of those envvars to the help string.
480
+ - `includeDefault` (Boolean). Default false. If the option has a default value
481
+ (via the `default` option spec attribute, or a default on the option's type),
482
+ then a "Default: VALUE" string will be appended to the help string.
483
+
484
+
485
+ # Custom option types
486
+
487
+ Dashdash includes a good starter set of option types that it will parse for
488
+ you. However, you can add your own via:
489
+
490
+ var dashdash = require('dashdash');
491
+ dashdash.addOptionType({
492
+ name: '...',
493
+ takesArg: true,
494
+ helpArg: '...',
495
+ parseArg: function (option, optstr, arg) {
496
+ ...
497
+ },
498
+ array: false, // optional
499
+ arrayFlatten: false, // optional
500
+ default: ..., // optional
501
+ completionType: ... // optional
502
+ });
503
+
504
+ For example, a simple option type that accepts 'yes', 'y', 'no' or 'n' as
505
+ a boolean argument would look like:
506
+
507
+ var dashdash = require('dashdash');
508
+
509
+ function parseYesNo(option, optstr, arg) {
510
+ var argLower = arg.toLowerCase()
511
+ if (~['yes', 'y'].indexOf(argLower)) {
512
+ return true;
513
+ } else if (~['no', 'n'].indexOf(argLower)) {
514
+ return false;
515
+ } else {
516
+ throw new Error(format(
517
+ 'arg for "%s" is not "yes" or "no": "%s"',
518
+ optstr, arg));
519
+ }
520
+ }
521
+
522
+ dashdash.addOptionType({
523
+ name: 'yesno'
524
+ takesArg: true,
525
+ helpArg: '<yes|no>',
526
+ parseArg: parseYesNo
527
+ });
528
+
529
+ var options = {
530
+ {names: ['answer', 'a'], type: 'yesno'}
531
+ };
532
+ var opts = dashdash.parse({options: options});
533
+
534
+ See "examples/custom-option-\*.js" for other examples.
535
+ See the `addOptionType` block comment in "lib/dashdash.js" for more details.
536
+ Please let me know [with an
537
+ issue](https://github.com/trentm/node-dashdash/issues/new) if you write a
538
+ generally useful one.
539
+
540
+
541
+
542
+ # Why
543
+
544
+ Why another node.js option parsing lib?
545
+
546
+ - `nopt` really is just for "tools like npm". Implicit opts (e.g. '--no-foo'
547
+ works for every '--foo'). Can't disable abbreviated opts. Can't do multiple
548
+ usages of same opt, e.g. '-vvv' (I think). Can't do grouped short opts.
549
+
550
+ - `optimist` has surprise interpretation of options (at least to me).
551
+ Implicit opts mean ambiguities and poor error handling for fat-fingering.
552
+ `process.exit` calls makes it hard to use as a libary.
553
+
554
+ - `optparse` Incomplete docs. Is this an attempted clone of Python's `optparse`.
555
+ Not clear. Some divergence. `parser.on("name", ...)` API is weird.
556
+
557
+ - `argparse` Dep on underscore. No thanks just for option processing.
558
+ `find lib | wc -l` -> `26`. Overkill.
559
+ Argparse is a bit different anyway. Not sure I want that.
560
+
561
+ - `posix-getopt` No type validation. Though that isn't a killer. AFAIK can't
562
+ have a long opt without a short alias. I.e. no `getopt_long` semantics.
563
+ Also, no whizbang features like generated help output.
564
+
565
+ - ["commander.js"](https://github.com/visionmedia/commander.js): I wrote
566
+ [a critique](http://trentm.com/2014/01/a-critique-of-commander-for-nodejs.html)
567
+ a while back. It seems fine, but last I checked had
568
+ [an outstanding bug](https://github.com/visionmedia/commander.js/pull/121)
569
+ that would prevent me from using it.
570
+
571
+
572
+ # License
573
+
574
+ MIT. See LICENSE.txt.
@@ -0,0 +1,128 @@
1
+ English | [简体中文](./docs/zh-cn/README.zh-CN.md) | [日本語](./docs/ja/README-ja.md) | [Português Brasileiro](./docs/pt-br/README-pt-br.md) | [한국어](./docs/ko/README-ko.md) | [Español (España)](./docs/es-es/README-es-es.md) | [Русский](./docs/ru/README-ru.md)
2
+
3
+ <p align="center"><a href="https://day.js.org/" target="_blank" rel="noopener noreferrer"><img width="550"
4
+ src="https://user-images.githubusercontent.com/17680888/39081119-3057bbe2-456e-11e8-862c-646133ad4b43.png"
5
+ alt="Day.js"></a></p>
6
+ <p align="center">Fast <b>2kB</b> alternative to Moment.js with the same modern API</p>
7
+ <p align="center">
8
+ <a href="https://www.duohui.cn?utm_source=dayjs" title="多会 - 专业活动管理系统" target="_blank"><img height="120px" width="120px" alt="多会" src="https://user-images.githubusercontent.com/17680888/97983132-c433bd80-1e0f-11eb-8dde-9f216e05ee8a.png"/></a></p>
9
+ <p align="center">
10
+ <a href="https://unpkg.com/dayjs/dayjs.min.js"><img
11
+ src="http://img.badgesize.io/https://unpkg.com/dayjs/dayjs.min.js?compression=gzip&style=flat-square"
12
+ alt="Gzip Size"></a>
13
+ <a href="https://www.npmjs.com/package/dayjs"><img src="https://img.shields.io/npm/v/dayjs.svg?style=flat-square&colorB=51C838"
14
+ alt="NPM Version"></a>
15
+ <a href="https://travis-ci.com/iamkun/dayjs"><img
16
+ src="https://img.shields.io/travis/iamkun/dayjs/master.svg?style=flat-square" alt="Build Status"></a>
17
+ <a href="https://codecov.io/gh/iamkun/dayjs"><img
18
+ src="https://img.shields.io/codecov/c/github/iamkun/dayjs/master.svg?style=flat-square" alt="Codecov"></a>
19
+ <a href="https://github.com/iamkun/dayjs/blob/master/LICENSE"><img
20
+ src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square" alt="License"></a>
21
+ <br>
22
+ <a href="https://saucelabs.com/u/dayjs">
23
+ <img width="750" src="https://user-images.githubusercontent.com/17680888/40040137-8e3323a6-584b-11e8-9dba-bbe577ee8a7b.png" alt="Sauce Test Status">
24
+ </a>
25
+ </p>
26
+
27
+ > Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API. If you use Moment.js, you already know how to use Day.js.
28
+
29
+ ```js
30
+ dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
31
+ ```
32
+
33
+ * 🕒 Familiar Moment.js API & patterns
34
+ * 💪 Immutable
35
+ * 🔥 Chainable
36
+ * 🌐 I18n support
37
+ * 📦 2kb mini library
38
+ * 👫 All browsers supported
39
+
40
+ ---
41
+
42
+ ## Getting Started
43
+
44
+ ### Documentation
45
+
46
+ You can find for more details, API, and other docs on [day.js.org](https://day.js.org/) website.
47
+
48
+ ### Installation
49
+
50
+ ```console
51
+ npm install dayjs --save
52
+ ```
53
+
54
+ 📚[Installation Guide](https://day.js.org/docs/en/installation/installation)
55
+
56
+ ### API
57
+
58
+ It's easy to use Day.js APIs to parse, validate, manipulate, and display dates and times.
59
+
60
+ ```javascript
61
+ dayjs('2018-08-08') // parse
62
+
63
+ dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // display
64
+
65
+ dayjs().set('month', 3).month() // get & set
66
+
67
+ dayjs().add(1, 'year') // manipulate
68
+
69
+ dayjs().isBefore(dayjs()) // query
70
+ ```
71
+
72
+ 📚[API Reference](https://day.js.org/docs/en/parse/parse)
73
+
74
+ ### I18n
75
+
76
+ Day.js has great support for internationalization.
77
+
78
+ But none of them will be included in your build unless you use it.
79
+
80
+ ```javascript
81
+ import 'dayjs/locale/es' // load on demand
82
+
83
+ dayjs.locale('es') // use Spanish locale globally
84
+
85
+ dayjs('2018-05-05').locale('zh-cn').format() // use Chinese Simplified locale in a specific instance
86
+ ```
87
+ 📚[Internationalization](https://day.js.org/docs/en/i18n/i18n)
88
+
89
+ ### Plugin
90
+
91
+ A plugin is an independent module that can be added to Day.js to extend functionality or add new features.
92
+
93
+ ```javascript
94
+ import advancedFormat from 'dayjs/plugin/advancedFormat' // load on demand
95
+
96
+ dayjs.extend(advancedFormat) // use plugin
97
+
98
+ dayjs().format('Q Do k kk X x') // more available formats
99
+ ```
100
+
101
+ 📚[Plugin List](https://day.js.org/docs/en/plugin/plugin)
102
+
103
+ ## Sponsors
104
+
105
+ Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/dayjs#sponsor)]
106
+
107
+ <a href="https://opencollective.com/dayjs/sponsor/0/website" target="_blank"><img src="https://opencollective.com/dayjs/sponsor/0/avatar.svg"></a>
108
+ <a href="https://opencollective.com/dayjs/sponsor/1/website" target="_blank"><img src="https://opencollective.com/dayjs/sponsor/1/avatar.svg"></a>
109
+ <a href="https://opencollective.com/dayjs/sponsor/2/website" target="_blank"><img src="https://opencollective.com/dayjs/sponsor/2/avatar.svg"></a>
110
+ <a href="https://opencollective.com/dayjs/sponsor/3/website" target="_blank"><img src="https://opencollective.com/dayjs/sponsor/3/avatar.svg"></a>
111
+
112
+ ## Contributors
113
+
114
+ This project exists thanks to all the people who contribute.
115
+
116
+ Please give us a 💖 star 💖 to support us. Thank you.
117
+
118
+ And thank you to all our backers! 🙏
119
+
120
+ <a href="https://opencollective.com/dayjs/backer/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/dayjs/backer/0/avatar.svg?requireActive=false"></a>
121
+ <a href="https://opencollective.com/dayjs/backer/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/dayjs/backer/1/avatar.svg?requireActive=false"></a>
122
+ <a href="https://opencollective.com/dayjs/backer/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/dayjs/backer/2/avatar.svg?requireActive=false"></a>
123
+ <a href="https://opencollective.com/dayjs/backer/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/dayjs/backer/3/avatar.svg?requireActive=false"></a>
124
+ <a href="https://opencollective.com/dayjs#backers" target="_blank"><img src="https://opencollective.com/dayjs/contributors.svg?width=890" /></a>
125
+
126
+ ## License
127
+
128
+ Day.js is licensed under a [MIT License](./LICENSE).