vbapm 0.6.3-alpha → 0.6.11-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.
- package/README.md +57 -14
- package/lib/_commonjsHelpers-553b27b3.js +1 -2
- package/lib/{src/build → build}/component.d.ts +0 -1
- package/lib/build-project-54472d9e.js +3 -0
- package/lib/build-target-725a547b.js +9 -0
- package/lib/{src/config.d.ts → config.d.ts} +2 -2
- package/lib/create-project-e1fcadd3.js +10 -0
- package/lib/debug.js +1 -2
- package/lib/{src/env.d.ts → env.d.ts} +1 -0
- package/lib/export-project-5415dcba.js +4 -0
- package/lib/export-target-f2433ce1.js +4 -0
- package/lib/get-target-067afcd8.js +11 -0
- package/lib/index-4ce3d28b.js +6 -0
- package/lib/index-72c1a91d.js +3 -0
- package/lib/index-bcfee75a.js +5 -0
- package/lib/index-c5b5f6d1.js +2 -0
- package/lib/{src/index.d.ts → index.d.ts} +1 -0
- package/lib/index.js +1 -2
- package/lib/init-project-d3e76219.js +15 -0
- package/lib/installer-30f5d2e7.js +21 -0
- package/lib/installer.d.ts +8 -0
- package/lib/load-from-project-03734ea6.js +5 -0
- package/lib/{src/lockfile → lockfile}/lockfile.d.ts +2 -2
- package/lib/once-5205b917.js +1 -0
- package/lib/project-b4c70fbb.js +29 -0
- package/lib/{src/resolve → resolve}/resolver.d.ts +1 -1
- package/lib/run-macro-1f7bc78e.js +1 -0
- package/lib/sat-solver-6f930649.js +1 -0
- package/lib/test-project-3ceac90c.js +1 -0
- package/lib/tmp-14f9d850.js +9 -0
- package/lib/toml-patch.es-6bd2145d.js +1 -2
- package/lib/{src/utils → utils}/fs.d.ts +0 -1
- package/lib/{src/utils → utils}/hash.d.ts +0 -1
- package/lib/{src/utils → utils}/run.d.ts +1 -1
- package/lib/{src/utils → utils}/xml.d.ts +0 -1
- package/lib/{src/utils → utils}/zip.d.ts +0 -1
- package/lib/vbapm-build-70466cd5.js +9 -0
- package/lib/vbapm-export-6e1a2e45.js +7 -0
- package/lib/vbapm-init-825e865d.js +16 -0
- package/lib/vbapm-new-e594ab65.js +17 -0
- package/lib/vbapm-run-0916fe8f.js +10 -0
- package/lib/vbapm-test-4d70d6ab.js +15 -0
- package/lib/vbapm-version-52c71ffa.js +8 -0
- package/lib/vbapm.js +34 -0
- package/lib/workbook-xml-2809402c.js +2 -0
- package/package.json +61 -35
- package/run-scripts/run.ps1 +88 -81
- package/lib/_commonjsHelpers-553b27b3.js.map +0 -1
- package/lib/build-project-55e5df48.js +0 -4
- package/lib/build-project-55e5df48.js.map +0 -1
- package/lib/build-target-283e1e7d.js +0 -10
- package/lib/build-target-283e1e7d.js.map +0 -1
- package/lib/create-project-905598ca.js +0 -11
- package/lib/create-project-905598ca.js.map +0 -1
- package/lib/debug.js.map +0 -1
- package/lib/export-project-55168787.js +0 -5
- package/lib/export-project-55168787.js.map +0 -1
- package/lib/export-target-c9ddd2fa.js +0 -5
- package/lib/export-target-c9ddd2fa.js.map +0 -1
- package/lib/get-target-23b8cc04.js +0 -12
- package/lib/get-target-23b8cc04.js.map +0 -1
- package/lib/index-35cff1d5.js +0 -38
- package/lib/index-35cff1d5.js.map +0 -1
- package/lib/index-87f55e79.js +0 -4
- package/lib/index-87f55e79.js.map +0 -1
- package/lib/index-b49bd5b2.js +0 -2
- package/lib/index-b49bd5b2.js.map +0 -1
- package/lib/index-c97017db.js +0 -2
- package/lib/index-c97017db.js.map +0 -1
- package/lib/index-d9ba3ba0.js +0 -6
- package/lib/index-d9ba3ba0.js.map +0 -1
- package/lib/index-ffbba08f.js +0 -3
- package/lib/index-ffbba08f.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/inherits-713f4554.js +0 -2
- package/lib/inherits-713f4554.js.map +0 -1
- package/lib/init-project-a62cb644.js +0 -16
- package/lib/init-project-a62cb644.js.map +0 -1
- package/lib/load-from-project-e6530a69.js +0 -6
- package/lib/load-from-project-e6530a69.js.map +0 -1
- package/lib/minimatch-3a1d1fa9.js +0 -2
- package/lib/minimatch-3a1d1fa9.js.map +0 -1
- package/lib/once-9eb67b4f.js +0 -2
- package/lib/once-9eb67b4f.js.map +0 -1
- package/lib/project-d43b4e0c.js +0 -30
- package/lib/project-d43b4e0c.js.map +0 -1
- package/lib/run-macro-f4aa7c14.js +0 -2
- package/lib/run-macro-f4aa7c14.js.map +0 -1
- package/lib/sat-solver-01d6409e.js +0 -2
- package/lib/sat-solver-01d6409e.js.map +0 -1
- package/lib/src/installer.d.ts +0 -3
- package/lib/test-project-d4f237d1.js +0 -2
- package/lib/test-project-d4f237d1.js.map +0 -1
- package/lib/text-ba532b40.js +0 -10
- package/lib/text-ba532b40.js.map +0 -1
- package/lib/tmp-bc08ebcf.js +0 -10
- package/lib/tmp-bc08ebcf.js.map +0 -1
- package/lib/toml-patch.es-6bd2145d.js.map +0 -1
- package/lib/vba-blocks-build-a717fcdb.js +0 -10
- package/lib/vba-blocks-build-a717fcdb.js.map +0 -1
- package/lib/vba-blocks-export-7e2c75cc.js +0 -8
- package/lib/vba-blocks-export-7e2c75cc.js.map +0 -1
- package/lib/vba-blocks-init-54531020.js +0 -17
- package/lib/vba-blocks-init-54531020.js.map +0 -1
- package/lib/vba-blocks-new-3210d92c.js +0 -18
- package/lib/vba-blocks-new-3210d92c.js.map +0 -1
- package/lib/vba-blocks-run-ab9d4ad4.js +0 -11
- package/lib/vba-blocks-run-ab9d4ad4.js.map +0 -1
- package/lib/vba-blocks-test-da5dba90.js +0 -16
- package/lib/vba-blocks-test-da5dba90.js.map +0 -1
- package/lib/vba-blocks-version-e1b3c35a.js +0 -9
- package/lib/vba-blocks-version-e1b3c35a.js.map +0 -1
- package/lib/vba-blocks.js +0 -43
- package/lib/vba-blocks.js.map +0 -1
- package/lib/workbook-xml-69fff4ae.js +0 -3
- package/lib/workbook-xml-69fff4ae.js.map +0 -1
- /package/lib/{src/actions → actions}/build-project.d.ts +0 -0
- /package/lib/{src/actions → actions}/create-project.d.ts +0 -0
- /package/lib/{src/actions → actions}/export-project.d.ts +0 -0
- /package/lib/{src/actions → actions}/increment-version.d.ts +0 -0
- /package/lib/{src/actions → actions}/init-project.d.ts +0 -0
- /package/lib/{src/actions → actions}/run-macro.d.ts +0 -0
- /package/lib/{src/actions → actions}/test-project.d.ts +0 -0
- /package/lib/{src/addin.d.ts → addin.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-build.d.ts → bin/vbapm-build.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-export.d.ts → bin/vbapm-export.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-init.d.ts → bin/vbapm-init.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-new.d.ts → bin/vbapm-new.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-run.d.ts → bin/vbapm-run.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-test.d.ts → bin/vbapm-test.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks-version.d.ts → bin/vbapm-version.d.ts} +0 -0
- /package/lib/{src/bin/vba-blocks.d.ts → bin/vbapm.d.ts} +0 -0
- /package/lib/{src/build → build}/apply-changeset.d.ts +0 -0
- /package/lib/{src/build → build}/build-graph.d.ts +0 -0
- /package/lib/{src/build → build}/changeset.d.ts +0 -0
- /package/lib/{src/build → build}/compare-build-graphs.d.ts +0 -0
- /package/lib/{src/build → build}/index.d.ts +0 -0
- /package/lib/{src/build → build}/load-from-export.d.ts +0 -0
- /package/lib/{src/build → build}/load-from-project.d.ts +0 -0
- /package/lib/{src/build → build}/stage-build-graph.d.ts +0 -0
- /package/lib/{src/build → build}/transform-build-graph.d.ts +0 -0
- /package/lib/{src/build → build}/transforms/editor-config.d.ts +0 -0
- /package/lib/{src/cache.d.ts → cache.d.ts} +0 -0
- /package/lib/{src/debug.d.ts → debug.d.ts} +0 -0
- /package/lib/{src/errors.d.ts → errors.d.ts} +0 -0
- /package/lib/{src/lockfile → lockfile}/index.d.ts +0 -0
- /package/lib/{src/lockfile → lockfile}/is-lockfile-valid.d.ts +0 -0
- /package/lib/{src/manifest → manifest}/dependency.d.ts +0 -0
- /package/lib/{src/manifest → manifest}/index.d.ts +0 -0
- /package/lib/{src/manifest → manifest}/reference.d.ts +0 -0
- /package/lib/{src/manifest → manifest}/source.d.ts +0 -0
- /package/lib/{src/manifest → manifest}/target.d.ts +0 -0
- /package/lib/{src/manifest → manifest}/version.d.ts +0 -0
- /package/lib/{src/messages.d.ts → messages.d.ts} +0 -0
- /package/lib/{src/professional → professional}/sources/git-source.d.ts +0 -0
- /package/lib/{src/professional → professional}/workspace.d.ts +0 -0
- /package/lib/{src/project.d.ts → project.d.ts} +0 -0
- /package/lib/{src/reporter.d.ts → reporter.d.ts} +0 -0
- /package/lib/{src/resolve → resolve}/dependency-graph.d.ts +0 -0
- /package/lib/{src/resolve → resolve}/index.d.ts +0 -0
- /package/lib/{src/resolve → resolve}/latest-solver.d.ts +0 -0
- /package/lib/{src/resolve → resolve}/sat-solver.d.ts +0 -0
- /package/lib/{src/sources → sources}/index.d.ts +0 -0
- /package/lib/{src/sources → sources}/path-source.d.ts +0 -0
- /package/lib/{src/sources → sources}/registration.d.ts +0 -0
- /package/lib/{src/sources → sources}/registry-source.d.ts +0 -0
- /package/lib/{src/sources → sources}/source.d.ts +0 -0
- /package/lib/{src/targets → targets}/add-target.d.ts +0 -0
- /package/lib/{src/targets → targets}/build-target.d.ts +0 -0
- /package/lib/{src/targets → targets}/export-target.d.ts +0 -0
- /package/lib/{src/targets → targets}/get-target.d.ts +0 -0
- /package/lib/{src/targets → targets}/index.d.ts +0 -0
- /package/lib/{src/targets → targets}/project-info.d.ts +0 -0
- /package/lib/{src/targets → targets}/transform-target.d.ts +0 -0
- /package/lib/{src/targets → targets}/transforms/core-xml.d.ts +0 -0
- /package/lib/{src/targets → targets}/transforms/workbook-xml.d.ts +0 -0
- /package/lib/{src/utils → utils}/async-map.d.ts +0 -0
- /package/lib/{src/utils → utils}/download.d.ts +0 -0
- /package/lib/{src/utils → utils}/get-staging.d.ts +0 -0
- /package/lib/{src/utils → utils}/git.d.ts +0 -0
- /package/lib/{src/utils → utils}/github.d.ts +0 -0
- /package/lib/{src/utils → utils}/has.d.ts +0 -0
- /package/lib/{src/utils → utils}/interop.d.ts +0 -0
- /package/lib/{src/utils → utils}/is.d.ts +0 -0
- /package/lib/{src/utils → utils}/noop.d.ts +0 -0
- /package/lib/{src/utils → utils}/observable.d.ts +0 -0
- /package/lib/{src/utils → utils}/parallel.d.ts +0 -0
- /package/lib/{src/utils → utils}/path.d.ts +0 -0
- /package/lib/{src/utils → utils}/pipe.d.ts +0 -0
- /package/lib/{src/utils → utils}/stdout-file.d.ts +0 -0
- /package/lib/{src/utils → utils}/text.d.ts +0 -0
- /package/lib/{src/utils → utils}/toml.d.ts +0 -0
- /package/lib/{src/utils → utils}/unique.d.ts +0 -0
- /package/lib/{src/utils → utils}/without.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,16 +1,39 @@
|
|
|
1
|
-
#
|
|
1
|
+
# vbapm
|
|
2
2
|
|
|
3
3
|
A package manager and build tool for VBA.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### Option 1: Install as a global npm package
|
|
8
|
+
|
|
9
|
+
**Prerequisites:** [Node.js](https://nodejs.org/) v22 or higher.
|
|
10
|
+
|
|
11
|
+
```txt
|
|
12
|
+
npm install -g vbapm
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Option 2: Standalone installer
|
|
16
|
+
|
|
17
|
+
<details>
|
|
18
|
+
<summary>Installation instructions</summary>
|
|
19
|
+
|
|
20
|
+
**Windows**
|
|
21
|
+
|
|
22
|
+
In powershell, run the following:
|
|
23
|
+
|
|
24
|
+
```txt
|
|
25
|
+
iwr https://raw.githubusercontent.com/vbapm/installer/refs/heads/main/install.ps1 | iex
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**Mac**
|
|
29
|
+
|
|
30
|
+
In terminal, run the following:
|
|
8
31
|
|
|
9
32
|
```txt
|
|
10
|
-
|
|
33
|
+
curl -fsSL https://raw.githubusercontent.com/vbapm/installer/refs/heads/main/install.sh | sh
|
|
11
34
|
```
|
|
12
35
|
|
|
13
|
-
|
|
36
|
+
For more recent versions of Office for Mac, you will need to trust access to the VBA project object model for vbapm to work correctly:
|
|
14
37
|
|
|
15
38
|
<details>
|
|
16
39
|
<summary>Trust access to the VBA project object model</summary>
|
|
@@ -23,14 +46,22 @@ npm install -g @vbapm/core
|
|
|
23
46
|
</ol>
|
|
24
47
|
</details>
|
|
25
48
|
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
<hr>
|
|
54
|
+
|
|
55
|
+
If you run into any issues during installation, please see the [known issues](https://github.com/vbapm/installer#known-issues) for the installer or [create a new issue](https://github.com/vbapm/installer/issues/new) with details about what's happening.
|
|
56
|
+
|
|
26
57
|
:rocket: You're ready to go! Open a new command-line session (cmd / terminal) and try `vba --help`
|
|
27
58
|
|
|
28
59
|
### Programmatic Usage
|
|
29
60
|
|
|
30
|
-
You can also use
|
|
61
|
+
You can also use `vbapm` as a library (e.g. from a VS Code extension):
|
|
31
62
|
|
|
32
63
|
```js
|
|
33
|
-
const { buildProject, loadProject, env } = require("
|
|
64
|
+
const { buildProject, loadProject, env } = require("vbapm");
|
|
34
65
|
|
|
35
66
|
// Override working directory
|
|
36
67
|
env.cwd = "/path/to/project";
|
|
@@ -43,7 +74,7 @@ await buildProject(project);
|
|
|
43
74
|
|
|
44
75
|
### `new`
|
|
45
76
|
|
|
46
|
-
Create a new folder with a blank/generated
|
|
77
|
+
Create a new folder with a blank/generated vbapm project inside
|
|
47
78
|
|
|
48
79
|
Create a folder "project-name" with a blank xlsm project:
|
|
49
80
|
|
|
@@ -71,7 +102,7 @@ vba new json-converter --package
|
|
|
71
102
|
|
|
72
103
|
### `init`
|
|
73
104
|
|
|
74
|
-
Create a blank/generated
|
|
105
|
+
Create a blank/generated vbapm project in the current folder
|
|
75
106
|
|
|
76
107
|
Create a blank xlsm project with the current folder's name:
|
|
77
108
|
|
|
@@ -151,7 +182,7 @@ vba run Messages.SayHi Tim
|
|
|
151
182
|
Howdy Tim!
|
|
152
183
|
```
|
|
153
184
|
|
|
154
|
-
## Manifest (
|
|
185
|
+
## Manifest (vbaproject.toml)
|
|
155
186
|
|
|
156
187
|
### [project] or [package]
|
|
157
188
|
|
|
@@ -227,20 +258,32 @@ Scripting = { version = "1.0", guid = "{...}" }
|
|
|
227
258
|
### Prerequisites
|
|
228
259
|
|
|
229
260
|
1. `git clone` this repo
|
|
230
|
-
2. Install [Node.js](https://nodejs.org/)
|
|
261
|
+
2. Install [Node.js](https://nodejs.org/) v22 or later
|
|
262
|
+
- Note: For CLI builds, Node v23+ only supports Windows x64 (win-x64). 32-bit Windows (win-x86) is no longer available upstream.
|
|
263
|
+
3. Install node-gyp dependencies for [Mac](https://github.com/nodejs/node-gyp#on-macos) or [Windows](https://github.com/nodejs/node-gyp#on-windows)
|
|
231
264
|
|
|
232
265
|
### Build
|
|
233
266
|
|
|
234
267
|
1. Run `npm install`
|
|
235
|
-
2. Run `npm run
|
|
236
|
-
3. Run `npm run build
|
|
268
|
+
2. Run `npm run format`
|
|
269
|
+
3. Run `npm run build`
|
|
270
|
+
<br>It will build the CLI/library in `lib`, plus ensured vendor node runtime is available.
|
|
271
|
+
4. Run `npm run build:addins`
|
|
272
|
+
<br>It will build the Excel addin that performs workbook/VBA operations from inside Office.
|
|
237
273
|
|
|
238
274
|
### Test
|
|
239
275
|
|
|
240
276
|
1. Run `npm test`
|
|
277
|
+
<br>It will run unit tests
|
|
241
278
|
2. Run `npm run test:e2e`
|
|
279
|
+
<br>It will run the end-to-end CLI scenarios in excel.e2e.ts, covering workflows like build, export, new, and version against fixtures.
|
|
280
|
+
<br>To keep temporary e2e work folders for manual inspection, set `KEEP_E2E_TMP=1` before running (PowerShell: `$env:KEEP_E2E_TMP=1; npm run test:e2e`, cmd: `set KEEP_E2E_TMP=1 && npm run test:e2e`).
|
|
242
281
|
|
|
243
282
|
### Release
|
|
244
283
|
|
|
245
|
-
1. Run `npm version
|
|
246
|
-
2. Run `npm
|
|
284
|
+
1. Run `npm version`
|
|
285
|
+
2. Run `npm run release`
|
|
286
|
+
|
|
287
|
+
## Acknowledgments
|
|
288
|
+
|
|
289
|
+
This project is a fork of the original [vba-blocks](https://github.com/vba-blocks/vba-blocks) project by [Tim Hall](https://github.com/timhall).
|
|
@@ -1,2 +1 @@
|
|
|
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(
|
|
2
|
-
//# sourceMappingURL=_commonjsHelpers-553b27b3.js.map
|
|
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};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";var e=require("./installer-30f5d2e7.js"),r=require("./project-b4c70fbb.js"),t=require("./build-target-725a547b.js");require("assert"),require("./workbook-xml-2809402c.js"),require("fs");var i=require("./get-target-067afcd8.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)};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";var a=require("./installer-30f5d2e7.js"),t=require("./workbook-xml-2809402c.js");require("assert");var e=require("./load-from-project-03734ea6.js"),r=require("path"),i=require("./project-b4c70fbb.js");const o=a=>/1004/.test(a),n=(t,e)=>a.dedent`
|
|
2
|
+
Failed to build target "${t.name}", it is currently open.
|
|
3
|
+
|
|
4
|
+
Please close "${e}" and try again.
|
|
5
|
+
`;async function s(t,e){if(!await a.pathExists_1.pathExists(e.path))throw new a.CliError(a.ErrorCode.TargetNotFound,`Target "${e.name}" not found at "${e.path}".`);const r=a.join(t.paths.staging,e.filename);try{await a.mkdirs_1.ensureDir(t.paths.staging),await i.zip(e.path,r)}catch(t){throw new a.CliError(a.ErrorCode.TargetCreateFailed,`Failed to create project for target "${e.name}".`,t)}return r}exports.buildTarget=async function(i,c,l={}){const{project:p}=c;let m;try{m=c.blankTarget?await t.createDocument(p,i,{staging:!0}):await s(p,i)}catch(t){if(!a.isRunError(t)||!t.result.errors.some(o))throw t;const e=a.join(p.paths.build,i.filename);throw new a.CliError(a.ErrorCode.TargetIsOpen,n(i,e))}await async function(i,o,n,s={}){const{project:c,dependencies:l}=o,p=a.join(c.paths.staging,"import");await a.mkdirs_1.ensureDir(p),await a.empty.emptyDir(p);const m=await e.loadFromProject(c,l,s),w=await async function(t,e){const i=await a.parallel(t.components,async t=>{const i=a.join(e,t.filename);if(await a.writeFile(i,t.code),t.binaryPath){const i=a.join(e,r.basename(t.binaryPath));if(!t.details.binary)throw new Error(`Binary data missing for component "${t.name}"`);await a.writeFile(i,t.details.binary)}return{name:t.name,path:i}});return{name:t.name,components:i,references:t.references}}(m,p);try{await t.importGraph(c,i,w,n,s)}catch(t){throw new a.CliError(a.ErrorCode.TargetImportFailed,`Failed to import project for target "${i.name}".`,t)}finally{await a.remove.remove(p)}}(i,c,m,l);try{await async function(t,e){const r=a.join(t.paths.backup,e.filename),i=a.join(t.paths.build,e.filename);await a.pathExists_1.pathExists(r)&&await a.remove.remove(r);if(await a.pathExists_1.pathExists(i)){await a.mkdirs_1.ensureDir(t.paths.backup);try{await a.move_1.move(i,r)}catch(t){throw new a.CliError(a.ErrorCode.TargetIsOpen,n(e,i))}}}(p,i);const t=a.join(p.paths.build,i.filename);await a.move_1.move(m,t)}catch(t){throw await async function(t,e){const r=a.join(t.paths.backup,e.filename),i=a.join(t.paths.build,e.filename);if(!await a.pathExists_1.pathExists(r))return;try{await a.copy.copy(r,i)}catch(t){throw new a.CliError(a.ErrorCode.TargetRestoreFailed,a.dedent`
|
|
6
|
+
Failed to automatically restore backup from "${r}" to "${i}".
|
|
7
|
+
|
|
8
|
+
The previous version can be moved back manually, if desired.
|
|
9
|
+
`,t)}}(p,i),t}finally{await a.remove.remove(m)}};
|
|
@@ -20,8 +20,8 @@ export interface ConfigValue {
|
|
|
20
20
|
* Load config, from local, user, and environment values
|
|
21
21
|
*
|
|
22
22
|
* - env:config/config.toml (user)
|
|
23
|
-
* - Search for .
|
|
24
|
-
* - Load
|
|
23
|
+
* - Search for .vbapm/config.toml up from cwd (local)
|
|
24
|
+
* - Load VBAPM_* from environment (override)
|
|
25
25
|
*/
|
|
26
26
|
export declare function loadConfig(): Promise<Config>;
|
|
27
27
|
export declare function readConfig(dir: string): Promise<ConfigValue | undefined>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";var e=require("./installer-30f5d2e7.js"),r=require("./init-project-d3e76219.js");exports.createProject=async function(i){if(!i||!i.name)throw new e.CliError(e.ErrorCode.NewNameRequired,e.dedent`
|
|
2
|
+
"name" is required with vbapm new (e.g. vbapm new project-name).
|
|
3
|
+
|
|
4
|
+
Try "vbapm help new" for more information.
|
|
5
|
+
`);let{name:t,target:o,from:a,pkg:n,git:s}=i;if(!o&&!a&&t.includes(".")){const e=t.split(".");o=e.pop(),t=e.join(".")}if(!n&&!o&&!a)throw new e.CliError(e.ErrorCode.NewTargetRequired,e.dedent`
|
|
6
|
+
.TYPE, --target, or --from is required for vbapm projects.
|
|
7
|
+
(e.g. vbapm new project.name.TYPE)
|
|
8
|
+
|
|
9
|
+
Try "vbapm help new" for more information.
|
|
10
|
+
`);const m=e.join(e.env.cwd,t);if(await e.pathExists_1.pathExists(m))throw new e.CliError(e.ErrorCode.NewDirExists,`A directory for "${t}" already exists: "${m}". `);await e.mkdirs_1.ensureDir(m),await r.initProject({name:t,dir:m,target:o,from:a,pkg:n,git:s})};
|
package/lib/debug.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
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(
|
|
2
|
-
//# sourceMappingURL=debug.js.map
|
|
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(/\s+/g,",").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} [0m`;s[0]=o+s[0].split("\n").join("\n"+o),s.push(n+"m+"+e.exports.humanize(this.diff)+"[0m")}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;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var e=require("./installer-30f5d2e7.js"),t=require("./workbook-xml-2809402c.js"),r=require("./project-b4c70fbb.js");require("assert"),require("fs");var o=require("./export-target-f2433ce1.js");exports.exportProject=async function(a={}){e.env.reporter.log(e.Message.ExportProjectLoading,"[1/3] Loading project...");const i=await r.loadProject();if(!a.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)a.target&&a.target!==i.manifest.target.type||(n=i.manifest.target);else{const t=a.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 "${a.target}" in project.`);const p=await r.fetchDependencies(i);let g;try{a.completed?g=a.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,a)),e.env.reporter.log(e.Message.ExportToProject,"\n[3/3] Updating project"),await o.exportTarget(n,{project:i,dependencies:p,blankTarget:s},g)}catch(e){throw e}finally{g&&await e.remove.remove(g)}};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var e=require("./installer-30f5d2e7.js"),n=require("./project-b4c70fbb.js"),t=require("path"),r=require("./load-from-project-03734ea6.js"),o=require("./workbook-xml-2809402c.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);if(await e.mkdirs_1.ensureDir(o),await e.writeFile(n,r.code),r.binaryPath){if(!r.details.binary)throw new Error(`Binary data missing for component "${r.name}"`);await e.writeFile(e.join(o,r.binaryPath),r.details.binary)}}require("assert");const i=[".frx"];async function c(n){const a=o.dist(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),p={},d=a.filter(e=>{if(!function(e){return i.includes(t.extname(e))}(e))return!0;const n=m(e);return p[n]=e,!1}),f=await e.parallel(d,async n=>{const o=m(n),a=r.extensionToType[t.extname(n)],s=await e.readFile(n),i=p[o]&&await e.readFile(p[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 m(e){return t.basename(e,t.extname(e))}const p=/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!p.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:m,dependencies:p,blankTarget:d}=t;let f;d||(f=await u(m,n,i));const l=await r.loadFromProject(m,p),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()}(m,h),d||(await e.remove.remove(n.path),await e.copy.copy(f,n.path)),await e.remove.remove(i)},exports.extractTarget=u;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";var t=require("./installer-30f5d2e7.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 vbaproject.toml.
|
|
6
|
+
|
|
7
|
+
Example vbaproject.toml:
|
|
8
|
+
|
|
9
|
+
[project]
|
|
10
|
+
target = "xlsm"
|
|
11
|
+
`);return{target:a,blankTarget:o}};
|