mirror of
https://github.com/actions/setup-node.git
synced 2026-02-27 01:34:43 +08:00
Compare commits
3 Commits
7c3feda4a4
...
v4.3.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cdca7365b2 | ||
|
|
22c0e7494f | ||
|
|
a7c2d9473e |
3
.github/workflows/versions.yml
vendored
3
.github/workflows/versions.yml
vendored
@@ -82,8 +82,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
|
||||||
node-version:
|
node-version: [20-nightly, 21-nightly, 18.0.0-nightly]
|
||||||
[20.11.0-nightly202312211a0be537da, 21-nightly, 18.0.0-nightly]
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
|
|||||||
2
.licenses/npm/@actions/cache.dep.yml
generated
2
.licenses/npm/@actions/cache.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@actions/cache"
|
name: "@actions/cache"
|
||||||
version: 4.0.0
|
version: 4.0.2
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions cache lib
|
summary: Actions cache lib
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/cache
|
homepage: https://github.com/actions/toolkit/tree/main/packages/cache
|
||||||
|
|||||||
2
.licenses/npm/@actions/tool-cache.dep.yml
generated
2
.licenses/npm/@actions/tool-cache.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@actions/tool-cache"
|
name: "@actions/tool-cache"
|
||||||
version: 2.0.1
|
version: 2.0.2
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions tool-cache lib
|
summary: Actions tool-cache lib
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/tool-cache
|
homepage: https://github.com/actions/toolkit/tree/main/packages/tool-cache
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@protobuf-ts/plugin-framework"
|
name: "@protobuf-ts/plugin-framework"
|
||||||
version: 2.9.4
|
version: 2.9.5
|
||||||
type: npm
|
type: npm
|
||||||
summary: framework to create protoc plugins
|
summary: framework to create protoc plugins
|
||||||
homepage: https://github.com/timostamm/protobuf-ts
|
homepage: https://github.com/timostamm/protobuf-ts
|
||||||
|
|||||||
2
.licenses/npm/@protobuf-ts/plugin.dep.yml
generated
2
.licenses/npm/@protobuf-ts/plugin.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@protobuf-ts/plugin"
|
name: "@protobuf-ts/plugin"
|
||||||
version: 2.9.4
|
version: 2.9.5
|
||||||
type: npm
|
type: npm
|
||||||
summary: The protocol buffer compiler plugin "protobuf-ts" generates TypeScript, gRPC-web,
|
summary: The protocol buffer compiler plugin "protobuf-ts" generates TypeScript, gRPC-web,
|
||||||
Twirp, and more.
|
Twirp, and more.
|
||||||
|
|||||||
34
.licenses/npm/@protobuf-ts/protoc.dep.yml
generated
34
.licenses/npm/@protobuf-ts/protoc.dep.yml
generated
@@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
name: "@protobuf-ts/protoc"
|
name: "@protobuf-ts/protoc"
|
||||||
version: 2.9.4
|
version: 2.9.5
|
||||||
type: npm
|
type: npm
|
||||||
summary: Installs the protocol buffer compiler "protoc" for you.
|
summary: Installs the protocol buffer compiler "protoc" for you.
|
||||||
homepage: https://github.com/timostamm/protobuf-ts
|
homepage: https://github.com/timostamm/protobuf-ts
|
||||||
license: apache-2.0
|
license: apache-2.0
|
||||||
licenses:
|
licenses:
|
||||||
- sources: LICENSE
|
- sources: Auto-generated Apache-2.0 license text
|
||||||
text: |2
|
text: |2
|
||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
http://www.apache.org/licenses/
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
@@ -44,7 +44,6 @@ licenses:
|
|||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
Object form, made available under the License, as indicated by a
|
Object form, made available under the License, as indicated by a
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
@@ -76,7 +75,6 @@ licenses:
|
|||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
Work and such Derivative Works in Source or Object form.
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
@@ -107,7 +105,6 @@ licenses:
|
|||||||
(b) You must cause any modified files to carry prominent notices
|
(b) You must cause any modified files to carry prominent notices
|
||||||
stating that You changed the files; and
|
stating that You changed the files; and
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
that You distribute, all copyright, patent, trademark, and
|
||||||
attribution notices from the Source form of the Work,
|
attribution notices from the Source form of the Work,
|
||||||
excluding those notices that do not pertain to any part of
|
excluding those notices that do not pertain to any part of
|
||||||
@@ -182,4 +179,29 @@ licenses:
|
|||||||
defend, and hold each Contributor harmless for any liability
|
defend, and hold each Contributor harmless for any liability
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
of your accepting any such warranty or additional liability.
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
notices: []
|
notices: []
|
||||||
|
|||||||
2
.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
generated
2
.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@protobuf-ts/runtime-rpc"
|
name: "@protobuf-ts/runtime-rpc"
|
||||||
version: 2.9.4
|
version: 2.9.5
|
||||||
type: npm
|
type: npm
|
||||||
summary: Runtime library for RPC clients generated by the protoc plugin "protobuf-ts"
|
summary: Runtime library for RPC clients generated by the protoc plugin "protobuf-ts"
|
||||||
homepage: https://github.com/timostamm/protobuf-ts
|
homepage: https://github.com/timostamm/protobuf-ts
|
||||||
|
|||||||
2
.licenses/npm/@protobuf-ts/runtime.dep.yml
generated
2
.licenses/npm/@protobuf-ts/runtime.dep.yml
generated
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@protobuf-ts/runtime"
|
name: "@protobuf-ts/runtime"
|
||||||
version: 2.9.4
|
version: 2.9.5
|
||||||
type: npm
|
type: npm
|
||||||
summary: Runtime library for code generated by the protoc plugin "protobuf-ts"
|
summary: Runtime library for code generated by the protoc plugin "protobuf-ts"
|
||||||
homepage: https://github.com/timostamm/protobuf-ts
|
homepage: https://github.com/timostamm/protobuf-ts
|
||||||
|
|||||||
42
.licenses/npm/camel-case.dep.yml
generated
42
.licenses/npm/camel-case.dep.yml
generated
@@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: camel-case
|
|
||||||
version: 4.1.2
|
|
||||||
type: npm
|
|
||||||
summary: Transform into a string with the separator denoted by the next word capitalized
|
|
||||||
homepage: https://github.com/blakeembrey/change-case/tree/master/packages/camel-case#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[npm-image]: https://img.shields.io/npm/v/camel-case.svg?style=flat
|
|
||||||
[npm-url]: https://npmjs.org/package/camel-case
|
|
||||||
[downloads-image]: https://img.shields.io/npm/dm/camel-case.svg?style=flat
|
|
||||||
[downloads-url]: https://npmjs.org/package/camel-case
|
|
||||||
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/camel-case.svg
|
|
||||||
[bundlephobia-url]: https://bundlephobia.com/result?p=camel-case
|
|
||||||
notices: []
|
|
||||||
33
.licenses/npm/commander.dep.yml
generated
33
.licenses/npm/commander.dep.yml
generated
@@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: commander
|
|
||||||
version: 6.2.1
|
|
||||||
type: npm
|
|
||||||
summary: the complete solution for node.js command-line programs
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
(The MIT License)
|
|
||||||
|
|
||||||
Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
'Software'), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
||||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
||||||
32
.licenses/npm/dot-object.dep.yml
generated
32
.licenses/npm/dot-object.dep.yml
generated
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
name: dot-object
|
|
||||||
version: 2.1.5
|
|
||||||
type: npm
|
|
||||||
summary: dot-object makes it possible to transform and read (JSON) objects using dot
|
|
||||||
notation.
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: MIT-LICENSE
|
|
||||||
text: |
|
|
||||||
Copyright (c) 2013 Rob Halff
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
||||||
55
.licenses/npm/fs.realpath.dep.yml
generated
55
.licenses/npm/fs.realpath.dep.yml
generated
@@ -1,55 +0,0 @@
|
|||||||
---
|
|
||||||
name: fs.realpath
|
|
||||||
version: 1.0.0
|
|
||||||
type: npm
|
|
||||||
summary: Use node's fs.realpath, but fall back to the JS implementation if the native
|
|
||||||
one fails
|
|
||||||
homepage:
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
This library bundles a version of the `fs.realpath` and `fs.realpathSync`
|
|
||||||
methods from Node.js v0.10 under the terms of the Node.js MIT license.
|
|
||||||
|
|
||||||
Node's license follows, also included at the header of `old.js` which contains
|
|
||||||
the licensed code:
|
|
||||||
|
|
||||||
Copyright Joyent, Inc. and other Node contributors.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
||||||
DEALINGS IN THE SOFTWARE.
|
|
||||||
notices: []
|
|
||||||
32
.licenses/npm/glob.dep.yml
generated
32
.licenses/npm/glob.dep.yml
generated
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
name: glob
|
|
||||||
version: 7.2.3
|
|
||||||
type: npm
|
|
||||||
summary: a little globber
|
|
||||||
homepage:
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
## Glob Logo
|
|
||||||
|
|
||||||
Glob's logo created by Tanya Brassie <http://tanyabrassie.com/>, licensed
|
|
||||||
under a Creative Commons Attribution-ShareAlike 4.0 International License
|
|
||||||
https://creativecommons.org/licenses/by-sa/4.0/
|
|
||||||
notices: []
|
|
||||||
26
.licenses/npm/inflight.dep.yml
generated
26
.licenses/npm/inflight.dep.yml
generated
@@ -1,26 +0,0 @@
|
|||||||
---
|
|
||||||
name: inflight
|
|
||||||
version: 1.0.6
|
|
||||||
type: npm
|
|
||||||
summary: Add callbacks to requests in flight to avoid async duplication
|
|
||||||
homepage: https://github.com/isaacs/inflight
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
||||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
notices: []
|
|
||||||
28
.licenses/npm/inherits.dep.yml
generated
28
.licenses/npm/inherits.dep.yml
generated
@@ -1,28 +0,0 @@
|
|||||||
---
|
|
||||||
name: inherits
|
|
||||||
version: 2.0.4
|
|
||||||
type: npm
|
|
||||||
summary: Browser-friendly inheritance fully compatible with standard node.js inherits()
|
|
||||||
homepage:
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |+
|
|
||||||
The ISC License
|
|
||||||
|
|
||||||
Copyright (c) Isaac Z. Schlueter
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
||||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
||||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
||||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
||||||
PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
notices: []
|
|
||||||
...
|
|
||||||
58
.licenses/npm/lodash.dep.yml
generated
58
.licenses/npm/lodash.dep.yml
generated
@@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
name: lodash
|
|
||||||
version: 4.17.21
|
|
||||||
type: npm
|
|
||||||
summary: Lodash modular utilities.
|
|
||||||
homepage: https://lodash.com/
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
||||||
|
|
||||||
Based on Underscore.js, copyright Jeremy Ashkenas,
|
|
||||||
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
|
|
||||||
|
|
||||||
This software consists of voluntary contributions made by many
|
|
||||||
individuals. For exact contribution history, see the revision history
|
|
||||||
available at https://github.com/lodash/lodash
|
|
||||||
|
|
||||||
The following license applies to all parts of this software except as
|
|
||||||
documented below:
|
|
||||||
|
|
||||||
====
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
====
|
|
||||||
|
|
||||||
Copyright and related rights for sample code are waived via CC0. Sample
|
|
||||||
code is defined as all source code displayed within the prose of the
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
|
||||||
|
|
||||||
====
|
|
||||||
|
|
||||||
Files located in the node_modules and vendor directories are externally
|
|
||||||
maintained libraries used by this software which have their own
|
|
||||||
licenses; we recommend you read them, as their terms may differ from the
|
|
||||||
terms above.
|
|
||||||
notices: []
|
|
||||||
42
.licenses/npm/lower-case.dep.yml
generated
42
.licenses/npm/lower-case.dep.yml
generated
@@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: lower-case
|
|
||||||
version: 2.0.2
|
|
||||||
type: npm
|
|
||||||
summary: Transforms the string to lower case
|
|
||||||
homepage: https://github.com/blakeembrey/change-case/tree/master/packages/lower-case#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[npm-image]: https://img.shields.io/npm/v/lower-case.svg?style=flat
|
|
||||||
[npm-url]: https://npmjs.org/package/lower-case
|
|
||||||
[downloads-image]: https://img.shields.io/npm/dm/lower-case.svg?style=flat
|
|
||||||
[downloads-url]: https://npmjs.org/package/lower-case
|
|
||||||
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/lower-case.svg
|
|
||||||
[bundlephobia-url]: https://bundlephobia.com/result?p=lower-case
|
|
||||||
notices: []
|
|
||||||
42
.licenses/npm/no-case.dep.yml
generated
42
.licenses/npm/no-case.dep.yml
generated
@@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: no-case
|
|
||||||
version: 3.0.4
|
|
||||||
type: npm
|
|
||||||
summary: Transform into a lower cased string with spaces between words
|
|
||||||
homepage: https://github.com/blakeembrey/change-case/tree/master/packages/no-case#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[npm-image]: https://img.shields.io/npm/v/no-case.svg?style=flat
|
|
||||||
[npm-url]: https://npmjs.org/package/no-case
|
|
||||||
[downloads-image]: https://img.shields.io/npm/dm/no-case.svg?style=flat
|
|
||||||
[downloads-url]: https://npmjs.org/package/no-case
|
|
||||||
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/no-case.svg
|
|
||||||
[bundlephobia-url]: https://bundlephobia.com/result?p=no-case
|
|
||||||
notices: []
|
|
||||||
42
.licenses/npm/pascal-case.dep.yml
generated
42
.licenses/npm/pascal-case.dep.yml
generated
@@ -1,42 +0,0 @@
|
|||||||
---
|
|
||||||
name: pascal-case
|
|
||||||
version: 3.1.2
|
|
||||||
type: npm
|
|
||||||
summary: Transform into a string of capitalized words without separators
|
|
||||||
homepage: https://github.com/blakeembrey/change-case/tree/master/packages/pascal-case#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: README.md
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[npm-image]: https://img.shields.io/npm/v/pascal-case.svg?style=flat
|
|
||||||
[npm-url]: https://npmjs.org/package/pascal-case
|
|
||||||
[downloads-image]: https://img.shields.io/npm/dm/pascal-case.svg?style=flat
|
|
||||||
[downloads-url]: https://npmjs.org/package/pascal-case
|
|
||||||
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/pascal-case.svg
|
|
||||||
[bundlephobia-url]: https://bundlephobia.com/result?p=pascal-case
|
|
||||||
notices: []
|
|
||||||
34
.licenses/npm/path-is-absolute.dep.yml
generated
34
.licenses/npm/path-is-absolute.dep.yml
generated
@@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
name: path-is-absolute
|
|
||||||
version: 1.0.1
|
|
||||||
type: npm
|
|
||||||
summary: Node.js 0.12 path.isAbsolute() ponyfill
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: license
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: readme.md
|
|
||||||
text: MIT © [Sindre Sorhus](https://sindresorhus.com)
|
|
||||||
notices: []
|
|
||||||
46
.licenses/npm/path-to-regexp.dep.yml
generated
46
.licenses/npm/path-to-regexp.dep.yml
generated
@@ -1,46 +0,0 @@
|
|||||||
---
|
|
||||||
name: path-to-regexp
|
|
||||||
version: 6.3.0
|
|
||||||
type: npm
|
|
||||||
summary: Express style path to RegExp utility
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
||||||
- sources: Readme.md
|
|
||||||
text: |-
|
|
||||||
MIT
|
|
||||||
|
|
||||||
[npm-image]: https://img.shields.io/npm/v/path-to-regexp
|
|
||||||
[npm-url]: https://npmjs.org/package/path-to-regexp
|
|
||||||
[downloads-image]: https://img.shields.io/npm/dm/path-to-regexp
|
|
||||||
[downloads-url]: https://npmjs.org/package/path-to-regexp
|
|
||||||
[build-image]: https://img.shields.io/github/actions/workflow/status/pillarjs/path-to-regexp/ci.yml?branch=master
|
|
||||||
[build-url]: https://github.com/pillarjs/path-to-regexp/actions/workflows/ci.yml?query=branch%3Amaster
|
|
||||||
[coverage-image]: https://img.shields.io/codecov/c/gh/pillarjs/path-to-regexp
|
|
||||||
[coverage-url]: https://codecov.io/gh/pillarjs/path-to-regexp
|
|
||||||
[license-image]: http://img.shields.io/npm/l/path-to-regexp.svg?style=flat
|
|
||||||
[license-url]: LICENSE.md
|
|
||||||
notices: []
|
|
||||||
3585
.licenses/npm/prettier.dep.yml
generated
3585
.licenses/npm/prettier.dep.yml
generated
File diff suppressed because it is too large
Load Diff
216
.licenses/npm/ts-poet.dep.yml
generated
216
.licenses/npm/ts-poet.dep.yml
generated
@@ -1,216 +0,0 @@
|
|||||||
---
|
|
||||||
name: ts-poet
|
|
||||||
version: 4.15.0
|
|
||||||
type: npm
|
|
||||||
summary: code generation DSL for TypeScript
|
|
||||||
homepage:
|
|
||||||
license: apache-2.0
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.txt
|
|
||||||
text: |2+
|
|
||||||
|
|
||||||
|
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
notices: []
|
|
||||||
...
|
|
||||||
11
.licenses/npm/twirp-ts.dep.yml
generated
11
.licenses/npm/twirp-ts.dep.yml
generated
@@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
name: twirp-ts
|
|
||||||
version: 2.5.0
|
|
||||||
type: npm
|
|
||||||
summary: Typescript implementation of the Twirp protocol
|
|
||||||
homepage:
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: README.md
|
|
||||||
text: MIT <3
|
|
||||||
notices: []
|
|
||||||
39
.licenses/npm/uuid-3.4.0.dep.yml
generated
39
.licenses/npm/uuid-3.4.0.dep.yml
generated
@@ -1,39 +0,0 @@
|
|||||||
---
|
|
||||||
name: uuid
|
|
||||||
version: 3.4.0
|
|
||||||
type: npm
|
|
||||||
summary: RFC4122 (v1, v4, and v5) UUIDs
|
|
||||||
homepage: https://github.com/uuidjs/uuid#readme
|
|
||||||
license: mit
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE.md
|
|
||||||
text: |
|
|
||||||
The MIT License (MIT)
|
|
||||||
|
|
||||||
Copyright (c) 2010-2016 Robert Kieffer and other contributors
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices:
|
|
||||||
- sources: AUTHORS
|
|
||||||
text: |-
|
|
||||||
Robert Kieffer <robert@broofa.com>
|
|
||||||
Christoph Tavan <dev@tavan.de>
|
|
||||||
AJ ONeal <coolaj86@gmail.com>
|
|
||||||
Vincent Voyer <vincent@zeroload.net>
|
|
||||||
Roman Shtylman <shtylman@gmail.com>
|
|
||||||
24
.licenses/npm/yaml.dep.yml
generated
24
.licenses/npm/yaml.dep.yml
generated
@@ -1,24 +0,0 @@
|
|||||||
---
|
|
||||||
name: yaml
|
|
||||||
version: 1.10.2
|
|
||||||
type: npm
|
|
||||||
summary: JavaScript parser and stringifier for YAML
|
|
||||||
homepage: https://eemeli.org/yaml/v1/
|
|
||||||
license: isc
|
|
||||||
licenses:
|
|
||||||
- sources: LICENSE
|
|
||||||
text: |
|
|
||||||
Copyright 2018 Eemeli Aro <eemeli@gmail.com>
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any purpose
|
|
||||||
with or without fee is hereby granted, provided that the above copyright notice
|
|
||||||
and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
||||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
||||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
||||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
||||||
THIS SOFTWARE.
|
|
||||||
notices: []
|
|
||||||
@@ -10,15 +10,13 @@ import osm from 'os';
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import * as main from '../src/main';
|
import * as main from '../src/main';
|
||||||
import * as auth from '../src/authutil';
|
import * as auth from '../src/authutil';
|
||||||
import {INodeVersion, NodeInputs} from '../src/distributions/base-models';
|
import {INodeVersion} from '../src/distributions/base-models';
|
||||||
|
|
||||||
import nodeTestManifest from './data/versions-manifest.json';
|
import nodeTestManifest from './data/versions-manifest.json';
|
||||||
import nodeTestDist from './data/node-dist-index.json';
|
import nodeTestDist from './data/node-dist-index.json';
|
||||||
import nodeTestDistNightly from './data/node-nightly-index.json';
|
import nodeTestDistNightly from './data/node-nightly-index.json';
|
||||||
import nodeTestDistRc from './data/node-rc-index.json';
|
import nodeTestDistRc from './data/node-rc-index.json';
|
||||||
import nodeV8CanaryTestDist from './data/v8-canary-dist-index.json';
|
import nodeV8CanaryTestDist from './data/v8-canary-dist-index.json';
|
||||||
import canaryBuild from '../src/distributions/v8-canary/canary_builds';
|
|
||||||
|
|
||||||
|
|
||||||
describe('setup-node', () => {
|
describe('setup-node', () => {
|
||||||
let inputs = {} as any;
|
let inputs = {} as any;
|
||||||
@@ -530,157 +528,4 @@ describe('setup-node', () => {
|
|||||||
expect(cacheSpy).not.toHaveBeenCalled();
|
expect(cacheSpy).not.toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('CanaryBuild - Mirror URL functionality', () => {
|
|
||||||
|
|
||||||
|
|
||||||
class CanaryBuild {
|
|
||||||
mirrorURL: string | undefined;
|
|
||||||
nodeInfo: NodeInputs;
|
|
||||||
|
|
||||||
constructor(nodeInfo: NodeInputs) {
|
|
||||||
this.nodeInfo = nodeInfo; // Store the nodeInfo object passed into the constructor
|
|
||||||
this.mirrorURL = nodeInfo.mirrorURL; // Set mirrorURL from nodeInfo, or undefined if not provided
|
|
||||||
}
|
|
||||||
|
|
||||||
async getDistributionMirrorUrl() {
|
|
||||||
// Check if mirror URL is undefined or empty, and return the default if so
|
|
||||||
if (!this.mirrorURL) {
|
|
||||||
core.info('Using mirror URL: https://nodejs.org/download/v8-canary');
|
|
||||||
return 'https://nodejs.org/download/v8-canary'; // Default URL
|
|
||||||
}else{
|
|
||||||
if (this.mirrorURL === '' ){
|
|
||||||
throw new Error('Mirror URL is empty. Please provide a valid mirror URL.');
|
|
||||||
}
|
|
||||||
return this.mirrorURL;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
it('should use the mirror URL from nodeInfo if provided', () => {
|
|
||||||
// Mocking core.info to track the log calls
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
const mirrorURL = 'https://custom.mirror.url/v8-canary';
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '8.0.0-canary',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false,
|
|
||||||
mirrorURL: mirrorURL // Provide the custom mirror URL
|
|
||||||
};
|
|
||||||
|
|
||||||
const canaryBuild = new CanaryBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Call the method to get the mirror URL
|
|
||||||
const distributionMirrorUrl = canaryBuild.getDistributionMirrorUrl();
|
|
||||||
|
|
||||||
// Assert that core.info was called with the custom mirror URL
|
|
||||||
expect(infoSpy).toHaveBeenCalledWith(`Using mirror URL: ${mirrorURL}`);
|
|
||||||
|
|
||||||
// Assert that the returned URL is the custom mirror URL
|
|
||||||
expect(distributionMirrorUrl).toBe(mirrorURL);
|
|
||||||
|
|
||||||
// Restore the original core.info implementation
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
|
||||||
it('should fall back to the default distribution URL if mirror URL is not provided', () => {
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '8.0.0-canary',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
// No mirrorURL provided here
|
|
||||||
};
|
|
||||||
|
|
||||||
const canaryBuild = new CanaryBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Call the method to get the distribution URL
|
|
||||||
const distributionMirrorUrl = canaryBuild.getDistributionMirrorUrl();
|
|
||||||
|
|
||||||
// Assert that core.info was called with the default URL
|
|
||||||
expect(infoSpy).toHaveBeenCalledWith('Using mirror URL: https://nodejs.org/download/v8-canary');
|
|
||||||
|
|
||||||
// Assert that the returned URL is the default one
|
|
||||||
expect(distributionMirrorUrl).toBe('https://nodejs.org/download/v8-canary');
|
|
||||||
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should log the correct info when mirror URL is not provided', () => {
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '8.0.0-canary',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
// No mirrorURL provided here
|
|
||||||
};
|
|
||||||
|
|
||||||
const canaryBuild = new CanaryBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Call the method
|
|
||||||
canaryBuild.getDistributionMirrorUrl();
|
|
||||||
|
|
||||||
// Assert that core.info was called with the fallback URL
|
|
||||||
expect(infoSpy).toHaveBeenCalledWith('Using mirror URL: https://nodejs.org/download/v8-canary');
|
|
||||||
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return mirror URL if provided in nodeInfo', () => {
|
|
||||||
// Custom mirror URL to be tested
|
|
||||||
const mirrorURL = 'https://custom.mirror.url/v8-canary';
|
|
||||||
|
|
||||||
// Create a spy on core.info to track its calls
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {}); // Mocking core.info
|
|
||||||
|
|
||||||
// Prepare the nodeInfo object with the custom mirror URL
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '8.0.0-canary',
|
|
||||||
arch: 'x64',
|
|
||||||
mirrorURL: mirrorURL, // Custom mirrorURL provided
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
};
|
|
||||||
|
|
||||||
// Create an instance of CanaryBuild, passing nodeInfo to the constructor
|
|
||||||
const canaryBuild = new CanaryBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Call the method
|
|
||||||
const distributionMirrorUrl = canaryBuild.getDistributionMirrorUrl();
|
|
||||||
|
|
||||||
// Assert that core.info was called with the expected message
|
|
||||||
expect(infoSpy).toHaveBeenCalledWith(`Using mirror URL: ${mirrorURL}`);
|
|
||||||
|
|
||||||
// Assert that the returned mirror URL is correct
|
|
||||||
expect(distributionMirrorUrl).toBe(mirrorURL);
|
|
||||||
|
|
||||||
// Restore the original core.info function after the test
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
|
||||||
it('should throw an error if mirror URL is empty string', async () => {
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '8.0.0-canary',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false,
|
|
||||||
mirrorURL: '' // Empty string provided as mirror URL
|
|
||||||
};
|
|
||||||
|
|
||||||
const canaryBuild = new CanaryBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Expect the method to throw an error for empty string mirror URL
|
|
||||||
expect(canaryBuild.getDistributionMirrorUrl()).toThrow('Mirror URL is empty. Please provide a valid mirror URL.');
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import 'jest';
|
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
import * as tc from '@actions/tool-cache';
|
import * as tc from '@actions/tool-cache';
|
||||||
import * as cache from '@actions/cache';
|
import * as cache from '@actions/cache';
|
||||||
@@ -15,11 +14,6 @@ import * as main from '../src/main';
|
|||||||
import * as util from '../src/util';
|
import * as util from '../src/util';
|
||||||
import OfficialBuilds from '../src/distributions/official_builds/official_builds';
|
import OfficialBuilds from '../src/distributions/official_builds/official_builds';
|
||||||
|
|
||||||
import * as installerFactory from '../src/distributions/installer-factory';
|
|
||||||
jest.mock('../src/distributions/installer-factory', () => ({
|
|
||||||
getNodejsDistribution: jest.fn()
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe('main tests', () => {
|
describe('main tests', () => {
|
||||||
let inputs = {} as any;
|
let inputs = {} as any;
|
||||||
let os = {} as any;
|
let os = {} as any;
|
||||||
@@ -286,91 +280,4 @@ describe('main tests', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Create a mock object that satisfies the BaseDistribution interface
|
|
||||||
const createMockNodejsDistribution = () => ({
|
|
||||||
setupNodeJs: jest.fn(),
|
|
||||||
httpClient: {}, // Mocking the httpClient (you can replace this with more detailed mocks if needed)
|
|
||||||
osPlat: 'darwin', // Mocking osPlat (the platform the action will run on, e.g., 'darwin', 'win32', 'linux')
|
|
||||||
nodeInfo: {
|
|
||||||
version: '14.x',
|
|
||||||
arch: 'x64',
|
|
||||||
platform: 'darwin',
|
|
||||||
},
|
|
||||||
getDistributionUrl: jest.fn().mockReturnValue('https://nodejs.org/dist/'), // Example URL
|
|
||||||
install: jest.fn(),
|
|
||||||
validate: jest.fn(),
|
|
||||||
// Add any other methods/properties required by your BaseDistribution type
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Mirror URL Tests', () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
jest.clearAllMocks();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should pass mirror URL correctly when provided', async () => {
|
|
||||||
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
|
|
||||||
if (name === 'mirror-url') return 'https://custom-mirror-url.com';
|
|
||||||
if (name === 'node-version') return '14.x';
|
|
||||||
return '';
|
|
||||||
});
|
|
||||||
|
|
||||||
const mockNodejsDistribution = createMockNodejsDistribution();
|
|
||||||
(installerFactory.getNodejsDistribution as jest.Mock).mockReturnValue(mockNodejsDistribution);
|
|
||||||
|
|
||||||
await main.run();
|
|
||||||
|
|
||||||
// Ensure setupNodeJs is called with the correct parameters, including the mirror URL
|
|
||||||
expect(mockNodejsDistribution.setupNodeJs).toHaveBeenCalledWith({
|
|
||||||
versionSpec: '14.x',
|
|
||||||
checkLatest: false,
|
|
||||||
auth: undefined,
|
|
||||||
stable: true,
|
|
||||||
arch: 'x64',
|
|
||||||
mirrorURL: 'https://custom-mirror-url.com', // Ensure this matches
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should use default mirror URL when no mirror URL is provided', async () => {
|
|
||||||
jest.spyOn(core, 'getInput').mockImplementation((name: string) => {
|
|
||||||
if (name === 'mirror-url') return ''; // Simulating no mirror URL provided
|
|
||||||
if (name === 'node-version') return '14.x';
|
|
||||||
return '';
|
|
||||||
});
|
|
||||||
|
|
||||||
const mockNodejsDistribution = createMockNodejsDistribution();
|
|
||||||
(installerFactory.getNodejsDistribution as jest.Mock).mockReturnValue(mockNodejsDistribution);
|
|
||||||
|
|
||||||
await main.run();
|
|
||||||
|
|
||||||
// Expect that setupNodeJs is called with an empty mirror URL (default behavior)
|
|
||||||
expect(mockNodejsDistribution.setupNodeJs).toHaveBeenCalledWith(expect.objectContaining({
|
|
||||||
mirrorURL: '', // Default URL is expected to be handled internally
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should handle mirror URL with spaces correctly', async () => {
|
|
||||||
const mirrorURL = 'https://custom-mirror-url.com ';
|
|
||||||
const expectedTrimmedURL = 'https://custom-mirror-url.com';
|
|
||||||
|
|
||||||
// Mock the setupNodeJs function
|
|
||||||
const mockNodejsDistribution = {
|
|
||||||
setupNodeJs: jest.fn(),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Simulate calling the main function that will trigger setupNodeJs
|
|
||||||
await main.run();
|
|
||||||
|
|
||||||
// Assert that setupNodeJs was called with the correct trimmed mirrorURL
|
|
||||||
expect(mockNodejsDistribution.setupNodeJs).toHaveBeenCalledWith(
|
|
||||||
expect.objectContaining({
|
|
||||||
mirrorURL: expectedTrimmedURL, // Ensure the URL is trimmed properly
|
|
||||||
})
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import osm from 'os';
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import * as main from '../src/main';
|
import * as main from '../src/main';
|
||||||
import * as auth from '../src/authutil';
|
import * as auth from '../src/authutil';
|
||||||
import {INodeVersion, NodeInputs} from '../src/distributions/base-models';
|
import {INodeVersion} from '../src/distributions/base-models';
|
||||||
import NightlyNodejs from '../src/distributions/nightly/nightly_builds';
|
|
||||||
import nodeTestManifest from './data/versions-manifest.json';
|
import nodeTestManifest from './data/versions-manifest.json';
|
||||||
import nodeTestDist from './data/node-dist-index.json';
|
import nodeTestDist from './data/node-dist-index.json';
|
||||||
import nodeTestDistNightly from './data/node-nightly-index.json';
|
import nodeTestDistNightly from './data/node-nightly-index.json';
|
||||||
@@ -606,127 +606,3 @@ describe('setup-node', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// Mock core.info to track the log output
|
|
||||||
jest.mock('@actions/core', () => ({
|
|
||||||
info: jest.fn(),
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Create a subclass to access the protected method for testing purposes
|
|
||||||
class TestNightlyNodejs extends NightlyNodejs {
|
|
||||||
nodeInputs: NodeInputs;
|
|
||||||
|
|
||||||
constructor(nodeInputs: NodeInputs) {
|
|
||||||
super(nodeInputs);
|
|
||||||
this.nodeInputs = nodeInputs;
|
|
||||||
}
|
|
||||||
|
|
||||||
getDistributionUrlPublic() {
|
|
||||||
// If a mirrorURL is provided, return it; otherwise, return the default URL
|
|
||||||
if (this.nodeInputs.mirrorURL && this.nodeInputs.mirrorURL.trim() !== '') {
|
|
||||||
core.info(`Using mirror URL: ${this.nodeInputs.mirrorURL}`);
|
|
||||||
return this.nodeInputs.mirrorURL;
|
|
||||||
} else {
|
|
||||||
core.info("Using default distribution URL for nightly Node.js.");
|
|
||||||
return 'https://nodejs.org/download/nightly';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
describe('NightlyNodejs', () => {
|
|
||||||
|
|
||||||
it('uses mirror URL when provided', async () => {
|
|
||||||
const mirrorURL = 'https://my.custom.mirror/nodejs/nightly';
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
mirrorURL: mirrorURL, // Use the custom mirror URL here
|
|
||||||
versionSpec: '18.0.0-nightly',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
};
|
|
||||||
|
|
||||||
const nightlyNode = new TestNightlyNodejs(nodeInfo);
|
|
||||||
|
|
||||||
const distributionUrl = nightlyNode.getDistributionUrlPublic();
|
|
||||||
|
|
||||||
// Check if the correct distribution URL is being used
|
|
||||||
expect(distributionUrl).toBe(mirrorURL);
|
|
||||||
|
|
||||||
// Verify if the core.info was called with the correct message
|
|
||||||
expect(core.info).toHaveBeenCalledWith(`Using mirror URL: ${mirrorURL}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('falls back to default distribution URL when no mirror URL is provided', async () => {
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '18.0.0-nightly', arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
}; const nightlyNode = new TestNightlyNodejs(nodeInfo);
|
|
||||||
|
|
||||||
const distributionUrl = nightlyNode.getDistributionUrlPublic();
|
|
||||||
|
|
||||||
expect(distributionUrl).toBe('https://nodejs.org/download/nightly');
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Using default distribution URL for nightly Node.js.');
|
|
||||||
});
|
|
||||||
|
|
||||||
const core = require('@actions/core'); // Mock core
|
|
||||||
jest.spyOn(core, 'info').mockImplementation(() => {}); // Mock core.info function
|
|
||||||
|
|
||||||
it('logs mirror URL when provided', async () => {
|
|
||||||
const mirrorURL = 'https://custom.mirror/nodejs/nightly';
|
|
||||||
|
|
||||||
const nodeInfo = {
|
|
||||||
mirrorURL: mirrorURL, // Set the mirror URL correctly
|
|
||||||
versionSpec: '18.0.0-nightly',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
};
|
|
||||||
|
|
||||||
const nightlyNode = new TestNightlyNodejs(nodeInfo);
|
|
||||||
await nightlyNode.getDistributionUrlPublic(); // Ensure to await if the function is async
|
|
||||||
|
|
||||||
expect(core.info).toHaveBeenCalledWith(`Using mirror URL: ${mirrorURL}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('logs default URL when no mirror URL is provided', async () => {
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '18.0.0-nightly', arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
}; const nightlyNode = new TestNightlyNodejs(nodeInfo);
|
|
||||||
|
|
||||||
nightlyNode.getDistributionUrlPublic();
|
|
||||||
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Using default distribution URL for nightly Node.js.');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('falls back to default distribution URL if mirror URL is an empty string', async () => {
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
mirrorURL: '', versionSpec: '18.0.0-nightly', arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
};
|
|
||||||
const nightlyNode = new TestNightlyNodejs(nodeInfo);
|
|
||||||
|
|
||||||
const distributionUrl = nightlyNode.getDistributionUrlPublic();
|
|
||||||
|
|
||||||
expect(distributionUrl).toBe('https://nodejs.org/download/nightly');
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Using default distribution URL for nightly Node.js.');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('falls back to default distribution URL if mirror URL is undefined', async () => {
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
mirrorURL: '', versionSpec: '18.0.0-nightly', arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false
|
|
||||||
};
|
|
||||||
const nightlyNode = new TestNightlyNodejs(nodeInfo);
|
|
||||||
|
|
||||||
const distributionUrl = nightlyNode.getDistributionUrlPublic();
|
|
||||||
|
|
||||||
expect(distributionUrl).toBe('https://nodejs.org/download/nightly');
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Using default distribution URL for nightly Node.js.');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -11,7 +11,7 @@ import path from 'path';
|
|||||||
import * as main from '../src/main';
|
import * as main from '../src/main';
|
||||||
import * as auth from '../src/authutil';
|
import * as auth from '../src/authutil';
|
||||||
import OfficialBuilds from '../src/distributions/official_builds/official_builds';
|
import OfficialBuilds from '../src/distributions/official_builds/official_builds';
|
||||||
import {INodeVersion, NodeInputs} from '../src/distributions/base-models';
|
import {INodeVersion} from '../src/distributions/base-models';
|
||||||
|
|
||||||
import nodeTestManifest from './data/versions-manifest.json';
|
import nodeTestManifest from './data/versions-manifest.json';
|
||||||
import nodeTestDist from './data/node-dist-index.json';
|
import nodeTestDist from './data/node-dist-index.json';
|
||||||
@@ -828,122 +828,4 @@ describe('setup-node', () => {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
import { OfficialBuilds } from './path-to-your-official-builds-file'; // Adjust path
|
|
||||||
import * as core from '@actions/core';
|
|
||||||
import * as tc from '@actions/tool-cache';
|
|
||||||
|
|
||||||
jest.mock('@actions/core');
|
|
||||||
jest.mock('@actions/tool-cache');
|
|
||||||
|
|
||||||
describe('OfficialBuilds - Mirror URL functionality', () => {
|
|
||||||
|
|
||||||
let officialBuilds: OfficialBuilds;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
const mockNodeInfo = {
|
|
||||||
versionSpec: '16.x',
|
|
||||||
mirrorURL: 'https://my.custom.mirror/nodejs',
|
|
||||||
arch: 'x64',
|
|
||||||
stable: true,
|
|
||||||
checkLatest: false,
|
|
||||||
osPlat: 'linux', // Mock OS platform to avoid "undefined" error
|
|
||||||
auth: 'someAuthToken',
|
|
||||||
};
|
|
||||||
officialBuilds = new OfficialBuilds(mockNodeInfo);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should download using the mirror URL when provided', async () => {
|
|
||||||
const mockDownloadPath = '/some/temp/path';
|
|
||||||
const mockDownloadTool = jest.spyOn(tc, 'downloadTool').mockResolvedValue(mockDownloadPath);
|
|
||||||
const mockAddPath = jest.spyOn(core, 'addPath').mockImplementation(() => {});
|
|
||||||
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
|
|
||||||
// Check if the mirror URL was used
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Attempting to download using mirror URL...');
|
|
||||||
expect(core.info).toHaveBeenCalledWith('downloadPath from downloadFromMirrorURL() /some/temp/path');
|
|
||||||
expect(core.addPath).toHaveBeenCalledWith(mockDownloadPath);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should log a message when mirror URL is used', async () => {
|
|
||||||
const mockInfo = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
|
|
||||||
// Check if the appropriate message is logged for mirror URL
|
|
||||||
expect(core.info).toHaveBeenCalledWith(`Using mirror URL: https://my.custom.mirror/nodejs`);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should fall back to default URL if mirror URL is not provided', async () => {
|
|
||||||
// Mock a scenario where mirror URL is not provided
|
|
||||||
officialBuilds.nodeInfo.mirrorURL = undefined;
|
|
||||||
|
|
||||||
const mockInfo = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
|
|
||||||
// Check if fallback logic was triggered
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Falling back to download directly from Node');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should log an error and handle failure during mirror URL download', async () => {
|
|
||||||
const errorMessage = 'Network error';
|
|
||||||
const mockError = jest.spyOn(core, 'error').mockImplementation(() => {});
|
|
||||||
const mockDebug = jest.spyOn(core, 'debug').mockImplementation(() => {});
|
|
||||||
|
|
||||||
const mockDownloadTool = jest.spyOn(tc, 'downloadTool').mockRejectedValue(new Error(errorMessage));
|
|
||||||
|
|
||||||
try {
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
} catch (error) {
|
|
||||||
// Expect core.error to be called with the error message
|
|
||||||
expect(core.error).toHaveBeenCalledWith(errorMessage);
|
|
||||||
expect(core.debug).toHaveBeenCalledWith(expect.stringContaining('empty stack'));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should log a fallback message if downloading from the mirror URL fails', async () => {
|
|
||||||
const mockInfo = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
const mockDownloadTool = jest.spyOn(tc, 'downloadTool').mockRejectedValue(new Error('Download failed'));
|
|
||||||
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
|
|
||||||
// Check if fallback log message was triggered
|
|
||||||
expect(core.info).toHaveBeenCalledWith('Failed to download from mirror URL. Falling back to default Node.js URL...');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should throw an error if mirror URL is not provided and downloading from both mirror and default fails', async () => {
|
|
||||||
const errorMessage = `Unable to find Node version for platform linux and architecture x64.`;
|
|
||||||
|
|
||||||
const mockDownloadTool = jest.spyOn(tc, 'downloadTool').mockRejectedValue(new Error('Download failed'));
|
|
||||||
const mockGetNodeJsVersions = jest.spyOn(officialBuilds, 'getNodeJsVersions').mockResolvedValue([]);
|
|
||||||
|
|
||||||
// Simulating failure in getting versions and download
|
|
||||||
try {
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
} catch (error) {
|
|
||||||
expect(error.message).toContain(errorMessage);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should throw an error if mirror URL is undefined and not provided', async () => {
|
|
||||||
const errorMessage = `Unable to find Node version for platform linux and architecture x64.`;
|
|
||||||
officialBuilds.nodeInfo.mirrorURL = undefined; // Simulate missing mirror URL
|
|
||||||
|
|
||||||
const mockGetNodeJsVersions = jest.spyOn(officialBuilds, 'getNodeJsVersions').mockResolvedValue([]);
|
|
||||||
const mockDownloadTool = jest.spyOn(tc, 'downloadTool').mockRejectedValue(new Error('Download failed'));
|
|
||||||
|
|
||||||
try {
|
|
||||||
await officialBuilds.setupNodeJs();
|
|
||||||
} catch (error) {
|
|
||||||
expect(error.message).toContain(errorMessage);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,13 +10,12 @@ import osm from 'os';
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import * as main from '../src/main';
|
import * as main from '../src/main';
|
||||||
import * as auth from '../src/authutil';
|
import * as auth from '../src/authutil';
|
||||||
import {INodeVersion, NodeInputs} from '../src/distributions/base-models';
|
import {INodeVersion} from '../src/distributions/base-models';
|
||||||
|
|
||||||
import nodeTestDist from './data/node-dist-index.json';
|
import nodeTestDist from './data/node-dist-index.json';
|
||||||
import nodeTestDistNightly from './data/node-nightly-index.json';
|
import nodeTestDistNightly from './data/node-nightly-index.json';
|
||||||
import nodeTestDistRc from './data/node-rc-index.json';
|
import nodeTestDistRc from './data/node-rc-index.json';
|
||||||
import nodeV8CanaryTestDist from './data/v8-canary-dist-index.json';
|
import nodeV8CanaryTestDist from './data/v8-canary-dist-index.json';
|
||||||
import RcBuild from '../src/distributions/rc/rc_builds';
|
|
||||||
|
|
||||||
describe('setup-node', () => {
|
describe('setup-node', () => {
|
||||||
let inputs = {} as any;
|
let inputs = {} as any;
|
||||||
@@ -145,10 +144,6 @@ describe('setup-node', () => {
|
|||||||
|
|
||||||
const toolPath = path.normalize('/cache/node/12.0.0-rc.1/x64');
|
const toolPath = path.normalize('/cache/node/12.0.0-rc.1/x64');
|
||||||
findSpy.mockImplementation(() => toolPath);
|
findSpy.mockImplementation(() => toolPath);
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
||||||
@@ -161,10 +156,6 @@ describe('setup-node', () => {
|
|||||||
|
|
||||||
const toolPath = path.normalize('/cache/node/12.0.0-rc.1/x64');
|
const toolPath = path.normalize('/cache/node/12.0.0-rc.1/x64');
|
||||||
findSpy.mockImplementation(() => toolPath);
|
findSpy.mockImplementation(() => toolPath);
|
||||||
|
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
|
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
||||||
@@ -177,10 +168,6 @@ describe('setup-node', () => {
|
|||||||
|
|
||||||
const toolPath = path.normalize('/cache/node/12.0.0-rc.1/x64');
|
const toolPath = path.normalize('/cache/node/12.0.0-rc.1/x64');
|
||||||
findSpy.mockImplementation(() => toolPath);
|
findSpy.mockImplementation(() => toolPath);
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
const expPath = path.join(toolPath, 'bin');
|
const expPath = path.join(toolPath, 'bin');
|
||||||
@@ -237,10 +224,6 @@ describe('setup-node', () => {
|
|||||||
inputs['node-version'] = versionSpec;
|
inputs['node-version'] = versionSpec;
|
||||||
|
|
||||||
findSpy.mockImplementation(() => '');
|
findSpy.mockImplementation(() => '');
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
expect(cnSpy).toHaveBeenCalledWith(
|
expect(cnSpy).toHaveBeenCalledWith(
|
||||||
@@ -264,11 +247,6 @@ describe('setup-node', () => {
|
|||||||
dlSpy.mockImplementation(() => {
|
dlSpy.mockImplementation(() => {
|
||||||
throw new Error(errMsg);
|
throw new Error(errMsg);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`);
|
expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`);
|
||||||
@@ -303,9 +281,6 @@ describe('setup-node', () => {
|
|||||||
const toolPath = path.normalize(`/cache/node/${version}/${arch}`);
|
const toolPath = path.normalize(`/cache/node/${version}/${arch}`);
|
||||||
exSpy.mockImplementation(async () => '/some/other/temp/path');
|
exSpy.mockImplementation(async () => '/some/other/temp/path');
|
||||||
cacheSpy.mockImplementation(async () => toolPath);
|
cacheSpy.mockImplementation(async () => toolPath);
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
await main.run();
|
await main.run();
|
||||||
expect(dlSpy).toHaveBeenCalled();
|
expect(dlSpy).toHaveBeenCalled();
|
||||||
@@ -356,11 +331,6 @@ describe('setup-node', () => {
|
|||||||
inputs['node-version'] = input;
|
inputs['node-version'] = input;
|
||||||
os['arch'] = 'x64';
|
os['arch'] = 'x64';
|
||||||
os['platform'] = 'linux';
|
os['platform'] = 'linux';
|
||||||
|
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
// act
|
// act
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
@@ -382,52 +352,32 @@ describe('setup-node', () => {
|
|||||||
'finds the %s version in the hostedToolcache',
|
'finds the %s version in the hostedToolcache',
|
||||||
async (input, expectedVersion) => {
|
async (input, expectedVersion) => {
|
||||||
const toolPath = path.normalize(`/cache/node/${expectedVersion}/x64`);
|
const toolPath = path.normalize(`/cache/node/${expectedVersion}/x64`);
|
||||||
|
findSpy.mockImplementation((_, version) =>
|
||||||
// Mocking the behavior of findSpy and findAllVersionsSpy
|
path.normalize(`/cache/node/${version}/x64`)
|
||||||
findSpy.mockImplementation((_, version) => {
|
);
|
||||||
console.log(`findSpy called for version: ${version}`); // Debugging line
|
|
||||||
return path.normalize(`/cache/node/${version}/x64`);
|
|
||||||
});
|
|
||||||
|
|
||||||
findAllVersionsSpy.mockReturnValue([
|
findAllVersionsSpy.mockReturnValue([
|
||||||
'2.2.2-rc.2',
|
'2.2.2-rc.2',
|
||||||
'1.1.1-rc.1',
|
'1.1.1-rc.1',
|
||||||
'99.1.1',
|
'99.1.1',
|
||||||
expectedVersion, // This should be the expected version
|
expectedVersion,
|
||||||
'88.1.1',
|
'88.1.1',
|
||||||
'3.3.3-rc.3'
|
'3.3.3-rc.3'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
inputs['node-version'] = input;
|
inputs['node-version'] = input;
|
||||||
os['arch'] = 'x64';
|
os['arch'] = 'x64';
|
||||||
os['platform'] = 'linux';
|
os['platform'] = 'linux';
|
||||||
|
|
||||||
// Ensure spies are set up before running the main logic
|
// act
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
|
|
||||||
// Act: Run the main function (your application logic)
|
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
// Debugging output to check if logSpy was called
|
// assert
|
||||||
console.log('logSpy calls:', logSpy.mock.calls); // Debugging line
|
|
||||||
|
|
||||||
// Assert: Check that the logSpy was called with the correct message
|
|
||||||
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
||||||
|
|
||||||
// Assert: Check that cnSpy was called with the correct add-path action
|
|
||||||
expect(cnSpy).toHaveBeenCalledWith(
|
expect(cnSpy).toHaveBeenCalledWith(
|
||||||
`::add-path::${path.join(toolPath, 'bin')}${osm.EOL}`
|
`::add-path::${path.join(toolPath, 'bin')}${osm.EOL}`
|
||||||
);
|
);
|
||||||
|
|
||||||
// Clean up spies
|
|
||||||
logSpy.mockRestore();
|
|
||||||
cnSpy.mockRestore();
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
it('throws an error if version is not found', async () => {
|
it('throws an error if version is not found', async () => {
|
||||||
const versionSpec = '19.0.0-rc.3';
|
const versionSpec = '19.0.0-rc.3';
|
||||||
@@ -440,10 +390,6 @@ describe('setup-node', () => {
|
|||||||
inputs['node-version'] = versionSpec;
|
inputs['node-version'] = versionSpec;
|
||||||
os['arch'] = 'x64';
|
os['arch'] = 'x64';
|
||||||
os['platform'] = 'linux';
|
os['platform'] = 'linux';
|
||||||
// Ensure spies are set up before running the main logic
|
|
||||||
const logSpy = jest.spyOn(console, 'log'); // Ensure this is spying on console.log
|
|
||||||
const cnSpy = jest.spyOn(process.stdout, 'write'); // Ensure this spies on the correct add-path function
|
|
||||||
|
|
||||||
// act
|
// act
|
||||||
await main.run();
|
await main.run();
|
||||||
|
|
||||||
@@ -453,133 +399,4 @@ describe('setup-node', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
describe('RcBuild - Mirror URL functionality', () => {
|
|
||||||
const nodeInfo: NodeInputs = {
|
|
||||||
versionSpec: '18.0.0-rc',
|
|
||||||
arch: 'x64',
|
|
||||||
mirrorURL: '',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
class RcBuild {
|
|
||||||
mirrorURL: string | undefined;
|
|
||||||
nodeInfo: NodeInputs;
|
|
||||||
|
|
||||||
constructor(nodeInfo: NodeInputs) {
|
|
||||||
this.nodeInfo = nodeInfo; // Store the nodeInfo object passed into the constructor
|
|
||||||
this.mirrorURL = nodeInfo.mirrorURL; // Set mirrorURL from nodeInfo, or undefined if not provided
|
|
||||||
}
|
|
||||||
|
|
||||||
getDistributionMirrorUrl() {
|
|
||||||
// If mirrorURL is provided in nodeInfo, return it
|
|
||||||
if (this.nodeInfo.mirrorURL != '') {
|
|
||||||
core.info(`Using mirror URL: ${this.nodeInfo.mirrorURL}`);
|
|
||||||
return this.nodeInfo.mirrorURL;
|
|
||||||
}else{
|
|
||||||
if(this.nodeInfo.mirrorURL === '') {
|
|
||||||
throw new Error('Mirror URL is empty. Please provide a valid mirror URL.');
|
|
||||||
}else{
|
|
||||||
if (this.nodeInfo.mirrorURL === undefined) {
|
|
||||||
throw new Error('Mirror URL is undefined. Please provide a valid mirror URL.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
it('should return the default distribution URL if no mirror URL is provided', () => {
|
|
||||||
// Assuming nodeInfo does not have a mirrorURL
|
|
||||||
const nodeInfo = {
|
|
||||||
versionSpec: '16.0.0-rc',
|
|
||||||
arch: 'x64',
|
|
||||||
checkLatest: false,
|
|
||||||
stable: false,
|
|
||||||
mirrorURL: '', // No mirror URL provided
|
|
||||||
};
|
|
||||||
|
|
||||||
const rcBuild = new RcBuild(nodeInfo);
|
|
||||||
|
|
||||||
const distributionUrl = rcBuild.getDistributionMirrorUrl();
|
|
||||||
|
|
||||||
// Default URL
|
|
||||||
expect(distributionUrl).toBe('https://nodejs.org/download/rc');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should use the mirror URL from nodeInfo if provided', () => {
|
|
||||||
const mirrorURL = 'https://my.custom.mirror/nodejs'; // Set the custom mirror URL
|
|
||||||
nodeInfo.mirrorURL = mirrorURL; // Set the mirrorURL in nodeInfo
|
|
||||||
|
|
||||||
const rcBuild = new RcBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Mock core.info to track its calls
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
// Call the method
|
|
||||||
const distributionMirrorUrl = rcBuild.getDistributionMirrorUrl(); // Access the method
|
|
||||||
|
|
||||||
// Assert that core.info was called with the correct mirror URL message
|
|
||||||
expect(infoSpy).toHaveBeenCalledWith(`Using mirror URL: ${mirrorURL}`);
|
|
||||||
|
|
||||||
// Assert that the returned URL is the mirror URL
|
|
||||||
expect(distributionMirrorUrl).toBe(mirrorURL);
|
|
||||||
|
|
||||||
// Restore the original core.info function after the test
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('should throw an error if mirror URL is empty', () => {
|
|
||||||
nodeInfo.mirrorURL = ''; // Empty mirror URL
|
|
||||||
|
|
||||||
const rcBuild = new RcBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Mock core.info to track its calls
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
// Expect the function to return the default URL because the mirror URL is empty
|
|
||||||
const distributionMirrorUrl = rcBuild.getDistributionMirrorUrl();
|
|
||||||
|
|
||||||
// Assert the returned URL is the default URL
|
|
||||||
expect(distributionMirrorUrl).toBe('https://nodejs.org/download/rc');
|
|
||||||
|
|
||||||
// Ensure that core.info was NOT called because it's not a custom mirror URL
|
|
||||||
expect(infoSpy).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
// Restore the original core.info function after the test
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it('should throw an error if mirror URL is undefined', () => {
|
|
||||||
nodeInfo.mirrorURL = undefined; // Undefined mirror URL
|
|
||||||
|
|
||||||
const rcBuild = new RcBuild(nodeInfo);
|
|
||||||
|
|
||||||
// Mock core.info to track its calls
|
|
||||||
const infoSpy = jest.spyOn(core, 'info').mockImplementation(() => {});
|
|
||||||
|
|
||||||
// Expect the function to throw an error due to undefined mirror URL
|
|
||||||
expect(() => rcBuild.getDistributionMirrorUrl()).toThrowError('Mirror URL is undefined. Please provide a valid mirror URL.');
|
|
||||||
|
|
||||||
// Ensure that core.info was NOT called because it's not a valid URL
|
|
||||||
expect(infoSpy).not.toHaveBeenCalled();
|
|
||||||
|
|
||||||
infoSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,6 @@ inputs:
|
|||||||
check-latest:
|
check-latest:
|
||||||
description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec.'
|
description: 'Set this option if you want the action to check for the latest available version that satisfies the version spec.'
|
||||||
default: false
|
default: false
|
||||||
mirror-url:
|
|
||||||
description: 'Custom mirror URL to download Node.js from (optional)'
|
|
||||||
required: false
|
|
||||||
registry-url:
|
registry-url:
|
||||||
description: 'Optional registry to set up for auth. Will set the registry in a project level .npmrc and .yarnrc file, and set up auth to read in from env.NODE_AUTH_TOKEN.'
|
description: 'Optional registry to set up for auth. Will set the registry in a project level .npmrc and .yarnrc file, and set up auth to read in from env.NODE_AUTH_TOKEN.'
|
||||||
scope:
|
scope:
|
||||||
|
|||||||
5739
dist/cache-save/index.js
vendored
5739
dist/cache-save/index.js
vendored
File diff suppressed because one or more lines are too long
6845
dist/setup/index.js
vendored
6845
dist/setup/index.js
vendored
File diff suppressed because one or more lines are too long
216
package-lock.json
generated
216
package-lock.json
generated
@@ -9,14 +9,14 @@
|
|||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^4.0.0",
|
"@actions/cache": "^4.0.2",
|
||||||
"@actions/core": "^1.11.1",
|
"@actions/core": "^1.11.1",
|
||||||
"@actions/exec": "^1.1.1",
|
"@actions/exec": "^1.1.1",
|
||||||
"@actions/github": "^5.1.1",
|
"@actions/github": "^5.1.1",
|
||||||
"@actions/glob": "^0.5.0",
|
"@actions/glob": "^0.5.0",
|
||||||
"@actions/http-client": "^2.2.1",
|
"@actions/http-client": "^2.2.1",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^2.0.1",
|
"@actions/tool-cache": "^2.0.2",
|
||||||
"semver": "^7.6.3",
|
"semver": "^7.6.3",
|
||||||
"uuid": "^9.0.1"
|
"uuid": "^9.0.1"
|
||||||
},
|
},
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
"@types/semver": "^7.5.8",
|
"@types/semver": "^7.5.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||||
"@typescript-eslint/parser": "^5.54.0",
|
"@typescript-eslint/parser": "^5.54.0",
|
||||||
"@vercel/ncc": "^0.38.0",
|
"@vercel/ncc": "^0.38.3",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-jest": "^27.9.0",
|
"eslint-plugin-jest": "^27.9.0",
|
||||||
@@ -49,9 +49,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/cache": {
|
"node_modules/@actions/cache": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-4.0.2.tgz",
|
||||||
"integrity": "sha512-WIuxjnZ44lNYtIS4fqSaYvF00hORdy3cSin+jx8xNgBVGWnNIAiCBHjlwusVQlcgExoQC9pHXGrDsZyZr7rCDQ==",
|
"integrity": "sha512-cBr7JL1q+JKjbBd3w3SZN5OQ1Xg+/D8QLMcE7MpgpghZlL4biBO0ZEeraoTxCZyfN0YY0dxXlLgsgGv/sT5BTg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.11.1",
|
"@actions/core": "^1.11.1",
|
||||||
@@ -63,8 +63,7 @@
|
|||||||
"@azure/ms-rest-js": "^2.6.0",
|
"@azure/ms-rest-js": "^2.6.0",
|
||||||
"@azure/storage-blob": "^12.13.0",
|
"@azure/storage-blob": "^12.13.0",
|
||||||
"@protobuf-ts/plugin": "^2.9.4",
|
"@protobuf-ts/plugin": "^2.9.4",
|
||||||
"semver": "^6.3.1",
|
"semver": "^6.3.1"
|
||||||
"twirp-ts": "^2.5.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/cache/node_modules/@actions/glob": {
|
"node_modules/@actions/cache/node_modules/@actions/glob": {
|
||||||
@@ -139,16 +138,16 @@
|
|||||||
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
|
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
|
||||||
},
|
},
|
||||||
"node_modules/@actions/tool-cache": {
|
"node_modules/@actions/tool-cache": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.2.tgz",
|
||||||
"integrity": "sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==",
|
"integrity": "sha512-fBhNNOWxuoLxztQebpOaWu6WeVmuwa77Z+DxIZ1B+OYvGkGQon6kTVg6Z32Cb13WCuw0szqonK+hh03mJV7Z6w==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.2.6",
|
"@actions/core": "^1.11.1",
|
||||||
"@actions/exec": "^1.0.0",
|
"@actions/exec": "^1.0.0",
|
||||||
"@actions/http-client": "^2.0.1",
|
"@actions/http-client": "^2.0.1",
|
||||||
"@actions/io": "^1.1.1",
|
"@actions/io": "^1.1.1",
|
||||||
"semver": "^6.1.0",
|
"semver": "^6.1.0"
|
||||||
"uuid": "^3.3.2"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/tool-cache/node_modules/semver": {
|
"node_modules/@actions/tool-cache/node_modules/semver": {
|
||||||
@@ -159,15 +158,6 @@
|
|||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/tool-cache/node_modules/uuid": {
|
|
||||||
"version": "3.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
|
||||||
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
|
|
||||||
"deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
|
|
||||||
"bin": {
|
|
||||||
"uuid": "bin/uuid"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@ampproject/remapping": {
|
"node_modules/@ampproject/remapping": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
|
||||||
@@ -1682,15 +1672,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@protobuf-ts/plugin": {
|
"node_modules/@protobuf-ts/plugin": {
|
||||||
"version": "2.9.4",
|
"version": "2.9.5",
|
||||||
"resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz",
|
"resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.5.tgz",
|
||||||
"integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==",
|
"integrity": "sha512-KCzNRTFye837XdfPjS85gGzxgPGVDR3W8Px2G3etXuouNog9W+Cr+U0IBTFADrRWXC2x+OSNjXxrdZEiw+H5Cw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@protobuf-ts/plugin-framework": "^2.9.4",
|
"@protobuf-ts/plugin-framework": "^2.9.5",
|
||||||
"@protobuf-ts/protoc": "^2.9.4",
|
"@protobuf-ts/protoc": "^2.9.5",
|
||||||
"@protobuf-ts/runtime": "^2.9.4",
|
"@protobuf-ts/runtime": "^2.9.5",
|
||||||
"@protobuf-ts/runtime-rpc": "^2.9.4",
|
"@protobuf-ts/runtime-rpc": "^2.9.5",
|
||||||
"typescript": "^3.9"
|
"typescript": "^3.9"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -1699,12 +1689,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@protobuf-ts/plugin-framework": {
|
"node_modules/@protobuf-ts/plugin-framework": {
|
||||||
"version": "2.9.4",
|
"version": "2.9.5",
|
||||||
"resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz",
|
"resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.5.tgz",
|
||||||
"integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==",
|
"integrity": "sha512-DYNQ8Ga3xwPZMfaZGRCnDOcEdQZK9MorTXngVoFLnHWEE8zLhUjFVtdkChZtTih6rl8Z6akyA7hRgj/GrJF58Q==",
|
||||||
"license": "(Apache-2.0 AND BSD-3-Clause)",
|
"license": "(Apache-2.0 AND BSD-3-Clause)",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@protobuf-ts/runtime": "^2.9.4",
|
"@protobuf-ts/runtime": "^2.9.5",
|
||||||
"typescript": "^3.9"
|
"typescript": "^3.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1735,27 +1725,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@protobuf-ts/protoc": {
|
"node_modules/@protobuf-ts/protoc": {
|
||||||
"version": "2.9.4",
|
"version": "2.9.5",
|
||||||
"resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz",
|
"resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.5.tgz",
|
||||||
"integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==",
|
"integrity": "sha512-n6a7OHfr/Ubw483L6kNJB0wBCe/Ops0A652zB6J6nR2x1o+pjVFrMCeeQQsqxkYpQwQ8FCIETSxrMpfOBKTIvQ==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
"protoc": "protoc.js"
|
"protoc": "protoc.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@protobuf-ts/runtime": {
|
"node_modules/@protobuf-ts/runtime": {
|
||||||
"version": "2.9.4",
|
"version": "2.9.5",
|
||||||
"resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz",
|
"resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.5.tgz",
|
||||||
"integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==",
|
"integrity": "sha512-SsumigRe3IqNTCQvVZUqDQExsKF72eyAMiWlYb5Jwj3eU4z8UH7JLlSfb/Wjidz4b/chTN6zh5AXBSKl0Asm3A==",
|
||||||
"license": "(Apache-2.0 AND BSD-3-Clause)"
|
"license": "(Apache-2.0 AND BSD-3-Clause)"
|
||||||
},
|
},
|
||||||
"node_modules/@protobuf-ts/runtime-rpc": {
|
"node_modules/@protobuf-ts/runtime-rpc": {
|
||||||
"version": "2.9.4",
|
"version": "2.9.5",
|
||||||
"resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz",
|
"resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.5.tgz",
|
||||||
"integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==",
|
"integrity": "sha512-NWAb1TaV4CR+BknZr1WRVT5Ws2AupVwGgRNes4oPAFrgLNXQotDFl2E6pmsjPwME8sAgJVzeSr7bUqQVyoAK2A==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@protobuf-ts/runtime": "^2.9.4"
|
"@protobuf-ts/runtime": "^2.9.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sinclair/typebox": {
|
"node_modules/@sinclair/typebox": {
|
||||||
@@ -2133,10 +2123,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@vercel/ncc": {
|
"node_modules/@vercel/ncc": {
|
||||||
"version": "0.38.1",
|
"version": "0.38.3",
|
||||||
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz",
|
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.3.tgz",
|
||||||
"integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==",
|
"integrity": "sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
"bin": {
|
"bin": {
|
||||||
"ncc": "dist/ncc/cli.js"
|
"ncc": "dist/ncc/cli.js"
|
||||||
}
|
}
|
||||||
@@ -2488,16 +2479,6 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/camel-case": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"pascal-case": "^3.1.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/camelcase": {
|
"node_modules/camelcase": {
|
||||||
"version": "5.3.1",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
||||||
@@ -2632,15 +2613,6 @@
|
|||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/commander": {
|
|
||||||
"version": "6.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
|
||||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/concat-map": {
|
"node_modules/concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
@@ -2788,19 +2760,6 @@
|
|||||||
"node": ">=6.0.0"
|
"node": ">=6.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dot-object": {
|
|
||||||
"version": "2.1.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz",
|
|
||||||
"integrity": "sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"commander": "^6.1.0",
|
|
||||||
"glob": "^7.1.6"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"dot-object": "bin/dot-object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.563",
|
"version": "1.4.563",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz",
|
||||||
@@ -3363,7 +3322,8 @@
|
|||||||
"node_modules/fs.realpath": {
|
"node_modules/fs.realpath": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/fsevents": {
|
"node_modules/fsevents": {
|
||||||
"version": "2.3.3",
|
"version": "2.3.3",
|
||||||
@@ -3431,6 +3391,7 @@
|
|||||||
"version": "7.2.3",
|
"version": "7.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fs.realpath": "^1.0.0",
|
"fs.realpath": "^1.0.0",
|
||||||
"inflight": "^1.0.4",
|
"inflight": "^1.0.4",
|
||||||
@@ -3598,6 +3559,7 @@
|
|||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||||
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"once": "^1.3.0",
|
"once": "^1.3.0",
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
@@ -3606,7 +3568,8 @@
|
|||||||
"node_modules/inherits": {
|
"node_modules/inherits": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/is-arrayish": {
|
"node_modules/is-arrayish": {
|
||||||
"version": "0.2.1",
|
"version": "0.2.1",
|
||||||
@@ -4457,12 +4420,6 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lodash": {
|
|
||||||
"version": "4.17.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/lodash.memoize": {
|
"node_modules/lodash.memoize": {
|
||||||
"version": "4.1.2",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
||||||
@@ -4475,15 +4432,6 @@
|
|||||||
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/lower-case": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/lru-cache": {
|
"node_modules/lru-cache": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||||
@@ -4608,16 +4556,6 @@
|
|||||||
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
|
"integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/no-case": {
|
|
||||||
"version": "3.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
|
|
||||||
"integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"lower-case": "^2.0.2",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/node-fetch": {
|
"node_modules/node-fetch": {
|
||||||
"version": "2.7.0",
|
"version": "2.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
||||||
@@ -4779,16 +4717,6 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pascal-case": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"no-case": "^3.0.4",
|
|
||||||
"tslib": "^2.0.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/path-exists": {
|
"node_modules/path-exists": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||||
@@ -4802,6 +4730,7 @@
|
|||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||||
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@@ -4821,12 +4750,6 @@
|
|||||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/path-to-regexp": {
|
|
||||||
"version": "6.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
|
|
||||||
"integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/path-type": {
|
"node_modules/path-type": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
|
||||||
@@ -4940,6 +4863,7 @@
|
|||||||
"version": "2.8.8",
|
"version": "2.8.8",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||||
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
||||||
|
"dev": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin-prettier.js"
|
"prettier": "bin-prettier.js"
|
||||||
},
|
},
|
||||||
@@ -5466,16 +5390,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ts-poet": {
|
|
||||||
"version": "4.15.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz",
|
|
||||||
"integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"lodash": "^4.17.15",
|
|
||||||
"prettier": "^2.5.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.6.2",
|
"version": "2.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
||||||
@@ -5510,35 +5424,6 @@
|
|||||||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/twirp-ts": {
|
|
||||||
"version": "2.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz",
|
|
||||||
"integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@protobuf-ts/plugin-framework": "^2.0.7",
|
|
||||||
"camel-case": "^4.1.2",
|
|
||||||
"dot-object": "^2.1.4",
|
|
||||||
"path-to-regexp": "^6.2.0",
|
|
||||||
"ts-poet": "^4.5.0",
|
|
||||||
"yaml": "^1.10.2"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"protoc-gen-twirp_ts": "protoc-gen-twirp_ts"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"@protobuf-ts/plugin": "^2.5.0",
|
|
||||||
"ts-proto": "^1.81.3"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"@protobuf-ts/plugin": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"ts-proto": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/type-check": {
|
"node_modules/type-check": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
||||||
@@ -5780,15 +5665,6 @@
|
|||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
|
||||||
"version": "1.10.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
|
|
||||||
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
|
|
||||||
"license": "ISC",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/yargs": {
|
"node_modules/yargs": {
|
||||||
"version": "17.7.2",
|
"version": "17.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
||||||
|
|||||||
@@ -25,14 +25,14 @@
|
|||||||
"author": "GitHub",
|
"author": "GitHub",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^4.0.0",
|
"@actions/cache": "^4.0.2",
|
||||||
"@actions/core": "^1.11.1",
|
"@actions/core": "^1.11.1",
|
||||||
"@actions/exec": "^1.1.1",
|
"@actions/exec": "^1.1.1",
|
||||||
"@actions/github": "^5.1.1",
|
"@actions/github": "^5.1.1",
|
||||||
"@actions/glob": "^0.5.0",
|
"@actions/glob": "^0.5.0",
|
||||||
"@actions/http-client": "^2.2.1",
|
"@actions/http-client": "^2.2.1",
|
||||||
"@actions/io": "^1.0.2",
|
"@actions/io": "^1.0.2",
|
||||||
"@actions/tool-cache": "^2.0.1",
|
"@actions/tool-cache": "^2.0.2",
|
||||||
"semver": "^7.6.3",
|
"semver": "^7.6.3",
|
||||||
"uuid": "^9.0.1"
|
"uuid": "^9.0.1"
|
||||||
},
|
},
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"@types/semver": "^7.5.8",
|
"@types/semver": "^7.5.8",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||||
"@typescript-eslint/parser": "^5.54.0",
|
"@typescript-eslint/parser": "^5.54.0",
|
||||||
"@vercel/ncc": "^0.38.0",
|
"@vercel/ncc": "^0.38.3",
|
||||||
"eslint": "^8.57.0",
|
"eslint": "^8.57.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-jest": "^27.9.0",
|
"eslint-plugin-jest": "^27.9.0",
|
||||||
|
|||||||
@@ -104,28 +104,6 @@ export default abstract class BaseDistribution {
|
|||||||
return response.result || [];
|
return response.result || [];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async getMirrorUrlVersions(): Promise<INodeVersion[]> {
|
|
||||||
const initialUrl = this.getDistributionUrl();
|
|
||||||
|
|
||||||
const dataUrl = `${initialUrl}/index.json`;
|
|
||||||
try {
|
|
||||||
const response = await this.httpClient.getJson<INodeVersion[]>(dataUrl);
|
|
||||||
return response.result || [];
|
|
||||||
}catch (err) {
|
|
||||||
if (err instanceof Error && err.message.includes('getaddrinfo EAI_AGAIN')) {
|
|
||||||
core.error(`Network error: Failed to resolve the server at ${dataUrl}.
|
|
||||||
Please check your DNS settings or verify that the URL is correct.`);
|
|
||||||
} else if (err instanceof hc.HttpClientError && err.statusCode === 404) {
|
|
||||||
core.error(`404 Error: Unable to find versions at ${dataUrl}.
|
|
||||||
Please verify that the mirror URL is valid.`);
|
|
||||||
} else {
|
|
||||||
core.error(`Failed to fetch Node.js versions from ${dataUrl}.
|
|
||||||
Please check the URL and try again.}`);
|
|
||||||
}
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected getNodejsDistInfo(version: string) {
|
protected getNodejsDistInfo(version: string) {
|
||||||
const osArch: string = this.translateArchToDistUrl(this.nodeInfo.arch);
|
const osArch: string = this.translateArchToDistUrl(this.nodeInfo.arch);
|
||||||
version = semver.clean(version) || '';
|
version = semver.clean(version) || '';
|
||||||
@@ -150,33 +128,6 @@ export default abstract class BaseDistribution {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getNodejsMirrorURLInfo(version: string) {
|
|
||||||
const mirrorURL = this.nodeInfo.mirrorURL;
|
|
||||||
|
|
||||||
const osArch: string = this.translateArchToDistUrl(this.nodeInfo.arch);
|
|
||||||
|
|
||||||
version = semver.clean(version) || '';
|
|
||||||
const fileName: string =
|
|
||||||
this.osPlat == 'win32'
|
|
||||||
? `node-v${version}-win-${osArch}`
|
|
||||||
: `node-v${version}-${this.osPlat}-${osArch}`;
|
|
||||||
const urlFileName: string =
|
|
||||||
this.osPlat == 'win32'
|
|
||||||
? this.nodeInfo.arch === 'arm64'
|
|
||||||
? `${fileName}.zip`
|
|
||||||
: `${fileName}.7z`
|
|
||||||
: `${fileName}.tar.gz`;
|
|
||||||
|
|
||||||
const url = `${mirrorURL}/v${version}/${urlFileName}`;
|
|
||||||
|
|
||||||
return <INodeVersionInfo>{
|
|
||||||
downloadUrl: url,
|
|
||||||
resolvedVersion: version,
|
|
||||||
arch: osArch,
|
|
||||||
fileName: fileName
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
protected async downloadNodejs(info: INodeVersionInfo) {
|
protected async downloadNodejs(info: INodeVersionInfo) {
|
||||||
let downloadPath = '';
|
let downloadPath = '';
|
||||||
core.info(
|
core.info(
|
||||||
@@ -192,20 +143,9 @@ export default abstract class BaseDistribution {
|
|||||||
) {
|
) {
|
||||||
return await this.acquireWindowsNodeFromFallbackLocation(
|
return await this.acquireWindowsNodeFromFallbackLocation(
|
||||||
info.resolvedVersion,
|
info.resolvedVersion,
|
||||||
info.arch,
|
info.arch
|
||||||
info.downloadUrl
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Handle network-related issues (e.g., DNS resolution failures)
|
|
||||||
if (err instanceof Error && err.message.includes('getaddrinfo EAI_AGAIN')) {
|
|
||||||
core.error(
|
|
||||||
`Network error: Failed to resolve the server at ${info.downloadUrl}.
|
|
||||||
This could be due to a DNS resolution issue. Please verify the URL or check your network connection.`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
core.error(
|
|
||||||
`Download failed from ${info.downloadUrl}. Please check the URl and try again.`
|
|
||||||
);
|
|
||||||
|
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
@@ -226,11 +166,9 @@ export default abstract class BaseDistribution {
|
|||||||
|
|
||||||
protected async acquireWindowsNodeFromFallbackLocation(
|
protected async acquireWindowsNodeFromFallbackLocation(
|
||||||
version: string,
|
version: string,
|
||||||
arch: string = os.arch(),
|
arch: string = os.arch()
|
||||||
downloadUrl: string
|
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const initialUrl = this.getDistributionUrl();
|
const initialUrl = this.getDistributionUrl();
|
||||||
core.info('url: ' + initialUrl);
|
|
||||||
const osArch: string = this.translateArchToDistUrl(arch);
|
const osArch: string = this.translateArchToDistUrl(arch);
|
||||||
|
|
||||||
// Create temporary folder to download to
|
// Create temporary folder to download to
|
||||||
@@ -247,12 +185,6 @@ export default abstract class BaseDistribution {
|
|||||||
|
|
||||||
core.info(`Downloading only node binary from ${exeUrl}`);
|
core.info(`Downloading only node binary from ${exeUrl}`);
|
||||||
|
|
||||||
if (downloadUrl != exeUrl) {
|
|
||||||
core.error(
|
|
||||||
'unable to download node binary with the provided URL. Please check and try again'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const exePath = await tc.downloadTool(exeUrl);
|
const exePath = await tc.downloadTool(exeUrl);
|
||||||
await io.cp(exePath, path.join(tempDir, 'node.exe'));
|
await io.cp(exePath, path.join(tempDir, 'node.exe'));
|
||||||
const libPath = await tc.downloadTool(libUrl);
|
const libPath = await tc.downloadTool(libUrl);
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ export interface NodeInputs {
|
|||||||
auth?: string;
|
auth?: string;
|
||||||
checkLatest: boolean;
|
checkLatest: boolean;
|
||||||
stable: boolean;
|
stable: boolean;
|
||||||
mirrorURL?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface INodeVersionInfo {
|
export interface INodeVersionInfo {
|
||||||
|
|||||||
@@ -1,31 +1,13 @@
|
|||||||
import BasePrereleaseNodejs from '../base-distribution-prerelease';
|
import BasePrereleaseNodejs from '../base-distribution-prerelease';
|
||||||
import {NodeInputs} from '../base-models';
|
import {NodeInputs} from '../base-models';
|
||||||
import * as core from '@actions/core';
|
|
||||||
|
|
||||||
export default class NightlyNodejs extends BasePrereleaseNodejs {
|
export default class NightlyNodejs extends BasePrereleaseNodejs {
|
||||||
|
|
||||||
protected distribution = 'nightly';
|
protected distribution = 'nightly';
|
||||||
|
|
||||||
constructor(nodeInfo: NodeInputs) {
|
constructor(nodeInfo: NodeInputs) {
|
||||||
super(nodeInfo);
|
super(nodeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getDistributionUrl(): string {
|
protected getDistributionUrl(): string {
|
||||||
|
|
||||||
if (this.nodeInfo.mirrorURL) {
|
|
||||||
if(this.nodeInfo.mirrorURL != '') {
|
|
||||||
return this.nodeInfo.mirrorURL;
|
|
||||||
}else{
|
|
||||||
if(this.nodeInfo.mirrorURL === '') {
|
|
||||||
throw new Error('Mirror URL is empty. Please provide a valid mirror URL.');
|
|
||||||
}else{
|
|
||||||
throw new Error('Mirror URL is not a valid');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
return 'https://nodejs.org/download/nightly';
|
return 'https://nodejs.org/download/nightly';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,134 +15,115 @@ export default class OfficialBuilds extends BaseDistribution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async setupNodeJs() {
|
public async setupNodeJs() {
|
||||||
if (this.nodeInfo.mirrorURL) {
|
let manifest: tc.IToolRelease[] | undefined;
|
||||||
if (this.nodeInfo.mirrorURL === '') {
|
let nodeJsVersions: INodeVersion[] | undefined;
|
||||||
throw new Error('Mirror URL is empty. Please provide a valid mirror URL.');
|
const osArch = this.translateArchToDistUrl(this.nodeInfo.arch);
|
||||||
|
|
||||||
|
if (this.isLtsAlias(this.nodeInfo.versionSpec)) {
|
||||||
|
core.info('Attempt to resolve LTS alias from manifest...');
|
||||||
|
|
||||||
|
// No try-catch since it's not possible to resolve LTS alias without manifest
|
||||||
|
manifest = await this.getManifest();
|
||||||
|
|
||||||
|
this.nodeInfo.versionSpec = this.resolveLtsAliasFromManifest(
|
||||||
|
this.nodeInfo.versionSpec,
|
||||||
|
this.nodeInfo.stable,
|
||||||
|
manifest
|
||||||
|
);
|
||||||
}
|
}
|
||||||
let downloadPath = '';
|
|
||||||
let toolPath = '';
|
if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
|
||||||
try {
|
nodeJsVersions = await this.getNodeJsVersions();
|
||||||
core.info(`Attempting to download using mirror URL...`);
|
const versions = this.filterVersions(nodeJsVersions);
|
||||||
downloadPath = await this.downloadFromMirrorURL(); // Attempt to download from the mirror
|
this.nodeInfo.versionSpec = this.evaluateVersions(versions);
|
||||||
core.info('downloadPath from downloadFromMirrorURL() '+ downloadPath);
|
|
||||||
|
core.info('getting latest node version...');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.nodeInfo.checkLatest) {
|
||||||
|
core.info('Attempt to resolve the latest version from manifest...');
|
||||||
|
const resolvedVersion = await this.resolveVersionFromManifest(
|
||||||
|
this.nodeInfo.versionSpec,
|
||||||
|
this.nodeInfo.stable,
|
||||||
|
osArch,
|
||||||
|
manifest
|
||||||
|
);
|
||||||
|
if (resolvedVersion) {
|
||||||
|
this.nodeInfo.versionSpec = resolvedVersion;
|
||||||
|
core.info(`Resolved as '${resolvedVersion}'`);
|
||||||
|
} else {
|
||||||
|
core.info(
|
||||||
|
`Failed to resolve version ${this.nodeInfo.versionSpec} from manifest`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let toolPath = this.findVersionInHostedToolCacheDirectory();
|
||||||
|
|
||||||
|
if (toolPath) {
|
||||||
|
core.info(`Found in cache @ ${toolPath}`);
|
||||||
|
this.addToolPath(toolPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let downloadPath = '';
|
||||||
|
try {
|
||||||
|
core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`);
|
||||||
|
|
||||||
|
const versionInfo = await this.getInfoFromManifest(
|
||||||
|
this.nodeInfo.versionSpec,
|
||||||
|
this.nodeInfo.stable,
|
||||||
|
osArch,
|
||||||
|
manifest
|
||||||
|
);
|
||||||
|
|
||||||
|
if (versionInfo) {
|
||||||
|
core.info(
|
||||||
|
`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`
|
||||||
|
);
|
||||||
|
downloadPath = await tc.downloadTool(
|
||||||
|
versionInfo.downloadUrl,
|
||||||
|
undefined,
|
||||||
|
this.nodeInfo.auth
|
||||||
|
);
|
||||||
|
|
||||||
if (downloadPath) {
|
if (downloadPath) {
|
||||||
toolPath = downloadPath;
|
toolPath = await this.extractArchive(
|
||||||
|
downloadPath,
|
||||||
|
versionInfo,
|
||||||
|
false
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} else {
|
||||||
|
core.info(
|
||||||
|
'Not found in manifest. Falling back to download directly from Node'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
// Rate limit?
|
||||||
|
if (
|
||||||
|
err instanceof tc.HTTPError &&
|
||||||
|
(err.httpStatusCode === 403 || err.httpStatusCode === 429)
|
||||||
|
) {
|
||||||
|
core.info(
|
||||||
|
`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`
|
||||||
|
);
|
||||||
|
} else {
|
||||||
core.info((err as Error).message);
|
core.info((err as Error).message);
|
||||||
core.debug((err as Error).stack ?? 'empty stack');
|
|
||||||
}
|
}
|
||||||
} else {
|
core.debug((err as Error).stack ?? 'empty stack');
|
||||||
let manifest: tc.IToolRelease[] | undefined;
|
core.info('Falling back to download directly from Node');
|
||||||
let nodeJsVersions: INodeVersion[] | undefined;
|
|
||||||
const osArch = this.translateArchToDistUrl(this.nodeInfo.arch);
|
|
||||||
|
|
||||||
if (this.isLtsAlias(this.nodeInfo.versionSpec)) {
|
|
||||||
core.info('Attempt to resolve LTS alias from manifest...');
|
|
||||||
|
|
||||||
// No try-catch since it's not possible to resolve LTS alias without manifest
|
|
||||||
manifest = await this.getManifest();
|
|
||||||
|
|
||||||
this.nodeInfo.versionSpec = this.resolveLtsAliasFromManifest(
|
|
||||||
this.nodeInfo.versionSpec,
|
|
||||||
this.nodeInfo.stable,
|
|
||||||
manifest
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isLatestSyntax(this.nodeInfo.versionSpec)) {
|
|
||||||
nodeJsVersions = await this.getNodeJsVersions();
|
|
||||||
const versions = this.filterVersions(nodeJsVersions);
|
|
||||||
this.nodeInfo.versionSpec = this.evaluateVersions(versions);
|
|
||||||
|
|
||||||
core.info('getting latest node version...');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.nodeInfo.checkLatest) {
|
|
||||||
core.info('Attempt to resolve the latest version from manifest...');
|
|
||||||
const resolvedVersion = await this.resolveVersionFromManifest(
|
|
||||||
this.nodeInfo.versionSpec,
|
|
||||||
this.nodeInfo.stable,
|
|
||||||
osArch,
|
|
||||||
manifest
|
|
||||||
);
|
|
||||||
if (resolvedVersion) {
|
|
||||||
this.nodeInfo.versionSpec = resolvedVersion;
|
|
||||||
core.info(`Resolved as '${resolvedVersion}'`);
|
|
||||||
} else {
|
|
||||||
core.info(
|
|
||||||
`Failed to resolve version ${this.nodeInfo.versionSpec} from manifest`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let toolPath = this.findVersionInHostedToolCacheDirectory();
|
|
||||||
|
|
||||||
if (toolPath) {
|
|
||||||
core.info(`Found in cache @ ${toolPath}`);
|
|
||||||
this.addToolPath(toolPath);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let downloadPath = '';
|
|
||||||
try {
|
|
||||||
core.info(`Attempting to download ${this.nodeInfo.versionSpec}...`);
|
|
||||||
|
|
||||||
const versionInfo = await this.getInfoFromManifest(
|
|
||||||
this.nodeInfo.versionSpec,
|
|
||||||
this.nodeInfo.stable,
|
|
||||||
osArch,
|
|
||||||
manifest
|
|
||||||
);
|
|
||||||
|
|
||||||
if (versionInfo) {
|
|
||||||
core.info(
|
|
||||||
`Acquiring ${versionInfo.resolvedVersion} - ${versionInfo.arch} from ${versionInfo.downloadUrl}`
|
|
||||||
);
|
|
||||||
downloadPath = await tc.downloadTool(
|
|
||||||
versionInfo.downloadUrl,
|
|
||||||
undefined,
|
|
||||||
this.nodeInfo.auth
|
|
||||||
);
|
|
||||||
|
|
||||||
if (downloadPath) {
|
|
||||||
toolPath = await this.extractArchive(
|
|
||||||
downloadPath,
|
|
||||||
versionInfo,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
core.info(
|
|
||||||
'Not found in manifest. Falling back to download directly from Node'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
// Rate limit?
|
|
||||||
if (
|
|
||||||
err instanceof tc.HTTPError &&
|
|
||||||
(err.httpStatusCode === 403 || err.httpStatusCode === 429)
|
|
||||||
) {
|
|
||||||
core.info(
|
|
||||||
`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
core.info((err as Error).message);
|
|
||||||
}
|
|
||||||
core.debug((err as Error).stack ?? 'empty stack');
|
|
||||||
core.info('Falling back to download directly from Node');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!toolPath) {
|
|
||||||
toolPath = await this.downloadDirectlyFromNode();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.osPlat != 'win32') {
|
|
||||||
toolPath = path.join(toolPath, 'bin');
|
|
||||||
}
|
|
||||||
|
|
||||||
core.addPath(toolPath);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!toolPath) {
|
||||||
|
toolPath = await this.downloadDirectlyFromNode();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.osPlat != 'win32') {
|
||||||
|
toolPath = path.join(toolPath, 'bin');
|
||||||
|
}
|
||||||
|
|
||||||
|
core.addPath(toolPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected addToolPath(toolPath: string) {
|
protected addToolPath(toolPath: string) {
|
||||||
@@ -196,12 +177,8 @@ export default class OfficialBuilds extends BaseDistribution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected getDistributionUrl(): string {
|
protected getDistributionUrl(): string {
|
||||||
if (this.nodeInfo.mirrorURL) {
|
|
||||||
return this.nodeInfo.mirrorURL;
|
|
||||||
}
|
|
||||||
return `https://nodejs.org/dist`;
|
return `https://nodejs.org/dist`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private getManifest(): Promise<tc.IToolRelease[]> {
|
private getManifest(): Promise<tc.IToolRelease[]> {
|
||||||
core.debug('Getting manifest from actions/node-versions@main');
|
core.debug('Getting manifest from actions/node-versions@main');
|
||||||
@@ -314,43 +291,4 @@ export default class OfficialBuilds extends BaseDistribution {
|
|||||||
private isLatestSyntax(versionSpec): boolean {
|
private isLatestSyntax(versionSpec): boolean {
|
||||||
return ['current', 'latest', 'node'].includes(versionSpec);
|
return ['current', 'latest', 'node'].includes(versionSpec);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async downloadFromMirrorURL() {
|
|
||||||
const nodeJsVersions = await this.getMirrorUrlVersions();
|
|
||||||
const versions = this.filterVersions(nodeJsVersions);
|
|
||||||
|
|
||||||
|
|
||||||
const evaluatedVersion = this.evaluateVersions(versions);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!evaluatedVersion) {
|
|
||||||
throw new Error(
|
|
||||||
`Unable to find Node version '${this.nodeInfo.versionSpec}' for platform ${this.osPlat} and architecture ${this.nodeInfo.arch} from the provided mirror-url ${this.nodeInfo.mirrorURL}. Please check the mirror-url`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const toolName = this.getNodejsMirrorURLInfo(evaluatedVersion);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
|
||||||
const toolPath = await this.downloadNodejs(toolName);
|
|
||||||
|
|
||||||
return toolPath;
|
|
||||||
} catch (error) {
|
|
||||||
if (error instanceof tc.HTTPError && error.httpStatusCode === 404) {
|
|
||||||
core.error(
|
|
||||||
`Node version ${this.nodeInfo.versionSpec} for platform ${this.osPlat} and architecture ${this.nodeInfo.arch} was found but failed to download. ` +
|
|
||||||
'This usually happens when downloadable binaries are not fully updated at https://nodejs.org/. ' +
|
|
||||||
'To resolve this issue you may either fall back to the older version or try again later.'
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// For any other error type, you can log the error message.
|
|
||||||
core.error(`An unexpected error occurred like url might not correct`);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,32 +1,12 @@
|
|||||||
import BaseDistribution from '../base-distribution';
|
import BaseDistribution from '../base-distribution';
|
||||||
import {NodeInputs} from '../base-models';
|
import {NodeInputs} from '../base-models';
|
||||||
import * as core from '@actions/core';
|
|
||||||
|
|
||||||
export default class RcBuild extends BaseDistribution {
|
export default class RcBuild extends BaseDistribution {
|
||||||
getDistributionMirrorUrl() {
|
|
||||||
throw new Error('Method not implemented.');
|
|
||||||
}
|
|
||||||
|
|
||||||
constructor(nodeInfo: NodeInputs) {
|
constructor(nodeInfo: NodeInputs) {
|
||||||
super(nodeInfo);
|
super(nodeInfo);
|
||||||
}
|
}
|
||||||
protected getDistributionUrl(): string {
|
|
||||||
|
getDistributionUrl(): string {
|
||||||
if (this.nodeInfo.mirrorURL) {
|
|
||||||
if(this.nodeInfo.mirrorURL != '') {
|
|
||||||
return this.nodeInfo.mirrorURL;
|
|
||||||
}else{
|
|
||||||
if(this.nodeInfo.mirrorURL === '') {
|
|
||||||
throw new Error('Mirror URL is empty. Please provide a valid mirror URL.');
|
|
||||||
}else{
|
|
||||||
throw new Error('Mirror URL is not a valid');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
return 'https://nodejs.org/download/rc';
|
return 'https://nodejs.org/download/rc';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,13 @@
|
|||||||
import BasePrereleaseNodejs from '../base-distribution-prerelease';
|
import BasePrereleaseNodejs from '../base-distribution-prerelease';
|
||||||
import {NodeInputs} from '../base-models';
|
import {NodeInputs} from '../base-models';
|
||||||
import * as core from '@actions/core';
|
|
||||||
export default class CanaryBuild extends BasePrereleaseNodejs {
|
export default class CanaryBuild extends BasePrereleaseNodejs {
|
||||||
|
|
||||||
protected distribution = 'v8-canary';
|
protected distribution = 'v8-canary';
|
||||||
constructor(nodeInfo: NodeInputs) {
|
constructor(nodeInfo: NodeInputs) {
|
||||||
super(nodeInfo);
|
super(nodeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getDistributionUrl(): string {
|
protected getDistributionUrl(): string {
|
||||||
|
|
||||||
if (this.nodeInfo.mirrorURL) {
|
|
||||||
if(this.nodeInfo.mirrorURL != '') {
|
|
||||||
return this.nodeInfo.mirrorURL;
|
|
||||||
}else{
|
|
||||||
if(this.nodeInfo.mirrorURL === '') {
|
|
||||||
throw new Error('Mirror URL is empty. Please provide a valid mirror URL.');
|
|
||||||
}else{
|
|
||||||
throw new Error('Mirror URL is not a valid');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}else{
|
|
||||||
return 'https://nodejs.org/download/v8-canary';
|
return 'https://nodejs.org/download/v8-canary';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ export async function run() {
|
|||||||
arch = os.arch();
|
arch = os.arch();
|
||||||
}
|
}
|
||||||
|
|
||||||
const mirrorURL = core.getInput('mirror-url').trim(); // .trim() to remove any accidental spaces
|
|
||||||
|
|
||||||
if (version) {
|
if (version) {
|
||||||
const token = core.getInput('token');
|
const token = core.getInput('token');
|
||||||
const auth = !token ? undefined : `token ${token}`;
|
const auth = !token ? undefined : `token ${token}`;
|
||||||
@@ -47,8 +45,7 @@ export async function run() {
|
|||||||
checkLatest,
|
checkLatest,
|
||||||
auth,
|
auth,
|
||||||
stable,
|
stable,
|
||||||
arch,
|
arch
|
||||||
mirrorURL
|
|
||||||
};
|
};
|
||||||
const nodeDistribution = getNodejsDistribution(nodejsInfo);
|
const nodeDistribution = getNodejsDistribution(nodejsInfo);
|
||||||
await nodeDistribution.setupNodeJs();
|
await nodeDistribution.setupNodeJs();
|
||||||
|
|||||||
Reference in New Issue
Block a user