vbapm 0.6.3-alpha

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 (167) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +246 -0
  3. package/lib/_commonjsHelpers-553b27b3.js +2 -0
  4. package/lib/_commonjsHelpers-553b27b3.js.map +1 -0
  5. package/lib/build-project-55e5df48.js +4 -0
  6. package/lib/build-project-55e5df48.js.map +1 -0
  7. package/lib/build-target-283e1e7d.js +10 -0
  8. package/lib/build-target-283e1e7d.js.map +1 -0
  9. package/lib/create-project-905598ca.js +11 -0
  10. package/lib/create-project-905598ca.js.map +1 -0
  11. package/lib/debug.js +2 -0
  12. package/lib/debug.js.map +1 -0
  13. package/lib/export-project-55168787.js +5 -0
  14. package/lib/export-project-55168787.js.map +1 -0
  15. package/lib/export-target-c9ddd2fa.js +5 -0
  16. package/lib/export-target-c9ddd2fa.js.map +1 -0
  17. package/lib/get-target-23b8cc04.js +12 -0
  18. package/lib/get-target-23b8cc04.js.map +1 -0
  19. package/lib/index-35cff1d5.js +38 -0
  20. package/lib/index-35cff1d5.js.map +1 -0
  21. package/lib/index-87f55e79.js +4 -0
  22. package/lib/index-87f55e79.js.map +1 -0
  23. package/lib/index-b49bd5b2.js +2 -0
  24. package/lib/index-b49bd5b2.js.map +1 -0
  25. package/lib/index-c97017db.js +2 -0
  26. package/lib/index-c97017db.js.map +1 -0
  27. package/lib/index-d9ba3ba0.js +6 -0
  28. package/lib/index-d9ba3ba0.js.map +1 -0
  29. package/lib/index-ffbba08f.js +3 -0
  30. package/lib/index-ffbba08f.js.map +1 -0
  31. package/lib/index.js +2 -0
  32. package/lib/index.js.map +1 -0
  33. package/lib/inherits-713f4554.js +2 -0
  34. package/lib/inherits-713f4554.js.map +1 -0
  35. package/lib/init-project-a62cb644.js +16 -0
  36. package/lib/init-project-a62cb644.js.map +1 -0
  37. package/lib/load-from-project-e6530a69.js +6 -0
  38. package/lib/load-from-project-e6530a69.js.map +1 -0
  39. package/lib/minimatch-3a1d1fa9.js +2 -0
  40. package/lib/minimatch-3a1d1fa9.js.map +1 -0
  41. package/lib/once-9eb67b4f.js +2 -0
  42. package/lib/once-9eb67b4f.js.map +1 -0
  43. package/lib/project-d43b4e0c.js +30 -0
  44. package/lib/project-d43b4e0c.js.map +1 -0
  45. package/lib/run-macro-f4aa7c14.js +2 -0
  46. package/lib/run-macro-f4aa7c14.js.map +1 -0
  47. package/lib/sat-solver-01d6409e.js +2 -0
  48. package/lib/sat-solver-01d6409e.js.map +1 -0
  49. package/lib/src/actions/build-project.d.ts +2 -0
  50. package/lib/src/actions/create-project.d.ts +8 -0
  51. package/lib/src/actions/export-project.d.ts +6 -0
  52. package/lib/src/actions/increment-version.d.ts +5 -0
  53. package/lib/src/actions/init-project.d.ts +9 -0
  54. package/lib/src/actions/run-macro.d.ts +8 -0
  55. package/lib/src/actions/test-project.d.ts +5 -0
  56. package/lib/src/addin.d.ts +36 -0
  57. package/lib/src/bin/vba-blocks-build.d.ts +2 -0
  58. package/lib/src/bin/vba-blocks-export.d.ts +2 -0
  59. package/lib/src/bin/vba-blocks-init.d.ts +2 -0
  60. package/lib/src/bin/vba-blocks-new.d.ts +2 -0
  61. package/lib/src/bin/vba-blocks-run.d.ts +2 -0
  62. package/lib/src/bin/vba-blocks-test.d.ts +2 -0
  63. package/lib/src/bin/vba-blocks-version.d.ts +2 -0
  64. package/lib/src/bin/vba-blocks.d.ts +2 -0
  65. package/lib/src/build/apply-changeset.d.ts +3 -0
  66. package/lib/src/build/build-graph.d.ts +18 -0
  67. package/lib/src/build/changeset.d.ts +14 -0
  68. package/lib/src/build/compare-build-graphs.d.ts +3 -0
  69. package/lib/src/build/component.d.ts +25 -0
  70. package/lib/src/build/index.d.ts +7 -0
  71. package/lib/src/build/load-from-export.d.ts +2 -0
  72. package/lib/src/build/load-from-project.d.ts +5 -0
  73. package/lib/src/build/stage-build-graph.d.ts +2 -0
  74. package/lib/src/build/transform-build-graph.d.ts +3 -0
  75. package/lib/src/build/transforms/editor-config.d.ts +3 -0
  76. package/lib/src/cache.d.ts +9 -0
  77. package/lib/src/config.d.ts +29 -0
  78. package/lib/src/debug.d.ts +2 -0
  79. package/lib/src/env.d.ts +21 -0
  80. package/lib/src/errors.d.ts +56 -0
  81. package/lib/src/index.d.ts +16 -0
  82. package/lib/src/installer.d.ts +3 -0
  83. package/lib/src/lockfile/index.d.ts +23 -0
  84. package/lib/src/lockfile/is-lockfile-valid.d.ts +10 -0
  85. package/lib/src/lockfile/lockfile.d.ts +26 -0
  86. package/lib/src/manifest/dependency.d.ts +25 -0
  87. package/lib/src/manifest/index.d.ts +34 -0
  88. package/lib/src/manifest/reference.d.ts +12 -0
  89. package/lib/src/manifest/source.d.ts +8 -0
  90. package/lib/src/manifest/target.d.ts +10 -0
  91. package/lib/src/manifest/version.d.ts +3 -0
  92. package/lib/src/messages.d.ts +22 -0
  93. package/lib/src/professional/sources/git-source.d.ts +7 -0
  94. package/lib/src/professional/workspace.d.ts +10 -0
  95. package/lib/src/project.d.ts +48 -0
  96. package/lib/src/reporter.d.ts +12 -0
  97. package/lib/src/resolve/dependency-graph.d.ts +4 -0
  98. package/lib/src/resolve/index.d.ts +6 -0
  99. package/lib/src/resolve/latest-solver.d.ts +8 -0
  100. package/lib/src/resolve/resolver.d.ts +23 -0
  101. package/lib/src/resolve/sat-solver.d.ts +7 -0
  102. package/lib/src/sources/index.d.ts +16 -0
  103. package/lib/src/sources/path-source.d.ts +7 -0
  104. package/lib/src/sources/registration.d.ts +17 -0
  105. package/lib/src/sources/registry-source.d.ts +32 -0
  106. package/lib/src/sources/source.d.ts +6 -0
  107. package/lib/src/targets/add-target.d.ts +8 -0
  108. package/lib/src/targets/build-target.d.ts +41 -0
  109. package/lib/src/targets/export-target.d.ts +15 -0
  110. package/lib/src/targets/get-target.d.ts +7 -0
  111. package/lib/src/targets/index.d.ts +3 -0
  112. package/lib/src/targets/project-info.d.ts +7 -0
  113. package/lib/src/targets/transform-target.d.ts +3 -0
  114. package/lib/src/targets/transforms/core-xml.d.ts +2 -0
  115. package/lib/src/targets/transforms/workbook-xml.d.ts +2 -0
  116. package/lib/src/utils/async-map.d.ts +4 -0
  117. package/lib/src/utils/download.d.ts +1 -0
  118. package/lib/src/utils/fs.d.ts +23 -0
  119. package/lib/src/utils/get-staging.d.ts +1 -0
  120. package/lib/src/utils/git.d.ts +4 -0
  121. package/lib/src/utils/github.d.ts +9 -0
  122. package/lib/src/utils/has.d.ts +1 -0
  123. package/lib/src/utils/hash.d.ts +8 -0
  124. package/lib/src/utils/interop.d.ts +1 -0
  125. package/lib/src/utils/is.d.ts +5 -0
  126. package/lib/src/utils/noop.d.ts +1 -0
  127. package/lib/src/utils/observable.d.ts +15 -0
  128. package/lib/src/utils/parallel.d.ts +6 -0
  129. package/lib/src/utils/path.d.ts +7 -0
  130. package/lib/src/utils/pipe.d.ts +5 -0
  131. package/lib/src/utils/run.d.ts +17 -0
  132. package/lib/src/utils/stdout-file.d.ts +3 -0
  133. package/lib/src/utils/text.d.ts +4 -0
  134. package/lib/src/utils/toml.d.ts +4 -0
  135. package/lib/src/utils/unique.d.ts +1 -0
  136. package/lib/src/utils/without.d.ts +1 -0
  137. package/lib/src/utils/xml.d.ts +10 -0
  138. package/lib/src/utils/zip.d.ts +17 -0
  139. package/lib/test-project-d4f237d1.js +2 -0
  140. package/lib/test-project-d4f237d1.js.map +1 -0
  141. package/lib/text-ba532b40.js +10 -0
  142. package/lib/text-ba532b40.js.map +1 -0
  143. package/lib/tmp-bc08ebcf.js +10 -0
  144. package/lib/tmp-bc08ebcf.js.map +1 -0
  145. package/lib/toml-patch.es-6bd2145d.js +4 -0
  146. package/lib/toml-patch.es-6bd2145d.js.map +1 -0
  147. package/lib/vba-blocks-build-a717fcdb.js +10 -0
  148. package/lib/vba-blocks-build-a717fcdb.js.map +1 -0
  149. package/lib/vba-blocks-export-7e2c75cc.js +8 -0
  150. package/lib/vba-blocks-export-7e2c75cc.js.map +1 -0
  151. package/lib/vba-blocks-init-54531020.js +17 -0
  152. package/lib/vba-blocks-init-54531020.js.map +1 -0
  153. package/lib/vba-blocks-new-3210d92c.js +18 -0
  154. package/lib/vba-blocks-new-3210d92c.js.map +1 -0
  155. package/lib/vba-blocks-run-ab9d4ad4.js +11 -0
  156. package/lib/vba-blocks-run-ab9d4ad4.js.map +1 -0
  157. package/lib/vba-blocks-test-da5dba90.js +16 -0
  158. package/lib/vba-blocks-test-da5dba90.js.map +1 -0
  159. package/lib/vba-blocks-version-e1b3c35a.js +9 -0
  160. package/lib/vba-blocks-version-e1b3c35a.js.map +1 -0
  161. package/lib/vba-blocks.js +43 -0
  162. package/lib/vba-blocks.js.map +1 -0
  163. package/lib/workbook-xml-69fff4ae.js +3 -0
  164. package/lib/workbook-xml-69fff4ae.js.map +1 -0
  165. package/package.json +116 -0
  166. package/run-scripts/run.applescript +78 -0
  167. package/run-scripts/run.ps1 +211 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017-2020 Tim Hall, vba-blocks
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,246 @@
1
+ # vba-blocks
2
+
3
+ A package manager and build tool for VBA.
4
+
5
+ ## Installation
6
+
7
+ Requires [Node.js](https://nodejs.org/) v18 or later.
8
+
9
+ ```txt
10
+ npm install -g @vbapm/core
11
+ ```
12
+
13
+ **Mac:** For more recent versions of Office for Mac, you will need to trust access to the VBA project object model for vba-blocks to work correctly:
14
+
15
+ <details>
16
+ <summary>Trust access to the VBA project object model</summary>
17
+ <ol>
18
+ <li>Open Excel</li>
19
+ <li>Click "Excel" in the menu bar</li>
20
+ <li>Select "Preferences" in the menu</li>
21
+ <li>Click "Security" in the Preferences dialog</li>
22
+ <li>Check "Trust access to the VBA project object model" in the Security dialog</li>
23
+ </ol>
24
+ </details>
25
+
26
+ :rocket: You're ready to go! Open a new command-line session (cmd / terminal) and try `vba --help`
27
+
28
+ ### Programmatic Usage
29
+
30
+ You can also use `@vbapm/core` as a library (e.g. from a VS Code extension):
31
+
32
+ ```js
33
+ const { buildProject, loadProject, env } = require("@vbapm/core");
34
+
35
+ // Override working directory
36
+ env.cwd = "/path/to/project";
37
+
38
+ const project = await loadProject();
39
+ await buildProject(project);
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ### `new`
45
+
46
+ Create a new folder with a blank/generated vba-blocks project inside
47
+
48
+ Create a folder "project-name" with a blank xlsm project:
49
+
50
+ ```txt
51
+ vba new project-name.xlsm
52
+ ```
53
+
54
+ (equivalent to above)
55
+
56
+ ```txt
57
+ vba new project-name --target xlsm
58
+ ```
59
+
60
+ Create a folder "from-existing" with a project from an existing workbook:
61
+
62
+ ```txt
63
+ vba new from-existing --from existing.xlsm
64
+ ```
65
+
66
+ Create a blank package for sharing as a library between projects:
67
+
68
+ ```txt
69
+ vba new json-converter --package
70
+ ```
71
+
72
+ ### `init`
73
+
74
+ Create a blank/generated vba-blocks project in the current folder
75
+
76
+ Create a blank xlsm project with the current folder's name:
77
+
78
+ ```txt
79
+ vba init --target xlsm
80
+ ```
81
+
82
+ Create a project from an existing workbook:
83
+
84
+ ```txt
85
+ vba init --from existing.xlsm
86
+ ```
87
+
88
+ Create a blank package:
89
+
90
+ ```txt
91
+ vba init --package
92
+ ```
93
+
94
+ ### `build`
95
+
96
+ Build an Excel workbook from the project's source. The built file is located in the `build/` folder and if a previously built file is found it is moved to `/.backup` to protect against losing any previously saved work.
97
+
98
+ Build a project:
99
+
100
+ ```txt
101
+ vba build
102
+ ```
103
+
104
+ Build and open a project for editing:
105
+
106
+ ```txt
107
+ vba build --open
108
+ ```
109
+
110
+ Build a package using a blank target:
111
+
112
+ ```txt
113
+ vba build --target xlsm
114
+ ```
115
+
116
+ Build a project, excluding any development src, dependencies, or references:
117
+
118
+ ```txt
119
+ vba build --release
120
+ ```
121
+
122
+ ### `export`
123
+
124
+ Once you've completed your edits and are ready to commit your changes, export your project with `vba export`.
125
+
126
+ Export a project:
127
+
128
+ ```txt
129
+ vba export
130
+ ```
131
+
132
+ Export a previously-built package:
133
+
134
+ ```txt
135
+ vba export --target xlsm
136
+ ```
137
+
138
+ ### `run`
139
+
140
+ `vba run` is a useful utility function for running a public macro in the given workbook, passing up to 10 arguments, and if it returns a string value, outputing it to the console.
141
+
142
+ ```vb
143
+ ' (Module: Messages.bas)
144
+ Public Function SayHi(Name As Variant) As String
145
+ SayHi = "Howdy " & Name & "!"
146
+ End Function
147
+ ```
148
+
149
+ ```txt
150
+ vba run Messages.SayHi Tim
151
+ Howdy Tim!
152
+ ```
153
+
154
+ ## Manifest (vba-block.toml)
155
+
156
+ ### [project] or [package]
157
+
158
+ - `name` (_required_)
159
+ - `version` (_required_ for `[package]`)
160
+ - `authors` (_required_ for `[package]`)
161
+ - `target` (_required_ for `[project]`)
162
+
163
+ ```toml
164
+ [project]
165
+ name = "awesome-excel-project"
166
+ target = "xlsm"
167
+ ```
168
+
169
+ ```toml
170
+ [package]
171
+ name = "awesome-vba-package"
172
+ authors = ["Me <me@email.com>"]
173
+ version = "0.1.0"
174
+ ```
175
+
176
+ ### [src]
177
+
178
+ `name = "path"` or
179
+
180
+ - `path`
181
+
182
+ ```toml
183
+ [src]
184
+ A = "src/A.bas"
185
+ B = "src/B.cls"
186
+ C = { path = "src/C.bas" }
187
+ ```
188
+
189
+ ### [dependencies]
190
+
191
+ `name = "version"` or
192
+
193
+ - `version`
194
+ - `path`
195
+ - `git` (and `branch`, `tag`, or `rev`)
196
+
197
+ ```toml
198
+ [dependencies]
199
+ a = "1" # Equivalent to ^1
200
+ b = "=2.0.0" # Precisely 2.0.0
201
+ c = { version = "3" }
202
+
203
+ d = { path = "./packages/d" }
204
+
205
+ e = { git = "https://..." } # master
206
+ f = { git = "https://...", branch = "dev" }
207
+ g = { git = "https://", tag = "bugfix" }
208
+ h = { git = "https://", rev = "abc1234" }
209
+ ```
210
+
211
+ ### [references]
212
+
213
+ - `version` (`"MAJOR.MINOR"`)
214
+ - `guid` (`"{...}"`)
215
+
216
+ ```toml
217
+ [references]
218
+ Scripting = { version = "1.0", guid = "{...}" }
219
+ ```
220
+
221
+ ### [dev-src,dependencies,references]
222
+
223
+ `[dev-src]`, `[dev-dependencies]`, and `[dev-references]` are included during development and are excluded when building with the `--release` flag (i.e. `vba build --release`)
224
+
225
+ ## Development
226
+
227
+ ### Prerequisites
228
+
229
+ 1. `git clone` this repo
230
+ 2. Install [Node.js](https://nodejs.org/) v18 or later
231
+
232
+ ### Build
233
+
234
+ 1. Run `npm install`
235
+ 2. Run `npm run build`
236
+ 3. Run `npm run build:addins`
237
+
238
+ ### Test
239
+
240
+ 1. Run `npm test`
241
+ 2. Run `npm run test:e2e`
242
+
243
+ ### Release
244
+
245
+ 1. Run `npm version patch` (or `minor`/`major`)
246
+ 2. Run `npm publish --access public`
@@ -0,0 +1,2 @@
1
+ "use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};exports.commonjsGlobal=e,exports.createCommonjsModule=function(e,r,t){return e(t={path:r,exports:{},require:function(e,r){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==r&&t.path)}},t.exports),t.exports},exports.getAugmentedNamespace=function(e){if(e.__esModule)return e;var r=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),r};
2
+ //# sourceMappingURL=_commonjsHelpers-553b27b3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers-553b27b3.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ "use strict";var e=require("./text-ba532b40.js"),r=require("./project-d43b4e0c.js"),t=require("./build-target-283e1e7d.js");require("assert"),require("./workbook-xml-69fff4ae.js"),require("fs");var i=require("./get-target-23b8cc04.js");exports.buildProject=async function(n={}){e.env.reporter.log(e.Message.BuildProjectLoading,"[1/3] Loading project...");const a=await r.loadProject(),{target:s,blankTarget:o}=i.getTarget(a,n.target),g=await r.fetchDependencies(a),c=a.packages.map((e=>{const t=r.toDependency(e);return r.isRegistryDependency(t)?`${e.id} registry+${t.registry}`:`${e.id} ${e.source}`}));e.env.reporter.log(e.Message.BuildTargetBuilding,e.dedent`
2
+ \n[2/3] Building target "${s.type}" for "${a.manifest.name}"...
3
+ ${c.length?`\nDependencies:\n${c.join("\n")}`:""}`),await t.buildTarget(s,{project:a,dependencies:g,blankTarget:o},n);const d=!a.hasDirtyLockfile;return e.env.reporter.log(e.Message.BuildLockfileWriting,"\n[3/3] Writing lockfile..."+(d?" (skipped, no changes)":"")),d||await r.writeLockfile(a.paths.root,a),e.join(a.paths.dir,"build",s.filename)};
4
+ //# sourceMappingURL=build-project-55e5df48.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-project-55e5df48.js","sources":["../src/actions/build-project.ts"],"sourcesContent":["import dedent from \"@timhall/dedent\";\nimport { env } from \"../env\";\nimport { writeLockfile } from \"../lockfile\";\nimport { isRegistryDependency } from \"../manifest/dependency\";\nimport { Message } from \"../messages\";\nimport { fetchDependencies, loadProject } from \"../project\";\nimport { toDependency } from \"../sources/registration\";\nimport { buildTarget, getTarget } from \"../targets\";\nimport { BuildOptions } from \"../targets/build-target\";\nimport { join } from \"../utils/path\";\n\nexport async function buildProject(options: BuildOptions = {}): Promise<string> {\n\tenv.reporter.log(Message.BuildProjectLoading, `[1/3] Loading project...`);\n\n\tconst project = await loadProject();\n\tconst { target, blankTarget } = getTarget(project, options.target);\n\n\t// Fetch relevant dependencies\n\tconst dependencies = await fetchDependencies(project);\n\n\t// Build target\n\tconst displayDependencies = project.packages.map(registration => {\n\t\tconst dependency = toDependency(registration);\n\n\t\tif (isRegistryDependency(dependency))\n\t\t\treturn `${registration.id} registry+${dependency.registry}`;\n\t\telse return `${registration.id} ${registration.source}`;\n\t});\n\tenv.reporter.log(\n\t\tMessage.BuildTargetBuilding,\n\t\tdedent`\n \\n[2/3] Building target \"${target.type}\" for \"${project.manifest.name}\"...\n ${displayDependencies.length ? `\\nDependencies:\\n${displayDependencies.join(\"\\n\")}` : \"\"}`\n\t);\n\n\tawait buildTarget(target, { project, dependencies, blankTarget }, options);\n\n\t// Update lockfile (if necessary)\n\tconst skip = !project.hasDirtyLockfile;\n\tenv.reporter.log(\n\t\tMessage.BuildLockfileWriting,\n\t\t`\\n[3/3] Writing lockfile...${skip ? \" (skipped, no changes)\" : \"\"}`\n\t);\n\tif (!skip) {\n\t\tawait writeLockfile(project.paths.root, project);\n\t}\n\n\treturn join(project.paths.dir, \"build\", target.filename);\n}\n"],"names":["async","options","env","reporter","log","Message","BuildProjectLoading","project","loadProject","target","blankTarget","getTarget","dependencies","fetchDependencies","displayDependencies","packages","map","registration","dependency","toDependency","isRegistryDependency","id","registry","source","BuildTargetBuilding","dedent","type","manifest","name","length","join","buildTarget","skip","hasDirtyLockfile","BuildLockfileWriting","writeLockfile","paths","root","dir","filename"],"mappings":"iQAWOA,eAA4BC,EAAwB,IAC1DC,EAAGA,IAACC,SAASC,IAAIC,EAAAA,QAAQC,oBAAqB,4BAE9C,MAAMC,QAAgBC,EAAAA,eAChBC,OAAEA,EAAMC,YAAEA,GAAgBC,EAASA,UAACJ,EAASN,EAAQQ,QAGrDG,QAAqBC,oBAAkBN,GAGvCO,EAAsBP,EAAQQ,SAASC,KAAIC,IAChD,MAAMC,EAAaC,eAAaF,GAEhC,OAAIG,EAAAA,qBAAqBF,GACjB,GAAGD,EAAaI,eAAeH,EAAWI,WACtC,GAAGL,EAAaI,MAAMJ,EAAaM,QAAQ,IAExDrB,EAAGA,IAACC,SAASC,IACZC,EAAOA,QAACmB,oBACRC,EAAMA,MAAA;iCACyBhB,EAAOiB,cAAcnB,EAAQoB,SAASC;QAC/Dd,EAAoBe,OAAS,oBAAoBf,EAAoBgB,KAAK,QAAU,YAGrFC,EAAAA,YAAYtB,EAAQ,CAAEF,QAAAA,EAASK,eAAcF,eAAeT,GAGlE,MAAM+B,GAAQzB,EAAQ0B,iBAStB,OARA/B,EAAAA,IAAIC,SAASC,IACZC,EAAAA,QAAQ6B,qBACR,+BAA8BF,EAAO,yBAA2B,KAE5DA,SACEG,EAAaA,cAAC5B,EAAQ6B,MAAMC,KAAM9B,GAGlCuB,EAAAA,KAAKvB,EAAQ6B,MAAME,IAAK,QAAS7B,EAAO8B,SAChD"}
@@ -0,0 +1,10 @@
1
+ "use strict";var t=require("./text-ba532b40.js"),e=require("./workbook-xml-69fff4ae.js");require("assert");var a=require("./load-from-project-e6530a69.js"),r=require("path"),i=require("./project-d43b4e0c.js");const o=t=>/1004/.test(t),n=(e,a)=>t.dedent`
2
+ Failed to build target "${e.name}", it is currently open.
3
+
4
+ Please close "${a}" and try again.
5
+ `;async function s(e,a){if(!await t.pathExists_1.pathExists(a.path))throw new t.CliError(t.ErrorCode.TargetNotFound,`Target "${a.name}" not found at "${a.path}".`);const r=t.join(e.paths.staging,a.filename);try{await t.mkdirs_1.ensureDir(e.paths.staging),await i.zip(a.path,r)}catch(e){const r=e instanceof Error?e:new Error(String(e));throw new t.CliError(t.ErrorCode.TargetCreateFailed,`Failed to create project for target "${a.name}".`,r)}return r}exports.buildTarget=async function(i,c,p={}){const{project:l}=c;let m;try{m=c.blankTarget?await e.createDocument(l,i,{staging:!0}):await s(l,i)}catch(e){if(!t.isRunError(e)||!e.result.errors.some(o))throw e;const a=t.join(l.paths.build,i.filename);throw new t.CliError(t.ErrorCode.TargetIsOpen,n(i,a))}await async function(i,o,n,s={}){const{project:c,dependencies:p}=o,l=t.join(c.paths.staging,"import");await t.mkdirs_1.ensureDir(l),await t.empty.emptyDir(l);const m=await a.loadFromProject(c,p,s),w=await async function(e,a){const i=await t.parallel(e.components,(async e=>{const i=t.join(a,e.filename);if(await t.writeFile(i,e.code),e.binaryPath){const i=t.join(a,r.basename(e.binaryPath));await t.writeFile(i,e.details.binary)}return{name:e.name,path:i}}));return{name:e.name,components:i,references:e.references}}(m,l);try{await e.importGraph(c,i,w,n,s)}catch(e){const a=e instanceof Error?e:new Error(String(e));throw new t.CliError(t.ErrorCode.TargetImportFailed,`Failed to import project for target "${i.name}".`,a)}finally{await t.remove.remove(l)}}(i,c,m,p);try{await async function(e,a){const r=t.join(e.paths.backup,a.filename),i=t.join(e.paths.build,a.filename);await t.pathExists_1.pathExists(r)&&await t.remove.remove(r);if(await t.pathExists_1.pathExists(i)){await t.mkdirs_1.ensureDir(e.paths.backup);try{await t.move_1.move(i,r)}catch(e){throw new t.CliError(t.ErrorCode.TargetIsOpen,n(a,i))}}}(l,i);const e=t.join(l.paths.build,i.filename);await t.move_1.move(m,e)}catch(e){throw await async function(e,a){const r=t.join(e.paths.backup,a.filename),i=t.join(e.paths.build,a.filename);if(!await t.pathExists_1.pathExists(r))return;try{await t.copy.copy(r,i)}catch(e){const a=e instanceof Error?e:new Error(String(e));throw new t.CliError(t.ErrorCode.TargetRestoreFailed,t.dedent`
6
+ Failed to automatically restore backup from "${r}" to "${i}".
7
+
8
+ The previous version can be moved back manually, if desired.
9
+ `,a)}}(l,i),e}finally{await t.remove.remove(m)}};
10
+ //# sourceMappingURL=build-target-283e1e7d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-target-283e1e7d.js","sources":["../src/targets/build-target.ts","../src/build/stage-build-graph.ts"],"sourcesContent":["import dedent from \"@timhall/dedent\";\nimport { createDocument, importGraph } from \"../addin\";\nimport { loadFromProject, stageBuildGraph } from \"../build\";\nimport { CliError, ErrorCode } from \"../errors\";\nimport { Target } from \"../manifest/target\";\nimport { Project } from \"../project\";\nimport { copy, emptyDir, ensureDir, move, pathExists, remove } from \"../utils/fs\";\nimport { join } from \"../utils/path\";\nimport { isRunError } from \"../utils/run\";\nimport { zip } from \"../utils/zip\";\nimport { ProjectInfo } from \"./project-info\";\n\nexport interface BuildOptions {\n\trelease?: boolean;\n\ttarget?: string;\n\taddin?: string;\n}\n\nconst isCreateDocumentError = (message: string) => /1004/.test(message);\nconst targetIsOpen = (target: Target, file: string) => dedent`\n Failed to build target \"${target.name}\", it is currently open.\n\n Please close \"${file}\" and try again.\n`;\n\n/**\n * Build target:\n *\n * 1. Create fresh target in staging\n * 2. Import project\n * 3. Backup previously built target\n * 4. Move built target to build\n */\nexport async function buildTarget(target: Target, info: ProjectInfo, options: BuildOptions = {}) {\n\tconst { project } = info;\n\n\t// Build fresh target in staging directory\n\t// (for no target path, create blank target)\n\tlet staged;\n\ttry {\n\t\tstaged = !info.blankTarget\n\t\t\t? await createTarget(project, target)\n\t\t\t: await createDocument(project, target, { staging: true });\n\t} catch (error) {\n\t\t// Error \"1004: Method 'CreateDocument' of object 'OfficeApplication' failed\"\n\t\t// occurs when trying to create a document with the same name on Mac\n\t\tif (!isRunError(error) || !error.result.errors.some(isCreateDocumentError)) throw error;\n\n\t\tconst file = join(project.paths.build, target.filename);\n\t\tthrow new CliError(ErrorCode.TargetIsOpen, targetIsOpen(target, file));\n\t}\n\n\tawait importTarget(target, info, staged, options);\n\n\t// Backup and move from staging to build directory\n\ttry {\n\t\tawait backupTarget(project, target);\n\n\t\tconst dest = join(project.paths.build, target.filename);\n\t\tawait move(staged, dest);\n\t} catch (err) {\n\t\tawait restoreTarget(project, target);\n\t\tthrow err;\n\t} finally {\n\t\tawait remove(staged);\n\t}\n}\n\n/**\n * Create target binary\n */\nexport async function createTarget(project: Project, target: Target): Promise<string> {\n\tif (!(await pathExists(target.path))) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.TargetNotFound,\n\t\t\t`Target \"${target.name}\" not found at \"${target.path}\".`\n\t\t);\n\t}\n\n\tconst file = join(project.paths.staging, target.filename);\n\n\ttry {\n\t\tawait ensureDir(project.paths.staging);\n\t\tawait zip(target.path!, file);\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\tthrow new CliError(\n\t\t\tErrorCode.TargetCreateFailed,\n\t\t\t`Failed to create project for target \"${target.name}\".`,\n\t\t\terror\n\t\t);\n\t}\n\n\treturn file;\n}\n\n/**\n * Import project into target\n *\n * 1. Create \"import\" staging directory\n * 2. Load build graph for project\n * 3. Stage build graph\n * 4. Import staged build graph\n */\nexport async function importTarget(\n\ttarget: Target,\n\tinfo: ProjectInfo,\n\tfile: string,\n\toptions: BuildOptions = {}\n) {\n\tconst { project, dependencies } = info;\n\n\tconst staging = join(project.paths.staging, \"import\");\n\tawait ensureDir(staging);\n\tawait emptyDir(staging);\n\n\tconst build_graph = await loadFromProject(project, dependencies, options);\n\tconst import_graph = await stageBuildGraph(build_graph, staging);\n\n\ttry {\n\t\tawait importGraph(project, target, import_graph, file, options);\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\tthrow new CliError(\n\t\t\tErrorCode.TargetImportFailed,\n\t\t\t`Failed to import project for target \"${target.name}\".`,\n\t\t\terror\n\t\t);\n\t} finally {\n\t\tawait remove(staging);\n\t}\n}\n\n/**\n * Backup previously built target (if available)\n *\n * - Removes previous backup (if found)\n * - Attempts move, if that fails, it is assumed that the file is open\n */\nexport async function backupTarget(project: Project, target: Target) {\n\tconst backup = join(project.paths.backup, target.filename);\n\tconst file = join(project.paths.build, target.filename);\n\n\tif (await pathExists(backup)) await remove(backup);\n\tif (await pathExists(file)) {\n\t\tawait ensureDir(project.paths.backup);\n\n\t\ttry {\n\t\t\tawait move(file, backup);\n\t\t} catch (err) {\n\t\t\tthrow new CliError(ErrorCode.TargetIsOpen, targetIsOpen(target, file));\n\t\t}\n\t}\n}\n\n/**\n * Restore previously built target (if available)\n */\nexport async function restoreTarget(project: Project, target: Target) {\n\tconst backup = join(project.paths.backup, target.filename);\n\tconst file = join(project.paths.build, target.filename);\n\n\tif (!(await pathExists(backup))) return;\n\n\ttry {\n\t\tawait copy(backup, file);\n\t} catch (err) {\n\t\tconst error = err instanceof Error ? err : new Error(String(err));\n\t\tthrow new CliError(\n\t\t\tErrorCode.TargetRestoreFailed,\n\t\t\tdedent`\n Failed to automatically restore backup from \"${backup}\" to \"${file}\".\n\n The previous version can be moved back manually, if desired.\n `,\n\t\t\terror\n\t\t);\n\t}\n}\n","import { writeFile } from \"../utils/fs\";\nimport { parallel } from \"../utils/parallel\";\nimport { basename, join } from \"../utils/path\";\nimport { BuildGraph, ImportGraph } from \"./build-graph\";\n\nexport async function stageBuildGraph(graph: BuildGraph, staging: string): Promise<ImportGraph> {\n\tconst components = await parallel(graph.components, async component => {\n\t\tconst path = join(staging, component.filename);\n\t\tawait writeFile(path, component.code);\n\n\t\tif (component.binaryPath) {\n\t\t\tconst binaryPath = join(staging, basename(component.binaryPath));\n\t\t\tawait writeFile(binaryPath, component.details.binary);\n\t\t}\n\n\t\treturn { name: component.name, path };\n\t});\n\n\treturn {\n\t\tname: graph.name,\n\t\tcomponents,\n\t\treferences: graph.references\n\t};\n}\n"],"names":["isCreateDocumentError","message","test","targetIsOpen","target","file","dedent","name","async","createTarget","project","pathExists","pathExists_1","path","CliError","ErrorCode","TargetNotFound","join","paths","staging","filename","ensureDir","zip","err","error","Error","String","TargetCreateFailed","info","options","staged","blankTarget","createDocument","isRunError","result","errors","some","build","TargetIsOpen","dependencies","emptyDir","build_graph","loadFromProject","import_graph","graph","components","parallel","component","writeFile","code","binaryPath","basename","details","binary","references","stageBuildGraph","importGraph","TargetImportFailed","remove","importTarget","backup","move","move_1","backupTarget","dest","copy","TargetRestoreFailed","restoreTarget"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";var r=require("./text-ba532b40.js"),e=require("./init-project-a62cb644.js");exports.createProject=async function(o){if(!o||!o.name)throw new r.CliError(r.ErrorCode.NewNameRequired,r.dedent`
2
+ "name" is required with vba-blocks new (e.g. vba-blocks new project-name).
3
+
4
+ Try "vba-blocks help new" for more information.
5
+ `);let{name:t,target:i,from:a,pkg:n,git:s}=o;if(!i&&!a&&t.includes(".")){const r=t.split(".");i=r.pop(),t=r.join(".")}if(!n&&!i&&!a)throw new r.CliError(r.ErrorCode.NewTargetRequired,r.dedent`
6
+ .TYPE, --target, or --from is required for vba-blocks projects.
7
+ (e.g. vba-blocks new project.name.TYPE)
8
+
9
+ Try "vba-blocks help new" for more information.
10
+ `);const c=r.join(r.env.cwd,t);if(await r.pathExists_1.pathExists(c))throw new r.CliError(r.ErrorCode.NewDirExists,`A directory for "${t}" already exists: "${c}". `);await r.mkdirs_1.ensureDir(c),await e.initProject({name:t,dir:c,target:i,from:a,pkg:n,git:s})};
11
+ //# sourceMappingURL=create-project-905598ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-project-905598ca.js","sources":["../src/actions/create-project.ts"],"sourcesContent":["import dedent from \"@timhall/dedent\";\nimport { env } from \"../env\";\nimport { CliError, ErrorCode } from \"../errors\";\nimport { ensureDir, pathExists } from \"../utils/fs\";\nimport { join } from \"../utils/path\";\nimport { initProject } from \"./init-project\";\n\nexport interface CreateOptions {\n\tname: string;\n\ttarget?: string;\n\tfrom?: string;\n\tpkg: boolean;\n\tgit: boolean;\n}\n\nexport async function createProject(options: CreateOptions) {\n\tif (!options || !options.name) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.NewNameRequired,\n\t\t\tdedent`\n \"name\" is required with vba-blocks new (e.g. vba-blocks new project-name).\n\n Try \"vba-blocks help new\" for more information.\n `\n\t\t);\n\t}\n\n\tlet { name, target, from, pkg, git } = options;\n\n\t// Load target from extension (if given)\n\tif (!target && !from && name.includes(\".\")) {\n\t\tconst parts = name.split(\".\");\n\t\ttarget = parts.pop();\n\t\tname = parts.join(\".\");\n\t}\n\tif (!pkg && !target && !from) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.NewTargetRequired,\n\t\t\tdedent`\n .TYPE, --target, or --from is required for vba-blocks projects.\n (e.g. vba-blocks new project.name.TYPE)\n\n Try \"vba-blocks help new\" for more information.\n `\n\t\t);\n\t}\n\n\tconst dir = join(env.cwd, name);\n\n\tif (await pathExists(dir)) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.NewDirExists,\n\t\t\t`A directory for \"${name}\" already exists: \"${dir}\". `\n\t\t);\n\t}\n\n\tawait ensureDir(dir);\n\tawait initProject({ name, dir, target, from, pkg, git });\n}\n"],"names":["async","options","name","CliError","ErrorCode","NewNameRequired","dedent","target","from","pkg","git","includes","parts","split","pop","join","NewTargetRequired","dir","env","cwd","pathExists","NewDirExists","ensureDir","initProject"],"mappings":"+GAeOA,eAA6BC,GACnC,IAAKA,IAAYA,EAAQC,KACxB,MAAM,IAAIC,EAAAA,SACTC,EAAAA,UAAUC,gBACVC,EAAMA,MAAA;;;;SAQR,IAAIJ,KAAEA,EAAIK,OAAEA,EAAMC,KAAEA,EAAIC,IAAEA,EAAGC,IAAEA,GAAQT,EAGvC,IAAKM,IAAWC,GAAQN,EAAKS,SAAS,KAAM,CAC3C,MAAMC,EAAQV,EAAKW,MAAM,KACzBN,EAASK,EAAME,MACfZ,EAAOU,EAAMG,KAAK,IAClB,CACD,IAAKN,IAAQF,IAAWC,EACvB,MAAM,IAAIL,EAAAA,SACTC,EAAAA,UAAUY,kBACVV,EAAMA,MAAA;;;;;SASR,MAAMW,EAAMF,EAAIA,KAACG,EAAGA,IAACC,IAAKjB,GAE1B,SAAUkB,EAAAA,aAAAA,WAAWH,GACpB,MAAM,IAAId,EAAQA,SACjBC,YAAUiB,aACV,oBAAoBnB,uBAA0Be,cAI1CK,EAAAA,SAAAA,UAAUL,SACVM,EAAWA,YAAC,CAAErB,OAAMe,MAAKV,SAAQC,OAAMC,MAAKC,OACnD"}
package/lib/debug.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var e=require("./_commonjsHelpers-553b27b3.js"),t=require("tty"),s=require("util"),r=require("os");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(t),c=n(s),i=n(r),a={},u=(e,t)=>{t=t||process.argv;const s=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(s+e),n=t.indexOf("--");return-1!==r&&(-1===n||r<n)};const l=process.env;let f;function p(e){const t=function(e){if(!1===f)return 0;if(u("color=16m")||u("color=full")||u("color=truecolor"))return 3;if(u("color=256"))return 2;if(e&&!e.isTTY&&!0!==f)return 0;const t=f?1:0;if("win32"===process.platform){const e=i.default.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in l)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((e=>e in l))||"codeship"===l.CI_NAME?1:t;if("TEAMCITY_VERSION"in l)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(l.TEAMCITY_VERSION)?1:0;if("truecolor"===l.COLORTERM)return 3;if("TERM_PROGRAM"in l){const e=parseInt((l.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(l.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(l.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(l.TERM)||"COLORTERM"in l?1:(l.TERM,t)}(e);return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(t)}u("no-color")||u("no-colors")||u("color=false")?f=!1:(u("color")||u("colors")||u("color=true")||u("color=always"))&&(f=!0),"FORCE_COLOR"in l&&(f=0===l.FORCE_COLOR.length||0!==parseInt(l.FORCE_COLOR,10));var d={supportsColor:p,stdout:p(process.stdout),stderr:p(process.stderr)},m=1e3,h=60*m,g=60*h,O=24*g,y=7*O,b=365.25*O,v=function(e,t){t=t||{};var s=typeof e;if("string"===s&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var s=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return s*b;case"weeks":case"week":case"w":return s*y;case"days":case"day":case"d":return s*O;case"hours":case"hour":case"hrs":case"hr":case"h":return s*g;case"minutes":case"minute":case"mins":case"min":case"m":return s*h;case"seconds":case"second":case"secs":case"sec":case"s":return s*m;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}(e);if("number"===s&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=O)return C(e,t,O,"day");if(t>=g)return C(e,t,g,"hour");if(t>=h)return C(e,t,h,"minute");if(t>=m)return C(e,t,m,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=O)return Math.round(e/O)+"d";if(t>=g)return Math.round(e/g)+"h";if(t>=h)return Math.round(e/h)+"m";if(t>=m)return Math.round(e/m)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function C(e,t,s,r){var n=t>=1.5*s;return Math.round(e/s)+" "+r+(n?"s":"")}var R=function(e){function t(e){let r,n,o,c=null;function i(...e){if(!i.enabled)return;const s=i,n=Number(new Date),o=n-(r||n);s.diff=o,s.prev=r,s.curr=n,r=n,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let c=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,n)=>{if("%%"===r)return"%";c++;const o=t.formatters[n];if("function"==typeof o){const t=e[c];r=o.call(s,t),e.splice(c,1),c--}return r})),t.formatArgs.call(s,e);(s.log||t.log).apply(s,e)}return i.namespace=e,i.useColors=t.useColors(),i.color=t.selectColor(e),i.extend=s,i.destroy=t.destroy,Object.defineProperty(i,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==c?c:(n!==t.namespaces&&(n=t.namespaces,o=t.enabled(e)),o),set:e=>{c=e}}),"function"==typeof t.init&&t.init(i),i}function s(e,s){const r=t(this.namespace+(void 0===s?":":s)+e);return r.log=this.log,r}function r(e,t){let s=0,r=0,n=-1,o=0;for(;s<e.length;)if(r<t.length&&(t[r]===e[s]||"*"===t[r]))"*"===t[r]?(n=r,o=s,r++):(s++,r++);else{if(-1===n)return!1;r=n+1,o++,s=o}for(;r<t.length&&"*"===t[r];)r++;return r===t.length}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names,...t.skips.map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const s=("string"==typeof e?e:"").trim().replace(" ",",").split(",").filter(Boolean);for(const e of s)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const s of t.skips)if(r(e,s))return!1;for(const s of t.names)if(r(e,s))return!0;return!1},t.humanize=v,t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((s=>{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t<e.length;t++)s=(s<<5)-s+e.charCodeAt(t),s|=0;return t.colors[Math.abs(s)%t.colors.length]},t.enable(t.load()),t},E=e.createCommonjsModule((function(e,t){t.init=function(e){e.inspectOpts={};const s=Object.keys(t.inspectOpts);for(let r=0;r<s.length;r++)e.inspectOpts[s[r]]=t.inspectOpts[s[r]]},t.log=function(...e){return process.stderr.write(c.default.formatWithOptions(t.inspectOpts,...e)+"\n")},t.formatArgs=function(s){const{namespace:r,useColors:n}=this;if(n){const t=this.color,n="[3"+(t<8?t:"8;5;"+t),o=` ${n};1m${r} `;s[0]=o+s[0].split("\n").join("\n"+o),s.push(n+"m+"+e.exports.humanize(this.diff)+"")}else s[0]=function(){if(t.inspectOpts.hideDate)return"";return(new Date).toISOString()+" "}()+r+" "+s[0]},t.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},t.load=function(){return process.env.DEBUG},t.useColors=function(){return"colors"in t.inspectOpts?Boolean(t.inspectOpts.colors):o.default.isatty(process.stderr.fd)},t.destroy=c.default.deprecate((()=>{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=d;e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const s=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[s]=r,e}),{}),e.exports=R(t);const{formatters:s}=e.exports;s.o=function(e){return this.inspectOpts.colors=this.useColors,c.default.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},s.O=function(e){return this.inspectOpts.colors=this.useColors,c.default.inspect(e,this.inspectOpts)}})),M=e.createCommonjsModule((function(e){"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?e.exports=a:e.exports=E}));module.exports=M;
2
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sources":["../node_modules/debug/src/browser.js","../node_modules/has-flag/index.js","../node_modules/supports-color/index.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js"],"sourcesContent":["module.exports = {};","'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(' ', ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n"],"names":["browser","hasFlag","flag","argv","process","prefix","startsWith","length","pos","indexOf","terminatorPos","env","forceColor","getSupportLevel","stream","level","isTTY","min","platform","osRelease","os","release","split","Number","versions","node","some","sign","CI_NAME","test","TEAMCITY_VERSION","COLORTERM","version","parseInt","TERM_PROGRAM_VERSION","TERM_PROGRAM","TERM","supportsColor","hasBasic","has256","has16m","translateLevel","FORCE_COLOR","supportsColor_1","stdout","stderr","s","m","h","d","w","y","ms","val","options","type","str","String","match","exec","n","parseFloat","toLowerCase","parse","isFinite","long","msAbs","Math","abs","plural","fmtLong","round","fmtShort","Error","JSON","stringify","name","isPlural","common","createDebug","namespace","prevTime","namespacesCache","enabledCache","enableOverride","debug","args","enabled","self","curr","Date","diff","prev","coerce","unshift","index","replace","format","formatter","formatters","call","splice","formatArgs","log","apply","useColors","color","selectColor","extend","destroy","Object","defineProperty","enumerable","configurable","get","namespaces","set","v","init","delimiter","newDebug","this","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","default","stack","message","disable","names","skips","map","join","enable","save","trim","filter","Boolean","ns","push","slice","skip","humanize","require$$0","console","warn","keys","forEach","key","hash","i","charCodeAt","colors","load","exports","inspectOpts","write","util","formatWithOptions","c","colorCode","module","hideDate","toISOString","getDate","DEBUG","tty","isatty","fd","deprecate","error","reduce","obj","prop","substring","_","k","toUpperCase","require$$1","o","inspect","O","__nwjs"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ "use strict";var e=require("./text-ba532b40.js"),t=require("./workbook-xml-69fff4ae.js"),r=require("./project-d43b4e0c.js");require("assert"),require("fs");var a=require("./export-target-c9ddd2fa.js");exports.exportProject=async function(o={}){e.env.reporter.log(e.Message.ExportProjectLoading,"[1/3] Loading project...");const i=await r.loadProject();if(!o.target&&!i.manifest.target)throw new e.CliError(e.ErrorCode.ExportNoTarget,e.dedent`
2
+ No default target found for project,
3
+ use --target TYPE to export from a specific target.
4
+ `);let n,s=!1;if(i.manifest.target)o.target&&o.target!==i.manifest.target.type||(n=i.manifest.target);else{const t=o.target,r=i.manifest.name;n={type:t,name:r,path:`targets/${t}`,filename:`${e.sanitize(r)}.${t}`},s=!0}if(!n)throw new e.CliError(e.ErrorCode.ExportNoMatching,`No matching target found for type "${o.target}" in project.`);const p=await r.fetchDependencies(i);let g;try{o.completed?g=o.completed:(g=e.join(i.paths.staging,"export"),e.env.reporter.log(e.Message.ExportToStaging,`\n[2/3] Exporting src from "${n.filename}"`),await e.mkdirs_1.ensureDir(g),await e.empty.emptyDir(g),await t.exportTo(i,n,g,o)),e.env.reporter.log(e.Message.ExportToProject,"\n[3/3] Updating project"),await a.exportTarget(n,{project:i,dependencies:p,blankTarget:s},g)}catch(e){throw e}finally{g&&await e.remove.remove(g)}};
5
+ //# sourceMappingURL=export-project-55168787.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-project-55168787.js","sources":["../src/actions/export-project.ts"],"sourcesContent":["import dedent from \"@timhall/dedent\";\nimport { exportTo } from \"../addin\";\nimport { env } from \"../env\";\nimport { CliError, ErrorCode } from \"../errors\";\nimport { Target, TargetType } from \"../manifest/target\";\nimport { Message } from \"../messages\";\nimport { fetchDependencies, loadProject } from \"../project\";\nimport { exportTarget } from \"../targets\";\nimport { emptyDir, ensureDir, remove } from \"../utils/fs\";\nimport { join, sanitize } from \"../utils/path\";\n\nexport interface ExportOptions {\n\ttarget?: string;\n\tcompleted?: string;\n\taddin?: string;\n}\n\nexport async function exportProject(options: ExportOptions = {}) {\n\tenv.reporter.log(Message.ExportProjectLoading, `[1/3] Loading project...`);\n\n\tconst project = await loadProject();\n\n\tif (!options.target && !project.manifest.target) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.ExportNoTarget,\n\t\t\tdedent`\n No default target found for project,\n use --target TYPE to export from a specific target.\n `\n\t\t);\n\t}\n\n\tlet target: Target | undefined;\n\tlet blankTarget = false;\n\tif (project.manifest.target) {\n\t\tif (!options.target || options.target === project.manifest.target.type) {\n\t\t\ttarget = project.manifest.target;\n\t\t}\n\t} else {\n\t\tconst type = <TargetType>options.target;\n\t\tconst name = project.manifest.name;\n\n\t\ttarget = {\n\t\t\ttype,\n\t\t\tname,\n\t\t\tpath: `targets/${type}`,\n\t\t\tfilename: `${sanitize(name)}.${type}`\n\t\t};\n\t\tblankTarget = true;\n\t}\n\n\tif (!target) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.ExportNoMatching,\n\t\t\t`No matching target found for type \"${options.target!}\" in project.`\n\t\t);\n\t}\n\n\tconst dependencies = await fetchDependencies(project);\n\tlet staging: string;\n\n\ttry {\n\t\tif (!options.completed) {\n\t\t\tstaging = join(project.paths.staging, \"export\");\n\n\t\t\tenv.reporter.log(Message.ExportToStaging, `\\n[2/3] Exporting src from \"${target.filename}\"`);\n\n\t\t\tawait ensureDir(staging);\n\t\t\tawait emptyDir(staging);\n\t\t\tawait exportTo(project, target, staging, options);\n\t\t} else {\n\t\t\tstaging = options.completed;\n\t\t}\n\n\t\tenv.reporter.log(Message.ExportToProject, `\\n[3/3] Updating project`);\n\t\tawait exportTarget(target, { project, dependencies, blankTarget }, staging);\n\t} catch (err) {\n\t\tthrow err;\n\t} finally {\n\t\t// @ts-ignore Variable is used before being assigned\n\t\tif (staging) await remove(staging);\n\t}\n}\n"],"names":["async","options","env","reporter","log","Message","ExportProjectLoading","project","loadProject","target","manifest","CliError","ErrorCode","ExportNoTarget","dedent","blankTarget","type","name","path","filename","sanitize","ExportNoMatching","dependencies","fetchDependencies","staging","completed","join","paths","ExportToStaging","ensureDir","emptyDir","exportTo","ExportToProject","exportTarget","err","remove"],"mappings":"+NAiBOA,eAA6BC,EAAyB,IAC5DC,EAAGA,IAACC,SAASC,IAAIC,EAAAA,QAAQC,qBAAsB,4BAE/C,MAAMC,QAAgBC,EAAAA,cAEtB,IAAKP,EAAQQ,SAAWF,EAAQG,SAASD,OACxC,MAAM,IAAIE,EAAAA,SACTC,EAAAA,UAAUC,eACVC,EAAMA,MAAA;;;SAOR,IAAIL,EACAM,GAAc,EAClB,GAAIR,EAAQG,SAASD,OACfR,EAAQQ,QAAUR,EAAQQ,SAAWF,EAAQG,SAASD,OAAOO,OACjEP,EAASF,EAAQG,SAASD,YAErB,CACN,MAAMO,EAAmBf,EAAQQ,OAC3BQ,EAAOV,EAAQG,SAASO,KAE9BR,EAAS,CACRO,OACAC,OACAC,KAAM,WAAWF,IACjBG,SAAU,GAAGC,EAAQA,SAACH,MAASD,KAEhCD,GAAc,CACd,CAED,IAAKN,EACJ,MAAM,IAAIE,EAAAA,SACTC,EAASA,UAACS,iBACV,sCAAsCpB,EAAQQ,uBAIhD,MAAMa,QAAqBC,oBAAkBhB,GAC7C,IAAIiB,EAEJ,IACMvB,EAAQwB,UASZD,EAAUvB,EAAQwB,WARlBD,EAAUE,EAAIA,KAACnB,EAAQoB,MAAMH,QAAS,UAEtCtB,EAAAA,IAAIC,SAASC,IAAIC,EAAAA,QAAQuB,gBAAiB,+BAA+BnB,EAAOU,mBAE1EU,EAAAA,SAAAA,UAAUL,SACVM,EAAAA,MAAAA,SAASN,SACTO,EAAQA,SAACxB,EAASE,EAAQe,EAASvB,IAK1CC,EAAGA,IAACC,SAASC,IAAIC,EAAAA,QAAQ2B,gBAAiB,kCACpCC,EAAAA,aAAaxB,EAAQ,CAAEF,QAAAA,EAASe,eAAcP,eAAeS,EACnE,CAAC,MAAOU,GACR,MAAMA,CACN,CAAS,QAELV,SAAeW,EAAAA,OAAAA,OAAOX,EAC1B,CACF"}
@@ -0,0 +1,5 @@
1
+ "use strict";var e=require("./text-ba532b40.js"),n=require("./project-d43b4e0c.js"),t=require("path"),r=require("./load-from-project-e6530a69.js"),o=require("./workbook-xml-69fff4ae.js");async function a(t,r){for(const n of r.components.added){const r={name:n.name,path:e.join(t.paths.dir,`src/${n.filename}`)};t.manifest.src.push(r)}for(const e of r.components.removed){const n=t.manifest.src.findIndex((n=>n.name===e.name));t.manifest.src.splice(n,1)}for(let e of r.references.added)t.manifest.references.push(e);for(const e of r.references.removed){const n=t.manifest.references.findIndex((n=>n.name===e.name));t.manifest.references.splice(n,1)}await n.writeManifest(t.manifest,t.paths.dir)}async function s(n,r){const o=t.dirname(n);await e.mkdirs_1.ensureDir(o),await e.writeFile(n,r.code),r.binaryPath&&await e.writeFile(e.join(o,r.binaryPath),r.details.binary)}require("assert");const i=[".frx"];async function c(n){const a=o.walkSync_1(n,{directories:!1}).filter((e=>"project.json"!==e&&!e.startsWith("target")&&!e.startsWith("staged")&&!(e=>!(""!==t.extname(e)))(e))).map((t=>e.join(n,t))),{name:s,references:c}=await async function(n){const t=e.join(n,"project.json");if(!await e.pathExists_1.pathExists(t))return{name:"VBAProject",references:[]};const r=await e.jsonfile.readJson(t);return r}(n),m={},d=a.filter((e=>{if(!function(e){return i.includes(t.extname(e))}(e))return!0;const n=p(e);return m[n]=e,!1})),f=await e.parallel(d,(async n=>{const o=p(n),a=r.extensionToType[t.extname(n)],s=await e.readFile(n),i=m[o]&&await e.readFile(m[o]);if(!a)throw new e.CliError(e.ErrorCode.ComponentUnrecognized,`Unrecognized component extension "${t.extname(n)}" (at "${n}").`);return new r.Component(a,s,{binary:i})}),{progress:e.env.reporter.progress("Loading exported components")});return f.sort(r.byComponentName),{name:s,components:f,references:c,fromDependencies:{components:new Map,references:new Map}}}function p(e){return t.basename(e,t.extname(e))}const m=/vba.*\.bin/i;const d=function(...e){return(n,t,r)=>e.reduce(((e,o)=>e?o(n,t,r):e),!0)}((function(e){return!m.test(e.path)})),f=function(...e){return(n,t,r)=>e.reduce(((e,n)=>n(e,t,r)),n)}(o.transformCoreXml,o.transformWorkbookXml);async function u(r,o,a){let s=e.join(r.paths.build,o.filename);const i=e.join(a,"target");if(!await e.pathExists_1.pathExists(s))throw new e.CliError(e.ErrorCode.ExportTargetNotFound,e.dedent`
2
+ Could not find built target for type "${o.type}"
3
+ (checked "${s}").
4
+ `);if(!e.env.isWindows){const n=e.join(a,"staged",o.filename);await e.pathExists_1.pathExists(n)||(await e.mkdirs_1.ensureDir(t.dirname(n)),await e.copy.copy(s,n)),s=n}return await e.mkdirs_1.ensureDir(i),await n.unzip(s,i,{filter:d,map:f}),i}exports.exportTarget=async function(n,t,i){const{project:p,dependencies:m,blankTarget:d}=t;let f;d||(f=await u(p,n,i));const l=await r.loadFromProject(p,m),w=await c(i),h=function(e,n){const t={components:{added:[],changed:[],removed:[]},references:{added:[],changed:[],removed:[]}},o={components:new Map,references:new Map};for(const n of e.components)o.components.set(n.name,n);for(const n of e.references)o.references.set(n.name,n);for(const r of n.components){const n=r.name,a=o.components.get(n);o.components.delete(n),a&&e.fromDependencies.components.has(a)||(a?r.code!==a.code&&(r.details.path=a.details.path,t.components.changed.push(r)):t.components.added.push(r))}for(const e of o.components.values())t.components.removed.push(e);t.components.added.sort(r.byComponentName),t.components.changed.sort(r.byComponentName),t.components.removed.sort(r.byComponentName);for(const r of n.references){const n=r.name,a=o.references.get(n);o.references.delete(n),a&&e.fromDependencies.references.has(a)||(a?r.guid===a.guid&&r.major===a.major&&r.minor===a.minor||t.references.changed.push(r):t.references.added.push(r))}for(const e of o.references.values())t.references.removed.push(e);return t}(l,await o.toSrc(w));await async function(n,t){const r=e.env.reporter.progress("Updating src files"),o=r.start,i=r.done;r.start=()=>{},r.done=()=>{},o(),await e.parallel(t.components.changed,(e=>s(e.details.path,e)),{progress:r}),await e.parallel(t.components.added,(async t=>{const r=e.join(n.paths.dir,"src",t.filename);t.details.path=r,await s(r,t)}),{progress:r}),await e.parallel(t.components.removed,(async n=>{await e.remove.remove(n.details.path)}),{progress:r}),await a(n,t),i()}(p,h),d||(await e.remove.remove(n.path),await e.copy.copy(f,n.path)),await e.remove.remove(i)},exports.extractTarget=u;
5
+ //# sourceMappingURL=export-target-c9ddd2fa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-target-c9ddd2fa.js","sources":["../src/build/apply-changeset.ts","../src/build/load-from-export.ts","../src/targets/transform-target.ts","../src/utils/pipe.ts","../src/targets/export-target.ts","../src/build/compare-build-graphs.ts"],"sourcesContent":["import { env } from \"../env\";\nimport { writeManifest } from \"../manifest\";\nimport { Reference } from \"../manifest/reference\";\nimport { Source } from \"../manifest/source\";\nimport { Project } from \"../project\";\nimport { ensureDir, remove, writeFile } from \"../utils/fs\";\nimport { parallel } from \"../utils/parallel\";\nimport { dirname, join } from \"../utils/path\";\nimport { Changeset } from \"./changeset\";\nimport { Component } from \"./component\";\n\nexport async function applyChangeset(project: Project, changeset: Changeset) {\n\tconst progress = env.reporter.progress(\"Updating src files\");\n\tconst start = progress.start;\n\tconst done = progress.done;\n\n\tprogress.start = () => {};\n\tprogress.done = () => {};\n\n\tstart();\n\n\t// Update src directory\n\tawait parallel(\n\t\tchangeset.components.changed,\n\t\tcomponent => writeComponent(component.details.path!, component),\n\t\t{ progress }\n\t);\n\n\tawait parallel(\n\t\tchangeset.components.added,\n\t\tasync component => {\n\t\t\tconst path = join(project.paths.dir, \"src\", component.filename);\n\t\t\tcomponent.details.path = path;\n\n\t\t\tawait writeComponent(path, component);\n\t\t},\n\t\t{ progress }\n\t);\n\n\tawait parallel(\n\t\tchangeset.components.removed,\n\t\tasync component => {\n\t\t\tawait remove(component.details.path!);\n\t\t},\n\t\t{ progress }\n\t);\n\n\tawait updateManifest(project, changeset);\n\n\tdone();\n}\n\nasync function updateManifest(project: Project, changeset: Changeset) {\n\tfor (const component of changeset.components.added) {\n\t\tconst source: Source = {\n\t\t\tname: component.name,\n\t\t\tpath: join(project.paths.dir, `src/${component.filename}`)\n\t\t};\n\t\tproject.manifest.src.push(source);\n\t}\n\tfor (const component of changeset.components.removed) {\n\t\tconst index = project.manifest.src.findIndex(\n\t\t\t(source: Source) => source.name === component.name\n\t\t);\n\t\tproject.manifest.src.splice(index, 1);\n\t}\n\n\tfor (let reference of changeset.references.added) {\n\t\tproject.manifest.references.push(reference);\n\t}\n\tfor (const reference of changeset.references.removed) {\n\t\tconst index = project.manifest.references.findIndex(\n\t\t\t(ref: Reference) => ref.name === reference.name\n\t\t);\n\t\tproject.manifest.references.splice(index, 1);\n\t}\n\n\tawait writeManifest(project.manifest, project.paths.dir);\n}\n\nasync function writeComponent(path: string, component: Component) {\n\tconst dir = dirname(path);\n\tawait ensureDir(dir);\n\tawait writeFile(path, component.code);\n\n\tif (component.binaryPath) {\n\t\tawait writeFile(join(dir, component.binaryPath), component.details.binary);\n\t}\n}\n","import walk from \"walk-sync\";\nimport { env } from \"../env\";\nimport { CliError, ErrorCode } from \"../errors\";\nimport { Reference } from \"../manifest/reference\";\nimport { pathExists, readFile, readJson } from \"../utils/fs\";\nimport { parallel } from \"../utils/parallel\";\nimport { basename, extname, join } from \"../utils/path\";\nimport { BuildGraph } from \"./build-graph\";\nimport { byComponentName, Component, extensionToType } from \"./component\";\n\nconst binary_extensions = [\".frx\"];\nconst ignoreFile = (file: string) => {\n\t// Ignore hidden files (e.g. .DS_Store)\n\tconst hasExtension = extname(file) !== \"\";\n\n\treturn !hasExtension;\n};\n\nexport async function loadFromExport(staging: string): Promise<BuildGraph> {\n\tconst files = walk(staging, { directories: false })\n\t\t.filter(file => {\n\t\t\treturn (\n\t\t\t\tfile !== \"project.json\" &&\n\t\t\t\t!file.startsWith(\"target\") &&\n\t\t\t\t!file.startsWith(\"staged\") &&\n\t\t\t\t!ignoreFile(file)\n\t\t\t);\n\t\t})\n\t\t.map(file => join(staging, file));\n\tconst { name, references } = await readInfo(staging);\n\n\tconst binaries: { [name: string]: string } = {};\n\tconst toComponents = files.filter(file => {\n\t\t// Binaries are part of a component\n\t\t// Remove from files to be converted and add to component\n\t\tif (!isBinary(file)) return true;\n\n\t\tconst name = getName(file);\n\t\tbinaries[name] = file;\n\n\t\treturn false;\n\t});\n\n\tconst components = await parallel(\n\t\ttoComponents,\n\t\tasync file => {\n\t\t\tconst name = getName(file);\n\t\t\tconst type = extensionToType[extname(file)];\n\t\t\tconst code = await readFile(file);\n\t\t\tconst binary = <Buffer | undefined>(binaries[name] && (await readFile(binaries[name])));\n\n\t\t\tif (!type) {\n\t\t\t\tthrow new CliError(\n\t\t\t\t\tErrorCode.ComponentUnrecognized,\n\t\t\t\t\t`Unrecognized component extension \"${extname(file)}\" (at \"${file}\").`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn new Component(type, code, { binary });\n\t\t},\n\t\t{ progress: env.reporter.progress(\"Loading exported components\") }\n\t);\n\tcomponents.sort(byComponentName);\n\n\treturn {\n\t\tname,\n\t\tcomponents,\n\t\treferences,\n\t\tfromDependencies: {\n\t\t\tcomponents: new Map(),\n\t\t\treferences: new Map()\n\t\t}\n\t};\n}\n\ninterface ProjectInfo {\n\tname: string;\n\treferences: Reference[];\n}\n\nasync function readInfo(staging: string): Promise<ProjectInfo> {\n\tconst path = join(staging, \"project.json\");\n\tif (!(await pathExists(path))) return { name: \"VBAProject\", references: [] };\n\n\tconst info = await readJson(path);\n\n\treturn info;\n}\n\nfunction isBinary(file: string): boolean {\n\treturn binary_extensions.includes(extname(file));\n}\n\nfunction getName(file: string): string {\n\treturn basename(file, extname(file));\n}\n","import { pipeFilter, pipeMap } from \"../utils/pipe\";\nimport { UnzipFile } from \"../utils/zip\";\nimport transformCoreXml from \"./transforms/core-xml\";\nimport transformWorkbookXml from \"./transforms/workbook-xml\";\n\nconst VBA_BIN = /vba.*\\.bin/i;\nfunction filterVbaBin(file: UnzipFile): boolean {\n\treturn !VBA_BIN.test(file.path);\n}\n\nexport const filterTarget = pipeFilter(filterVbaBin);\nexport const mapTarget = pipeMap(transformCoreXml, transformWorkbookXml);\n","type MapFn<TValue> = (value: TValue, index: number, values: TValue[]) => TValue;\ntype FilterFn<TValue> = (value: TValue, index: number, values: TValue[]) => boolean;\n\nexport function pipeMap<TValue>(\n\t...fns: MapFn<TValue>[]\n): (value: TValue, index: number, values: TValue[]) => TValue {\n\treturn (value, index, values) => fns.reduce((value, fn) => fn(value, index, values), value);\n}\n\nexport function pipeFilter<TValue>(\n\t...fns: FilterFn<TValue>[]\n): (value: TValue, index: number, values: TValue[]) => boolean {\n\treturn (value, index, values) =>\n\t\tfns.reduce<boolean>((result, fn) => {\n\t\t\tif (!result) return result;\n\t\t\treturn fn(value, index, values);\n\t\t}, true);\n}\n","import dedent from \"@timhall/dedent\";\nimport {\n\tapplyChangeset,\n\tcompareBuildGraphs,\n\tloadFromExport,\n\tloadFromProject,\n\ttoSrc\n} from \"../build\";\nimport { env } from \"../env\";\nimport { CliError, ErrorCode } from \"../errors\";\nimport { Target } from \"../manifest/target\";\nimport { Project } from \"../project\";\nimport { copy, ensureDir, pathExists, remove } from \"../utils/fs\";\nimport { dirname, join } from \"../utils/path\";\nimport { unzip } from \"../utils/zip\";\nimport { ProjectInfo } from \"./project-info\";\nimport { filterTarget, mapTarget } from \"./transform-target\";\n\nexport interface ExportOptions {}\n\n/**\n * Export target (with staging directory)\n *\n * 1. Export source from target to staging (done previously)\n * 2. Extract target to staging\n * 3. Export build graph to src\n * 4. Move extracted to target to src\n */\nexport async function exportTarget(target: Target, info: ProjectInfo, staging: string) {\n\tconst { project, dependencies, blankTarget } = info;\n\n\t// Extract target to staging\n\tlet extracted: string;\n\tif (!blankTarget) {\n\t\textracted = await extractTarget(project, target, staging);\n\t}\n\n\t// Compare project and exported and apply changes to project\n\tconst project_build_graph = await loadFromProject(project, dependencies);\n\tconst exported_build_graph = await loadFromExport(staging);\n\tconst transformed_build_graph = await toSrc(exported_build_graph);\n\n\tconst changeset = compareBuildGraphs(project_build_graph, transformed_build_graph);\n\tawait applyChangeset(project, changeset);\n\n\t// Move target to dest\n\tif (!blankTarget) {\n\t\tawait remove(target.path);\n\t\tawait copy(extracted!, target.path);\n\t}\n\n\t// Finally, cleanup staging\n\tawait remove(staging);\n}\n\nexport async function extractTarget(\n\tproject: Project,\n\ttarget: Target,\n\tstaging: string\n): Promise<string> {\n\tlet src = join(project.paths.build, target.filename);\n\tconst dest = join(staging, \"target\");\n\n\tif (!(await pathExists(src))) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.ExportTargetNotFound,\n\t\t\tdedent`\n Could not find built target for type \"${target.type}\"\n (checked \"${src}\").\n `\n\t\t);\n\t}\n\n\t// For Mac, stage target to avoid permission prompts\n\tif (!env.isWindows) {\n\t\tconst staged = join(staging, \"staged\", target.filename);\n\t\tif (!(await pathExists(staged))) {\n\t\t\tawait ensureDir(dirname(staged));\n\t\t\tawait copy(src, staged);\n\t\t}\n\n\t\tsrc = staged;\n\t}\n\n\tawait ensureDir(dest);\n\tawait unzip(src, dest, { filter: filterTarget, map: mapTarget });\n\n\treturn dest;\n}\n","import { Reference } from \"../manifest/reference\";\nimport { BuildGraph } from \"./build-graph\";\nimport { Changeset } from \"./changeset\";\nimport { byComponentName, Component } from \"./component\";\n\nexport function compareBuildGraphs(before: BuildGraph, after: BuildGraph): Changeset {\n\tconst changeset: Changeset = {\n\t\tcomponents: {\n\t\t\tadded: [],\n\t\t\tchanged: [],\n\t\t\tremoved: []\n\t\t},\n\t\treferences: {\n\t\t\tadded: [],\n\t\t\tchanged: [],\n\t\t\tremoved: []\n\t\t}\n\t};\n\n\t// First, cache _before_ BuildGraph by name\n\tconst byName = {\n\t\tcomponents: new Map<string, Component>(),\n\t\treferences: new Map<string, Reference>()\n\t};\n\tfor (const component of before.components) {\n\t\tbyName.components.set(component.name, component);\n\t}\n\tfor (const reference of before.references) {\n\t\tbyName.references.set(reference.name, reference);\n\t}\n\n\t// Determine component changes\n\tfor (const component of after.components) {\n\t\tconst name = component.name;\n\n\t\tconst beforeComponent = byName.components.get(name);\n\t\tbyName.components.delete(name);\n\n\t\tif (beforeComponent && before.fromDependencies.components.has(beforeComponent)) {\n\t\t\t// Ignore dependencies\n\t\t\tcontinue;\n\t\t} else if (!beforeComponent) {\n\t\t\tchangeset.components.added.push(component);\n\t\t} else if (component.code !== beforeComponent.code) {\n\t\t\tcomponent.details.path = beforeComponent.details.path;\n\n\t\t\tchangeset.components.changed.push(component);\n\t\t}\n\t}\n\tfor (const component of byName.components.values()) {\n\t\tchangeset.components.removed.push(component);\n\t}\n\n\tchangeset.components.added.sort(byComponentName);\n\tchangeset.components.changed.sort(byComponentName);\n\tchangeset.components.removed.sort(byComponentName);\n\n\t// Determine reference changes\n\tfor (const reference of after.references) {\n\t\tconst name = reference.name;\n\n\t\tconst before_reference = byName.references.get(name);\n\t\tbyName.references.delete(name);\n\n\t\tif (before_reference && before.fromDependencies.references.has(before_reference)) {\n\t\t\t// Ignore dependencies\n\t\t\tcontinue;\n\t\t} else if (!before_reference) {\n\t\t\tchangeset.references.added.push(reference);\n\t\t} else if (\n\t\t\treference.guid !== before_reference.guid ||\n\t\t\treference.major !== before_reference.major ||\n\t\t\treference.minor !== before_reference.minor\n\t\t) {\n\t\t\tchangeset.references.changed.push(reference);\n\t\t}\n\t}\n\tfor (const reference of byName.references.values()) {\n\t\tchangeset.references.removed.push(reference);\n\t}\n\n\treturn changeset;\n}\n"],"names":["async","updateManifest","project","changeset","component","components","added","source","name","path","join","paths","dir","filename","manifest","src","push","removed","index","findIndex","splice","reference","references","ref","writeManifest","writeComponent","dirname","ensureDir","writeFile","code","binaryPath","details","binary","binary_extensions","loadFromExport","staging","files","walk","directories","filter","file","startsWith","extname","ignoreFile","map","pathExists","info","readJson","readInfo","binaries","toComponents","includes","isBinary","getName","parallel","type","extensionToType","readFile","CliError","ErrorCode","ComponentUnrecognized","Component","progress","env","reporter","sort","byComponentName","fromDependencies","Map","basename","VBA_BIN","filterTarget","fns","value","values","reduce","result","fn","pipeFilter","test","mapTarget","pipeMap","transformCoreXml","transformWorkbookXml","extractTarget","target","build","dest","ExportTargetNotFound","dedent","isWindows","staged","copy","unzip","dependencies","blankTarget","extracted","project_build_graph","loadFromProject","exported_build_graph","before","after","changed","byName","set","beforeComponent","get","delete","has","before_reference","guid","major","minor","compareBuildGraphs","toSrc","start","done","remove","applyChangeset"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";var t=require("./text-ba532b40.js");exports.getTarget=function(e,r){let a,o=!1;if(r){if(e.manifest.target)e.manifest.target.type===r&&(a=e.manifest.target);else{const n=r,i=e.manifest.name;a={type:n,name:i,path:"target",filename:`${t.sanitize(i)}.${n}`},o=!0}if(!a)throw new t.CliError(t.ErrorCode.TargetNoMatching,`No matching target found for type "${r}" in project.`)}else e.manifest.target&&(a=e.manifest.target);if(!a)throw new t.CliError(t.ErrorCode.TargetNoDefault,t.dedent`
2
+ No default target found for project.
3
+
4
+ Use --target TYPE for a blank target
5
+ or specify 'project.target' in vba-block.toml.
6
+
7
+ Example vba-block.toml:
8
+
9
+ [project]
10
+ target = "xlsm"
11
+ `);return{target:a,blankTarget:o}};
12
+ //# sourceMappingURL=get-target-23b8cc04.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-target-23b8cc04.js","sources":["../src/targets/get-target.ts"],"sourcesContent":["import dedent from \"@timhall/dedent\";\nimport { CliError, ErrorCode } from \"../errors\";\nimport { Target, TargetType } from \"../manifest/target\";\nimport { Project } from \"../project\";\nimport { sanitize } from \"../utils/path\";\n\nexport interface TargetInfo {\n\ttarget: Target;\n\tblankTarget: boolean;\n}\n\nexport function getTarget(project: Project, targetType: string | undefined): TargetInfo {\n\tlet target: Target | undefined;\n\tlet blankTarget = false;\n\tif (targetType) {\n\t\tif (project.manifest.target) {\n\t\t\t// For defined target, --target TYPE must match target.type\n\t\t\tif (project.manifest.target.type === targetType) {\n\t\t\t\ttarget = project.manifest.target;\n\t\t\t}\n\t\t} else {\n\t\t\t// Create blank target for --target TYPE\n\t\t\tconst type = <TargetType>targetType;\n\t\t\tconst name = project.manifest.name;\n\n\t\t\ttarget = {\n\t\t\t\ttype,\n\t\t\t\tname,\n\t\t\t\tpath: \"target\",\n\t\t\t\tfilename: `${sanitize(name)}.${type}`\n\t\t\t};\n\t\t\tblankTarget = true;\n\t\t}\n\n\t\tif (!target) {\n\t\t\tthrow new CliError(\n\t\t\t\tErrorCode.TargetNoMatching,\n\t\t\t\t`No matching target found for type \"${targetType}\" in project.`\n\t\t\t);\n\t\t}\n\t} else if (project.manifest.target) {\n\t\t// Build [target]\n\t\ttarget = project.manifest.target;\n\t}\n\n\tif (!target) {\n\t\tthrow new CliError(\n\t\t\tErrorCode.TargetNoDefault,\n\t\t\tdedent`\n No default target found for project.\n\n Use --target TYPE for a blank target\n or specify 'project.target' in vba-block.toml.\n\n Example vba-block.toml:\n\n [project]\n target = \"xlsm\"\n `\n\t\t);\n\t}\n\n\treturn { target, blankTarget };\n}\n"],"names":["project","targetType","target","blankTarget","manifest","type","name","path","filename","sanitize","CliError","ErrorCode","TargetNoMatching","TargetNoDefault","dedent"],"mappings":"mEAWgB,SAAUA,EAAkBC,GAC3C,IAAIC,EACAC,GAAc,EAClB,GAAIF,EAAY,CACf,GAAID,EAAQI,SAASF,OAEhBF,EAAQI,SAASF,OAAOG,OAASJ,IACpCC,EAASF,EAAQI,SAASF,YAErB,CAEN,MAAMG,EAAmBJ,EACnBK,EAAON,EAAQI,SAASE,KAE9BJ,EAAS,CACRG,OACAC,OACAC,KAAM,SACNC,SAAU,GAAGC,EAAQA,SAACH,MAASD,KAEhCF,GAAc,CACd,CAED,IAAKD,EACJ,MAAM,IAAIQ,EAAAA,SACTC,EAAAA,UAAUC,iBACV,sCAAsCX,iBAGxC,MAAUD,EAAQI,SAASF,SAE3BA,EAASF,EAAQI,SAASF,QAG3B,IAAKA,EACJ,MAAM,IAAIQ,EAAAA,SACTC,EAAAA,UAAUE,gBACVC,EAAMA,MAAA;;;;;;;;;;SAcR,MAAO,CAAEZ,SAAQC,cAClB"}