mirror of
https://github.com/docker/login-action.git
synced 2026-10-31 12:44:58 +01:00
Compare commits
666
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b798b1a27 | ||
|
|
81c6f93d4b | ||
|
|
1b16c8d181 | ||
|
|
ac86b5e9e9 | ||
|
|
1476d845f0 | ||
|
|
503cee68d8 | ||
|
|
f0935357f5 | ||
|
|
d5ae7f1887 | ||
|
|
6f9750797f | ||
|
|
006d61fa59 | ||
|
|
93f5f522ee | ||
|
|
7c852d24cc | ||
|
|
4ceed959c1 | ||
|
|
919c5b190a | ||
|
|
9803d0ec68 | ||
|
|
eac2aa2bba | ||
|
|
55f683f41c | ||
|
|
2a7f8e4bbd | ||
|
|
f6a1cf2ba4 | ||
|
|
74f58135ad | ||
|
|
8a2735a79e | ||
|
|
e040eb9d1e | ||
|
|
13f533fe85 | ||
|
|
e40f22430b | ||
|
|
97538692f6 | ||
|
|
cf0eabde3d | ||
|
|
4c7d088f4b | ||
|
|
98a3fb834a | ||
|
|
f101fa5d88 | ||
|
|
f2aae0c0ee | ||
|
|
133c6ab6fa | ||
|
|
0a3084cdc5 | ||
|
|
1e7c55a39d | ||
|
|
a358cc1e42 | ||
|
|
5ad95e8c58 | ||
|
|
a5f1c9995c | ||
|
|
b098de5f1b | ||
|
|
50d805b48a | ||
|
|
834ffb646a | ||
|
|
2fea3b2c5c | ||
|
|
f3f25ba560 | ||
|
|
0b08f36d38 | ||
|
|
8fa2c064e3 | ||
|
|
375309eeb7 | ||
|
|
5d33b362eb | ||
|
|
0feb529243 | ||
|
|
4e12eabf92 | ||
|
|
d3b9cdfa58 | ||
|
|
b773301bab | ||
|
|
a27b71b09c | ||
|
|
2c873c3656 | ||
|
|
b4bb2a4ec0 | ||
|
|
1f3cb3efe9 | ||
|
|
e800f1e754 | ||
|
|
783ae9cac5 | ||
|
|
67ccbdd142 | ||
|
|
96df24572b | ||
|
|
b1725c2c93 | ||
|
|
0a596b2e7a | ||
|
|
5d1ee94869 | ||
|
|
8febd2275e | ||
|
|
af63523ba5 | ||
|
|
72edfa6c2e | ||
|
|
2b7517a3b4 | ||
|
|
eed2509203 | ||
|
|
07573e7c18 | ||
|
|
99ffd0f38a | ||
|
|
dbcb813823 | ||
|
|
5bcb015ee6 | ||
|
|
b30b2f2d31 | ||
|
|
9087f1e6d6 | ||
|
|
0009830ea1 | ||
|
|
23255232d3 | ||
|
|
4ec1d4a769 | ||
|
|
5fc99ba47b | ||
|
|
e512bd59d1 | ||
|
|
a146c91b8f | ||
|
|
8ffd80ffa5 | ||
|
|
8305724bcf | ||
|
|
91264757e1 | ||
|
|
371161bbe7 | ||
|
|
5dc73df38e | ||
|
|
2aa1edee0b | ||
|
|
b472f5b276 | ||
|
|
abd2ef45e7 | ||
|
|
d49d3a9839 | ||
|
|
b58b17c30b | ||
|
|
be646c21ce | ||
|
|
d77c059cb9 | ||
|
|
9d876d6c33 | ||
|
|
06fb636fac | ||
|
|
a8bc953911 | ||
|
|
f54b9019bf | ||
|
|
77f18f6713 | ||
|
|
ec0bf287fb | ||
|
|
e37171e542 | ||
|
|
1d3a7174ca | ||
|
|
a5e9150fe2 | ||
|
|
a482ba4366 | ||
|
|
9e3d36ea10 | ||
|
|
14d6a7934e | ||
|
|
03c851098f | ||
|
|
ad8a81f098 | ||
|
|
6d219a4928 | ||
|
|
b3200694f4 | ||
|
|
08d3680aa8 | ||
|
|
381f5a4f5e | ||
|
|
4bc69ce4fd | ||
|
|
ddf94996dc | ||
|
|
d870eb57d3 | ||
|
|
4d7b1348c8 | ||
|
|
608836776e | ||
|
|
3bab31f360 | ||
|
|
dc654b7be1 | ||
|
|
c66a8fcb24 | ||
|
|
6d7f9d458a | ||
|
|
13169716da | ||
|
|
c1aa9e5f45 | ||
|
|
026f3975fd | ||
|
|
3dbb99fd00 | ||
|
|
af1e73f918 | ||
|
|
da722bde43 | ||
|
|
2916ad60bd | ||
|
|
ca0a662f78 | ||
|
|
c455755a57 | ||
|
|
48351901f8 | ||
|
|
992421c6e6 | ||
|
|
b249b43765 | ||
|
|
1b67977736 | ||
|
|
9d49d6a323 | ||
|
|
c99871dec2 | ||
|
|
b43355553d | ||
|
|
678a46a45e | ||
|
|
f9a0aea0f2 | ||
|
|
cc1e4cb459 | ||
|
|
02e1730369 | ||
|
|
b548518374 | ||
|
|
a244be3944 | ||
|
|
ee0d698156 | ||
|
|
127dc2c62e | ||
|
|
28d93c8e86 | ||
|
|
bb4abc2b4e | ||
|
|
46b0f7f7db | ||
|
|
02ce84ffb2 | ||
|
|
aac44b8023 | ||
|
|
e6a67367bb | ||
|
|
e12cbe383a | ||
|
|
9ef03105cf | ||
|
|
cca864db18 | ||
|
|
ecd3da5c9a | ||
|
|
9f1db17ebe | ||
|
|
c52380340b | ||
|
|
f941705c01 | ||
|
|
1a44f13eda | ||
|
|
4691d54c76 | ||
|
|
2564fa2273 | ||
|
|
1d117b3de6 | ||
|
|
54354cec26 | ||
|
|
291ce15746 | ||
|
|
d144cc9aaf | ||
|
|
9bc29939f1 | ||
|
|
42702f7ab5 | ||
|
|
c5a66b573f | ||
|
|
f356dc0f57 | ||
|
|
82c046b85a | ||
|
|
f482210217 | ||
|
|
528895cbd3 | ||
|
|
3be61c42c8 | ||
|
|
3d128cd17b | ||
|
|
4755f4fe4d | ||
|
|
17f7c1809f | ||
|
|
a2447fe0f6 | ||
|
|
3864d6aed8 | ||
|
|
64b25388de | ||
|
|
17162ab65f | ||
|
|
37a9a4b333 | ||
|
|
eb1946f59c | ||
|
|
946f94de75 | ||
|
|
c07548e8a6 | ||
|
|
20036e466f | ||
|
|
f50e5f80f8 | ||
|
|
c5e5fd0017 | ||
|
|
60e5331f1c | ||
|
|
6a848e5a16 | ||
|
|
0267638d8a | ||
|
|
250c56f969 | ||
|
|
3999a1f436 | ||
|
|
0c083d7a7a | ||
|
|
d74126fafb | ||
|
|
008abcd773 | ||
|
|
b3d0cb50ae | ||
|
|
d1f19df6c2 | ||
|
|
f9a14677ff | ||
|
|
72b845d964 | ||
|
|
22319e3a05 | ||
|
|
9ff664c6c9 | ||
|
|
394f625bb6 | ||
|
|
42471eb9ff | ||
|
|
04bf81902c | ||
|
|
5dbe09f08d | ||
|
|
652059025f | ||
|
|
2ff7bc63ff | ||
|
|
8f60ab8910 | ||
|
|
401fdfb10a | ||
|
|
9720944471 | ||
|
|
b04cd7ece0 | ||
|
|
650006c6eb | ||
|
|
99df1a3f6d | ||
|
|
3ab375f324 | ||
|
|
39d85804ae | ||
|
|
4eefcd33ca | ||
|
|
56d092c8b3 | ||
|
|
e2e31ca870 | ||
|
|
0bced941e8 | ||
|
|
3e75a0f266 | ||
|
|
365bebd9d6 | ||
|
|
e7f6f8a91a | ||
|
|
05480f2a7d | ||
|
|
31f21c3443 | ||
|
|
4f5a161ff1 | ||
|
|
e15d361870 | ||
|
|
9baec518af | ||
|
|
66b5047e43 | ||
|
|
dae8e21ce2 | ||
|
|
0045eaa7a1 | ||
|
|
450ca8c2a5 | ||
|
|
d6726b3526 | ||
|
|
a2ea2dd0f1 | ||
|
|
bd659cc69e | ||
|
|
43261b75b0 | ||
|
|
745e12c13f | ||
|
|
5244cbf81d | ||
|
|
6778676cba | ||
|
|
24be3e65e6 | ||
|
|
9abe73fe0b | ||
|
|
b45b323e05 | ||
|
|
963c6a6d1b | ||
|
|
2254f031f7 | ||
|
|
d85f62f7d4 | ||
|
|
604e8e9cf4 | ||
|
|
482acf1aaf | ||
|
|
9f4a8ea54e | ||
|
|
6831c7566c | ||
|
|
599ec30da7 | ||
|
|
174f89633e | ||
|
|
6986616b80 | ||
|
|
e33c55ff04 | ||
|
|
c318662ea5 | ||
|
|
ae469901b0 | ||
|
|
a1b00d1f67 | ||
|
|
60b37403f5 | ||
|
|
1307053441 | ||
|
|
1ed1634702 | ||
|
|
5565f3ba0d | ||
|
|
4a8376e001 | ||
|
|
d0fa2cf570 | ||
|
|
d43e1c853e | ||
|
|
2f6998335c | ||
|
|
d65286840f | ||
|
|
36864503dc | ||
|
|
ada68c7d01 | ||
|
|
55e1ea5a9a | ||
|
|
ba754150c9 | ||
|
|
d8fcc4b9cc | ||
|
|
149496aaf3 | ||
|
|
4907a6ddec | ||
|
|
1e233e691a | ||
|
|
6c24ead680 | ||
|
|
ee034d7094 | ||
|
|
1527209db9 | ||
|
|
d39362aba4 | ||
|
|
a6f092b568 | ||
|
|
60953f0bed | ||
|
|
62c688590f | ||
|
|
102c0e6729 | ||
|
|
72e5ceb81f | ||
|
|
e7e12d441a | ||
|
|
20103df299 | ||
|
|
5be8034354 | ||
|
|
4fddf4fef5 | ||
|
|
eb50903c80 | ||
|
|
b434872b94 | ||
|
|
2d420a4f14 | ||
|
|
ccb26d9283 | ||
|
|
e48e882fee | ||
|
|
b0186b9cf5 | ||
|
|
034c220d94 | ||
|
|
3fdf3f727d | ||
|
|
6f14fdf8a4 | ||
|
|
6290052128 | ||
|
|
bb555fc48d | ||
|
|
6de6c60d10 | ||
|
|
de05a6d3a2 | ||
|
|
5ac140e711 | ||
|
|
bb9683dca2 | ||
|
|
abb6787042 | ||
|
|
a40c6a7122 | ||
|
|
5c42dd293b | ||
|
|
1615afe9d3 | ||
|
|
c376ab6818 | ||
|
|
ed2fd52341 | ||
|
|
8ff08ec562 | ||
|
|
b24684bb3c | ||
|
|
a0d57b8e43 | ||
|
|
6eab1c84d2 | ||
|
|
292fe2d7ee | ||
|
|
717e062c09 | ||
|
|
b9381571b7 | ||
|
|
7277d4d442 | ||
|
|
955b3c705f | ||
|
|
da5b89b92c | ||
|
|
b78dc2c156 | ||
|
|
c144859092 | ||
|
|
cf45a603d2 | ||
|
|
9fe7774c8f | ||
|
|
2b784c0f37 | ||
|
|
89452f99ba | ||
|
|
db14339dbc | ||
|
|
e46b7e3300 | ||
|
|
126accdd0b | ||
|
|
5c5e504cc6 | ||
|
|
bb0e4e1bb1 | ||
|
|
b45d80f862 | ||
|
|
176cb9c12a | ||
|
|
cad8984310 | ||
|
|
92cbcb231e | ||
|
|
5a2d6a71bd | ||
|
|
44512b6b2e | ||
|
|
28737a5e46 | ||
|
|
dac079354a | ||
|
|
62029f315d | ||
|
|
08c8f064bf | ||
|
|
30619c31e4 | ||
|
|
c4a8904a93 | ||
|
|
7e7b532c5e | ||
|
|
5dae9a6c13 | ||
|
|
4109968190 | ||
|
|
a93df38ecb | ||
|
|
305d099b3c | ||
|
|
4693242509 | ||
|
|
14fe2ea9e2 | ||
|
|
23e908783e | ||
|
|
fdfb31da7c | ||
|
|
6585fe535d | ||
|
|
c859298dc3 | ||
|
|
c3e61d16d7 | ||
|
|
21f7481f00 | ||
|
|
c38ec43af1 | ||
|
|
a68c413f92 | ||
|
|
3227f5311c | ||
|
|
1e0f9435cc | ||
|
|
0d33dcdeed | ||
|
|
8e2a0b642a | ||
|
|
da755dd47d | ||
|
|
3b958849f4 | ||
|
|
2e1345c05f | ||
|
|
82f62b3035 | ||
|
|
c94ce9fb46 | ||
|
|
8339c958ce | ||
|
|
c83e9320c8 | ||
|
|
b268aa57e3 | ||
|
|
a603229278 | ||
|
|
7567f92a74 | ||
|
|
0567fa5ae8 | ||
|
|
f6ef577545 | ||
|
|
916386b000 | ||
|
|
5b3f94a294 | ||
|
|
f9cc43b63d | ||
|
|
6862ffc5ab | ||
|
|
4349d75975 | ||
|
|
28fdb31ff3 | ||
|
|
2064b45545 | ||
|
|
5e57cd1181 | ||
|
|
97e31439e8 | ||
|
|
3a0796b57f | ||
|
|
5b7b28b1cc | ||
|
|
abc9fb3154 | ||
|
|
d468688814 | ||
|
|
a99b2f88fc | ||
|
|
0d7fae8057 | ||
|
|
9832253cb7 | ||
|
|
09e05bbdf6 | ||
|
|
4384bb23be | ||
|
|
722c6681a5 | ||
|
|
0bd2ba43c1 | ||
|
|
18836d8e24 | ||
|
|
997e14a133 | ||
|
|
67d87fe2c8 | ||
|
|
1287044d73 | ||
|
|
9fa22322ec | ||
|
|
738e2ed2fd | ||
|
|
5497b8b59c | ||
|
|
2d98472de9 | ||
|
|
3c28a369b4 | ||
|
|
072e0d514c | ||
|
|
65c0768122 | ||
|
|
3d793fe111 | ||
|
|
9fc23e88e3 | ||
|
|
bdf14dc173 | ||
|
|
21ddfdf39a | ||
|
|
d5f9e03fca | ||
|
|
9b3389107c | ||
|
|
184bdaa072 | ||
|
|
5c6bc94683 | ||
|
|
caf4058643 | ||
|
|
ef38ec311a | ||
|
|
d52e8ef81c | ||
|
|
9644ab7025 | ||
|
|
7abd1d5126 | ||
|
|
1a81202c4f | ||
|
|
d1ab30dc54 | ||
|
|
f25ff28d1c | ||
|
|
e0c62a93a1 | ||
|
|
34f6d346b5 | ||
|
|
a547b56e5b | ||
|
|
b7f56fce8a | ||
|
|
3d100841f6 | ||
|
|
5713f8474e | ||
|
|
0a8c41d6e2 | ||
|
|
6d4b68b490 | ||
|
|
b7f1bbcce7 | ||
|
|
abd3abc99c | ||
|
|
ac38c32963 | ||
|
|
74a5d14239 | ||
|
|
2f4f00e4c6 | ||
|
|
67c184546c | ||
|
|
3d4cc89e85 | ||
|
|
6cc823a6c4 | ||
|
|
d94e792124 | ||
|
|
033db0da30 | ||
|
|
09c2ae9716 | ||
|
|
ba56f006fc | ||
|
|
75bf9a79af | ||
|
|
ed2698b25f | ||
|
|
52ad1d2e01 | ||
|
|
f18ea97ee4 | ||
|
|
07d7ee0dc6 | ||
|
|
327cd5a69d | ||
|
|
e217ef3a2d | ||
|
|
407f438d11 | ||
|
|
28e19ee314 | ||
|
|
7ca345011a | ||
|
|
02b671aa02 | ||
|
|
06895751d1 | ||
|
|
02c9ff3be2 | ||
|
|
5d8785b43a | ||
|
|
7a65d3de5d | ||
|
|
bd2f40996a | ||
|
|
9fd0581bf0 | ||
|
|
eefb7e8744 | ||
|
|
cb13d66af0 | ||
|
|
1f36f5b7a2 | ||
|
|
bcb47c2c49 | ||
|
|
8165a5b270 | ||
|
|
29df2a9f8c | ||
|
|
2b0e0e02ba | ||
|
|
fe7fd06c5d | ||
|
|
3b8fed7e4b | ||
|
|
90de1764cc | ||
|
|
9780b0c442 | ||
|
|
2fa130caf4 | ||
|
|
5e87b2aca7 | ||
|
|
e0394952ce | ||
|
|
9af18aa7d8 | ||
|
|
668190adc5 | ||
|
|
be5150d9fe | ||
|
|
e80ebcad71 | ||
|
|
75ee3eaf53 | ||
|
|
793c19c8fc | ||
|
|
30f019fb76 | ||
|
|
0d4c9c5ea7 | ||
|
|
b29e14f6a9 | ||
|
|
218a70c516 | ||
|
|
b8200806cf | ||
|
|
27530a9fbb | ||
|
|
d072a60421 | ||
|
|
7c627b5124 | ||
|
|
787cfc6623 | ||
|
|
8e66e916f8 | ||
|
|
5ba5e97350 | ||
|
|
db77945884 | ||
|
|
bfd28af29d | ||
|
|
70fccc794a | ||
|
|
d5eb4a7b25 | ||
|
|
d9ec9539b3 | ||
|
|
406e1d7119 | ||
|
|
834ded21d8 | ||
|
|
c7cb6a492e | ||
|
|
7840e6ddd4 | ||
|
|
d910b14072 | ||
|
|
7c17210d47 | ||
|
|
117949aa8e | ||
|
|
225e47902b | ||
|
|
5f4866a30a | ||
|
|
28283a6966 | ||
|
|
e92390c5fb | ||
|
|
1e752e2293 | ||
|
|
51c60978b0 | ||
|
|
8f079fbb6c | ||
|
|
16fa7681c3 | ||
|
|
46d1619226 | ||
|
|
8c291c5677 | ||
|
|
ec726f409d | ||
|
|
5139682d94 | ||
|
|
6d4e2ba5df | ||
|
|
583cbb6dfd | ||
|
|
566711b9b9 | ||
|
|
f1ee1338e0 | ||
|
|
83a00bc1ab | ||
|
|
f405860ca0 | ||
|
|
3d58c274f1 | ||
|
|
a3484d8199 | ||
|
|
1f401f745b | ||
|
|
adb236cb13 | ||
|
|
1220aa36aa | ||
|
|
21a24919f5 | ||
|
|
df0d2135ce | ||
|
|
9ed9eb7c45 | ||
|
|
e4302a2b09 | ||
|
|
a174191dfd | ||
|
|
b5b3868f21 | ||
|
|
7137ecbd58 | ||
|
|
6452b9a4db | ||
|
|
495b903b08 | ||
|
|
b96c2c0282 | ||
|
|
3055c413af | ||
|
|
b4bedf8053 | ||
|
|
be2bd2e073 | ||
|
|
b1ee45f5c7 | ||
|
|
601e14e667 | ||
|
|
194e6ce729 | ||
|
|
ba38666a08 | ||
|
|
eb1ca82ebd | ||
|
|
343f7c4344 | ||
|
|
aad0f974f2 | ||
|
|
2e0cd39144 | ||
|
|
203bc9c4ef | ||
|
|
2199648fc8 | ||
|
|
b489376173 | ||
|
|
7c309e74e6 | ||
|
|
0ccf222961 | ||
|
|
56d703e106 | ||
|
|
24d3b3519e | ||
|
|
e7ebaec3b4 | ||
|
|
357a886c44 | ||
|
|
d76f68242b | ||
|
|
98faccfdb6 | ||
|
|
5a4d18a7d0 | ||
|
|
0e7803459f | ||
|
|
a64852414f | ||
|
|
9b251271cc | ||
|
|
94f6005b3f | ||
|
|
3c2fe176ab | ||
|
|
a5609cb39f | ||
|
|
e67ee94f2c | ||
|
|
98341b6c68 | ||
|
|
69b57c9b4d | ||
|
|
cf8514a651 | ||
|
|
721f0dbb33 | ||
|
|
4690724d0f | ||
|
|
6938c21f0b | ||
|
|
3fcfd2761a | ||
|
|
553b6f090f | ||
|
|
7d6435bfdc | ||
|
|
6d5b470689 | ||
|
|
ab756cbbaa | ||
|
|
3e7d5660ba | ||
|
|
f244684852 | ||
|
|
413775f4e3 | ||
|
|
6f98ce7512 | ||
|
|
a979406458 | ||
|
|
60b7f106cc | ||
|
|
ba3ca1d0ac | ||
|
|
039d2a5a8d | ||
|
|
cccd53a808 | ||
|
|
9338656050 | ||
|
|
cc693296f2 | ||
|
|
939ed8cac4 | ||
|
|
0b2ed364aa | ||
|
|
315bd6c458 | ||
|
|
243b4ca640 | ||
|
|
1c5e4f407b | ||
|
|
7124cda302 | ||
|
|
0a5a6d545f | ||
|
|
e6f576c226 | ||
|
|
465a07811f | ||
|
|
360b4b5fef | ||
|
|
c156700b23 | ||
|
|
f605cf145e | ||
|
|
2a93a3eddb | ||
|
|
422e90f610 | ||
|
|
bc8c4d08b4 | ||
|
|
052c2c4268 | ||
|
|
beabccd65a | ||
|
|
b56ed1c88d | ||
|
|
a13e198944 | ||
|
|
1b469c82ee | ||
|
|
83e260592e | ||
|
|
6ba7f31490 | ||
|
|
5447726540 | ||
|
|
40891eba8c | ||
|
|
dcd1f1fe0a | ||
|
|
713d7298f6 | ||
|
|
a7ae18608a | ||
|
|
65b78e6e13 | ||
|
|
219c305e1c | ||
|
|
eb81c74b31 | ||
|
|
eb7654ec33 | ||
|
|
ec9cdf07d5 | ||
|
|
d01f5a4fd6 | ||
|
|
af023e8f62 | ||
|
|
3da7dc6e2b | ||
|
|
07119058a1 | ||
|
|
bc135a1993 | ||
|
|
f8374000f2 | ||
|
|
9d3e51f876 | ||
|
|
9ec69b27e2 | ||
|
|
7f58925139 | ||
|
|
980c90b31a | ||
|
|
add9f8d32e | ||
|
|
f75d088332 | ||
|
|
b161681273 | ||
|
|
f4ef78c080 | ||
|
|
9ad4ce3929 | ||
|
|
884eadd4f8 | ||
|
|
a266232f5c | ||
|
|
f97efcfbf9 | ||
|
|
5ae789beac | ||
|
|
71c23b5b34 | ||
|
|
6401d70aab | ||
|
|
67e8909cc6 | ||
|
|
21f251affc | ||
|
|
07cad18854 | ||
|
|
be010b4293 | ||
|
|
f719196635 | ||
|
|
9607a71381 | ||
|
|
d398f07826 | ||
|
|
31aab9fb7e | ||
|
|
49ed152c8e | ||
|
|
b61a9ce7bd | ||
|
|
3a136a8631 | ||
|
|
b312880b69 | ||
|
|
795794e081 | ||
|
|
1edf6180e0 | ||
|
|
8e66ad4089 | ||
|
|
7c79b598ea | ||
|
|
24a38e0d6d | ||
|
|
70e1ff84cb | ||
|
|
0828e0e718 | ||
|
|
56f72fcef0 | ||
|
|
f169e16aaa | ||
|
|
fa178e4710 | ||
|
|
a4bf4e934e | ||
|
|
2bbd6e81e1 | ||
|
|
f6d32ad023 | ||
|
|
b4595c8bf9 | ||
|
|
dd4fa0671b | ||
|
|
4e3538592e | ||
|
|
bb984efc56 | ||
|
|
722888132b | ||
|
|
17780b56b7 | ||
|
|
39857b3b45 | ||
|
|
5fcc728422 | ||
|
|
9fb8721eb9 | ||
|
|
4e3c9375bb | ||
|
|
4b59a429db |
No files matched your search
+11
-1
@@ -1,2 +1,12 @@
|
|||||||
/coverage
|
/coverage
|
||||||
/node_modules
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
|
.yarn/build-state.yml
|
||||||
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
||||||
@@ -1,2 +1,4 @@
|
|||||||
|
/.yarn/releases/** binary
|
||||||
|
/.yarn/plugins/** binary
|
||||||
/dist/** linguist-generated=true
|
/dist/** linguist-generated=true
|
||||||
/lib/** linguist-generated=true
|
/lib/** linguist-generated=true
|
||||||
@@ -1 +0,0 @@
|
|||||||
* @crazy-max
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Code of conduct
|
||||||
|
|
||||||
|
- [Moby community guidelines](https://github.com/moby/moby/blob/master/CONTRIBUTING.md#moby-community-guidelines)
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
|
||||||
|
name: Bug Report
|
||||||
|
description: Report a bug
|
||||||
|
labels:
|
||||||
|
- status/triage
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thank you for taking the time to report a bug!
|
||||||
|
If this is a security issue please report it to the [Docker Security team](mailto:security@docker.com).
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Contributing guidelines
|
||||||
|
description: >
|
||||||
|
Make sure you've read the contributing guidelines before proceeding.
|
||||||
|
options:
|
||||||
|
- label: I've read the [contributing guidelines](https://github.com/docker/login-action/blob/master/.github/CONTRIBUTING.md) and wholeheartedly agree
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: "I've found a bug, and:"
|
||||||
|
description: |
|
||||||
|
Make sure that your request fulfills all of the following requirements.
|
||||||
|
If one requirement cannot be satisfied, explain in detail why.
|
||||||
|
options:
|
||||||
|
- label: The documentation does not mention anything about my problem
|
||||||
|
- label: There are no open or closed issues that are related to my problem
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: >
|
||||||
|
Provide a brief description of the bug in 1-2 sentences.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Expected behaviour
|
||||||
|
description: >
|
||||||
|
Describe precisely what you'd expect to happen.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Actual behaviour
|
||||||
|
description: >
|
||||||
|
Describe precisely what is actually happening.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Repository URL
|
||||||
|
description: >
|
||||||
|
Enter the URL of the repository where you are experiencing the
|
||||||
|
issue. If your repository is private, provide a link to a minimal
|
||||||
|
repository that reproduces the issue.
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
attributes:
|
||||||
|
label: Workflow run URL
|
||||||
|
description: >
|
||||||
|
Enter the URL of the GitHub Action workflow run if public (e.g.
|
||||||
|
`https://github.com/<user>/<repo>/actions/runs/<id>`)
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: YAML workflow
|
||||||
|
description: |
|
||||||
|
Provide the YAML of the workflow that's causing the issue.
|
||||||
|
Make sure to remove any sensitive information.
|
||||||
|
render: yaml
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Workflow logs
|
||||||
|
description: >
|
||||||
|
[Attach](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files)
|
||||||
|
the [log file of your workflow run](https://docs.github.com/en/actions/managing-workflow-runs/using-workflow-run-logs#downloading-logs)
|
||||||
|
and make sure to remove any sensitive information.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: BuildKit logs
|
||||||
|
description: >
|
||||||
|
If applicable, provide the [BuildKit container logs](https://docs.docker.com/build/ci/github-actions/configure-builder/#buildkit-container-logs)
|
||||||
|
render: text
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Additional info
|
||||||
|
description: |
|
||||||
|
Provide any additional information that could be useful.
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
---
|
|
||||||
|
|
||||||
### Behaviour
|
|
||||||
|
|
||||||
#### Steps to reproduce this issue
|
|
||||||
|
|
||||||
1.
|
|
||||||
2.
|
|
||||||
3.
|
|
||||||
|
|
||||||
#### Expected behaviour
|
|
||||||
|
|
||||||
> Tell us what should happen
|
|
||||||
|
|
||||||
#### Actual behaviour
|
|
||||||
|
|
||||||
> Tell us what happens instead
|
|
||||||
|
|
||||||
### Configuration
|
|
||||||
|
|
||||||
* Repository URL (if public):
|
|
||||||
* Build URL (if public):
|
|
||||||
|
|
||||||
```yml
|
|
||||||
# paste your YAML workflow file here and remove sensitive data
|
|
||||||
```
|
|
||||||
|
|
||||||
### Logs
|
|
||||||
|
|
||||||
> Download the [log file of your build](https://docs.github.com/en/actions/managing-workflow-runs/using-workflow-run-logs#downloading-logs)
|
|
||||||
> and [attach it](https://docs.github.com/en/github/managing-your-work-on-github/file-attachments-on-issues-and-pull-requests) to this issue.
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser
|
||||||
|
blank_issues_enabled: true
|
||||||
|
contact_links:
|
||||||
|
- name: Questions and Discussions
|
||||||
|
url: https://github.com/docker/login-action/discussions/new
|
||||||
|
about: Use Github Discussions to ask questions and/or open discussion topics.
|
||||||
|
- name: Documentation
|
||||||
|
url: https://docs.docker.com/build/ci/github-actions/
|
||||||
|
about: Read the documentation.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
|
||||||
|
name: Feature request
|
||||||
|
description: Missing functionality? Come tell us about it!
|
||||||
|
labels:
|
||||||
|
- kind/enhancement
|
||||||
|
- status/triage
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: What is the feature you want to see?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Reporting security issues
|
||||||
|
|
||||||
|
The project maintainers take security seriously. If you discover a security
|
||||||
|
issue, please bring it to their attention right away!
|
||||||
|
|
||||||
|
**Please _DO NOT_ file a public issue**, instead send your report privately to
|
||||||
|
[security@docker.com](mailto:security@docker.com).
|
||||||
|
|
||||||
|
Security reports are greatly appreciated, and we will publicly thank you for it.
|
||||||
|
We also like to send gifts—if you'd like Docker swag, make sure to let
|
||||||
|
us know. We currently do not offer a paid security bounty program, but are not
|
||||||
|
ruling it out in the future.
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
# Support [](https://isitmaintained.com/project/docker/login-action)
|
|
||||||
|
|
||||||
## Reporting an issue
|
|
||||||
|
|
||||||
Please do a search in [open issues](https://github.com/docker/login-action/issues?utf8=%E2%9C%93&q=) to see if the issue or feature request has already been filed.
|
|
||||||
|
|
||||||
If you find your issue already exists, make relevant comments and add your [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). Use a reaction in place of a "+1" comment.
|
|
||||||
|
|
||||||
:+1: - upvote
|
|
||||||
|
|
||||||
:-1: - downvote
|
|
||||||
|
|
||||||
If you cannot find an existing issue that describes your bug or feature, submit an issue using the guidelines below.
|
|
||||||
|
|
||||||
## Writing good bug reports and feature requests
|
|
||||||
|
|
||||||
File a single issue per problem and feature request.
|
|
||||||
|
|
||||||
* Do not enumerate multiple bugs or feature requests in the same issue.
|
|
||||||
* Do not add your issue as a comment to an existing issue unless it's for the identical input. Many issues look similar, but have different causes.
|
|
||||||
|
|
||||||
The more information you can provide, the more likely someone will be successful reproducing the issue and finding a fix.
|
|
||||||
|
|
||||||
You are now ready to [create a new issue](https://github.com/docker/login-action/issues/new/choose)!
|
|
||||||
|
|
||||||
## Closure policy
|
|
||||||
|
|
||||||
* Issues that don't have the information requested above (when applicable) will be closed immediately and the poster directed to the support guidelines.
|
|
||||||
* Issues that go a week without a response from original poster are subject to closure at our discretion.
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
FROM docker:29.3@sha256:4d90f1f6c400315c2dba96d3ec93c01e64198395cbba04f79d12adce4f737029
|
||||||
|
|
||||||
|
ENTRYPOINT ["docker"]
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
name: Pull Docker image
|
||||||
|
|
||||||
|
description: Pull an image from a Docker container action
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
image:
|
||||||
|
description: Image reference to pull
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: docker
|
||||||
|
image: Dockerfile
|
||||||
|
args:
|
||||||
|
- pull
|
||||||
|
- ${{ inputs.image }}
|
||||||
@@ -4,6 +4,15 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
cooldown:
|
||||||
|
default-days: 2
|
||||||
|
groups:
|
||||||
|
crazy-max-dot-github:
|
||||||
|
patterns:
|
||||||
|
- "crazy-max/.github/*"
|
||||||
|
codeql-actions:
|
||||||
|
patterns:
|
||||||
|
- "github/codeql-action/*"
|
||||||
labels:
|
labels:
|
||||||
- "dependencies"
|
- "dependencies"
|
||||||
- "bot"
|
- "bot"
|
||||||
@@ -11,6 +20,18 @@ updates:
|
|||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
cooldown:
|
||||||
|
default-days: 2
|
||||||
|
exclude:
|
||||||
|
- "@docker/actions-toolkit"
|
||||||
|
versioning-strategy: "increase"
|
||||||
|
groups:
|
||||||
|
aws-sdk-dependencies:
|
||||||
|
patterns:
|
||||||
|
- "*aws-sdk*"
|
||||||
|
proxy-agent-dependencies:
|
||||||
|
patterns:
|
||||||
|
- "*-proxy-agent"
|
||||||
allow:
|
allow:
|
||||||
- dependency-type: "production"
|
- dependency-type: "production"
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
+367
-34
@@ -1,5 +1,15 @@
|
|||||||
name: ci
|
name: ci
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
GHCR_TEST_IMAGE: ghcr.io/docker/login-action-test:ci-${{ github.sha }}
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
@@ -15,7 +25,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Stop docker
|
name: Stop docker
|
||||||
run: |
|
run: |
|
||||||
@@ -39,7 +49,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to GitHub Container Registry
|
name: Login to GitHub Container Registry
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -49,44 +59,74 @@ jobs:
|
|||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
logout: ${{ matrix.logout }}
|
logout: ${{ matrix.logout }}
|
||||||
|
|
||||||
dind:
|
push-ghcr:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
permissions:
|
||||||
DOCKER_CONFIG: $HOME/.docker
|
contents: read
|
||||||
|
packages: write
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to GitHub Container Registry
|
name: Login to GitHub Container Registry
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ secrets.GHCR_USERNAME }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GHCR_PAT }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
name: DinD
|
name: Build and push test image
|
||||||
uses: docker://docker
|
run: |
|
||||||
|
docker buildx build --push -t "${GHCR_TEST_IMAGE}" - <<EOF
|
||||||
|
FROM scratch
|
||||||
|
LABEL org.opencontainers.image.title="docker/login-action CI test image"
|
||||||
|
LABEL org.opencontainers.image.description="Empty image used by CI to verify GHCR authentication."
|
||||||
|
LABEL org.opencontainers.image.source="https://github.com/${GITHUB_REPOSITORY}"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
dind:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- push-ghcr
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: read
|
||||||
|
env:
|
||||||
|
DOCKER_CONFIG: $HOME/.docker
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to GitHub Container Registry
|
||||||
|
uses: ./
|
||||||
with:
|
with:
|
||||||
entrypoint: docker
|
registry: ghcr.io
|
||||||
args: pull ghcr.io/docker-ghactiontest/test
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
-
|
-
|
||||||
name: Pull private image
|
name: Pull test image from Docker CLI container action
|
||||||
|
uses: ./.github/actions/docker-pull
|
||||||
|
with:
|
||||||
|
image: ${{ env.GHCR_TEST_IMAGE }}
|
||||||
|
-
|
||||||
|
name: Pull test image
|
||||||
run: |
|
run: |
|
||||||
docker image prune -a -f >/dev/null 2>&1
|
docker image prune -a -f >/dev/null 2>&1
|
||||||
docker pull ghcr.io/docker-ghactiontest/test
|
docker pull "${GHCR_TEST_IMAGE}"
|
||||||
|
|
||||||
acr:
|
acr:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to ACR
|
name: Login to ACR
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: ${{ secrets.AZURE_REGISTRY_NAME }}.azurecr.io
|
registry: officialgithubactions.azurecr.io
|
||||||
username: ${{ secrets.AZURE_CLIENT_ID }}
|
username: ${{ secrets.AZURE_CLIENT_ID }}
|
||||||
password: ${{ secrets.AZURE_CLIENT_SECRET }}
|
password: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||||
|
|
||||||
@@ -101,13 +141,57 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to Docker Hub
|
name: Login to Docker Hub
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ vars.DOCKERPUBLICBOT_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERPUBLICBOT_READ_PAT }}
|
||||||
|
|
||||||
|
dockerhub-oidc:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to Docker Hub with OIDC
|
||||||
|
uses: ./
|
||||||
|
env:
|
||||||
|
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.DOCKERHUB_OIDC_CONNECTIONID }}
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERHUB_OIDC_USERNAME }}
|
||||||
|
|
||||||
|
registry-auth-oidc:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to registries
|
||||||
|
uses: ./
|
||||||
|
env:
|
||||||
|
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.DOCKERHUB_OIDC_CONNECTIONID }}
|
||||||
|
with:
|
||||||
|
registry-auth: |
|
||||||
|
- username: ${{ vars.DOCKERHUB_OIDC_USERNAME }}
|
||||||
|
- registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
ecr:
|
ecr:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@@ -120,12 +204,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to ECR
|
name: Login to ECR
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: ${{ secrets.AWS_ACCOUNT_NUMBER }}.dkr.ecr.us-east-1.amazonaws.com
|
registry: 175142243308.dkr.ecr.us-east-1.amazonaws.com
|
||||||
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
|
||||||
@@ -140,10 +224,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Configure AWS Credentials
|
name: Configure AWS Credentials
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6.3.0
|
||||||
with:
|
with:
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
@@ -152,7 +236,34 @@ jobs:
|
|||||||
name: Login to ECR
|
name: Login to ECR
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: ${{ secrets.AWS_ACCOUNT_NUMBER }}.dkr.ecr.us-east-1.amazonaws.com
|
registry: 175142243308.dkr.ecr.us-east-1.amazonaws.com
|
||||||
|
|
||||||
|
ecr-oidc:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Configure AWS Credentials
|
||||||
|
uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6.3.0
|
||||||
|
with:
|
||||||
|
role-to-assume: arn:aws:iam::175142243308:role/official_gha_cicd_login_action
|
||||||
|
aws-region: us-east-1
|
||||||
|
-
|
||||||
|
name: Login to ECR
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry: 175142243308.dkr.ecr.us-east-1.amazonaws.com
|
||||||
|
|
||||||
ecr-public:
|
ecr-public:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
@@ -165,9 +276,10 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to Public ECR
|
name: Login to Public ECR
|
||||||
|
continue-on-error: ${{ matrix.os == 'windows-latest' }}
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: public.ecr.aws
|
registry: public.ecr.aws
|
||||||
@@ -187,21 +299,25 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Configure AWS Credentials
|
name: Configure AWS Credentials
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6.3.0
|
||||||
with:
|
with:
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
aws-region: us-east-1
|
aws-region: us-east-1
|
||||||
-
|
-
|
||||||
name: Login to ECR
|
name: Login to Public ECR
|
||||||
|
continue-on-error: ${{ matrix.os == 'windows-latest' }}
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: public.ecr.aws
|
registry: public.ecr.aws
|
||||||
|
|
||||||
github-container:
|
ecr-public-oidc:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -212,7 +328,32 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Configure AWS Credentials
|
||||||
|
uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6.3.0
|
||||||
|
with:
|
||||||
|
role-to-assume: arn:aws:iam::175142243308:role/official_gha_cicd_login_action
|
||||||
|
aws-region: us-east-1
|
||||||
|
-
|
||||||
|
name: Login to Public ECR
|
||||||
|
continue-on-error: ${{ matrix.os == 'windows-latest' }}
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry: public.ecr.aws
|
||||||
|
|
||||||
|
ghcr:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to GitHub Container Registry
|
name: Login to GitHub Container Registry
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -232,7 +373,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to GitLab
|
name: Login to GitLab
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -252,12 +393,12 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to Google Artifact Registry
|
name: Login to Google Artifact Registry
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
registry: ${{ secrets.GAR_LOCATION }}-docker.pkg.dev
|
registry: us-east4-docker.pkg.dev
|
||||||
username: _json_key
|
username: _json_key
|
||||||
password: ${{ secrets.GAR_JSON_KEY }}
|
password: ${{ secrets.GAR_JSON_KEY }}
|
||||||
|
|
||||||
@@ -272,7 +413,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
-
|
||||||
name: Login to Google Container Registry
|
name: Login to Google Container Registry
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -280,3 +421,195 @@ jobs:
|
|||||||
registry: gcr.io
|
registry: gcr.io
|
||||||
username: _json_key
|
username: _json_key
|
||||||
password: ${{ secrets.GCR_JSON_KEY }}
|
password: ${{ secrets.GCR_JSON_KEY }}
|
||||||
|
|
||||||
|
registry-auth:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to registries
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry-auth: |
|
||||||
|
- username: ${{ vars.DOCKERPUBLICBOT_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERPUBLICBOT_READ_PAT }}
|
||||||
|
- registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- registry: public.ecr.aws
|
||||||
|
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
- registry: registry.gitlab.com
|
||||||
|
username: ${{ secrets.GITLAB_USERNAME }}
|
||||||
|
password: ${{ secrets.GITLAB_TOKEN }}
|
||||||
|
|
||||||
|
registry-auth-dup:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to registries
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry-auth: |
|
||||||
|
- registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- registry: public.ecr.aws
|
||||||
|
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
- registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
registry-auth-exclusive:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to registries
|
||||||
|
id: login
|
||||||
|
continue-on-error: true
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
registry-auth: |
|
||||||
|
- username: ${{ vars.DOCKERPUBLICBOT_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERPUBLICBOT_READ_PAT }}
|
||||||
|
-
|
||||||
|
name: Check
|
||||||
|
run: |
|
||||||
|
if [ "${{ steps.login.outcome }}" != "failure" ] || [ "${{ steps.login.conclusion }}" != "success" ]; then
|
||||||
|
echo "::error::Should have failed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
scope-dockerhub:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to Docker Hub
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERPUBLICBOT_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERPUBLICBOT_READ_PAT }}
|
||||||
|
scope: '@push'
|
||||||
|
-
|
||||||
|
name: Print config.json files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
shopt -s globstar nullglob
|
||||||
|
for file in ~/.docker/**/config.json; do
|
||||||
|
echo "## ${file}"
|
||||||
|
jq '(.auths[]?.auth) |= "REDACTED"' "$file"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
scope-dockerhub-repo:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to Docker Hub
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERPUBLICBOT_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERPUBLICBOT_READ_PAT }}
|
||||||
|
scope: 'docker/buildx-bin@push'
|
||||||
|
-
|
||||||
|
name: Print config.json files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
shopt -s globstar nullglob
|
||||||
|
for file in ~/.docker/**/config.json; do
|
||||||
|
echo "## ${file}"
|
||||||
|
jq '(.auths[]?.auth) |= "REDACTED"' "$file"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
scope-ghcr:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to GitHub Container Registry
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
scope: '@push'
|
||||||
|
-
|
||||||
|
name: Print config.json files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
shopt -s globstar nullglob
|
||||||
|
for file in ~/.docker/**/config.json; do
|
||||||
|
echo "## ${file}"
|
||||||
|
jq '(.auths[]?.auth) |= "REDACTED"' "$file"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
|
|
||||||
|
scope-ghcr-repo:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- windows-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Login to GitHub Container Registry
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
scope: 'docker/login-action@push'
|
||||||
|
-
|
||||||
|
name: Print config.json files
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
shopt -s globstar nullglob
|
||||||
|
for file in ~/.docker/**/config.json; do
|
||||||
|
echo "## ${file}"
|
||||||
|
jq '(.auths[]?.auth) |= "REDACTED"' "$file"
|
||||||
|
echo ""
|
||||||
|
done
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
name: codeql
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'releases/v*'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
env:
|
||||||
|
NODE_VERSION: "24"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Enable corepack
|
||||||
|
run: |
|
||||||
|
corepack enable
|
||||||
|
yarn --version
|
||||||
|
-
|
||||||
|
name: Set up Node
|
||||||
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
-
|
||||||
|
name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
|
||||||
|
with:
|
||||||
|
languages: javascript-typescript
|
||||||
|
build-mode: none
|
||||||
|
-
|
||||||
|
name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
|
||||||
|
with:
|
||||||
|
category: "/language:javascript-typescript"
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
name: pr-assign-author
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target: # zizmor: ignore[dangerous-triggers] safe to use without checkout
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
uses: crazy-max/.github/.github/workflows/pr-assign-author.yml@f91220cba053bd54299ba645a599ee8ed436f222 # v1.11.0
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
name: publish
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types:
|
||||||
|
- published
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
packages: write
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Publish
|
||||||
|
uses: actions/publish-immutable-action@4bc8754ffc40f27910afb20287dbbbb675a4e978 # v0.0.4
|
||||||
+13
-12
@@ -1,14 +1,18 @@
|
|||||||
name: test
|
name: test
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- 'master'
|
- 'master'
|
||||||
- 'releases/v*'
|
- 'releases/v*'
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
|
||||||
- 'master'
|
|
||||||
- 'releases/v*'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
@@ -16,19 +20,16 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
-
|
|
||||||
name: Validate
|
|
||||||
uses: docker/bake-action@v1
|
|
||||||
with:
|
|
||||||
targets: validate
|
|
||||||
-
|
-
|
||||||
name: Test
|
name: Test
|
||||||
uses: docker/bake-action@v1
|
uses: docker/bake-action@59cb1203cd42bcefd40a1b6d73b589e48c86040e # v7.5.0
|
||||||
with:
|
with:
|
||||||
|
source: .
|
||||||
targets: test
|
targets: test
|
||||||
-
|
-
|
||||||
name: Upload coverage
|
name: Upload coverage
|
||||||
uses: codecov/codecov-action@v2
|
uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
|
||||||
with:
|
with:
|
||||||
file: ./coverage/clover.xml
|
files: ./coverage/clover.xml
|
||||||
|
token: ${{ secrets.CODECOV_TOKEN }}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
name: update-dist
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- synchronize
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-dist:
|
||||||
|
if: github.actor == 'dependabot[bot]' && github.event.pull_request.user.login == 'dependabot[bot]' && github.repository == github.event.pull_request.head.repo.full_name
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: GitHub auth token from GitHub App
|
||||||
|
id: docker-read-app
|
||||||
|
uses: actions/create-github-app-token@64ab729a6294000f5aa4a4bc0b73d1f32bc45510 # v3.3.0
|
||||||
|
with:
|
||||||
|
app-id: ${{ secrets.GHACTIONS_REPO_WRITE_APP_ID }}
|
||||||
|
private-key: ${{ secrets.GHACTIONS_REPO_WRITE_APP_PRIVATE_KEY }}
|
||||||
|
owner: docker
|
||||||
|
repositories: login-action
|
||||||
|
permission-contents: write
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
with:
|
||||||
|
ref: ${{ github.event.pull_request.head.ref }}
|
||||||
|
fetch-depth: 0
|
||||||
|
token: ${{ steps.docker-read-app.outputs.token }}
|
||||||
|
-
|
||||||
|
name: Build
|
||||||
|
uses: docker/bake-action@59cb1203cd42bcefd40a1b6d73b589e48c86040e # v7.5.0
|
||||||
|
with:
|
||||||
|
source: .
|
||||||
|
targets: build
|
||||||
|
-
|
||||||
|
name: Commit and push dist
|
||||||
|
run: |
|
||||||
|
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||||
|
(
|
||||||
|
set -x
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||||
|
git add dist
|
||||||
|
git commit -m "[dependabot skip] chore: update generated content"
|
||||||
|
git push
|
||||||
|
)
|
||||||
|
else
|
||||||
|
echo "No changes in dist"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
name: validate
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'releases/v*'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prepare:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
matrix: ${{ steps.generate.outputs.matrix }}
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Checkout
|
||||||
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
-
|
||||||
|
name: Generate matrix
|
||||||
|
id: generate
|
||||||
|
uses: docker/bake-action/subaction/matrix@59cb1203cd42bcefd40a1b6d73b589e48c86040e # v7.5.0
|
||||||
|
with:
|
||||||
|
target: validate
|
||||||
|
|
||||||
|
validate:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- prepare
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include: ${{ fromJson(needs.prepare.outputs.matrix) }}
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Validate
|
||||||
|
uses: docker/bake-action@59cb1203cd42bcefd40a1b6d73b589e48c86040e # v7.5.0
|
||||||
|
with:
|
||||||
|
targets: ${{ matrix.target }}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
name: zizmor
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'releases/v*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
zizmor:
|
||||||
|
uses: crazy-max/.github/.github/workflows/zizmor.yml@f91220cba053bd54299ba645a599ee8ed436f222 # v1.11.0
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
security-events: write
|
||||||
|
with:
|
||||||
|
min-severity: medium
|
||||||
|
min-confidence: medium
|
||||||
|
persona: pedantic
|
||||||
+14
-57
@@ -1,12 +1,5 @@
|
|||||||
/.dev
|
# https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
|
||||||
node_modules/
|
|
||||||
lib
|
|
||||||
|
|
||||||
# Jetbrains
|
|
||||||
/.idea
|
|
||||||
/*.iml
|
|
||||||
|
|
||||||
# Rest of the file pulled from https://github.com/github/gitignore/blob/master/Node.gitignore
|
|
||||||
# Logs
|
# Logs
|
||||||
logs
|
logs
|
||||||
*.log
|
*.log
|
||||||
@@ -14,6 +7,7 @@ npm-debug.log*
|
|||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
lerna-debug.log*
|
lerna-debug.log*
|
||||||
|
.pnpm-debug.log*
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||||
@@ -24,34 +18,14 @@ pids
|
|||||||
*.seed
|
*.seed
|
||||||
*.pid.lock
|
*.pid.lock
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
# Coverage directory used by tools like istanbul
|
||||||
coverage
|
coverage
|
||||||
*.lcov
|
*.lcov
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
jspm_packages/
|
jspm_packages/
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# TypeScript cache
|
# TypeScript cache
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
|
|
||||||
@@ -61,36 +35,19 @@ typings/
|
|||||||
# Optional eslint cache
|
# Optional eslint cache
|
||||||
.eslintcache
|
.eslintcache
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
# Yarn Integrity file
|
||||||
.yarn-integrity
|
.yarn-integrity
|
||||||
|
|
||||||
# dotenv environment variables file
|
# dotenv environment variable files
|
||||||
.env
|
.env
|
||||||
.env.test
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
.env.local
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
# yarn v2
|
||||||
.cache
|
.yarn/cache
|
||||||
|
.yarn/unplugged
|
||||||
# next.js build output
|
.yarn/build-state.yml
|
||||||
.next
|
.yarn/install-state.gz
|
||||||
|
.pnp.*
|
||||||
# nuxt.js build output
|
|
||||||
.nuxt
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# yarn v2
|
||||||
|
.yarn/
|
||||||
+1
-2
@@ -6,6 +6,5 @@
|
|||||||
"singleQuote": true,
|
"singleQuote": true,
|
||||||
"trailingComma": "none",
|
"trailingComma": "none",
|
||||||
"bracketSpacing": false,
|
"bracketSpacing": false,
|
||||||
"arrowParens": "avoid",
|
"arrowParens": "avoid"
|
||||||
"parser": "typescript"
|
|
||||||
}
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
# https://yarnpkg.com/configuration/yarnrc
|
||||||
|
|
||||||
|
nodeLinker: node-modules
|
||||||
|
|
||||||
|
logFilters:
|
||||||
|
- code: YN0004
|
||||||
|
level: discard
|
||||||
|
- code: YN0013
|
||||||
|
level: discard
|
||||||
|
- code: YN0019
|
||||||
|
level: discard
|
||||||
|
- code: YN0076
|
||||||
|
level: discard
|
||||||
|
- code: YN0086
|
||||||
|
level: discard
|
||||||
|
|
||||||
|
npmPreapprovedPackages:
|
||||||
|
- "@docker/actions-toolkit"
|
||||||
|
|
||||||
|
compressionLevel: mixed
|
||||||
|
enableGlobalCache: false
|
||||||
|
enableHardenedMode: true
|
||||||
|
enableScripts: false
|
||||||
|
npmMinimalAgeGate: 2d
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[](https://github.com/docker/login-action/releases/latest)
|
[](https://github.com/docker/login-action/releases/latest)
|
||||||
[](https://github.com/marketplace/actions/docker-login)
|
[](https://github.com/marketplace/actions/docker-login)
|
||||||
[](https://github.com/docker/login-action/actions?workflow=ci)
|
[](https://github.com/docker/login-action/actions?workflow=ci)
|
||||||
[](https://github.com/docker/login-action/actions?workflow=test)
|
[](https://github.com/docker/login-action/actions?workflow=test)
|
||||||
[](https://codecov.io/gh/docker/login-action)
|
[](https://codecov.io/gh/docker/login-action)
|
||||||
|
|
||||||
## About
|
## About
|
||||||
@@ -23,16 +23,21 @@ ___
|
|||||||
* [AWS Public Elastic Container Registry (ECR)](#aws-public-elastic-container-registry-ecr)
|
* [AWS Public Elastic Container Registry (ECR)](#aws-public-elastic-container-registry-ecr)
|
||||||
* [OCI Oracle Cloud Infrastructure Registry (OCIR)](#oci-oracle-cloud-infrastructure-registry-ocir)
|
* [OCI Oracle Cloud Infrastructure Registry (OCIR)](#oci-oracle-cloud-infrastructure-registry-ocir)
|
||||||
* [Quay.io](#quayio)
|
* [Quay.io](#quayio)
|
||||||
|
* [DigitalOcean](#digitalocean-container-registry)
|
||||||
|
* [Authenticate to multiple registries](#authenticate-to-multiple-registries)
|
||||||
|
* [Set scopes for the authentication token](#set-scopes-for-the-authentication-token)
|
||||||
* [Customizing](#customizing)
|
* [Customizing](#customizing)
|
||||||
* [inputs](#inputs)
|
* [inputs](#inputs)
|
||||||
* [Keep up-to-date with GitHub Dependabot](#keep-up-to-date-with-github-dependabot)
|
* [environment variables](#environment-variables)
|
||||||
|
* [Contributing](#contributing)
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Docker Hub
|
### Docker Hub
|
||||||
|
|
||||||
To authenticate against [Docker Hub](https://hub.docker.com) it's strongly recommended to create a
|
When authenticating to [Docker Hub](https://hub.docker.com) with GitHub Actions,
|
||||||
[personal access token](https://docs.docker.com/docker-hub/access-tokens/) as an alternative to your password.
|
use a [personal access token](https://docs.docker.com/docker-hub/access-tokens/).
|
||||||
|
Don't use your account password.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -47,17 +52,47 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to Docker Hub
|
name: Login to Docker Hub
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can also [authenticate to Docker Hub with OpenID Connect](https://docs.docker.com/enterprise/security/oidc-connections/)
|
||||||
|
when your Docker Hub organization has an OIDC connection configured. The
|
||||||
|
workflow must grant the `id-token: write` permission, pass the Docker Hub
|
||||||
|
organization name as `username`, omit `password`, and set the OIDC connection
|
||||||
|
ID in `DOCKERHUB_OIDC_CONNECTIONID` environment variable.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
env:
|
||||||
|
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.DOCKERHUB_OIDC_CONNECTIONID }}
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERHUB_ORGANIZATION }}
|
||||||
|
```
|
||||||
|
|
||||||
### GitHub Container Registry
|
### GitHub Container Registry
|
||||||
|
|
||||||
To authenticate against the [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry),
|
To authenticate to the [GitHub Container Registry](https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry),
|
||||||
use the [`GITHUB_TOKEN`](https://docs.github.com/en/actions/reference/authentication-in-a-workflow) for the best
|
use the [`GITHUB_TOKEN`](https://docs.github.com/en/actions/reference/authentication-in-a-workflow)
|
||||||
security and experience.
|
secret.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -72,7 +107,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to GitHub Container Registry
|
name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -100,18 +135,25 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to GitLab
|
name: Login to GitLab
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: registry.gitlab.com
|
registry: registry.gitlab.com
|
||||||
username: ${{ secrets.GITLAB_USERNAME }}
|
username: ${{ vars.GITLAB_USERNAME }}
|
||||||
password: ${{ secrets.GITLAB_PASSWORD }}
|
password: ${{ secrets.GITLAB_PASSWORD }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you have [Two-Factor Authentication](https://gitlab.com/help/user/profile/account/two_factor_authentication)
|
||||||
|
enabled, use a [Personal Access Token](https://gitlab.com/help/user/profile/personal_access_tokens)
|
||||||
|
instead of a password.
|
||||||
|
|
||||||
### Azure Container Registry (ACR)
|
### Azure Container Registry (ACR)
|
||||||
|
|
||||||
|
#### Service principal
|
||||||
|
|
||||||
[Create a service principal](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal#create-a-service-principal)
|
[Create a service principal](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-auth-service-principal#create-a-service-principal)
|
||||||
with access to your container registry through the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
with access to your container registry through the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
||||||
and take note of the generated service principal's ID (also called _client ID_) and password (also called _client secret_).
|
and take note of the generated service principal's ID (also called _client ID_)
|
||||||
|
and password (also called _client secret_).
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -126,27 +168,82 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to ACR
|
name: Login to ACR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <registry-name>.azurecr.io
|
registry: <registry-name>.azurecr.io
|
||||||
username: ${{ secrets.AZURE_CLIENT_ID }}
|
username: ${{ vars.AZURE_CLIENT_ID }}
|
||||||
password: ${{ secrets.AZURE_CLIENT_SECRET }}
|
password: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Replace `<registry-name>` with the name of your registry.
|
||||||
|
|
||||||
|
#### OpenID Connect (OIDC)
|
||||||
|
|
||||||
|
To authenticate with OpenID Connect, configure a federated identity credential
|
||||||
|
for GitHub Actions and use the [Azure Login](https://github.com/Azure/login)
|
||||||
|
action to sign in to Azure. Then expose an ACR access token and pass it to this
|
||||||
|
action as the password.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to Azure
|
||||||
|
uses: azure/login@v3
|
||||||
|
with:
|
||||||
|
client-id: ${{ vars.AZURE_CLIENT_ID }}
|
||||||
|
tenant-id: ${{ vars.AZURE_TENANT_ID }}
|
||||||
|
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
|
||||||
|
-
|
||||||
|
name: Get ACR access token
|
||||||
|
id: acr-token
|
||||||
|
run: |
|
||||||
|
ACR_TOKEN=$(az acr login --name <registry-name> --expose-token --output tsv --query accessToken)
|
||||||
|
echo "::add-mask::$ACR_TOKEN" # mask the token in workflow logs
|
||||||
|
echo "token=$ACR_TOKEN" >> "$GITHUB_OUTPUT"
|
||||||
|
-
|
||||||
|
name: Login to ACR
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: <registry-name>.azurecr.io
|
||||||
|
username: 00000000-0000-0000-0000-000000000000
|
||||||
|
password: ${{ steps.acr-token.outputs.token }}
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
> Replace `<registry-name>` with the name of your registry.
|
> Replace `<registry-name>` with the name of your registry.
|
||||||
|
|
||||||
### Google Container Registry (GCR)
|
### Google Container Registry (GCR)
|
||||||
|
|
||||||
> [Google Artifact Registry](#google-artifact-registry-gar) is the evolution of Google Container Registry. As a
|
> [!NOTE]
|
||||||
> fully-managed service with support for both container images and non-container artifacts. If you currently use
|
> [Google Artifact Registry](#google-artifact-registry-gar) is the evolution of
|
||||||
> Google Container Registry, use the information [on this page](https://cloud.google.com/artifact-registry/docs/transition/transition-from-gcr)
|
> Google Container Registry. As a fully-managed service with support for both
|
||||||
|
> container images and non-container artifacts. If you currently use Google
|
||||||
|
> Container Registry, use the information [on this page](https://cloud.google.com/artifact-registry/docs/transition/transition-from-gcr)
|
||||||
> to learn about transitioning to Google Artifact Registry.
|
> to learn about transitioning to Google Artifact Registry.
|
||||||
|
|
||||||
You can use either workload identity federation based keyless authentication or service account based authentication.
|
You can authenticate with workload identity federation or a service account.
|
||||||
|
|
||||||
#### Workload identity federation based authentication
|
#### Workload identity federation
|
||||||
|
|
||||||
Configure the workload identity federation for github actions in gcloud (for steps, [refer here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation)). In the steps, your service account should the ability to push to GCR. Then use google-github-actions/auth action for authentication using workload identity like below:
|
Configure the workload identity federation for GitHub Actions in Google Cloud,
|
||||||
|
[see here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation).
|
||||||
|
Your service account must have permission to push to GCR. Use the
|
||||||
|
`google-github-actions/auth` action to authenticate using workload identity as
|
||||||
|
shown in the following example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -159,33 +256,36 @@ jobs:
|
|||||||
login:
|
login:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- id: 'auth'
|
-
|
||||||
name: 'Authenticate to Google Cloud'
|
name: Authenticate to Google Cloud
|
||||||
uses: 'google-github-actions/auth@v0'
|
id: auth
|
||||||
|
uses: google-github-actions/auth@v3
|
||||||
with:
|
with:
|
||||||
token_format: 'access_token'
|
token_format: access_token
|
||||||
workload_identity_provider: '<workload_identity_provider>'
|
workload_identity_provider: <workload_identity_provider>
|
||||||
service_account: '<service_account>'
|
service_account: <service_account>
|
||||||
|
-
|
||||||
- name: Login to GCR
|
name: Login to GCR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: gcr.io
|
registry: gcr.io
|
||||||
username: oauth2accesstoken
|
username: oauth2accesstoken
|
||||||
password: ${{ steps.auth.outputs.access_token }}
|
password: ${{ steps.auth.outputs.access_token }}
|
||||||
```
|
```
|
||||||
|
|
||||||
> Replace `<workload_identity_provider>` with configured workload identity provider. For steps to configure, [refer here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation).
|
> [!NOTE]
|
||||||
|
> Replace `<workload_identity_provider>` with configured workload identity
|
||||||
> Replace `<service_account>` with configured service account in workload identity provider which has access to push to GCR
|
> provider. For steps to configure, [see here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation).
|
||||||
|
>
|
||||||
|
> Replace `<service_account>` with configured service account in workload
|
||||||
|
> identity provider which has access to push to GCR
|
||||||
|
|
||||||
#### Service account based authentication
|
#### Service account based authentication
|
||||||
|
|
||||||
Use a service account with the ability to push to GCR and [configure access control](https://cloud.google.com/container-registry/docs/access-control).
|
Use a service account with permission to push to GCR and [configure access control](https://cloud.google.com/container-registry/docs/access-control).
|
||||||
Then create and download the JSON key for this service account and save content of `.json` file
|
Download the key for the service account as a JSON file. Save the contents of
|
||||||
[as a secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
the file [as a secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
||||||
called `GCR_JSON_KEY` in your GitHub repo. Ensure you set the username to `_json_key`,
|
named `GCR_JSON_KEY` in your GitHub repository. Set the username to `_json_key`.
|
||||||
or `_json_key_base64` if you use a base64-encoded key.
|
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -200,7 +300,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to GCR
|
name: Login to GCR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: gcr.io
|
registry: gcr.io
|
||||||
username: _json_key
|
username: _json_key
|
||||||
@@ -209,11 +309,13 @@ jobs:
|
|||||||
|
|
||||||
### Google Artifact Registry (GAR)
|
### Google Artifact Registry (GAR)
|
||||||
|
|
||||||
You can use either workload identity federation based keyless authentication or service account based authentication.
|
You can authenticate with workload identity federation or a service account.
|
||||||
|
|
||||||
#### Workload identity federation based authentication
|
#### Workload identity federation
|
||||||
|
|
||||||
Configure the workload identity federation for github actions in gcloud (for steps, [refer here](https://github.com/google-github-actions/auth#setting-up-workload-identity-federation)). In the steps, your service account should the ability to push to GAR. Then use google-github-actions/auth action for authentication using workload identity like below:
|
Your service account must have permission to push to GAR. Use the
|
||||||
|
`google-github-actions/auth` action to authenticate using workload identity as
|
||||||
|
shown in the following example:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -226,34 +328,39 @@ jobs:
|
|||||||
login:
|
login:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- id: 'auth'
|
-
|
||||||
name: 'Authenticate to Google Cloud'
|
name: Authenticate to Google Cloud
|
||||||
uses: 'google-github-actions/auth@v0'
|
id: auth
|
||||||
|
uses: google-github-actions/auth@v3
|
||||||
with:
|
with:
|
||||||
token_format: 'access_token'
|
token_format: access_token
|
||||||
workload_identity_provider: '<workload_identity_provider>'
|
workload_identity_provider: <workload_identity_provider>
|
||||||
service_account: '<service_account>'
|
service_account: <service_account>
|
||||||
|
-
|
||||||
- name: Login to GAR
|
name: Login to GAR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <location>-docker.pkg.dev
|
registry: <location>-docker.pkg.dev
|
||||||
username: oauth2accesstoken
|
username: oauth2accesstoken
|
||||||
password: ${{ steps.auth.outputs.access_token }}
|
password: ${{ steps.auth.outputs.access_token }}
|
||||||
```
|
```
|
||||||
> Replace `<workload_identity_provider>` with configured workload identity provider
|
|
||||||
|
|
||||||
> Replace `<service_account>` with configured service account in workload identity provider which has access to push to GCR
|
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Replace `<workload_identity_provider>` with configured workload identity
|
||||||
|
> provider
|
||||||
|
>
|
||||||
|
> Replace `<service_account>` with configured service account in workload
|
||||||
|
> identity provider which has access to push to GCR
|
||||||
|
>
|
||||||
> Replace `<location>` with the regional or multi-regional [location](https://cloud.google.com/artifact-registry/docs/repo-organize#locations)
|
> Replace `<location>` with the regional or multi-regional [location](https://cloud.google.com/artifact-registry/docs/repo-organize#locations)
|
||||||
> of the repository where the image is stored.
|
> of the repository where the image is stored.
|
||||||
|
|
||||||
#### Service account based authentication
|
#### Service account based authentication
|
||||||
|
|
||||||
Use a service account with the ability to push to GAR and [configure access control](https://cloud.google.com/artifact-registry/docs/access-control).
|
Use a service account with permission to push to GAR and [configure access control](https://cloud.google.com/artifact-registry/docs/access-control).
|
||||||
Then create and download the JSON key for this service account and save content of `.json` file
|
Download the key for the service account as a JSON file. Save the contents of
|
||||||
[as a secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
the file [as a secret](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
||||||
called `GAR_JSON_KEY` in your GitHub repo. Ensure you set the username to `_json_key`,
|
named `GAR_JSON_KEY` in your GitHub repository. Set the username to `_json_key`,
|
||||||
or `_json_key_base64` if you use a base64-encoded key.
|
or `_json_key_base64` if you use a base64-encoded key.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -269,20 +376,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to GAR
|
name: Login to GAR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <location>-docker.pkg.dev
|
registry: <location>-docker.pkg.dev
|
||||||
username: _json_key
|
username: _json_key
|
||||||
password: ${{ secrets.GAR_JSON_KEY }}
|
password: ${{ secrets.GAR_JSON_KEY }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
> Replace `<location>` with the regional or multi-regional [location](https://cloud.google.com/artifact-registry/docs/repo-organize#locations)
|
> Replace `<location>` with the regional or multi-regional [location](https://cloud.google.com/artifact-registry/docs/repo-organize#locations)
|
||||||
> of the repository where the image is stored.
|
> of the repository where the image is stored.
|
||||||
|
|
||||||
### AWS Elastic Container Registry (ECR)
|
### AWS Elastic Container Registry (ECR)
|
||||||
|
|
||||||
Use an IAM user with the ability to [push to ECR with `AmazonEC2ContainerRegistryPowerUser` managed policy for example](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr_managed_policies.html#AmazonEC2ContainerRegistryPowerUser).
|
Use an IAM user with the ability to [push to ECR with `AmazonEC2ContainerRegistryPowerUser` managed policy for example](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser).
|
||||||
Then create and download access keys and save `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` [as secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
Download the access keys and save them as `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` [as secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
||||||
in your GitHub repo.
|
in your GitHub repo.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -298,15 +406,15 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to ECR
|
name: Login to ECR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <aws-account-number>.dkr.ecr.<region>.amazonaws.com
|
registry: <aws-account-number>.dkr.ecr.<region>.amazonaws.com
|
||||||
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
username: ${{ vars.AWS_ACCESS_KEY_ID }}
|
||||||
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you need to log in to Amazon ECR registries associated with other accounts, you can use the `AWS_ACCOUNT_IDS`
|
If you need to log in to Amazon ECR registries associated with other accounts,
|
||||||
environment variable:
|
you can use the `AWS_ACCOUNT_IDS` environment variable:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -321,19 +429,20 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to ECR
|
name: Login to ECR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <aws-account-number>.dkr.ecr.<region>.amazonaws.com
|
registry: <aws-account-number>.dkr.ecr.<region>.amazonaws.com
|
||||||
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
username: ${{ vars.AWS_ACCESS_KEY_ID }}
|
||||||
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
env:
|
env:
|
||||||
AWS_ACCOUNT_IDS: 012345678910,023456789012
|
AWS_ACCOUNT_IDS: 012345678910,023456789012
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
> Only available with [AWS CLI version 1](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login.html)
|
> Only available with [AWS CLI version 1](https://docs.aws.amazon.com/cli/latest/reference/ecr/get-login.html)
|
||||||
|
|
||||||
You can also use the [Configure AWS Credentials](https://github.com/aws-actions/configure-aws-credentials) action in
|
You can also use the [Configure AWS Credentials](https://github.com/aws-actions/configure-aws-credentials)
|
||||||
combination with this action:
|
action in combination with this action:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -348,25 +457,27 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Configure AWS Credentials
|
name: Configure AWS Credentials
|
||||||
uses: aws-actions/configure-aws-credentials@v1
|
uses: aws-actions/configure-aws-credentials@v6
|
||||||
with:
|
with:
|
||||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
aws-access-key-id: ${{ vars.AWS_ACCESS_KEY_ID }}
|
||||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
aws-region: <region>
|
aws-region: <region>
|
||||||
-
|
-
|
||||||
name: Login to ECR
|
name: Login to ECR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <aws-account-number>.dkr.ecr.<region>.amazonaws.com
|
registry: <aws-account-number>.dkr.ecr.<region>.amazonaws.com
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
> Replace `<aws-account-number>` and `<region>` with their respective values.
|
> Replace `<aws-account-number>` and `<region>` with their respective values.
|
||||||
|
|
||||||
### AWS Public Elastic Container Registry (ECR)
|
### AWS Public Elastic Container Registry (ECR)
|
||||||
|
|
||||||
Use an IAM user with the ability to [push to ECR Public with `AmazonElasticContainerRegistryPublicPowerUser` managed policy for example](https://docs.aws.amazon.com/AmazonECR/latest/public/public-ecr-managed-policies.html#AmazonElasticContainerRegistryPublicPowerUser).
|
Use an IAM user with permission to push to ECR Public, for example using [managed policies](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser).
|
||||||
Then create and download access keys and save `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` [as secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
Download the access keys and save them as `AWS_ACCESS_KEY_ID` and
|
||||||
in your GitHub repo.
|
`AWS_SECRET_ACCESS_KEY` [secrets](https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets-for-a-repository)
|
||||||
|
in your GitHub repository.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -381,15 +492,16 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to Public ECR
|
name: Login to Public ECR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: public.ecr.aws
|
registry: public.ecr.aws
|
||||||
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
username: ${{ vars.AWS_ACCESS_KEY_ID }}
|
||||||
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
env:
|
env:
|
||||||
AWS_REGION: <region>
|
AWS_REGION: <region>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
> Replace `<region>` with its respective value (default `us-east-1`).
|
> Replace `<region>` with its respective value (default `us-east-1`).
|
||||||
|
|
||||||
### OCI Oracle Cloud Infrastructure Registry (OCIR)
|
### OCI Oracle Cloud Infrastructure Registry (OCIR)
|
||||||
@@ -415,18 +527,20 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to OCIR
|
name: Login to OCIR
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: <region>.ocir.io
|
registry: <region>.ocir.io
|
||||||
username: ${{ secrets.OCI_USERNAME }}
|
username: ${{ vars.OCI_USERNAME }}
|
||||||
password: ${{ secrets.OCI_TOKEN }}
|
password: ${{ secrets.OCI_TOKEN }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
> Replace `<region>` with their respective values from [availability regions](https://docs.cloud.oracle.com/iaas/Content/Registry/Concepts/registryprerequisites.htm#Availab)
|
> Replace `<region>` with their respective values from [availability regions](https://docs.cloud.oracle.com/iaas/Content/Registry/Concepts/registryprerequisites.htm#Availab)
|
||||||
|
|
||||||
### Quay.io
|
### Quay.io
|
||||||
|
|
||||||
Use a [Robot account](https://docs.quay.io/glossary/robot-accounts.html) with the ability to push to a public/private Quay.io repository.
|
Use a [Robot account](https://docs.quay.io/glossary/robot-accounts.html) with
|
||||||
|
permission to push to a Quay.io repository.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
name: ci
|
name: ci
|
||||||
@@ -441,39 +555,214 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
-
|
-
|
||||||
name: Login to Quay.io
|
name: Login to Quay.io
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v4
|
||||||
with:
|
with:
|
||||||
registry: quay.io
|
registry: quay.io
|
||||||
username: ${{ secrets.QUAY_USERNAME }}
|
username: ${{ vars.QUAY_USERNAME }}
|
||||||
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### DigitalOcean Container Registry
|
||||||
|
|
||||||
|
Use your DigitalOcean registered email address and an API access token to authenticate.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to DigitalOcean Container Registry
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: registry.digitalocean.com
|
||||||
|
username: ${{ vars.DIGITALOCEAN_USERNAME }}
|
||||||
|
password: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Authenticate to multiple registries
|
||||||
|
|
||||||
|
To authenticate against multiple registries, you can specify the login-action
|
||||||
|
step multiple times in your workflow:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
-
|
||||||
|
name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also use the `registry-auth` input for raw authentication to
|
||||||
|
registries, defined as YAML objects. Each object have the same attributes as
|
||||||
|
current inputs (except `logout`):
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> We don't recommend using this method, it's better to use the action multiple
|
||||||
|
> times as shown above.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to registries
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
registry-auth: |
|
||||||
|
- username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
Docker Hub OIDC can also be used with `registry-auth`. Grant `id-token: write`,
|
||||||
|
set `DOCKERHUB_OIDC_CONNECTIONID`, pass the Docker Hub organization name as
|
||||||
|
`username`, and omit `password` for the Docker Hub object:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to registries
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
env:
|
||||||
|
DOCKERHUB_OIDC_CONNECTIONID: ${{ vars.DOCKERHUB_OIDC_CONNECTIONID }}
|
||||||
|
with:
|
||||||
|
registry-auth: |
|
||||||
|
- username: ${{ vars.DOCKERHUB_ORGANIZATION }}
|
||||||
|
- registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Set scopes for the authentication token
|
||||||
|
|
||||||
|
The `scope` input allows limiting registry credentials to a specific repository
|
||||||
|
or namespace scope when building images with Buildx.
|
||||||
|
|
||||||
|
This is useful in GitHub Actions to avoid overriding the Docker Hub
|
||||||
|
authentication token embedded in GitHub-hosted runners, which is used for
|
||||||
|
pulling images without rate limits. By scoping credentials, you can
|
||||||
|
authenticate only where needed (typically for pushing), while keeping
|
||||||
|
unauthenticated pulls for base images.
|
||||||
|
|
||||||
|
When `scope` is set, credentials are written to the Buildx configuration
|
||||||
|
instead of the global Docker configuration. This means:
|
||||||
|
* Authentication applies only to the specified scope
|
||||||
|
* The default Docker Hub credentials remain available for pulls
|
||||||
|
* Credentials are used only by Buildx during the build
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> Credentials written to the Buildx configuration are only accessible by Buildx.
|
||||||
|
> They are not available to `docker pull`, `docker push`, or any other Docker
|
||||||
|
> CLI commands outside Buildx.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> This feature requires Buildx version 0.31.0 or later.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
login:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name: Login to Docker Hub (scoped)
|
||||||
|
uses: docker/login-action@v4
|
||||||
|
with:
|
||||||
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
scope: 'myorg/myimage@push'
|
||||||
|
-
|
||||||
|
name: Build and push
|
||||||
|
uses: docker/build-push-action@v7
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
tags: myorg/myimage:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, base images are pulled using the embedded GitHub-hosted runner
|
||||||
|
credentials, while authenticated access is used only to push `myorg/myimage`.
|
||||||
|
|
||||||
## Customizing
|
## Customizing
|
||||||
|
|
||||||
### inputs
|
### inputs
|
||||||
|
|
||||||
Following inputs can be used as `step.with` keys
|
The following inputs can be used as `step.with` keys:
|
||||||
|
|
||||||
| Name | Type | Default | Description |
|
| Name | Type | Default | Description |
|
||||||
|------------------|---------|-----------------------------|------------------------------------|
|
|-----------------|--------|-------------|-------------------------------------------------------------------------------|
|
||||||
| `registry` | String | | Server address of Docker registry. If not set then will default to Docker Hub |
|
| `registry` | String | `docker.io` | Server address of Docker registry. If not set then will default to Docker Hub |
|
||||||
| `username` | String | | Username used to log against the Docker registry |
|
| `username` | String | | Username for authenticating to the Docker registry |
|
||||||
| `password` | String | | Password or personal access token used to log against the Docker registry |
|
| `password` | String | | Password or personal access token for authenticating the Docker registry |
|
||||||
|
| `scope` | String | | Scope for the authentication token |
|
||||||
| `ecr` | String | `auto` | Specifies whether the given registry is ECR (`auto`, `true` or `false`) |
|
| `ecr` | String | `auto` | Specifies whether the given registry is ECR (`auto`, `true` or `false`) |
|
||||||
| `logout` | Bool | `true` | Log out from the Docker registry at the end of a job |
|
| `logout` | Bool | `true` | Log out from the Docker registry at the end of a job |
|
||||||
|
| `registry-auth` | YAML | | Raw authentication to registries, defined as YAML objects |
|
||||||
|
|
||||||
## Keep up-to-date with GitHub Dependabot
|
> [!NOTE]
|
||||||
|
> The `registry-auth` input cannot be used with other inputs except `logout`.
|
||||||
|
|
||||||
Since [Dependabot](https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-github-dependabot)
|
### environment variables
|
||||||
has [native GitHub Actions support](https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem),
|
|
||||||
to enable it on your GitHub repo all you need to do is add the `.github/dependabot.yml` file:
|
|
||||||
|
|
||||||
```yaml
|
The following environment variables can be set as `step.env` keys:
|
||||||
version: 2
|
|
||||||
updates:
|
| Name | Type | Default | Description |
|
||||||
# Maintain dependencies for GitHub Actions
|
|-------------------------------|--------|---------|----------------------------------------------------------------------------------------------------|
|
||||||
- package-ecosystem: "github-actions"
|
| `DOCKERHUB_OIDC_CONNECTIONID` | String | | Docker Hub OIDC connection ID. Required for Docker Hub OIDC login |
|
||||||
directory: "/"
|
| `DOCKERHUB_OIDC_EXPIREIN` | Number | `300` | Docker Hub OIDC token lifetime in seconds. Must be between `300` (5 minutes) and `21600` (6 hours) |
|
||||||
schedule:
|
|
||||||
interval: "daily"
|
## Contributing
|
||||||
```
|
|
||||||
|
Want to contribute? Awesome! You can find information about contributing to
|
||||||
|
this project in the [CONTRIBUTING.md](/.github/CONTRIBUTING.md)
|
||||||
+28
-14
@@ -1,5 +1,7 @@
|
|||||||
|
import {beforeEach, describe, expect, test, vi} from 'vitest';
|
||||||
import {AuthorizationData} from '@aws-sdk/client-ecr';
|
import {AuthorizationData} from '@aws-sdk/client-ecr';
|
||||||
import * as aws from '../src/aws';
|
|
||||||
|
import * as aws from '../src/aws.js';
|
||||||
|
|
||||||
describe('isECR', () => {
|
describe('isECR', () => {
|
||||||
test.each([
|
test.each([
|
||||||
@@ -8,7 +10,10 @@ describe('isECR', () => {
|
|||||||
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', true],
|
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', true],
|
||||||
['876820548815.dkr.ecr.cn-north-1.amazonaws.com.cn', true],
|
['876820548815.dkr.ecr.cn-north-1.amazonaws.com.cn', true],
|
||||||
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', true],
|
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', true],
|
||||||
['public.ecr.aws', true]
|
['012345678901.dkr-ecr.eu-north-1.on.aws', true],
|
||||||
|
['012345678901.dkr.ecr.eusc-de-east-1.amazonaws.eu', true],
|
||||||
|
['public.ecr.aws', true],
|
||||||
|
['ecr-public.aws.com', true]
|
||||||
])('given registry %p', async (registry, expected) => {
|
])('given registry %p', async (registry, expected) => {
|
||||||
expect(aws.isECR(registry)).toEqual(expected);
|
expect(aws.isECR(registry)).toEqual(expected);
|
||||||
});
|
});
|
||||||
@@ -21,7 +26,10 @@ describe('isPubECR', () => {
|
|||||||
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', false],
|
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', false],
|
||||||
['876820548815.dkr.ecr.cn-north-1.amazonaws.com.cn', false],
|
['876820548815.dkr.ecr.cn-north-1.amazonaws.com.cn', false],
|
||||||
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', false],
|
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', false],
|
||||||
['public.ecr.aws', true]
|
['012345678901.dkr-ecr.eu-north-1.on.aws', false],
|
||||||
|
['012345678901.dkr.ecr.eusc-de-east-1.amazonaws.eu', false],
|
||||||
|
['public.ecr.aws', true],
|
||||||
|
['ecr-public.aws.com', true]
|
||||||
])('given registry %p', async (registry, expected) => {
|
])('given registry %p', async (registry, expected) => {
|
||||||
expect(aws.isPubECR(registry)).toEqual(expected);
|
expect(aws.isPubECR(registry)).toEqual(expected);
|
||||||
});
|
});
|
||||||
@@ -32,6 +40,8 @@ describe('getRegion', () => {
|
|||||||
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', 'eu-west-3'],
|
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', 'eu-west-3'],
|
||||||
['876820548815.dkr.ecr.cn-north-1.amazonaws.com.cn', 'cn-north-1'],
|
['876820548815.dkr.ecr.cn-north-1.amazonaws.com.cn', 'cn-north-1'],
|
||||||
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', 'cn-northwest-1'],
|
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', 'cn-northwest-1'],
|
||||||
|
['012345678901.dkr-ecr.eu-north-1.on.aws', 'eu-north-1'],
|
||||||
|
['012345678901.dkr.ecr.eusc-de-east-1.amazonaws.eu', 'eusc-de-east-1'],
|
||||||
['public.ecr.aws', 'us-east-1']
|
['public.ecr.aws', 'us-east-1']
|
||||||
])('given registry %p', async (registry, expected) => {
|
])('given registry %p', async (registry, expected) => {
|
||||||
expect(aws.getRegion(registry)).toEqual(expected);
|
expect(aws.getRegion(registry)).toEqual(expected);
|
||||||
@@ -44,6 +54,8 @@ describe('getAccountIDs', () => {
|
|||||||
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', '012345678910,023456789012', ['012345678901', '012345678910', '023456789012']],
|
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', '012345678910,023456789012', ['012345678901', '012345678910', '023456789012']],
|
||||||
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', '012345678901,012345678910,023456789012', ['012345678901', '012345678910', '023456789012']],
|
['012345678901.dkr.ecr.eu-west-3.amazonaws.com', '012345678901,012345678910,023456789012', ['012345678901', '012345678910', '023456789012']],
|
||||||
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', '012345678910,023456789012', ['390948362332', '012345678910', '023456789012']],
|
['390948362332.dkr.ecr.cn-northwest-1.amazonaws.com.cn', '012345678910,023456789012', ['390948362332', '012345678910', '023456789012']],
|
||||||
|
['876820548815.dkr-ecr.eu-north-1.on.aws', '012345678910,023456789012', ['876820548815', '012345678910', '023456789012']],
|
||||||
|
['012345678901.dkr.ecr.eusc-de-east-1.amazonaws.eu', '012345678910,023456789012', ['012345678901', '012345678910', '023456789012']],
|
||||||
['public.ecr.aws', undefined, []]
|
['public.ecr.aws', undefined, []]
|
||||||
])('given registry %p', async (registry, accountIDsEnv, expected) => {
|
])('given registry %p', async (registry, accountIDsEnv, expected) => {
|
||||||
if (accountIDsEnv) {
|
if (accountIDsEnv) {
|
||||||
@@ -53,26 +65,28 @@ describe('getAccountIDs', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const mockEcrGetAuthToken = jest.fn();
|
const mockEcrGetAuthToken = vi.fn();
|
||||||
const mockEcrPublicGetAuthToken = jest.fn();
|
const mockEcrPublicGetAuthToken = vi.fn();
|
||||||
jest.mock('@aws-sdk/client-ecr', () => {
|
vi.mock('@aws-sdk/client-ecr', () => {
|
||||||
|
class ECR {
|
||||||
|
getAuthorizationToken = mockEcrGetAuthToken;
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
ECR: jest.fn(() => ({
|
ECR
|
||||||
getAuthorizationToken: mockEcrGetAuthToken
|
|
||||||
}))
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
jest.mock('@aws-sdk/client-ecr-public', () => {
|
vi.mock('@aws-sdk/client-ecr-public', () => {
|
||||||
|
class ECRPUBLIC {
|
||||||
|
getAuthorizationToken = mockEcrPublicGetAuthToken;
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
ECRPUBLIC: jest.fn(() => ({
|
ECRPUBLIC
|
||||||
getAuthorizationToken: mockEcrPublicGetAuthToken
|
|
||||||
}))
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('getRegistriesData', () => {
|
describe('getRegistriesData', () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jest.clearAllMocks();
|
vi.clearAllMocks();
|
||||||
delete process.env.AWS_ACCOUNT_IDS;
|
delete process.env.AWS_ACCOUNT_IDS;
|
||||||
});
|
});
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
|
|||||||
+202
-2
@@ -1,4 +1,18 @@
|
|||||||
import {getInputs} from '../src/context';
|
import {afterEach, expect, test, vi} from 'vitest';
|
||||||
|
import * as path from 'path';
|
||||||
|
|
||||||
|
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
|
||||||
|
|
||||||
|
import {getAuthList, getInputs, scopeToConfigDir} from '../src/context.js';
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
vi.restoreAllMocks();
|
||||||
|
for (const key of Object.keys(process.env)) {
|
||||||
|
if (key.startsWith('INPUT_')) {
|
||||||
|
delete process.env[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
test('with password and username getInputs does not throw error', async () => {
|
test('with password and username getInputs does not throw error', async () => {
|
||||||
process.env['INPUT_USERNAME'] = 'dbowie';
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
@@ -6,5 +20,191 @@ test('with password and username getInputs does not throw error', async () => {
|
|||||||
process.env['INPUT_LOGOUT'] = 'true';
|
process.env['INPUT_LOGOUT'] = 'true';
|
||||||
expect(() => {
|
expect(() => {
|
||||||
getInputs();
|
getInputs();
|
||||||
}).not.toThrowError();
|
}).not.toThrow();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList uses the default Docker Hub registry when computing scoped config dir', async () => {
|
||||||
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
|
process.env['INPUT_PASSWORD'] = 'groundcontrol';
|
||||||
|
process.env['INPUT_SCOPE'] = 'myscope';
|
||||||
|
process.env['INPUT_LOGOUT'] = 'false';
|
||||||
|
const [auth] = getAuthList(getInputs());
|
||||||
|
expect(auth).toMatchObject({
|
||||||
|
registry: 'docker.io',
|
||||||
|
configDir: path.join(Buildx.configDir, 'config', 'registry-1.docker.io', 'myscope')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList supports @ scopes appended to the registry config dir', async () => {
|
||||||
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
|
process.env['INPUT_PASSWORD'] = 'groundcontrol';
|
||||||
|
process.env['INPUT_SCOPE'] = '@push';
|
||||||
|
process.env['INPUT_LOGOUT'] = 'false';
|
||||||
|
const [auth] = getAuthList(getInputs());
|
||||||
|
expect(auth).toMatchObject({
|
||||||
|
configDir: path.join(Buildx.configDir, 'config', 'registry-1.docker.io') + '@push'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList supports repository scopes with appended actions', async () => {
|
||||||
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
|
process.env['INPUT_PASSWORD'] = 'groundcontrol';
|
||||||
|
process.env['INPUT_SCOPE'] = 'docker/buildx-bin@push';
|
||||||
|
process.env['INPUT_LOGOUT'] = 'false';
|
||||||
|
const [auth] = getAuthList(getInputs());
|
||||||
|
expect(auth).toMatchObject({
|
||||||
|
configDir: path.join(Buildx.configDir, 'config', 'registry-1.docker.io', 'docker', 'buildx-bin@push')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList supports comma-separated scope actions', async () => {
|
||||||
|
process.env['INPUT_USERNAME'] = 'dbowie';
|
||||||
|
process.env['INPUT_PASSWORD'] = 'groundcontrol';
|
||||||
|
process.env['INPUT_SCOPE'] = 'docker/buildx-bin@pull,push';
|
||||||
|
process.env['INPUT_LOGOUT'] = 'false';
|
||||||
|
const [auth] = getAuthList(getInputs());
|
||||||
|
expect(auth).toMatchObject({
|
||||||
|
configDir: path.join(Buildx.configDir, 'config', 'registry-1.docker.io', 'docker', 'buildx-bin@pull,push')
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
test.each([
|
||||||
|
'../../../../work/leaked',
|
||||||
|
'..',
|
||||||
|
'foo/../../../../etc',
|
||||||
|
'@../../../leaked',
|
||||||
|
'foo/bar@../../../leaked',
|
||||||
|
'@push@pull',
|
||||||
|
'foo/bar@push@pull',
|
||||||
|
'@push,',
|
||||||
|
'@,push',
|
||||||
|
'@pull,,push',
|
||||||
|
'@Push',
|
||||||
|
path.join(path.parse(Buildx.configDir).root, 'work', 'leaked')
|
||||||
|
])('getAuthList rejects unsafe or unsupported scope path: %s', async scope => {
|
||||||
|
expect(() => {
|
||||||
|
getAuthList({
|
||||||
|
registry: '',
|
||||||
|
username: 'dbowie',
|
||||||
|
password: 'groundcontrol',
|
||||||
|
scope,
|
||||||
|
ecr: '',
|
||||||
|
logout: false,
|
||||||
|
registryAuth: ''
|
||||||
|
});
|
||||||
|
}).toThrow(/Invalid scope/);
|
||||||
|
});
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
test.each([
|
||||||
|
'../../../../work/leaked',
|
||||||
|
'..',
|
||||||
|
'foo/../../../../etc',
|
||||||
|
path.join(path.parse(Buildx.configDir).root, 'work', 'leaked')
|
||||||
|
])('getAuthList rejects unsafe registry path: %s', async registry => {
|
||||||
|
expect(() => {
|
||||||
|
getAuthList({
|
||||||
|
registry,
|
||||||
|
username: 'dbowie',
|
||||||
|
password: 'groundcontrol',
|
||||||
|
scope: '@push',
|
||||||
|
ecr: '',
|
||||||
|
logout: false,
|
||||||
|
registryAuth: ''
|
||||||
|
});
|
||||||
|
}).toThrow(/Invalid registry/);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList skips secret masking when registry-auth password is absent', async () => {
|
||||||
|
const stdoutWriteSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
||||||
|
const [auth] = getAuthList({
|
||||||
|
registry: '',
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
scope: '',
|
||||||
|
ecr: '',
|
||||||
|
logout: true,
|
||||||
|
registryAuth: '- registry: public.ecr.aws\n'
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(stdoutWriteSpy.mock.calls.map(call => call[0]).join('')).not.toContain('::add-mask::');
|
||||||
|
expect(auth).toMatchObject({
|
||||||
|
registry: 'public.ecr.aws',
|
||||||
|
ecr: 'auto'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList supports password-less Docker Hub registry-auth for OIDC', async () => {
|
||||||
|
const [auth] = getAuthList({
|
||||||
|
registry: '',
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
scope: '',
|
||||||
|
ecr: '',
|
||||||
|
logout: true,
|
||||||
|
registryAuth: '- username: docker-org\n'
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(auth).toMatchObject({
|
||||||
|
registry: 'docker.io',
|
||||||
|
username: 'docker-org',
|
||||||
|
password: undefined,
|
||||||
|
ecr: 'auto'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('getAuthList masks registry-auth password when present', async () => {
|
||||||
|
const stdoutWriteSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
||||||
|
getAuthList({
|
||||||
|
registry: '',
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
scope: '',
|
||||||
|
ecr: '',
|
||||||
|
logout: true,
|
||||||
|
registryAuth: '- registry: ghcr.io\n username: dbowie\n password: groundcontrol\n'
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(stdoutWriteSpy.mock.calls.map(call => call[0]).join('')).toContain('::add-mask::groundcontrol');
|
||||||
|
});
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
test.each([
|
||||||
|
['false', 'false'],
|
||||||
|
['"false"', 'false'],
|
||||||
|
['true', 'true'],
|
||||||
|
['auto', 'auto'],
|
||||||
|
['""', 'auto']
|
||||||
|
])('getAuthList normalizes registry-auth ecr: %s', (ecr, expected) => {
|
||||||
|
const [auth] = getAuthList({
|
||||||
|
registry: '',
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
scope: '',
|
||||||
|
ecr: '',
|
||||||
|
logout: true,
|
||||||
|
registryAuth: `- registry: 012345678910.dkr.ecr.eu-west-3.amazonaws.com\n username: AWS\n password: token\n ecr: ${ecr}\n`
|
||||||
|
});
|
||||||
|
expect(auth.ecr).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
// prettier-ignore
|
||||||
|
test.each([
|
||||||
|
['ghcr.io', 'ghcr.io'],
|
||||||
|
['ghcr.io/', 'ghcr.io'],
|
||||||
|
['https://ghcr.io', 'ghcr.io'],
|
||||||
|
['https://ghcr.io/', 'ghcr.io'],
|
||||||
|
['https://ghcr.io/v2/', 'ghcr.io'],
|
||||||
|
['http://localhost:5000', 'localhost:5000'],
|
||||||
|
['http://localhost:80', 'localhost:80'],
|
||||||
|
['https://ghcr.io:443', 'ghcr.io:443'],
|
||||||
|
['https://012345678910.dkr.ecr.eu-west-3.amazonaws.com', '012345678910.dkr.ecr.eu-west-3.amazonaws.com'],
|
||||||
|
['https://docker.io', 'registry-1.docker.io']
|
||||||
|
])('scopeToConfigDir uses the registry host for %s', (registry, host) => {
|
||||||
|
expect(scopeToConfigDir(registry, 'myorg/myimage@push')).toBe(path.join(Buildx.configDir, 'config', host, 'myorg', 'myimage') + '@push');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('scopeToConfigDir rejects a URL whose host escapes the config directory', () => {
|
||||||
|
expect(() => scopeToConfigDir('https://../', '@push')).toThrow(/Invalid registry/);
|
||||||
});
|
});
|
||||||
+101
-26
@@ -1,49 +1,124 @@
|
|||||||
import {loginStandard, logout} from '../src/docker';
|
import {afterEach, expect, test, vi} from 'vitest';
|
||||||
|
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
|
||||||
import * as exec from '@actions/exec';
|
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
|
||||||
|
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
|
||||||
|
|
||||||
process.env['RUNNER_TEMP'] = path.join(__dirname, 'runner');
|
import * as aws from '../src/aws.js';
|
||||||
|
import {getAuthList} from '../src/context.js';
|
||||||
|
import {login, loginECR, loginStandard, logout} from '../src/docker.js';
|
||||||
|
import * as dockerhub from '../src/dockerhub.js';
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
vi.restoreAllMocks();
|
||||||
|
delete process.env.DOCKERHUB_OIDC_CONNECTIONID;
|
||||||
|
});
|
||||||
|
|
||||||
test('loginStandard calls exec', async () => {
|
test('loginStandard calls exec', async () => {
|
||||||
const execSpy: jest.SpyInstance = jest.spyOn(exec, 'getExecOutput');
|
const execSpy = vi.spyOn(Docker, 'getExecOutput').mockImplementation(async () => {
|
||||||
execSpy.mockImplementation(() =>
|
return {
|
||||||
Promise.resolve({
|
|
||||||
exitCode: expect.any(Number),
|
exitCode: expect.any(Number),
|
||||||
stdout: expect.any(Function),
|
stdout: expect.any(Function),
|
||||||
stderr: expect.any(Function)
|
stderr: expect.any(Function)
|
||||||
})
|
};
|
||||||
);
|
});
|
||||||
|
|
||||||
const username: string = 'dbowie';
|
const username = 'dbowie';
|
||||||
const password: string = 'groundcontrol';
|
const password = 'groundcontrol';
|
||||||
const registry: string = 'https://ghcr.io';
|
const registry = 'https://ghcr.io';
|
||||||
|
|
||||||
await loginStandard(registry, username, password);
|
await loginStandard(registry, username, password);
|
||||||
|
|
||||||
expect(execSpy).toHaveBeenCalledWith(`docker`, ['login', '--password-stdin', '--username', username, registry], {
|
expect(execSpy).toHaveBeenCalledTimes(1);
|
||||||
|
const callfunc = execSpy.mock.calls[0];
|
||||||
|
if (callfunc && callfunc[1]) {
|
||||||
|
// we don't want to check env opt
|
||||||
|
callfunc[1].env = undefined;
|
||||||
|
}
|
||||||
|
expect(execSpy).toHaveBeenCalledWith(['login', '--password-stdin', '--username', username, registry], {
|
||||||
input: Buffer.from(password),
|
input: Buffer.from(password),
|
||||||
silent: true,
|
silent: true,
|
||||||
ignoreReturnCode: true
|
ignoreReturnCode: true
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('logout calls exec', async () => {
|
test('login exchanges Docker Hub OIDC token for password-less auth', async () => {
|
||||||
const execSpy: jest.SpyInstance = jest.spyOn(exec, 'getExecOutput');
|
process.env.DOCKERHUB_OIDC_CONNECTIONID = '123e4567-e89b-42d3-a456-426614174000';
|
||||||
execSpy.mockImplementation(() =>
|
const execSpy = vi.spyOn(Docker, 'getExecOutput').mockImplementation(async () => {
|
||||||
Promise.resolve({
|
return {
|
||||||
exitCode: expect.any(Number),
|
exitCode: 0,
|
||||||
stdout: expect.any(Function),
|
stdout: '',
|
||||||
stderr: expect.any(Function)
|
stderr: ''
|
||||||
})
|
};
|
||||||
);
|
});
|
||||||
|
const oidcSpy = vi.spyOn(dockerhub, 'getOIDCToken').mockResolvedValue({
|
||||||
|
username: 'docker-org',
|
||||||
|
token: 'hub-token'
|
||||||
|
});
|
||||||
|
|
||||||
const registry: string = 'https://ghcr.io';
|
await login({
|
||||||
|
registry: 'docker.io',
|
||||||
|
username: 'docker-org',
|
||||||
|
password: '',
|
||||||
|
scope: '',
|
||||||
|
ecr: 'auto',
|
||||||
|
configDir: ''
|
||||||
|
});
|
||||||
|
|
||||||
await logout(registry);
|
expect(oidcSpy).toHaveBeenCalledWith('docker.io', 'docker-org');
|
||||||
|
expect(execSpy).toHaveBeenCalledWith(['login', '--password-stdin', '--username', 'docker-org', 'docker.io'], {
|
||||||
expect(execSpy).toHaveBeenCalledWith(`docker`, ['logout', registry], {
|
input: Buffer.from('hub-token'),
|
||||||
|
silent: true,
|
||||||
ignoreReturnCode: true
|
ignoreReturnCode: true
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('logout calls exec', async () => {
|
||||||
|
const execSpy = vi.spyOn(Docker, 'getExecOutput').mockImplementation(async () => {
|
||||||
|
return {
|
||||||
|
exitCode: expect.any(Number),
|
||||||
|
stdout: expect.any(Function),
|
||||||
|
stderr: expect.any(Function)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const registry = 'https://ghcr.io';
|
||||||
|
|
||||||
|
await logout(registry, '');
|
||||||
|
|
||||||
|
expect(execSpy).toHaveBeenCalledTimes(1);
|
||||||
|
const callfunc = execSpy.mock.calls[0];
|
||||||
|
if (callfunc && callfunc[1]) {
|
||||||
|
// we don't want to check env opt
|
||||||
|
callfunc[1].env = undefined;
|
||||||
|
}
|
||||||
|
expect(execSpy).toHaveBeenCalledWith(['logout', registry], {
|
||||||
|
ignoreReturnCode: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('loginECR and logout use the config dir of the registry host', async () => {
|
||||||
|
const execSpy = vi.spyOn(Docker, 'getExecOutput').mockResolvedValue({
|
||||||
|
exitCode: 0,
|
||||||
|
stdout: '',
|
||||||
|
stderr: ''
|
||||||
|
});
|
||||||
|
const registry = '012345678910.dkr.ecr.eu-west-3.amazonaws.com';
|
||||||
|
vi.spyOn(aws, 'getRegistriesData').mockResolvedValue([
|
||||||
|
{
|
||||||
|
registry: `https://${registry}`,
|
||||||
|
username: 'AWS',
|
||||||
|
password: 'world'
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
const scope = 'myapp@push';
|
||||||
|
const [auth] = getAuthList({registry, username: 'CAFEBABE', password: 'DEADBEEF', scope, ecr: 'auto', logout: true, registryAuth: ''});
|
||||||
|
await loginECR(auth.registry, auth.username, auth.password, auth.scope);
|
||||||
|
await logout(auth.registry, auth.configDir);
|
||||||
|
|
||||||
|
const expectedConfigDir = path.join(Buildx.configDir, 'config', registry, 'myapp@push');
|
||||||
|
expect(execSpy).toHaveBeenCalledTimes(2);
|
||||||
|
expect(execSpy.mock.calls[0][1]?.env?.DOCKER_CONFIG).toBe(expectedConfigDir);
|
||||||
|
expect(execSpy.mock.calls[1][1]?.env?.DOCKER_CONFIG).toBe(expectedConfigDir);
|
||||||
|
});
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
import * as core from '@actions/core';
|
||||||
|
import * as httpm from '@actions/http-client';
|
||||||
|
import {beforeEach, describe, expect, test, vi} from 'vitest';
|
||||||
|
|
||||||
|
import * as dockerhub from '../src/dockerhub.js';
|
||||||
|
|
||||||
|
vi.mock('@actions/core', () => ({
|
||||||
|
debug: vi.fn(),
|
||||||
|
getIDToken: vi.fn(),
|
||||||
|
info: vi.fn(),
|
||||||
|
setSecret: vi.fn()
|
||||||
|
}));
|
||||||
|
|
||||||
|
const validConnectionID = '123e4567-e89b-42d3-a456-426614174000';
|
||||||
|
|
||||||
|
const httpResponse = (statusCode: number, body: string, headers: Record<string, string> = {}): httpm.HttpClientResponse => {
|
||||||
|
return {
|
||||||
|
message: {
|
||||||
|
statusCode,
|
||||||
|
headers
|
||||||
|
},
|
||||||
|
readBody: vi.fn(async () => body)
|
||||||
|
} as unknown as httpm.HttpClientResponse;
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('isDockerHubOIDC', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
delete process.env.DOCKERHUB_OIDC_CONNECTIONID;
|
||||||
|
});
|
||||||
|
|
||||||
|
test.each(['', 'docker.io', 'registry-1.docker.io', 'registry-1-stage.docker.io'])('detects Docker Hub registry %p with empty password', registry => {
|
||||||
|
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
|
||||||
|
expect(dockerhub.isDockerHubOIDC(registry, '')).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('requires connection ID env var', () => {
|
||||||
|
expect(dockerhub.isDockerHubOIDC('docker.io', '')).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('requires empty password', () => {
|
||||||
|
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
|
||||||
|
expect(dockerhub.isDockerHubOIDC('docker.io', 'groundcontrol')).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('ignores non-Docker Hub registries', () => {
|
||||||
|
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
|
||||||
|
expect(dockerhub.isDockerHubOIDC('ghcr.io', '')).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('getOIDCToken', () => {
|
||||||
|
const getIDTokenMock = vi.mocked(core.getIDToken);
|
||||||
|
const setSecretMock = vi.mocked(core.setSecret);
|
||||||
|
let postSpy: ReturnType<typeof vi.spyOn>;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
process.env.DOCKERHUB_OIDC_CONNECTIONID = validConnectionID;
|
||||||
|
delete process.env.DOCKERHUB_OIDC_EXPIREIN;
|
||||||
|
getIDTokenMock.mockResolvedValue('github-id-token');
|
||||||
|
postSpy = vi.spyOn(httpm.HttpClient.prototype, 'post').mockResolvedValue(httpResponse(200, JSON.stringify({access_token: 'hub-token'})));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('exchanges GitHub OIDC token for Docker Hub token', async () => {
|
||||||
|
const credentials = await dockerhub.getOIDCToken('docker.io', 'dbowie');
|
||||||
|
|
||||||
|
expect(credentials).toEqual({
|
||||||
|
username: 'dbowie',
|
||||||
|
token: 'hub-token'
|
||||||
|
});
|
||||||
|
expect(getIDTokenMock).toHaveBeenCalledWith('https://identity.docker.com');
|
||||||
|
expect(postSpy).toHaveBeenCalledTimes(1);
|
||||||
|
expect(postSpy.mock.calls[0][0]).toBe('https://identity.docker.com/oauth/token');
|
||||||
|
|
||||||
|
const http = postSpy.mock.contexts[0] as httpm.HttpClient;
|
||||||
|
expect(http.userAgent).toBe('github.com/docker/login-action');
|
||||||
|
expect(http.requestOptions?.headers).toEqual({
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
});
|
||||||
|
|
||||||
|
const body = new URLSearchParams(postSpy.mock.calls[0][1]);
|
||||||
|
expect(body.get('grant_type')).toBe('urn:ietf:params:oauth:grant-type:token-exchange');
|
||||||
|
expect(body.get('subject_token_type')).toBe('urn:ietf:params:oauth:token-type:id_token');
|
||||||
|
expect(body.get('subject_token')).toBe('github-id-token');
|
||||||
|
expect(body.get('connection_id')).toBe(validConnectionID);
|
||||||
|
expect(body.get('expires_in')).toBe('300');
|
||||||
|
expect(setSecretMock).toHaveBeenCalledWith('hub-token');
|
||||||
|
expect(core.info).toHaveBeenCalledWith('Docker Hub OIDC detected for docker.io');
|
||||||
|
expect(core.info).toHaveBeenCalledWith('Retrieving GitHub OIDC token for Docker Hub');
|
||||||
|
expect(core.info).toHaveBeenCalledWith('Exchanging GitHub OIDC token for Docker Hub token');
|
||||||
|
expect(core.info).toHaveBeenCalledWith('Docker Hub OIDC token exchange succeeded');
|
||||||
|
expect(core.debug).toHaveBeenCalledWith('Docker Hub OIDC token audience: https://identity.docker.com');
|
||||||
|
expect(core.debug).toHaveBeenCalledWith('Docker Hub OIDC token expiration: 300s');
|
||||||
|
expect(core.debug).toHaveBeenCalledWith('Sending Docker Hub OIDC token request to https://identity.docker.com/oauth/token');
|
||||||
|
expect(core.debug).toHaveBeenCalledWith('Docker Hub OIDC token request returned status code 200');
|
||||||
|
expect(core.debug).toHaveBeenCalledWith('Docker Hub OIDC token response status code: 200');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('uses custom token expiration', async () => {
|
||||||
|
process.env.DOCKERHUB_OIDC_EXPIREIN = '21600';
|
||||||
|
await dockerhub.getOIDCToken('docker.io', 'dbowie');
|
||||||
|
const body = new URLSearchParams(postSpy.mock.calls[0][1]);
|
||||||
|
expect(body.get('expires_in')).toBe('21600');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('uses stage identity host for stage registry', async () => {
|
||||||
|
await dockerhub.getOIDCToken('registry-1-stage.docker.io', 'dbowie');
|
||||||
|
expect(getIDTokenMock).toHaveBeenCalledWith('https://identity-stage.docker.com');
|
||||||
|
expect(postSpy.mock.calls[0][0]).toBe('https://identity-stage.docker.com/oauth/token');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('requires connection ID env var', async () => {
|
||||||
|
delete process.env.DOCKERHUB_OIDC_CONNECTIONID;
|
||||||
|
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('DOCKERHUB_OIDC_CONNECTIONID is required for Docker Hub OIDC login');
|
||||||
|
expect(getIDTokenMock).not.toHaveBeenCalled();
|
||||||
|
expect(postSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('validates connection ID', async () => {
|
||||||
|
process.env.DOCKERHUB_OIDC_CONNECTIONID = 'not-a-uuid';
|
||||||
|
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('Invalid DOCKERHUB_OIDC_CONNECTIONID. Must be a valid UUID.');
|
||||||
|
expect(getIDTokenMock).not.toHaveBeenCalled();
|
||||||
|
expect(postSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
test.each(['not-a-number', '299', '21601'])('validates token expiration %p', async expiresIn => {
|
||||||
|
process.env.DOCKERHUB_OIDC_EXPIREIN = expiresIn;
|
||||||
|
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow(`Invalid DOCKERHUB_OIDC_EXPIREIN: ${expiresIn}. Must be between 300 and 21600`);
|
||||||
|
expect(getIDTokenMock).not.toHaveBeenCalled();
|
||||||
|
expect(postSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('retries rate limited token requests with Retry-After', async () => {
|
||||||
|
postSpy.mockResolvedValueOnce(httpResponse(429, '', {'retry-after': '0'})).mockResolvedValueOnce(httpResponse(200, JSON.stringify({access_token: 'hub-token'})));
|
||||||
|
await dockerhub.getOIDCToken('docker.io', 'dbowie');
|
||||||
|
expect(postSpy).toHaveBeenCalledTimes(2);
|
||||||
|
expect(core.info).toHaveBeenCalledWith('Docker Hub OIDC token request rate limited, retrying in 0ms (attempt 1/5)');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('throws Docker Hub OIDC error responses', async () => {
|
||||||
|
postSpy.mockResolvedValue(httpResponse(400, JSON.stringify({error: 'invalid_request', error_description: 'bad connection', error_uri: 'https://docs.docker.com'})));
|
||||||
|
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('Docker Hub API: bad status code 400: {"error":"invalid_request","error_description":"bad connection","error_uri":"https://docs.docker.com"}');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('throws rate limited Docker Hub OIDC error response after retries', async () => {
|
||||||
|
postSpy.mockResolvedValue(httpResponse(429, JSON.stringify({error: 'rate_limited', error_description: 'slow down'}), {'retry-after': '0'}));
|
||||||
|
await expect(dockerhub.getOIDCToken('docker.io', 'dbowie')).rejects.toThrow('Docker Hub API: bad status code 429: {"error":"rate_limited","error_description":"slow down"}');
|
||||||
|
expect(postSpy).toHaveBeenCalledTimes(6);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
import osm = require('os');
|
|
||||||
|
|
||||||
import {run} from '../src/main';
|
|
||||||
import * as docker from '../src/docker';
|
|
||||||
import * as stateHelper from '../src/state-helper';
|
|
||||||
|
|
||||||
import * as core from '@actions/core';
|
|
||||||
|
|
||||||
test('errors without username and password', async () => {
|
|
||||||
const platSpy = jest.spyOn(osm, 'platform');
|
|
||||||
platSpy.mockImplementation(() => 'linux');
|
|
||||||
|
|
||||||
process.env['INPUT_LOGOUT'] = 'true'; // default value
|
|
||||||
|
|
||||||
const coreSpy: jest.SpyInstance = jest.spyOn(core, 'setFailed');
|
|
||||||
|
|
||||||
await run();
|
|
||||||
|
|
||||||
expect(coreSpy).toHaveBeenCalledWith('Username and password required');
|
|
||||||
});
|
|
||||||
|
|
||||||
test('successful with username and password', async () => {
|
|
||||||
const platSpy = jest.spyOn(osm, 'platform');
|
|
||||||
platSpy.mockImplementation(() => 'linux');
|
|
||||||
|
|
||||||
const setRegistrySpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setRegistry');
|
|
||||||
const setLogoutSpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setLogout');
|
|
||||||
const dockerSpy: jest.SpyInstance = jest.spyOn(docker, 'login');
|
|
||||||
dockerSpy.mockImplementation(() => {});
|
|
||||||
|
|
||||||
const username: string = 'dbowie';
|
|
||||||
process.env[`INPUT_USERNAME`] = username;
|
|
||||||
|
|
||||||
const password: string = 'groundcontrol';
|
|
||||||
process.env[`INPUT_PASSWORD`] = password;
|
|
||||||
|
|
||||||
const ecr: string = 'auto';
|
|
||||||
process.env['INPUT_ECR'] = ecr;
|
|
||||||
|
|
||||||
const logout: boolean = false;
|
|
||||||
process.env['INPUT_LOGOUT'] = String(logout);
|
|
||||||
|
|
||||||
await run();
|
|
||||||
|
|
||||||
expect(setRegistrySpy).toHaveBeenCalledWith('');
|
|
||||||
expect(setLogoutSpy).toHaveBeenCalledWith(logout);
|
|
||||||
expect(dockerSpy).toHaveBeenCalledWith('', username, password, ecr);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('calls docker login', async () => {
|
|
||||||
const platSpy = jest.spyOn(osm, 'platform');
|
|
||||||
platSpy.mockImplementation(() => 'linux');
|
|
||||||
|
|
||||||
const setRegistrySpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setRegistry');
|
|
||||||
const setLogoutSpy: jest.SpyInstance = jest.spyOn(stateHelper, 'setLogout');
|
|
||||||
const dockerSpy: jest.SpyInstance = jest.spyOn(docker, 'login');
|
|
||||||
dockerSpy.mockImplementation(() => {});
|
|
||||||
|
|
||||||
const username: string = 'dbowie';
|
|
||||||
process.env[`INPUT_USERNAME`] = username;
|
|
||||||
|
|
||||||
const password: string = 'groundcontrol';
|
|
||||||
process.env[`INPUT_PASSWORD`] = password;
|
|
||||||
|
|
||||||
const registry: string = 'ghcr.io';
|
|
||||||
process.env[`INPUT_REGISTRY`] = registry;
|
|
||||||
|
|
||||||
const ecr: string = 'auto';
|
|
||||||
process.env['INPUT_ECR'] = ecr;
|
|
||||||
|
|
||||||
const logout: boolean = true;
|
|
||||||
process.env['INPUT_LOGOUT'] = String(logout);
|
|
||||||
|
|
||||||
await run();
|
|
||||||
|
|
||||||
expect(setRegistrySpy).toHaveBeenCalledWith(registry);
|
|
||||||
expect(setLogoutSpy).toHaveBeenCalledWith(logout);
|
|
||||||
expect(dockerSpy).toHaveBeenCalledWith(registry, username, password, ecr);
|
|
||||||
});
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
import os from 'node:os';
|
||||||
|
import path from 'node:path';
|
||||||
|
|
||||||
|
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-login-action-'));
|
||||||
|
|
||||||
|
process.env = Object.assign({}, process.env, {
|
||||||
|
TEMP: tmpDir,
|
||||||
|
GITHUB_REPOSITORY: 'docker/login-action',
|
||||||
|
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||||
|
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||||
|
});
|
||||||
+9
-4
@@ -18,14 +18,19 @@ inputs:
|
|||||||
required: false
|
required: false
|
||||||
ecr:
|
ecr:
|
||||||
description: 'Specifies whether the given registry is ECR (auto, true or false)'
|
description: 'Specifies whether the given registry is ECR (auto, true or false)'
|
||||||
default: 'auto'
|
required: false
|
||||||
|
scope:
|
||||||
|
description: 'Scope for the authentication token'
|
||||||
required: false
|
required: false
|
||||||
logout:
|
logout:
|
||||||
description: 'Log out from the Docker registry at the end of a job'
|
description: 'Log out from the Docker registry at the end of a job'
|
||||||
default: 'true'
|
default: 'true'
|
||||||
required: false
|
required: false
|
||||||
|
registry-auth:
|
||||||
|
description: 'Raw authentication to registries, defined as YAML objects'
|
||||||
|
required: false
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node12'
|
using: 'node24'
|
||||||
main: 'dist/index.js'
|
main: 'dist/index.cjs'
|
||||||
post: 'dist/index.js'
|
post: 'dist/index.cjs'
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
# syntax=docker/dockerfile:1
|
||||||
|
|
||||||
|
ARG NODE_VERSION=24
|
||||||
|
|
||||||
|
FROM node:${NODE_VERSION}-alpine AS base
|
||||||
|
RUN apk add --no-cache cpio findutils git rsync
|
||||||
|
WORKDIR /src
|
||||||
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache <<EOT
|
||||||
|
set -e
|
||||||
|
corepack enable
|
||||||
|
yarn --version
|
||||||
|
yarn config set --home enableTelemetry 0
|
||||||
|
EOT
|
||||||
|
|
||||||
|
FROM base AS deps
|
||||||
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache \
|
||||||
|
--mount=type=cache,target=/src/node_modules \
|
||||||
|
yarn install --immutable && mkdir /vendor && cp yarn.lock /vendor
|
||||||
|
|
||||||
|
FROM scratch AS vendor-update
|
||||||
|
COPY --from=deps /vendor /
|
||||||
|
|
||||||
|
FROM deps AS vendor-validate
|
||||||
|
RUN --mount=type=bind,target=.,rw <<EOT
|
||||||
|
set -e
|
||||||
|
git add -A
|
||||||
|
cp -rf /vendor/* .
|
||||||
|
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
|
||||||
|
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor"'
|
||||||
|
git status --porcelain -- yarn.lock
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
EOT
|
||||||
|
|
||||||
|
FROM deps AS build
|
||||||
|
RUN --mount=target=/context \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache \
|
||||||
|
--mount=type=cache,target=/src/node_modules <<EOT
|
||||||
|
set -e
|
||||||
|
rsync -a /context/. .
|
||||||
|
rm -rf dist
|
||||||
|
yarn run build
|
||||||
|
mkdir /out
|
||||||
|
cp -r dist /out
|
||||||
|
EOT
|
||||||
|
|
||||||
|
FROM scratch AS build-update
|
||||||
|
COPY --from=build /out /
|
||||||
|
|
||||||
|
FROM build AS build-validate
|
||||||
|
RUN --mount=target=/context \
|
||||||
|
--mount=target=.,type=tmpfs <<EOT
|
||||||
|
set -e
|
||||||
|
rsync -a /context/. .
|
||||||
|
git add -A
|
||||||
|
rm -rf dist
|
||||||
|
cp -rf /out/* .
|
||||||
|
if [ -n "$(git status --porcelain -- dist)" ]; then
|
||||||
|
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
|
||||||
|
git status --porcelain -- dist
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
EOT
|
||||||
|
|
||||||
|
FROM deps AS format
|
||||||
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache \
|
||||||
|
--mount=type=cache,target=/src/node_modules \
|
||||||
|
yarn run format && mkdir /out && find . -name '*.ts' -not -path './node_modules/*' -not -path './.yarn/*' | cpio -pdm /out
|
||||||
|
|
||||||
|
FROM scratch AS format-update
|
||||||
|
COPY --from=format /out /
|
||||||
|
|
||||||
|
FROM deps AS lint
|
||||||
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache \
|
||||||
|
--mount=type=cache,target=/src/node_modules \
|
||||||
|
yarn run lint
|
||||||
|
|
||||||
|
FROM deps AS test
|
||||||
|
ENV RUNNER_TEMP=/tmp/github_runner
|
||||||
|
ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
|
||||||
|
RUN --mount=type=bind,target=.,rw \
|
||||||
|
--mount=type=cache,target=/src/.yarn/cache \
|
||||||
|
--mount=type=cache,target=/src/node_modules \
|
||||||
|
yarn run test --coverage --coverage.reportsDirectory=/tmp/coverage
|
||||||
|
|
||||||
|
FROM scratch AS test-coverage
|
||||||
|
COPY --from=test /tmp/coverage /
|
||||||
-984
@@ -1,984 +0,0 @@
|
|||||||
/******/ (() => { // webpackBootstrap
|
|
||||||
/******/ "use strict";
|
|
||||||
/******/ var __webpack_modules__ = ({
|
|
||||||
|
|
||||||
/***/ 989:
|
|
||||||
/***/ ((__unused_webpack_module, exports) => {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* __ ___ ____ _ _ ___ _ _ ____
|
|
||||||
* \ \ / / \ | _ \| \ | |_ _| \ | |/ ___|
|
|
||||||
* \ \ /\ / / _ \ | |_) | \| || || \| | | _
|
|
||||||
* \ V V / ___ \| _ <| |\ || || |\ | |_| |
|
|
||||||
* \_/\_/_/ \_\_| \_\_| \_|___|_| \_|\____|
|
|
||||||
*
|
|
||||||
* This file is critical for vm2. It implements the bridge between the host and the sandbox.
|
|
||||||
* If you do not know exactly what you are doing, you should NOT edit this file.
|
|
||||||
*
|
|
||||||
* The file is loaded in the host and sandbox to handle objects in both directions.
|
|
||||||
* This is done to ensure that RangeErrors are from the correct context.
|
|
||||||
* The boundary between the sandbox and host might throw RangeErrors from both contexts.
|
|
||||||
* Therefore, thisFromOther and friends can handle objects from both domains.
|
|
||||||
*
|
|
||||||
* Method parameters have comments to tell from which context they came.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
const globalsList = [
|
|
||||||
'Number',
|
|
||||||
'String',
|
|
||||||
'Boolean',
|
|
||||||
'Date',
|
|
||||||
'RegExp',
|
|
||||||
'Map',
|
|
||||||
'WeakMap',
|
|
||||||
'Set',
|
|
||||||
'WeakSet',
|
|
||||||
'Promise',
|
|
||||||
'Function'
|
|
||||||
];
|
|
||||||
|
|
||||||
const errorsList = [
|
|
||||||
'RangeError',
|
|
||||||
'ReferenceError',
|
|
||||||
'SyntaxError',
|
|
||||||
'TypeError',
|
|
||||||
'EvalError',
|
|
||||||
'URIError',
|
|
||||||
'Error'
|
|
||||||
];
|
|
||||||
|
|
||||||
const OPNA = 'Operation not allowed on contextified object.';
|
|
||||||
|
|
||||||
const thisGlobalPrototypes = {
|
|
||||||
__proto__: null,
|
|
||||||
Object: Object.prototype,
|
|
||||||
Array: Array.prototype
|
|
||||||
};
|
|
||||||
|
|
||||||
for (let i = 0; i < globalsList.length; i++) {
|
|
||||||
const key = globalsList[i];
|
|
||||||
const g = global[key];
|
|
||||||
if (g) thisGlobalPrototypes[key] = g.prototype;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < errorsList.length; i++) {
|
|
||||||
const key = errorsList[i];
|
|
||||||
const g = global[key];
|
|
||||||
if (g) thisGlobalPrototypes[key] = g.prototype;
|
|
||||||
}
|
|
||||||
|
|
||||||
const {
|
|
||||||
getPrototypeOf: thisReflectGetPrototypeOf,
|
|
||||||
setPrototypeOf: thisReflectSetPrototypeOf,
|
|
||||||
defineProperty: thisReflectDefineProperty,
|
|
||||||
deleteProperty: thisReflectDeleteProperty,
|
|
||||||
getOwnPropertyDescriptor: thisReflectGetOwnPropertyDescriptor,
|
|
||||||
isExtensible: thisReflectIsExtensible,
|
|
||||||
preventExtensions: thisReflectPreventExtensions,
|
|
||||||
apply: thisReflectApply,
|
|
||||||
construct: thisReflectConstruct,
|
|
||||||
set: thisReflectSet,
|
|
||||||
get: thisReflectGet,
|
|
||||||
has: thisReflectHas,
|
|
||||||
ownKeys: thisReflectOwnKeys,
|
|
||||||
enumerate: thisReflectEnumerate,
|
|
||||||
} = Reflect;
|
|
||||||
|
|
||||||
const thisObject = Object;
|
|
||||||
const {
|
|
||||||
freeze: thisObjectFreeze,
|
|
||||||
prototype: thisObjectPrototype
|
|
||||||
} = thisObject;
|
|
||||||
const thisObjectHasOwnProperty = thisObjectPrototype.hasOwnProperty;
|
|
||||||
const ThisProxy = Proxy;
|
|
||||||
const ThisWeakMap = WeakMap;
|
|
||||||
const {
|
|
||||||
get: thisWeakMapGet,
|
|
||||||
set: thisWeakMapSet
|
|
||||||
} = ThisWeakMap.prototype;
|
|
||||||
const ThisMap = Map;
|
|
||||||
const thisMapGet = ThisMap.prototype.get;
|
|
||||||
const thisMapSet = ThisMap.prototype.set;
|
|
||||||
const thisFunction = Function;
|
|
||||||
const thisFunctionBind = thisFunction.prototype.bind;
|
|
||||||
const thisArrayIsArray = Array.isArray;
|
|
||||||
const thisErrorCaptureStackTrace = Error.captureStackTrace;
|
|
||||||
|
|
||||||
const thisSymbolToString = Symbol.prototype.toString;
|
|
||||||
const thisSymbolToStringTag = Symbol.toStringTag;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* VMError.
|
|
||||||
*
|
|
||||||
* @public
|
|
||||||
* @extends {Error}
|
|
||||||
*/
|
|
||||||
class VMError extends Error {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create VMError instance.
|
|
||||||
*
|
|
||||||
* @public
|
|
||||||
* @param {string} message - Error message.
|
|
||||||
* @param {string} code - Error code.
|
|
||||||
*/
|
|
||||||
constructor(message, code) {
|
|
||||||
super(message);
|
|
||||||
|
|
||||||
this.name = 'VMError';
|
|
||||||
this.code = code;
|
|
||||||
|
|
||||||
thisErrorCaptureStackTrace(this, this.constructor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
thisGlobalPrototypes['VMError'] = VMError.prototype;
|
|
||||||
|
|
||||||
function thisUnexpected() {
|
|
||||||
return new VMError('Unexpected');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!thisReflectSetPrototypeOf(exports, null)) throw thisUnexpected();
|
|
||||||
|
|
||||||
function thisSafeGetOwnPropertyDescriptor(obj, key) {
|
|
||||||
const desc = thisReflectGetOwnPropertyDescriptor(obj, key);
|
|
||||||
if (!desc) return desc;
|
|
||||||
if (!thisReflectSetPrototypeOf(desc, null)) throw thisUnexpected();
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisThrowCallerCalleeArgumentsAccess(key) {
|
|
||||||
'use strict';
|
|
||||||
thisThrowCallerCalleeArgumentsAccess[key];
|
|
||||||
return thisUnexpected();
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisIdMapping(factory, other) {
|
|
||||||
return other;
|
|
||||||
}
|
|
||||||
|
|
||||||
const thisThrowOnKeyAccessHandler = thisObjectFreeze({
|
|
||||||
__proto__: null,
|
|
||||||
get(target, key, receiver) {
|
|
||||||
if (typeof key === 'symbol') {
|
|
||||||
key = thisReflectApply(thisSymbolToString, key, []);
|
|
||||||
}
|
|
||||||
throw new VMError(`Unexpected access to key '${key}'`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const emptyForzenObject = thisObjectFreeze({
|
|
||||||
__proto__: null
|
|
||||||
});
|
|
||||||
|
|
||||||
const thisThrowOnKeyAccess = new ThisProxy(emptyForzenObject, thisThrowOnKeyAccessHandler);
|
|
||||||
|
|
||||||
function SafeBase() {}
|
|
||||||
|
|
||||||
if (!thisReflectDefineProperty(SafeBase, 'prototype', {
|
|
||||||
__proto__: null,
|
|
||||||
value: thisThrowOnKeyAccess
|
|
||||||
})) throw thisUnexpected();
|
|
||||||
|
|
||||||
function SHARED_FUNCTION() {}
|
|
||||||
|
|
||||||
const TEST_PROXY_HANDLER = thisObjectFreeze({
|
|
||||||
__proto__: thisThrowOnKeyAccess,
|
|
||||||
construct() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function thisIsConstructor(obj) {
|
|
||||||
// Note: obj@any(unsafe)
|
|
||||||
const Func = new ThisProxy(obj, TEST_PROXY_HANDLER);
|
|
||||||
try {
|
|
||||||
// eslint-disable-next-line no-new
|
|
||||||
new Func();
|
|
||||||
return true;
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisCreateTargetObject(obj, proto) {
|
|
||||||
// Note: obj@any(unsafe) proto@any(unsafe) returns@this(unsafe) throws@this(unsafe)
|
|
||||||
let base;
|
|
||||||
if (typeof obj === 'function') {
|
|
||||||
if (thisIsConstructor(obj)) {
|
|
||||||
// Bind the function since bound functions do not have a prototype property.
|
|
||||||
base = thisReflectApply(thisFunctionBind, SHARED_FUNCTION, [null]);
|
|
||||||
} else {
|
|
||||||
base = () => {};
|
|
||||||
}
|
|
||||||
} else if (thisArrayIsArray(obj)) {
|
|
||||||
base = [];
|
|
||||||
} else {
|
|
||||||
return {__proto__: proto};
|
|
||||||
}
|
|
||||||
if (!thisReflectSetPrototypeOf(base, proto)) throw thisUnexpected();
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createBridge(otherInit, registerProxy) {
|
|
||||||
|
|
||||||
const mappingOtherToThis = new ThisWeakMap();
|
|
||||||
const protoMappings = new ThisMap();
|
|
||||||
const protoName = new ThisMap();
|
|
||||||
|
|
||||||
function thisAddProtoMapping(proto, other, name) {
|
|
||||||
// Note: proto@this(unsafe) other@other(unsafe) name@this(unsafe) throws@this(unsafe)
|
|
||||||
thisReflectApply(thisMapSet, protoMappings, [proto, thisIdMapping]);
|
|
||||||
thisReflectApply(thisMapSet, protoMappings, [other,
|
|
||||||
(factory, object) => thisProxyOther(factory, object, proto)]);
|
|
||||||
if (name) thisReflectApply(thisMapSet, protoName, [proto, name]);
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisAddProtoMappingFactory(protoFactory, other, name) {
|
|
||||||
// Note: protoFactory@this(unsafe) other@other(unsafe) name@this(unsafe) throws@this(unsafe)
|
|
||||||
let proto;
|
|
||||||
thisReflectApply(thisMapSet, protoMappings, [other,
|
|
||||||
(factory, object) => {
|
|
||||||
if (!proto) {
|
|
||||||
proto = protoFactory();
|
|
||||||
thisReflectApply(thisMapSet, protoMappings, [proto, thisIdMapping]);
|
|
||||||
if (name) thisReflectApply(thisMapSet, protoName, [proto, name]);
|
|
||||||
}
|
|
||||||
return thisProxyOther(factory, object, proto);
|
|
||||||
}]);
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = {
|
|
||||||
__proto__: null,
|
|
||||||
globalPrototypes: thisGlobalPrototypes,
|
|
||||||
safeGetOwnPropertyDescriptor: thisSafeGetOwnPropertyDescriptor,
|
|
||||||
fromArguments: thisFromOtherArguments,
|
|
||||||
from: thisFromOther,
|
|
||||||
fromWithFactory: thisFromOtherWithFactory,
|
|
||||||
ensureThis: thisEnsureThis,
|
|
||||||
mapping: mappingOtherToThis,
|
|
||||||
connect: thisConnect,
|
|
||||||
reflectSet: thisReflectSet,
|
|
||||||
reflectGet: thisReflectGet,
|
|
||||||
reflectDefineProperty: thisReflectDefineProperty,
|
|
||||||
reflectDeleteProperty: thisReflectDeleteProperty,
|
|
||||||
reflectApply: thisReflectApply,
|
|
||||||
reflectConstruct: thisReflectConstruct,
|
|
||||||
reflectHas: thisReflectHas,
|
|
||||||
reflectOwnKeys: thisReflectOwnKeys,
|
|
||||||
reflectEnumerate: thisReflectEnumerate,
|
|
||||||
reflectGetPrototypeOf: thisReflectGetPrototypeOf,
|
|
||||||
reflectIsExtensible: thisReflectIsExtensible,
|
|
||||||
reflectPreventExtensions: thisReflectPreventExtensions,
|
|
||||||
objectHasOwnProperty: thisObjectHasOwnProperty,
|
|
||||||
weakMapSet: thisWeakMapSet,
|
|
||||||
addProtoMapping: thisAddProtoMapping,
|
|
||||||
addProtoMappingFactory: thisAddProtoMappingFactory,
|
|
||||||
defaultFactory,
|
|
||||||
protectedFactory,
|
|
||||||
readonlyFactory,
|
|
||||||
VMError
|
|
||||||
};
|
|
||||||
|
|
||||||
const isHost = typeof otherInit !== 'object';
|
|
||||||
|
|
||||||
if (isHost) {
|
|
||||||
otherInit = otherInit(result, registerProxy);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.other = otherInit;
|
|
||||||
|
|
||||||
const {
|
|
||||||
globalPrototypes: otherGlobalPrototypes,
|
|
||||||
safeGetOwnPropertyDescriptor: otherSafeGetOwnPropertyDescriptor,
|
|
||||||
fromArguments: otherFromThisArguments,
|
|
||||||
from: otherFromThis,
|
|
||||||
mapping: mappingThisToOther,
|
|
||||||
reflectSet: otherReflectSet,
|
|
||||||
reflectGet: otherReflectGet,
|
|
||||||
reflectDefineProperty: otherReflectDefineProperty,
|
|
||||||
reflectDeleteProperty: otherReflectDeleteProperty,
|
|
||||||
reflectApply: otherReflectApply,
|
|
||||||
reflectConstruct: otherReflectConstruct,
|
|
||||||
reflectHas: otherReflectHas,
|
|
||||||
reflectOwnKeys: otherReflectOwnKeys,
|
|
||||||
reflectEnumerate: otherReflectEnumerate,
|
|
||||||
reflectGetPrototypeOf: otherReflectGetPrototypeOf,
|
|
||||||
reflectIsExtensible: otherReflectIsExtensible,
|
|
||||||
reflectPreventExtensions: otherReflectPreventExtensions,
|
|
||||||
objectHasOwnProperty: otherObjectHasOwnProperty,
|
|
||||||
weakMapSet: otherWeakMapSet
|
|
||||||
} = otherInit;
|
|
||||||
|
|
||||||
function thisOtherHasOwnProperty(object, key) {
|
|
||||||
// Note: object@other(safe) key@prim throws@this(unsafe)
|
|
||||||
try {
|
|
||||||
return otherReflectApply(otherObjectHasOwnProperty, object, [key]) === true;
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisDefaultGet(handler, object, key, desc) {
|
|
||||||
// Note: object@other(unsafe) key@prim desc@other(safe)
|
|
||||||
let ret; // @other(unsafe)
|
|
||||||
if (desc.get || desc.set) {
|
|
||||||
const getter = desc.get;
|
|
||||||
if (!getter) return undefined;
|
|
||||||
try {
|
|
||||||
ret = otherReflectApply(getter, object, [key]);
|
|
||||||
} catch (e) {
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ret = desc.value;
|
|
||||||
}
|
|
||||||
return handler.fromOtherWithContext(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
function otherFromThisIfAvailable(to, from, key) {
|
|
||||||
// Note: to@other(safe) from@this(safe) key@prim throws@this(unsafe)
|
|
||||||
if (!thisReflectApply(thisObjectHasOwnProperty, from, [key])) return false;
|
|
||||||
try {
|
|
||||||
to[key] = otherFromThis(from[key]);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
class BaseHandler extends SafeBase {
|
|
||||||
|
|
||||||
constructor(object) {
|
|
||||||
// Note: object@other(unsafe) throws@this(unsafe)
|
|
||||||
super();
|
|
||||||
this.object = object;
|
|
||||||
}
|
|
||||||
|
|
||||||
getFactory() {
|
|
||||||
return defaultFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
fromOtherWithContext(other) {
|
|
||||||
// Note: other@other(unsafe) throws@this(unsafe)
|
|
||||||
return thisFromOtherWithFactory(this.getFactory(), other);
|
|
||||||
}
|
|
||||||
|
|
||||||
doPreventExtensions(target, object, factory) {
|
|
||||||
// Note: target@this(unsafe) object@other(unsafe) throws@this(unsafe)
|
|
||||||
let keys; // @other(safe-array-of-prim)
|
|
||||||
try {
|
|
||||||
keys = otherReflectOwnKeys(object);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
for (let i = 0; i < keys.length; i++) {
|
|
||||||
const key = keys[i]; // @prim
|
|
||||||
let desc;
|
|
||||||
try {
|
|
||||||
desc = otherSafeGetOwnPropertyDescriptor(object, key);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
if (!desc) continue;
|
|
||||||
if (!desc.configurable) {
|
|
||||||
const current = thisSafeGetOwnPropertyDescriptor(target, key);
|
|
||||||
if (current && !current.configurable) continue;
|
|
||||||
if (desc.get || desc.set) {
|
|
||||||
desc.get = this.fromOtherWithContext(desc.get);
|
|
||||||
desc.set = this.fromOtherWithContext(desc.set);
|
|
||||||
} else if (typeof object === 'function' && (key === 'caller' || key === 'callee' || key === 'arguments')) {
|
|
||||||
desc.value = null;
|
|
||||||
} else {
|
|
||||||
desc.value = this.fromOtherWithContext(desc.value);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (desc.get || desc.set) {
|
|
||||||
desc = {
|
|
||||||
__proto__: null,
|
|
||||||
configurable: true,
|
|
||||||
enumerable: desc.enumerable,
|
|
||||||
writable: true,
|
|
||||||
value: null
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
desc.value = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!thisReflectDefineProperty(target, key, desc)) throw thisUnexpected();
|
|
||||||
}
|
|
||||||
if (!thisReflectPreventExtensions(target)) throw thisUnexpected();
|
|
||||||
}
|
|
||||||
|
|
||||||
get(target, key, receiver) {
|
|
||||||
// Note: target@this(unsafe) key@prim receiver@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
switch (key) {
|
|
||||||
case 'constructor': {
|
|
||||||
const desc = otherSafeGetOwnPropertyDescriptor(object, key);
|
|
||||||
if (desc) return thisDefaultGet(this, object, key, desc);
|
|
||||||
const proto = thisReflectGetPrototypeOf(target);
|
|
||||||
return proto === null ? undefined : proto.constructor;
|
|
||||||
}
|
|
||||||
case '__proto__': {
|
|
||||||
const desc = otherSafeGetOwnPropertyDescriptor(object, key);
|
|
||||||
if (desc) return thisDefaultGet(this, object, key, desc);
|
|
||||||
return thisReflectGetPrototypeOf(target);
|
|
||||||
}
|
|
||||||
case thisSymbolToStringTag:
|
|
||||||
if (!thisOtherHasOwnProperty(object, thisSymbolToStringTag)) {
|
|
||||||
const proto = thisReflectGetPrototypeOf(target);
|
|
||||||
const name = thisReflectApply(thisMapGet, protoName, [proto]);
|
|
||||||
if (name) return name;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'arguments':
|
|
||||||
case 'caller':
|
|
||||||
case 'callee':
|
|
||||||
if (thisOtherHasOwnProperty(object, key)) throw thisThrowCallerCalleeArgumentsAccess(key);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
let ret; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
ret = otherReflectGet(object, key);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
return this.fromOtherWithContext(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
set(target, key, value, receiver) {
|
|
||||||
// Note: target@this(unsafe) key@prim value@this(unsafe) receiver@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
if (key === '__proto__' && !thisOtherHasOwnProperty(object, key)) {
|
|
||||||
return this.setPrototypeOf(target, value);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
value = otherFromThis(value);
|
|
||||||
return otherReflectSet(object, key, value) === true;
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getPrototypeOf(target) {
|
|
||||||
// Note: target@this(unsafe)
|
|
||||||
return thisReflectGetPrototypeOf(target);
|
|
||||||
}
|
|
||||||
|
|
||||||
setPrototypeOf(target, value) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
throw new VMError(OPNA);
|
|
||||||
}
|
|
||||||
|
|
||||||
apply(target, context, args) {
|
|
||||||
// Note: target@this(unsafe) context@this(unsafe) args@this(safe-array) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
let ret; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
context = otherFromThis(context);
|
|
||||||
args = otherFromThisArguments(args);
|
|
||||||
ret = otherReflectApply(object, context, args);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
return thisFromOther(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
construct(target, args, newTarget) {
|
|
||||||
// Note: target@this(unsafe) args@this(safe-array) newTarget@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
let ret; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
args = otherFromThisArguments(args);
|
|
||||||
ret = otherReflectConstruct(object, args);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
return thisFromOtherWithFactory(this.getFactory(), ret, thisFromOther(object));
|
|
||||||
}
|
|
||||||
|
|
||||||
getOwnPropertyDescriptorDesc(target, prop, desc) {
|
|
||||||
// Note: target@this(unsafe) prop@prim desc@other{safe} throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
if (desc && typeof object === 'function' && (prop === 'arguments' || prop === 'caller' || prop === 'callee')) desc.value = null;
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
getOwnPropertyDescriptor(target, prop) {
|
|
||||||
// Note: target@this(unsafe) prop@prim throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
let desc; // @other(safe)
|
|
||||||
try {
|
|
||||||
desc = otherSafeGetOwnPropertyDescriptor(object, prop);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
desc = this.getOwnPropertyDescriptorDesc(target, prop, desc);
|
|
||||||
|
|
||||||
if (!desc) return undefined;
|
|
||||||
|
|
||||||
let thisDesc;
|
|
||||||
if (desc.get || desc.set) {
|
|
||||||
thisDesc = {
|
|
||||||
__proto__: null,
|
|
||||||
get: this.fromOtherWithContext(desc.get),
|
|
||||||
set: this.fromOtherWithContext(desc.set),
|
|
||||||
enumerable: desc.enumerable === true,
|
|
||||||
configurable: desc.configurable === true
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
thisDesc = {
|
|
||||||
__proto__: null,
|
|
||||||
value: this.fromOtherWithContext(desc.value),
|
|
||||||
writable: desc.writable === true,
|
|
||||||
enumerable: desc.enumerable === true,
|
|
||||||
configurable: desc.configurable === true
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (!thisDesc.configurable) {
|
|
||||||
const oldDesc = thisSafeGetOwnPropertyDescriptor(target, prop);
|
|
||||||
if (!oldDesc || oldDesc.configurable || oldDesc.writable !== thisDesc.writable) {
|
|
||||||
if (!thisReflectDefineProperty(target, prop, thisDesc)) throw thisUnexpected();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return thisDesc;
|
|
||||||
}
|
|
||||||
|
|
||||||
definePropertyDesc(target, prop, desc) {
|
|
||||||
// Note: target@this(unsafe) prop@prim desc@this(safe) throws@this(unsafe)
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
defineProperty(target, prop, desc) {
|
|
||||||
// Note: target@this(unsafe) prop@prim desc@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
if (!thisReflectSetPrototypeOf(desc, null)) throw thisUnexpected();
|
|
||||||
|
|
||||||
desc = this.definePropertyDesc(target, prop, desc);
|
|
||||||
|
|
||||||
if (!desc) return false;
|
|
||||||
|
|
||||||
let otherDesc = {__proto__: null};
|
|
||||||
let hasFunc = true;
|
|
||||||
let hasValue = true;
|
|
||||||
let hasBasic = true;
|
|
||||||
hasFunc &= otherFromThisIfAvailable(otherDesc, desc, 'get');
|
|
||||||
hasFunc &= otherFromThisIfAvailable(otherDesc, desc, 'set');
|
|
||||||
hasValue &= otherFromThisIfAvailable(otherDesc, desc, 'value');
|
|
||||||
hasValue &= otherFromThisIfAvailable(otherDesc, desc, 'writable');
|
|
||||||
hasBasic &= otherFromThisIfAvailable(otherDesc, desc, 'enumerable');
|
|
||||||
hasBasic &= otherFromThisIfAvailable(otherDesc, desc, 'configurable');
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (!otherReflectDefineProperty(object, prop, otherDesc)) return false;
|
|
||||||
if (otherDesc.configurable !== true && (!hasBasic || !(hasFunc || hasValue))) {
|
|
||||||
otherDesc = otherSafeGetOwnPropertyDescriptor(object, prop);
|
|
||||||
}
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!otherDesc.configurable) {
|
|
||||||
let thisDesc;
|
|
||||||
if (otherDesc.get || otherDesc.set) {
|
|
||||||
thisDesc = {
|
|
||||||
__proto__: null,
|
|
||||||
get: this.fromOtherWithContext(otherDesc.get),
|
|
||||||
set: this.fromOtherWithContext(otherDesc.set),
|
|
||||||
enumerable: otherDesc.enumerable,
|
|
||||||
configurable: otherDesc.configurable
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
thisDesc = {
|
|
||||||
__proto__: null,
|
|
||||||
value: this.fromOtherWithContext(otherDesc.value),
|
|
||||||
writable: otherDesc.writable,
|
|
||||||
enumerable: otherDesc.enumerable,
|
|
||||||
configurable: otherDesc.configurable
|
|
||||||
};
|
|
||||||
}
|
|
||||||
if (!thisReflectDefineProperty(target, prop, thisDesc)) throw thisUnexpected();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteProperty(target, prop) {
|
|
||||||
// Note: target@this(unsafe) prop@prim throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
return otherReflectDeleteProperty(object, prop) === true;
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
has(target, key) {
|
|
||||||
// Note: target@this(unsafe) key@prim throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
return otherReflectHas(object, key) === true;
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
isExtensible(target) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
if (otherReflectIsExtensible(object)) return true;
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
if (thisReflectIsExtensible(target)) {
|
|
||||||
this.doPreventExtensions(target, object, this);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ownKeys(target) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
let res; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
res = otherReflectOwnKeys(object);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
return thisFromOther(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
preventExtensions(target) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
if (!otherReflectPreventExtensions(object)) return false;
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
if (thisReflectIsExtensible(target)) {
|
|
||||||
this.doPreventExtensions(target, object, this);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
enumerate(target) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
let res; // @other(unsafe)
|
|
||||||
try {
|
|
||||||
res = otherReflectEnumerate(object);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
throw thisFromOther(e);
|
|
||||||
}
|
|
||||||
return this.fromOtherWithContext(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function defaultFactory(object) {
|
|
||||||
// Note: other@other(unsafe) returns@this(unsafe) throws@this(unsafe)
|
|
||||||
return new BaseHandler(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ProtectedHandler extends BaseHandler {
|
|
||||||
|
|
||||||
getFactory() {
|
|
||||||
return protectedFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
set(target, key, value, receiver) {
|
|
||||||
// Note: target@this(unsafe) key@prim value@this(unsafe) receiver@this(unsafe) throws@this(unsafe)
|
|
||||||
if (typeof value === 'function') {
|
|
||||||
return thisReflectDefineProperty(receiver, key, {
|
|
||||||
__proto__: null,
|
|
||||||
value: value,
|
|
||||||
writable: true,
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
}) === true;
|
|
||||||
}
|
|
||||||
return super.set(target, key, value, receiver);
|
|
||||||
}
|
|
||||||
|
|
||||||
definePropertyDesc(target, prop, desc) {
|
|
||||||
// Note: target@this(unsafe) prop@prim desc@this(safe) throws@this(unsafe)
|
|
||||||
if (desc && (desc.set || desc.get || typeof desc.value === 'function')) return undefined;
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function protectedFactory(object) {
|
|
||||||
// Note: other@other(unsafe) returns@this(unsafe) throws@this(unsafe)
|
|
||||||
return new ProtectedHandler(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ReadOnlyHandler extends BaseHandler {
|
|
||||||
|
|
||||||
getFactory() {
|
|
||||||
return readonlyFactory;
|
|
||||||
}
|
|
||||||
|
|
||||||
set(target, key, value, receiver) {
|
|
||||||
// Note: target@this(unsafe) key@prim value@this(unsafe) receiver@this(unsafe) throws@this(unsafe)
|
|
||||||
return thisReflectDefineProperty(receiver, key, {
|
|
||||||
__proto__: null,
|
|
||||||
value: value,
|
|
||||||
writable: true,
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
setPrototypeOf(target, value) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
defineProperty(target, prop, desc) {
|
|
||||||
// Note: target@this(unsafe) prop@prim desc@this(unsafe) throws@this(unsafe)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
deleteProperty(target, prop) {
|
|
||||||
// Note: target@this(unsafe) prop@prim throws@this(unsafe)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
isExtensible(target) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
preventExtensions(target) {
|
|
||||||
// Note: target@this(unsafe) throws@this(unsafe)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function readonlyFactory(object) {
|
|
||||||
// Note: other@other(unsafe) returns@this(unsafe) throws@this(unsafe)
|
|
||||||
return new ReadOnlyHandler(object);
|
|
||||||
}
|
|
||||||
|
|
||||||
class ReadOnlyMockHandler extends ReadOnlyHandler {
|
|
||||||
|
|
||||||
constructor(object, mock) {
|
|
||||||
// Note: object@other(unsafe) mock:this(unsafe) throws@this(unsafe)
|
|
||||||
super(object);
|
|
||||||
this.mock = mock;
|
|
||||||
}
|
|
||||||
|
|
||||||
get(target, key, receiver) {
|
|
||||||
// Note: target@this(unsafe) key@prim receiver@this(unsafe) throws@this(unsafe)
|
|
||||||
const object = this.object; // @other(unsafe)
|
|
||||||
const mock = this.mock;
|
|
||||||
if (thisReflectApply(thisObjectHasOwnProperty, mock, key) && !thisOtherHasOwnProperty(object, key)) {
|
|
||||||
return mock[key];
|
|
||||||
}
|
|
||||||
return super.get(target, key, receiver);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisFromOther(other) {
|
|
||||||
// Note: other@other(unsafe) returns@this(unsafe) throws@this(unsafe)
|
|
||||||
return thisFromOtherWithFactory(defaultFactory, other);
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisProxyOther(factory, other, proto) {
|
|
||||||
const target = thisCreateTargetObject(other, proto);
|
|
||||||
const handler = factory(other);
|
|
||||||
const proxy = new ThisProxy(target, handler);
|
|
||||||
try {
|
|
||||||
otherReflectApply(otherWeakMapSet, mappingThisToOther, [proxy, other]);
|
|
||||||
registerProxy(proxy, handler);
|
|
||||||
} catch (e) {
|
|
||||||
throw new VMError('Unexpected error');
|
|
||||||
}
|
|
||||||
if (!isHost) {
|
|
||||||
thisReflectApply(thisWeakMapSet, mappingOtherToThis, [other, proxy]);
|
|
||||||
return proxy;
|
|
||||||
}
|
|
||||||
const proxy2 = new ThisProxy(proxy, emptyForzenObject);
|
|
||||||
try {
|
|
||||||
otherReflectApply(otherWeakMapSet, mappingThisToOther, [proxy2, other]);
|
|
||||||
registerProxy(proxy2, handler);
|
|
||||||
} catch (e) {
|
|
||||||
throw new VMError('Unexpected error');
|
|
||||||
}
|
|
||||||
thisReflectApply(thisWeakMapSet, mappingOtherToThis, [other, proxy2]);
|
|
||||||
return proxy2;
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisEnsureThis(other) {
|
|
||||||
const type = typeof other;
|
|
||||||
switch (type) {
|
|
||||||
case 'object':
|
|
||||||
case 'function':
|
|
||||||
if (other === null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
let proto = thisReflectGetPrototypeOf(other);
|
|
||||||
if (!proto) {
|
|
||||||
return other;
|
|
||||||
}
|
|
||||||
while (proto) {
|
|
||||||
const mapping = thisReflectApply(thisMapGet, protoMappings, [proto]);
|
|
||||||
if (mapping) {
|
|
||||||
const mapped = thisReflectApply(thisWeakMapGet, mappingOtherToThis, [other]);
|
|
||||||
if (mapped) return mapped;
|
|
||||||
return mapping(defaultFactory, other);
|
|
||||||
}
|
|
||||||
proto = thisReflectGetPrototypeOf(proto);
|
|
||||||
}
|
|
||||||
return other;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'undefined':
|
|
||||||
case 'string':
|
|
||||||
case 'number':
|
|
||||||
case 'boolean':
|
|
||||||
case 'symbol':
|
|
||||||
case 'bigint':
|
|
||||||
return other;
|
|
||||||
|
|
||||||
default: // new, unknown types can be dangerous
|
|
||||||
throw new VMError(`Unknown type '${type}'`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisFromOtherWithFactory(factory, other, proto) {
|
|
||||||
for (let loop = 0; loop < 10; loop++) {
|
|
||||||
const type = typeof other;
|
|
||||||
switch (type) {
|
|
||||||
case 'object':
|
|
||||||
case 'function':
|
|
||||||
if (other === null) {
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
const mapped = thisReflectApply(thisWeakMapGet, mappingOtherToThis, [other]);
|
|
||||||
if (mapped) return mapped;
|
|
||||||
if (proto) {
|
|
||||||
return thisProxyOther(factory, other, proto);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
proto = otherReflectGetPrototypeOf(other);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
other = e;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (!proto) {
|
|
||||||
return thisProxyOther(factory, other, null);
|
|
||||||
}
|
|
||||||
while (proto) {
|
|
||||||
const mapping = thisReflectApply(thisMapGet, protoMappings, [proto]);
|
|
||||||
if (mapping) return mapping(factory, other);
|
|
||||||
try {
|
|
||||||
proto = otherReflectGetPrototypeOf(proto);
|
|
||||||
} catch (e) { // @other(unsafe)
|
|
||||||
other = e;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return thisProxyOther(factory, other, thisObjectPrototype);
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'undefined':
|
|
||||||
case 'string':
|
|
||||||
case 'number':
|
|
||||||
case 'boolean':
|
|
||||||
case 'symbol':
|
|
||||||
case 'bigint':
|
|
||||||
return other;
|
|
||||||
|
|
||||||
default: // new, unknown types can be dangerous
|
|
||||||
throw new VMError(`Unknown type '${type}'`);
|
|
||||||
}
|
|
||||||
factory = defaultFactory;
|
|
||||||
proto = undefined;
|
|
||||||
}
|
|
||||||
throw new VMError('Exception recursion depth');
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisFromOtherArguments(args) {
|
|
||||||
// Note: args@other(safe-array) returns@this(safe-array) throws@this(unsafe)
|
|
||||||
const arr = [];
|
|
||||||
for (let i = 0; i < args.length; i++) {
|
|
||||||
const value = thisFromOther(args[i]);
|
|
||||||
thisReflectDefineProperty(arr, i, {
|
|
||||||
__proto__: null,
|
|
||||||
value: value,
|
|
||||||
writable: true,
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
function thisConnect(obj, other) {
|
|
||||||
// Note: obj@this(unsafe) other@other(unsafe) throws@this(unsafe)
|
|
||||||
try {
|
|
||||||
otherReflectApply(otherWeakMapSet, mappingThisToOther, [obj, other]);
|
|
||||||
} catch (e) {
|
|
||||||
throw new VMError('Unexpected error');
|
|
||||||
}
|
|
||||||
thisReflectApply(thisWeakMapSet, mappingOtherToThis, [other, obj]);
|
|
||||||
}
|
|
||||||
|
|
||||||
thisAddProtoMapping(thisGlobalPrototypes.Object, otherGlobalPrototypes.Object);
|
|
||||||
thisAddProtoMapping(thisGlobalPrototypes.Array, otherGlobalPrototypes.Array);
|
|
||||||
|
|
||||||
for (let i = 0; i < globalsList.length; i++) {
|
|
||||||
const key = globalsList[i];
|
|
||||||
const tp = thisGlobalPrototypes[key];
|
|
||||||
const op = otherGlobalPrototypes[key];
|
|
||||||
if (tp && op) thisAddProtoMapping(tp, op, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < errorsList.length; i++) {
|
|
||||||
const key = errorsList[i];
|
|
||||||
const tp = thisGlobalPrototypes[key];
|
|
||||||
const op = otherGlobalPrototypes[key];
|
|
||||||
if (tp && op) thisAddProtoMapping(tp, op, 'Error');
|
|
||||||
}
|
|
||||||
|
|
||||||
thisAddProtoMapping(thisGlobalPrototypes.VMError, otherGlobalPrototypes.VMError, 'Error');
|
|
||||||
|
|
||||||
result.BaseHandler = BaseHandler;
|
|
||||||
result.ProtectedHandler = ProtectedHandler;
|
|
||||||
result.ReadOnlyHandler = ReadOnlyHandler;
|
|
||||||
result.ReadOnlyMockHandler = ReadOnlyMockHandler;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
exports.createBridge = createBridge;
|
|
||||||
exports.VMError = VMError;
|
|
||||||
|
|
||||||
|
|
||||||
/***/ })
|
|
||||||
|
|
||||||
/******/ });
|
|
||||||
/************************************************************************/
|
|
||||||
/******/ /* webpack/runtime/compat */
|
|
||||||
/******/
|
|
||||||
/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";/************************************************************************/
|
|
||||||
/******/
|
|
||||||
/******/ // startup
|
|
||||||
/******/ // Load entry module and return exports
|
|
||||||
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
||||||
/******/ var __webpack_exports__ = {};
|
|
||||||
/******/ __webpack_modules__[989](0, __webpack_exports__);
|
|
||||||
/******/ module.exports = __webpack_exports__;
|
|
||||||
/******/
|
|
||||||
/******/ })()
|
|
||||||
;
|
|
||||||
-1033
File diff suppressed because it is too large.
Load diff
+254
@@ -0,0 +1,254 @@
|
|||||||
|
var bHe=Object.create;var mE=Object.defineProperty;var BHe=Object.getOwnPropertyDescriptor;var RHe=Object.getOwnPropertyNames;var NHe=Object.getPrototypeOf,THe=Object.prototype.hasOwnProperty;var i=(t,e)=>mE(t,"name",{value:e,configurable:!0});var g=(t,e)=>()=>(t&&(e=t(t=0)),e);var w=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Mr=(t,e)=>{for(var r in e)mE(t,r,{get:e[r],enumerable:!0})},iX=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of RHe(e))!THe.call(t,s)&&s!==r&&mE(t,s,{get:()=>e[s],enumerable:!(n=BHe(e,s))||n.enumerable});return t};var R=(t,e,r)=>(r=t!=null?bHe(NHe(t)):{},iX(e||!t||!t.__esModule?mE(r,"default",{value:t,enumerable:!0}):r,t)),Z=t=>iX(mE({},"__esModule",{value:!0}),t);var AX=w(Zm=>{"use strict";var gVt=require("net"),kHe=require("tls"),aF=require("http"),pX=require("https"),LHe=require("events"),yVt=require("assert"),OHe=require("util");Zm.httpOverHttp=MHe;Zm.httpsOverHttp=FHe;Zm.httpOverHttps=UHe;Zm.httpsOverHttps=qHe;function MHe(t){var e=new wl(t);return e.request=aF.request,e}i(MHe,"httpOverHttp");function FHe(t){var e=new wl(t);return e.request=aF.request,e.createSocket=fX,e.defaultPort=443,e}i(FHe,"httpsOverHttp");function UHe(t){var e=new wl(t);return e.request=pX.request,e}i(UHe,"httpOverHttps");function qHe(t){var e=new wl(t);return e.request=pX.request,e.createSocket=fX,e.defaultPort=443,e}i(qHe,"httpsOverHttps");function wl(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||aF.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",i(function(n,s,o,a){for(var c=mX(s,o,a),l=0,u=e.requests.length;l<u;++l){var d=e.requests[l];if(d.host===c.host&&d.port===c.port){e.requests.splice(l,1),d.request.onSocket(n);return}}n.destroy(),e.removeSocket(n)},"onFree"))}i(wl,"TunnelingAgent");OHe.inherits(wl,LHe.EventEmitter);wl.prototype.addRequest=i(function(e,r,n,s){var o=this,a=cF({request:e},o.options,mX(r,n,s));if(o.sockets.length>=this.maxSockets){o.requests.push(a);return}o.createSocket(a,function(c){c.on("free",l),c.on("close",u),c.on("agentRemove",u),e.onSocket(c);function l(){o.emit("free",c,a)}i(l,"onFree");function u(d){o.removeSocket(c),c.removeListener("free",l),c.removeListener("close",u),c.removeListener("agentRemove",u)}i(u,"onCloseOrRemove")})},"addRequest");wl.prototype.createSocket=i(function(e,r){var n=this,s={};n.sockets.push(s);var o=cF({},n.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(o.localAddress=e.localAddress),o.proxyAuth&&(o.headers=o.headers||{},o.headers["Proxy-Authorization"]="Basic "+new Buffer(o.proxyAuth).toString("base64")),bu("making CONNECT request");var a=n.request(o);a.useChunkedEncodingByDefault=!1,a.once("response",c),a.once("upgrade",l),a.once("connect",u),a.once("error",d),a.end();function c(p){p.upgrade=!0}i(c,"onResponse");function l(p,f,m){process.nextTick(function(){u(p,f,m)})}i(l,"onUpgrade");function u(p,f,m){if(a.removeAllListeners(),f.removeAllListeners(),p.statusCode!==200){bu("tunneling socket could not be established, statusCode=%d",p.statusCode),f.destroy();var A=new Error("tunneling socket could not be established, statusCode="+p.statusCode);A.code="ECONNRESET",e.request.emit("error",A),n.removeSocket(s);return}if(m.length>0){bu("got illegal response body from proxy"),f.destroy();var A=new Error("got illegal response body from proxy");A.code="ECONNRESET",e.request.emit("error",A),n.removeSocket(s);return}return bu("tunneling connection has established"),n.sockets[n.sockets.indexOf(s)]=f,r(f)}i(u,"onConnect");function d(p){a.removeAllListeners(),bu(`tunneling socket could not be established, cause=%s
|
||||||
|
`,p.message,p.stack);var f=new Error("tunneling socket could not be established, cause="+p.message);f.code="ECONNRESET",e.request.emit("error",f),n.removeSocket(s)}i(d,"onError")},"createSocket");wl.prototype.removeSocket=i(function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var n=this.requests.shift();n&&this.createSocket(n,function(s){n.request.onSocket(s)})}},"removeSocket");function fX(t,e){var r=this;wl.prototype.createSocket.call(r,t,function(n){var s=t.request.getHeader("host"),o=cF({},r.options,{socket:n,servername:s?s.replace(/:.*$/,""):t.host}),a=kHe.connect(0,o);r.sockets[r.sockets.indexOf(n)]=a,e(a)})}i(fX,"createSecureSocket");function mX(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}i(mX,"toOptions");function cF(t){for(var e=1,r=arguments.length;e<r;++e){var n=arguments[e];if(typeof n=="object")for(var s=Object.keys(n),o=0,a=s.length;o<a;++o){var c=s[o];n[c]!==void 0&&(t[c]=n[c])}}return t}i(cF,"mergeOptions");var bu;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?bu=i(function(){var t=Array.prototype.slice.call(arguments);typeof t[0]=="string"?t[0]="TUNNEL: "+t[0]:t.unshift("TUNNEL:"),console.error.apply(console,t)},"debug"):bu=i(function(){},"debug");Zm.debug=bu});var eA=w((IVt,hX)=>{hX.exports=AX()});var qt=w((wVt,gX)=>{gX.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var it=w((SVt,GX)=>{"use strict";var yX=Symbol.for("undici.error.UND_ERR"),Gt=class extends Error{static{i(this,"UndiciError")}constructor(e){super(e),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](e){return e&&e[yX]===!0}[yX]=!0},EX=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),lF=class extends Gt{static{i(this,"ConnectTimeoutError")}constructor(e){super(e),this.name="ConnectTimeoutError",this.message=e||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[EX]===!0}[EX]=!0},CX=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),uF=class extends Gt{static{i(this,"HeadersTimeoutError")}constructor(e){super(e),this.name="HeadersTimeoutError",this.message=e||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[CX]===!0}[CX]=!0},IX=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),dF=class extends Gt{static{i(this,"HeadersOverflowError")}constructor(e){super(e),this.name="HeadersOverflowError",this.message=e||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](e){return e&&e[IX]===!0}[IX]=!0},wX=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),pF=class extends Gt{static{i(this,"BodyTimeoutError")}constructor(e){super(e),this.name="BodyTimeoutError",this.message=e||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"
Line truncated
|
||||||
|
`)||t.includes("\r")||t.includes("\0"))===!1}i(rZ,"isValidHeaderValue");function sVe(t,e){let{headersList:r}=e,n=(r.get("referrer-policy",!0)??"").split(","),s="";if(n.length>0)for(let o=n.length;o!==0;o--){let a=n[o-1].trim();if(G3e.has(a)){s=a;break}}s!==""&&(t.referrerPolicy=s)}i(sVe,"setRequestReferrerPolicyOnRedirect");function oVe(){return"allowed"}i(oVe,"crossOriginResourcePolicyCheck");function iVe(){return"success"}i(iVe,"corsCheck");function aVe(){return"success"}i(aVe,"TAOCheck");function cVe(t){let e=null;e=t.mode,t.headersList.set("sec-fetch-mode",e,!0)}i(cVe,"appendFetchMetadata");function lVe(t){let e=t.origin;if(!(e==="client"||e===void 0)){if(t.responseTainting==="cors"||t.mode==="websocket")t.headersList.append("origin",e,!0);else if(t.method!=="GET"&&t.method!=="HEAD"){switch(t.referrerPolicy){case"no-referrer":e=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":t.origin&&sU(t.origin)&&!sU(xE(t))&&(e=null);break;case"same-origin":Db(t,xE(t))||(e=null);break;default:}t.headersList.append("origin",e,!0)}}}i(lVe,"appendRequestOriginHeader");function uA(t,e){return t}i(uA,"coarsenTime");function uVe(t,e,r){return!t?.startTime||t.startTime<e?{domainLookupStartTime:e,domainLookupEndTime:e,connectionStartTime:e,connectionEndTime:e,secureConnectionStartTime:e,ALPNNegotiatedProtocol:t?.ALPNNegotiatedProtocol}:{domainLookupStartTime:uA(t.domainLookupStartTime,r),domainLookupEndTime:uA(t.domainLookupEndTime,r),connectionStartTime:uA(t.connectionStartTime,r),connectionEndTime:uA(t.connectionEndTime,r),secureConnectionStartTime:uA(t.secureConnectionStartTime,r),ALPNNegotiatedProtocol:t.ALPNNegotiatedProtocol}}i(uVe,"clampAndCoarsenConnectionTimingInfo");function dVe(t){return uA(W3e.now(),t)}i(dVe,"coarsenedSharedCurrentTime");function pVe(t){return{startTime:t.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:t.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}i(pVe,"createOpaqueTimingInfo");function nZ(){return{referrerPolicy:"strict-origin-when-cross-origin"}}i(nZ,"makePolicyContainer");function fVe(t){return{referrerPolicy:t.referrerPolicy}}i(fVe,"clonePolicyContainer");function mVe(t){let e=t.referrerPolicy;Tp(e);let r=null;if(t.referrer==="client"){let c=K7();if(!c||c.origin==="null")return"no-referrer";r=new URL(c)}else t.referrer instanceof URL&&(r=t.referrer);let n=nU(r),s=nU(r,!0);n.toString().length>4096&&(n=s);let o=Db(t,n),a=SE(n)&&!SE(t.url);switch(e){case"origin":return s??nU(r,!0);case"unsafe-url":return n;case"same-origin":return o?s:"no-referrer";case"origin-when-cross-origin":return o?n:s;case"strict-origin-when-cross-origin":{let c=xE(t);return Db(n,c)?n:SE(n)&&!SE(c)?"no-referrer":s}default:return a?"no-referrer":s}}i(mVe,"determineRequestsReferrer");function nU(t,e){return Tp(t instanceof URL),t=new URL(t),t.protocol==="file:"||t.protocol==="about:"||t.protocol==="blank:"?"no-referrer":(t.username="",t.password="",t.hash="",e&&(t.pathname="",t.search=""),t)}i(nU,"stripURLForReferrer");function SE(t){if(!(t instanceof URL))return!1;if(t.href==="about:blank"||t.href==="about:srcdoc"||t.protocol==="data:"||t.protocol==="file:")return!0;return e(t.origin);function e(r){if(r==null||r==="null")return!1;let n=new URL(r);return!!(n.protocol==="https:"||n.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(n.hostname)||n.hostname==="localhost"||n.hostname.includes("localhost.")||n.hostname.endsWith(".localhost"))}}i(SE,"isURLPotentiallyTrustworthy");function AVe(t,e){if(Qb===void 0)return!0;let r=sZ(e);if(r==="no metadata"||r.length===0)return!0;let n=gVe(r),s=yVe(r,n);for(let o of s){let a=o.algo,c=o.hash,l=Qb.createHash(a).update(t).digest("base64");if(l[l.length-1]==="="&&(l[l.length-2]==="="?l=l.slice(0,-2):l=l.slice(0,-1)),EVe(l,c))return!0}return!1}i(AVe,"bytesMatch");var hVe=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function sZ(t){let e=[],r=!0;for(let n of t.split(" ")){r=!1;let s=hVe.exec(n);if(s===null||s.groups===void 0||s.groups.algo===void 0)continue;let o=s.groups.algo.toLowerCase();Z7.includes(o)&&e.push(s.groups)}return r===!0?"no metadata":e}i(sZ,"parseMetadata");function gVe(t){let e=t[0].algo;if(e[3]==="5")return e;for(let r=1;r<t.length;++r){let n=t[r];if(n.algo[3]==="5"){e="sha512";break}else{if(e[3]==="3")continue;n.algo[3]==="3"&&(e="sha384")}}return e}i(gVe,"getStrongestMetadata");function yVe(t,e){if(t.length===1)return t;let r=0;for(let n=0;n<t.length;++n)t[n].algo===e&&(t[r++]=t[n]);return t.length=r,t}i(yVe,"filterMetadataListByAlgorithm");function EVe(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;++r)if(t[r]!==e[r]){if(t[r]==="+"&&e[r]==="-"||t[r]==="/"&&e[r]==="_")continue;return!1}return!0}i(EVe,"compareBase64Mixed");function CVe(t){}i(CVe,"tryUpgradeReque
Line truncated
|
||||||
|
`);function r4e(t){for(let e=0;e<t.length;++e)if((t.charCodeAt(e)&-128)!==0)return!1;return!0}i(r4e,"isAsciiString");function n4e(t){let e=t.length;if(e<27||e>70)return!1;for(let r=0;r<e;++r){let n=t.charCodeAt(r);if(!(n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122||n===39||n===45||n===95))return!1}return!0}i(n4e,"validateBoundary");function s4e(t,e){Lb(e!=="failure"&&e.essence==="multipart/form-data");let r=e.parameters.get("boundary");if(r===void 0)return"failure";let n=Buffer.from(`--${r}`,"utf8"),s=[],o={position:0};for(;t[o.position]===13&&t[o.position+1]===10;)o.position+=2;let a=t.length;for(;t[a-1]===10&&t[a-2]===13;)a-=2;for(a!==t.length&&(t=t.subarray(0,a));;){if(t.subarray(o.position,o.position+n.length).equals(n))o.position+=n.length;else return"failure";if(o.position===t.length-2&&Ob(t,e4e,o)||o.position===t.length-4&&Ob(t,t4e,o))return s;if(t[o.position]!==13||t[o.position+1]!==10)return"failure";o.position+=2;let c=o4e(t,o);if(c==="failure")return"failure";let{name:l,filename:u,contentType:d,encoding:p}=c;o.position+=2;let f;{let A=t.indexOf(n.subarray(2),o.position);if(A===-1)return"failure";f=t.subarray(o.position,A-4),o.position+=f.length,p==="base64"&&(f=Buffer.from(f.toString(),"base64"))}if(t[o.position]!==13||t[o.position+1]!==10)return"failure";o.position+=2;let m;u!==null?(d??="text/plain",r4e(d)||(d=""),m=new XVe([f],u,{type:d})):m=WVe(Buffer.from(f)),Lb(gZ(l)),Lb(typeof m=="string"&&gZ(m)||JVe(m)),s.push(jVe(l,m,u))}}i(s4e,"multipartFormDataParser");function o4e(t,e){let r=null,n=null,s=null,o=null;for(;;){if(t[e.position]===13&&t[e.position+1]===10)return r===null?"failure":{name:r,filename:n,contentType:s,encoding:o};let a=pA(c=>c!==10&&c!==13&&c!==58,t,e);if(a=dU(a,!0,!0,c=>c===9||c===32),!YVe.test(a.toString())||t[e.position]!==58)return"failure";switch(e.position++,pA(c=>c===32||c===9,t,e),VVe(a)){case"content-disposition":{if(r=n=null,!Ob(t,ZVe,e)||(e.position+=17,r=CZ(t,e),r===null))return"failure";if(Ob(t,EZ,e)){let c=e.position+EZ.length;if(t[c]===42&&(e.position+=1,c+=1),t[c]!==61||t[c+1]!==34||(e.position+=12,n=CZ(t,e),n===null))return"failure"}break}case"content-type":{let c=pA(l=>l!==10&&l!==13,t,e);c=dU(c,!1,!0,l=>l===9||l===32),s=yZ(c);break}case"content-transfer-encoding":{let c=pA(l=>l!==10&&l!==13,t,e);c=dU(c,!1,!0,l=>l===9||l===32),o=yZ(c);break}default:pA(c=>c!==10&&c!==13,t,e)}if(t[e.position]!==13&&t[e.position+1]!==10)return"failure";e.position+=2}}i(o4e,"parseMultipartFormDataHeaders");function CZ(t,e){Lb(t[e.position-1]===34);let r=pA(n=>n!==10&&n!==13&&n!==34,t,e);return t[e.position]!==34?null:(e.position++,r=new TextDecoder().decode(r).replace(/%0A/ig,`
|
||||||
|
`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),r)}i(CZ,"parseMultipartFormDataName");function pA(t,e,r){let n=r.position;for(;n<e.length&&t(e[n]);)++n;return e.subarray(r.position,r.position=n)}i(pA,"collectASequenceOfBytes");function dU(t,e,r,n){let s=0,o=t.length-1;if(e)for(;s<t.length&&n(t[s]);)s++;if(r)for(;o>0&&n(t[o]);)o--;return s===0&&o===t.length-1?t:t.subarray(s,o+1)}i(dU,"removeChars");function Ob(t,e,r){if(t.length<e.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[r.position+n])return!1;return!0}i(Ob,"bufferStartsWith");IZ.exports={multipartFormDataParser:s4e,validateBoundary:n4e}});var AA=w((l4t,_Z)=>{"use strict";var RE=ze(),{ReadableStreamFrom:i4e,isBlobLike:SZ,isReadableStreamLike:a4e,readableStreamClose:c4e,createDeferredPromise:l4e,fullyReadBody:u4e,extractMimeType:d4e,utf8DecodeBytes:BZ}=eo(),{FormData:xZ}=BE(),{kState:mA}=Bu(),{webidl:p4e}=yn(),{Blob:f4e}=require("node:buffer"),pU=require("node:assert"),{isErrored:RZ,isDisturbed:m4e}=require("node:stream"),{isArrayBuffer:A4e}=require("node:util/types"),{serializeAMimeType:h4e}=Is(),{multipartFormDataParser:g4e}=wZ(),fU;try{let t=require("node:crypto");fU=i(e=>t.randomInt(0,e),"random")}catch{fU=i(t=>Math.floor(Math.random(t)),"random")}var Mb=new TextEncoder;function y4e(){}i(y4e,"noop");var NZ=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,TZ;NZ&&(TZ=new FinalizationRegistry(t=>{let e=t.deref();e&&!e.locked&&!m4e(e)&&!RZ(e)&&e.cancel("Response object has been garbage collected").catch(y4e)}));function PZ(t,e=!1){let r=null;t instanceof ReadableStream?r=t:SZ(t)?r=t.stream():r=new ReadableStream({async pull(l){let u=typeof s=="string"?Mb.encode(s):s;u.byteLength&&l.enqueue(u),queueMicrotask(()=>c4e(l))},start(){},type:"bytes"}),pU(a4e(r));let n=null,s=null,o=null,a=null;if(typeof t=="string")s=t,a="text/plain;charset=UTF-8";else if(t instanceof URLSearchParams)s=t.toString(),a="application/x-www-form-urlencoded;charset=UTF-8";else if(A4e(t))s=new Uint8Array(t.slice());else if(ArrayBuffer.isView(t))s=new Uint8Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength));else if(RE.isFormDataLike(t)){let l=`----formdata-undici-0${`${fU(1e11)}`.padStart(11,"0")}`,u=`--${l}\r
|
||||||
|
Content-Disposition: form-data`;let d=i(E=>E.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),"escape"),p=i(E=>E.replace(/\r?\n|\r/g,`\r
|
||||||
|
`),"normalizeLinefeeds"),f=[],m=new Uint8Array([13,10]);o=0;let A=!1;for(let[E,y]of t)if(typeof y=="string"){let I=Mb.encode(u+`; name="${d(p(E))}"\r
|
||||||
|
\r
|
||||||
|
${p(y)}\r
|
||||||
|
`);f.push(I),o+=I.byteLength}else{let I=Mb.encode(`${u}; name="${d(p(E))}"`+(y.name?`; filename="${d(y.name)}"`:"")+`\r
|
||||||
|
Content-Type: ${y.type||"application/octet-stream"}\r
|
||||||
|
\r
|
||||||
|
`);f.push(I,y,m),typeof y.size=="number"?o+=I.byteLength+y.size+m.byteLength:A=!0}let h=Mb.encode(`--${l}--\r
|
||||||
|
`);f.push(h),o+=h.byteLength,A&&(o=null),s=t,n=i(async function*(){for(let E of f)E.stream?yield*E.stream():yield E},"action"),a=`multipart/form-data; boundary=${l}`}else if(SZ(t))s=t,o=t.size,t.type&&(a=t.type);else if(typeof t[Symbol.asyncIterator]=="function"){if(e)throw new TypeError("keepalive");if(RE.isDisturbed(t)||t.locked)throw new TypeError("Response body object should not be disturbed or locked");r=t instanceof ReadableStream?t:i4e(t)}if((typeof s=="string"||RE.isBuffer(s))&&(o=Buffer.byteLength(s)),n!=null){let l;r=new ReadableStream({async start(){l=n(t)[Symbol.asyncIterator]()},async pull(u){let{value:d,done:p}=await l.next();if(p)queueMicrotask(()=>{u.close(),u.byobRequest?.respond(0)});else if(!RZ(r)){let f=new Uint8Array(d);f.byteLength&&u.enqueue(f)}return u.desiredSize>0},async cancel(u){await l.return()},type:"bytes"})}return[{stream:r,source:s,length:o},a]}i(PZ,"extractBody");function E4e(t,e=!1){return t instanceof ReadableStream&&(pU(!RE.isDisturbed(t),"The body has already been consumed."),pU(!t.locked,"The stream is locked.")),PZ(t,e)}i(E4e,"safelyExtractBody");function C4e(t,e){let[r,n]=e.stream.tee();return e.stream=r,{stream:n,length:e.length,source:e.source}}i(C4e,"cloneBody");function I4e(t){if(t.aborted)throw new DOMException("The operation was aborted.","AbortError")}i(I4e,"throwIfAborted");function w4e(t){return{blob(){return fA(this,r=>{let n=bZ(this);return n===null?n="":n&&(n=h4e(n)),new f4e([r],{type:n})},t)},arrayBuffer(){return fA(this,r=>new Uint8Array(r).buffer,t)},text(){return fA(this,BZ,t)},json(){return fA(this,x4e,t)},formData(){return fA(this,r=>{let n=bZ(this);if(n!==null)switch(n.essence){case"multipart/form-data":{let s=g4e(r,n);if(s==="failure")throw new TypeError("Failed to parse body as FormData.");let o=new xZ;return o[mA]=s,o}case"application/x-www-form-urlencoded":{let s=new URLSearchParams(r.toString()),o=new xZ;for(let[a,c]of s)o.append(a,c);return o}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},t)},bytes(){return fA(this,r=>new Uint8Array(r),t)}}}i(w4e,"bodyMixinMethods");function S4e(t){Object.assign(t.prototype,w4e(t))}i(S4e,"mixinBody");async function fA(t,e,r){if(p4e.brandCheck(t,r),vZ(t))throw new TypeError("Body is unusable: Body has already been read");I4e(t[mA]);let n=l4e(),s=i(a=>n.reject(a),"errorSteps"),o=i(a=>{try{n.resolve(e(a))}catch(c){s(c)}},"successSteps");return t[mA].body==null?(o(Buffer.allocUnsafe(0)),n.promise):(await u4e(t[mA].body,o,s),n.promise)}i(fA,"consumeBody");function vZ(t){let e=t[mA].body;return e!=null&&(e.stream.locked||RE.isDisturbed(e.stream))}i(vZ,"bodyUnusable");function x4e(t){return JSON.parse(BZ(t))}i(x4e,"parseJSONFromBytes");function bZ(t){let e=t[mA].headersList,r=d4e(e);return r==="failure"?null:r}i(bZ,"bodyMimeType");_Z.exports={extractBody:PZ,safelyExtractBody:E4e,cloneBody:C4e,mixinBody:S4e,streamRegistry:TZ,hasFinalizationRegistry:NZ,bodyUnusable:vZ}});var YZ=w((d4t,WZ)=>{"use strict";var Ae=require("node:assert"),ce=ze(),{channels:QZ}=rA(),mU=JF(),{RequestContentLengthMismatchError:Pp,ResponseContentLengthMismatchError:DZ,RequestAbortedError:GZ,InvalidArgumentError:b4e,HeadersTimeoutError:B4e,HeadersOverflowError:R4e,SocketError:hA,InformationalError:vp,BodyTimeoutError:N4e,HTTPParserError:T4e,ResponseExceededMaxSizeError:P4e}=it(),{kUrl:$Z,kReset:ws,kClient:Gb,kParser:_t,kBlocking:PE,kRunning:Tr,kPending:HZ,kSize:kZ,kWriting:Ru,kQueue:Di,kNoRef:NE,kKeepAliveDefaultTimeout:v4e,kHostHeader:_4e,kPendingIdx:Q4e,kRunningIdx:qo,kError:Xn,kPipelining:$b,kSocket:_p,kKeepAliveTimeoutValue:zb,kMaxHeadersSize:AU,kKeepAliveMaxTimeout:D4e,kKeepAliveTimeoutThreshold:k4e,kHeadersTimeout:L4e,kBodyTimeout:O4e,kStrictContentLength:yU,kMaxRequests:LZ,kCounter:M4e,kMaxResponseSize:F4e,kOnError:OZ,kResume:Rl,kHTTPContext:zZ}=qt(),to=T7(),MZ=Buffer.alloc(0),Fb=Buffer[Symbol.species],Ub=ce.addListener,U4e=ce.removeAllListeners,Qp=Symbol("kIdleSocketValidation"),gA=Symbol("kIdleSocketValidationTimeout"),wU=Symbol("kSocketUsed"),hU;async function q4e(){let t=process.env.JEST_WORKER_ID?XF():void 0,e;try{e=await WebAssembly.compile(_7())}catch{e=await WebAssembly.compile(t||XF())}return await WebAssembly.instantiate(e,{env:{wasm_on_url:i((r,n,s)=>0,"wasm_on_url"),wasm_on_status:i((r,n,s)=>{Ae(sr.ptr===r);let o=n-Qa+_a.byteOffset;return sr.onStatus(new Fb(_a.buffer,o,s))||0},"wasm_on_status"),wasm_on_message_begin:i(r=>(Ae(sr.ptr===r),sr.onMessageBegin()||0),"wasm_on_message_begin"),wasm_on_header_field:i((r,n,s)=>{Ae(sr.ptr===r);let o=n-Qa+_a.byteOffset;return sr.onHeaderField(new Fb(_a.buffer,o,s))||0},"wasm_on_header_field"),wasm_on_header_value:i((r,n,s)=>{Ae(sr.ptr===r);let o=n-Qa+_a.byteOffset;return sr.onHeaderValue(new Fb(_a.buffer,o,s))||0},"wasm_on_header_value"),wasm_on_headers_complete:i((r,n,s,o)=>(Ae(sr.ptr===r),sr.onHeadersComplete(n,!!s,!!o)||0),"wasm_on_headers_complete"),wasm_on_body:i((r,n,s)=>{Ae(sr.ptr===r);let o=n-Qa+_a.byteOffset;retu
Line truncated
|
||||||
|
`;if(typeof s=="string"?h+=`host: ${s}\r
|
||||||
|
`:h+=t[_4e],o?h+=`connection: upgrade\r
|
||||||
|
upgrade: ${o}\r
|
||||||
|
`:t[$b]&&!m[ws]?h+=`connection: keep-alive\r
|
||||||
|
`:h+=`connection: close\r
|
||||||
|
`,Array.isArray(u))for(let E=0;E<u.length;E+=2){let y=u[E+0],I=u[E+1];if(Array.isArray(I))for(let x=0;x<I.length;x++)h+=`${y}: ${I[x]}\r
|
||||||
|
`;else h+=`${y}: ${I}\r
|
||||||
|
`}return QZ.sendHeaders.hasSubscribers&&QZ.sendHeaders.publish({request:e,headers:h,socket:m}),!l||f===0?UZ(A,null,t,e,m,d,h,p):ce.isBuffer(l)?UZ(A,l,t,e,m,d,h,p):ce.isBlobLike(l)?typeof l.stream=="function"?qZ(A,l.stream(),t,e,m,d,h,p):J4e(A,l,t,e,m,d,h,p):ce.isStream(l)?Y4e(A,l,t,e,m,d,h,p):ce.isIterable(l)?qZ(A,l,t,e,m,d,h,p):Ae(!1),!0}i(W4e,"writeH1");function Y4e(t,e,r,n,s,o,a,c){Ae(o!==0||r[Tr]===0,"stream body cannot be pipelined");let l=!1,u=new Vb({abort:t,socket:s,request:n,contentLength:o,client:r,expectsPayload:c,header:a}),d=i(function(A){if(!l)try{!u.write(A)&&this.pause&&this.pause()}catch(h){ce.destroy(this,h)}},"onData"),p=i(function(){l||e.resume&&e.resume()},"onDrain"),f=i(function(){if(queueMicrotask(()=>{e.removeListener("error",m)}),!l){let A=new GZ;queueMicrotask(()=>m(A))}},"onClose"),m=i(function(A){if(!l){if(l=!0,Ae(s.destroyed||s[Ru]&&r[Tr]<=1),s.off("drain",p).off("error",m),e.removeListener("data",d).removeListener("end",m).removeListener("close",f),!A)try{u.end()}catch(h){A=h}u.destroy(A),A&&(A.code!=="UND_ERR_INFO"||A.message!=="reset")?ce.destroy(e,A):ce.destroy(e)}},"onFinished");e.on("data",d).on("end",m).on("error",m).on("close",f),e.resume&&e.resume(),s.on("drain",p).on("error",m),e.errorEmitted??e.errored?setImmediate(()=>m(e.errored)):(e.endEmitted??e.readableEnded)&&setImmediate(()=>m(null)),(e.closeEmitted??e.closed)&&setImmediate(f)}i(Y4e,"writeStream");function UZ(t,e,r,n,s,o,a,c){try{e?ce.isBuffer(e)&&(Ae(o===e.byteLength,"buffer body must have content length"),s.cork(),s.write(`${a}content-length: ${o}\r
|
||||||
|
\r
|
||||||
|
`,"latin1"),s.write(e),s.uncork(),n.onBodySent(e),!c&&n.reset!==!1&&(s[ws]=!0)):o===0?s.write(`${a}content-length: 0\r
|
||||||
|
\r
|
||||||
|
`,"latin1"):(Ae(o===null,"no body must not have content length"),s.write(`${a}\r
|
||||||
|
`,"latin1")),n.onRequestSent(),r[Rl]()}catch(l){t(l)}}i(UZ,"writeBuffer");async function J4e(t,e,r,n,s,o,a,c){Ae(o===e.size,"blob body must have content length");try{if(o!=null&&o!==e.size)throw new Pp;let l=Buffer.from(await e.arrayBuffer());s.cork(),s.write(`${a}content-length: ${o}\r
|
||||||
|
\r
|
||||||
|
`,"latin1"),s.write(l),s.uncork(),n.onBodySent(l),n.onRequestSent(),!c&&n.reset!==!1&&(s[ws]=!0),r[Rl]()}catch(l){t(l)}}i(J4e,"writeBlob");async function qZ(t,e,r,n,s,o,a,c){Ae(o!==0||r[Tr]===0,"iterator body cannot be pipelined");let l=null;function u(){if(l){let f=l;l=null,f()}}i(u,"onDrain");let d=i(()=>new Promise((f,m)=>{Ae(l===null),s[Xn]?m(s[Xn]):l=f}),"waitForDrain");s.on("close",u).on("drain",u);let p=new Vb({abort:t,socket:s,request:n,contentLength:o,client:r,expectsPayload:c,header:a});try{for await(let f of e){if(s[Xn])throw s[Xn];p.write(f)||await d()}p.end()}catch(f){p.destroy(f)}finally{s.off("close",u).off("drain",u)}}i(qZ,"writeIterable");var Vb=class{static{i(this,"AsyncWriter")}constructor({abort:e,socket:r,request:n,contentLength:s,client:o,expectsPayload:a,header:c}){this.socket=r,this.request=n,this.contentLength=s,this.client=o,this.bytesWritten=0,this.expectsPayload=a,this.header=c,this.abort=e,r[Ru]=!0}write(e){let{socket:r,request:n,contentLength:s,client:o,bytesWritten:a,expectsPayload:c,header:l}=this;if(r[Xn])throw r[Xn];if(r.destroyed)return!1;let u=Buffer.byteLength(e);if(!u)return!0;if(s!==null&&a+u>s){if(o[yU])throw new Pp;process.emitWarning(new Pp)}r.cork(),a===0&&(!c&&n.reset!==!1&&(r[ws]=!0),s===null?r.write(`${l}transfer-encoding: chunked\r
|
||||||
|
`,"latin1"):r.write(`${l}content-length: ${s}\r
|
||||||
|
\r
|
||||||
|
`,"latin1")),s===null&&r.write(`\r
|
||||||
|
${u.toString(16)}\r
|
||||||
|
`,"latin1"),this.bytesWritten+=u;let d=r.write(e);return r.uncork(),n.onBodySent(e),d||r[_t].timeout&&r[_t].timeoutType===yA&&r[_t].timeout.refresh&&r[_t].timeout.refresh(),d}end(){let{socket:e,contentLength:r,client:n,bytesWritten:s,expectsPayload:o,header:a,request:c}=this;if(c.onRequestSent(),e[Ru]=!1,e[Xn])throw e[Xn];if(!e.destroyed){if(s===0?o?e.write(`${a}content-length: 0\r
|
||||||
|
\r
|
||||||
|
`,"latin1"):e.write(`${a}\r
|
||||||
|
`,"latin1"):r===null&&e.write(`\r
|
||||||
|
0\r
|
||||||
|
\r
|
||||||
|
`,"latin1"),r!==null&&s!==r){if(n[yU])throw new Pp;process.emitWarning(new Pp)}e[_t].timeout&&e[_t].timeoutType===yA&&e[_t].timeout.refresh&&e[_t].timeout.refresh(),n[Rl]()}}destroy(e){let{socket:r,client:n,abort:s}=this;r[Ru]=!1,e&&(Ae(n[Tr]<=1,"pipeline should only contain this request"),s(e))}};WZ.exports=$4e});var ree=w((f4t,tee)=>{"use strict";var ka=require("node:assert"),{errorMonitor:SU}=require("node:events"),{pipeline:j4e}=require("node:stream"),Je=ze(),{RequestContentLengthMismatchError:bU,RequestAbortedError:xU,SocketError:vE,InformationalError:Wb}=it(),{kUrl:Yb,kReset:jb,kClient:EA,kRunning:Kb,kPending:K4e,kQueue:Dp,kPendingIdx:RU,kRunningIdx:Da,kError:Li,kSocket:Xr,kStrictContentLength:X4e,kOnError:NU,kMaxConcurrentStreams:ZZ,kHTTP2Session:ki,kResume:Tu,kSize:Z4e,kHTTPContext:eWe}=qt(),Nu=Symbol("open streams"),JZ,jZ=!1,Jb;try{Jb=require("node:http2")}catch{Jb={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:tWe,HTTP2_HEADER_METHOD:rWe,HTTP2_HEADER_PATH:nWe,HTTP2_HEADER_SCHEME:sWe,HTTP2_HEADER_CONTENT_LENGTH:oWe,HTTP2_HEADER_EXPECT:iWe,HTTP2_HEADER_STATUS:BU}}=Jb;function eee(t){let e=[];for(let[r,n]of Object.entries(t))if(Array.isArray(n))for(let s of n)e.push(Buffer.from(r),Buffer.from(s));else e.push(Buffer.from(r),Buffer.from(n));return e}i(eee,"parseH2Headers");function aWe(t){let{[BU]:e,...r}=t;return eee(r)}i(aWe,"parseH2ResponseHeaders");async function cWe(t,e){t[Xr]=e,jZ||(jZ=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let r=Jb.connect(t[Yb],{createConnection:i(()=>e,"createConnection"),peerMaxConcurrentStreams:t[ZZ]});r[Nu]=0,r[EA]=t,r[Xr]=e,Je.addListener(r,"error",uWe),Je.addListener(r,"frameError",dWe),Je.addListener(r,"end",pWe),Je.addListener(r,"goaway",fWe),Je.addListener(r,"close",function(){let{[EA]:s}=this,{[Xr]:o}=s,a=this[Xr][Li]||this[Li]||new vE("closed",Je.getSocketInfo(o));if(s[ki]=null,s.destroyed){ka(s[K4e]===0);let c=s[Dp].splice(s[Da]);for(let l=0;l<c.length;l++){let u=c[l];Je.errorRequest(s,u,a)}}}),r.unref(),t[ki]=r,e[ki]=r,Je.addListener(e,"error",function(s){this[Li]=s,this[EA][NU](s)}),Je.addListener(e,"end",function(){Je.destroy(this,new vE("other side closed",Je.getSocketInfo(this)))}),Je.addListener(e,"close",function(){let s=this[Li]||new vE("closed",Je.getSocketInfo(this));t[Xr]=null,this[ki]!=null&&this[ki].destroy(s),t[RU]=t[Da],ka(t[Kb]===0),t.emit("disconnect",t[Yb],[t],s),t[Tu]()});let n=!1;return e.on("close",()=>{n=!0}),{version:"h2",defaultPipelining:1/0,write(...s){return AWe(t,...s)},resume(){lWe(t)},destroy(s,o){n?queueMicrotask(o):e.destroy(s).on("close",o)},get destroyed(){return e.destroyed},busy(){return!1}}}i(cWe,"connectH2");function lWe(t){let e=t[Xr];e?.destroyed===!1&&(t[Z4e]===0&&t[ZZ]===0?(e.unref(),t[ki].unref()):(e.ref(),t[ki].ref()))}i(lWe,"resumeH2");function uWe(t){this[Xr][Li]=t,this[EA][NU](t)}i(uWe,"onHttp2SessionError");function dWe(t,e,r){if(r===0){let n=new Wb(`HTTP/2: "frameError" received - type ${t}, code ${e}`);this[Xr][Li]=n,this[EA][NU](n)}}i(dWe,"onHttp2FrameError");function pWe(){let t=new vE("other side closed",Je.getSocketInfo(this[Xr]));this.destroy(t),Je.destroy(this[Xr],t)}i(pWe,"onHttp2SessionEnd");function fWe(t){let e=this[Li]||new vE(`HTTP/2: "GOAWAY" frame received with code ${t}`,Je.getSocketInfo(this)),r=this[EA];if(r[Xr]=null,r[eWe]=null,this[ki]!=null&&(this[ki].destroy(e),this[ki]=null),Je.destroy(this[Xr],e),r[Da]<r[Dp].length){let n=r[Dp][r[Da]];r[Dp][r[Da]++]=null,Je.errorRequest(r,n,e),r[RU]=r[Da]}ka(r[Kb]===0),r.emit("disconnect",r[Yb],[r],e),r[Tu]()}i(fWe,"onHTTP2GoAway");function mWe(t){return t!=="GET"&&t!=="HEAD"&&t!=="OPTIONS"&&t!=="TRACE"&&t!=="CONNECT"}i(mWe,"shouldSendContentLength");function AWe(t,e){let r=t[ki],{method:n,path:s,host:o,upgrade:a,expectContinue:c,signal:l,headers:u}=e,{body:d}=e;if(a)return Je.errorRequest(t,e,new Error("Upgrade not supported for H2")),!1;let p={};for(let b=0;b<u.length;b+=2){let N=u[b+0],v=u[b+1];if(Array.isArray(v))for(let _=0;_<v.length;_++)p[N]?p[N]+=`,${v[_]}`:p[N]=v[_];else p[N]=v}let f,{hostname:m,port:A}=t[Yb];p[tWe]=o||`${m}${A?`:${A}`:""}`,p[rWe]=n;let h=i(b=>{if(!e.aborted){if(e.completed){n==="CONNECT"&&f!=null&&Je.destroy(f,b||new xU);return}b=b||new xU,Je.errorRequest(t,e,b),f!=null&&Je.destroy(f,b),Je.destroy(d,b),t[Dp][t[Da]++]=null,t[Tu]()}},"abort");try{e.onConnect(h)}catch(b){Je.errorRequest(t,e,b)}if(e.aborted)return!1;if(n==="CONNECT"){r.ref(),f=r.request(p,{endStream:!1,signal:l});let b=!1,N=i(J=>{b=!0,f.off(SU,v),e.onUpgradeResponse(Number(J[BU]),J,aWe)},"onResponse"),v=i(J=>{b=!0,f.off("response",N),e.onUpgradeError(J)},"onUpgradeError"),_=i(()=>{try{e.onUpgrade(null,null,f)}catch(J){f.off("response",N),h(J);return}e.aborted||(f.off("error",h),f.once(SU,v),t[Dp][t[Da]++]=null)},"onReady");return f.once("response",N),f.once("error",h),++r[Nu],_(),f.once("close",()=>{!b&&e.completed&&(f.off("response",N),f.off(SU,v),e.onUpgradeError(new Wb(`HTTP/2: "stream error"
Line truncated
|
||||||
|
`,this[qWe]=l??3e5,this[UWe]=s??3e5,this[GWe]=I??!0,this[$We]=b,this[_U]=v,this[vu]=null,this[YWe]=J>-1?J:-1,this[jWe]=Fe??100,this[yr]=null,this[Oi]=[],this[Tl]=0,this[Mi]=0,this[kE]=et=>DU(this,et),this[JWe]=et=>mee(this,et)}get pipelining(){return this[t0]}set pipelining(e){this[t0]=e,this[kE](!0)}get[ME](){return this[Oi].length-this[Mi]}get[OE](){return this[Mi]-this[Tl]}get[LE](){return this[Oi].length-this[Tl]}get[QWe](){return!!this[yr]&&!this[IA]&&!this[yr].destroyed}get[vU](){return!!(this[yr]?.busy(null)||this[LE]>=(fee(this)||1)||this[ME]>0)}[_We](e){Aee(this),this.once("connect",e)}[WWe](e,r){let n=e.origin||this[Oa].origin,s=new BWe(n,e,r);return this[Oi].push(s),this[Lp]||(kp.bodyLength(s.body)==null&&kp.isIterable(s.body)?(this[Lp]=1,queueMicrotask(()=>DU(this))):this[kE](!0)),this[Lp]&&this[_u]!==2&&this[vU]&&(this[_u]=2),this[_u]<2}async[zWe](){return new Promise(e=>{this[LE]?this[vu]=e:e(null)})}async[VWe](e){return new Promise(r=>{let n=this[Oi].splice(this[Mi]);for(let o=0;o<n.length;o++){let a=n[o];kp.errorRequest(this,a,e)}let s=i(()=>{this[vu]&&(this[vu](),this[vu]=null),r(null)},"callback");this[yr]?(this[yr].destroy(e,s),this[yr]=null):queueMicrotask(s),this[kE]()})}},ZWe=e0();function mee(t,e){if(t[OE]===0&&e.code!=="UND_ERR_INFO"&&e.code!=="UND_ERR_SOCKET"){Nl(t[Mi]===t[Tl]);let r=t[Oi].splice(t[Tl]);for(let n=0;n<r.length;n++){let s=r[n];kp.errorRequest(t,s,e)}Nl(t[LE]===0)}}i(mee,"onError");async function Aee(t){Nl(!t[IA]),Nl(!t[yr]);let{host:e,hostname:r,protocol:n,port:s}=t[Oa];if(r[0]==="["){let o=r.indexOf("]");Nl(o!==-1);let a=r.substring(1,o);Nl(pee.isIP(a)),r=a}t[IA]=!0,CA.beforeConnect.hasSubscribers&&CA.beforeConnect.publish({connectParams:{host:e,hostname:r,protocol:n,port:s,version:t[yr]?.version,servername:t[Pu],localAddress:t[DE]},connector:t[QE]});try{let o=await new Promise((a,c)=>{t[QE]({host:e,hostname:r,protocol:n,port:s,servername:t[Pu],localAddress:t[DE]},(l,u)=>{l?c(l):a(u)})});if(t.destroyed){kp.destroy(o.on("error",uee),new TWe);return}Nl(o);try{t[yr]=o.alpnProtocol==="h2"?await XWe(t,o):await KWe(t,o)}catch(a){throw o.destroy().on("error",uee),a}t[IA]=!1,o[HWe]=0,o[_U]=t[_U],o[vWe]=t,o[kWe]=null,CA.connected.hasSubscribers&&CA.connected.publish({connectParams:{host:e,hostname:r,protocol:n,port:s,version:t[yr]?.version,servername:t[Pu],localAddress:t[DE]},connector:t[QE],socket:o}),t.emit("connect",t[Oa],[t])}catch(o){if(t.destroyed)return;if(t[IA]=!1,CA.connectError.hasSubscribers&&CA.connectError.publish({connectParams:{host:e,hostname:r,protocol:n,port:s,version:t[yr]?.version,servername:t[Pu],localAddress:t[DE]},connector:t[QE],error:o}),o.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(Nl(t[OE]===0);t[ME]>0&&t[Oi][t[Mi]].servername===t[Pu];){let a=t[Oi][t[Mi]++];kp.errorRequest(t,a,o)}else mee(t,o);t.emit("connectionError",t[Oa],[t],o)}t[kE]()}i(Aee,"connect");function dee(t){t[_u]=0,t.emit("drain",t[Oa],[t])}i(dee,"emitDrain");function DU(t,e){t[Lp]!==2&&(t[Lp]=2,eYe(t,e),t[Lp]=0,t[Tl]>256&&(t[Oi].splice(0,t[Tl]),t[Mi]-=t[Tl],t[Tl]=0))}i(DU,"resume");function eYe(t,e){for(;;){if(t.destroyed){Nl(t[ME]===0);return}if(t[vu]&&!t[LE]){t[vu](),t[vu]=null;return}if(t[yr]&&t[yr].resume(),t[vU])t[_u]=2;else if(t[_u]===2){e?(t[_u]=1,queueMicrotask(()=>dee(t))):dee(t);continue}if(t[ME]===0||t[OE]>=(fee(t)||1))return;let r=t[Oi][t[Mi]];if(t[Oa].protocol==="https:"&&t[Pu]!==r.servername){if(t[OE]>0)return;t[Pu]=r.servername,t[yr]?.destroy(new NWe("servername changed"),()=>{t[yr]=null,DU(t)})}if(t[IA])return;if(!t[yr]){Aee(t);return}if(t[yr].destroyed||t[yr].busy(r))return;!r.aborted&&t[yr].write(r)?t[Mi]++:t[Oi].splice(t[Mi],1)}}i(eYe,"_resume");hee.exports=QU});var kU=w((w4t,gee)=>{"use strict";var r0=class{static{i(this,"FixedCircularBuffer")}constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(e){this.list[this.top]=e,this.top=this.top+1&2047}shift(){let e=this.list[this.bottom];return e===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,e)}};gee.exports=class{static{i(this,"FixedQueue")}constructor(){this.head=this.tail=new r0}isEmpty(){return this.head.isEmpty()}push(e){this.head.isFull()&&(this.head=this.head.next=new r0),this.head.push(e)}shift(){let e=this.tail,r=e.shift();return e.isEmpty()&&e.next!==null&&(this.tail=e.next),r}}});var Eee=w((x4t,yee)=>{var{kFree:tYe,kConnected:rYe,kPending:nYe,kQueued:sYe,kRunning:oYe,kSize:iYe}=qt(),Op=Symbol("pool"),LU=class{static{i(this,"PoolStats")}constructor(e){this[Op]=e}get connected(){return this[Op][rYe]}get free(){return this[Op][tYe]}get pending(){return this[Op][nYe]}get queued(){return this[Op][sYe]}get running(){return this[Op][oYe]}get size(){return this[Op][iYe]}};yee.exports=LU});var GU=w((B4t,Tee)=>{"use strict";var aYe=iA(),cYe=kU(),{kConnected:OU,kSize:Cee,kRunning:Iee,kPending:wee,kQueued:FE,kBusy:lYe,kFree:uYe,kUrl:dYe,kClose:pYe,kDestroy:fYe,kDispatch:mYe}=qt
Line truncated
|
||||||
|
${n.count} ${n.noun} ${n.is} pending:
|
||||||
|
|
||||||
|
${e.format(r)}
|
||||||
|
`.trim())}};Lre.exports=G1});var JE=w((xWt,qre)=>{"use strict";var Mre=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:qJe}=it(),GJe=xA();Ure()===void 0&&Fre(new GJe);function Fre(t){if(!t||typeof t.dispatch!="function")throw new qJe("Argument agent must implement Agent");Object.defineProperty(globalThis,Mre,{value:t,writable:!0,enumerable:!1,configurable:!1})}i(Fre,"setGlobalDispatcher");function Ure(){return globalThis[Mre]}i(Ure,"getGlobalDispatcher");qre.exports={setGlobalDispatcher:Fre,getGlobalDispatcher:Ure}});var C0=w((RWt,Gre)=>{"use strict";Gre.exports=class{static{i(this,"DecoratorHandler")}#e;constructor(e){if(typeof e!="object"||e===null)throw new TypeError("handler must be an object");this.#e=e}onConnect(...e){return this.#e.onConnect?.(...e)}onError(...e){return this.#e.onError?.(...e)}onUpgrade(...e){return this.#e.onUpgrade?.(...e)}onResponseStarted(...e){return this.#e.onResponseStarted?.(...e)}onHeaders(...e){return this.#e.onHeaders?.(...e)}onData(...e){return this.#e.onData?.(...e)}onComplete(...e){return this.#e.onComplete?.(...e)}onBodySent(...e){return this.#e.onBodySent?.(...e)}}});var Hre=w((TWt,$re)=>{"use strict";var $Je=Zb();$re.exports=t=>{let e=t?.maxRedirections;return r=>i(function(s,o){let{maxRedirections:a=e,...c}=s;if(!a)return r(s,o);let l=new $Je(r,a,s,o);return r(c,l)},"redirectInterceptor")}});var Vre=w((vWt,zre)=>{"use strict";var HJe=u0();zre.exports=t=>e=>i(function(n,s){return e(n,new HJe({...n,retryOptions:{...t,...n.retryOptions}},{handler:s,dispatch:e}))},"retryInterceptor")});var Yre=w((QWt,Wre)=>{"use strict";var zJe=ze(),{InvalidArgumentError:VJe,RequestAbortedError:WJe}=it(),YJe=C0(),$1=class extends YJe{static{i(this,"DumpHandler")}#e=1024*1024;#t=null;#n=!1;#r=!1;#s=0;#o=null;#i=null;constructor({maxSize:e},r){if(super(r),e!=null&&(!Number.isFinite(e)||e<1))throw new VJe("maxSize must be a number greater than 0");this.#e=e??this.#e,this.#i=r}onConnect(e){this.#t=e,this.#i.onConnect(this.#a.bind(this))}#a(e){this.#r=!0,this.#o=e}onHeaders(e,r,n,s){let a=zJe.parseHeaders(r)["content-length"];if(a!=null&&a>this.#e)throw new WJe(`Response size (${a}) larger than maxSize (${this.#e})`);return this.#r?!0:this.#i.onHeaders(e,r,n,s)}onError(e){this.#n||(e=this.#o??e,this.#i.onError(e))}onData(e){return this.#s=this.#s+e.length,this.#s>=this.#e&&(this.#n=!0,this.#r?this.#i.onError(this.#o):this.#i.onComplete([])),!0}onComplete(e){if(!this.#n){if(this.#r){this.#i.onError(this.reason);return}this.#i.onComplete(e)}}};function JJe({maxSize:t}={maxSize:1024*1024}){return e=>i(function(n,s){let{dumpMaxSize:o=t}=n,a=new $1({maxSize:o},s);return e(n,a)},"Intercept")}i(JJe,"createDumpInterceptor");Wre.exports=JJe});var Kre=w((kWt,jre)=>{"use strict";var{isIP:jJe}=require("node:net"),{lookup:KJe}=require("node:dns"),XJe=C0(),{InvalidArgumentError:QA,InformationalError:ZJe}=it(),Jre=Math.pow(2,31)-1,H1=class{static{i(this,"DNSInstance")}#e=0;#t=0;#n=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(e){this.#e=e.maxTTL,this.#t=e.maxItems,this.dualStack=e.dualStack,this.affinity=e.affinity,this.lookup=e.lookup??this.#r,this.pick=e.pick??this.#s}get full(){return this.#n.size===this.#t}runLookup(e,r,n){let s=this.#n.get(e.hostname);if(s==null&&this.full){n(null,e.origin);return}let o={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...r.dns,maxTTL:this.#e,maxItems:this.#t};if(s==null)this.lookup(e,o,(a,c)=>{if(a||c==null||c.length===0){n(a??new ZJe("No DNS entries found"));return}this.setRecords(e,c);let l=this.#n.get(e.hostname),u=this.pick(e,l,o.affinity),d;typeof u.port=="number"?d=`:${u.port}`:e.port!==""?d=`:${e.port}`:d="",n(null,`${e.protocol}//${u.family===6?`[${u.address}]`:u.address}${d}`)});else{let a=this.pick(e,s,o.affinity);if(a==null){this.#n.delete(e.hostname),this.runLookup(e,r,n);return}let c;typeof a.port=="number"?c=`:${a.port}`:e.port!==""?c=`:${e.port}`:c="",n(null,`${e.protocol}//${a.family===6?`[${a.address}]`:a.address}${c}`)}}#r(e,r,n){KJe(e.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(s,o)=>{if(s)return n(s);let a=new Map;for(let c of o)a.set(`${c.address}:${c.family}`,c);n(null,a.values())})}#s(e,r,n){let s=null,{records:o,offset:a}=r,c;if(this.dualStack?(n==null&&(a==null||a===Jre?(r.offset=0,n=4):(r.offset++,n=(r.offset&1)===1?6:4)),o[n]!=null&&o[n].ips.length>0?c=o[n]:c=o[n===4?6:4]):c=o[n],c==null||c.ips.length===0)return s;c.offset==null||c.offset===Jre?c.offset=0:c.offset++;let l=c.offset%c.ips.length;return s=c.ips[l]??null,s==null?s:Date.now()-s.timestamp>s.ttl?(c.ips.splice(l,1),this.pick(e,r,n)):s}setRecords(e,r){let n=Date.now(),s={records:{4:null,6:null}};for(let o of r){o.timestamp=n,typeof o.ttl=="number"?o.ttl=Math.min(o.ttl,this.#e):o.ttl=this.#e;let a=s.records[o.family]??{ips:[]};a.ips.push(o),s.records[o.family]=a}this.#n.set(e.hostname,s)}getHandler(e,r){return new z1(this,e,r)}},z1=class extends XJe{static{i(this,"DNSDispatchHan
Line truncated
|
||||||
|
${l}`,this.dataLineCount++;return}if(iB(e,s,mKe)){yKe(e,o)&&(this.setEventFieldSize("retry",e.length-o),r.retry=e.toString("utf8",o));return}if(iB(e,s,fKe)){EKe(e,o)&&(this.setEventFieldSize("id",e.length-o),r.id=e.toString("utf8",o));return}iB(e,s,pKe)&&o<e.length&&(this.setEventFieldSize("event",e.length-o),r.event=e.toString("utf8",o))}setEventFieldSize(e,r){let n=this.eventSize-this.eventFieldSizes[e]+r;if(this.maxEventSize>0&&n>this.maxEventSize)throw aB();this.eventSize=n,this.eventFieldSizes[e]=r}processEvent(e){e.retry&&iKe(e.retry)&&(this.state.reconnectionTime=parseInt(e.retry,10)),e.id&&aKe(e.id)&&(this.state.lastEventId=e.id),e.data!==void 0&&this.push({type:e.event||"message",options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event.data=void 0,this.event.event=void 0,this.event.id=void 0,this.event.retry=void 0,this.eventSize=0,this.dataLineCount=0,this.eventFieldSizes.data=0,this.eventFieldSizes.event=0,this.eventFieldSizes.id=0,this.eventFieldSizes.retry=0}hasPendingEvent(){return this.event.data!==void 0||this.event.event!==void 0||this.event.id!==void 0||this.event.retry!==void 0}hasCurrentByte(){return this.chunkIndex<this.chunks.length&&this.pos<this.chunks[this.chunkIndex].length}currentByte(){return this.chunks[this.chunkIndex][this.pos]}consumeCurrentByte(){this.advanceCursor(),this.syncLineStartToCursor()}advanceCursor(){for(this.pos++;this.chunkIndex<this.chunks.length&&this.pos>=this.chunks[this.chunkIndex].length;)this.chunkIndex++,this.pos=0}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex,this.linePos=this.pos,this.lineLength=0,this.dropConsumedChunks()}dropConsumedChunks(){if(this.lineChunkIndex>0){let e=this.lineChunkIndex;this.chunks.splice(0,e),this.lineChunkIndex=0,this.chunkIndex-=e}this.chunkIndex===this.chunks.length&&(this.chunks.length=0,this.chunkIndex=0,this.pos=0,this.lineChunkIndex=0,this.linePos=0)}readLine(){if(this.lineChunkIndex===this.chunkIndex)return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos);let e=[],r=0;for(let n=this.lineChunkIndex;n<=this.chunkIndex;n++){let s=this.chunks[n],o=n===this.lineChunkIndex?this.linePos:0,a=n===this.chunkIndex?this.pos:s.length,c=s.subarray(o,a);r+=c.length,e.push(c)}return Buffer.concat(e,r)}peekBufferedByte(e){let r=this.lineChunkIndex,n=this.linePos;for(;r<this.chunks.length;){let s=this.chunks[r],o=s.length-n;if(e<o)return s[n+e];e-=o,r++,n=0}}discardLeadingBytes(e){for(;e>0&&this.lineChunkIndex<this.chunks.length;){let n=this.chunks[this.lineChunkIndex].length-this.linePos;e<n?(this.linePos+=e,e=0):(e-=n,this.lineChunkIndex++,this.linePos=0)}this.chunkIndex=this.lineChunkIndex,this.pos=this.linePos,this.dropConsumedChunks()}handleBOM(){let e=this.peekBufferedByte(0),r=this.peekBufferedByte(1),n=this.peekBufferedByte(2);return r===void 0?(e===WA[0]||(this.checkBOM=!1),!0):n===void 0?e===WA[0]&&r===WA[1]?!0:(this.checkBOM=!1,!1):(e===WA[0]&&r===WA[1]&&n===WA[2]&&this.discardLeadingBytes(3),this.checkBOM=!1,!this.hasCurrentByte())}};Noe.exports={EventSourceStream:D2}});var Ooe=w((MYt,Loe)=>{"use strict";var{pipeline:CKe}=require("node:stream"),{fetching:IKe}=eC(),{makeRequest:wKe}=LA(),{webidl:Ql}=yn(),{EventSourceStream:SKe}=Toe(),{parseMIMEType:xKe}=Is(),{createFastMessageEvent:bKe}=GA(),{isNetworkError:Poe}=XE(),{delay:BKe}=Q2(),{kEnumerableProperty:Zp}=ze(),{environmentSettingsObject:voe}=eo(),{getGlobalDispatcher:RKe}=JE(),_oe=!1,Qoe=3e3,AC=0,Doe=1,hC=2,NKe="anonymous",TKe="use-credentials",YA=class t extends EventTarget{static{i(this,"EventSource")}#e={open:null,error:null,message:null};#t=null;#n=!1;#r=AC;#s=null;#o=null;#i;#a;constructor(e,r={}){super(),Ql.util.markAsUncloneable(this);let n="EventSource constructor";Ql.argumentLengthCheck(arguments,1,n),_oe||(_oe=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),e=Ql.converters.USVString(e,n,"url"),r=Ql.converters.EventSourceInitDict(r,n,"eventSourceInitDict"),this.#i=r.dispatcher,this.#a={lastEventId:"",reconnectionTime:Qoe};let s=voe,o;try{o=new URL(e,s.settingsObject.baseUrl),this.#a.origin=o.origin}catch(l){throw new DOMException(l,"SyntaxError")}this.#t=o.href;let a=NKe;r.withCredentials&&(a=TKe,this.#n=!0);let c={redirect:"follow",keepalive:!0,mode:"cors",credentials:a==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};c.client=voe.settingsObject,c.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],c.cache="no-store",c.initiator="other",c.urlList=[new URL(this.#t)],this.#s=wKe(c),this.#l()}get readyState(){return this.#r}get url(){return this.#t}get withCredentials(){return this.#n}#l(){if(this.#r===hC)return;this.#r=AC;let e={request:this.#s,dispatcher:this.#i},r=i(n=>{Poe(n)&&(this.dispatchEvent(new Event("error")),this.close()),this.#c()},"processEventSourceEndOfBody");e.processResponseEndOfBody=r,e.processResponse=n=>{if(Poe(n))if(n.aborted){this.close(),this.dispatchEvent(new Event("error"));retu
Line truncated
|
||||||
|
`).join(`
|
||||||
|
`+o),t.push(s+"m+"+SR.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=Ait()+e+" "+t[0]}i(mit,"formatArgs");function Ait(){return In.inspectOpts.hideDate?"":new Date().toISOString()+" "}i(Ait,"getDate");function hit(...t){return process.stderr.write(wR.format(...t)+`
|
||||||
|
`)}i(hit,"log");function git(t){t?process.env.DEBUG=t:delete process.env.DEBUG}i(git,"save");function yit(){return process.env.DEBUG}i(yit,"load");function Eit(t){t.inspectOpts={};let e=Object.keys(In.inspectOpts);for(let r=0;r<e.length;r++)t.inspectOpts[e[r]]=In.inspectOpts[e[r]]}i(Eit,"init");SR.exports=RG()(In);var{formatters:Dde}=SR.exports;Dde.o=function(t){return this.inspectOpts.colors=this.useColors,wR.inspect(t,this.inspectOpts).split(`
|
||||||
|
`).map(e=>e.trim()).join(" ")};Dde.O=function(t){return this.inspectOpts.colors=this.useColors,wR.inspect(t,this.inspectOpts)}});var Ef=w((X7t,PG)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?PG.exports=Nde():PG.exports=kde()});var Mde=w(vs=>{"use strict";var Cit=vs&&vs.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Iit=vs&&vs.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Lde=vs&&vs.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Cit(e,t,r);return Iit(e,t),e};Object.defineProperty(vs,"__esModule",{value:!0});vs.req=vs.json=vs.toBuffer=void 0;var wit=Lde(require("http")),Sit=Lde(require("https"));async function Ode(t){let e=0,r=[];for await(let n of t)e+=n.length,r.push(n);return Buffer.concat(r,e)}i(Ode,"toBuffer");vs.toBuffer=Ode;async function xit(t){let r=(await Ode(t)).toString("utf8");try{return JSON.parse(r)}catch(n){let s=n;throw s.message+=` (input: ${r})`,s}}i(xit,"json");vs.json=xit;function bit(t,e={}){let n=((typeof t=="string"?t:t.href).startsWith("https:")?Sit:wit).request(t,e),s=new Promise((o,a)=>{n.once("response",o).once("error",a).end()});return n.then=s.then.bind(s),n}i(bit,"req");vs.req=bit});var Gde=w(ho=>{"use strict";var Ude=ho&&ho.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Bit=ho&&ho.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),qde=ho&&ho.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Ude(e,t,r);return Bit(e,t),e},Rit=ho&&ho.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Ude(e,t,r)};Object.defineProperty(ho,"__esModule",{value:!0});ho.Agent=void 0;var Nit=qde(require("net")),Fde=qde(require("http")),Tit=require("https");Rit(Mde(),ho);var Ja=Symbol("AgentBaseInternalState"),vG=class extends Fde.Agent{static{i(this,"Agent")}constructor(e){super(e),this[Ja]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:r}=new Error;return typeof r!="string"?!1:r.split(`
|
||||||
|
`).some(n=>n.indexOf("(https.js:")!==-1||n.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let r=new Nit.Socket({writable:!1});return this.sockets[e].push(r),this.totalSocketCount++,r}decrementSockets(e,r){if(!this.sockets[e]||r===null)return;let n=this.sockets[e],s=n.indexOf(r);s!==-1&&(n.splice(s,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return(typeof e.secureEndpoint=="boolean"?e.secureEndpoint:this.isSecureEndpoint(e))?Tit.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,r,n){let s={...r,secureEndpoint:this.isSecureEndpoint(r)},o=this.getName(s),a=this.incrementSockets(o);Promise.resolve().then(()=>this.connect(e,s)).then(c=>{if(this.decrementSockets(o,a),c instanceof Fde.Agent)try{return c.addRequest(e,s)}catch(l){return n(l)}this[Ja].currentSocket=c,super.createSocket(e,r,n)},c=>{this.decrementSockets(o,a),n(c)})}createConnection(){let e=this[Ja].currentSocket;if(this[Ja].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[Ja].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[Ja]&&(this[Ja].defaultPort=e)}get protocol(){return this[Ja].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[Ja]&&(this[Ja].protocol=e)}};ho.Agent=vG});var $de=w(Ah=>{"use strict";var Pit=Ah&&Ah.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ah,"__esModule",{value:!0});Ah.parseProxyResponse=void 0;var vit=Pit(Ef()),xR=(0,vit.default)("https-proxy-agent:parse-proxy-response");function _it(t){return new Promise((e,r)=>{let n=0,s=[];function o(){let d=t.read();d?u(d):t.once("readable",o)}i(o,"read");function a(){t.removeListener("end",c),t.removeListener("error",l),t.removeListener("readable",o)}i(a,"cleanup");function c(){a(),xR("onend"),r(new Error("Proxy connection ended before receiving CONNECT response"))}i(c,"onend");function l(d){a(),xR("onerror %o",d),r(d)}i(l,"onerror");function u(d){s.push(d),n+=d.length;let p=Buffer.concat(s,n),f=p.indexOf(`\r
|
||||||
|
\r
|
||||||
|
`);if(f===-1){xR("have not received end of HTTP headers yet..."),o();return}let m=p.slice(0,f).toString("ascii").split(`\r
|
||||||
|
`),A=m.shift();if(!A)return t.destroy(),r(new Error("No header received from proxy CONNECT response"));let h=A.split(" "),E=+h[1],y=h.slice(2).join(" "),I={};for(let x of m){if(!x)continue;let b=x.indexOf(":");if(b===-1)return t.destroy(),r(new Error(`Invalid header from proxy CONNECT response: "${x}"`));let N=x.slice(0,b).toLowerCase(),v=x.slice(b+1).trimStart(),_=I[N];typeof _=="string"?I[N]=[_,v]:Array.isArray(_)?_.push(v):I[N]=v}xR("got proxy server response: %o %o",A,I),a(),e({connect:{statusCode:E,statusText:y,headers:I},buffered:p})}i(u,"ondata"),t.on("error",l),t.on("end",c),o()})}i(_it,"parseProxyResponse");Ah.parseProxyResponse=_it});var Jde=w(ti=>{"use strict";var Qit=ti&&ti.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Dit=ti&&ti.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Wde=ti&&ti.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&Qit(e,t,r);return Dit(e,t),e},Yde=ti&&ti.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ti,"__esModule",{value:!0});ti.HttpsProxyAgent=void 0;var bR=Wde(require("net")),Hde=Wde(require("tls")),kit=Yde(require("assert")),Lit=Yde(Ef()),Oit=Gde(),Mit=require("url"),Fit=$de(),oI=(0,Lit.default)("https-proxy-agent"),zde=i(t=>t.servername===void 0&&t.host&&!bR.isIP(t.host)?{...t,servername:t.host}:t,"setServernameFromNonIpHost"),BR=class extends Oit.Agent{static{i(this,"HttpsProxyAgent")}constructor(e,r){super(r),this.options={path:void 0},this.proxy=typeof e=="string"?new Mit.URL(e):e,this.proxyHeaders=r?.headers??{},oI("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),s=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...r?Vde(r,"headers"):null,host:n,port:s}}async connect(e,r){let{proxy:n}=this;if(!r.host)throw new TypeError('No "host" provided');let s;n.protocol==="https:"?(oI("Creating `tls.Socket`: %o",this.connectOpts),s=Hde.connect(zde(this.connectOpts))):(oI("Creating `net.Socket`: %o",this.connectOpts),s=bR.connect(this.connectOpts));let o=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},a=bR.isIPv6(r.host)?`[${r.host}]`:r.host,c=`CONNECT ${a}:${r.port} HTTP/1.1\r
|
||||||
|
`;if(n.username||n.password){let f=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;o["Proxy-Authorization"]=`Basic ${Buffer.from(f).toString("base64")}`}o.Host=`${a}:${r.port}`,o["Proxy-Connection"]||(o["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let f of Object.keys(o))c+=`${f}: ${o[f]}\r
|
||||||
|
`;let l=(0,Fit.parseProxyResponse)(s);s.write(`${c}\r
|
||||||
|
`);let{connect:u,buffered:d}=await l;if(e.emit("proxyConnect",u),this.emit("proxyConnect",u,e),u.statusCode===200)return e.once("socket",Uit),r.secureEndpoint?(oI("Upgrading socket connection to TLS"),Hde.connect({...Vde(zde(r),"host","path","port"),socket:s})):s;s.destroy();let p=new bR.Socket({writable:!1});return p.readable=!0,e.once("socket",f=>{oI("Replaying proxy buffer for failed request"),(0,kit.default)(f.listenerCount("data")>0),f.push(d),f.push(null)}),p}};BR.protocols=["http","https"];ti.HttpsProxyAgent=BR;function Uit(t){t.resume()}i(Uit,"resume");function Vde(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}i(Vde,"omit")});var Xde=w(_s=>{"use strict";var qit=_s&&_s.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Git=_s&&_s.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),jde=_s&&_s.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&qit(e,t,r);return Git(e,t),e};Object.defineProperty(_s,"__esModule",{value:!0});_s.req=_s.json=_s.toBuffer=void 0;var $it=jde(require("http")),Hit=jde(require("https"));async function Kde(t){let e=0,r=[];for await(let n of t)e+=n.length,r.push(n);return Buffer.concat(r,e)}i(Kde,"toBuffer");_s.toBuffer=Kde;async function zit(t){let r=(await Kde(t)).toString("utf8");try{return JSON.parse(r)}catch(n){let s=n;throw s.message+=` (input: ${r})`,s}}i(zit,"json");_s.json=zit;function Vit(t,e={}){let n=((typeof t=="string"?t:t.href).startsWith("https:")?Hit:$it).request(t,e),s=new Promise((o,a)=>{n.once("response",o).once("error",a).end()});return n.then=s.then.bind(s),n}i(Vit,"req");_s.req=Vit});var tpe=w(go=>{"use strict";var epe=go&&go.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Wit=go&&go.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Yit=go&&go.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&epe(e,t,r);return Wit(e,t),e},Jit=go&&go.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&epe(e,t,r)};Object.defineProperty(go,"__esModule",{value:!0});go.Agent=void 0;var Zde=Yit(require("http"));Jit(Xde(),go);var ja=Symbol("AgentBaseInternalState"),_G=class extends Zde.Agent{static{i(this,"Agent")}constructor(e){super(e),this[ja]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:r}=new Error;return typeof r!="string"?!1:r.split(`
|
||||||
|
`).some(n=>n.indexOf("(https.js:")!==-1||n.indexOf("node:https:")!==-1)}createSocket(e,r,n){let s={...r,secureEndpoint:this.isSecureEndpoint(r)};Promise.resolve().then(()=>this.connect(e,s)).then(o=>{if(o instanceof Zde.Agent)return o.addRequest(e,s);this[ja].currentSocket=o,super.createSocket(e,r,n)},n)}createConnection(){let e=this[ja].currentSocket;if(this[ja].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[ja].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[ja]&&(this[ja].defaultPort=e)}get protocol(){return this[ja].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[ja]&&(this[ja].protocol=e)}};go.Agent=_G});var spe=w(ri=>{"use strict";var jit=ri&&ri.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),Kit=ri&&ri.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),npe=ri&&ri.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.prototype.hasOwnProperty.call(t,r)&&jit(e,t,r);return Kit(e,t),e},Xit=ri&&ri.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ri,"__esModule",{value:!0});ri.HttpProxyAgent=void 0;var Zit=npe(require("net")),eat=npe(require("tls")),tat=Xit(Ef()),rat=require("events"),nat=tpe(),rpe=require("url"),hh=(0,tat.default)("http-proxy-agent"),RR=class extends nat.Agent{static{i(this,"HttpProxyAgent")}constructor(e,r){super(r),this.proxy=typeof e=="string"?new rpe.URL(e):e,this.proxyHeaders=r?.headers??{},hh("Creating new HttpProxyAgent instance: %o",this.proxy.href);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),s=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...r?sat(r,"headers"):null,host:n,port:s}}addRequest(e,r){e._header=null,this.setRequestProps(e,r),super.addRequest(e,r)}setRequestProps(e,r){let{proxy:n}=this,s=r.secureEndpoint?"https:":"http:",o=e.getHeader("host")||"localhost",a=`${s}//${o}`,c=new rpe.URL(e.path,a);r.port!==80&&(c.port=String(r.port)),e.path=String(c);let l=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let u=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;l["Proxy-Authorization"]=`Basic ${Buffer.from(u).toString("base64")}`}l["Proxy-Connection"]||(l["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let u of Object.keys(l)){let d=l[u];d&&e.setHeader(u,d)}}async connect(e,r){e._header=null,e.path.includes("://")||this.setRequestProps(e,r);let n,s;hh("Regenerating stored HTTP header string for request"),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(hh("Patching connection write() output buffer with updated header"),n=e.outputData[0].data,s=n.indexOf(`\r
|
||||||
|
\r
|
||||||
|
`)+4,e.outputData[0].data=e._header+n.substring(s),hh("Output buffer: %o",e.outputData[0].data));let o;return this.proxy.protocol==="https:"?(hh("Creating `tls.Socket`: %o",this.connectOpts),o=eat.connect(this.connectOpts)):(hh("Creating `net.Socket`: %o",this.connectOpts),o=Zit.connect(this.connectOpts)),await(0,rat.once)(o,"connect"),o}};RR.protocols=["http","https"];ri.HttpProxyAgent=RR;function sat(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}i(sat,"omit")});var Bpe=w(qR=>{"use strict";Object.defineProperty(qR,"__esModule",{value:!0});qR.state=void 0;qR.state={instrumenterImplementation:void 0}});var $pe=w(VR=>{"use strict";Object.defineProperty(VR,"__esModule",{value:!0});VR.state=void 0;VR.state={operationRequestMap:new WeakMap}});var IAe=w(Dh=>{"use strict";Object.defineProperty(Dh,"__esModule",{value:!0});var xpt=require("os"),bpt=require("util");function Bpt(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}i(Bpt,"_interopDefaultLegacy");var Rpt=Bpt(bpt);function Npt(t,...e){process.stderr.write(`${Rpt.default.format(t,...e)}${xpt.EOL}`)}i(Npt,"log");var dAe=typeof process<"u"&&process.env&&process.env.DEBUG||void 0,fAe,uV=[],dV=[],dT=[];dAe&&pV(dAe);var mAe=Object.assign(t=>AAe(t),{enable:pV,enabled:fV,disable:Tpt,log:Npt});function pV(t){fAe=t,uV=[],dV=[];let e=/\*/g,r=t.split(",").map(n=>n.trim().replace(e,".*?"));for(let n of r)n.startsWith("-")?dV.push(new RegExp(`^${n.substr(1)}$`)):uV.push(new RegExp(`^${n}$`));for(let n of dT)n.enabled=fV(n.namespace)}i(pV,"enable");function fV(t){if(t.endsWith("*"))return!0;for(let e of dV)if(e.test(t))return!1;for(let e of uV)if(e.test(t))return!0;return!1}i(fV,"enabled");function Tpt(){let t=fAe||"";return pV(""),t}i(Tpt,"disable");function AAe(t){let e=Object.assign(r,{enabled:fV(t),destroy:Ppt,log:mAe.log,namespace:t,extend:vpt});function r(...n){e.enabled&&(n.length>0&&(n[0]=`${t} ${n[0]}`),e.log(...n))}return i(r,"debug"),dT.push(e),e}i(AAe,"createDebugger");function Ppt(){let t=dT.indexOf(this);return t>=0?(dT.splice(t,1),!0):!1}i(Ppt,"destroy");function vpt(t){let e=AAe(`${this.namespace}:${t}`);return e.log=this.log,e}i(vpt,"extend");var VI=mAe,hAe=new Set,lT=typeof process<"u"&&process.env&&process.env.AZURE_LOG_LEVEL||void 0,pT,fT=VI("azure");fT.log=(...t)=>{VI.log(...t)};var mV=["verbose","info","warning","error"];lT&&(CAe(lT)?gAe(lT):console.error(`AZURE_LOG_LEVEL set to unknown log level '${lT}'; logging is not enabled. Acceptable values: ${mV.join(", ")}.`));function gAe(t){if(t&&!CAe(t))throw new Error(`Unknown log level '${t}'. Acceptable values: ${mV.join(",")}`);pT=t;let e=[];for(let r of hAe)EAe(r)&&e.push(r.namespace);VI.enable(e.join(","))}i(gAe,"setLogLevel");function _pt(){return pT}i(_pt,"getLogLevel");var pAe={verbose:400,info:300,warning:200,error:100};function Qpt(t){let e=fT.extend(t);return yAe(fT,e),{error:uT(e,"error"),warning:uT(e,"warning"),info:uT(e,"info"),verbose:uT(e,"verbose")}}i(Qpt,"createClientLogger");function yAe(t,e){e.log=(...r)=>{t.log(...r)}}i(yAe,"patchLogMethod");function uT(t,e){let r=Object.assign(t.extend(e),{level:e});if(yAe(t,r),EAe(r)){let n=VI.disable();VI.enable(n+","+r.namespace)}return hAe.add(r),r}i(uT,"createLogger");function EAe(t){return!!(pT&&pAe[t.level]<=pAe[pT])}i(EAe,"shouldEnable");function CAe(t){return mV.includes(t)}i(CAe,"isAzureLogLevel");Dh.AzureLogger=fT;Dh.createClientLogger=Qpt;Dh.getLogLevel=_pt;Dh.setLogLevel=gAe});var gV=w(YI=>{"use strict";Object.defineProperty(YI,"__esModule",{value:!0});var kh=new WeakMap,mT=new WeakMap,WI=class t{static{i(this,"AbortSignal")}constructor(){this.onabort=null,kh.set(this,[]),mT.set(this,!1)}get aborted(){if(!mT.has(this))throw new TypeError("Expected `this` to be an instance of AbortSignal.");return mT.get(this)}static get none(){return new t}addEventListener(e,r){if(!kh.has(this))throw new TypeError("Expected `this` to be an instance of AbortSignal.");kh.get(this).push(r)}removeEventListener(e,r){if(!kh.has(this))throw new TypeError("Expected `this` to be an instance of AbortSignal.");let n=kh.get(this),s=n.indexOf(r);s>-1&&n.splice(s,1)}dispatchEvent(e){throw new Error("This is a stub dispatchEvent implementation that should not be used. It only exists for type-checking purposes.")}};function wAe(t){if(t.aborted)return;t.onabort&&t.onabort.call(t);let e=kh.get(t);e&&e.slice().forEach(r=>{r.call(t,{type:"abort"})}),mT.set(t,!0)}i(wAe,"abortSignal");var AV=class extends Error{static{i(this,"AbortError")}constructor(e){super(e),this.name="AbortError"}},hV=class{static{i(this,"AbortController")}constructor(e){if(this._signal=new WI,!!e){Array.isArray(e)||(e=arguments);for(let r of e)r.aborted?this.abort():r.addEventListener("abort",()=>{this.abort()})}}get signal(){return this._signal}abort(){wAe(this._signal)}static timeout(e){let r=new WI,n=setTimeout(wAe,e,r);return typeof n.unref=="function"&&n.unref(),r}};YI.AbortController=hV;YI.AbortError=AV;YI.AbortSignal=WI});var RAe=w(ds=>{"use strict";Object.defineP
Line truncated
|
||||||
|
Polling from: ${r.config.operationLocation}
|
||||||
|
Operation status: ${d}
|
||||||
|
Polling status: ${vAe.includes(d)?"Stopped":"Running"}`),d==="succeeded"){let p=a(u,r);if(p!==void 0)return{response:await e(p).catch(TAe({state:r,stateProxy:n,isOperationError:c})),status:d}}return{response:u,status:d}}i(jpt,"pollOperationHelper");async function kAe(t){let{poll:e,state:r,stateProxy:n,options:s,getOperationStatus:o,getResourceLocation:a,getOperationLocation:c,isOperationError:l,withOperationLocation:u,getPollingInterval:d,processResult:p,getError:f,updateState:m,setDelay:A,isDone:h,setErrorAsResult:E}=t,{operationLocation:y}=r.config;if(y!==void 0){let{response:I,status:x}=await jpt({poll:e,getOperationStatus:o,state:r,stateProxy:n,operationLocation:y,getResourceLocation:a,isOperationError:l,options:s});if(QAe({status:x,response:I,state:r,stateProxy:n,isDone:h,processResult:p,getError:f,setErrorAsResult:E}),!vAe.includes(x)){let b=d?.(I);b&&A(b);let N=c?.(I,r);if(N!==void 0){let v=y!==N;r.config.operationLocation=N,u?.(N,v)}else u?.(y,!1)}m?.(r,I)}}i(kAe,"pollOperation");function LAe(t){let{azureAsyncOperation:e,operationLocation:r}=t;return r??e}i(LAe,"getOperationLocationPollingUrl");function OAe(t){return t.headers.location}i(OAe,"getLocationHeader");function MAe(t){return t.headers["operation-location"]}i(MAe,"getOperationLocationHeader");function FAe(t){return t.headers["azure-asyncoperation"]}i(FAe,"getAzureAsyncOperationHeader");function Kpt(t){let{location:e,requestMethod:r,requestPath:n,resourceLocationConfig:s}=t;switch(r){case"PUT":return n;case"DELETE":return;default:switch(s){case"azure-async-operation":return;case"original-uri":return n;default:return e}}}i(Kpt,"findResourceLocation");function UAe(t){let{rawResponse:e,requestMethod:r,requestPath:n,resourceLocationConfig:s}=t,o=MAe(e),a=FAe(e),c=LAe({operationLocation:o,azureAsyncOperation:a}),l=OAe(e),u=r?.toLocaleUpperCase();return c!==void 0?{mode:"OperationLocation",operationLocation:c,resourceLocation:Kpt({requestMethod:u,location:l,requestPath:n,resourceLocationConfig:s})}:l!==void 0?{mode:"ResourceLocation",operationLocation:l}:u==="PUT"&&n?{mode:"Body",operationLocation:n}:void 0}i(UAe,"inferLroMode");function qAe(t){let{status:e,statusCode:r}=t;if(typeof e!="string"&&e!==void 0)throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${e}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`);switch(e?.toLocaleLowerCase()){case void 0:return bV(r);case"succeeded":return"succeeded";case"failed":return"failed";case"running":case"accepted":case"started":case"canceling":case"cancelling":return"running";case"canceled":case"cancelled":return"canceled";default:return Of.verbose(`LRO: unrecognized operation status: ${e}`),e}}i(qAe,"transformStatus");function Xpt(t){var e;let{status:r}=(e=t.body)!==null&&e!==void 0?e:{};return qAe({status:r,statusCode:t.statusCode})}i(Xpt,"getStatus");function Zpt(t){var e,r;let{properties:n,provisioningState:s}=(e=t.body)!==null&&e!==void 0?e:{},o=(r=n?.provisioningState)!==null&&r!==void 0?r:s;return qAe({status:o,statusCode:t.statusCode})}i(Zpt,"getProvisioningState");function bV(t){return t===202?"running":t<300?"succeeded":"failed"}i(bV,"toOperationStatus");function GAe({rawResponse:t}){let e=t.headers["retry-after"];if(e!==void 0){let r=parseInt(e);return isNaN(r)?eft(new Date(e)):r*1e3}}i(GAe,"parseRetryAfter");function $Ae(t){let e=t.flatResponse.error;if(!e){Of.warning("The long-running operation failed but there is no error property in the response's body");return}if(!e.code||!e.message){Of.warning("The long-running operation failed but the error property in the response's body doesn't contain code or message");return}return e}i($Ae,"getErrorFromResponse");function eft(t){let e=Math.floor(new Date().getTime()),r=t.getTime();if(e<r)return r-e}i(eft,"calculatePollingIntervalFromDate");function HAe(t){let{response:e,state:r,operationLocation:n}=t;function s(){var a;switch((a=r.config.metadata)===null||a===void 0?void 0:a.mode){case void 0:return bV(e.rawResponse.statusCode);case"Body":return BV(e,r);default:return"running"}}i(s,"helper");let o=s();return o==="running"&&n===void 0?"succeeded":o}i(HAe,"getStatusFromInitialResponse");async function tft(t){let{stateProxy:e,resourceLocationConfig:r,processResult:n,lro:s,setErrorAsResult:o}=t;return DAe({init:i(async()=>{let a=await s.sendInitialRequest(),c=UAe({rawResponse:a.rawResponse,requestPath:s.requestPath,requestMethod:s.requestMethod,resourceLocationConfig:r});return Object.assign({response:a,operationLocation:c?.operationLocation,resourceLocation:c?.resourceLocation},c?.mode?{metadata:{mode:c.mode}}:{})},"init"),stateProxy:e,processResult:n?({flatResponse:a},c)=>n(a,c):({flatResponse:a})=>a,getOperationStatus:HAe,setErrorAsResult:o})}i(tft,"initHttpOperation");function zAe({rawResponse:t},e){var r;switch((r=e.config.metadata)===null||r===void 0?void 0:r.mode){case"OperationLocation":return LAe({opeLine truncated
|
||||||
|
`:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string.")}switch(s){case 0:a=o,s=1;break;case 1:r[n++]=a<<2|(o&48)>>4,a=o,s=2;break;case 2:r[n++]=(a&15)<<4|(o&60)>>2,a=o,s=3;break;case 3:r[n++]=(a&3)<<6|o,s=0;break}}if(s==1)throw Error("invalid base64 string.");return r.subarray(0,n)}i(Mft,"base64decode");qh.base64decode=Mft;function Fft(t){let e="",r=0,n,s=0;for(let o=0;o<t.length;o++)switch(n=t[o],r){case 0:e+=Xl[n>>2],s=(n&3)<<4,r=1;break;case 1:e+=Xl[s|n>>4],s=(n&15)<<2,r=2;break;case 2:e+=Xl[s|n>>6],e+=Xl[n&63],r=0;break}return r&&(e+=Xl[s],e+="=",r==1&&(e+="=")),e}i(Fft,"base64encode");qh.base64encode=Fft});var xhe=w(QT=>{"use strict";Object.defineProperty(QT,"__esModule",{value:!0});QT.utf8read=void 0;var OV=i(t=>String.fromCharCode.apply(String,t),"fromCharCodes");function Uft(t){if(t.length<1)return"";let e=0,r=[],n=[],s=0,o,a=t.length;for(;e<a;)o=t[e++],o<128?n[s++]=o:o>191&&o<224?n[s++]=(o&31)<<6|t[e++]&63:o>239&&o<365?(o=((o&7)<<18|(t[e++]&63)<<12|(t[e++]&63)<<6|t[e++]&63)-65536,n[s++]=55296+(o>>10),n[s++]=56320+(o&1023)):n[s++]=(o&15)<<12|(t[e++]&63)<<6|t[e++]&63,s>8191&&(r.push(OV(n)),s=0);return r.length?(s&&r.push(OV(n.slice(0,s))),r.join("")):OV(n.slice(0,s))}i(Uft,"utf8read");QT.utf8read=Uft});var rw=w(wc=>{"use strict";Object.defineProperty(wc,"__esModule",{value:!0});wc.WireType=wc.mergeBinaryOptions=wc.UnknownFieldHandler=void 0;var qft;(function(t){t.symbol=Symbol.for("protobuf-ts/unknown"),t.onRead=(r,n,s,o,a)=>{(e(n)?n[t.symbol]:n[t.symbol]=[]).push({no:s,wireType:o,data:a})},t.onWrite=(r,n,s)=>{for(let{no:o,wireType:a,data:c}of t.list(n))s.tag(o,a).raw(c)},t.list=(r,n)=>{if(e(r)){let s=r[t.symbol];return n?s.filter(o=>o.no==n):s}return[]},t.last=(r,n)=>t.list(r,n).slice(-1)[0];let e=i(r=>r&&Array.isArray(r[t.symbol]),"is")})(qft=wc.UnknownFieldHandler||(wc.UnknownFieldHandler={}));function Gft(t,e){return Object.assign(Object.assign({},t),e)}i(Gft,"mergeBinaryOptions");wc.mergeBinaryOptions=Gft;var $ft;(function(t){t[t.Varint=0]="Varint",t[t.Bit64=1]="Bit64",t[t.LengthDelimited=2]="LengthDelimited",t[t.StartGroup=3]="StartGroup",t[t.EndGroup=4]="EndGroup",t[t.Bit32=5]="Bit32"})($ft=wc.WireType||(wc.WireType={}))});var kT=w(Fs=>{"use strict";Object.defineProperty(Fs,"__esModule",{value:!0});Fs.varint32read=Fs.varint32write=Fs.int64toString=Fs.int64fromString=Fs.varint64write=Fs.varint64read=void 0;function Hft(){let t=0,e=0;for(let n=0;n<28;n+=7){let s=this.buf[this.pos++];if(t|=(s&127)<<n,(s&128)==0)return this.assertBounds(),[t,e]}let r=this.buf[this.pos++];if(t|=(r&15)<<28,e=(r&112)>>4,(r&128)==0)return this.assertBounds(),[t,e];for(let n=3;n<=31;n+=7){let s=this.buf[this.pos++];if(e|=(s&127)<<n,(s&128)==0)return this.assertBounds(),[t,e]}throw new Error("invalid varint")}i(Hft,"varint64read");Fs.varint64read=Hft;function zft(t,e,r){for(let o=0;o<28;o=o+7){let a=t>>>o,c=!(!(a>>>7)&&e==0),l=(c?a|128:a)&255;if(r.push(l),!c)return}let n=t>>>28&15|(e&7)<<4,s=e>>3!=0;if(r.push((s?n|128:n)&255),!!s){for(let o=3;o<31;o=o+7){let a=e>>>o,c=!!(a>>>7),l=(c?a|128:a)&255;if(r.push(l),!c)return}r.push(e>>>31&1)}}i(zft,"varint64write");Fs.varint64write=zft;var DT=65536*65536;function Vft(t){let e=t[0]=="-";e&&(t=t.slice(1));let r=1e6,n=0,s=0;function o(a,c){let l=Number(t.slice(a,c));s*=r,n=n*r+l,n>=DT&&(s=s+(n/DT|0),n=n%DT)}return i(o,"add1e6digit"),o(-24,-18),o(-18,-12),o(-12,-6),o(-6),[e,n,s]}i(Vft,"int64fromString");Fs.int64fromString=Vft;function Wft(t,e){if(e>>>0<=2097151)return""+(DT*e+(t>>>0));let r=t&16777215,n=(t>>>24|e<<8)>>>0&16777215,s=e>>16&65535,o=r+n*6777216+s*6710656,a=n+s*8147497,c=s*2,l=1e7;o>=l&&(a+=Math.floor(o/l),o%=l),a>=l&&(c+=Math.floor(a/l),a%=l);function u(d,p){let f=d?String(d):"";return p?"0000000".slice(f.length)+f:f}return i(u,"decimalFrom1e7"),u(c,0)+u(a,c)+u(o,1)}i(Wft,"int64toString");Fs.int64toString=Wft;function Yft(t,e){if(t>=0){for(;t>127;)e.push(t&127|128),t=t>>>7;e.push(t)}else{for(let r=0;r<9;r++)e.push(t&127|128),t=t>>7;e.push(1)}}i(Yft,"varint32write");Fs.varint32write=Yft;function Jft(){let t=this.buf[this.pos++],e=t&127;if((t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<7,(t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<14,(t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<21,(t&128)==0)return this.assertBounds(),e;t=this.buf[this.pos++],e|=(t&15)<<28;for(let r=5;(t&128)!==0&&r<10;r++)t=this.buf[this.pos++];if((t&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}i(Jft,"varint32read");Fs.varint32read=Jft});var Ad=w(md=>{"use strict";Object.defineProperty(md,"__esModule",{value:!0});md.PbLong=md.PbULong=md.detectBi=void 0;var nw=kT(),Rt;function bhe(){let t=new DataView(new ArrayBuffer(8));Rt=globalThis.BigInt!==void 0&&typeof t.getBigInt64=="function"&&typeof t.getBigUint64=="function"&&typeof t.setBigInt64=="function"&&typeof t.setBigUint64=="function"?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("922337203685477580
Line truncated
|
||||||
|
`)}};cP.RpcError=u4});var p4=w(uP=>{"use strict";Object.defineProperty(uP,"__esModule",{value:!0});uP.mergeRpcOptions=void 0;var nge=br();function gAt(t,e){if(!e)return t;let r={};lP(t,r),lP(e,r);for(let n of Object.keys(e)){let s=e[n];switch(n){case"jsonOptions":r.jsonOptions=nge.mergeJsonOptions(t.jsonOptions,r.jsonOptions);break;case"binaryOptions":r.binaryOptions=nge.mergeBinaryOptions(t.binaryOptions,r.binaryOptions);break;case"meta":r.meta={},lP(t.meta,r.meta),lP(e.meta,r.meta);break;case"interceptors":r.interceptors=t.interceptors?t.interceptors.concat(s):s.concat();break}}return r}i(gAt,"mergeRpcOptions");uP.mergeRpcOptions=gAt;function lP(t,e){if(!t)return;let r=e;for(let[n,s]of Object.entries(t))s instanceof Date?r[n]=new Date(s.getTime()):Array.isArray(s)?r[n]=s.concat():r[n]=s}i(lP,"copy")});var m4=w(Gf=>{"use strict";Object.defineProperty(Gf,"__esModule",{value:!0});Gf.Deferred=Gf.DeferredState=void 0;var bc;(function(t){t[t.PENDING=0]="PENDING",t[t.REJECTED=1]="REJECTED",t[t.RESOLVED=2]="RESOLVED"})(bc=Gf.DeferredState||(Gf.DeferredState={}));var f4=class{static{i(this,"Deferred")}constructor(e=!0){this._state=bc.PENDING,this._promise=new Promise((r,n)=>{this._resolve=r,this._reject=n}),e&&this._promise.catch(r=>{})}get state(){return this._state}get promise(){return this._promise}resolve(e){if(this.state!==bc.PENDING)throw new Error(`cannot resolve ${bc[this.state].toLowerCase()}`);this._resolve(e),this._state=bc.RESOLVED}reject(e){if(this.state!==bc.PENDING)throw new Error(`cannot reject ${bc[this.state].toLowerCase()}`);this._reject(e),this._state=bc.REJECTED}resolvePending(e){this._state===bc.PENDING&&this.resolve(e)}rejectPending(e){this._state===bc.PENDING&&this.reject(e)}};Gf.Deferred=f4});var h4=w(dP=>{"use strict";Object.defineProperty(dP,"__esModule",{value:!0});dP.RpcOutputStreamController=void 0;var sge=m4(),$f=br(),A4=class{static{i(this,"RpcOutputStreamController")}constructor(){this._lis={nxt:[],msg:[],err:[],cmp:[]},this._closed=!1,this._itState={q:[]}}onNext(e){return this.addLis(e,this._lis.nxt)}onMessage(e){return this.addLis(e,this._lis.msg)}onError(e){return this.addLis(e,this._lis.err)}onComplete(e){return this.addLis(e,this._lis.cmp)}addLis(e,r){return r.push(e),()=>{let n=r.indexOf(e);n>=0&&r.splice(n,1)}}clearLis(){for(let e of Object.values(this._lis))e.splice(0,e.length)}get closed(){return this._closed!==!1}notifyNext(e,r,n){$f.assert((e?1:0)+(r?1:0)+(n?1:0)<=1,"only one emission at a time"),e&&this.notifyMessage(e),r&&this.notifyError(r),n&&this.notifyComplete()}notifyMessage(e){$f.assert(!this.closed,"stream is closed"),this.pushIt({value:e,done:!1}),this._lis.msg.forEach(r=>r(e)),this._lis.nxt.forEach(r=>r(e,void 0,!1))}notifyError(e){$f.assert(!this.closed,"stream is closed"),this._closed=e,this.pushIt(e),this._lis.err.forEach(r=>r(e)),this._lis.nxt.forEach(r=>r(void 0,e,!1)),this.clearLis()}notifyComplete(){$f.assert(!this.closed,"stream is closed"),this._closed=!0,this.pushIt({value:null,done:!0}),this._lis.cmp.forEach(e=>e()),this._lis.nxt.forEach(e=>e(void 0,void 0,!0)),this.clearLis()}[Symbol.asyncIterator](){return this._closed===!0?this.pushIt({value:null,done:!0}):this._closed!==!1&&this.pushIt(this._closed),{next:i(()=>{let e=this._itState;$f.assert(e,"bad state"),$f.assert(!e.p,"iterator contract broken");let r=e.q.shift();return r?"value"in r?Promise.resolve(r):Promise.reject(r):(e.p=new sge.Deferred,e.p.promise)},"next")}}pushIt(e){let r=this._itState;if(r.p){let n=r.p;$f.assert(n.state==sge.DeferredState.PENDING,"iterator contract broken"),"value"in e?n.resolve(e):n.reject(e),delete r.p}else r.q.push(e)}};dP.RpcOutputStreamController=A4});var y4=w(Yh=>{"use strict";var yAt=Yh&&Yh.__awaiter||function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})};Object.defineProperty(Yh,"__esModule",{value:!0});Yh.UnaryCall=void 0;var g4=class{static{i(this,"UnaryCall")}constructor(e,r,n,s,o,a,c){this.method=e,this.requestHeaders=r,this.request=n,this.headers=s,this.response=o,this.status=a,this.trailers=c}then(e,r){return this.promiseFinished().then(n=>e?Promise.resolve(e(n)):n,n=>r?Promise.resolve(r(n)):Promise.reject(n))}promiseFinished(){return yAt(this,void 0,void 0,function*(){let[e,r,n,s]=yield Promise.all([this.headers,this.response,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,request:this.request,headers:e,response:r,status:n,trailers:s}})}};Yh.UnaryCall=g4});var C4=w(Jh=>{"use strict";var EAt=Jh&&Jh.__awaiter||function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function
Line truncated
|
||||||
|
You can add a runtime option to disable the check or this warning:
|
||||||
|
See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`))}i(Gwt,"logUnexpecedPropertyAccessOnce");function $wt(){Object.keys(rv).forEach(function(t){delete rv[t]})}i($wt,"resetLoggedProperties")});var sv=w(Pc=>{"use strict";Pc.__esModule=!0;Pc.HandlebarsEnvironment=sY;function lIe(t){return t&&t.__esModule?t:{default:t}}i(lIe,"_interopRequireDefault");var Xf=$n(),Hwt=Ai(),rY=lIe(Hwt),zwt=XW(),Vwt=oIe(),Wwt=eY(),nv=lIe(Wwt),Ywt=tY(),Jwt="4.7.10";Pc.VERSION=Jwt;var jwt=8;Pc.COMPILER_REVISION=jwt;var Kwt=7;Pc.LAST_COMPATIBLE_COMPILER_REVISION=Kwt;var Xwt={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};Pc.REVISION_CHANGES=Xwt;var nY="[object Object]";function sY(t,e,r){this.helpers=t||{},this.partials=e||{},this.decorators=r||{},zwt.registerDefaultHelpers(this),Vwt.registerDefaultDecorators(this)}i(sY,"HandlebarsEnvironment");sY.prototype={constructor:sY,logger:nv.default,log:nv.default.log,registerHelper:i(function(e,r){if(Xf.toString.call(e)===nY){if(r)throw new rY.default("Arg not supported with multiple helpers");Xf.extend(this.helpers,e)}else this.helpers[e]=r},"registerHelper"),unregisterHelper:i(function(e){delete this.helpers[e]},"unregisterHelper"),registerPartial:i(function(e,r){if(Xf.toString.call(e)===nY)Xf.extend(this.partials,e);else{if(typeof r>"u")throw new rY.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=r}},"registerPartial"),unregisterPartial:i(function(e){delete this.partials[e]},"unregisterPartial"),registerDecorator:i(function(e,r){if(Xf.toString.call(e)===nY){if(r)throw new rY.default("Arg not supported with multiple decorators");Xf.extend(this.decorators,e)}else this.decorators[e]=r},"registerDecorator"),unregisterDecorator:i(function(e){delete this.decorators[e]},"unregisterDecorator"),resetLoggedPropertyAccesses:i(function(){Ywt.resetLoggedProperties()},"resetLoggedPropertyAccesses")};var Zwt=nv.default.log;Pc.log=Zwt;Pc.createFrame=Xf.createFrame;Pc.logger=nv.default});var dIe=w((ov,uIe)=>{"use strict";ov.__esModule=!0;function oY(t){this.string=t}i(oY,"SafeString");oY.prototype.toString=oY.prototype.toHTML=function(){return""+this.string};ov.default=oY;uIe.exports=ov.default});var pIe=w(iY=>{"use strict";iY.__esModule=!0;iY.wrapHelper=eSt;function eSt(t,e){if(typeof t!="function")return t;var r=i(function(){var s=arguments[arguments.length-1];return arguments[arguments.length-1]=e(s),t.apply(this,arguments)},"wrapper");return r}i(eSt,"wrapHelper")});var gIe=w(Cd=>{"use strict";Cd.__esModule=!0;Cd.checkRevision=iSt;Cd.template=aSt;Cd.wrapProgram=iv;Cd.resolvePartial=cSt;Cd.invokePartial=lSt;Cd.noop=AIe;function tSt(t){return t&&t.__esModule?t:{default:t}}i(tSt,"_interopRequireDefault");function rSt(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}i(rSt,"_interopRequireWildcard");var nSt=$n(),Zf=rSt(nSt),sSt=Ai(),na=tSt(sSt),ru=sv(),fIe=XW(),oSt=pIe(),aY=tY();function iSt(t){var e=t&&t[0]||1,r=ru.COMPILER_REVISION;if(!(e>=ru.LAST_COMPATIBLE_COMPILER_REVISION&&e<=ru.COMPILER_REVISION))if(e<ru.LAST_COMPATIBLE_COMPILER_REVISION){var n=ru.REVISION_CHANGES[r],s=ru.REVISION_CHANGES[e];throw new na.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+n+") or downgrade your runtime to an older version ("+s+").")}else throw new na.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+t[1]+").")}i(iSt,"checkRevision");function aSt(t,e){if(!e)throw new na.default("No environment passed to template");if(!t||!t.main)throw new na.default("Unknown template object: "+typeof t);t.main.decorator=t.main_d,e.VM.checkRevision(t.compiler);var r=t.compiler&&t.compiler[0]===7;function n(a,c,l){l.hash&&(c=Zf.extend({},c,l.hash),l.ids&&(l.ids[0]=!0)),a=e.VM.resolvePartial.call(this,a,c,l),l.hooks=this.hooks,l.protoAccessControl=this.protoAccessControl;var u=e.VM.invokePartial.call(this,a,c,l);if(u==null&&Zf.isFunction(a))throw new na.default("The partial "+l.name+" returned no output: partials must return a string");if(u==null&&e.compile){if(typeof a!="string")throw new na.default("The partial "+l.name+" could not be compiled: partials must be strings or functions returning strings");l.partials[l.name]=e.compile(a,t.compilerOptions,e),u=l.partials[l.name](c,l)}if(u!=null){if(l.indent){for(var d=u.split(`
|
||||||
|
`),p=0,f=d.length;p<f&&!(!d[p]&&p+1===f);p++)d[p]=l.indent+d[p];u=d.join(`
|
||||||
|
`)}return u}else throw new na.default("The partial "+l.name+" could not be compiled when running in runtime-only mode")}i(n,"invokePartialWrapper");var s={strict:i(function(c,l,u){if(!c||!(l in c))throw new na.default('"'+l+'" not defined in '+c,{loc:u});return s.lookupProperty(c,l)},"strict"),lookupProperty:i(function(c,l){var u=c[l];if(u==null||Object.prototype.hasOwnProperty.call(c,l)&&!aY.isPrototypeConstructor(c,l,u)||aY.resultIsAllowed(u,s.protoAccessControl,l))return u},"lookupProperty"),lookup:i(function(c,l){for(var u=c.length,d=0;d<u;d++){var p=c[d]&&s.lookupProperty(c[d],l);if(p!=null)return p}},"lookup"),lambda:i(function(c,l){return typeof c=="function"?c.call(l):c},"lambda"),escapeExpression:Zf.escapeExpression,invokePartial:n,fn:i(function(c){var l=t[c];return l.decorator=t[c+"_d"],l},"fn"),programs:[],program:i(function(c,l,u,d,p){var f=this.programs[c],m=this.fn(c);return l||p||d||u?f=iv(this,c,m,l,u,d,p):f||(f=this.programs[c]=iv(this,c,m)),f},"program"),data:i(function(c,l){for(;c&&l--;)c=c._parent;return c},"data"),mergeIfNeeded:i(function(c,l){var u=c||l;return c&&l&&c!==l&&(u=Zf.extend({},l,c)),u},"mergeIfNeeded"),nullContext:Object.seal({}),noop:e.VM.noop,compilerInfo:t.compiler};function o(a){var c=arguments.length<=1||arguments[1]===void 0?{}:arguments[1],l=c.data;o._setup(c),!c.partial&&t.useData&&(l=uSt(a,l));var u=void 0,d=t.useBlockParams?[]:void 0;t.useDepths&&(c.depths?u=a!=c.depths[0]?[a].concat(c.depths):c.depths:u=[a]);function p(f){return""+t.main(s,f,s.helpers,s.partials,l,d,u)}return i(p,"main"),p=hIe(t.main,p,s,c.depths||[],l,d),p(a,c)}return i(o,"ret"),o.isTop=!0,o._setup=function(a){if(a.partial)s.protoAccessControl=a.protoAccessControl,s.helpers=a.helpers,s.partials=a.partials,s.decorators=a.decorators,s.hooks=a.hooks;else{var c={};mIe(c,e.helpers,s),mIe(c,a.helpers,s),s.helpers=c,t.usePartial&&(s.partials=s.mergeIfNeeded(a.partials,e.partials)),(t.usePartial||t.useDecorators)&&(s.decorators=Zf.extend({},e.decorators,a.decorators)),s.hooks={},s.protoAccessControl=aY.createProtoAccessControl(a);var l=a.allowCallsToHelperMissing||r;fIe.moveHelperToHooks(s,"helperMissing",l),fIe.moveHelperToHooks(s,"blockHelperMissing",l)}},o._child=function(a,c,l,u){if(t.useBlockParams&&!l)throw new na.default("must pass block params");if(t.useDepths&&!u)throw new na.default("must pass parent depths");return iv(s,a,t[a],c,0,l,u)},o}i(aSt,"template");function iv(t,e,r,n,s,o,a){function c(l){var u=arguments.length<=1||arguments[1]===void 0?{}:arguments[1],d=a;return a&&l!=a[0]&&!(l===t.nullContext&&a[0]===null)&&(d=[l].concat(a)),r(t,l,t.helpers,t.partials,u.data||n,o&&[u.blockParams].concat(o),d)}return i(c,"prog"),c=hIe(r,c,t,a,n,o),c.program=e,c.depth=a?a.length:0,c.blockParams=s||0,c}i(iv,"wrapProgram");function cSt(t,e,r){return t?typeof t!="function"&&!r.name&&(r.name=t,t=av(r.partials,t)):r.name==="@partial-block"?t=av(r.data,"partial-block"):t=av(r.partials,r.name),t}i(cSt,"resolvePartial");function lSt(t,e,r){var n=av(r.data,"partial-block");r.partial=!0,r.ids&&(r.data.contextPath=r.ids[0]||r.data.contextPath);var s=void 0;if(r.fn&&r.fn!==AIe&&(function(){r.data=ru.createFrame(r.data);var o=r.fn;s=r.data["partial-block"]=i(function(c){var l=arguments.length<=1||arguments[1]===void 0?{}:arguments[1];return l.data=ru.createFrame(l.data),l.data["partial-block"]=n,o(c,l)},"partialBlockWrapper"),o.partials&&(r.partials=Zf.extend({},r.partials,o.partials))})(),t===void 0&&s&&(t=s),t===void 0)throw new na.default("The partial "+r.name+" could not be found");if(t instanceof Function)return t(e,r)}i(lSt,"invokePartial");function AIe(){return""}i(AIe,"noop");function av(t,e){if(t&&Object.prototype.hasOwnProperty.call(t,e))return t[e]}i(av,"lookupOwnProperty");function uSt(t,e){return(!e||!("root"in e))&&(e=e?ru.createFrame(e):{},e.root=t),e}i(uSt,"initData");function hIe(t,e,r,n,s,o){if(t.decorator){var a={};e=t.decorator(e,a,r,n&&n[0],s,o,n),Zf.extend(e,a)}return e}i(hIe,"executeDecorators");function mIe(t,e,r){e&&Object.keys(e).forEach(function(n){var s=e[n];t[n]=dSt(s,r)})}i(mIe,"addHelpers");function dSt(t,e){var r=e.lookupProperty;return oSt.wrapHelper(t,function(n){return n.lookupProperty=r,n})}i(dSt,"passLookupPropertyOption")});var cY=w((cv,yIe)=>{"use strict";cv.__esModule=!0;cv.default=function(t){(function(){typeof globalThis!="object"&&(Object.prototype.__defineGetter__("__magic__",function(){return this}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__)})();var e=globalThis.Handlebars;t.noConflict=function(){return globalThis.Handlebars===t&&(globalThis.Handlebars=e),t}};yIe.exports=cv.default});var SIe=w((lv,wIe)=>{"use strict";lv.__esModule=!0;function uY(t){return t&&t.__esModule?t:{default:t}}i(uY,"_interopRequireDefault");function dY(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}i(dY,"_interopRequireWildcard");var pSt=sv(),EIe=dY(pSt),fSt=dIe(),mSt=uY(fSt),AS
Line truncated
|
||||||
|
`+this.lexer.showPosition()+`
|
||||||
|
Expecting `+D.join(", ")+", got '"+(this.terminals_[b]||b)+"'":et="Parse error on line "+(p+1)+": Unexpected "+(b==1?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(et,{text:this.lexer.match,token:this.terminals_[b]||b,line:this.lexer.yylineno,loc:E,expected:D})}}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+b);switch(_[0]){case 1:a.push(b),c.push(this.lexer.yytext),l.push(this.lexer.yylloc),a.push(_[1]),b=null,N?(b=N,N=null):(f=this.lexer.yyleng,d=this.lexer.yytext,p=this.lexer.yylineno,E=this.lexer.yylloc,m>0&&m--);break;case 2:if(fe=this.productions_[_[1]][1],Qe.$=c[c.length-fe],Qe._$={first_line:l[l.length-(fe||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(fe||1)].first_column,last_column:l[l.length-1].last_column},y&&(Qe._$.range=[l[l.length-(fe||1)].range[0],l[l.length-1].range[1]]),ve=this.performAction.call(Qe,d,f,p,this.yy,_[1],c,l),typeof ve<"u")return ve;fe&&(a=a.slice(0,-1*fe*2),c=c.slice(0,-1*fe),l=l.slice(0,-1*fe)),a.push(this.productions_[_[1]][0]),c.push(Qe.$),l.push(Qe._$),He=u[a[a.length-2]][a[a.length-1]],a.push(He);break;case 3:return!0}}return!0},"parse")},e=(function(){var n={EOF:1,parseError:i(function(o,a){if(this.yy.parser)this.yy.parser.parseError(o,a);else throw new Error(o)},"parseError"),setInput:i(function(o){return this._input=o,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:i(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var a=o.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:i(function(o){var a=o.length,c=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a-1),this.offset-=a;var l=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var u=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===l.length?this.yylloc.first_column:0)+l[l.length-c.length].length-c[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-a]),this},"unput"),more:i(function(){return this._more=!0,this},"more"),less:i(function(o){this.unput(this.match.slice(o))},"less"),pastInput:i(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:i(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:i(function(){var o=this.pastInput(),a=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
|
||||||
|
`+a+"^"},"showPosition"),next:i(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,a,c,l,u,d;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),f=0;f<p.length&&(c=this._input.match(this.rules[p[f]]),!(c&&(!a||c[0].length>a[0].length)&&(a=c,l=f,!this.options.flex)));f++);return a?(d=a[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],o=this.performAction.call(this,this.yy,this,p[l],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o||void 0):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text.
|
||||||
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:i(function(){var o=this.next();return typeof o<"u"?o:this.lex()},"lex"),begin:i(function(o){this.conditionStack.push(o)},"begin"),popState:i(function(){return this.conditionStack.pop()},"popState"),_currentRules:i(function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},"_currentRules"),topState:i(function(){return this.conditionStack[this.conditionStack.length-2]},"topState"),pushState:i(function(o){this.begin(o)},"begin")};return n.options={},n.performAction=i(function(o,a,c,l){function u(p,f){return a.yytext=a.yytext.substring(p,a.yyleng-f+p)}i(u,"strip");var d=l;switch(c){case 0:if(a.yytext.slice(-2)==="\\\\"?(u(0,1),this.begin("mu")):a.yytext.slice(-1)==="\\"?(u(0,1),this.begin("emu")):this.begin("mu"),a.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;break;case 3:return this.begin("raw"),15;break;case 4:return this.popState(),this.conditionStack[this.conditionStack.length-1]==="raw"?15:(u(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;break;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;break;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;break;case 16:return this.popState(),44;break;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(a.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;break;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;break;case 30:return this.popState(),33;break;case 31:return a.yytext=u(1,2).replace(/\\"/g,'"'),80;break;case 32:return a.yytext=u(1,2).replace(/\\'/g,"'"),80;break;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return a.yytext=a.yytext.replace(/\\([\\\]])/g,"$1"),72;break;case 43:return"INVALID";case 44:return 5}},"anonymous"),n.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],n.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},n})();t.lexer=e;function r(){this.yy={}}return i(r,"Parser"),r.prototype=t,t.Parser=r,new r})();dv.default=ISt;BIe.exports=dv.default});var mY=w(fY=>{"use strict";fY.__esModule=!0;var wSt=["Program","BlockStatement","DecoratorBlock","PartialStatement","PartialBlockStatement","Decorator","MustacheStatement","ContentStatement","CommentStatement","SubExpression","PathExpression","StringLiteral","NumberLiteral","BooleanLiteral","UndefinedLiteral","NullLiteral","Hash","HashPair"];fY.NODE_TYPES=wSt});var Av=w((mv,vIe)=>{"use strict";mv.__esModule=!0;function SSt(t){return t&&t.__esModule?t:{default:t}}i(SSt,"_interopRequireDefault");var xSt=Ai(),AY=SSt(xSt),bSt=$n(),BSt=mY();function fv(){this.parents=[]}i(fv,"Visitor");function NIe(t,e){return bSt.indexOf(BSt.NODE_TYPES,e)!==-1||!(e in fv.prototype)&&typeof t[e]=="function"}i(NIe,"isDispatchable");fv.prototype={constructor:fv,mutating:!1,acceptKey:i(function(e,r){var n=this.accept(e[r]);if(this.mutating){if(n&&!NIe(this,n.type))throw new AY.default('Unexpected node type "'+n.type+'" found when accepting '+r+" on "+e.type);e[r]=n}},"acceptKey"),acceptRequired:i(function(e,r){if(this.acceptKey(e,r),!e[r])throw new AY.default(e.type+" requires "+r)},"acceptRequired"),acceptArray:i(function(e){for(var r=0,n=e.length;r<n;r++)this.acceptKey(e,r),e[r]||(e.splice(r,1),r--,n--)},"acceptArray"),accept:i(function(e){if(e){if(!NIe(this,e.type)||!this[e.type])throw new AY.default("Unknown type: "+e.type,e);this.current&&this.parents.unshift(this.current),this.current=e;var r=this[e.tLine truncated
|
||||||
|
`])}),e},"merge"),each:i(function(e){for(var r=0,n=this.source.length;r<n;r++)e(this.source[r])},"each"),empty:i(function(){var e=this.currentLocation||{start:{}};return new nm(e.start.line,e.start.column,this.srcFile)},"empty"),wrap:i(function(e){var r=arguments.length<=1||arguments[1]===void 0?this.currentLocation||{start:{}}:arguments[1];return e instanceof nm?e:(e=OY(e,this,r),new nm(r.start.line,r.start.column,this.srcFile,e))},"wrap"),functionCall:i(function(e,r,n){return n=this.generateList(n),this.wrap([e,r?"."+r+"(":"(",n,")"])},"functionCall"),quotedString:i(function(e){return e=e+"",wxt.test(e)?mwe(e):'"'+e+'"'},"quotedString"),objectLiteral:i(function(e){var r=this,n=[];Object.keys(e).forEach(function(o){var a=OY(e[o],r);a!=="undefined"&&n.push([r.quotedString(o),":",a])});var s=this.generateList(n);return s.prepend("{"),s.add("}"),s},"objectLiteral"),generateList:i(function(e){for(var r=this.empty(),n=0,s=e.length;n<s;n++)n&&r.add(","),r.add(OY(e[n],this));return r},"generateList"),generateArray:i(function(e){var r=this.generateList(e);return r.prepend("["),r.add("]"),r},"generateArray")};xv.default=Awe});var Swe=w((bv,wwe)=>{"use strict";bv.__esModule=!0;function Ewe(t){return t&&t.__esModule?t:{default:t}}i(Ewe,"_interopRequireDefault");var gwe=sv(),Bxt=Ai(),FY=Ewe(Bxt),Rxt=$n(),Cwe=hwe(),ywe=Ewe(Cwe);function bg(t){this.value=t}i(bg,"Literal");function Bg(){}i(Bg,"JavaScriptCompiler");Bg.prototype={nameLookup:i(function(e,r){return this.internalNameLookup(e,r)},"nameLookup"),depthedLookup:i(function(e){return[this.aliasable("container.lookup"),"(depths, ",this.quotedString(e),")"]},"depthedLookup"),compilerInfo:i(function(){var e=gwe.COMPILER_REVISION,r=gwe.REVISION_CHANGES[e];return[e,r]},"compilerInfo"),appendToBuffer:i(function(e,r,n){return Rxt.isArray(e)||(e=[e]),e=this.source.wrap(e,r),this.environment.isSimple?["return ",e,";"]:n?["buffer += ",e,";"]:(e.appendToBuffer=!0,e)},"appendToBuffer"),initializeBuffer:i(function(){return this.quotedString("")},"initializeBuffer"),internalNameLookup:i(function(e,r){return this.lookupPropertyFunctionIsUsed=!0,["lookupProperty(",e,",",this.quotedString(r),")"]},"internalNameLookup"),lookupPropertyFunctionIsUsed:!1,compile:i(function(e,r,n,s){this.environment=e,this.options=r,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!s,this.name=this.environment.name,this.isChild=!!n,this.context=n||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(e,r),this.useDepths=this.useDepths||e.useDepths||e.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||e.useBlockParams;var o=e.opcodes,a=void 0,c=void 0,l=void 0,u=void 0;for(l=0,u=o.length;l<u;l++)a=o[l],this.source.currentLocation=a.loc,c=c||a.loc,this[a.opcode].apply(this,a.args);if(this.source.currentLocation=c,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new FY.default("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend(["var decorators = container.decorators, ",this.lookupPropertyFunctionVarDeclaration(),`;
|
||||||
|
`]),this.decorators.push("return fn;"),s?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend(`function(fn, props, container, depth0, data, blockParams, depths) {
|
||||||
|
`),this.decorators.push(`}
|
||||||
|
`),this.decorators=this.decorators.merge()));var d=this.createFunctionContext(s);if(this.isChild)return d;var p={compiler:this.compilerInfo(),main:d};this.decorators&&(p.main_d=this.decorators,p.useDecorators=!0);var f=this.context,m=f.programs,A=f.decorators;for(l=0,u=m.length;l<u;l++)p[l]=m[l],A[l]&&(p[l+"_d"]=A[l],p.useDecorators=!0);return this.environment.usePartial&&(p.usePartial=!0),this.options.data&&(p.useData=!0),this.useDepths&&(p.useDepths=!0),this.useBlockParams&&(p.useBlockParams=!0),this.options.compat&&(p.compat=!0),s?p.compilerOptions=this.options:(p.compiler=JSON.stringify(p.compiler),this.source.currentLocation={start:{line:1,column:0}},p=this.objectLiteral(p),r.srcName?(p=p.toStringWithSourceMap({file:r.destName}),p.map=p.map&&p.map.toString()):p=p.toString()),p},"compile"),preamble:i(function(){this.lastContext=0,this.source=new ywe.default(this.options.srcName),this.decorators=new ywe.default(this.options.srcName)},"preamble"),createFunctionContext:i(function(e){var r=this,n="",s=this.stackVars.concat(this.registers.list);s.length>0&&(n+=", "+s.join(", "));var o=0;Object.keys(this.aliases).forEach(function(l){var u=r.aliases[l];u.children&&u.referenceCount>1&&(n+=", alias"+ ++o+"="+l,u.children[0]="alias"+o)}),this.lookupPropertyFunctionIsUsed&&(n+=", "+this.lookupPropertyFunctionVarDeclaration());var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var c=this.mergeSource(n);return e?(a.push(c),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),`) {
|
||||||
|
`,c,"}"])},"createFunctionContext"),mergeSource:i(function(e){var r=this.environment.isSimple,n=!this.forceBuffer,s=void 0,o=void 0,a=void 0,c=void 0;return this.source.each(function(l){l.appendToBuffer?(a?l.prepend(" + "):a=l,c=l):(a&&(o?a.prepend("buffer += "):s=!0,c.add(";"),a=c=void 0),o=!0,r||(n=!1))}),n?a?(a.prepend("return "),c.add(";")):o||this.source.push('return "";'):(e+=", buffer = "+(s?"":this.initializeBuffer()),a?(a.prepend("return buffer + "),c.add(";")):this.source.push("return buffer;")),e&&this.source.prepend("var "+e.substring(2)+(s?"":`;
|
||||||
|
`)),this.source.merge()},"mergeSource"),lookupPropertyFunctionVarDeclaration:i(function(){return`
|
||||||
|
lookupProperty = container.lookupProperty || function(parent, propertyName) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
|
||||||
|
return parent[propertyName];
|
||||||
|
}
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
`.trim()},"lookupPropertyFunctionVarDeclaration"),blockValue:i(function(e){var r=this.aliasable("container.hooks.blockHelperMissing"),n=[this.contextName(0)];this.setupHelperArgs(e,0,n);var s=this.popStack();n.splice(1,0,s),this.push(this.source.functionCall(r,"call",n))},"blockValue"),ambiguousBlockValue:i(function(){var e=this.aliasable("container.hooks.blockHelperMissing"),r=[this.contextName(0)];this.setupHelperArgs("",0,r,!0),this.flushInline();var n=this.topStack();r.splice(1,0,n),this.pushSource(["if (!",this.lastHelper,") { ",n," = ",this.source.functionCall(e,"call",r),"}"])},"ambiguousBlockValue"),appendContent:i(function(e){this.pendingContent?e=this.pendingContent+e:this.pendingLocation=this.source.currentLocation,this.pendingContent=e},"appendContent"),append:i(function(){if(this.isInline())this.replaceStack(function(r){return[" != null ? ",r,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var e=this.popStack();this.pushSource(["if (",e," != null) { ",this.appendToBuffer(e,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},"append"),appendEscaped:i(function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},"appendEscaped"),getContext:i(function(e){this.lastContext=e},"getContext"),pushContext:i(function(){this.pushStackLiteral(this.contextName(this.lastContext))},"pushContext"),lookupOnContext:i(function(e,r,n,s){var o=0;!s&&this.options.compat&&!this.lastContext?this.push(this.depthedLookup(e[o++])):this.pushContext(),this.resolvePath("context",e,o,r,n)},"lookupOnContext"),lookupBlockParam:i(function(e,r){this.useBlockParams=!0,this.push(["blockParams[",e[0],"][",e[1],"]"]),this.resolvePath("context",r,1)},"lookupBlockParam"),lookupData:i(function(e,r,n){e?this.pushStackLiteral("container.data(data, "+e+")"):this.pushStackLiteral("data"),this.resolvePath("data",r,0,!0,n)},"lookupData"),resolvePath:i(function(e,r,n,s,o){var a=this;if(this.options.strict||this.options.assumeObjects){this.push(Nxt(this.options.strict&&o,this,r,n,e));return}for(var c=r.length,l=i(function(d){a.replaceStack(function(p){var f=a.nameLookup(p,r[d],e);return s?[" && ",f]:[" != null ? ",f," : ",p]})},"_loop"),u=n;u<c;u++)l(u)},"resolvePath"),resolvePossibleLambda:i(function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},"resolvePossibleLambda"),pushStringParam:i(function(e,r){this.pushContext(),this.pushString(r),r!=="SubExpression"&&(typeof e=="string"?this.pushString(e):this.pushStackLiteral(e))},"pushStringParam"),emptyHash:i(function(e){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(e?"undefined":"{}")},"emptyHash"),pushHash:i(function(){this.hash&&this.hashes.push(this.hash),this.hash={values:{},types:[],contexts:[],ids:[]}},"pushHash"),popHash:i(function(){var e=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(e.ids)),this.stringParams&&(this.push(this.objectLiteral(e.contexts)),this.push(this.objectLiteral(e.types))),this.push(this.objectLiteral(e.values))},"popHash"),pushString:i(function(e){this.pushStackLiteral(this.quotedString(e))},"pushString"),pushLiteral:i(function(e){this.pushStackLiteral(e)},"pushLiteral"),pushProgram:i(function(e){e!=null?this.pushStackLiteral(this.programExpression(e)):this.pushStackLiteral(null)},"pushProgram"),registerDecorator:i(function(e,r){var n=this.nameLookup("decorators",r,"decorator"),s=this.setupHelperArgs(r,e);this.decorators.push(["var decorator = ",n,";"]),this.decorators.push(['if (typeof decorator !== "function") { throw new Error(',this.quotedString('Missing decorator: "'+r+'"'),"); }"]),this.decorators.push(["fn = ",this.decorators.functionCall("decorator","",["fn","props","container",s])," || fn;"])},"registerDecorator"),invokeHelper:i(function(e,r,n){var s=this.popStack(),o=this.setupHelper(e,r),a=[];n&&a.push(o.name),a.push(s),this.options.strict||a.push(this.aliasable("container.hooks.helperMissing"));var c=["(",this.itemsSeparatedBy(a,"||"),")"],l=this.source.functionCall(c,"call",o.callParams);this.push(l)},"invokeHelper"),itemsSeparatedBy:i(function(e,r){var n=[];n.push(e[0]);for(var s=1;s<e.length;s++)n.push(r,e[s]);return n},"itemsSeparatedBy"),invokeKnownHelper:i(function(e,r){var n=this.setupHelper(e,r);this.push(this.source.functionCall(n.name,"call",n.callParams))},"invokeKnownHelper"),invokeAmbiguous:i(function(e,r){this.useRegister("helper");var n=this.popStack();this.emptyHash();var s=this.setupHelper(0,e,r),o=this.lastHelper=this.nameLookup("helpers",e,"helper"),a=["(","(helper = ",o," || ",n,")"];this.options.strict||(a[0]="(helper = ",a.push(" != null ? helper : ",this.aliasable("container.hooks.helperMissing"))),this.push(["(",a,s.paramsInit?["),(",s.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("h
Line truncated
|
||||||
|
`,e};pr.prototype.Program=function(t){var e="",r=t.body,n=void 0,s=void 0;if(t.blockParams){var o="BLOCK PARAMS: [";for(n=0,s=t.blockParams.length;n<s;n++)o+=" "+t.blockParams[n];o+=" ]",e+=this.pad(o)}for(n=0,s=r.length;n<s;n++)e+=this.accept(r[n]);return this.padding--,e};pr.prototype.MustacheStatement=function(t){return this.pad("{{ "+this.SubExpression(t)+" }}")};pr.prototype.Decorator=function(t){return this.pad("{{ DIRECTIVE "+this.SubExpression(t)+" }}")};pr.prototype.BlockStatement=pr.prototype.DecoratorBlock=function(t){var e="";return e+=this.pad((t.type==="DecoratorBlock"?"DIRECTIVE ":"")+"BLOCK:"),this.padding++,e+=this.pad(this.SubExpression(t)),t.program&&(e+=this.pad("PROGRAM:"),this.padding++,e+=this.accept(t.program),this.padding--),t.inverse&&(t.program&&this.padding++,e+=this.pad("{{^}}"),this.padding++,e+=this.accept(t.inverse),this.padding--,t.program&&this.padding--),this.padding--,e};pr.prototype.PartialStatement=function(t){var e="PARTIAL:"+t.name.original;return t.params[0]&&(e+=" "+this.accept(t.params[0])),t.hash&&(e+=" "+this.accept(t.hash)),this.pad("{{> "+e+" }}")};pr.prototype.PartialBlockStatement=function(t){var e="PARTIAL BLOCK:"+t.name.original;return t.params[0]&&(e+=" "+this.accept(t.params[0])),t.hash&&(e+=" "+this.accept(t.hash)),e+=" "+this.pad("PROGRAM:"),this.padding++,e+=this.accept(t.program),this.padding--,this.pad("{{> "+e+" }}")};pr.prototype.ContentStatement=function(t){return this.pad("CONTENT[ '"+t.value+"' ]")};pr.prototype.CommentStatement=function(t){return this.pad("{{! '"+t.value+"' }}")};pr.prototype.SubExpression=function(t){for(var e=t.params,r=[],n=void 0,s=0,o=e.length;s<o;s++)r.push(this.accept(e[s]));return e="["+r.join(", ")+"]",n=t.hash?" "+this.accept(t.hash):"",this.accept(t.path)+" "+e+n};pr.prototype.PathExpression=function(t){var e=t.parts.join("/");return(t.data?"@":"")+"PATH:"+e};pr.prototype.StringLiteral=function(t){return'"'+t.value+'"'};pr.prototype.NumberLiteral=function(t){return"NUMBER{"+t.value+"}"};pr.prototype.BooleanLiteral=function(t){return"BOOLEAN{"+t.value+"}"};pr.prototype.UndefinedLiteral=function(){return"UNDEFINED"};pr.prototype.NullLiteral=function(){return"NULL"};pr.prototype.Hash=function(t){for(var e=t.pairs,r=[],n=0,s=e.length;n<s;n++)r.push(this.accept(e[n]));return"HASH{"+r.join(", ")+"}"};pr.prototype.HashPair=function(t){return t.key+"="+this.accept(t.value)}});var vwe=w((pxr,Pwe)=>{var Nv=Bwe().default,Twe=Rwe();Nv.PrintVisitor=Twe.PrintVisitor;Nv.print=Twe.print;Pwe.exports=Nv;function Nwe(t,e){var r=require("fs"),n=r.readFileSync(e,"utf8");t.exports=Nv.compile(n)}i(Nwe,"extension");typeof require<"u"&&require.extensions&&(require.extensions[".handlebars"]=Nwe,require.extensions[".hbs"]=Nwe)});var zwe=w(Qv=>{"use strict";Object.defineProperty(Qv,"__esModule",{value:!0});Qv.getProxyUrl=Wxt;Qv.checkBypass=Hwe;function Wxt(t){let e=t.protocol==="https:";if(Hwe(t))return;let r=e?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(r)try{return new _v(r)}catch{if(!r.startsWith("http://")&&!r.startsWith("https://"))return new _v(`http://${r}`)}else return}i(Wxt,"getProxyUrl");function Hwe(t){if(!t.hostname)return!1;let e=t.hostname;if(Yxt(e))return!0;let r=process.env.no_proxy||process.env.NO_PROXY||"";if(!r)return!1;let n;t.port?n=Number(t.port):t.protocol==="http:"?n=80:t.protocol==="https:"&&(n=443);let s=[t.hostname.toUpperCase()];typeof n=="number"&&s.push(`${s[0]}:${n}`);for(let o of r.split(",").map(a=>a.trim().toUpperCase()).filter(a=>a))if(o==="*"||s.some(a=>a===o||a.endsWith(`.${o}`)||o.startsWith(".")&&a.endsWith(`${o}`)))return!0;return!1}i(Hwe,"checkBypass");function Yxt(t){let e=t.toLowerCase();return e==="localhost"||e.startsWith("127.")||e.startsWith("[::1]")||e.startsWith("[0:0:0:0:0:0:0:1]")}i(Yxt,"isLoopbackAddress");var _v=class extends URL{static{i(this,"DecodedURL")}constructor(e,r){super(e,r),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}});var Wwe=w(Wt=>{"use strict";var Jxt=Wt&&Wt.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var s=Object.getOwnPropertyDescriptor(e,r);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:i(function(){return e[r]},"get")}),Object.defineProperty(t,n,s)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),jxt=Wt&&Wt.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Ov=Wt&&Wt.__importStar||(function(){var t=i(function(e){return t=Object.getOwnPropertyNames||function(r){var n=[];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[n.length]=s);return n},t(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=t(e),s=0;s<n.length;s++)n[s]!=="default"&&Jxt(r,e,n[s]);return jxt(r,e),
Line truncated
|
||||||
|
versions published after the first week of January 2027
|
||||||
|
will require node >=${r}. You are running node ${t}.
|
||||||
|
|
||||||
|
To continue receiving updates to AWS services, bug fixes,
|
||||||
|
and security updates please upgrade to node >=${r}.
|
||||||
|
|
||||||
|
More information can be found at: https://a.co/c895JFp`))}},"emitWarningIfUnsupportedVersion")});var c0t,l0t,YSe,JSe=g(()=>{c0t=i(()=>(t,e)=>async r=>(e.__retryLongPoll=!0,t(r)),"longPollMiddleware"),l0t={name:"longPollMiddleware",tags:["RETRY"],step:"initialize",override:!0},YSe=i(t=>({applyToStack:i(e=>{e.add(c0t(),l0t)},"applyToStack")}),"getLongPollPlugin")});function Bd(t,e,r){return t.$source||(t.$source={}),t.$source[e]=r,t}var jSe=g(()=>{i(Bd,"setCredentialFeature")});var KSe,d8,XSe=g(()=>{KSe=require("node:stream"),d8=i(t=>t?.body instanceof KSe.Readable||typeof ReadableStream<"u"&&t?.body instanceof ReadableStream,"isStreamingPayload")});var lm,Rd,Nd,ZSe,exe,Vv=g(()=>{lm=i((t,e)=>{let r=[];if(t&&r.push(t),e)for(let n of e)r.push(n);return r},"getAllAliases"),Rd=i((t,e)=>`${t||"anonymous"}${e&&e.length>0?` (a.k.a. ${e.join(",")})`:""}`,"getMiddlewareNameWithAliases"),Nd=i(()=>{let t=[],e=[],r=!1,n=new Set,s=i(p=>p.sort((f,m)=>ZSe[m.step]-ZSe[f.step]||exe[m.priority||"normal"]-exe[f.priority||"normal"]),"sort"),o=i(p=>{let f=!1,m=i(A=>{let h=lm(A.name,A.aliases);if(h.includes(p)){f=!0;for(let E of h)n.delete(E);return!1}return!0},"filterCb");return t=t.filter(m),e=e.filter(m),f},"removeByName"),a=i(p=>{let f=!1,m=i(A=>{if(A.middleware===p){f=!0;for(let h of lm(A.name,A.aliases))n.delete(h);return!1}return!0},"filterCb");return t=t.filter(m),e=e.filter(m),f},"removeByReference"),c=i(p=>(t.forEach(f=>{p.add(f.middleware,{...f})}),e.forEach(f=>{p.addRelativeTo(f.middleware,{...f})}),p.identifyOnResolve?.(d.identifyOnResolve()),p),"cloneTo"),l=i(p=>{let f=[];return p.before.forEach(m=>{m.before.length===0&&m.after.length===0?f.push(m):f.push(...l(m))}),f.push(p),p.after.reverse().forEach(m=>{m.before.length===0&&m.after.length===0?f.push(m):f.push(...l(m))}),f},"expandRelativeMiddlewareList"),u=i((p=!1)=>{let f=[],m=[],A={};return t.forEach(E=>{let y={...E,before:[],after:[]};for(let I of lm(y.name,y.aliases))A[I]=y;f.push(y)}),e.forEach(E=>{let y={...E,before:[],after:[]};for(let I of lm(y.name,y.aliases))A[I]=y;m.push(y)}),m.forEach(E=>{if(E.toMiddleware){let y=A[E.toMiddleware];if(y===void 0){if(p)return;throw new Error(`${E.toMiddleware} is not found when adding ${Rd(E.name,E.aliases)} middleware ${E.relation} ${E.toMiddleware}`)}E.relation==="after"&&y.after.push(E),E.relation==="before"&&y.before.push(E)}}),s(f).map(l).reduce((E,y)=>(E.push(...y),E),[])},"getMiddlewareList"),d={add:i((p,f={})=>{let{name:m,override:A,aliases:h}=f,E={step:"initialize",priority:"normal",middleware:p,...f},y=lm(m,h);if(y.length>0){if(y.some(I=>n.has(I))){if(!A)throw new Error(`Duplicate middleware name '${Rd(m,h)}'`);for(let I of y){let x=t.findIndex(N=>N.name===I||N.aliases?.some(v=>v===I));if(x===-1)continue;let b=t[x];if(b.step!==E.step||E.priority!==b.priority)throw new Error(`"${Rd(b.name,b.aliases)}" middleware with ${b.priority} priority in ${b.step} step cannot be overridden by "${Rd(m,h)}" middleware with ${E.priority} priority in ${E.step} step.`);t.splice(x,1)}}for(let I of y)n.add(I)}t.push(E)},"add"),addRelativeTo:i((p,f)=>{let{name:m,override:A,aliases:h}=f,E={middleware:p,...f},y=lm(m,h);if(y.length>0){if(y.some(I=>n.has(I))){if(!A)throw new Error(`Duplicate middleware name '${Rd(m,h)}'`);for(let I of y){let x=e.findIndex(N=>N.name===I||N.aliases?.some(v=>v===I));if(x===-1)continue;let b=e[x];if(b.toMiddleware!==E.toMiddleware||b.relation!==E.relation)throw new Error(`"${Rd(b.name,b.aliases)}" middleware ${b.relation} "${b.toMiddleware}" middleware cannot be overridden by "${Rd(m,h)}" middleware ${E.relation} "${E.toMiddleware}" middleware.`);e.splice(x,1)}}for(let I of y)n.add(I)}e.push(E)},"addRelativeTo"),clone:i(()=>c(Nd()),"clone"),use:i(p=>{p.applyToStack(d)},"use"),remove:i(p=>typeof p=="string"?o(p):a(p),"remove"),removeByTag:i(p=>{let f=!1,m=i(A=>{let{tags:h,name:E,aliases:y}=A;if(h&&h.includes(p)){let I=lm(E,y);for(let x of I)n.delete(x);return f=!0,!1}return!0},"filterCb");return t=t.filter(m),e=e.filter(m),f},"removeByTag"),concat:i(p=>{let f=c(Nd());return f.use(p),f.identifyOnResolve(r||f.identifyOnResolve()||(p.identifyOnResolve?.()??!1)),f},"concat"),applyToStack:c,identify:i(()=>u(!0).map(p=>{let f=p.step??p.relation+" "+p.toMiddleware;return Rd(p.name,p.aliases)+" - "+f}),"identify"),identifyOnResolve(p){return typeof p=="boolean"&&(r=p),r},resolve:i((p,f)=>{for(let m of u().map(A=>A.middleware).reverse())p=m(p,f);return r&&console.log(d.identify()),p},"resolve")};return d},"constructStack"),ZSe={initialize:5,serialize:4,build:3,finalizeRequest:2,deserialize:1},exe={high:3,normal:2,low:1}});var ia=w(oa=>{var p8;(function(t){t.HEADER="header",t.QUERY="query"})(p8||(p8={}));var f8;(function(t){t.HEADER="header",t.QUERY="query"})(f8||(f8={}));var m8;(function(t){t.HTTP="http",t.HTTPS="https"})(m8||(m8={}));var Gw;(function(t){t.MD5="md5",t.CRC32="crc32",t.CRC32C="crc32c",t.SHA1="sha1",t.SHA256="sha256"})(Gw||(Gw={}));var u0t=i(t=>{let e=[];return t.sha256!==void 0&&e.push({algorithmId:i(
Line truncated
|
||||||
|
`+f}catch{!r.logger||r.logger?.constructor?.name==="NoOpLogger"?console.warn(f):r.logger?.warn?.(f)}typeof p.$responseBodyText<"u"&&p.$response&&(p.$response.body=p.$responseBodyText);try{if(an.isInstance(s)){let{headers:m={},statusCode:A}=s,h=Object.entries(m);p.$metadata={httpStatusCode:A,requestId:x8(/^x-[\w-]+-request-?id$/,h),extendedRequestId:x8(/^x-[\w-]+-id-2$/,h),cfId:x8(/^x-[\w-]+-cf-id$/,h)}}}catch{}}throw p}},"schemaDeserializationMiddleware"),x8=i((t,e)=>(e.find(([r])=>r.match(t))||[void 0,void 0])[1],"findHeader")});var bxe,Bxe=g(()=>{we();Jv();bxe=i(t=>(e,r)=>async n=>{let{operationSchema:s}=xt(r),[,o,a,c,l,u]=s??[],d=r.endpointV2?async()=>No(r.endpointV2):t.endpoint,p=await t.protocol.serializeRequest(Lg(o,a,c,l,u),n.input,{...t,...r,endpoint:d});return e({...n,request:p})},"schemaSerializationMiddleware")});function Qc(t){return{applyToStack:i(e=>{e.add(bxe(t),B8),e.add(Sxe(t),b8),t.protocol.setSerdeContext(t)},"applyToStack")}}var b8,B8,Rxe=g(()=>{xxe();Bxe();b8={name:"deserializerMiddleware",step:"deserialize",tags:["DESERIALIZER"],override:!0},B8={name:"serializerMiddleware",step:"serialize",tags:["SERIALIZER"],override:!0};i(Qc,"getSchemaSerdePlugin")});var fr,Td=g(()=>{fr=class{static{i(this,"Schema")}name;namespace;traits;static assign(e,r){return Object.assign(e,r)}static[Symbol.hasInstance](e){let r=this.prototype.isPrototypeOf(e);return!r&&typeof e=="object"&&e!==null?e.symbol===this.symbol:r}getName(){return this.namespace+"#"+this.name}}});var zw,Nxe,Txe=g(()=>{Td();zw=class t extends fr{static{i(this,"ListSchema")}static symbol=Symbol.for("@smithy/lis");valueSchema;symbol=t.symbol},Nxe=i((t,e,r,n)=>fr.assign(new zw,{name:e,namespace:t,traits:r,valueSchema:n}),"list")});var Vw,Pxe,vxe=g(()=>{Td();Vw=class t extends fr{static{i(this,"MapSchema")}static symbol=Symbol.for("@smithy/map");keySchema;valueSchema;symbol=t.symbol},Pxe=i((t,e,r,n,s)=>fr.assign(new Vw,{name:e,namespace:t,traits:r,keySchema:n,valueSchema:s}),"map")});var Ww,_xe,Qxe=g(()=>{Td();Ww=class t extends fr{static{i(this,"OperationSchema")}static symbol=Symbol.for("@smithy/ope");input;output;symbol=t.symbol},_xe=i((t,e,r,n,s)=>fr.assign(new Ww,{name:e,namespace:t,traits:r,input:n,output:s}),"op")});var um,Dxe,R8=g(()=>{Td();um=class t extends fr{static{i(this,"StructureSchema")}static symbol=Symbol.for("@smithy/str");memberNames;memberList;symbol=t.symbol},Dxe=i((t,e,r,n,s)=>fr.assign(new um,{name:e,namespace:t,traits:r,memberNames:n,memberList:s}),"struct")});var Yw,kxe,Lxe=g(()=>{Td();R8();Yw=class t extends um{static{i(this,"ErrorSchema")}static symbol=Symbol.for("@smithy/err");ctor;symbol=t.symbol},kxe=i((t,e,r,n,s,o)=>fr.assign(new Yw,{name:e,namespace:t,traits:r,memberNames:n,memberList:s,ctor:null}),"error")});function ca(t){if(typeof t=="object")return t;if(t=t|0,Jw[t])return Jw[t];let e={},r=0;for(let n of["httpLabel","idempotent","idempotencyToken","sensitive","httpPayload","httpResponseCode","httpQueryParams"])(t>>r++&1)===1&&(e[n]=1);return Jw[t]=e}var Jw,N8=g(()=>{Jw=[];i(ca,"translateTraits")});function Kw(t,e){if(t instanceof L)return Object.assign(t,{memberName:e,_isMemberSchema:!0});let r=L;return new r(t,e)}var jw,Xw,Zw,L,T8,P8,Oxe=g(()=>{S8();N8();jw={it:Symbol.for("@smithy/nor-struct-it"),ns:Symbol.for("@smithy/ns")},Xw=[],Zw={},L=class t{static{i(this,"NormalizedSchema")}ref;memberName;static symbol=Symbol.for("@smithy/nor");symbol=t.symbol;name;schema;_isMemberSchema;traits;memberTraits;normalizedTraits;constructor(e,r){this.ref=e,this.memberName=r;let n=[],s=e,o=e;for(this._isMemberSchema=!1;T8(s);)n.push(s[1]),s=s[0],o=Hs(s),this._isMemberSchema=!0;if(n.length>0){this.memberTraits={};for(let a=n.length-1;a>=0;--a){let c=n[a];Object.assign(this.memberTraits,ca(c))}}else this.memberTraits=0;if(o instanceof t){let a=this.memberTraits;Object.assign(this,o),this.memberTraits=Object.assign({},a,o.getMemberTraits(),this.getMemberTraits()),this.normalizedTraits=void 0,this.memberName=r??o.memberName;return}if(this.schema=Hs(o),P8(this.schema)?(this.name=`${this.schema[1]}#${this.schema[2]}`,this.traits=this.schema[3]):(this.name=this.memberName??String(o),this.traits=0),this._isMemberSchema&&!r)throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(!0)} missing member name.`)}static[Symbol.hasInstance](e){let r=this.prototype.isPrototypeOf(e);return!r&&typeof e=="object"&&e!==null?e.symbol===this.symbol:r}static of(e){let r=typeof e=="function"||typeof e=="object"&&e!==null;if(typeof e=="number"){if(Xw[e])return Xw[e]}else if(typeof e=="string"){if(Zw[e])return Zw[e]}else if(r&&e[jw.ns])return e[jw.ns];let n=Hs(e);if(n instanceof t)return n;if(T8(n)){let[o,a]=n;if(o instanceof t)return Object.assign(o.getMergedTraits(),ca(a)),o;throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(e,null,2)}.`)}let s=new t(n);return r?e[jw.ns]=s:typeof n=="string"?Zw[n]=s:typeof n=="number"?Xw[n]=s:s}getSchema(){let e=this.schema;return Array.isArra
Line truncated
|
||||||
|
`).slice(0,5).filter(e=>!e.includes("stackTraceWarning")).join(`
|
||||||
|
`),"stackTraceWarning"),Gg={warn:console.warn}});function Po(t){let e=t.getUTCFullYear(),r=t.getUTCMonth(),n=t.getUTCDay(),s=t.getUTCDate(),o=t.getUTCHours(),a=t.getUTCMinutes(),c=t.getUTCSeconds(),l=s<10?`0${s}`:`${s}`,u=o<10?`0${o}`:`${o}`,d=a<10?`0${a}`:`${a}`,p=c<10?`0${c}`:`${c}`;return`${T0t[n]}, ${l} ${J8[r]} ${e} ${u}:${d}:${p} GMT`}var T0t,J8,P0t,Lbe,v0t,zg,_0t,Q0t,D0t,Qd,Vg,rS,k0t,L0t,O0t,Y8,M0t,F0t,U0t,Fc,q0t,G0t,Hg,Obe=g(()=>{W8();T0t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],J8=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];i(Po,"dateToUtcString");P0t=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/),Lbe=i(t=>{if(t==null)return;if(typeof t!="string")throw new TypeError("RFC-3339 date-times must be expressed as strings");let e=P0t.exec(t);if(!e)throw new TypeError("Invalid RFC-3339 date-time value");let[r,n,s,o,a,c,l,u]=e,d=_d(Hg(n)),p=Fc(s,"month",1,12),f=Fc(o,"day",1,31);return rS(d,p,f,{hours:a,minutes:c,seconds:l,fractionalMilliseconds:u})},"parseRfc3339DateTime"),v0t=new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}:\d{2})|[zZ])$/),zg=i(t=>{if(t==null)return;if(typeof t!="string")throw new TypeError("RFC-3339 date-times must be expressed as strings");let e=v0t.exec(t);if(!e)throw new TypeError("Invalid RFC-3339 date-time value");let[r,n,s,o,a,c,l,u,d]=e,p=_d(Hg(n)),f=Fc(s,"month",1,12),m=Fc(o,"day",1,31),A=rS(p,f,m,{hours:a,minutes:c,seconds:l,fractionalMilliseconds:u});return d.toUpperCase()!="Z"&&A.setTime(A.getTime()-G0t(d)),A},"parseRfc3339DateTimeWithOffset"),_0t=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),Q0t=new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/),D0t=new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/),Qd=i(t=>{if(t==null)return;if(typeof t!="string")throw new TypeError("RFC-7231 date-times must be expressed as strings");let e=_0t.exec(t);if(e){let[r,n,s,o,a,c,l,u]=e;return rS(_d(Hg(o)),Y8(s),Fc(n,"day",1,31),{hours:a,minutes:c,seconds:l,fractionalMilliseconds:u})}if(e=Q0t.exec(t),e){let[r,n,s,o,a,c,l,u]=e;return O0t(rS(k0t(o),Y8(s),Fc(n,"day",1,31),{hours:a,minutes:c,seconds:l,fractionalMilliseconds:u}))}if(e=D0t.exec(t),e){let[r,n,s,o,a,c,l,u]=e;return rS(_d(Hg(u)),Y8(n),Fc(s.trimLeft(),"day",1,31),{hours:o,minutes:a,seconds:c,fractionalMilliseconds:l})}throw new TypeError("Invalid RFC-7231 date-time value")},"parseRfc7231DateTime"),Vg=i(t=>{if(t==null)return;let e;if(typeof t=="number")e=t;else if(typeof t=="string")e=tS(t);else if(typeof t=="object"&&t.tag===1)e=t.value;else throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation");if(Number.isNaN(e)||e===1/0||e===-1/0)throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics");return new Date(Math.round(e*1e3))},"parseEpochTimestamp"),rS=i((t,e,r,n)=>{let s=e-1;return F0t(t,s,r),new Date(Date.UTC(t,s,r,Fc(n.hours,"hour",0,23),Fc(n.minutes,"minute",0,59),Fc(n.seconds,"seconds",0,60),q0t(n.fractionalMilliseconds)))},"buildDate"),k0t=i(t=>{let e=new Date().getUTCFullYear(),r=Math.floor(e/100)*100+_d(Hg(t));return r<e?r+100:r},"parseTwoDigitYear"),L0t=50*365*24*60*60*1e3,O0t=i(t=>t.getTime()-new Date().getTime()>L0t?new Date(Date.UTC(t.getUTCFullYear()-100,t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds())):t,"adjustRfc850Year"),Y8=i(t=>{let e=J8.indexOf(t);if(e<0)throw new TypeError(`Invalid month: ${t}`);return e+1},"parseMonthByShortName"),M0t=[31,28,31,30,31,30,31,31,30,31,30,31],F0t=i((t,e,r)=>{let n=M0t[e];if(e===1&&U0t(t)&&(n=29),r>n)throw new TypeError(`Invalid day for ${J8[e]} in ${t}: ${r}`)},"validateDayOfMonth"),U0t=i(t=>t%4===0&&(t%100!==0||t%400===0),"isLeapYear"),Fc=i((t,e,r,n)=>{let s=d_(Hg(t));if(s<r||s>n)throw new TypeError(`${e} must be between ${r} and ${n}, inclusive`);return s},"parseDateValue"),q0t=i(t=>t==null?0:l_("0."+t)*1e3,"parseMilliseconds"),G0t=i(t=>{let e=t[0],r=1;if(e=="+")r=1;else if(e=="-")r=-1;else throw new TypeError(`Offset direction, ${e}, must be "+" or "-"`);let n=Number(t.substring(1,3)),s=Number(t.substring(4,6));return r*(n*60+s)*60*1e3},"parseOffsetToMilliseconds"),Hg=i(t=>{let e=0;for(;e<t.length-1&&t.charAt(e)==="0";)e++;return e===0?t:t.slice(e)},"stripLeadingZeroes")});var Dr,Mbe=g(()=>{Dr=i(function(e){return Object.assign(new String(e),{deserializeJSON(){return JSON.parse(String(e))},toString(){return String(e)},toJSON(){return String(e)}})},"LazyJsonString");Dr.from=t=>t&&typeof t=="object"&&(t instanceof Dr||"deserializeJSON"in t)?t:typeof t=="string"||Object.getPrototypeOf(t)===String.p
Line truncated
|
||||||
|
`+c}catch{!n.logger||n.logger?.constructor?.name==="NoOpLogger"?console.warn(c):n.logger?.warn?.(c)}typeof a.$responseBodyText<"u"&&a.$response&&(a.$response.body=a.$responseBodyText);try{if(an.isInstance(o)){let{headers:l={}}=o,u=Object.entries(l);a.$metadata={httpStatusCode:o.statusCode,requestId:rJ(/^x-[\w-]+-request-?id$/,u),extendedRequestId:rJ(/^x-[\w-]+-id-2$/,u),cfId:rJ(/^x-[\w-]+-cf-id$/,u)}}}catch{}}throw a}},"deserializerMiddleware"),rJ=i((t,e)=>(e.find(([r])=>r.match(t))||[void 0,void 0])[1],"findHeader")});var vo,sS=g(()=>{vo=class t extends Error{static{i(this,"ProviderError")}name="ProviderError";tryNextLink;constructor(e,r=!0){let n,s=!0;typeof r=="boolean"?(n=void 0,s=r):r!=null&&typeof r=="object"&&(n=r.logger,s=r.tryNextLink??!0),super(e),this.tryNextLink=s,Object.setPrototypeOf(this,t.prototype),n?.debug?.(`@smithy/property-provider ${s?"->":"(!)"} ${e}`)}static from(e,r=!0){return Object.assign(new this(e.message,r),e)}}});var kd,E_=g(()=>{sS();kd=class t extends vo{static{i(this,"CredentialsProviderError")}name="CredentialsProviderError";constructor(e,r=!0){super(e,r),Object.setPrototypeOf(this,t.prototype)}}});var C_,Jbe=g(()=>{sS();C_=class t extends vo{static{i(this,"TokenProviderError")}name="TokenProviderError";constructor(e,r=!0){super(e,r),Object.setPrototypeOf(this,t.prototype)}}});var I_,sJ=g(()=>{sS();I_=i((...t)=>async()=>{if(t.length===0)throw new vo("No providers in chain");let e;for(let r of t)try{return await r()}catch(n){if(e=n,n?.tryNextLink)continue;throw n}throw e},"chain")});var w_,oJ=g(()=>{w_=i(t=>()=>Promise.resolve(t),"fromValue")});var Jg,S_=g(()=>{Jg=i((t,e,r)=>{let n,s,o,a=!1,c=i(async()=>{s||(s=t());try{n=await s,o=!0,a=!1}finally{s=void 0}return n},"coalesceProvider");return e===void 0?async l=>((!o||l?.forceRefresh)&&(n=await c()),n):async l=>((!o||l?.forceRefresh)&&(n=await c()),a?n:r&&!r(n)?(a=!0,n):(e(n)&&await c(),n))},"memoize")});var cn,x_=g(()=>{cn=i((t,e,r)=>{if(e in t){if(t[e]==="true")return!0;if(t[e]==="false")return!1;throw new Error(`Cannot load ${r} "${e}". Expected "true" or "false", got ${t[e]}.`)}},"booleanSelector")});var jbe,Kbe=g(()=>{jbe=i((t,e,r)=>{if(!(e in t))return;let n=parseInt(t[e],10);if(Number.isNaN(n))throw new TypeError(`Cannot load ${r} '${e}'. Expected number, got '${t[e]}'.`);return n},"numberSelector")});var kr,b_=g(()=>{(function(t){t.ENV="env",t.CONFIG="shared config entry"})(kr||(kr={}))});var Xbe,Zbe,iJ,Y0t,Gc,jg=g(()=>{Xbe=require("node:os"),Zbe=require("node:path"),iJ={},Y0t=i(()=>process&&process.geteuid?`${process.geteuid()}`:"DEFAULT","getHomeDirCacheKey"),Gc=i(()=>{let{HOME:t,USERPROFILE:e,HOMEPATH:r,HOMEDRIVE:n=`C:${Zbe.sep}`}=process.env;if(t)return t;if(e)return e;if(r)return`${n}${r}`;let s=Y0t();return iJ[s]||(iJ[s]=(0,Xbe.homedir)()),iJ[s]},"getHomeDir")});var aJ,cJ,B_,lJ=g(()=>{aJ="AWS_PROFILE",cJ="default",B_=i(t=>t.profile||process.env[aJ]||cJ,"getProfileName")});var e0e,t0e,R_,uJ=g(()=>{e0e=require("node:crypto"),t0e=require("node:path");jg();R_=i(t=>{let r=(0,e0e.createHash)("sha1").update(t).digest("hex");return(0,t0e.join)(Gc(),".aws","sso","cache",`${r}.json`)},"getSSOTokenFilepath")});var r0e,oS,n0e,dJ=g(()=>{r0e=require("node:fs/promises");uJ();oS={},n0e=i(async t=>{if(oS[t])return oS[t];let e=R_(t),r=await(0,r0e.readFile)(e,"utf8");return JSON.parse(r)},"getSSOTokenFromFile")});var $c,s0e=g(()=>{$c="."});var pJ,o0e,i0e=g(()=>{pJ=R(ia()),o0e=i(t=>Object.entries(t).filter(([e])=>{let r=e.indexOf(".");return r===-1?!1:Object.values(pJ.IniSectionType).includes(e.substring(0,r))}).reduce((e,[r,n])=>{let s=r.indexOf("."),o=r.substring(0,s)===pJ.IniSectionType.PROFILE?r.substring(s+1):r;return e[o]=n,e},{...t.default&&{default:t.default}}),"getConfigData")});var a0e,J0t,N_,fJ=g(()=>{a0e=require("node:path");jg();J0t="AWS_CONFIG_FILE",N_=i(()=>process.env[J0t]||(0,a0e.join)(Gc(),".aws","config"),"getConfigFilepath")});var c0e,j0t,l0e,u0e=g(()=>{c0e=require("node:path");jg();j0t="AWS_SHARED_CREDENTIALS_FILE",l0e=i(()=>process.env[j0t]||(0,c0e.join)(Gc(),".aws","credentials"),"getCredentialsFilepath")});var d0e,K0t,X0t,iS,mJ=g(()=>{d0e=R(ia()),K0t=/^([\w-]+)\s(["'])?([\w-@+.%:/]+)\2$/,X0t=["__proto__","profile __proto__"],iS=i(t=>{let e={},r,n;for(let s of t.split(/\r?\n/)){let o=s.split(/(^|\s)[;#]/)[0].trim();if(o[0]==="["&&o[o.length-1]==="]"){r=void 0,n=void 0;let c=o.substring(1,o.length-1),l=K0t.exec(c);if(l){let[,u,,d]=l;Object.values(d0e.IniSectionType).includes(u)&&(r=[u,d].join("."))}else r=c;if(X0t.includes(c))throw new Error(`Found invalid profile name "${c}"`)}else if(r){let c=o.indexOf("=");if(![0,-1].includes(c)){let[l,u]=[o.substring(0,c).trim(),o.substring(c+1).trim()];if(u==="")n=l;else{n&&s.trimStart()===s&&(n=void 0),e[r]=e[r]||{};let d=n?[n,l].join("."):l;e[r][d]=u}}}}return e},"parseIni")});var p0e,AJ,aS,mm,cS=g(()=>{p0e=require("node:fs/promises"),AJ={},aS={},mm=i((t,e)=>aS[t]!==void 0?aS[t]:((!AJ[t]||e?.ignoreCache)&&(AJ[t]=(0,p0e.readFile)(t,"utf8")),AJ[t]),"readFile")});var h
Line truncated
|
||||||
|
`),c){let m=r(await l);d.enqueue(`${o}:${m}\r
|
||||||
|
`),d.enqueue(`\r
|
||||||
|
`)}d.close()}else d.enqueue(`${(n(p)||0).toString(16)}\r
|
||||||
|
${p}\r
|
||||||
|
`)}})},"getAwsChunkedEncodingStream")});function FRe(t,e){let r=t,n=t;if(Jr(n))return LRe(n,e);let{base64Encoder:s,bodyLengthChecker:o,checksumAlgorithmFn:a,checksumLocationName:c,streamHasher:l}=e,u=s!==void 0&&a!==void 0&&c!==void 0&&l!==void 0,d=u?l(a,r):void 0;Promise.resolve(d).catch(()=>{});let p=new MRe.Readable({read(){r.resume()}});return r.on("data",f=>{let m=o(f)||0;m!==0&&(p.push(`${m.toString(16)}\r
|
||||||
|
`),p.push(f),p.push(`\r
|
||||||
|
`)||r.pause())}),r.on("error",f=>{p.destroy(f)}),r.pause(),r.on("end",async()=>{try{if(p.push(`0\r
|
||||||
|
`),u){let f=s(await d);p.push(`${c}:${f}\r
|
||||||
|
`),p.push(`\r
|
||||||
|
`)}p.push(null)}catch(f){p.destroy(f)}}),p}var MRe,URe=g(()=>{MRe=require("node:stream");ORe();da();i(FRe,"getAwsChunkedEncodingStream")});async function qRe(t,e){let r=0,n=[],s=t.getReader(),o=!1;for(;!o;){let{done:l,value:u}=await s.read();if(u&&(n.push(u),r+=u?.byteLength??0),r>=e)break;o=l}s.releaseLock();let a=new Uint8Array(Math.min(e,r)),c=0;for(let l of n){if(l.byteLength>a.byteLength-c){a.set(l.subarray(0,a.byteLength-c),c);break}else a.set(l,c);c+=l.length}return a}var GRe=g(()=>{i(qRe,"headStream")});var $Re,HRe,cj,zRe=g(()=>{$Re=require("node:stream");nS();GRe();da();HRe=i((t,e)=>Jr(t)?qRe(t,e):new Promise((r,n)=>{let s=new cj;s.limit=e,t.pipe(s),t.on("error",o=>{s.end(),n(o)}),s.on("error",n),s.on("finish",function(){let o=qc(this.buffers);r(o)})}),"headStream"),cj=class extends $Re.Writable{static{i(this,"Collector")}buffers=[];limit=1/0;bytesBuffered=0;_write(e,r,n){if(this.buffers.push(e),this.bytesBuffered+=e.byteLength??0,this.bytesBuffered>=this.limit){let s=this.bytesBuffered-this.limit,o=this.buffers[this.buffers.length-1];this.buffers[this.buffers.length-1]=o.subarray(0,o.byteLength-s),this.emit("finish")}n()}}});var VRe,WRe=g(()=>{VRe=i(t=>{if(typeof t=="string")return t;if(typeof t!="object"||typeof t.byteOffset!="number"||typeof t.byteLength!="number")throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.");return new TextDecoder("utf-8").decode(t)},"toUtf8")});async function lj(t){return t.arrayBuffer().then(e=>new Uint8Array(e))}async function uj(t){let e=[],r=t.getReader(),n=0;for(;;){let{done:s,value:o}=await r.read();if(o&&(e.push(o),n+=o.length),s)break}return qc(e,n)}var YRe,dj=g(()=>{nS();da();YRe=i(async t=>Ld(t)?lj(t):uj(t),"streamCollector");i(lj,"collectBlob");i(uj,"collectReadableStream")});var JRe,KRe,jRe,XRe=g(()=>{sj();eJ();WRe();dj();da();JRe="The stream has already been transformed.",KRe=i(t=>{if(!jRe(t)&&!Jr(t)){let s=t?.__proto__?.constructor?.name||t;throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${s}`)}let e=!1,r=i(async()=>{if(e)throw new Error(JRe);return e=!0,await YRe(t)},"transformToByteArray"),n=i(s=>{if(typeof s.stream!="function")throw new Error(`Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.
|
||||||
|
If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body`);return s.stream()},"blobToWebStream");return Object.assign(t,{transformToByteArray:r,transformToString:i(async s=>{let o=await r();if(s==="base64")return eQ(o);if(s==="hex")return Ii(o);if(s===void 0||s==="utf8"||s==="utf-8")return VRe(o);if(typeof TextDecoder=="function")return new TextDecoder(s).decode(o);throw new Error("TextDecoder is not available, please make sure polyfill is provided.")},"transformToString"),transformToWebStream:i(()=>{if(e)throw new Error(JRe);if(e=!0,jRe(t))return n(t);if(Jr(t))return t;throw new Error(`Cannot transform payload to web stream, got ${t}`)},"transformToWebStream")})},"sdkStreamMixin"),jRe=i(t=>typeof Blob=="function"&&t instanceof Blob,"isBlobInstance")});var ZRe,rQ,pj,fj=g(()=>{ZRe=require("node:stream");nS();dj();da();rQ=i(t=>Ld(t)?lj(t):Jr(t)?uj(t):new Promise((e,r)=>{let n=new pj,s=t;s.pipe(n),s.on("error",o=>{n.end(),r(o)}),n.on("error",r),n.on("finish",function(){let o=qc(this.bufferedBytes);e(o)})}),"streamCollector"),pj=class extends ZRe.Writable{static{i(this,"Collector")}bufferedBytes=[];_write(e,r,n){this.bufferedBytes.push(e),n()}}});var nQ,eNe,sQ,tNe=g(()=>{nQ=require("node:stream");vd();XRe();fj();eNe="The stream has already been transformed.",sQ=i(t=>{if(!(t instanceof nQ.Readable))try{return KRe(t)}catch{let s=t?.__proto__?.constructor?.name||t;throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${s}`)}let e=!1,r=i(async()=>{if(e)throw new Error(eNe);return e=!0,await rQ(t)},"transformToByteArray");return Object.assign(t,{transformToByteArray:r,transformToString:i(async n=>{let s=await r();return n===void 0||Buffer.isEncoding(n)?ua(s.buffer,s.byteOffset,s.byteLength).toString(n):new TextDecoder(n).decode(s)},"transformToString"),transformToWebStream:i(()=>{if(e)throw new Error(eNe);if(t.readableFlowing!==null)throw new Error("The stream has been consumed by other callbacks.");if(typeof nQ.Readable.toWeb!="function")throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available.");return e=!0,nQ.Readable.toWeb(t)},"transformToWebStream")})},"sdkStreamMixin")});async function rNe(t){return typeof t.stream=="function"&&(t=t.stream()),t.tee()}var nNe=g(()=>{i(rNe,"splitStream")});async function sNe(t){if(Jr(t)||Ld(t))return rNe(t);let e=new mj.PassThrough,r=new mj.PassThrough;return t.pipe(e),t.pipe(r),[e,r]}var mj,oNe=g(()=>{mj=require("node:stream");nNe();da();i(sNe,"splitStream")});var ym={};Mr(ym,{ChecksumStream:()=>ry,Hash:()=>K_,LazyJsonString:()=>Dr,NumericValue:()=>Ye,Uint8ArrayBlobAdapter:()=>gm,_parseEpochTimestamp:()=>Dd,_parseRfc3339DateTimeWithOffset:()=>f_,_parseRfc7231DateTime:()=>m_,calculateBodyLength:()=>Uc,concatBytes:()=>qc,copyDocumentWithTransform:()=>wbe,createBufferedReadable:()=>DRe,createChecksumStream:()=>TRe,dateToUtcString:()=>Po,deserializerMiddleware:()=>y_,deserializerMiddlewareOption:()=>ej,expectBoolean:()=>bbe,expectByte:()=>i_,expectFloat32:()=>eS,expectInt:()=>Bbe,expectInt32:()=>s_,expectLong:()=>qg,expectNonNull:()=>Rbe,expectNumber:()=>Ug,expectObject:()=>z8,expectShort:()=>o_,expectString:()=>Nbe,expectUnion:()=>c_,fromArrayBuffer:()=>ua,fromBase64:()=>mr,fromHex:()=>g_,fromString:()=>Pd,fromUtf8:()=>Yr,generateIdempotencyToken:()=>Lo,getAwsChunkedEncodingStream:()=>FRe,getSerdePlugin:()=>ARe,handleFloat:()=>Pbe,hasOwn:()=>X,headStream:()=>HRe,isArrayBuffer:()=>t_,isBlob:()=>Ld,isReadableStream:()=>Jr,limitedParseDouble:()=>u_,limitedParseFloat:()=>vbe,limitedParseFloat32:()=>_be,logger:()=>Gg,nv:()=>h_,parseBoolean:()=>xbe,parseEpochTimestamp:()=>Vg,parseRfc3339DateTime:()=>Lbe,parseRfc3339DateTimeWithOffset:()=>zg,parseRfc7231DateTime:()=>Qd,quoteHeader:()=>p_,sdkStreamMixin:()=>sQ,serializerMiddleware:()=>j_,serializerMiddlewareOption:()=>tj,splitEvery:()=>A_,splitHeader:()=>Wg,splitStream:()=>sNe,streamCollector:()=>rQ,strictParseByte:()=>d_,strictParseDouble:()=>tS,strictParseFloat:()=>Tbe,strictParseFloat32:()=>l_,strictParseInt:()=>Dbe,strictParseInt32:()=>kbe,strictParseLong:()=>V8,strictParseShort:()=>_d,toBase64:()=>Pt,toHex:()=>Ii,toUint8Array:()=>gs,toUtf8:()=>Mt,v4:()=>ny});var iNe,gm,yBt,ny,Lo,Ie=g(()=>{iNe=require("node:crypto");hbe();$8();ybe();r_();Ebe();Ibe();Sbe();Obe();Mbe();W8();Fbe();Gbe();$be();Hbe();Vbe();eJ();Ybe();tJ();nS();vd();G8();nJ();hRe();ZJ();yRe();rj();PRe();kRe();URe();zRe();tNe();oNe();da();fj();we();gm=class extends gbe(Mt,Yr,Pt,mr){static{i(this,"Uint8ArrayBlobAdapter")}},yBt=iNe.getRandomValues,ny=Cbe(yBt),Lo=ny});var jr,sy=g(()=>{Ie();jr=i(async(t=new Uint8Array,e)=>{if(t instanceof Uint8Array)return gm.mutate(t);if(!t)return gm.mutate(new Uint8Array);let r=e.streamCollector(t);return gm.mutate(await r)},"collectBody")});function pa(t){return encodeURIComponent(t).replace(/[!'()*]/g,function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})}var oQ=g(()=>{i(pa,"extendedE
Line truncated
|
||||||
|
`));return r(s)},"httpAuthSchemeMiddleware")});var KQ,ha,zTe=g(()=>{jQ();KQ={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"endpointV2Middleware"},ha=i((t,{httpAuthSchemeParametersProvider:e,identityProviderConfigProvider:r})=>({applyToStack:i(n=>{n.addRelativeTo(xm(t,{httpAuthSchemeParametersProvider:e,identityProviderConfigProvider:r}),KQ)},"applyToStack")}),"getHttpAuthSchemeEndpointRuleSetPlugin")});var XQ,T5,VTe=g(()=>{jQ();XQ={step:"serialize",tags:["HTTP_AUTH_SCHEME"],name:"httpAuthSchemeMiddleware",override:!0,relation:"before",toMiddleware:"serializerMiddleware"},T5=i((t,{httpAuthSchemeParametersProvider:e,identityProviderConfigProvider:r})=>({applyToStack:i(n=>{n.addRelativeTo(xm(t,{httpAuthSchemeParametersProvider:e,identityProviderConfigProvider:r}),XQ)},"applyToStack")}),"getHttpAuthSchemePlugin")});var WTe=g(()=>{jQ();zTe();VTe()});var uRt,dRt,RS,P5=g(()=>{Se();we();uRt=i(t=>e=>{throw e},"defaultErrorHandler"),dRt=i((t,e)=>{},"defaultSuccessHandler"),RS=i(t=>(e,r)=>async n=>{if(!Ve.isInstance(n.request))return e(n);let o=xt(r).selectedHttpAuthScheme;if(!o)throw new Error("No HttpAuthScheme was selected: unable to sign request");let{httpAuthOption:{signingProperties:a={}},identity:c,signer:l}=o,u=await e({...n,request:await l.sign(n.request,c,a)}).catch((l.errorHandler||uRt)(a));return(l.successHandler||dRt)(u.response,a),u},"httpSigningMiddleware")});var ZQ,ga,YTe=g(()=>{P5();ZQ={step:"finalizeRequest",tags:["HTTP_SIGNING"],name:"httpSigningMiddleware",aliases:["apiKeyMiddleware","tokenMiddleware","awsAuthMiddleware"],override:!0,relation:"after",toMiddleware:"retryMiddleware"},ga=i(t=>({applyToStack:i(e=>{e.addRelativeTo(RS(t),ZQ)},"applyToStack")}),"getHttpSigningPlugin")});var JTe=g(()=>{P5();YTe()});var Ni,jTe=g(()=>{Ni=i(t=>{if(typeof t=="function")return t;let e=Promise.resolve(t);return()=>e},"normalizeProvider")});function KTe(t,e,r,n,s){return i(async function*(a,c,...l){let u=c,d=a.startingToken??u[r],p=!0,f;for(;p;){if(u[r]=d,s&&(u[s]=u[s]??a.pageSize),a.client instanceof t)f=await pRt(e,a.client,c,a.withCommand,...l);else throw new Error(`Invalid client, expected instance of ${t.name}`);yield f;let m=d;d=fRt(f,n),p=!!(d&&(!a.stopOnSameToken||d!==m))}return void 0},"paginateOperation")}var pRt,fRt,XTe=g(()=>{pRt=i(async(t,e,r,n=o=>o,...s)=>{let o=new t(r);return o=n(o)??o,await e.send(o,...s)},"makePagedClientRequest");i(KTe,"createPaginator");fRt=i((t,e)=>{let r=t,n=e.split(".");for(let s of n){if(!r||typeof r!="object")return;r=r[s]}return r},"get")});function ZTe(t,e,r){t.__smithy_context?t.__smithy_context.features||(t.__smithy_context.features={}):t.__smithy_context={features:{}},t.__smithy_context.features[e]=r}var ePe=g(()=>{i(ZTe,"setFeature")});var Mo,tPe=g(()=>{we();Mo=class{static{i(this,"DefaultIdentityProviderConfig")}authSchemes=new Map;constructor(e){for(let r in e){if(!X(e,r))continue;let n=e[r];n!==void 0&&this.authSchemes.set(r,n)}}getIdentityProvider(e){return this.authSchemes.get(e)}}});var v5,Ty,rPe=g(()=>{Se();v5=R(ia()),Ty=class{static{i(this,"HttpApiKeyAuthSigner")}async sign(e,r,n){if(!n)throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing");if(!n.name)throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing");if(!n.in)throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing");if(!r.apiKey)throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined");let s=Ve.clone(e);if(n.in===v5.HttpApiKeyAuthLocation.QUERY)s.query[n.name]=r.apiKey;else if(n.in===v5.HttpApiKeyAuthLocation.HEADER)s.headers[n.name]=n.scheme?`${n.scheme} ${r.apiKey}`:r.apiKey;else throw new Error("request can only be signed with `apiKey` locations `query` or `header`, but found: `"+n.in+"`");return s}}});var Py,nPe=g(()=>{Se();Py=class{static{i(this,"HttpBearerAuthSigner")}async sign(e,r,n){let s=Ve.clone(e);if(!r.token)throw new Error("request could not be signed with `token` since the `token` is not defined");return s.headers.Authorization=`Bearer ${r.token}`,s}}});var Wn,sPe=g(()=>{Wn=class{static{i(this,"NoAuthSigner")}async sign(e,r,n){return e}}});var oPe=g(()=>{rPe();nPe();sPe()});var eD,tD,NS,vy,TS,iPe=g(()=>{eD=i(t=>i(function(r){return vy(r)&&r.expiration.getTime()-Date.now()<t},"isIdentityExpired"),"createIsIdentityExpiredFunction"),tD=3e5,NS=eD(tD),vy=i(t=>t.expiration!==void 0,"doesIdentityRequireRefresh"),TS=i((t,e,r)=>{if(t===void 0)return;let n=typeof t!="function"?async()=>Promise.resolve(t):t,s,o,a,c=!1,l=i(async u=>{o||(o=n(u));try{s=await o,a=!0,c=!1}finally{o=void 0}return s},"coalesceProvider");return e===void 0?async u=>((!a||u?.forceRefresh)&&(s=await l(u)),s):async u=>((!a||u?.forceRefresh)&&(s=await l(u)),c?s:r(s)?(e(s)&&await l(u),s):(c=!0,s))},"memoizeIdentityProvider")});var aPe=g(()=>{tPe();oPe();iPe()});var _
Line truncated
|
||||||
|
${this.getCanonicalPath(e)}
|
||||||
|
${Eve(e)}
|
||||||
|
${s.map(o=>`${o}:${r[o]}`).join(`
|
||||||
|
`)}
|
||||||
|
|
||||||
|
${s.join(";")}
|
||||||
|
${n}`}async createStringToSign(e,r,n,s){let o=new this.sha256;o.update(MS(n));let a=await o.digest();return`${s}
|
||||||
|
${e}
|
||||||
|
${r}
|
||||||
|
${bm(a)}`}getCanonicalPath({path:e}){if(this.uriEscapePath){let r=[];for(let o of e.split("/"))o?.length!==0&&o!=="."&&(o===".."?r.pop():r.push(o));let n=`${e?.startsWith("/")?"/":""}${r.join("/")}${r.length>0&&e?.endsWith("/")?"/":""}`;return AD(n).replace(/%2F/g,"/")}return e}validateResolvedCredentials(e){if(typeof e!="object"||typeof e.accessKeyId!="string"||typeof e.secretAccessKey!="string")throw new Error("Resolved credential object is not valid")}formatDate(e){let r=bRt(e).replace(/[-:]/g,"");return{longDate:r,shortDate:r.slice(0,8)}}getCanonicalHeaderList(e){return Object.keys(e).sort().join(";")}},Qy={},gD=[],yD=i((t,e,r)=>`${t}/${e}/${r}/${d6}`,"createScope"),Cve=i(async(t,e,r,n,s)=>{let o=await rve(t,e.secretAccessKey,e.accessKeyId),a=`${r}:${n}:${s}:${bm(o)}:${e.sessionToken}`;if(a in Qy)return Qy[a];for(gD.push(a);gD.length>gve;)delete Qy[gD.shift()];let c=`AWS4${e.secretAccessKey}`;for(let l of[r,n,s,d6])c=await rve(t,c,l);return Qy[a]=c},"getSigningKey"),RRt=i(()=>{gD.length=0,Object.keys(Qy).forEach(t=>{delete Qy[t]})},"clearCredentialCache"),rve=i((t,e,r)=>{let n=new t(e);return n.update(MS(r)),n.digest()},"hmac"),n6=i(({headers:t},e,r)=>{let n={};for(let s of Object.keys(t).sort()){if(t[s]==null)continue;let o=s.toLowerCase();(o in pve||e?.has(o)||fve.test(o)||mve.test(o))&&(!r||r&&!r.has(o))||(n[o]=t[s].replace(/[\r\n]/g," ").replace(/[ \t]+/g," ").replace(/^ | $/g,""))}return n},"getCanonicalHeaders"),ED=i(async({headers:t,body:e},r)=>{for(let n in t)if(Dy(t,n)&&n.toLowerCase()===CD)return t[n];if(e==null)return"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";if(typeof e=="string"||ArrayBuffer.isView(e)||ERt(e)){let n=new r;return n.update(MS(e)),bm(await n.digest())}return hve},"getPayloadHash"),Ive=i((t,e)=>{t=t.toLowerCase();for(let r in e)if(Dy(e,r)&&t===r.toLowerCase())return!0;return!1},"hasHeader"),wve=i((t,e={})=>{let{headers:r,query:n={}}=nve.clone(t);for(let s in r){if(!Dy(r,s))continue;let o=s.toLowerCase();(o.slice(0,6)==="x-amz-"&&!e.unhoistableHeaders?.has(o)||e.hoistableHeaders?.has(o))&&(n[s]=r[s],delete r[s])}return{...t,headers:r,query:n}},"moveHeadersToQuery"),s6=i(t=>{t=nve.clone(t);for(let e in t.headers)Dy(t.headers,e)&&lve.indexOf(e.toLowerCase())>-1&&delete t.headers[e];return t},"prepareRequest"),o6=class extends ID{static{i(this,"SignatureV4")}headerFormatter=new t6;constructor({applyChecksum:e,credentials:r,region:n,service:s,sha256:o,uriEscapePath:a=!0}){super({applyChecksum:e,credentials:r,region:n,service:s,sha256:o,uriEscapePath:a})}async presign(e,r={}){let{signingDate:n=new Date,expiresIn:s=3600,unsignableHeaders:o,unhoistableHeaders:a,signableHeaders:c,hoistableHeaders:l,signingRegion:u,signingService:d}=r,p=await this.credentialProvider();this.validateResolvedCredentials(p);let f=u??await this.regionProvider(),{longDate:m,shortDate:A}=this.formatDate(n);if(s>yve)return Promise.reject("Signature version 4 presigned URLs must have an expiration date less than one week in the future");let h=yD(A,f,d??this.service),E=wve(s6(e),{unhoistableHeaders:a,hoistableHeaders:l});p.sessionToken&&(E.query[c6]=p.sessionToken),E.query[sve]=hD,E.query[ove]=`${p.accessKeyId}/${h}`,E.query[i6]=m,E.query[ave]=s.toString(10);let y=n6(E,o,c);return E.query[ive]=this.getCanonicalHeaderList(y),E.query[a6]=await this.getSignature(m,h,this.getSigningKey(p,f,A,d),this.createCanonicalRequest(E,y,await ED(e,this.sha256))),E}async sign(e,r){return typeof e=="string"?this.signString(e,r):e.headers&&e.payload?this.signEvent(e,r):e.message?this.signMessage(e,r):this.signRequest(e,r)}async signEvent({headers:e,payload:r},{signingDate:n=new Date,priorSignature:s,signingRegion:o,signingService:a,eventStreamCredentials:c}){let l=o??await this.regionProvider(),{shortDate:u,longDate:d}=this.formatDate(n),p=yD(u,l,a??this.service),f=await ED({headers:{},body:r},this.sha256),m=new this.sha256;m.update(e);let A=bm(await m.digest()),h=[Ave,d,p,s,A,f].join(`
|
||||||
|
`);return this.signString(h,{signingDate:n,signingRegion:l,signingService:a,eventStreamCredentials:c})}async signMessage(e,{signingDate:r=new Date,signingRegion:n,signingService:s,eventStreamCredentials:o}){return this.signEvent({headers:this.headerFormatter.format(e.message.headers),payload:e.message.body},{signingDate:r,signingRegion:n,signingService:s,priorSignature:e.priorSignature,eventStreamCredentials:o}).then(c=>({message:e.message,signature:c}))}async signString(e,{signingDate:r=new Date,signingRegion:n,signingService:s,eventStreamCredentials:o}={}){let a=o??await this.credentialProvider();this.validateResolvedCredentials(a);let c=n??await this.regionProvider(),{shortDate:l}=this.formatDate(r),u=new this.sha256(await this.getSigningKey(a,c,l,s));return u.update(MS(e)),bm(await u.digest())}async signRequest(e,{signingDate:r=new Date,signableHeaders:n,unsignableHeaders:s,signingRegion:o,signingService:a}={}){let c=await this.credentialProvider();this.validateResolvedCredentials(c);let l=o??await this.regionProvider(),u=s6(e),{longDate:d,shortDate:p}=this.formatDate(r),f=yD(p,l,a??this.service);u.headers[u6]=d,c.sessionToken&&(u.headers[dve]=c.sessionToken);let m=await ED(u,this.sha256);!Ive(CD,u.headers)&&this.applyChecksum&&(u.headers[CD]=m);let A=n6(u,s,n),h=await this.getSignature(d,f,this.getSigningKey(c,l,p,a),this.createCanonicalRequest(u,A,m));return u.headers[l6]=`${hD} Credential=${c.accessKeyId}/${f}, SignedHeaders=${this.getCanonicalHeaderList(A)}, Signature=${h}`,u}async getSignature(e,r,n,s){let o=await this.createStringToSign(e,r,s,hD),a=new this.sha256(await n);return a.update(MS(o)),bm(await a.digest())}getSigningKey(e,r,n,s){return Cve(this.sha256,e,n,r,s||this.service)}},NRt={SignatureV4a:null};$e.ALGORITHM_IDENTIFIER=hD;$e.ALGORITHM_IDENTIFIER_V4A=xRt;$e.ALGORITHM_QUERY_PARAM=sve;$e.ALWAYS_UNSIGNABLE_HEADERS=pve;$e.AMZ_DATE_HEADER=u6;$e.AMZ_DATE_QUERY_PARAM=i6;$e.AUTH_HEADER=l6;$e.CREDENTIAL_QUERY_PARAM=ove;$e.DATE_HEADER=cve;$e.EVENT_ALGORITHM_IDENTIFIER=Ave;$e.EXPIRES_QUERY_PARAM=ave;$e.GENERATED_HEADERS=lve;$e.HOST_HEADER=wRt;$e.KEY_TYPE_IDENTIFIER=d6;$e.MAX_CACHE_SIZE=gve;$e.MAX_PRESIGNED_TTL=yve;$e.PROXY_HEADER_PATTERN=fve;$e.REGION_SET_PARAM=IRt;$e.SEC_HEADER_PATTERN=mve;$e.SHA256_HEADER=CD;$e.SIGNATURE_HEADER=uve;$e.SIGNATURE_QUERY_PARAM=a6;$e.SIGNED_HEADERS_QUERY_PARAM=ive;$e.SignatureV4=o6;$e.SignatureV4Base=ID;$e.TOKEN_HEADER=dve;$e.TOKEN_QUERY_PARAM=c6;$e.UNSIGNABLE_PATTERNS=SRt;$e.UNSIGNED_PAYLOAD=hve;$e.clearCredentialCache=RRt;$e.createScope=yD;$e.getCanonicalHeaders=n6;$e.getCanonicalQuery=Eve;$e.getPayloadHash=ED;$e.getSigningKey=Cve;$e.hasHeader=Ive;$e.moveHeadersToQuery=wve;$e.prepareRequest=s6;$e.signatureV4aContainer=NRt});function TRt(t,{credentials:e,credentialDefaultProvider:r}){let n;return e?e?.memoized?n=e:n=TS(e,NS,vy):r?n=Ni(r(Object.assign({},t,{parentClientConfig:t}))):n=i(async()=>{throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured.")},"credentialsProvider"),n.memoized=!0,n}function PRt(t,e){if(e.configBound)return e;let r=i(async n=>e({...n,callerClientConfig:t}),"fn");return r.memoized=e.memoized,r.configBound=!0,r}var f6,m6,Sve=g(()=>{yt();Es();f6=R(p6()),m6=i(t=>e=>{let r=e.credentials,n=!!e.credentials,s;Object.defineProperty(e,"credentials",{set(d){d&&d!==r&&d!==s&&(n=!0),r=d;let p=TRt(e,{credentials:r,credentialDefaultProvider:e.credentialDefaultProvider}),f=PRt(e,p);if(n&&!f.attributed){let m=typeof r=="object"&&r!==null;s=i(async A=>{let E=await f(A);return m&&(!E.$source||Object.keys(E.$source).length===0)?Bd(E,"CREDENTIALS_CODE","e"):E},"resolvedCredentials"),s.memoized=f.memoized,s.configBound=f.configBound,s.attributed=!0}else s=f},get(){return s},enumerable:!0,configurable:!0}),e.credentials=r;let{signingEscapePath:o=!0,systemClockOffset:a=e.systemClockOffset||0,sha256:c}=e,l;return e.signer?l=Ni(e.signer):e.regionInfoProvider?l=i(()=>Ni(e.region)().then(async d=>[await e.regionInfoProvider(d,{useFipsEndpoint:await e.useFipsEndpoint(),useDualstackEndpoint:await e.useDualstackEndpoint()})||{},d]).then(([d,p])=>{let{signingRegion:f,signingService:m}=d;e.signingRegion=e.signingRegion||f||p,e.signingName=e.signingName||m||e.serviceId;let A={...e,credentials:e.credentials,region:e.signingRegion,service:e.signingName,sha256:c,uriEscapePath:o},h=e.signerConstructor||f6.SignatureV4;return new h(A)}),"signer"):l=i(async d=>{d=Object.assign({},{name:"sigv4",signingName:e.signingName||e.defaultSigningName,signingRegion:await Ni(e.region)(),properties:{}},d);let p=d.signingRegion,f=d.signingName;e.signingRegion=e.signingRegion||p,e.signingName=e.signingName||f||e.serviceId;let m={...e,credentials:e.credentials,region:e.signingRegion,service:e.signingName,sha256:c,uriEscapePath:o},A=e.signerConstructor||f6.SignatureV4;return new A(m)},"signer"),Object.assign(e,{systemClockOffset:a,signingEscapePath:o,signer:l,disableClockSkewCorrection:Ni(e.disableClockSkewCorrection?
Line truncated
|
||||||
|
For more information, please visit: `+tNt);let s=t.originalExpiration??t.expiration;return{...t,...s?{originalExpiration:s}:{},expiration:n}},"getExtendedInstanceMetadataCredentials"),rNt=i((t,e={})=>{let r=e?.logger||console,n;return async()=>{let s;try{s=await t(),s.expiration&&s.expiration.getTime()<Date.now()&&(s=Dve(s,r))}catch(o){if(n)r.warn("Credential renew failed: ",o),s=Dve(n,r);else throw o}return n=s,s}},"staticStabilityProvider"),Gve="/latest/meta-data/iam/security-credentials/",nNt="/latest/api/token",y6="AWS_EC2_METADATA_V1_DISABLED",kve="ec2_metadata_v1_disabled",Lve="x-aws-ec2-metadata-token",sNt=i((t={})=>rNt(oNt(t),{logger:t.logger}),"fromInstanceMetadata"),oNt=i((t={})=>{let e=!1,{logger:r,profile:n}=t,{timeout:s,maxRetries:o}=S6(t),a=i(async(c,l)=>{if(e||l.headers?.[Lve]==null){let p=!1,f=!1,m=await w6({environmentVariableSelector:i(A=>{let h=A[y6];if(f=!!h&&h!=="false",h===void 0)throw new sp(`${y6} not set in env, checking config file next.`,{logger:t.logger});return f},"environmentVariableSelector"),configFileSelector:i(A=>{let h=A[kve];return p=!!h&&h!=="false",p},"configFileSelector"),default:!1},{profile:n})();if(t.ec2MetadataV1Disabled||m){let A=[];throw t.ec2MetadataV1Disabled&&A.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"),p&&A.push(`config file profile (${kve})`),f&&A.push(`process environment variable (${y6})`),new I6(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${A.join(", ")}].`)}}let d=(await E6(async()=>{let p;try{p=await aNt(l)}catch(f){throw f.statusCode===401&&(e=!1),f}return p},c)).trim();return E6(async()=>{let p;try{p=await cNt(d,l,t)}catch(f){throw f.statusCode===401&&(e=!1),f}return p},c)},"getCredentials");return async()=>{let c=await qve();if(e)return r?.debug("AWS SDK Instance Metadata","using v1 fallback (no token fetch)"),a(o,{...c,timeout:s});{let l;try{l=(await iNt({...c,timeout:s})).toString()}catch(u){if(u?.statusCode===400)throw Object.assign(u,{message:"EC2 Metadata token request returned error"});return(u.message==="TimeoutError"||[403,404,405].includes(u.statusCode))&&(e=!0),r?.debug("AWS SDK Instance Metadata","using v1 fallback (initial)"),a(o,{...c,timeout:s})}return a(o,{...c,headers:{[Lve]:l},timeout:s})}}},"getInstanceMetadataProvider"),iNt=i(async t=>qS({...t,path:nNt,method:"PUT",headers:{"x-aws-ec2-metadata-token-ttl-seconds":"21600"}}),"getMetadataToken"),aNt=i(async t=>(await qS({...t,path:Gve})).toString(),"getProfile"),cNt=i(async(t,e,r)=>{let n=JSON.parse((await qS({...e,path:Gve+t})).toString());if(!Ove(n))throw new sp("Invalid response received from instance metadata service.",{logger:r.logger});return Mve(n)},"getCredentialsFromProfile");Ti.DEFAULT_MAX_RETRIES=Uve;Ti.DEFAULT_TIMEOUT=Fve;Ti.ENV_CMDS_AUTH_TOKEN=C6;Ti.ENV_CMDS_FULL_URI=FS;Ti.ENV_CMDS_RELATIVE_URI=SD;Ti.Endpoint=US;Ti.fromContainerMetadata=FRt;Ti.fromInstanceMetadata=sNt;Ti.getInstanceMetadataEndpoint=qve;Ti.httpRequest=qS;Ti.providerConfigFromInit=S6});var gu=w($S=>{var{hasOwn:Yve}=(Ie(),Z(ym)),{streamCollector:lNt}=(Ie(),Z(ym));$S.streamCollector=lNt;var{buildQueryString:Jve,HttpResponse:jve}=(Se(),Z(Kd)),bD=require("node:https"),{Readable:uNt}=require("node:stream"),x6=require("node:http2");function RD(t){let e=t&&typeof t=="object"&&"reason"in t?t.reason:void 0;if(e){if(e instanceof Error){let s=new Error("Request aborted");return s.name="AbortError",s.cause=e,s}let n=new Error(String(e));return n.name="AbortError",n}let r=new Error("Request aborted");return r.name="AbortError",r}i(RD,"buildAbortError");var dNt=["ECONNRESET","EPIPE","ETIMEDOUT"],Kve=i(t=>{let e={};for(let r in t){if(!Yve(t,r))continue;let n=t[r];e[r]=Array.isArray(n)?n.join(","):n}return e},"getTransformedHeaders"),Tn={setTimeout:i((t,e)=>setTimeout(t,e),"setTimeout"),clearTimeout:i(t=>clearTimeout(t),"clearTimeout")},$ve=1e3,pNt=i((t,e,r=0)=>{if(!r)return-1;let n=i(s=>{let o=Tn.setTimeout(()=>{t.destroy(),e(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${r} ms.`),{name:"TimeoutError"}))},r-s),a=i(c=>{c?.connecting?c.on("connect",()=>{Tn.clearTimeout(o)}):Tn.clearTimeout(o)},"doWithSocket");t.socket?a(t.socket):t.on("socket",a)},"registerTimeout");return r<2e3?(n(0),0):Tn.setTimeout(n.bind(null,$ve),$ve)},"setConnectionTimeout"),fNt=i((t,e,r=0,n,s)=>r?Tn.setTimeout(()=>{let o=`@smithy/node-http-handler - [${n?"ERROR":"WARN"}] a request has exceeded the configured ${r} ms requestTimeout.`;if(n){let a=Object.assign(new Error(o),{name:"TimeoutError",code:"ETIMEDOUT"});t.destroy(a),e(a)}else o+=" Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.",s?.warn?.(o)},r):-1,"setRequestTimeout"),mNt=3e3,ANt=i((t,{keepAlive:e,keepAliveMsecs:r},n=mNt)=>{if(e!==!0)return-1;let s=i(()=>{t.socket?t.socket.setKeepAlive(e,r||0):t.on("socket",o=>{o.setKeepAlive(e,r||0)})},"registerListener");return
Line truncated
|
||||||
|
See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html
|
||||||
|
or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`),Date.now()}return r}constructor(e){this.configProvider=new Promise((r,n)=>{typeof e=="function"?e().then(s=>{r(this.resolveDefaultConfig(s))}).catch(n):r(this.resolveDefaultConfig(e))})}destroy(){this.config?.httpAgent?.destroy(),this.config?.httpsAgent?.destroy()}async handle(e,{abortSignal:r,requestTimeout:n}={}){this.config||(this.config=await this.configProvider);let s=this.config,o=s.logger,a=e.protocol==="https:";return!a&&!this.config.httpAgent&&(this.config.httpAgent=await this.config.httpAgentProvider()),new Promise((c,l)=>{let u,d=-1,p=-1,f=-1,m=-1,A=-1,h=i(()=>{Tn.clearTimeout(d),Tn.clearTimeout(p),Tn.clearTimeout(f),Tn.clearTimeout(m),Tn.clearTimeout(A)},"clearTimeouts"),E=i(async D=>{await u,h(),c(D)},"resolve"),y=i(async D=>{await u,h(),l(D)},"reject");if(r?.aborted){let D=RD(r);y(D);return}let I=e.headers,x=I?(I.Expect??I.expect)==="100-continue":!1,b=a?s.httpsAgent:s.httpAgent;x&&!this.externalAgent&&(b=new(a?bD.Agent:BD)({keepAlive:!1,maxSockets:1/0})),d=Tn.setTimeout(()=>{this.socketWarningTimestamp=t.checkSocketUsage(b,this.socketWarningTimestamp,o)},s.socketAcquisitionWarningTimeout??(s.requestTimeout??2e3)+(s.connectionTimeout??1e3));let N=e.query?Jve(e.query):"",v;if(e.username!=null||e.password!=null){let D=e.username??"",et=e.password??"";v=`${D}:${et}`}let _=e.path;N&&(_+=`?${N}`),e.fragment&&(_+=`#${e.fragment}`);let J=e.hostname??"";J[0]==="["&&J.endsWith("]")?J=e.hostname.slice(1,-1):J=e.hostname;let ve={headers:e.headers,host:J,method:e.method,path:_,port:e.port,agent:b,auth:v},Fe=(a?bD.request:Vve)(ve,D=>{let et=new jve({statusCode:D.statusCode||-1,reason:D.statusMessage,headers:Kve(D.headers),body:D});E({response:et})});if(Fe.on("error",D=>{dNt.includes(D.code)?y(Object.assign(D,{name:"TimeoutError"})):y(D)}),r){let D=i(()=>{Fe.destroy();let et=RD(r);y(et)},"onAbort");if(typeof r.addEventListener=="function"){let et=r;et.addEventListener("abort",D,{once:!0}),Fe.once("close",()=>et.removeEventListener("abort",D))}else r.onabort=D}let fe=n??s.requestTimeout;p=pNt(Fe,y,s.connectionTimeout),f=fNt(Fe,y,fe,s.throwOnRequestTimeout,o??console),m=hNt(Fe,y,s.socketTimeout);let He=ve.agent;typeof He=="object"&&"keepAlive"in He&&(A=ANt(Fe,{keepAlive:He.keepAlive,keepAliveMsecs:He.keepAliveMsecs})),u=Xve(Fe,e,fe,this.externalAgent).catch(D=>(h(),l(D)))})}updateHttpClientConfig(e,r){this.config=void 0,this.configProvider=this.configProvider.then(n=>e===Symbol.for("logger")?{...n,logger:n.logger??r}:{...n,[e]:r})}httpHandlerConfigs(){return this.config??{}}resolveDefaultConfig(e){let{requestTimeout:r,connectionTimeout:n,socketTimeout:s,socketAcquisitionWarningTimeout:o,httpAgent:a,httpsAgent:c,throwOnRequestTimeout:l,logger:u}=e||{},d=!0,p=50;return{connectionTimeout:n,requestTimeout:r,socketTimeout:s,socketAcquisitionWarningTimeout:o,throwOnRequestTimeout:l,httpAgentProvider:i(async()=>{let f=require("node:http"),{Agent:m,request:A}=f.default??f;return Vve=A,BD=m,a instanceof BD||typeof a?.destroy=="function"?(this.externalAgent=!0,a):new BD({keepAlive:d,maxSockets:p,...a})},"httpAgentProvider"),httpsAgent:c instanceof bD.Agent||typeof c?.destroy=="function"?(this.externalAgent=!0,c):new bD.Agent({keepAlive:d,maxSockets:p,...c}),logger:u}}},ENt=new Uint16Array(1),GS=class{static{i(this,"ClientHttp2SessionRef")}id=ENt[0]++;total=0;max=0;session;refs=0;constructor(e){e.unref(),this.session=e}retain(){if(this.session.destroyed)throw new Error("@smithy/node-http-handler - cannot acquire reference to destroyed session.");this.refs+=1,this.total+=1,this.max=Math.max(this.refs,this.max),this.session.ref()}free(){if(!this.session.destroyed&&(this.refs-=1,this.refs===0&&this.session.unref(),this.refs<0))throw new Error("@smithy/node-http-handler - ClientHttp2Session refcount at zero, cannot decrement.")}deref(){return this.session}close(){this.session.closed||this.session.close()}destroy(){this.refs=0,this.session.destroyed||(this.session.setTimeout(0),this.session.destroy())}useCount(){return this.refs}},B6=class{static{i(this,"NodeHttp2ConnectionPool")}sessions=[];maxConcurrency=0;constructor(e){this.sessions=(e??[]).map(r=>new GS(r))}poll(){let e=!1;for(let r of this.sessions){if(r.deref().destroyed){e=!0;continue}if(!this.maxConcurrency||r.useCount()<this.maxConcurrency)return r}if(e)for(let r of this.sessions)r.deref().destroyed&&this.remove(r)}offerLast(e){this.sessions.push(e)}remove(e){let r=this.sessions.indexOf(e);r>-1&&this.sessions.splice(r,1)}[Symbol.iterator](){return this.sessions[Symbol.iterator]()}setMaxConcurrency(e){this.maxConcurrency=e}destroy(e){this.remove(e),e.destroy()}},R6=class{static{i(this,"NodeHttp2ConnectionManager")}config;connectOptions;connectionPools=new Map;constructor(e){if(this.config=e,this.config.maxConcurrency&&this.config.maxConcurrency<=0)throw new RangeError("maxConcurrency must be greater than zero.")}lease(e,r){let n=this.getUrlString(e),s=this.getPool(n);if(!this.conf
Line truncated
|
||||||
|
- loopback CIDR 127.0.0.0/8 or [::1/128]
|
||||||
|
- ECS container host 169.254.170.2
|
||||||
|
- EKS container host 169.254.170.23 or [fd00:ec2::23]`,{logger:e})}},"checkUrl");function PNt(t){return new SNt({protocol:t.protocol,hostname:t.hostname,port:Number(t.port),path:t.pathname,query:Array.from(t.searchParams.entries()).reduce((e,[r,n])=>(e[r]=n,e),{}),fragment:t.hash})}i(PNt,"createGetRequest");async function vNt(t,e){let n=await xNt(t.body).transformToString();if(t.statusCode===200){let s=JSON.parse(n);if(typeof s.AccessKeyId!="string"||typeof s.SecretAccessKey!="string"||typeof s.Token!="string"||typeof s.Expiration!="string")throw new Bm("HTTP credential provider response not of the required format, an object matching: { AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }",{logger:e});return{accessKeyId:s.AccessKeyId,secretAccessKey:s.SecretAccessKey,sessionToken:s.Token,expiration:bNt(s.Expiration)}}if(t.statusCode>=400&&t.statusCode<500){let s={};try{s=JSON.parse(n)}catch{}throw Object.assign(new Bm(`Server responded with status: ${t.statusCode}`,{logger:e}),{Code:s.Code,Message:s.Message})}throw new Bm(`Server responded with status: ${t.statusCode}`,{logger:e})}i(vNt,"getCredentials");var _Nt=i((t,e,r)=>async()=>{for(let n=0;n<e;++n)try{return await t()}catch{await new Promise(o=>setTimeout(o,r))}return await t()},"retryWrapper"),QNt="AWS_CONTAINER_CREDENTIALS_RELATIVE_URI",DNt="http://169.254.170.2",kNt="AWS_CONTAINER_CREDENTIALS_FULL_URI",LNt="AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE",ONt="AWS_CONTAINER_AUTHORIZATION_TOKEN",MNt=i((t={})=>{t.logger?.debug("@aws-sdk/credential-provider-http - fromHttp");let e,r=t.awsContainerCredentialsRelativeUri??process.env[QNt],n=t.awsContainerCredentialsFullUri??process.env[kNt],s=t.awsContainerAuthorizationToken??process.env[ONt],o=t.awsContainerAuthorizationTokenFile??process.env[LNt],a=t.logger?.constructor?.name==="NoOpLogger"||!t.logger?.warn?console.warn:t.logger.warn.bind(t.logger);if(r&&n&&(a("@aws-sdk/credential-provider-http: you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."),a("awsContainerCredentialsRelativeUri will take precedence.")),s&&o&&(a("@aws-sdk/credential-provider-http: you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."),a("awsContainerAuthorizationTokenFile will take precedence.")),r)e=`${DNt}${r}`;else if(n)e=n;else throw new Bm(`No HTTP credential provider host provided.
|
||||||
|
Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`,{logger:t.logger});let c=new URL(e);TNt(c,t.logger);let l=INt.create({connectionTimeout:t.timeout??1e3}),u=t.timeout??1e3,d=_Nt(async()=>{let p=PNt(c);o?p.headers.Authorization=Zve((await wNt.readFile(o)).toString()):s&&(p.headers.Authorization=Zve(s));try{let f=await l.handle(p,{requestTimeout:u});return vNt(f.response).then(m=>CNt(m,"CREDENTIALS_HTTP","z"))}catch(f){throw new Bm(String(f),{logger:t.logger})}},t.maxRetries??3,t.timeout??1e3);return async()=>{try{return await d()}finally{l.destroy?.()}}},"fromHttp"),Zve=i(t=>{if(t.includes(`\r
|
||||||
|
`))throw new Bm("Authorization token contains invalid \\r\\n sequence.");return t},"validateToken");e_e.fromHttp=MNt});function FNt(t){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"sso-oauth",region:t.region},propertiesExtractor:i((e,r)=>({signingProperties:{config:e,context:r}}),"propertiesExtractor")}}function UNt(t){return{schemeId:"smithy.api#noAuth"}}var t_e,r_e,n_e,P6=g(()=>{Yn();Ce();t_e=i(async(t,e,r)=>({operation:xt(e).operation,region:await bt(t.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),"defaultSSOOIDCHttpAuthSchemeParametersProvider");i(FNt,"createAwsAuthSigv4HttpAuthOption");i(UNt,"createSmithyApiNoAuthHttpAuthOption");r_e=i(t=>{let e=[];return t.operation==="CreateToken"?e.push(UNt(t)):e.push(FNt(t)),e},"defaultSSOOIDCHttpAuthSchemeProvider"),n_e=i(t=>{let e=pl(t);return Object.assign(e,{authSchemePreference:bt(t.authSchemePreference??[])})},"resolveHttpAuthSchemeConfig")});var s_e,o_e,v6=g(()=>{s_e=i(t=>Object.assign(t,{useDualstackEndpoint:t.useDualstackEndpoint??!1,useFipsEndpoint:t.useFipsEndpoint??!1,defaultSigningName:"sso-oauth"}),"resolveClientEndpointParameters"),o_e={UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}}});var op,HS=g(()=>{op={name:"@aws-sdk/nested-clients",version:"3.997.49",description:"Nested clients for AWS SDK packages.",homepage:"https://github.com/aws/aws-sdk-js-v3/tree/main/packages/nested-clients",license:"Apache-2.0",author:{name:"AWS SDK for JavaScript Team",url:"https://aws.amazon.com/sdk-for-javascript/"},repository:{type:"git",url:"https://github.com/aws/aws-sdk-js-v3.git",directory:"packages/nested-clients"},files:["./cognito-identity.d.ts","./cognito-identity.js","./signin.d.ts","./signin.js","./sso-oidc.d.ts","./sso-oidc.js","./sso.d.ts","./sso.js","./sts.d.ts","./sts.js","dist-*/**"],sideEffects:!1,main:"./dist-cjs/index.js",module:"./dist-es/index.js",browser:{"./dist-es/submodules/cognito-identity/runtimeConfig":"./dist-es/submodules/cognito-identity/runtimeConfig.browser","./dist-es/submodules/signin/runtimeConfig":"./dist-es/submodules/signin/runtimeConfig.browser","./dist-es/submodules/sso-oidc/runtimeConfig":"./dist-es/submodules/sso-oidc/runtimeConfig.browser","./dist-es/submodules/sso/runtimeConfig":"./dist-es/submodules/sso/runtimeConfig.browser","./dist-es/submodules/sts/runtimeConfig":"./dist-es/submodules/sts/runtimeConfig.browser"},types:"./dist-types/index.d.ts",typesVersions:{"<4.5":{"dist-types/*":["dist-types/ts3.4/*"],"*":["dist-types/ts3.4/submodules/*/index.d.ts"]}},"react-native":{},exports:{"./package.json":"./package.json","./sso-oidc":{types:"./dist-types/submodules/sso-oidc/index.d.ts",module:"./dist-es/submodules/sso-oidc/index.js",node:"./dist-cjs/submodules/sso-oidc/index.js",import:"./dist-es/submodules/sso-oidc/index.js",require:"./dist-cjs/submodules/sso-oidc/index.js"},"./sts":{types:"./dist-types/submodules/sts/index.d.ts",module:"./dist-es/submodules/sts/index.js",node:"./dist-cjs/submodules/sts/index.js",import:"./dist-es/submodules/sts/index.js",require:"./dist-cjs/submodules/sts/index.js"},"./signin":{types:"./dist-types/submodules/signin/index.d.ts",module:"./dist-es/submodules/signin/index.js",node:"./dist-cjs/submodules/signin/index.js",import:"./dist-es/submodules/signin/index.js",require:"./dist-cjs/submodules/signin/index.js"},"./cognito-identity":{types:"./dist-types/submodules/cognito-identity/index.d.ts",module:"./dist-es/submodules/cognito-identity/index.js",node:"./dist-cjs/submodules/cognito-identity/index.js",import:"./dist-es/submodules/cognito-identity/index.js",require:"./dist-cjs/submodules/cognito-identity/index.js"},"./sso":{types:"./dist-types/submodules/sso/index.d.ts",module:"./dist-es/submodules/sso/index.js",node:"./dist-cjs/submodules/sso/index.js",import:"./dist-es/submodules/sso/index.js",require:"./dist-cjs/submodules/sso/index.js"}},scripts:{build:"concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs","build:cjs":"node ../../scripts/compilation/inline","build:es":"premove dist-es && tsc -p tsconfig.es.json","build:include:deps":'yarn g:turbo run build -F="$npm_package_name"',"build:types":"premove dist-types && tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4",clean:"premove dist-cjs dist-es dist-types",lint:"node ../../scripts/validation/submodules-linter.js",prebuild:"yarn lint",test:"yarn g:vitest run","test:watch":"yarn g:vitest watch"},dependencies:{"@aws-sdk/core":"^3.978.4","@aws-sdk/signature-v4-multi-region":"^3.996.48","@aws-sdk/types":"^3.974.6","@smithy/core":"^3.36.0","@smithy/fetch-http-handler":"^5.8.0","@smithy/node-http-handler":"^4.12.1","@smithy/types":"^4.19.0",tslib:"^2.6.2"},devDependencies:{concurrently:"7.0.0","downlevel-dts":"0.10.1",premove:"4.0.0",typescript:"~7.0.2"},engines:{nod
Line truncated
|
||||||
|
`),this.z=this.x.length}parse(){let e=this,{z:r}=e;for(;e.i<r&&(e.trim(),!(e.i>=r));)if(e.isNext("<?"))e.readTo("?>"),e.trim();else if(e.isNext("<!--"))e.readTo("-->"),e.trim();else if(e.isNext("<!DOCTYPE",!1))e.skipDoctype(),e.trim();else if(e.x[e.i]==="<"){let n=e.parseTag();return{[n.tag]:n.value}}else throw new Error("@aws-sdk XML parse error: unexpected content.");throw new Error("@aws-sdk XML parse error: no root element.")}isNext(e,r=!0){let n=this;return r?n.x.startsWith(e,n.i):n.x.toLowerCase().startsWith(e.toLowerCase(),n.i)}readTo(e){let r=this,n=r.x.indexOf(e,r.i);if(n===-1)throw new Error(`@aws-sdk XML parse error: expected "${e}" not found.`);let s=r.x.slice(r.i,n);return r.i=n+e.length,s}trim(){let e=this;for(;e.i<e.z&&` \r
|
||||||
|
`.includes(e.x[e.i]);)++e.i}readAttrValue(){let e=this,r=e.x[e.i];++e.i;let n="";for(;e.i<e.z&&e.x[e.i]!==r;)n+=e.x[e.i++];return++e.i,e.decodeEntities(n)}parseTag(){let e=this;++e.i;let r="";for(;e.i<e.z&&!` \r
|
||||||
|
>/`.includes(e.x[e.i]);)r+=e.x[e.i++];let n=!1,s={};for(;e.i<e.z&&(e.trim(),!">/".includes(e.x[e.i]));){let d="";for(;e.i<e.z&&!`= \r
|
||||||
|
>/?`.includes(e.x[e.i]);)d+=e.x[e.i++];if(e.trim(),e.x[e.i]!=="=")break;++e.i,e.trim(),d==="__proto__"&&j6(s),s[d]=e.readAttrValue(),n=!0}if(e.i>=e.z)throw new Error("@aws-sdk XML parse error: unexpected end of input.");if(e.x[e.i]==="/"){if(++e.i,e.i>=e.z||e.x[e.i]!==">")throw new Error("@aws-sdk XML parse error: expected > at the end of self-closing tag.");return++e.i,{tag:r,value:n?s:""}}if(e.x[e.i]!==">")throw new Error("@aws-sdk XML parse error: expected > at the end of opening tag.");++e.i;let o=[],a=[],c=!1;for(;e.i<e.z&&!e.isNext("</");)if(e.x[e.i]==="<")e.isNext("<!--")?e.readTo("-->"):e.isNext("<![CDATA[")?(e.i+=9,o.push(e.readTo("]]>"))):e.isNext("<?")?e.readTo("?>"):(c=!0,a.push(e.parseTag()));else{let d="";for(;e.i<e.z&&e.x[e.i]!=="<";)d+=e.x[e.i++];o.push(e.decodeEntities(d))}if(!e.isNext("</"))throw new Error(`@aws-sdk XML parse error: missing closing tag </${r}>.`);e.i+=2;let l=e.readTo(">").trim();if(l!==r)throw new Error(`@aws-sdk XML parse error: mismatched tags <${r}> and </${l}>.`);if(!n&&o.length===0&&!c)return{tag:r,value:""};if(!n&&!c){let d=o.length===1?o[0]:o.join("");return d.trim()===""&&d.includes(`
|
||||||
|
`)?{tag:r,value:""}:{tag:r,value:d}}let u={};for(let d of o)d.trim()===""&&d.includes(`
|
||||||
|
`)||(u["#text"]="#text"in u?u["#text"]+d:d);for(let d of a)d.tag==="__proto__"&&j6(u),d.tag in u?Array.isArray(u[d.tag])?u[d.tag].push(d.value):u[d.tag]=[u[d.tag],d.value]:u[d.tag]=d.value;for(let[d,p]of Object.entries(s))d==="__proto__"&&j6(u),u[d]=p;return{tag:r,value:u}}static ENTITIES={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};skipDoctype(){let e=this;e.i+=9;let r=0;for(;e.i<e.z;){let n=e.x[e.i];if(n==="[")++r;else if(n==="]")--r;else if(n===">"&&r===0){++e.i;return}++e.i}throw new Error("@aws-sdk XML parse error: unclosed DOCTYPE.")}decodeEntities(e){return e.replace(/&(?:#x([0-9a-fA-F]{1,6})|#(\d{1,7})|([a-zA-Z][a-zA-Z0-9]{0,30}));/g,(r,n,s,o)=>n?String.fromCharCode(parseInt(n,16)):s?String.fromCharCode(parseInt(s,10)):t.ENTITIES[o]??"")}};WD.XmlNode=K6;WD.XmlText=VD;WD.parseXML=dTt});var Al,jS=g(()=>{Al=class{static{i(this,"SerdeContextConfig")}serdeContext;setSerdeContext(e){this.serdeContext=e}}});var JD,T_e=g(()=>{JD=class{static{i(this,"UnionSerde")}from;to;keys;constructor(e,r){this.from=e,this.to=r;let n=Object.keys(this.from),s=new Set(n);s.delete("__type"),this.keys=s}mark(e){this.keys.delete(e)}hasUnknown(){return this.keys.size===1&&Object.keys(this.to).length===0}writeUnknown(){if(this.hasUnknown()){let e=this.keys.values().next().value,r=this.from[e];this.to.$unknown=[e,r]}}}});function P_e(t){Object.defineProperty(t,"__proto__",{value:void 0,writable:!0,enumerable:!0,configurable:!0})}var v_e=g(()=>{i(P_e,"writeKey")});var __e,cp,jD=g(()=>{__e=R(YD());Ce();Se();We();Ie();jS();T_e();v_e();cp=class extends Al{static{i(this,"XmlShapeDeserializer")}settings;stringDeserializer;constructor(e){super(),this.settings=e,this.stringDeserializer=new $d(e)}setSerdeContext(e){this.serdeContext=e,this.stringDeserializer.setSerdeContext(e)}read(e,r,n){let s=L.of(e),o=s.getMemberSchemas();if(s.isStructSchema()&&s.isMemberSchema()&&!!Object.values(o).find(u=>!!u.getMemberTraits().eventPayload)){let u={},d=Object.keys(o)[0];return o[d].isBlobSchema()?u[d]=r:u[d]=this.read(o[d],r),u}let c=(this.serdeContext?.utf8Encoder??Mt)(r),l=this.parseXml(c);return this.readSchema(e,n?l[n]:l)}readSchema(e,r){let n=L.of(e);if(n.isUnitSchema())return;let s=n.getMergedTraits();if(n.isListSchema()&&!Array.isArray(r))return this.readSchema(n,[r]);if(r==null)return r;if(typeof r=="object"){let o=!!s.xmlFlattened;if(n.isListSchema()){let c=n.getValueSchema(),l=[],u=c.getMergedTraits().xmlName??"member",d=o?r:(r[0]??r)[u];if(d==null)return l;let p=Array.isArray(d)?d:[d];for(let f of p)l.push(this.readSchema(c,f));return l}let a={};if(n.isMapSchema()){let c=n.getKeySchema(),l=n.getValueSchema(),u;o?u=Array.isArray(r)?r:[r]:u=Array.isArray(r.entry)?r.entry:[r.entry];let d=c.getMergedTraits().xmlName??"key",p=l.getMergedTraits().xmlName??"value";for(let f of u){let m=f[d],A=f[p];m==="__proto__"&&P_e(a),a[m]=this.readSchema(l,A)}return a}if(n.isStructSchema()){let c=n.isUnionSchema(),l;c&&(l=new JD(r,a));for(let[u,d]of n.structIterator()){let p=d.getMergedTraits(),f=p.httpPayload?p.xmlName??d.getName():d.getMemberTraits().xmlName??u;c&&l.mark(f),r[f]!=null&&(a[u]=this.readSchema(d,r[f]))}return c&&l.writeUnknown(),a}if(n.isDocumentSchema())return r;throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${n.getName(!0)}`)}return n.isListSchema()?[]:n.isMapSchema()||n.isStructSchema()?{}:this.stringDeserializer.read(n,r)}parseXml(e){if(e.length){let r;try{r=(0,__e.parseXML)(e)}catch(a){throw a&&typeof a=="object"&&Object.defineProperty(a,"$responseBodyText",{value:e}),a}let n="#text",s=Object.keys(r)[0],o=r[s];return o[n]&&(o[s]=o[n],delete o[n]),fm(o)}return{}}}});var $y,Z6=g(()=>{Se();We();Ie();Ie();jS();$y=class extends Al{static{i(this,"QueryShapeSerializer")}settings;buffer;constructor(e){super(),this.settings=e}write(e,r,n=""){this.buffer===void 0&&(this.buffer="");let s=L.of(e);if(n&&!n.endsWith(".")&&(n+="."),s.isBlobSchema())(typeof r=="string"||r instanceof Uint8Array)&&(this.writeKey(n),this.writeValue((this.serdeContext?.base64Encoder??Pt)(r)));else if(s.isBooleanSchema()||s.isNumericSchema()||s.isStringSchema())r!=null?(this.writeKey(n),this.writeValue(String(r))):s.isIdempotencyToken()&&(this.writeKey(n),this.writeValue(Lo()));else if(s.isBigIntegerSchema())r!=null&&(this.writeKey(n),this.writeValue(String(r)));else if(s.isBigDecimalSchema())r!=null&&(this.writeKey(n),this.writeValue(r instanceof Ye?r.string:String(r)));else if(s.isTimestampSchema()){if(r instanceof Date)switch(this.writeKey(n),un(s,this.settings)){case 5:this.writeValue(r.toISOString().replace(".000Z","Z"));break;case 6:this.writeValue(Po(r));break;case 7:this.writeValue(String(r.getTime()/1e3));break}}else if(s.isDocumentSchema())Array.isArray(r)?this.write(79,r,n):r instanceof Date?this.write(4,r,n):r instanceof Uint8Array?this.write(21,r,n):r&&typeof r=="object"?this.write(143,r,n):(this.writeKey(n),this.writeValue(String(r)));else if(s.isListSchema()){if(Array.isArray(r))if(r.length===0)this.settings.serializeEmptyLi
Line truncated
|
||||||
|
Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,{tryNextLink:!1,logger:e});return t},"validateSsoProfile"),ovt=i((t={})=>async({callerClientConfig:e}={})=>{t.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO");let{ssoStartUrl:r,ssoAccountId:n,ssoRegion:s,ssoRoleName:o,ssoSession:a}=t,{ssoClient:c}=t,l=tvt({profile:t.profile??e?.profile});if(!r&&!n&&!s&&!o&&!a){let d=(await rvt(t))[l];if(!d)throw new Ra(`Profile ${l} was not found.`,{logger:t.logger});if(!_De(d))throw new Ra(`Profile ${l} is not configured with SSO credentials.`,{logger:t.logger});if(d?.sso_session){let y=(await nvt(t))[d.sso_session],I=` configurations in profile ${l} and sso-session ${d.sso_session}`;if(s&&s!==y.sso_region)throw new Ra("Conflicting SSO region"+I,{tryNextLink:!1,logger:t.logger});if(r&&r!==y.sso_start_url)throw new Ra("Conflicting SSO start_url"+I,{tryNextLink:!1,logger:t.logger});d.sso_region=y.sso_region,d.sso_start_url=y.sso_start_url}let{sso_start_url:p,sso_account_id:f,sso_region:m,sso_role_name:A,sso_session:h}=QDe(d,t.logger);return vDe({ssoStartUrl:p,ssoSession:h,ssoAccountId:f,ssoRegion:m,ssoRoleName:A,ssoClient:c,clientConfig:t.clientConfig,parentClientConfig:t.parentClientConfig,callerClientConfig:t.callerClientConfig,profile:l,filepath:t.filepath,configFilepath:t.configFilepath,ignoreCache:t.ignoreCache,logger:t.logger})}else{if(!r||!n||!s||!o)throw new Ra('Incomplete configuration. The fromSSO() argument hash must include "ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"',{tryNextLink:!1,logger:t.logger});return vDe({ssoStartUrl:r,ssoSession:a,ssoAccountId:n,ssoRegion:s,ssoRoleName:o,ssoClient:c,clientConfig:t.clientConfig,parentClientConfig:t.parentClientConfig,callerClientConfig:t.callerClientConfig,profile:l,filepath:t.filepath,configFilepath:t.configFilepath,ignoreCache:t.ignoreCache,logger:t.logger})}},"fromSSO");gk.fromSSO=ovt;gk.isSsoProfile=_De;gk.validateSsoProfile=QDe});var T9=w(Ek=>{var{SignatureV4:ivt,signatureV4aContainer:DDe}=p6(),Ix={CrtSignerV4:null},R9="X-Amz-S3session-Token",kDe=R9.toLowerCase(),yk=class extends ivt{static{i(this,"SignatureV4SignWithCredentials")}async signWithCredentials(e,r,n){let s=LDe(r);e.headers[kDe]=r.sessionToken;let o=this;return ODe(o,s),o.signRequest(e,n??{})}async presignWithCredentials(e,r,n){let s=LDe(r);return delete e.headers[kDe],e.headers[R9]=r.sessionToken,e.query=e.query??{},e.query[R9]=r.sessionToken,ODe(this,s),this.presign(e,n)}};function LDe(t){return{accessKeyId:t.accessKeyId,secretAccessKey:t.secretAccessKey,expiration:t.expiration}}i(LDe,"getCredentialsWithoutSessionToken");function ODe(t,e){let r=t.credentialProvider;t.credentialProvider=()=>(t.credentialProvider=r,Promise.resolve(e))}i(ODe,"setSingleOverride");var N9=class{static{i(this,"SignatureV4MultiRegion")}sigv4aSigner;sigv4Signer;signerOptions;static sigv4aDependency(){return typeof Ix.CrtSignerV4=="function"?"crt":typeof DDe.SignatureV4a=="function"?"js":"none"}constructor(e){this.sigv4Signer=new yk(e),this.signerOptions=e}async sign(e,r={}){return r.signingRegion==="*"?this.getSigv4aSigner().sign(e,r):this.sigv4Signer.sign(e,r)}async signWithCredentials(e,r,n={}){if(n.signingRegion==="*"){let s=this.getSigv4aSigner(),o=Ix.CrtSignerV4;if(o&&s instanceof o)return s.signWithCredentials(e,r,n);throw new Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}return this.sigv4Signer.signWithCredentials(e,r,n)}async presign(e,r={}){if(r.signingRegion==="*"){let n=this.getSigv4aSigner(),s=Ix.CrtSignerV4;if(s&&n instanceof s)return n.presign(e,r);throw new Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`)}return this.sigv4Signer.presign(e,r)}async presignWithCredentials(e,r,n={}){if(n.signingRegion==="*")throw new Error("Method presignWithCredentials is not supported for [signingRegion=*].");return this.sigv4Signer.presignWithCredentials(e,r,n)}getSigv4aSigner(){if(!this.sigv4aSigner){let e=Ix.CrtSignerV4,r=DDe.SignatureV4a;if(this.signerOptions.runtime==="node"){if(!e&&!r)throw new Error("Neither CRT nor JS SigV4a implementation is available. Please load either @aws-sdk/signature-v4-crt or @aws-sd
Line truncated
|
||||||
|
Multiple credential sources detected:
|
||||||
|
Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set.
|
||||||
|
This SDK will proceed with the AWS_PROFILE value.
|
||||||
|
|
||||||
|
However, a future version may change this behavior to prefer the ENV static credentials.
|
||||||
|
Please ensure that your environment only sets either the AWS_PROFILE or the
|
||||||
|
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair.
|
||||||
|
`),gOe=!0)),new Fk("AWS_PROFILE is set, skipping fromEnv provider.",{logger:t.logger,tryNextLink:!0});return t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"),_Qt(t)()},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO");let{ssoStartUrl:r,ssoAccountId:n,ssoRegion:s,ssoRoleName:o,ssoSession:a}=t;if(!r&&!n&&!s&&!o&&!a)throw new Fk("Skipping SSO provider in default chain (inputs do not include SSO fields).",{logger:t.logger});let{fromSSO:c}=B9();return c(t)(e)},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni");let{fromIni:r}=AOe();return r(t)(e)},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess");let{fromProcess:r}=AK();return r(t)(e)},async e=>{t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile");let{fromTokenFile:r}=gK();return r(t)(e)},async()=>(t.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"),(await kQt(t))()),async()=>{throw new Fk("Could not load credentials from any providers",{tryNextLink:!1,logger:t.logger})}],yOe),"defaultProvider"),FQt=i(t=>t?.expiration!==void 0,"credentialsWillNeedRefresh"),yOe=i(t=>t?.expiration!==void 0&&t.expiration.getTime()-Date.now()<3e5,"credentialsTreatedAsExpired");Uk.credentialsTreatedAsExpired=yOe;Uk.credentialsWillNeedRefresh=FQt;Uk.defaultProvider=MQt});var mqe=w(C=>{var{awsEndpointFunctions:UQt,emitWarningIfUnsupportedVersion:qQt,createDefaultUserAgentProvider:GQt,NODE_APP_ID_CONFIG_OPTIONS:$Qt,getAwsRegionExtensionConfiguration:HQt,resolveAwsRegionExtensionConfiguration:zQt,resolveUserAgentConfig:VQt,resolveHostHeaderConfig:WQt,getUserAgentPlugin:YQt,getHostHeaderPlugin:JQt,getLoggerPlugin:jQt,getRecursionDetectionPlugin:KQt}=(yt(),Z(Ca)),{getHttpAuthSchemeEndpointRuleSetPlugin:XQt,DefaultIdentityProviderConfig:ZQt,getHttpSigningPlugin:eDt,createPaginator:Hm}=(Es(),Z(_5)),{normalizeProvider:xOe,getSmithyContext:tDt,ServiceException:rDt,NoOpLogger:nDt,emitWarningIfUnsupportedVersion:sDt,loadConfigsForDefaultMode:oDt,getDefaultExtensionConfiguration:iDt,resolveDefaultRuntimeConfig:aDt,Client:bOe,makeBuilder:cDt,createWaiter:DO,checkExceptions:BOe,WaiterState:Xy,createAggregatedClient:lDt}=(Ce(),Z(Fg)),{Command:uDt}=(Ce(),Z(Fg));C.$Command=uDt;C.__Client=bOe;var{resolveDefaultsModeConfig:dDt,loadConfig:qm,NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS:pDt,NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS:fDt,NODE_REGION_CONFIG_OPTIONS:mDt,NODE_REGION_CONFIG_FILE_OPTIONS:ADt,resolveRegionConfig:hDt}=(gt(),Z(Qo)),{BinaryDecisionDiagram:gDt,EndpointCache:yDt,decideEndpoint:EDt,customEndpointFunctions:CDt,resolveEndpointConfig:IDt,getEndpointPlugin:wDt}=(vt(),Z(XJ)),{parseUrl:SDt,getHttpHandlerExtensionConfiguration:xDt,resolveHttpHandlerRuntimeConfig:bDt,getContentLengthPlugin:BDt}=(Se(),Z(Kd)),{DEFAULT_RETRY_MODE:RDt,NODE_RETRY_MODE_CONFIG_OPTIONS:NDt,NODE_MAX_ATTEMPT_CONFIG_OPTIONS:TDt,resolveRetryConfig:PDt,getRetryPlugin:vDt}=(Oo(),Z(h5)),{TypeRegistry:ROe,getSchemaSerdePlugin:_Dt}=(We(),Z(v8)),{resolveAwsSdkSigV4Config:QDt,AwsSdkSigV4Signer:DDt,NODE_AUTH_SCHEME_PREFERENCE_OPTIONS:kDt}=(Yn(),Z(wD)),{defaultProvider:LDt}=EK(),{toUtf8:ODt,fromUtf8:MDt,toBase64:FDt,fromBase64:UDt,calculateBodyLength:qDt}=(Ie(),Z(ym)),{streamCollector:GDt,NodeHttpHandler:$Dt}=gu(),{AwsJson1_1Protocol:HDt}=(Tm(),Z(o9)),{Sha256:zDt}=(fu(),Z(Sj)),VDt=i(async(t,e,r)=>({operation:tDt(e).operation,region:await xOe(t.region)()||(()=>{throw new Error("expected `region` to be configured for `aws.auth#sigv4`")})()}),"defaultECRHttpAuthSchemeParametersProvider");function WDt(t){return{schemeId:"aws.auth#sigv4",signingProperties:{name:"ecr",region:t.region},propertiesExtractor:i((e,r)=>({signingProperties:{config:e,context:r}}),"propertiesExtractor")}}i(WDt,"createAwsAuthSigv4HttpAuthOption");var YDt=i(t=>{let e=[];switch(t.operation){default:e.push(WDt(t))}return e},"defaultECRHttpAuthSchemeProvider"),JDt=i(t=>{let e=QDt(t);return Object.assign(e,{authSchemePreference:xOe(t.authSchemePreference??[])})},"resolveHttpAuthSchemeConfig"),jDt=i(t=>Object.assign(t,{useDualstackEndpoint:t.useDualstackEndpoint??!1,useFipsEndpoint:t.useFipsEndpoint??!1,defaultSigningName:"ecr"}),"resolveClientEndpointParameters"),KDt={UseFIPS:{type:"builtInParams",name:"useFipsEndpoint"},Endpoint:{type:"builtInParams",name:"endpoint"},Region:{type:"builtInParams",name:"region"},UseDualStack:{type:"builtInParams",name:"useDualstackEndpoint"}},XDt="3.1153.0",ZDt={version:XDt},Zy="ref",Gm=-1,qk=!0,EOe="isSet",IK="PartitionResult",gp="stringEquals",Gk="booleanEquals",CK="getAttr",COe={[Zy]:"Endpoint"},yp={fn:CK,argv:[{[Zy]:IK},"name"]},IOe={[Zy]:IK},$m={},wOe=[{[Zy]:"Region"}],SOe={conditions:[[EOe,[COe]],[EOe,wOe],["aws.partition",wOe,IK],[gp,[yp,"aws-eusc"]],[gp,[yp,"aws-iso-f"]],[gp,[yp,"aws-iso-e"]],[gp,[yp,"aws-iso-b"]],[gp,[yp,"aws-iso"]],[gp,[yp,"aws-cn"]],[gp,[yp,"aws-us-gov"]],[gp,[yp,"aws"]],[Gk,[{[Zy]:"UseFIPS"},qk]
Line truncated
|
||||||
|
|
||||||
|
Error Code : ${a.statusCode}
|
||||||
|
|
||||||
|
Error Message: ${a.message}`)})).result)===null||r===void 0?void 0:r.value;if(!o)throw new Error("Response json body do not have ID Token field");return o})}static getIDToken(e){return Goe(this,void 0,void 0,function*(){try{let r=t.getIDTokenUrl();if(e){let s=encodeURIComponent(e);r=`${r}&audience=${s}`}T(`ID token url is ${r}`);let n=yield t.getCall(r);return Ln(n),n}catch(r){throw new Error(`Error message: ${r.message}`)}})}};var Hoe=require("os"),CC=require("fs");var M2=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},{access:mXe,appendFile:AXe,writeFile:hXe}=CC.promises,$oe="GITHUB_STEP_SUMMARY";var F2=class{static{i(this,"Summary")}constructor(){this._buffer=""}filePath(){return M2(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let e=process.env[$oe];if(!e)throw new Error(`Unable to find environment variable for $${$oe}. Check if your runtime environment supports job summaries.`);try{yield mXe(e,CC.constants.R_OK|CC.constants.W_OK)}catch{throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}return this._filePath=e,this._filePath})}wrap(e,r,n={}){let s=Object.entries(n).map(([o,a])=>` ${o}="${a}"`).join("");return r?`<${e}${s}>${r}</${e}>`:`<${e}${s}>`}write(e){return M2(this,void 0,void 0,function*(){let r=!!e?.overwrite,n=yield this.filePath();return yield(r?hXe:AXe)(n,this._buffer,{encoding:"utf8"}),this.emptyBuffer()})}clear(){return M2(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return this._buffer="",this}addRaw(e,r=!1){return this._buffer+=e,r?this.addEOL():this}addEOL(){return this.addRaw(Hoe.EOL)}addCodeBlock(e,r){let n=Object.assign({},r&&{lang:r}),s=this.wrap("pre",this.wrap("code",e),n);return this.addRaw(s).addEOL()}addList(e,r=!1){let n=r?"ol":"ul",s=e.map(a=>this.wrap("li",a)).join(""),o=this.wrap(n,s);return this.addRaw(o).addEOL()}addTable(e){let r=e.map(s=>{let o=s.map(a=>{if(typeof a=="string")return this.wrap("td",a);let{header:c,data:l,colspan:u,rowspan:d}=a,p=c?"th":"td",f=Object.assign(Object.assign({},u&&{colspan:u}),d&&{rowspan:d});return this.wrap(p,l,f)}).join("");return this.wrap("tr",o)}).join(""),n=this.wrap("table",r);return this.addRaw(n).addEOL()}addDetails(e,r){let n=this.wrap("details",this.wrap("summary",e)+r);return this.addRaw(n).addEOL()}addImage(e,r,n){let{width:s,height:o}=n||{},a=Object.assign(Object.assign({},s&&{width:s}),o&&{height:o}),c=this.wrap("img",null,Object.assign({src:e,alt:r},a));return this.addRaw(c).addEOL()}addHeading(e,r){let n=`h${r}`,s=["h1","h2","h3","h4","h5","h6"].includes(n)?n:"h1",o=this.wrap(s,e);return this.addRaw(o).addEOL()}addSeparator(){let e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){let e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,r){let n=Object.assign({},r&&{cite:r}),s=this.wrap("blockquote",e,n);return this.addRaw(s).addEOL()}addLink(e,r){let n=this.wrap("a",e,{href:r});return this.addRaw(n).addEOL()}},KYt=new F2;var Y2=R(require("os"),1);var W2=require("string_decoder");var SC=R(require("os"),1),V2=R(require("events"),1),nie=R(require("child_process"),1),sie=R(require("path"),1);var Xoe=require("assert"),uo=R(require("path"),1);var IC=R(require("fs"),1),Hu=R(require("path"),1);var U2=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},{chmod:q2,copyFile:Voe,lstat:fB,mkdir:Woe,open:r8t,readdir:G2,rename:gXe,rm:Yoe,rmdir:n8t,stat:tf,symlink:Joe,unlink:$2}=IC.promises,qa=process.platform==="win32";function joe(t){return U2(this,void 0,void 0,function*(){let e=yield IC.promises.readlink(t);return qa&&!e.endsWith("\\")?`${e}\\`:e})}i(joe,"readlink");var s8t=IC.constants.O_RDONLY;function jA(t){return U2(this,void 0,void 0,function*(){try{yield tf(t)}catch(e){if(e.code==="ENOENT")return!1;throw e}return!0})}i(jA,"exists");function mB(t){if(t=yXe(t),!t)throw new Error('isRooted() parameter "p" cannot be empty');return qa?t.startsWith("\\")||/^[A-Z]:/i.test(t):t.startsWith("/")}i(mB,"isRooted");function H2(t,e){return U2(this,void 0,void 0,function*(){let r;try{r=yield tf(t)}catch(s){s.code!=="ENOENT"&&console.log(`Unexpected error attempting to determine if executable file exists '${t}': ${s}`)}if(r&&r.isFile()){if(qa){let s=Hu.extname(t).toUpperCase();if(e.some(o=>o.toULine truncated
|
||||||
|
Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}i(uie,"getBooleanInput");function die(t){process.exitCode=J2.Failure,XA(t)}i(die,"setFailed");function sf(){return process.env.RUNNER_DEBUG==="1"}i(sf,"isDebug");function T(t){bp("debug",{},t)}i(T,"debug");function XA(t,e={}){bp("error",nF(e),t instanceof Error?t.toString():t)}i(XA,"error");function or(t,e={}){bp("warning",nF(e),t instanceof Error?t.toString():t)}i(or,"warning");function ae(t){process.stdout.write(t+lie.EOL)}i(ae,"info");function SXe(t){oF("group",t)}i(SXe,"startGroup");function xXe(){oF("endgroup")}i(xXe,"endGroup");function BC(t,e){return cie(this,void 0,void 0,function*(){SXe(t);let r;try{r=yield e()}finally{xXe()}return r})}i(BC,"group");function of(t,e){if(process.env.GITHUB_STATE||"")return uX("STATE",dX(t,e));bp("save-state",{name:t},xu(e))}i(of,"saveState");function pie(t){return process.env[`STATE_${t}`]||""}i(pie,"getState");function fie(t){return cie(this,void 0,void 0,function*(){return yield pB.getIDToken(t)})}i(fie,"getIDToken");var yw=R(require("fs"),1),eW=R(require("os"),1),tW=R(require("path"),1);var Aie=R(require("os"),1);function RC(t){return t==null?"":typeof t=="string"||t instanceof String?t:JSON.stringify(t)}i(RC,"toCommandValue");function hie(t,e,r){let n=new j2(t,e,r);process.stdout.write(n.toString()+Aie.EOL)}i(hie,"issueCommand");var mie="::",j2=class{static{i(this,"Command")}constructor(e,r,n){e||(e="missing.command"),this.command=e,this.properties=r,this.message=n}toString(){let e=mie+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let r=!0;for(let n in this.properties)if(this.properties.hasOwnProperty(n)){let s=this.properties[n];s&&(r?r=!1:e+=",",e+=`${n}=${BXe(s)}`)}}return e+=`${mie}${bXe(this.message)}`,e}};function bXe(t){return RC(t).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}i(bXe,"escapeData");function BXe(t){return RC(t).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}i(BXe,"escapeProperty");var gB=R(eA(),1),NXe=R(ef(),1);var Ga;(function(t){t[t.OK=200]="OK",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.ResourceMoved=302]="ResourceMoved",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.SwitchProxy=306]="SwitchProxy",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.TooManyRequests=429]="TooManyRequests",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout"})(Ga||(Ga={}));var gie;(function(t){t.Accept="accept",t.ContentType="content-type"})(gie||(gie={}));var yie;(function(t){t.ApplicationJson="application/json"})(yie||(yie={}));var L8t=[Ga.MovedPermanently,Ga.ResourceMoved,Ga.SeeOther,Ga.TemporaryRedirect,Ga.PermanentRedirect],O8t=[Ga.BadGateway,Ga.ServiceUnavailable,Ga.GatewayTimeout];var Cie=require("os"),NC=require("fs");var K2=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},{access:vXe,appendFile:_Xe,writeFile:QXe}=NC.promises,Eie="GITHUB_STEP_SUMMARY";var X2=class{static{i(this,"Summary")}constructor(){this._buffer=""}filePath(){return K2(this,void 0,void 0,function*(){if(this._filePath)return this._filePath;let e=process.env[Eie];if(!e)throw new Error(`Unable to find environment variable for $${Eie}. Check if your runtime environment supports job summaries.`);try{yield vXe(e,NC.constants.R_OK|NC.constants.W_OK)}catch{throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}return this._filePath=e,this._filePath})}wrap(e,r,n={}){let s=Object.entries(n).map(([o,a])=>` ${o}="${a}"`).join("");return r?`<${e}${s}>${r}</${e}>`:`<${e}${s}>`}write(e){return K2(this,void 0,void 0,function*(){let r=!!e?.overwrite,n=yield this.filePath();return yield(r?QXe:_Xe)(n,this._buffer,{encoding:"utf8"}),this.emptyBuffer()})}clear(){return K2(this,void 0,void 0,function*(){return this.emptyBuffer().write({overwrite:!0})})}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){return thisLine truncated
|
||||||
|
`),e=e.replace(/\r/g,`
|
||||||
|
`));let s=e.split(`
|
||||||
|
`).map(o=>o.trim());for(let o of s)!o||o.startsWith("#")||n.patterns.push(new $C(o));return n.searchPaths.push(...Rq(n.patterns)),n})}static stat(e,r,n){return Lq(this,void 0,void 0,function*(){let s;if(r.followSymbolicLinks)try{s=yield nh.promises.stat(e.path)}catch(o){if(o.code==="ENOENT"){if(r.omitBrokenSymbolicLinks){Jo(`Broken symlink '${e.path}'`);return}throw new Error(`No information found for the path '${e.path}'. This may indicate a broken symbolic link.`)}throw o}else s=yield nh.promises.lstat(e.path);if(s.isDirectory()&&r.followSymbolicLinks){let o=yield nh.promises.realpath(e.path);for(;n.length>=e.level;)n.pop();if(n.some(a=>a===o)){Jo(`Symlink cycle detected for path '${e.path}' and realpath '${o}'`);return}n.push(o)}return s})}};var crt=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})};function Vce(t,e){return crt(this,void 0,void 0,function*(){return yield kB.create(t,e)})}i(Vce,"create");var XB=R(require("crypto"),1),ah=R(require("fs"),1),df=R(require("path"),1),Fue=R(Oue(),1),Uue=R(require("util"),1);var jC;(function(t){t.Gzip="cache.tgz",t.Zstd="cache.tzst"})(jC||(jC={}));var is;(function(t){t.Gzip="gzip",t.ZstdWithoutLong="zstd-without-long",t.Zstd="zstd"})(is||(is={}));var po;(function(t){t.GNU="gnu",t.BSD="bsd"})(po||(po={}));var JB=2,jB=5e3,nG=5e3,sG=`${process.env.PROGRAMFILES}\\Git\\usr\\bin\\tar.exe`,Mue=`${process.env.SYSTEMDRIVE}\\Windows\\System32\\tar.exe`,KC="cache.tar",oG="manifest.txt",UKt=10*Math.pow(1024,3),KB="cache read denied:";var ih=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},got=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=t[o]&&function(a){return new Promise(function(c,l){a=t[o](a),s(c,l,a.done,a.value)})}}function s(o,a,c,l){Promise.resolve(l).then(function(u){o({value:u,done:c})},a)}},yot="1.0";function pf(){return ih(this,void 0,void 0,function*(){let t=process.platform==="win32",e=process.env.RUNNER_TEMP||"";if(!e){let n;t?n=process.env.USERPROFILE||"C:\\":process.platform==="darwin"?n="/Users":n="/home",e=df.join(n,"actions","temp")}let r=df.join(e,XB.randomUUID());return yield nf(r),r})}i(pf,"createTempDirectory");function Va(t){return ah.statSync(t).size}i(Va,"getArchiveFileSizeInBytes");function iG(t){return ih(this,void 0,void 0,function*(){var e,r,n,s,o;let a=[],c=(o=process.env.GITHUB_WORKSPACE)!==null&&o!==void 0?o:process.cwd(),l=yield Vce(t.join(`
|
||||||
|
`),{implicitDescendants:!1});try{for(var u=!0,d=got(l.globGenerator()),p;p=yield d.next(),e=p.done,!e;u=!0){s=p.value,u=!1;let m=df.relative(c,s).replace(new RegExp(`\\${df.sep}`,"g"),"/");T(`Matched: ${m}`),m===""?a.push("."):a.push(`${m}`)}}catch(f){r={error:f}}finally{try{!u&&!e&&(n=d.return)&&(yield n.call(d))}finally{if(r)throw r.error}}return a})}i(iG,"resolvePaths");function XC(t){return ih(this,void 0,void 0,function*(){return Uue.promisify(ah.unlink)(t)})}i(XC,"unlinkFile");function que(t){return ih(this,arguments,void 0,function*(e,r=[]){let n="";r.push("--version"),T(`Checking ${e} ${r.join(" ")}`);try{yield zu(`${e}`,r,{ignoreReturnCode:!0,silent:!0,listeners:{stdout:i(s=>n+=s.toString(),"stdout"),stderr:i(s=>n+=s.toString(),"stderr")}})}catch(s){T(s.message)}return n=n.trim(),T(n),n})}i(que,"getVersion");function ZC(){return ih(this,void 0,void 0,function*(){let t=yield que("zstd",["--quiet"]),e=Fue.clean(t);return T(`zstd version: ${e}`),t===""?is.Gzip:is.ZstdWithoutLong})}i(ZC,"getCompressionMethod");function ed(t){return t===is.Gzip?jC.Gzip:jC.Zstd}i(ed,"getCacheFileName");function Gue(){return ih(this,void 0,void 0,function*(){return ah.existsSync(sG)?sG:(yield que("tar")).toLowerCase().includes("gnu tar")?Rs("tar"):""})}i(Gue,"getGnuTarPathOnWindows");function aG(t,e){if(e===void 0)throw Error(`Expected ${t} but value was undefiend`);return e}i(aG,"assertDefined");function ch(t,e,r=!1){let n=t.slice();return e&&n.push(e),process.platform==="win32"&&!r&&n.push("windows-only"),n.push(yot),XB.createHash("sha256").update(n.join("|")).digest("hex")}i(ch,"getCacheVersion");function $ue(){let t=process.env.ACTIONS_RUNTIME_TOKEN;if(!t)throw new Error("Unable to get the ACTIONS_RUNTIME_TOKEN env variable");return t}i($ue,"getRuntimeToken");var tI=R(require("http"),1),uG=R(require("https"),1);function cG(t){let e=t.protocol==="https:";if(Eot(t))return;let r=e?process.env.https_proxy||process.env.HTTPS_PROXY:process.env.http_proxy||process.env.HTTP_PROXY;if(r)try{return new eR(r)}catch{if(!r.startsWith("http://")&&!r.startsWith("https://"))return new eR(`http://${r}`)}else return}i(cG,"getProxyUrl");function Eot(t){if(!t.hostname)return!1;let e=t.hostname;if(Cot(e))return!0;let r=process.env.no_proxy||process.env.NO_PROXY||"";if(!r)return!1;let n;t.port?n=Number(t.port):t.protocol==="http:"?n=80:t.protocol==="https:"&&(n=443);let s=[t.hostname.toUpperCase()];typeof n=="number"&&s.push(`${s[0]}:${n}`);for(let o of r.split(",").map(a=>a.trim().toUpperCase()).filter(a=>a))if(o==="*"||s.some(a=>a===o||a.endsWith(`.${o}`)||o.startsWith(".")&&a.endsWith(`${o}`)))return!0;return!1}i(Eot,"checkBypass");function Cot(t){let e=t.toLowerCase();return e==="localhost"||e.startsWith("127.")||e.startsWith("[::1]")||e.startsWith("[0:0:0:0:0:0:0:1]")}i(Cot,"isLoopbackAddress");var eR=class extends URL{static{i(this,"DecodedURL")}constructor(e,r){super(e,r),this._decodedUsername=decodeURIComponent(super.username),this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}};var td=R(eA(),1),Hue=R(ef(),1);var Ir=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},mt;(function(t){t[t.OK=200]="OK",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.ResourceMoved=302]="ResourceMoved",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.SwitchProxy=306]="SwitchProxy",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.TooManyRequests=429]="TooManyRequests",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout"})(mt||(mt={}));var as;(function(t){t.Accept="accept",t.ContentType="content-type"})(as||(as={}));var Ml;(function(t){t.ApplicationJson="application/json"})(Ml||(Ml={}));var wot=[mt.MovedPermanently,mt.ResourceMoved,mt.SeeOther,mt.TemporaryRedirect,mt.PermanentRedirect],Sot=[mt.BadGateway,mt.ServiceUnavailable,mt.GatewayTimeout],xot=["OPTIONS","GET","DELETE","HEAD"],bot=10,Bot=5,Wa=class t extends Error{static{i(this,"HttpClientError")}const
Line truncated
|
||||||
|
${kot.sanitize({...this,request:{...this.request,agent:n},response:this.response})}`,"value"),enumerable:!1}),Object.setPrototypeOf(this,t.prototype)}};function iR(t){return t instanceof cs?!0:mf(t)&&t.name==="RestError"}i(iR,"isRestError");function Ps(t,e){return Buffer.from(t,e)}i(Ps,"stringToUint8Array");var aR=R(require("node:http"),1),cR=R(require("node:https"),1),CG=R(require("node:zlib"),1),lde=require("node:stream");var Zo=rI("ts-http-runtime");var Lot={};function nI(t){return t&&typeof t.pipe=="function"}i(nI,"isReadableStream");function cde(t){return t.readable===!1?Promise.resolve():new Promise(e=>{let r=i(()=>{e(),t.removeListener("close",r),t.removeListener("end",r),t.removeListener("error",r)},"handler");t.on("close",r),t.on("end",r),t.on("error",r)})}i(cde,"isStreamComplete");function ude(t){return t&&typeof t.byteLength=="number"}i(ude,"isArrayBuffer");var lR=class extends lde.Transform{static{i(this,"ReportTransform")}loadedBytes=0;progressCallback;_transform(e,r,n){this.push(e),this.loadedBytes+=e.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),n()}catch(s){n(s)}}constructor(e){super(),this.progressCallback=e}},IG=class{static{i(this,"NodeHttpClient")}cachedHttpAgent;cachedHttpsAgents=new WeakMap;async sendRequest(e){let r=new AbortController,n;if(e.abortSignal){if(e.abortSignal.aborted)throw new Ya("The operation was aborted. Request has already been canceled.");n=i(u=>{u.type==="abort"&&r.abort()},"abortListener"),e.abortSignal.addEventListener("abort",n)}let s;e.timeout>0&&(s=setTimeout(()=>{let u=new Vi;Zo.info(`request to '${u.sanitizeUrl(e.url)}' timed out. canceling...`),r.abort()},e.timeout));let o=e.headers.get("Accept-Encoding"),a=o?.includes("gzip")||o?.includes("deflate"),c=typeof e.body=="function"?e.body():e.body;if(c&&!e.headers.has("Content-Length")){let u=Uot(c);u!==null&&e.headers.set("Content-Length",u)}let l;try{if(c&&e.onUploadProgress){let A=e.onUploadProgress,h=new lR(A);h.on("error",E=>{Zo.error("Error in upload progress",E)}),nI(c)?c.pipe(h):h.end(c),c=h}let u=await this.makeRequest(e,r,c);s!==void 0&&clearTimeout(s);let d=Oot(u),f={status:u.statusCode??0,headers:d,request:e};if(e.method==="HEAD")return u.resume(),f;l=a?Mot(u,d):u;let m=e.onDownloadProgress;if(m){let A=new lR(m);A.on("error",h=>{Zo.error("Error in download progress",h)}),l.pipe(A),l=A}return e.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY)||e.streamResponseStatusCodes?.has(f.status)?f.readableStreamBody=l:f.bodyAsText=await Fot(l),f}finally{if(e.abortSignal&&n){let u=Promise.resolve();nI(c)&&(u=cde(c));let d=Promise.resolve();nI(l)&&(d=cde(l)),Promise.all([u,d]).then(()=>{n&&e.abortSignal?.removeEventListener("abort",n)}).catch(p=>{Zo.warning("Error when cleaning up abortListener on httpRequest",p)})}}}makeRequest(e,r,n){let s=new URL(e.url),o=s.protocol!=="https:";if(o&&!e.allowInsecureConnection)throw new Error(`Cannot connect to ${e.url} while allowInsecureConnection is false.`);let c={agent:e.agent??this.getOrCreateAgent(e,o),hostname:s.hostname,path:`${s.pathname}${s.search}`,port:s.port,method:e.method,headers:e.headers.toJSON({preserveCase:!0}),...e.requestOverrides};return new Promise((l,u)=>{let d=o?aR.default.request(c,l):cR.default.request(c,l);d.once("error",p=>{u(new cs(p.message,{code:p.code??cs.REQUEST_SEND_ERROR,request:e}))}),r.signal.addEventListener("abort",()=>{let p=new Ya("The operation was aborted. Rejecting from abort signal callback while making request.");d.destroy(p),u(p)}),n&&nI(n)?n.pipe(d):n?typeof n=="string"||Buffer.isBuffer(n)?d.end(n):ude(n)?d.end(ArrayBuffer.isView(n)?Buffer.from(n.buffer):Buffer.from(n)):(Zo.error("Unrecognized body type",n),u(new cs("Unrecognized body type"))):d.end()})}getOrCreateAgent(e,r){let n=e.disableKeepAlive;if(r)return n?aR.default.globalAgent:(this.cachedHttpAgent||(this.cachedHttpAgent=new aR.default.Agent({keepAlive:!0})),this.cachedHttpAgent);{if(n&&!e.tlsSettings)return cR.default.globalAgent;let s=e.tlsSettings??Lot,o=this.cachedHttpsAgents.get(s);return o&&o.options.keepAlive===!n||(Zo.info("No cached TLS Agent exist, creating a new Agent"),o=new cR.default.Agent({keepAlive:!n,...s}),this.cachedHttpsAgents.set(s,o)),o}}};function Oot(t){let e=mo();for(let r of Object.keys(t.headers)){let n=t.headers[r];Array.isArray(n)?n.length>0&&e.set(r,n[0]):n&&e.set(r,n)}return e}i(Oot,"getResponseHeaders");function Mot(t,e){let r=e.get("Content-Encoding");if(r==="gzip"){let n=CG.default.createGunzip();return t.pipe(n),n}else if(r==="deflate"){let n=CG.default.createInflate();return t.pipe(n),n}return t}i(Mot,"getDecodedResponseStream");function Fot(t){return new Promise((e,r)=>{let n=[];t.on("data",s=>{Buffer.isBuffer(s)?n.push(s):n.push(Buffer.from(s))}),t.on("end",()=>{e(Buffer.concat(n).toString("utf8"))}),t.on("error",s=>{s&&s?.name==="AbortError"?r(s):r(new cs(`Error reading response as text: ${s.message}`,{code:cs.PARSE_ERROR}))})})}i(Fot,"streamToText");function Uot(t){return t?Buffer.isBuffer(t)?t.length:
Line truncated
|
||||||
|
`;return e}i(hat,"encodeHeaders");function gat(t){return t instanceof Uint8Array?t.byteLength:_R(t)?t.size===-1?void 0:t.size:void 0}i(gat,"getLength");function yat(t){let e=0;for(let r of t){let n=gat(r);if(n===void 0)return;e+=n}return e}i(yat,"getTotalLength");async function Eat(t,e,r){let n=[Ps(`--${r}`,"utf-8"),...e.flatMap(o=>[Ps(`\r
|
||||||
|
`,"utf-8"),Ps(hat(o.headers),"utf-8"),Ps(`\r
|
||||||
|
`,"utf-8"),o.body,Ps(`\r
|
||||||
|
--${r}`,"utf-8")]),Ps(`--\r
|
||||||
|
\r
|
||||||
|
`,"utf-8")],s=yat(n);s&&t.headers.set("Content-Length",s),t.body=await mpe(n)}i(Eat,"buildRequestBody");var iI="multipartPolicy",Cat=70,Iat=new Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?");function wat(t){if(t.length>Cat)throw new Error(`Multipart boundary "${t}" exceeds maximum length of 70 characters`);if(Array.from(t).some(e=>!Iat.has(e)))throw new Error(`Multipart boundary "${t}" contains invalid characters`)}i(wat,"assertValidBoundary");function DR(){return{name:iI,async sendRequest(t,e){if(!t.multipartBody)return e(t);if(t.body)throw new Error("multipartBody and regular body cannot be set at the same time");let r=t.multipartBody.boundary,n=t.headers.get("Content-Type")??"multipart/mixed",s=n.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!s)throw new Error(`Got multipart request body, but content-type header was not multipart: ${n}`);let[,o,a]=s;if(a&&r&&a!==r)throw new Error(`Multipart boundary was specified as ${a} in the header, but got ${r} in the request body`);return r??=a,r?wat(r):r=Aat(),t.headers.set("Content-Type",`${o}; boundary=${r}`),await Eat(t,t.multipartBody.parts,r),t.multipartBody=void 0,e(t)}}}i(DR,"multipartPolicy");function kR(){return oR()}i(kR,"createEmptyPipeline");var Ape=rR({logLevelEnvVarName:"AZURE_LOG_LEVEL",namespace:"azure"}),Otr=Ape.logger;function Ka(t){return Ape.createClientLogger(t)}i(Ka,"createClientLogger");var Xa=Ka("core-rest-pipeline");function FG(t={}){return dR({logger:Xa.info,...t})}i(FG,"logPolicy");var UG=pR;function qG(t={}){return fR(t)}i(qG,"redirectPolicy");var LR=R(require("node:os"),1),OR=R(require("node:process"),1);function hpe(){return"User-Agent"}i(hpe,"getHeaderName");async function gpe(t){if(OR.default&&OR.default.versions){let e=`${LR.default.type()} ${LR.default.release()}; ${LR.default.arch()}`,r=OR.default.versions;r.bun?t.set("Bun",`${r.bun} (${e})`):r.deno?t.set("Deno",`${r.deno} (${e})`):r.node&&t.set("Node",`${r.node} (${e})`)}}i(gpe,"setPlatformSpecificData");var MR="1.22.2";function Pat(t){let e=[];for(let[r,n]of t){let s=n?`${r}/${n}`:r;e.push(s)}return e.join(" ")}i(Pat,"getUserAgentString");function ype(){return hpe()}i(ype,"getUserAgentHeaderName");async function FR(t){let e=new Map;e.set("core-rest-pipeline",MR),await gpe(e);let r=Pat(e);return t?`${t} ${r}`:r}i(FR,"getUserAgentValue");var Epe=ype(),Cpe="userAgentPolicy";function GG(t={}){let e=FR(t.userAgentPrefix);return{name:Cpe,async sendRequest(r,n){return r.headers.has(Epe)||r.headers.set(Epe,await e),n(r)}}}i(GG,"userAgentPolicy");var yo=class extends Error{static{i(this,"AbortError")}constructor(e){super(e),this.name="AbortError"}};function $G(t,e){let{cleanupBeforeAbort:r,abortSignal:n,abortErrorMsg:s}=e??{};return new Promise((o,a)=>{function c(){a(new yo(s??"The operation was aborted."))}i(c,"rejectOnAbort");function l(){n?.removeEventListener("abort",u)}i(l,"removeListeners");function u(){r?.(),l(),c()}if(i(u,"onAbort"),n?.aborted)return c();try{t(d=>{l(),o(d)},d=>{l(),a(d)})}catch(d){a(d)}n?.addEventListener("abort",u)})}i($G,"createAbortablePromise");var kat="The delay was aborted.";function aI(t,e){let r,{abortSignal:n,abortErrorMsg:s}=e??{};return $G(o=>{r=setTimeout(o,t)},{cleanupBeforeAbort:i(()=>clearTimeout(r),"cleanupBeforeAbort"),abortSignal:n,abortErrorMsg:s??kat})}i(aI,"delay");function nd(t){if(mf(t))return t.message;{let e;try{typeof t=="object"&&t?e=JSON.stringify(t):e=String(t)}catch{e="[unable to stringify input]"}return`Unknown error ${e}`}}i(nd,"getErrorMessage");function Ipe(t){return mf(t)}i(Ipe,"isError");function gh(){return ff()}i(gh,"randomUUID");var ut=gf;var wpe=Symbol("rawContent");function zG(t){return typeof t[wpe]=="function"}i(zG,"hasRawContent");function Spe(t){return zG(t)?t[wpe]():t}i(Spe,"getRawContent");var UR=iI;function VG(){let t=DR();return{name:UR,sendRequest:i(async(e,r)=>{if(e.multipartBody)for(let n of e.multipartBody.parts)zG(n.body)&&(n.body=Spe(n.body));return t.sendRequest(e,r)},"sendRequest")}}i(VG,"multipartPolicy");var WG=mR;function YG(){return AR()}i(YG,"decompressResponsePolicy");function JG(t={}){return yR(t)}i(JG,"defaultRetryPolicy");function jG(){return ER()}i(jG,"formDataPolicy");function sd(t){return DG(t)}i(sd,"getDefaultProxySettings");function KG(t,e){return TR(t,e)}i(KG,"proxyPolicy");var xpe="setClientRequestIdPolicy";function XG(t="x-ms-client-request-id"){return{name:xpe,async sendRequest(e,r){return e.headers.has(t)||e.headers.set(t,e.requestId),r(e)}}}i(XG,"setClientRequestIdPolicy");function ZG(t){return PR(t)}i(ZG,"agentPolicy");function e$(t){return vR(t)}i(e$,"tlsPolicy");var yh={span:Symbol.for("@azure/core-tracing span"),namespace:Symbol.for("@azure/core-tracing namespace")};function bpe(t={}){let e=new t$(t.parentContext);return t.span&&(e=e.setValue(yh.span,t.span)),t.namespace&&(e=e.setValue(yh.namespace,t.namespace)),e}i(bpe,"createTracingContext");var t$=class t{static{i(this,"TracingContextImpl")}_contextMap;constructor(e){this._contextMap=e i
Line truncated
|
||||||
|
`&&t[o]!=="\r";o++)l+=t[o];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),o--),!olt(l)){let p;return l.trim().length===0?p="Invalid space after '<'.":p="Tag '"+l+"' is an invalid name.",wr("InvalidTag",p,ls(t,o))}let u=elt(t,o);if(u===!1)return wr("InvalidAttr","Attributes for '"+l+"' have open quote.",ls(t,o));let d=u.value;if(o=u.index,d[d.length-1]==="/"){let p=o-d.length;d=d.substring(0,d.length-1);let f=cfe(d,e);if(f===!0)n=!0;else return wr(f.err.code,f.err.msg,ls(t,p+f.err.line))}else if(c)if(u.tagClosed){if(d.trim().length>0)return wr("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",ls(t,a));if(r.length===0)return wr("InvalidTag","Closing tag '"+l+"' has not been opened.",ls(t,a));{let p=r.pop();if(l!==p.tagName){let f=ls(t,p.tagStartPos);return wr("InvalidTag","Expected closing tag '"+p.tagName+"' (opened in line "+f.line+", col "+f.col+") instead of closing tag '"+l+"'.",ls(t,a))}r.length==0&&(s=!0)}}else return wr("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",ls(t,o));else{let p=cfe(d,e);if(p!==!0)return wr(p.err.code,p.err.msg,ls(t,o-d.length+p.err.line));if(s===!0)return wr("InvalidXml","Multiple possible root nodes found.",ls(t,o));e.unpairedTags.indexOf(l)!==-1||r.push({tagName:l,tagStartPos:a}),n=!0}for(o++;o<t.length;o++)if(t[o]==="<")if(t[o+1]==="!"){o++,o=afe(t,o);continue}else if(t[o+1]==="?"){if(o=ife(t,++o),o.err)return o}else break;else if(t[o]==="&"){let p=nlt(t,o);if(p==-1)return wr("InvalidChar","char '&' is not expected.",ls(t,o));o=p}else if(s===!0&&!ofe(t[o]))return wr("InvalidXml","Extra text at the end",ls(t,o));t[o]==="<"&&o--}}else{if(ofe(t[o]))continue;return wr("InvalidChar","char '"+t[o]+"' is not expected.",ls(t,o))}if(n){if(r.length==1)return wr("InvalidTag","Unclosed tag '"+r[0].tagName+"'.",ls(t,r[0].tagStartPos));if(r.length>0)return wr("InvalidXml","Invalid '"+JSON.stringify(r.map(o=>o.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return wr("InvalidXml","Start tag expected.",1);return!0}i(ZR,"validate");function ofe(t){return t===" "||t===" "||t===`
|
||||||
|
`||t==="\r"}i(ofe,"isWhiteSpace");function ife(t,e){let r=e;for(;e<t.length;e++)if(t[e]=="?"||t[e]==" "){let n=t.substr(r,e-r);if(e>5&&n==="xml")return wr("InvalidXml","XML declaration allowed only at the start of the document.",ls(t,e));if(t[e]=="?"&&t[e+1]==">"){e++;break}else continue}return e}i(ife,"readPI");function afe(t,e){if(t.length>e+5&&t[e+1]==="-"&&t[e+2]==="-"){for(e+=3;e<t.length;e++)if(t[e]==="-"&&t[e+1]==="-"&&t[e+2]===">"){e+=2;break}}else if(t.length>e+8&&t[e+1]==="D"&&t[e+2]==="O"&&t[e+3]==="C"&&t[e+4]==="T"&&t[e+5]==="Y"&&t[e+6]==="P"&&t[e+7]==="E"){let r=1;for(e+=8;e<t.length;e++)if(t[e]==="<")r++;else if(t[e]===">"&&(r--,r===0))break}else if(t.length>e+9&&t[e+1]==="["&&t[e+2]==="C"&&t[e+3]==="D"&&t[e+4]==="A"&&t[e+5]==="T"&&t[e+6]==="A"&&t[e+7]==="["){for(e+=8;e<t.length;e++)if(t[e]==="]"&&t[e+1]==="]"&&t[e+2]===">"){e+=2;break}}return e}i(afe,"readCommentAndCDATA");var Xct='"',Zct="'";function elt(t,e){let r="",n="",s=!1;for(;e<t.length;e++){if(t[e]===Xct||t[e]===Zct)n===""?n=t[e]:n!==t[e]||(n="");else if(t[e]===">"&&n===""){s=!0;break}r+=t[e]}return n!==""?!1:{value:r,index:e,tagClosed:s}}i(elt,"readAttributeStr");var tlt=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function cfe(t,e){let r=KR(t,tlt),n={};for(let s=0;s<r.length;s++){if(r[s][1].length===0)return wr("InvalidAttr","Attribute '"+r[s][2]+"' has no space in starting.",EI(r[s]));if(r[s][3]!==void 0&&r[s][4]===void 0)return wr("InvalidAttr","Attribute '"+r[s][2]+"' is without value.",EI(r[s]));if(r[s][3]===void 0&&!e.allowBooleanAttributes)return wr("InvalidAttr","boolean attribute '"+r[s][2]+"' is not allowed.",EI(r[s]));let o=r[s][2];if(!slt(o))return wr("InvalidAttr","Attribute '"+o+"' is an invalid name.",EI(r[s]));if(!Object.prototype.hasOwnProperty.call(n,o))n[o]=1;else return wr("InvalidAttr","Attribute '"+o+"' is repeated.",EI(r[s]))}return!0}i(cfe,"validateAttributeString");function rlt(t,e){let r=/\d/;for(t[e]==="x"&&(e++,r=/[\da-fA-F]/);e<t.length;e++){if(t[e]===";")return e;if(!t[e].match(r))break}return-1}i(rlt,"validateNumberAmpersand");function nlt(t,e){if(e++,t[e]===";")return-1;if(t[e]==="#")return e++,rlt(t,e);let r=0;for(;e<t.length;e++,r++)if(!(t[e].match(/\w/)&&r<20)){if(t[e]===";")break;return-1}return e}i(nlt,"validateAmpersand");function wr(t,e,r){return{err:{code:t,msg:e,line:r.line||r,col:r.col}}}i(wr,"getErrorObject");function slt(t){return E$(t)}i(slt,"validateAttrName");function olt(t){return E$(t)}i(olt,"validateTagName");function ls(t,e){let r=t.substring(0,e).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}i(ls,"getLineNumberForPosition");function EI(t){return t.startIndex+t[1].length}i(EI,"getPositionFromMatch");var lfe={amp:"&",AMP:"&",lt:"<",LT:"<",gt:">",GT:">",quot:'"',QUOT:'"',apos:"'",lsquo:"\u2018",rsquo:"\u2019",ldquo:"\u201C",rdquo:"\u201D",lsquor:"\u201A",rsquor:"\u2019",ldquor:"\u201E",bdquo:"\u201E",comma:",",period:".",colon:":",semi:";",excl:"!",quest:"?",num:"#",dollar:"$",percent:"%",amp:"&",ast:"*",commat:"@",lowbar:"_",verbar:"|",vert:"|",sol:"/",bsol:"\\",lbrace:"{",rbrace:"}",lbrack:"[",rbrack:"]",lpar:"(",rpar:")",nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",COPY:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",REG:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",half:"\xBD",frac34:"\xBE",iquest:"\xBF",times:"\xD7",div:"\xF7",divide:"\xF7"},ufe={Agrave:"\xC0",agrave:"\xE0",Aacute:"\xC1",aacute:"\xE1",Acirc:"\xC2",acirc:"\xE2",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",Aring:"\xC5",aring:"\xE5",AElig:"\xC6",aelig:"\xE6",Ccedil:"\xC7",ccedil:"\xE7",Egrave:"\xC8",egrave:"\xE8",Eacute:"\xC9",eacute:"\xE9",Ecirc:"\xCA",ecirc:"\xEA",Euml:"\xCB",euml:"\xEB",Igrave:"\xCC",igrave:"\xEC",Iacute:"\xCD",iacute:"\xED",Icirc:"\xCE",icirc:"\xEE",Iuml:"\xCF",iuml:"\xEF",ETH:"\xD0",eth:"\xF0",Ntilde:"\xD1",ntilde:"\xF1",Ograve:"\xD2",ograve:"\xF2",Oacute:"\xD3",oacute:"\xF3",Ocirc:"\xD4",ocirc:"\xF4",Otilde:"\xD5",otilde:"\xF5",Ouml:"\xD6",ouml:"\xF6",Oslash:"\xD8",oslash:"\xF8",Ugrave:"\xD9",ugrave:"\xF9",Uacute:"\xDA",uacute:"\xFA",Ucirc:"\xDB",ucirc:"\xFB",Uuml:"\xDC",uuml:"\xFC",Yacute:"\xDD",yacute:"\xFD",THORN:"\xDE",thorn:"\xFE",szlig:"\xDF",yuml:"\xFF",Yuml:"\u0178"},dfe={Amacr:"\u0100",amacr:"\u0101",Abreve:"\u0102",abreve:"\u0103",Aogon:"\u0104",aogon:"\u0105",Cacute:"\u0106",cacute:"\u0107",Ccirc:"\u0108",ccirc:"\u0109",Cdot:"\u010A",cdot:"\u010B",Ccaron:"\u010C",ccaron:"\u010D",Dcaron:"\u010E",dcaron:"\u010F",Dstrok:"\u0110",dstrok:"\u0111",Emacr:"\u0112",emacr:"\u0113",Ecaron:"\u011A",ecaron:"\u011B",Edot:"\u0116",edot:"\u0117",Eogon:"\u0118",eogon:"\u0119",Gcirc:"\u011C",gcirc:"\u011D",Gbreve:"\u011E",gbreve:"\u011F",Gdot:"\u0120",gdot:"\u0121",Gcedil:"\u0122",Hcirc:"\u0124",hcirc:"\Line truncated
|
||||||
|
`);let e=new Ds("!xml"),r=e,n="";this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0;let s=this.options,o=new wI(s.processEntities),a=t.length;for(let c=0;c<a;c++)if(t[c]==="<"){let u=t.charCodeAt(c+1);if(u===47){let d=Sh(t,">",c,"Closing Tag is not closed."),p=t.substring(c+2,d).trim();if(s.removeNSPrefix){let m=p.indexOf(":");m!==-1&&(p=p.substr(m+1))}p=R$(s.transformTagName,p,"",s).tagName,r&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher));let f=this.matcher.getCurrentTag();if(p&&s.unpairedTagsSet.has(p))throw new Error(`Unpaired tag can not be used as closing tag: </${p}>`);f&&s.unpairedTagsSet.has(f)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",c=d}else if(u===63){let d=N$(t,c,!1,"?>");if(!d)throw new Error("Pi Tag is not closed.");n=this.saveTextToParentTag(n,r,this.readonlyMatcher);let p=this.buildAttributesMap(d.tagExp,this.matcher,d.tagName,!0);if(p){let f=p[this.options.attributeNamePrefix+"version"];this.entityDecoder.setXmlVersion(Number(f)||1),o.setXmlVersion(Number(f)||1)}if(!(s.ignoreDeclaration&&d.tagName==="?xml"||s.ignorePiTags)){let f=new Ds(d.tagName);f.add(s.textNodeName,""),d.tagName!==d.tagExp&&d.attrExpPresent&&s.ignoreAttributes!==!0&&(f[":@"]=p),this.addChild(r,f,this.readonlyMatcher,c)}c=d.closeIndex+1}else if(u===33&&t.charCodeAt(c+2)===45&&t.charCodeAt(c+3)===45){let d=Sh(t,"-->",c+4,"Comment is not closed.");if(s.commentPropName){let p=t.substring(c+4,d-2);n=this.saveTextToParentTag(n,r,this.readonlyMatcher),r.add(s.commentPropName,[{[s.textNodeName]:p}])}c=d}else if(u===33&&t.charCodeAt(c+2)===68){let d=o.readDocType(t,c);this.entityDecoder.addInputEntities(d.entities),c=d.i}else if(u===33&&t.charCodeAt(c+2)===91){let d=Sh(t,"]]>",c,"CDATA is not closed.")-2,p=t.substring(c+9,d);n=this.saveTextToParentTag(n,r,this.readonlyMatcher);let f=this.parseTextData(p,r.tagname,this.readonlyMatcher,!0,!1,!0,!0);f==null&&(f=""),s.cdataPropName?r.add(s.cdataPropName,[{[s.textNodeName]:p}]):r.add(s.textNodeName,f),c=d+2}else{let d=N$(t,c,s.removeNSPrefix);if(!d){let v=t.substring(Math.max(0,c-50),Math.min(a,c+50));throw new Error(`readTagExp returned undefined at position ${c}. Context: "${v}"`)}let p=d.tagName,f=d.rawTagName,m=d.tagExp,A=d.attrExpPresent,h=d.closeIndex;if({tagName:p,tagExp:m}=R$(s.transformTagName,p,m,s),s.strictReservedNames&&(p===s.commentPropName||p===s.cdataPropName||p===s.textNodeName||p===s.attributesGroupName))throw new Error(`Invalid tag name: ${p}`);r&&n&&r.tagname!=="!xml"&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher,!1));let E=r;E&&s.unpairedTagsSet.has(E.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let y=!1;m.length>0&&m.lastIndexOf("/")===m.length-1&&(y=!0,p[p.length-1]==="/"?(p=p.substr(0,p.length-1),m=p):m=m.substr(0,m.length-1),A=p!==m);let I=null,x={},b;b=Nlt(f),p!==e.tagname&&this.matcher.push(p,{},b),p!==m&&A&&(I=this.buildAttributesMap(m,this.matcher,p),I&&(x=Rlt(I,s))),p!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());let N=c;if(this.isCurrentNodeStopNode){let v="";if(y)c=d.closeIndex;else if(s.unpairedTagsSet.has(p))c=d.closeIndex;else{let J=this.readStopNodeData(t,f,h+1);if(!J)throw new Error(`Unexpected end of ${f}`);c=J.i,v=J.tagContent}let _=new Ds(p);I&&(_[":@"]=I),_.add(s.textNodeName,v),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,_,this.readonlyMatcher,N)}else{if(y){({tagName:p,tagExp:m}=R$(s.transformTagName,p,m,s));let v=new Ds(p);I&&(v[":@"]=I),this.addChild(r,v,this.readonlyMatcher,N),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else if(s.unpairedTagsSet.has(p)){let v=new Ds(p);I&&(v[":@"]=I),this.addChild(r,v,this.readonlyMatcher,N),this.matcher.pop(),this.isCurrentNodeStopNode=!1,c=d.closeIndex;continue}else{let v=new Ds(p);if(this.tagsNodeStack.length>s.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),I&&(v[":@"]=I),this.addChild(r,v,this.readonlyMatcher,N),r=v}n="",c=h}}}else n+=t[c];return e.child},"parseXml");function Dlt(t,e,r,n){this.options.captureMetaData||(n=void 0);let s=this.options.jPath?r.toString():r,o=this.options.updateTag(e.tagname,s,e[":@"]);o===!1||(typeof o=="string"&&(e.tagname=o),t.addChild(e,n))}i(Dlt,"addChild");function klt(t,e,r){let n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){let s=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,s)))return t}if(n.tagFilter){let s=this.options.jPath?r.toString():r;if(!n.tagFilter(e,s))return t}return this.entityDecoder.decode(t)}i(klt,"replaceEntitiesValue");function Llt(t,e,r,n){return t&&(n===void 0&&(n=e.child.length===0),t=this.parseTextData(t,e.tagname,r,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,n),t!==void 0&&t!==""&&e.add(this.options.textNodeName,t),t=""),t}i(Llt,"saveTextToParentTag");function Olt(){return this.stopNodeExpressionsSet.Line truncated
|
||||||
|
`;function Vlt(t,e){if(!Array.isArray(t)||t.length===0)return"1.0";let r=t[0];if(D$(r)==="?xml"){let s=r[":@"];if(s){let o=e.attributeNamePrefix+"version";if(s[o])return s[o]}}return"1.0"}i(Vlt,"detectXmlVersionFromArray");function vfe(t,e,r,n,s){return!r.sanitizeName||Sf(t,{xmlVersion:s})?t:r.sanitizeName(t,{isAttribute:e,matcher:n.readOnly()})}i(vfe,"resolveTagName");function Q$(t,e){let r="";e.format&&(r=zlt);let n=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let a=0;a<e.stopNodes.length;a++){let c=e.stopNodes[a];typeof c=="string"?n.push(new Io(c)):c instanceof Io&&n.push(c)}let s=Vlt(t,e),o=new tc;return _fe(t,e,r,o,n,s)}i(Q$,"toXml");function _fe(t,e,r,n,s,o){let a="",c=!1;if(e.maxNestedTags&&n.getDepth()>e.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(t!=null){let l=t.toString();return l=_$(l,e),l}return""}for(let l=0;l<t.length;l++){let u=t[l],d=D$(u);if(d===void 0)continue;let f=d===e.textNodeName||d===e.cdataPropName||d===e.commentPropName||d[0]==="?"?d:vfe(d,!1,e,n,o),m=Wlt(u[":@"],e);n.push(f,m);let A=Jlt(n,s);if(f===e.textNodeName){let x=u[d];A||(x=e.tagValueProcessor(f,x),x=_$(x,e)),c&&(a+=r),a+=x,c=!1,n.pop();continue}else if(f===e.cdataPropName){c&&(a+=r);let x=u[d][0][e.textNodeName],b=sN(x);a+=`<![CDATA[${b}]]>`,c=!1,n.pop();continue}else if(f===e.commentPropName){let x=u[d][0][e.textNodeName],b=nN(x);a+=r+`<!--${b}-->`,c=!0,n.pop();continue}else if(f[0]==="?"){let x=Pfe(u[":@"],e,A,n,o);a+=(f==="?xml"?"":r)+`<${f}${x}?>`,c=!0,n.pop();continue}let h=r;h!==""&&(h+=e.indentBy);let E=Pfe(u[":@"],e,A,n,o),y=r+`<${f}${E}`,I;A?I=Qfe(u[d],e):I=_fe(u[d],e,h,n,s,o),e.unpairedTags.indexOf(f)!==-1?e.suppressUnpairedNode?a+=y+">":a+=y+"/>":(!I||I.length===0)&&e.suppressEmptyNode?a+=y+"/>":I&&I.endsWith(">")?a+=y+`>${I}${r}</${f}>`:(a+=y+">",I&&r!==""&&(I.includes("/>")||I.includes("</"))?a+=r+e.indentBy+I+r:a+=I,a+=`</${f}>`),c=!0,n.pop()}return a}i(_fe,"arrToStr");function Wlt(t,e){if(!t||e.ignoreAttributes)return null;let r={},n=!1;for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let o=s.startsWith(e.attributeNamePrefix)?s.substr(e.attributeNamePrefix.length):s;r[o]=ad(t[s]),n=!0}return n?r:null}i(Wlt,"extractAttributeValues");function Qfe(t,e){if(!Array.isArray(t))return t!=null?t.toString():"";let r="";for(let n=0;n<t.length;n++){let s=t[n],o=D$(s);if(o===e.textNodeName)r+=s[o];else if(o===e.cdataPropName)r+=s[o][0][e.textNodeName];else if(o===e.commentPropName)r+=s[o][0][e.textNodeName];else{if(o&&o[0]==="?")continue;if(o){let a=Ylt(s[":@"],e),c=Qfe(s[o],e);!c||c.length===0?r+=`<${o}${a}/>`:r+=`<${o}${a}>${c}</${o}>`}}}return r}i(Qfe,"getRawContent");function Ylt(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let s=t[n];s===!0&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${ad(s)}"`}return r}i(Ylt,"attr_to_str_raw");function D$(t){let e=Object.keys(t);for(let r=0;r<e.length;r++){let n=e[r];if(Object.prototype.hasOwnProperty.call(t,n)&&n!==":@")return n}}i(D$,"propName");function Pfe(t,e,r,n,s){let o="";if(t&&!e.ignoreAttributes)for(let a in t){if(!Object.prototype.hasOwnProperty.call(t,a))continue;let c=a.substr(e.attributeNamePrefix.length),l=r?c:vfe(c,!0,e,n,s),u;r?u=t[a]:(u=e.attributeValueProcessor(a,t[a]),u=_$(u,e)),u===!0&&e.suppressBooleanAttributes?o+=` ${l}`:o+=` ${l}="${ad(u)}"`}return o}i(Pfe,"attr_to_str");function Jlt(t,e){if(!e||e.length===0)return!1;for(let r=0;r<e.length;r++)if(t.matches(e[r]))return!0;return!1}i(Jlt,"checkStopNode");function _$(t,e){if(t&&t.length>0&&e.processEntities)for(let r=0;r<e.entities.length;r++){let n=e.entities[r];t=t.replace(n.regex,n.val)}return t}i(_$,"replaceEntitiesValue");function k$(t){return typeof t=="function"?t:Array.isArray(t)?e=>{for(let r of t)if(typeof r=="string"&&e===r||r instanceof RegExp&&r.test(e))return!0}:()=>!1}i(k$,"getIgnoreAttributesFn");var jlt={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:i(function(t,e){return e},"tagValueProcessor"),attributeValueProcessor:i(function(t,e){return e},"attributeValueProcessor"),preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0,sanitizeName:!1};function Ls(t){if(this.options=Object.assign({},jlt,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(e=>typeof e=="string"&&e.startsWith("*.")?".."+e.substring(2):e)),this.stopNodeExpressions=[],this.options.stopNodes&&ArraLine truncated
|
||||||
|
`,this.newLine=`
|
||||||
|
`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}i(Ls,"Builder");function Klt(t,e){let r=t["?xml"];if(r&&typeof r=="object"){if(e.attributesGroupName&&r[e.attributesGroupName]){let s=r[e.attributesGroupName][e.attributeNamePrefix+"version"];if(s)return s}let n=r[e.attributeNamePrefix+"version"];if(n)return n}return"1.0"}i(Klt,"detectXmlVersionFromObj");function L$(t,e,r,n,s){return!r.sanitizeName||Sf(t,{xmlVersion:s})?t:r.sanitizeName(t,{isAttribute:e,matcher:n.readOnly()})}i(L$,"resolveTagName");Ls.prototype.build=function(t){if(this.options.preserveOrder)return Q$(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});let e=new tc,r=Klt(t,this.options);return this.j2x(t,0,e,r).val}};Ls.prototype.j2x=function(t,e,r,n){let s="",o="";if(this.options.maxNestedTags&&r.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");let a=this.options.jPath?r.toString():r,c=this.checkStopNode(r);for(let l in t){if(!Object.prototype.hasOwnProperty.call(t,l))continue;let d=l===this.options.textNodeName||l===this.options.cdataPropName||l===this.options.commentPropName||this.options.attributesGroupName&&l===this.options.attributesGroupName||this.isAttribute(l)||l[0]==="?"?l:L$(l,!1,this.options,r,n);if(typeof t[l]>"u")this.isAttribute(l)&&(o+="");else if(t[l]===null)this.isAttribute(l)||d===this.options.cdataPropName||d===this.options.commentPropName?o+="":d[0]==="?"?o+=this.indentate(e)+"<"+d+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+d+"/"+this.tagEndChar;else if(t[l]instanceof Date)o+=this.buildTextValNode(t[l],d,"",e,r);else if(typeof t[l]!="object"){let p=this.isAttribute(l);if(p&&!this.ignoreAttributesFn(p,a)){let f=L$(p,!0,this.options,r,n);s+=this.buildAttrPairStr(f,""+t[l],c)}else if(!p)if(l===this.options.textNodeName){let f=this.options.tagValueProcessor(l,""+t[l]);o+=this.replaceEntitiesValue(f)}else{r.push(d);let f=this.checkStopNode(r);if(r.pop(),f){let m=""+t[l];m===""?o+=this.indentate(e)+"<"+d+this.closeTag(d)+this.tagEndChar:o+=this.indentate(e)+"<"+d+">"+m+"</"+d+this.tagEndChar}else o+=this.buildTextValNode(t[l],d,"",e,r)}}else if(Array.isArray(t[l])){let p=t[l].length,f="",m="";for(let A=0;A<p;A++){let h=t[l][A];if(!(typeof h>"u"))if(h===null)d[0]==="?"?o+=this.indentate(e)+"<"+d+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+d+"/"+this.tagEndChar;else if(typeof h=="object")if(this.options.oneListGroup){r.push(d);let E=this.j2x(h,e+1,r,n);r.pop(),f+=E.val,this.options.attributesGroupName&&h.hasOwnProperty(this.options.attributesGroupName)&&(m+=E.attrStr)}else f+=this.processTextOrObjNode(h,d,e,r,n);else if(this.options.oneListGroup){let E=this.options.tagValueProcessor(d,h);E=this.replaceEntitiesValue(E),f+=E}else{r.push(d);let E=this.checkStopNode(r);if(r.pop(),E){let y=""+h;y===""?f+=this.indentate(e)+"<"+d+this.closeTag(d)+this.tagEndChar:f+=this.indentate(e)+"<"+d+">"+y+"</"+d+this.tagEndChar}else f+=this.buildTextValNode(h,d,"",e,r)}}this.options.oneListGroup&&(f=this.buildObjectNode(f,d,m,e)),o+=f}else if(this.options.attributesGroupName&&l===this.options.attributesGroupName){let p=Object.keys(t[l]),f=p.length;for(let m=0;m<f;m++){let A=L$(p[m],!0,this.options,r,n);s+=this.buildAttrPairStr(A,""+t[l][p[m]],c)}}else o+=this.processTextOrObjNode(t[l],d,e,r,n)}return{attrStr:s,val:o}};Ls.prototype.buildAttrPairStr=function(t,e,r){return r||(e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e)),this.options.suppressBooleanAttributes&&e==="true"?" "+t:" "+t+'="'+ad(e)+'"'};function Xlt(t,e,r,n,s){let o=this.extractAttributes(t);if(n.push(e,o),this.checkStopNode(n)){let l=this.buildRawContent(t),u=this.buildAttributesForStopNode(t);return n.pop(),this.buildObjectNode(l,e,u,r)}let c=this.j2x(t,r+1,n,s);return n.pop(),e[0]==="?"?this.buildTextValNode("",e,c.attrStr,r,n):t[this.options.textNodeName]!==void 0&&Object.keys(t).length===1?this.buildTextValNode(t[this.options.textNodeName],e,c.attrStr,r,n):this.buildObjectNode(c.val,e,c.attrStr,r)}i(Xlt,"processTextOrObjNode");Ls.prototype.extractAttributes=function(t){if(!t||typeof t!="object")return null;let e={},r=!1;if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){let n=t[this.options.attributesGroupName];for(let s in n){if(!Object.prototype.hasOwnProperty.call(n,s))continue;let o=s.startsWith(this.options.attributeNamePrefix)?s.substring(this.options.attributeNamePrefix.length):s;e[o]=ad(n[s]),r=!0}}else for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let s=this.isAttribute(n);s&&(e[s]=ad(t[n]),r=!0)}return r?e:null};Ls.prototype.buildRawContent=function(t){if(typeof t=="string")return t;if(typeof t!="object"||t===null)return String(t);if(t[this.options.textNodeName]!==void 0)return t[this.options.textNodeName];let e="";for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r)||this.isAttribute(r)||this.options.attributesGroupName&&r===this.o
Line truncated
|
||||||
|
`)+`
|
||||||
|
`+this.getCanonicalizedHeadersString(e)+this.getCanonicalizedResourceString(e),n=this.factory.computeHMACSHA256(r);return e.headers.set(Re.AUTHORIZATION,`SharedKey ${this.factory.accountName}:${n}`),e}getHeaderValueToSign(e,r){let n=e.headers.get(r);return!n||r===Re.CONTENT_LENGTH&&n==="0"?"":n}getCanonicalizedHeadersString(e){let r=e.headers.headersArray().filter(s=>s.name.toLowerCase().startsWith(Re.PREFIX_FOR_STORAGE));r.sort((s,o)=>AN(s.name.toLowerCase(),o.name.toLowerCase())),r=r.filter((s,o,a)=>!(o>0&&s.name.toLowerCase()===a[o-1].name.toLowerCase()));let n="";return r.forEach(s=>{n+=`${s.name.toLowerCase().trimRight()}:${s.value.trimLeft()}
|
||||||
|
`}),n}getCanonicalizedResourceString(e){let r=pN(e.url)||"/",n="";n+=`/${this.factory.accountName}${r}`;let s=fN(e.url),o={};if(s){let a=[];for(let c in s)if(Object.prototype.hasOwnProperty.call(s,c)){let l=c.toLowerCase();o[l]=s[c],a.push(l)}a.sort();for(let c of a)n+=`
|
||||||
|
${c}:${decodeURIComponent(o[c])}`}return n}};var ir=class extends Bf{static{i(this,"StorageSharedKeyCredential")}accountName;accountKey;constructor(e,r){super(),this.accountName=e,this.accountKey=Buffer.from(r,"base64")}create(e,r){return new RI(e,r,this)}computeHMACSHA256(e){return(0,qfe.createHmac)("sha256",this.accountKey).update(e,"utf8").digest("base64")}};var qr=Ka("storage-common");var ni;(function(t){t[t.EXPONENTIAL=0]="EXPONENTIAL",t[t.FIXED=1]="FIXED"})(ni||(ni={}));var ld={maxRetryDelayInMs:120*1e3,maxTries:4,retryDelayInMs:4*1e3,retryPolicyType:ni.EXPONENTIAL,secondaryHost:"",tryTimeoutInMs:void 0},aut=new yo("The operation was aborted."),NI=class extends rc{static{i(this,"StorageRetryPolicy")}retryOptions;constructor(e,r,n=ld){super(e,r),this.retryOptions={retryPolicyType:n.retryPolicyType?n.retryPolicyType:ld.retryPolicyType,maxTries:n.maxTries&&n.maxTries>=1?Math.floor(n.maxTries):ld.maxTries,tryTimeoutInMs:n.tryTimeoutInMs&&n.tryTimeoutInMs>=0?n.tryTimeoutInMs:ld.tryTimeoutInMs,retryDelayInMs:n.retryDelayInMs&&n.retryDelayInMs>=0?Math.min(n.retryDelayInMs,n.maxRetryDelayInMs?n.maxRetryDelayInMs:ld.maxRetryDelayInMs):ld.retryDelayInMs,maxRetryDelayInMs:n.maxRetryDelayInMs&&n.maxRetryDelayInMs>=0?n.maxRetryDelayInMs:ld.maxRetryDelayInMs,secondaryHost:n.secondaryHost?n.secondaryHost:ld.secondaryHost}}async sendRequest(e){return this.attemptSendRequest(e,!1,1)}async attemptSendRequest(e,r,n){let s=e.clone(),o=r||!this.retryOptions.secondaryHost||!(e.method==="GET"||e.method==="HEAD"||e.method==="OPTIONS")||n%2===1;o||(s.url=dN(s.url,this.retryOptions.secondaryHost)),this.retryOptions.tryTimeoutInMs&&(s.url=cd(s.url,Gl.Parameters.TIMEOUT,Math.floor(this.retryOptions.tryTimeoutInMs/1e3).toString()));let a;try{if(qr.info(`RetryPolicy: =====> Try=${n} ${o?"Primary":"Secondary"}`),a=await this._nextPolicy.sendRequest(s),!this.shouldRetry(o,n,a))return a;r=r||!o&&a.status===404}catch(c){if(qr.error(`RetryPolicy: Caught error, message: ${c.message}, code: ${c.code}`),!this.shouldRetry(o,n,a,c))throw c}return await this.delay(o,n,e.abortSignal),this.attemptSendRequest(e,r,++n)}shouldRetry(e,r,n,s){if(r>=this.retryOptions.maxTries)return qr.info(`RetryPolicy: Attempt(s) ${r} >= maxTries ${this.retryOptions.maxTries}, no further try.`),!1;let o=["ETIMEDOUT","ESOCKETTIMEDOUT","ECONNREFUSED","ECONNRESET","ENOENT","ENOTFOUND","TIMEOUT","EPIPE","REQUEST_SEND_ERROR"];if(s){for(let a of o)if(s.name.toUpperCase().includes(a)||s.message.toUpperCase().includes(a)||s.code&&s.code.toString().toUpperCase()===a)return qr.info(`RetryPolicy: Network error ${a} found, will retry.`),!0}if(n||s){let a=n?n.status:s?s.statusCode:0;if(!e&&a===404)return qr.info("RetryPolicy: Secondary access with 404, will retry."),!0;if(a===503||a===500)return qr.info(`RetryPolicy: Will retry for status code ${a}.`),!0}if(n&&n?.status>=400){let a=n.headers.get(Re.X_MS_CopySourceErrorCode);if(a!==void 0)switch(a){case"InternalError":case"OperationTimedOut":case"ServerBusy":return!0}}return s?.code==="PARSE_ERROR"&&s?.message.startsWith('Error "Error: Unclosed root tag')?(qr.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry."),!0):!1}async delay(e,r,n){let s=0;if(e)switch(this.retryOptions.retryPolicyType){case ni.EXPONENTIAL:s=Math.min((Math.pow(2,r-1)-1)*this.retryOptions.retryDelayInMs,this.retryOptions.maxRetryDelayInMs);break;case ni.FIXED:s=this.retryOptions.retryDelayInMs;break}else s=Math.random()*1e3;return qr.info(`RetryPolicy: Delay for ${s}ms`),mN(s,n,aut)}};var TI=class{static{i(this,"StorageRetryPolicyFactory")}retryOptions;constructor(e){this.retryOptions=e}create(e,r){return new NI(e,r,this.retryOptions)}};var cut="storageBrowserPolicy";function Gfe(){return{name:cut,async sendRequest(t,e){return ut||((t.method==="GET"||t.method==="HEAD")&&(t.url=cd(t.url,Gl.Parameters.FORCE_BROWSER_NO_CACHE,new Date().getTime().toString())),t.headers.delete(Re.COOKIE),t.headers.delete(Re.CONTENT_LENGTH)),e(t)}}}i(Gfe,"storageBrowserPolicy");var lut="StorageCorrectContentLengthPolicy";function $fe(){function t(e){e.body&&(typeof e.body=="string"||Buffer.isBuffer(e.body))&&e.body.length>0&&e.headers.set(Re.CONTENT_LENGTH,Buffer.byteLength(e.body))}return i(t,"correctContentLength"),{name:lut,async sendRequest(e,r){return t(e),r(e)}}}i($fe,"storageCorrectContentLengthPolicy");var uut="storageRetryPolicy",bh={maxRetryDelayInMs:120*1e3,maxTries:4,retryDelayInMs:4*1e3,retryPolicyType:ni.EXPONENTIAL,secondaryHost:"",tryTimeoutInMs:void 0},dut=["ETIMEDOUT","ESOCKETTIMEDOUT","ECONNREFUSED","ECONNRESET","ENOENT","ENOTFOUND","TIMEOUT","EPIPE","REQUEST_SEND_ERROR"],put=new yo("The operation was aborted.");function Hfe(t={}){let e=t.retryPolicyType??bh.retryPolicyType,r=t.maxTries??bh.maxTries,n=t.retryDelayInMs??bh.retryDelayInMs,s=t.maxRetryDelayInMs??bh.maxRetryDelayInMs,o=t.secondaryHost??bh.secondaryHost,a=t.tryTimeoutInMs??bh.tryTimeoutInMs;function c({isPrimaryRetry:u,attempt:d,response:p,error:f}){if(d>=r)return
Line truncated
|
||||||
|
`)+`
|
||||||
|
`+n(o)+s(o),c=(0,zfe.createHmac)("sha256",t.accountKey).update(a,"utf8").digest("base64");o.headers.set(Re.AUTHORIZATION,`SharedKey ${t.accountName}:${c}`)}i(e,"signRequest");function r(o,a){let c=o.headers.get(a);return!c||a===Re.CONTENT_LENGTH&&c==="0"?"":c}i(r,"getHeaderValueToSign");function n(o){let a=[];for(let[l,u]of o.headers)l.toLowerCase().startsWith(Re.PREFIX_FOR_STORAGE)&&a.push({name:l,value:u});a.sort((l,u)=>AN(l.name.toLowerCase(),u.name.toLowerCase())),a=a.filter((l,u,d)=>!(u>0&&l.name.toLowerCase()===d[u-1].name.toLowerCase()));let c="";return a.forEach(l=>{c+=`${l.name.toLowerCase().trimRight()}:${l.value.trimLeft()}
|
||||||
|
`}),c}i(n,"getCanonicalizedHeadersString");function s(o){let a=pN(o.url)||"/",c="";c+=`/${t.accountName}${a}`;let l=fN(o.url),u={};if(l){let d=[];for(let p in l)if(Object.prototype.hasOwnProperty.call(l,p)){let f=p.toLowerCase();u[f]=l[p],d.push(f)}d.sort();for(let p of d)c+=`
|
||||||
|
${p}:${decodeURIComponent(u[p])}`}return c}return i(s,"getCanonicalizedResourceString"),{name:fut,async sendRequest(o,a){return e(o),a(o)}}}i(q$,"storageSharedKeyCredentialPolicy");var mut="storageRequestFailureDetailsParserPolicy";function Vfe(){return{name:mut,async sendRequest(t,e){try{return await e(t)}catch(r){throw typeof r=="object"&&r!==null&&r.response&&r.response.parsedBody&&r.response.parsedBody.code==="InvalidHeaderValue"&&r.response.parsedBody.HeaderName==="x-ms-version"&&(r.message=`The provided service version is not enabled on this storage account. Please see https://learn.microsoft.com/rest/api/storageservices/versioning-for-the-azure-storage-services for additional information.
|
||||||
|
`),r}}}}i(Vfe,"storageRequestFailureDetailsParserPolicy");var Wfe=require("node:crypto");var hN=class{static{i(this,"UserDelegationKeyCredential")}accountName;userDelegationKey;key;constructor(e,r){this.accountName=e,this.userDelegationKey=r,this.key=Buffer.from(r.value,"base64")}computeHMACSHA256(e){return(0,Wfe.createHmac)("sha256",this.key).update(e,"utf8").digest("base64")}};var gN="12.31.0",yN="2026-02-06";var EN="https://storage.azure.com/.default",$l={Parameters:{FORCE_BROWSER_NO_CACHE:"_",SIGNATURE:"sig",SNAPSHOT:"snapshot",VERSIONID:"versionid",TIMEOUT:"timeout"}};var Wi="",G$="*",Aut=1*1024*1024;var hut=4*Aut;var Yfe="AES256",Jfe="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;",jfe=["Access-Control-Allow-Origin","Cache-Control","Content-Length","Content-Type","Date","Request-Id","traceparent","Transfer-Encoding","User-Agent","x-ms-client-request-id","x-ms-date","x-ms-error-code","x-ms-request-id","x-ms-return-client-request-id","x-ms-version","Accept-Ranges","Content-Disposition","Content-Encoding","Content-Language","Content-MD5","Content-Range","ETag","Last-Modified","Server","Vary","x-ms-content-crc64","x-ms-copy-action","x-ms-copy-completion-time","x-ms-copy-id","x-ms-copy-progress","x-ms-copy-status","x-ms-has-immutability-policy","x-ms-has-legal-hold","x-ms-lease-state","x-ms-lease-status","x-ms-range","x-ms-request-server-encrypted","x-ms-server-encrypted","x-ms-snapshot","x-ms-source-range","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","x-ms-access-tier","x-ms-access-tier-change-time","x-ms-access-tier-inferred","x-ms-account-kind","x-ms-archive-status","x-ms-blob-append-offset","x-ms-blob-cache-control","x-ms-blob-committed-block-count","x-ms-blob-condition-appendpos","x-ms-blob-condition-maxsize","x-ms-blob-content-disposition","x-ms-blob-content-encoding","x-ms-blob-content-language","x-ms-blob-content-length","x-ms-blob-content-md5","x-ms-blob-content-type","x-ms-blob-public-access","x-ms-blob-sequence-number","x-ms-blob-type","x-ms-copy-destination-snapshot","x-ms-creation-time","x-ms-default-encryption-scope","x-ms-delete-snapshots","x-ms-delete-type-permanent","x-ms-deny-encryption-scope-override","x-ms-encryption-algorithm","x-ms-if-sequence-number-eq","x-ms-if-sequence-number-le","x-ms-if-sequence-number-lt","x-ms-incremental-copy","x-ms-lease-action","x-ms-lease-break-period","x-ms-lease-duration","x-ms-lease-id","x-ms-lease-time","x-ms-page-write","x-ms-proposed-lease-id","x-ms-range-get-content-md5","x-ms-rehydrate-priority","x-ms-sequence-number-action","x-ms-sku-name","x-ms-source-content-md5","x-ms-source-if-match","x-ms-source-if-modified-since","x-ms-source-if-none-match","x-ms-source-if-unmodified-since","x-ms-tag-count","x-ms-encryption-key-sha256","x-ms-copy-source-error-code","x-ms-copy-source-status-code","x-ms-if-tags","x-ms-source-if-tags"],Kfe=["comp","maxresults","rscc","rscd","rsce","rscl","rsct","se","si","sip","sp","spr","sr","srt","ss","st","sv","include","marker","prefix","copyid","restype","blockid","blocklisttype","delimiter","prevsnapshot","ske","skoid","sks","skt","sktid","skv","snapshot"],Xfe="BlobUsesCustomerSpecifiedEncryption",Zfe="BlobDoesNotUseCustomerSpecifiedEncryption",eme=["10000","10001","10002","10003","10004","10100","10101","10102","10103","10104","11000","11001","11002","11003","11004","11100","11101","11102","11103","11104"];function Hl(t){if(!t||typeof t!="object")return!1;let e=t;return Array.isArray(e.factories)&&typeof e.options=="object"&&typeof e.toServiceClientOptions=="function"}i(Hl,"isPipelineLike");var PI=class{static{i(this,"Pipeline")}factories;options;constructor(e,r={}){this.factories=e,this.options=r}toServiceClientOptions(){return{httpClient:this.options.httpClient,requestPolicyFactories:this.factories}}};function Sr(t,e={}){t||(t=new Ht);let r=new PI([],e);return r._credential=t,r}i(Sr,"newPipeline");function gut(t){let e=[yut,tme,Eut,Cut,Iut,wut,xut];if(t.factories.length){let r=t.factories.filter(n=>!e.some(s=>s(n)));if(r.length){let n=r.some(s=>Sut(s));return{wrappedPolicies:g$(r),afterRetry:n}}}}i(gut,"processDownlevelPipeline");function $$(t){let{httpClient:e,...r}=t.options,n=t._coreHttpClient;n||(n=e?y$(e):U$(),t._coreHttpClient=n);let s=t._corePipeline;if(!s){let o=`azsdk-js-azure-storage-blob/${gN}`,a=r.userAgentOptions&&r.userAgentOptions.userAgentPrefix?`${r.userAgentOptions.userAgentPrefix} ${o}`:`${o}`;s=pI({...r,loggingOptions:{additionalAllowedHeaderNames:jfe,additionalAllowedQueryParameters:Kfe,logger:iN.info},userAgentOptions:{userAgentPrefix:a},serializationOptions:{stringifyXML:oN,serializerOptions:{xml:{xmlCharKey:"#"}}},deserializationOptions:{parseXML:M$,serializerOptions:{xml:{xmlCharKey:"#"}}}}),s.removePolicy({phase:"Retry"}),s.removePolicy({name:WG}),s.addPolicy($fe()),s.addPolicy(Hfe(r.retryOptions),{phase:"R
Line truncated
|
||||||
|
`),o=e.computeHMACSHA256(s);return{sasQueryParameters:new Xi(t.version,o,n,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType),stringToSign:s}}i(gpt,"generateBlobSASQueryParameters20150405");function ypt(t,e){if(t=kf(t),!t.identifier&&!(t.permissions&&t.expiresOn))throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");let r="c",n=t.snapshotTime;t.blobName&&(r="b",t.snapshotTime?r="bs":t.versionId&&(r="bv",n=t.versionId));let s;t.permissions&&(t.blobName?s=Ec.parse(t.permissions.toString()).toString():s=Cc.parse(t.permissions.toString()).toString());let o=[s||"",t.startsOn?dt(t.startsOn,!1):"",t.expiresOn?dt(t.expiresOn,!1):"",Df(e.accountName,t.containerName,t.blobName),t.identifier,t.ipRange?Ki(t.ipRange):"",t.protocol?t.protocol:"",t.version,r,n,t.cacheControl?t.cacheControl:"",t.contentDisposition?t.contentDisposition:"",t.contentEncoding?t.contentEncoding:"",t.contentLanguage?t.contentLanguage:"",t.contentType?t.contentType:""].join(`
|
||||||
|
`),a=e.computeHMACSHA256(o);return{sasQueryParameters:new Xi(t.version,a,s,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType),stringToSign:o}}i(ypt,"generateBlobSASQueryParameters20181109");function Ept(t,e){if(t=kf(t),!t.identifier&&!(t.permissions&&t.expiresOn))throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");let r="c",n=t.snapshotTime;t.blobName&&(r="b",t.snapshotTime?r="bs":t.versionId&&(r="bv",n=t.versionId));let s;t.permissions&&(t.blobName?s=Ec.parse(t.permissions.toString()).toString():s=Cc.parse(t.permissions.toString()).toString());let o=[s||"",t.startsOn?dt(t.startsOn,!1):"",t.expiresOn?dt(t.expiresOn,!1):"",Df(e.accountName,t.containerName,t.blobName),t.identifier,t.ipRange?Ki(t.ipRange):"",t.protocol?t.protocol:"",t.version,r,n,t.encryptionScope,t.cacheControl?t.cacheControl:"",t.contentDisposition?t.contentDisposition:"",t.contentEncoding?t.contentEncoding:"",t.contentLanguage?t.contentLanguage:"",t.contentType?t.contentType:""].join(`
|
||||||
|
`),a=e.computeHMACSHA256(o);return{sasQueryParameters:new Xi(t.version,a,s,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType,void 0,void 0,void 0,t.encryptionScope),stringToSign:o}}i(Ept,"generateBlobSASQueryParameters20201206");function Cpt(t,e){if(t=kf(t),!t.permissions||!t.expiresOn)throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");let r="c",n=t.snapshotTime;t.blobName&&(r="b",t.snapshotTime?r="bs":t.versionId&&(r="bv",n=t.versionId));let s;t.permissions&&(t.blobName?s=Ec.parse(t.permissions.toString()).toString():s=Cc.parse(t.permissions.toString()).toString());let o=[s||"",t.startsOn?dt(t.startsOn,!1):"",t.expiresOn?dt(t.expiresOn,!1):"",Df(e.accountName,t.containerName,t.blobName),e.userDelegationKey.signedObjectId,e.userDelegationKey.signedTenantId,e.userDelegationKey.signedStartsOn?dt(e.userDelegationKey.signedStartsOn,!1):"",e.userDelegationKey.signedExpiresOn?dt(e.userDelegationKey.signedExpiresOn,!1):"",e.userDelegationKey.signedService,e.userDelegationKey.signedVersion,t.ipRange?Ki(t.ipRange):"",t.protocol?t.protocol:"",t.version,r,n,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType].join(`
|
||||||
|
`),a=e.computeHMACSHA256(o);return{sasQueryParameters:new Xi(t.version,a,s,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType,e.userDelegationKey),stringToSign:o}}i(Cpt,"generateBlobSASQueryParametersUDK20181109");function Ipt(t,e){if(t=kf(t),!t.permissions||!t.expiresOn)throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");let r="c",n=t.snapshotTime;t.blobName&&(r="b",t.snapshotTime?r="bs":t.versionId&&(r="bv",n=t.versionId));let s;t.permissions&&(t.blobName?s=Ec.parse(t.permissions.toString()).toString():s=Cc.parse(t.permissions.toString()).toString());let o=[s||"",t.startsOn?dt(t.startsOn,!1):"",t.expiresOn?dt(t.expiresOn,!1):"",Df(e.accountName,t.containerName,t.blobName),e.userDelegationKey.signedObjectId,e.userDelegationKey.signedTenantId,e.userDelegationKey.signedStartsOn?dt(e.userDelegationKey.signedStartsOn,!1):"",e.userDelegationKey.signedExpiresOn?dt(e.userDelegationKey.signedExpiresOn,!1):"",e.userDelegationKey.signedService,e.userDelegationKey.signedVersion,t.preauthorizedAgentObjectId,void 0,t.correlationId,t.ipRange?Ki(t.ipRange):"",t.protocol?t.protocol:"",t.version,r,n,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType].join(`
|
||||||
|
`),a=e.computeHMACSHA256(o);return{sasQueryParameters:new Xi(t.version,a,s,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType,e.userDelegationKey,t.preauthorizedAgentObjectId,t.correlationId),stringToSign:o}}i(Ipt,"generateBlobSASQueryParametersUDK20200210");function wpt(t,e){if(t=kf(t),!t.permissions||!t.expiresOn)throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");let r="c",n=t.snapshotTime;t.blobName&&(r="b",t.snapshotTime?r="bs":t.versionId&&(r="bv",n=t.versionId));let s;t.permissions&&(t.blobName?s=Ec.parse(t.permissions.toString()).toString():s=Cc.parse(t.permissions.toString()).toString());let o=[s||"",t.startsOn?dt(t.startsOn,!1):"",t.expiresOn?dt(t.expiresOn,!1):"",Df(e.accountName,t.containerName,t.blobName),e.userDelegationKey.signedObjectId,e.userDelegationKey.signedTenantId,e.userDelegationKey.signedStartsOn?dt(e.userDelegationKey.signedStartsOn,!1):"",e.userDelegationKey.signedExpiresOn?dt(e.userDelegationKey.signedExpiresOn,!1):"",e.userDelegationKey.signedService,e.userDelegationKey.signedVersion,t.preauthorizedAgentObjectId,void 0,t.correlationId,t.ipRange?Ki(t.ipRange):"",t.protocol?t.protocol:"",t.version,r,n,t.encryptionScope,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType].join(`
|
||||||
|
`),a=e.computeHMACSHA256(o);return{sasQueryParameters:new Xi(t.version,a,s,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType,e.userDelegationKey,t.preauthorizedAgentObjectId,t.correlationId,t.encryptionScope),stringToSign:o}}i(wpt,"generateBlobSASQueryParametersUDK20201206");function Spt(t,e){if(t=kf(t),!t.permissions||!t.expiresOn)throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");let r="c",n=t.snapshotTime;t.blobName&&(r="b",t.snapshotTime?r="bs":t.versionId&&(r="bv",n=t.versionId));let s;t.permissions&&(t.blobName?s=Ec.parse(t.permissions.toString()).toString():s=Cc.parse(t.permissions.toString()).toString());let o=[s||"",t.startsOn?dt(t.startsOn,!1):"",t.expiresOn?dt(t.expiresOn,!1):"",Df(e.accountName,t.containerName,t.blobName),e.userDelegationKey.signedObjectId,e.userDelegationKey.signedTenantId,e.userDelegationKey.signedStartsOn?dt(e.userDelegationKey.signedStartsOn,!1):"",e.userDelegationKey.signedExpiresOn?dt(e.userDelegationKey.signedExpiresOn,!1):"",e.userDelegationKey.signedService,e.userDelegationKey.signedVersion,t.preauthorizedAgentObjectId,void 0,t.correlationId,void 0,t.delegatedUserObjectId,t.ipRange?Ki(t.ipRange):"",t.protocol?t.protocol:"",t.version,r,n,t.encryptionScope,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType].join(`
|
||||||
|
`),a=e.computeHMACSHA256(o);return{sasQueryParameters:new Xi(t.version,a,s,void 0,void 0,t.protocol,t.startsOn,t.expiresOn,t.ipRange,t.identifier,r,t.cacheControl,t.contentDisposition,t.contentEncoding,t.contentLanguage,t.contentType,e.userDelegationKey,t.preauthorizedAgentObjectId,t.correlationId,t.encryptionScope,t.delegatedUserObjectId),stringToSign:o}}i(Spt,"generateBlobSASQueryParametersUDK20250705");function Df(t,e,r){let n=[`/blob/${t}/${e}`];return r&&n.push(`/${r}`),n.join("")}i(Df,"getCanonicalName");function kf(t){let e=t.version?t.version:yN;if(t.snapshotTime&&e<"2018-11-09")throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");if(t.blobName===void 0&&t.snapshotTime)throw RangeError("Must provide 'blobName' when providing 'snapshotTime'.");if(t.versionId&&e<"2019-10-10")throw RangeError("'version' must be >= '2019-10-10' when providing 'versionId'.");if(t.blobName===void 0&&t.versionId)throw RangeError("Must provide 'blobName' when providing 'versionId'.");if(t.permissions&&t.permissions.setImmutabilityPolicy&&e<"2020-08-04")throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.");if(t.permissions&&t.permissions.deleteVersion&&e<"2019-10-10")throw RangeError("'version' must be >= '2019-10-10' when providing 'x' permission.");if(t.permissions&&t.permissions.permanentDelete&&e<"2019-10-10")throw RangeError("'version' must be >= '2019-10-10' when providing 'y' permission.");if(t.permissions&&t.permissions.tag&&e<"2019-12-12")throw RangeError("'version' must be >= '2019-12-12' when providing 't' permission.");if(e<"2020-02-10"&&t.permissions&&(t.permissions.move||t.permissions.execute))throw RangeError("'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.");if(e<"2021-04-10"&&t.permissions&&t.permissions.filterByTags)throw RangeError("'version' must be >= '2021-04-10' when providing the 'f' permission.");if(e<"2020-02-10"&&(t.preauthorizedAgentObjectId||t.correlationId))throw RangeError("'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.");if(t.encryptionScope&&e<"2020-12-06")throw RangeError("'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.");return t.version=e,t}i(kf,"SASSignatureValuesSanityCheckAndAutofill");var GI=class{static{i(this,"BlobLeaseClient")}_leaseId;_url;_containerOrBlobOperation;_isContainer;get leaseId(){return this._leaseId}get url(){return this._url}constructor(e,r){let n=e.storageClientContext;this._url=e.url,e.name===void 0?(this._isContainer=!0,this._containerOrBlobOperation=n.container):(this._isContainer=!1,this._containerOrBlobOperation=n.blob),r||(r=gh()),this._leaseId=r}async acquireLease(e,r={}){if(this._isContainer&&(r.conditions?.ifMatch&&r.conditions?.ifMatch!==Wi||r.conditions?.ifNoneMatch&&r.conditions?.ifNoneMatch!==Wi||r.conditions?.tagConditions))throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");return ee.withSpan("BlobLeaseClient-acquireLease",r,async n=>ue(await this._containerOrBlobOperation.acquireLease({abortSignal:r.abortSignal,duration:e,modifiedAccessConditions:{...r.conditions,ifTags:r.conditions?.tagConditions},proposedLeaseId:this._leaseId,tracingOptions:n.tracingOptions})))}async changeLease(e,r={}){if(this._isContainer&&(r.conditions?.ifMatch&&r.conditions?.ifMatch!==Wi||r.conditions?.ifNoneMatch&&r.conditions?.ifNoneMatch!==Wi||r.conditions?.tagConditions))throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");return ee.withSpan("BlobLeaseClient-changeLease",r,async n=>{let s=ue(await this._containerOrBlobOperation.changeLease(this._leaseId,e,{abortSignal:r.abortSignal,modifiedAccessConditions:{...r.conditions,ifTags:r.conditions?.tagConditions},tracingOptions:n.tracingOptions}));return this._leaseId=e,s})}async releaseLease(e={}){if(this._isContainer&&(e.conditions?.ifMatch&&e.conditions?.ifMatch!==Wi||e.conditions?.ifNoneMatch&&e.conditions?.ifNoneMatch!==Wi||e.conditions?.tagConditions))throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");return ee.withSpan("BlobLeaseClient-releaseLease",e,async r=>ue(await this._containerOrBlobOperation.releaseLease(this._leaseId,{abortSignal:e.abortSignal,modifiedAccessConditions:{...e.conditions,ifTags:e.conditions?.tagConditions},tracingOptions:r.tracingOptions})))}async renewLease(e={}){if(this._isContainer&&(e.conditions?.ifMatch&&e.conditions?.ifMatch!==Wi||e.conditions?.ifNoneMatch&&e.conditions?.ifNoneMatch!==Wi||e.conditions?.tagConditions))throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default val
Line truncated
|
||||||
|
If you are using self-hosted runners, please make sure your runner has access to all GitHub endpoints: https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github`;super(r),this.code=e,this.name="NetworkError"}};Oh.isNetworkErrorCode=t=>t?["ECONNRESET","ENOTFOUND","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH"].includes(t):!1;var Ff=class extends Error{static{i(this,"UsageError")}constructor(){super(`Cache storage quota has been hit. Unable to upload any new cache entries.
|
||||||
|
More info on storage limits: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#calculating-minute-and-storage-spending`),this.name="UsageError"}};Ff.isUsageErrorMessage=t=>t?t.includes("insufficient usage"):!1;var XI=class extends Error{static{i(this,"RateLimitError")}constructor(e){super(e),this.name="RateLimitError"}};var Cft=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},PV=class{static{i(this,"UploadProgress")}constructor(e){this.contentLength=e,this.sentBytes=0,this.displayedComplete=!1,this.startTime=Date.now()}setSentBytes(e){this.sentBytes=e}getTransferredBytes(){return this.sentBytes}isDone(){return this.getTransferredBytes()===this.contentLength}display(){if(this.displayedComplete)return;let e=this.sentBytes,r=(100*(e/this.contentLength)).toFixed(1),n=Date.now()-this.startTime,s=(e/(1024*1024)/(n/1e3)).toFixed(1);ae(`Sent ${e} of ${this.contentLength} (${r}%), ${s} MBs/sec`),this.isDone()&&(this.displayedComplete=!0)}onProgress(){return e=>{this.setSentBytes(e.loadedBytes)}}startDisplayTimer(e=1e3){let r=i(()=>{this.display(),this.isDone()||(this.timeoutHandle=setTimeout(r,e))},"displayCallback");this.timeoutHandle=setTimeout(r,e)}stopDisplayTimer(){this.timeoutHandle&&(clearTimeout(this.timeoutHandle),this.timeoutHandle=void 0),this.display()}};function she(t,e,r){return Cft(this,void 0,void 0,function*(){var n;let s=new Kl(t),o=s.getBlockBlobClient(),a=new PV((n=r?.archiveSizeBytes)!==null&&n!==void 0?n:0),c={blockSize:r?.uploadChunkSize,concurrency:r?.uploadConcurrency,maxSingleShotSize:128*1024*1024,onProgress:a.onProgress()};try{a.startDisplayTimer(),T(`BlobClient: ${s.name}:${s.accountName}:${s.containerName}`);let l=yield o.uploadFile(e,c);if(l._response.status>=400)throw new ST(`uploadCacheArchiveSDK: upload failed with status code ${l._response.status}`);return l}catch(l){throw or(`uploadCacheArchiveSDK: internal error uploading cache archive: ${l.message}`),l}finally{a.stopDisplayTimer()}})}i(she,"uploadCacheArchiveSDK");var ihe=R(require("buffer"),1),Ic=R(require("fs"),1),ahe=R(require("stream"),1),che=R(require("util"),1);var xT=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})};function bT(t){return t?t>=200&&t<300:!1}i(bT,"isSuccessStatusCode");function Ift(t){return t?t>=500:!0}i(Ift,"isServerErrorStatusCode");function wft(t){return t?[mt.BadGateway,mt.ServiceUnavailable,mt.GatewayTimeout].includes(t):!1}i(wft,"isRetryableStatusCode");function Sft(t){return xT(this,void 0,void 0,function*(){return new Promise(e=>setTimeout(e,t))})}i(Sft,"sleep");function ohe(t,e,r){return xT(this,arguments,void 0,function*(n,s,o,a=JB,c=jB,l=void 0){let u="",d=1;for(;d<=a;){let p,f,m=!1;try{p=yield s()}catch(A){l&&(p=l(A)),m=!0,u=A.message}if(p&&(f=o(p),!Ift(f)))return p;if(f&&(m=wft(f),u=`Cache service responded with ${f}`),T(`${n} - Attempt ${d} of ${a} failed with error: ${u}`),!m){T(`${n} - Error is not retryable`);break}yield Sft(c),d++}throw Error(`${n} failed: ${u}`)})}i(ohe,"retry");function ZI(t,e){return xT(this,arguments,void 0,function*(r,n,s=JB,o=jB){return yield ohe(r,n,a=>a.statusCode,s,o,a=>{if(a instanceof Wa)return{statusCode:a.statusCode,result:null,headers:{},error:a}})})}i(ZI,"retryTypedResponse");function Mh(t,e){return xT(this,arguments,void 0,function*(r,n,s=JB,o=jB){return yield ohe(r,n,a=>a.message.statusCode,s,o)})}i(Mh,"retryHttpClientResponse");var ci=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})};function xft(t,e){return ci(this,void 0,void 0,function*(){yield che.promisify(ahe.pipeline)(t.message,e)})}i(xft,"pipeResponseToStream");var BT=class{static{i(this,"DownloadProgress")}constructor(e){this.contentLength=e,this.segmentIndex=0,this.segmentSize=0,this.segmentOffset=0,this.receivedBytes=0,this.displayedComplete=!1,this.startTime=Date.now()}nextSegment(e){this.segmentOffset=this.segmentOffset+this.segmentSize,this.segmentIndex=this.segmentIndex+1,this.segmentSize=e,this.receivedBytes=0,T(`Downloading segment at offset ${this.segmentOffset} with length ${this.segmentSize}...`)}setReceivedBytes(e){t
Line truncated
|
||||||
|
Other caches with similar key:`);for(let c of o?.artifactCaches||[])T(`Cache Key: ${c?.cacheKey}, Cache Version: ${c?.cacheVersion}, Cache Scope: ${c?.scope}, Cache Created: ${c?.creationTime}`)}}})}i(vft,"printCachesListForDiagnostics");function kV(t,e,r){return Ms(this,void 0,void 0,function*(){let n=new Ihe.URL(t),s=phe(r);n.hostname.endsWith(".blob.core.windows.net")?s.useAzureSdk?yield uhe(t,e,s):s.concurrentBlobDownloads?yield lhe(t,e,s):yield RT(t,e):yield RT(t,e)})}i(kV,"downloadCache");function She(t,e,r){return Ms(this,void 0,void 0,function*(){let n=DV(),s=ch(e,r?.compressionMethod,r?.enableCrossOsArchive),o={key:t,version:s,cacheSize:r?.cacheSize};return yield ZI("reserveCache",()=>Ms(this,void 0,void 0,function*(){return n.postJson(tw("caches"),o)}))})}i(She,"reserveCache");function Che(t,e){return`bytes ${t}-${e}/*`}i(Che,"getContentRange");function _ft(t,e,r,n,s){return Ms(this,void 0,void 0,function*(){T(`Uploading chunk of size ${s-n+1} bytes at offset ${n} with content range: ${Che(n,s)}`);let o={"Content-Type":"application/octet-stream","Content-Range":Che(n,s)},a=yield Mh(`uploadChunk (start: ${n}, end: ${s})`,()=>Ms(this,void 0,void 0,function*(){return t.sendStream("PATCH",e,r(),o)}));if(!bT(a.message.statusCode))throw new Error(`Cache service responded with ${a.message.statusCode} during upload chunk.`)})}i(_ft,"uploadChunk");function Qft(t,e,r,n){return Ms(this,void 0,void 0,function*(){let s=Va(r),o=tw(`caches/${e.toString()}`),a=Fh.openSync(r,"r"),c=vV(n),l=aG("uploadConcurrency",c.uploadConcurrency),u=aG("uploadChunkSize",c.uploadChunkSize),d=[...new Array(l).keys()];T("Awaiting all uploads");let p=0;try{yield Promise.all(d.map(()=>Ms(this,void 0,void 0,function*(){for(;p<s;){let f=Math.min(s-p,u),m=p,A=p+f-1;p+=u,yield _ft(t,o,()=>Fh.createReadStream(r,{fd:a,start:m,end:A,autoClose:!1}).on("error",h=>{throw new Error(`Cache upload failed because file read failed with ${h.message}`)}),m,A)}})))}finally{Fh.closeSync(a)}})}i(Qft,"uploadFile");function Dft(t,e,r){return Ms(this,void 0,void 0,function*(){let n={size:r};return yield ZI("commitCache",()=>Ms(this,void 0,void 0,function*(){return t.postJson(tw(`caches/${e.toString()}`),n)}))})}i(Dft,"commitCache");function LV(t,e,r,n){return Ms(this,void 0,void 0,function*(){if(vV(n).useAzureSdk){if(!r)throw new Error("Azure Storage SDK can only be used when a signed URL is provided.");yield she(r,e,n)}else{let o=DV();T("Upload cache"),yield Qft(o,t,e,n),T("Commiting cache");let a=Va(e);ae(`Cache Size: ~${Math.round(a/(1024*1024))} MB (${a} B)`);let c=yield Dft(o,t,a);if(!bT(c.statusCode))throw new Error(`Cache service responded with ${c.statusCode} during commit cache.`);ae("Cache saved successfully")}})}i(LV,"saveCache");var gge=R(uge(),1),Br=R(br(),1),xo=R(br(),1),Hf=R(br(),1),zf=R(br(),1),Vf=R(br(),1);var P4=R(br(),1),v4=R(br(),1),mge=R(br(),1),Age=R(br(),1),hge=R(br(),1);var R4=R(br(),1),N4=R(br(),1),dge=R(br(),1),pge=R(br(),1),fge=R(br(),1);var T4=class extends fge.MessageType{static{i(this,"CacheScope$Type")}constructor(){super("github.actions.results.entities.v1.CacheScope",[{no:1,name:"scope",kind:"scalar",T:9},{no:2,name:"permission",kind:"scalar",T:3}])}create(e){let r={scope:"",permission:"0"};return globalThis.Object.defineProperty(r,pge.MESSAGE_TYPE,{enumerable:!1,value:this}),e!==void 0&&(0,dge.reflectionMergePartial)(this,r,e),r}internalBinaryRead(e,r,n,s){let o=s??this.create(),a=e.pos+r;for(;e.pos<a;){let[c,l]=e.tag();switch(c){case 1:o.scope=e.string();break;case 2:o.permission=e.int64().toString();break;default:let u=n.readUnknownField;if(u==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${l}) for ${this.typeName}`);let d=e.skip(l);u!==!1&&(u===!0?N4.UnknownFieldHandler.onRead:u)(this.typeName,o,c,l,d)}}return o}internalBinaryWrite(e,r,n){e.scope!==""&&r.tag(1,R4.WireType.LengthDelimited).string(e.scope),e.permission!=="0"&&r.tag(2,R4.WireType.Varint).int64(e.permission);let s=n.writeUnknownFields;return s!==!1&&(s==!0?N4.UnknownFieldHandler.onWrite:s)(this.typeName,e,r),r}},mP=new T4;var _4=class extends hge.MessageType{static{i(this,"CacheMetadata$Type")}constructor(){super("github.actions.results.entities.v1.CacheMetadata",[{no:1,name:"repository_id",kind:"scalar",T:3},{no:2,name:"scope",kind:"message",repeat:1,T:i(()=>mP,"T")}])}create(e){let r={repositoryId:"0",scope:[]};return globalThis.Object.defineProperty(r,Age.MESSAGE_TYPE,{enumerable:!1,value:this}),e!==void 0&&(0,mge.reflectionMergePartial)(this,r,e),r}internalBinaryRead(e,r,n,s){let o=s??this.create(),a=e.pos+r;for(;e.pos<a;){let[c,l]=e.tag();switch(c){case 1:o.repositoryId=e.int64().toString();break;case 2:o.scope.push(mP.internalBinaryRead(e,e.uint32(),n));break;default:let u=n.readUnknownField;if(u==="throw")throw new globalThis.Error(`Unknown field ${c} (wire type ${l}) for ${this.typeName}`);let d=e.skip(l);u!==!1&&(u===!0?v4.UnknownFieldHandler.onRead:u)(this.typeName,o,c,l,d)}}return o}internalBinaryWrite(e,r,n){e.repositoryId!
Line truncated
|
||||||
|
`));let{commands:n}=yield Cge(r,"create");yield wge(n,t)})}i(J4,"createTar");var tg=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})},ta=class t extends Error{static{i(this,"ValidationError")}constructor(e){super(e),this.name="ValidationError",Object.setPrototypeOf(this,t.prototype)}},Wf=class t extends Error{static{i(this,"ReserveCacheError")}constructor(e){super(e),this.name="ReserveCacheError",Object.setPrototypeOf(this,t.prototype)}},j4="cache write denied:",yP=class t extends Wf{static{i(this,"CacheWriteDeniedError")}constructor(e){super(e),this.name="CacheWriteDeniedError",Object.setPrototypeOf(this,t.prototype)}},xge=KB,EP=class t extends Error{static{i(this,"CacheReadDeniedError")}constructor(e){super(e),this.name="CacheReadDeniedError",Object.setPrototypeOf(this,t.prototype)}},CP=class t extends Error{static{i(this,"FinalizeCacheError")}constructor(e){super(e),this.name="FinalizeCacheError",Object.setPrototypeOf(this,t.prototype)}};function bge(t){if(!t||t.length===0)throw new ta("Path Validation Error: At least one directory or file path is required")}i(bge,"checkPaths");function K4(t){if(t.length>512)throw new ta(`Key Validation Error: ${t} cannot be larger than 512 characters.`);if(!/^[^,]*$/.test(t))throw new ta(`Key Validation Error: ${t} cannot contain commas.`)}i(K4,"checkKey");function X4(){return ew()==="v2"?!!process.env.ACTIONS_RESULTS_URL:!!process.env.ACTIONS_CACHE_URL}i(X4,"isFeatureAvailable");function Bge(t,e,r,n){return tg(this,arguments,void 0,function*(s,o,a,c,l=!1){let u=ew();T(`Cache service version: ${u}`),bge(s);let d=QV();if(!mhe(d)){ae(`Cache restore skipped: the effective cache-mode '${d}' does not permit reads.`),T(`Skipped restore for paths [${s.join(", ")}] with primary key '${o}'.`);return}return u==="v2"?yield JAt(s,o,a,c,l):yield YAt(s,o,a,c,l)})}i(Bge,"restoreCache");function YAt(t,e,r,n){return tg(this,arguments,void 0,function*(s,o,a,c,l=!1){var u;a=a||[];let d=[o,...a];if(T("Resolved Keys:"),T(JSON.stringify(d)),d.length>10)throw new ta("Key Validation Error: Keys are limited to a maximum of 10.");for(let m of d)K4(m);let p=yield ZC(),f="";try{let m;try{m=yield whe(d,s,{compressionMethod:p,enableCrossOsArchive:l})}catch(h){let E=(u=h?.message)!==null&&u!==void 0?u:"";throw E.includes(xge)?new EP(E):h}if(!m?.archiveLocation)return;if(c?.lookupOnly)return ae("Lookup only - skipping download"),m.cacheKey;f=gw.join(yield pf(),ed(p)),T(`Archive Path: ${f}`),yield kV(m.archiveLocation,f,c),sf()&&(yield hw(f,p));let A=Va(f);return ae(`Cache Size: ~${Math.round(A/(1024*1024))} MB (${A} B)`),yield Y4(f,p),ae("Cache restored successfully"),m.cacheKey}catch(m){let A=m;if(A.name===ta.name)throw m;A instanceof Wa&&typeof A.statusCode=="number"&&A.statusCode>=500?XA(`Failed to restore: ${m.message}`):or(`Failed to restore: ${m.message}`)}finally{try{yield XC(f)}catch(m){T(`Failed to delete archive: ${m}`)}}})}i(YAt,"restoreCacheV1");function JAt(t,e,r,n){return tg(this,arguments,void 0,function*(s,o,a,c,l=!1){var u;c=Object.assign(Object.assign({},c),{useAzureSdk:!0}),a=a||[];let d=[o,...a];if(T("Resolved Keys:"),T(JSON.stringify(d)),d.length>10)throw new ta("Key Validation Error: Keys are limited to a maximum of 10.");for(let f of d)K4(f);let p="";try{let f=V4(),m=yield ZC(),A={key:o,restoreKeys:a,version:ch(s,m,l)},h;try{h=yield f.GetCacheEntryDownloadURL(A)}catch(I){let x=(u=I?.message)!==null&&u!==void 0?u:"";throw x.includes(xge)?new EP(x):I}if(!h.ok){T(`Cache not found for version ${A.version} of keys: ${d.join(", ")}`);return}if(A.key!==h.matchedKey?ae(`Cache hit for restore-key: ${h.matchedKey}`):ae(`Cache hit for: ${h.matchedKey}`),c?.lookupOnly)return ae("Lookup only - skipping download"),h.matchedKey;p=gw.join(yield pf(),ed(m)),T(`Archive path: ${p}`),T(`Starting download of archive to: ${p}`),yield kV(h.signedDownloadUrl,p,c);let y=Va(p);return ae(`Cache Size: ~${Math.round(y/(1024*1024))} MB (${y} B)`),sf()&&(yield hw(p,m)),yield Y4(p,m),ae("Cache restored successfully"),h.matchedKey}catch(f){let m=f;if(m.name===ta.name)throw f;m instanceof Wa&&typeof m.statusCode=="number"&&m.statusCode>=500?XA(`Failed to restore: ${f.message}`):or(`Failed to restore: ${f.message}`)}finally{try{p&&(yield XC(p))}catch(f){T(`Failed to delete archive: ${f}`)}}})}i(JAt,"restoreCacheV2");function Z4(t,e,r){return tg(this,arguments,void 0,function*(n,s,o,a=!1){let c=ew();T(`Cache service version: ${c}`),bge(n),K4(s);let l=QV();return Ahe(l)?c==="v2"?yield KAt(n,s,o,a):yield jAt(n,s,o,a):(ae(`Cache save skipped: the effective cache-mode '${l}' does not permit writes.`),T(`Skipped save for paths [${n.join(", ")}] with key '${s}'.`),-1)})}i(Z4,"saveCache");function jAt(t,e,r){return
Line truncated
|
||||||
|
${l}`}let p=rW(t.buffer,s[c],o[c],t.position,d);l+=`${" ".repeat(r.indent)}${nW((t.line+1).toString(),u)} | ${p.str}
|
||||||
|
`,l+=`${"-".repeat(r.indent+u+3+p.pos)}^
|
||||||
|
`;for(let f=1;f<=r.linesAfter&&!(c+f>=o.length);f++){let m=rW(t.buffer,s[c+f],o[c+f],t.position-(s[c]-s[c+f]),d);l+=`${" ".repeat(r.indent)}${nW((t.line+f+1).toString(),u)} | ${m.str}
|
||||||
|
`}return l.replace(/\n$/,"")}i(agt,"makeSnippet");function Qge(t,e){let r="";return t.mark?(t.mark.name&&(r+=`in "${t.mark.name}" `),r+=`(${t.mark.line+1}:${t.mark.column+1})`,!e&&t.mark.snippet&&(r+=`
|
||||||
|
|
||||||
|
${t.mark.snippet}`),`${t.reason} ${r}`):t.reason}i(Qge,"formatError");var Yf=class Wge extends Error{static{i(this,"YAMLException")}reason;mark;constructor(e,r){super(),this.name="YAMLException",this.reason=e,this.mark=r,this.message=Qge(this,!1),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}toString(e){return`${this.name}: ${Qge(this,e)}`}static throwAt(e,r,n,s=""){let o=0,a=0;for(let l=0;l<r;l++){let u=e.charCodeAt(l);u===10?(o++,a=l+1):u===13&&(o++,e.charCodeAt(l+1)===10&&l++,a=l+1)}let c={name:s,buffer:e,position:r,line:o,column:r-a};throw c.snippet=agt(c),new Wge(n,c)}},Zt={DOCUMENT:1,SEQUENCE:2,MAPPING:3,SCALAR:4,ALIAS:5,POP:6},Ke={PLAIN:1,SINGLE_QUOTED:2,DOUBLE_QUOTED:3,LITERAL_BLOCK:4,FOLDED_BLOCK:5},yd={BLOCK:1,FLOW:2},bo={CLIP:1,STRIP:2,KEEP:3},cgt=-1;function Dge(t){switch(t){case 48:return"\0";case 97:return"\x07";case 98:return"\b";case 116:return" ";case 9:return" ";case 110:return`
|
||||||
|
`;case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"\x1B";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"\x85";case 95:return"\xA0";case 76:return"\u2028";case 80:return"\u2029";default:return""}}i(Dge,"simpleEscapeSequence");var Yge=new Array(256),Jge=new Array(256);for(let t=0;t<256;t++)Yge[t]=Dge(t)?1:0,Jge[t]=Dge(t);function lgt(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}i(lgt,"charFromCodepoint");function ugt(t){return t>=48&&t<=57?t-48:(t|32)-97+10}i(ugt,"fromHexCode$1");function dgt(t){return t===120?2:t===117?4:8}i(dgt,"escapedHexLen$1");function IP(t,e,r){let n=0;for(;e<r;){let s=t.charCodeAt(e);if(s===10)n++,e++;else if(s===13)n++,e++,t.charCodeAt(e)===10&&e++;else if(s===32||s===9)e++;else break}return{position:e,breaks:n}}i(IP,"skipFoldedBreaks");function hW(t){return t===1?" ":`
|
||||||
|
`.repeat(t-1)}i(hW,"foldedBreaks");function pgt(t,e,r){let n="",s=e,o=e,a=e;for(;s<r;){let c=t.charCodeAt(s);if(c===10||c===13){n+=t.slice(o,a);let l=IP(t,s,r);n+=hW(l.breaks),s=o=a=l.position}else s++,c!==32&&c!==9&&(a=s)}return n+t.slice(o,a)}i(pgt,"getPlainValue");function fgt(t,e,r){let n="",s=e,o=e,a=e;for(;s<r;){let c=t.charCodeAt(s);if(c===39)n+=t.slice(o,s)+"'",s+=2,o=a=s;else if(c===10||c===13){n+=t.slice(o,a);let l=IP(t,s,r);n+=hW(l.breaks),s=o=a=l.position}else s++,c!==32&&c!==9&&(a=s)}return n+t.slice(o,r)}i(fgt,"getSingleQuotedValue");function mgt(t,e,r){let n="",s=e,o=e,a=e;for(;s<r;){let c=t.charCodeAt(s);if(c===92){n+=t.slice(o,s),s++;let l=t.charCodeAt(s);if(l===10||l===13)s=IP(t,s,r).position;else if(l<256&&Yge[l])n+=Jge[l],s++;else{let u=dgt(l),d=0;for(;u>0;u--){s++;let p=ugt(t.charCodeAt(s));d=(d<<4)+p}n+=lgt(d),s++}o=a=s}else if(c===10||c===13){n+=t.slice(o,a);let l=IP(t,s,r);n+=hW(l.breaks),s=o=a=l.position}else s++,c!==32&&c!==9&&(a=s)}return n+t.slice(o,r)}i(mgt,"getDoubleQuotedValue");function kge(t,e,r,n,s,o){let a=n<0?0:n,c=t.slice(e,r).replace(/\r\n?/g,`
|
||||||
|
`),l=c===""?[]:(c.endsWith(`
|
||||||
|
`)?c.slice(0,-1):c).split(`
|
||||||
|
`),u="",d=!1,p=0,f=!1;for(let m of l){let A=0;for(;A<a&&m.charCodeAt(A)===32;)A++;if(n<0||A>=m.length){p++;continue}let h=m.slice(a),E=h.charCodeAt(0);o?E===32||E===9?(f=!0,u+=`
|
||||||
|
`.repeat(d?1+p:p)):f?(f=!1,u+=`
|
||||||
|
`.repeat(p+1)):p===0?d&&(u+=" "):u+=`
|
||||||
|
`.repeat(p):u+=`
|
||||||
|
`.repeat(d?1+p:p),u+=h,d=!0,p=0}return s===bo.KEEP?u+=`
|
||||||
|
`.repeat(d?1+p:p):s!==bo.STRIP&&d&&(u+=`
|
||||||
|
`),u}i(kge,"getBlockValue");function Agt(t,e){if(e.valueStart===cgt)return"";let{valueStart:r,valueEnd:n}=e;if(e.fast)return t.slice(r,n);switch(e.style){case Ke.SINGLE_QUOTED:return fgt(t,r,n);case Ke.DOUBLE_QUOTED:return mgt(t,r,n);case Ke.LITERAL_BLOCK:return kge(t,r,n,e.indent,e.chomping,!1);case Ke.FOLDED_BLOCK:return kge(t,r,n,e.indent,e.chomping,!0);default:return pgt(t,r,n)}}i(Agt,"getScalarValue");var hgt=Object.assign(Object.create(null),{"!":"!","!!":"tag:yaml.org,2002:"}),ggt="-#;/?:@&=+$_.~*'()",UCr=ggt+"!,[]";function sW(t){let e="",r=0;for(;r<t.length;){if(t.charCodeAt(r)!==37){e+=t[r++];continue}let n=parseInt(t.slice(r+1,r+3),16);if(r+=3,n>=192){let s=n<224?1:n<240?2:3;for(n&=(1<<6-s)-1;s-- >0;)n=n<<6|parseInt(t.slice(r+1,r+3),16)&63,r+=3}n<65536?e+=String.fromCharCode(n):(n-=65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023))}return e}i(sW,"tagPercentDecode");function jge(t,e){if(t.startsWith("!<")&&t.endsWith(">"))return sW(t.slice(2,-1));let r=t.indexOf("!",1),n=r===-1?"!":t.slice(0,r+1);return sW(e?.[n]??hgt[n]??n)+sW(t.slice(n.length))}i(jge,"tagNameFull");var ng=-1,ygt="tag:yaml.org,2002:merge",gW={filename:"",schema:ngt,json:!1,maxTotalMergeKeys:1e4,maxAliases:-1};function Egt(t){return"tagStart"in t&&t.tagStart!==ng?t.tagStart:"anchorStart"in t&&t.anchorStart!==ng?t.anchorStart:"valueStart"in t&&t.valueStart!==ng?t.valueStart:"start"in t?t.start:0}i(Egt,"eventPosition$1");function wn(t,e){Yf.throwAt(t.source,t.position,e,t.filename)}i(wn,"throwError$1");function Kge(t,e,r,n){try{return r.finalize(n)}catch(s){if(s instanceof Yf)throw s;Yf.throwAt(t.source,e,s instanceof Error?s.message:String(s),t.filename)}}i(Kge,"finalizeCollection");function Cgt(t,e){let r=Agt(t.source,e),n=e.tagStart===ng?"":t.source.slice(e.tagStart,e.tagEnd),s=t.schema.defaultScalarTag;if(n!==""){if(n==="!")return{value:r,tag:s};let o=jge(n,t.tagHandlers),a=t.schema.lookupScalarTag(o);if(a){let l=a.resolve(r,!0,o);return l===at&&wn(t,`cannot resolve a node with !<${o}> explicit tag`),{value:l,tag:a}}let c=t.schema.lookupMappingTag(o)??t.schema.lookupSequenceTag(o);if(c){r!==""&&wn(t,`cannot resolve a node with !<${o}> explicit tag`);let l=c.create(o);return{value:c.carrierIsResult?l:Kge(t,t.position,c,l),tag:c}}wn(t,`unknown scalar tag !<${o}>`)}return e.style===Ke.PLAIN?t.schema.resolveImplicitScalarTag(r):{value:s.resolve(r,!1,s.tagName),tag:s}}i(Cgt,"constructScalar");function Lge(t,e,r){let n=e.tagStart===ng?"":t.source.slice(e.tagStart,e.tagEnd);return n===""||n==="!"?r:jge(n,t.tagHandlers)}i(Lge,"collectionTagName");function Xge(t){return t.nodeKind==="mapping"}i(Xge,"isMappingTag");function Oge(t){t.totalMergeKeys++,t.maxTotalMergeKeys!==-1&&t.totalMergeKeys>t.maxTotalMergeKeys&&wn(t,`merge keys exceeded maxTotalMergeKeys (${t.maxTotalMergeKeys})`)}i(Oge,"chargeMergeWork");function Mge(t,e,r,n){Oge(t);for(let s of n.keys(r)){if(Oge(t),e.tag.has(e.value,s))continue;let o=e.tag.addPair(e.value,s,n.get(r,s));o&&wn(t,o),e.overridable??=new Set,e.overridable.add(s)}}i(Mge,"mergeKeys");function Igt(t,e,r,n){if(t.position=e.keyPosition,Xge(n))Mge(t,e,r,n);else if(n.nodeKind==="sequence"&&Array.isArray(r)){r.length>100&&wn(t,"abnormal merge sequence size");for(let s of r){let o=t.nodeTags.get(s);o||wn(t,"cannot merge mappings; the provided source object is unacceptable"),Mge(t,e,s,o)}}else wn(t,"cannot merge mappings; the provided source object is unacceptable")}i(Igt,"mergeSource");function wgt(t,e,r,n,s){if(t.position=e.keyPosition,e.keyIsMerge){Igt(t,e,n,s);return}!t.json&&e.tag.has(e.value,r)&&!e.overridable?.has(r)&&wn(t,"duplicated mapping key");let o=e.tag.addPair(e.value,r,n);o&&wn(t,o),e.overridable?.delete(r)}i(wgt,"addMappingValue");function oW(t,e,r){let n=t.frames[t.frames.length-1];if(n.kind==="document")n.value=e,n.hasValue=!0;else if(n.kind==="sequence"){Xge(r)&&t.nodeTags.set(e,r);let s=n.tag.addItem(n.value,e,n.index++);s&&wn(t,s)}else if(n.hasKey){let s=n.key;n.key=void 0,n.hasKey=!1,wgt(t,n,s,e,r)}else n.key=e,n.keyPosition=t.position,n.hasKey=!0,n.keyIsMerge=r.tagName===ygt}i(oW,"addValue");function iW(t,e,r,n,s){if(e.anchorStart!==ng){let o={value:r,tag:n,isValueFinal:s};return t.anchors.set(t.source.slice(e.anchorStart,e.anchorEnd),o),o}return null}i(iW,"storeAnchor");function Sgt(t,e){let r={...gW,...e,events:t,documents:[],eventIndex:0,position:0,frames:[],anchors:new Map,nodeTags:new Map,tagHandlers:Object.create(null),totalMergeKeys:0,aliasCount:0};for(;r.eventIndex<r.events.length;){let n=r.events[r.eventIndex++];switch(r.position=Egt(n),n.type){case Zt.DOCUMENT:r.anchors=new Map,r.nodeTags=new Map,r.aliasCount=0,r.tagHandlers=Object.create(null);for(let s of n.directives)s.kind==="tag"&&(r.tagHandlers[s.handle]=s.prefix);r.frames.push({kind:"document",position:r.position,value:void 0,hasValue:!1});break;case Zt.SCALAR:{let{value:s,tag:o}=Cgt(r,n);iW(r,n,s,o,!0),oW(r,s,o);break}case Zt.SEQUENCE:{let s=Lge(r,n,"tag:yaml.org,2002:seq"),o=r.schema.lookupSequenceTag(s);o||wn(r,`unknoLine truncated
|
||||||
|
`)?Ke.DOUBLE_QUOTED:lye(t)))}i(Xgt,"applyForceQuotesOption");function Zgt(t){if(t.style!==Ke.PLAIN||t.isKey)return;let e=t.node.value,r=e.indexOf(`
|
||||||
|
`)!==-1;if(!RP(t.allowedStylesMask,Ke.LITERAL_BLOCK)){r&&(t.style=Ke.DOUBLE_QUOTED);return}let n=t.presenterOptions.lineWidth;if(n===-1){r&&(t.style=Ke.LITERAL_BLOCK);return}let s=Math.max(Math.min(n,40),n-t.shiftOfContent),o=0,a=!1;for(;o<=e.length;){let c=e.length,l=e.indexOf(`
|
||||||
|
`,o);l!==-1&&(c=l);let u=e.slice(o,c);if(u.length>s&&u[0]!==" "&&/ [^ \t]/.test(u)&&(a=!0),l===-1)break;o=l+1}a?t.style=Ke.FOLDED_BLOCK:r&&(t.style=Ke.LITERAL_BLOCK)}i(Zgt,"tryLongOrMultilineAsBlock");function eyt(t){t.style===Ke.PLAIN&&!RP(t.allowedStylesMask,Ke.PLAIN)&&(t.style=lye(t))}i(eyt,"quoteInvalidPlain");function tyt(t){RP(t.allowedStylesMask,t.style)||(t.style=Ke.DOUBLE_QUOTED)}i(tyt,"fallbackToDoubleQuoted");var ryt="[\\x09\\x0A\\x0D\\x20-\\x7E\\x85\\xA0-\\uD7FF\\uE000-\\uFFFD\\u{10000}-\\u{10FFFF}]",nyt="[\\n\\r]",syt="\\uFEFF",CW="[ \\t]",uye=`(?:(?!(?:${nyt}|${syt}))${ryt})`,NP=`(?:(?!${CW})${uye})`,dye="[\\x09\\x20-\\uD7FF\\uE000-\\uFFFF\\u{10000}-\\u{10FFFF}]",pye="[-?:,\\[\\]{}#&*!|>'\"%@`]",oyt="[,\\[\\]{}]",pW=NP,fW=`(?:(?!${oyt})${NP})`,iyt=`(?:(?:(?!${pye})${NP})|[?:-](?=${pW}))`,ayt=`(?:(?:(?!${pye})${NP})|[?:-](?=${fW}))`,fye=`(?:(?:(?![:#])${pW})|:(?=${pW}))#*`,mye=`(?:(?:(?![:#])${fW})|:(?=${fW}))#*`,Aye=`(?:${CW}*${fye})*`,hye=`(?:${CW}*${mye})*`,gye=`${iyt}#*${Aye}`,yye=`${ayt}#*${hye}`,cyt=gye,lyt=yye,uyt=`\\n+${fye}${Aye}`,dyt=`\\n+${mye}${hye}`,pyt=`${gye}(?:${uyt})*`,fyt=`${yye}(?:${dyt})*`,qCr=new RegExp(`^(?:${pyt})$`,"u"),GCr=new RegExp(`^(?:${fyt})$`,"u"),$Cr=new RegExp(`^(?:${cyt})$`,"u"),HCr=new RegExp(`^(?:${lyt})$`,"u"),zCr=new RegExp(`^(?:${dye})*$`,"u"),VCr=new RegExp(`^(?:${dye}|\\n)*$`,"u"),WCr=new RegExp(`^(?:${uye}|\\n)*$`,"u");var myt={indent:2,seqNoIndent:!1,seqInlineFirst:!0,lineWidth:80,flowBracketPadding:!1,flowSkipCommaSpace:!1,flowSkipColonSpace:!1,quoteFlowKeys:!1,quoteStyle:"single",forceQuotes:!1,scalarStyleRules:Object.keys($ge).map(t=>Reflect.get($ge,t)),tagBeforeAnchor:!1};var YCr={...myt,schema:ogt,skipInvalid:!1,noRefs:!1,flowLevel:-1,sortKeys:!1,transform:i(()=>{},"transform")};var JCr=Zt.DOCUMENT,jCr=Zt.SEQUENCE,KCr=Zt.MAPPING,XCr=Zt.SCALAR,ZCr=Zt.ALIAS,eIr=Zt.POP,tIr=Ke.PLAIN,rIr=Ke.SINGLE_QUOTED,nIr=Ke.DOUBLE_QUOTED,sIr=Ke.LITERAL_BLOCK,oIr=Ke.FOLDED_BLOCK,iIr=yd.BLOCK,aIr=yd.FLOW,cIr=bo.CLIP,lIr=bo.STRIP,uIr=bo.KEEP;var Ei=R(require("fs"),1),$s=R(require("path"),1),qSe=require("util");var GSe=R(lCe(),1);var qP=class t{static{i(this,"Git")}static protoRegexp=new RegExp("^[a-zA-Z0-9]+://");static supportedProtos={http:{},https:{},ssh:{},git:{}};static parseURL(e){let r=e.match(t.protoRegexp);if(r&&r.length>0){let n=r[0].toLowerCase();if(n=n.slice(0,n.lastIndexOf("://")),!(n in t.supportedProtos))throw new Error(`Invalid protocol: ${n}`);return t.fromURL(new URL(e))}throw new Error("Unknown protocol")}static fromURL(e){let r=new URL(e.toString());r.hash="";let n;return(e.username||e.password)&&(n={username:e.username,password:e.password,passwordSet:e.password!==""}),{scheme:e.protocol.slice(0,-1),user:n,host:`${e.hostname}${e.port?":"+e.port:""}`,path:e.pathname,fragment:t.splitGitFragment(e.hash),remote:r.toString()}}static splitGitFragment(e){if(e==="")return;let[r,n]=e.slice(1).split(":");return{ref:r,subdir:n}}static parseRef(e){let r={},n;if(e.startsWith("./")||e.startsWith("../"))throw new Error("Invalid argument");if(e.startsWith("github.com/"))r.indistinguishableFromLocal=!0,n=t.fromURL(new URL("https://"+e));else if(n=t.parseURL(e),["http","git"].includes(n.scheme)&&(r.unencryptedTCP=!0),["http","https"].includes(n.scheme)&&!n.path.endsWith(".git"))throw new Error("Invalid argument");r.remote=n.remote,r.indistinguishableFromLocal&&(r.remote=r.remote.split("://")[1]),n.fragment&&(r.commit=n.fragment.ref,r.subDir=n.fragment.subdir);let s=r.remote.split("/");return r.shortName=s[s.length-1].replace(".git",""),r}};var zY=R(require("fs"),1),Fwe=R(require("os"),1),Lw=R(require("path"),1),Uwe=require("util"),qwe=R(hCe(),1);var VW=R(require("fs"),1),kCe=R(require("os"),1),LCe=R(require("path"),1),OCe=R(DCe(),1);var HP=class t{static{i(this,"Context")}static _tmpDir=VW.default.mkdtempSync(LCe.default.join(t.ensureDirExists(process.env.RUNNER_TEMP||kCe.default.tmpdir()),"docker-actions-toolkit-"));static ensureDirExists(e){return VW.default.mkdirSync(e,{recursive:!0}),e}static tmpDir(){return t._tmpDir}static tmpName(e){return OCe.tmpNameSync(e)}};var tu=class{static{i(this,"Exec")}static async exec(e,r,n){return T(`Exec.exec: ${e} ${r?.join(" ")}`),zu(e,r,n)}static async getExecOutput(e,r,n){return T(`Exec.getExecOutput: ${e} ${r?.join(" ")}`),xC(e,r,n)}};var HY=R(require("crypto"),1),Owe=R(require("fs"),1),kw=R(require("path"),1),Mwe=R(vwe(),1);var Xe=class t extends Error{static{i(this,"CsvError")}constructor(e,r,n,...s){Array.isArray(r)&&(r=r.join(" ").trim()),super(r),Error.captureStackTrace!==void 0&&Error.captureStackTrace(this,t),this.code=e;for(let o of s)for(let a in o){let c=o[a];this[a]=Buffer.isBuffer(c)?c.toString(n.encoding):c==null?c:JSON.parse(JSON.stringify(c))}}};var Dw=i(function(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)},"is_object");var Tv=i(function(t){let e=[];for(let r=0,n=t.length;r<n;r++){let s=t[r];if(s==null||s===!1)e[r]={disabled:!0};else if(typeof s=="string"||typeof s=="number")e[r]={name:`${s}`};e
Line truncated
|
||||||
|
`,a).length:p,u?(c===null?0:c.length)+l.length:0,u?l.length+p:0);return f<m},"__needMoreData"),parse:i(function(n,s,o,a){let{bom:c,comment_no_infix:l,delimiter_auto:u,encoding:d,from_line:p,ltrim:f,max_record_size:m,raw:A,relax_quotes:h,rtrim:E,skip_empty_lines:y,to:I,to_line:x}=this.options,{comment:b,escape:N,quote:v,record_delimiter:_}=this.options,{bomSkipped:J,delimiterDiscovered:ve,delimiterBufPrevious:Qe,rawBuffer:Fe,escapeIsQuote:fe}=this.state;if(!ve&&u){let Ct;if(Qe===void 0?Ct=n:Qe!==void 0&&n===void 0?Ct=Qe:Ct=Buffer.concat([Qe,n]),n=void 0,s||Ct.length>u.size)this.options.delimiter=[Buffer.from(Dwe(Ct,this.options.delimiter_auto))],this.state.previousBuf=Ct,this.state.delimiterBufPrevious=void 0,this.state.delimiterDiscovered=!0;else{this.state.delimiterBufPrevious=Ct;return}}let{previousBuf:He}=this.state,D;if(He===void 0)if(n===void 0){a();return}else D=n;else He!==void 0&&n===void 0?D=He:D=Buffer.concat([He,n]);if(J===!1)if(c===!1)this.state.bomSkipped=!0;else if(D.length<3){if(s===!1){this.state.previousBuf=D;return}}else{for(let Ct in Tg)if(Tg[Ct].compare(D,0,Tg[Ct].length)===0){let Su=Tg[Ct].length;this.state.bufBytesStart+=Su,D=D.slice(Su);let lb=Ng({...this.original_options,encoding:Ct});for(let Or in lb)this.options[Or]=lb[Or];({comment:b,escape:N,quote:v}=this.options);break}this.state.bomSkipped=!0}let et=D.length,re;for(re=0;re<et&&!this.__needMoreData(re,et,s);re++){if(this.state.wasRowDelimiter===!0&&(this.info.lines++,this.state.wasRowDelimiter=!1),x!==-1&&this.info.lines>x){this.state.stop=!0,a();return}this.state.quoting===!1&&_.length===0&&this.__autoDiscoverRecordDelimiter(D,re)&&(_=this.options.record_delimiter);let Ct=D[re];if(A===!0&&Fe.append(Ct),(Ct===zxt||Ct===Vxt)&&this.state.wasRowDelimiter===!1&&(this.state.wasRowDelimiter=!0),this.state.escaping===!0)this.state.escaping=!1;else{if(N!==null&&this.state.quoting===!0&&this.__isEscape(D,re,Ct)&&re+N.length<et)if(fe){if(this.__isQuote(D,re+N.length)){this.state.escaping=!0,re+=N.length-1;continue}}else{this.state.escaping=!0,re+=N.length-1;continue}if(this.state.commenting===!1&&this.__isQuote(D,re))if(this.state.quoting===!0){let Or=D[re+v.length],Sp=E&&this.__isCharTrimable(D,re+v.length),Il=b!==null&&this.__compareBytes(b,D,re+v.length,Or),xp=this.__isDelimiter(D,re+v.length,Or),ub=_.length===0?this.__autoDiscoverRecordDelimiter(D,re+v.length):this.__isRecordDelimiter(Or,D,re+v.length);if(N!==null&&this.__isEscape(D,re,Ct)&&this.__isQuote(D,re+N.length))re+=N.length-1;else if(!Or||xp||ub||Il||Sp){this.state.quoting=!1,this.state.wasQuoting=!0,re+=v.length-1;continue}else if(h===!1){let oX=this.__error(new Xe("CSV_INVALID_CLOSING_QUOTE",["Invalid Closing Quote:",`got "${String.fromCharCode(Or)}"`,`at line ${this.info.lines}`,"instead of delimiter, record delimiter, trimable character","(if activated) or comment"],this.options,this.__infoField()));if(oX!==void 0)return oX}else this.state.quoting=!1,this.state.wasQuoting=!0,this.state.field.prepend(v),re+=v.length-1}else if(this.state.field.length!==0){if(h===!1){let Or=this.__infoField(),Sp=Object.keys(Tg).map(xp=>Tg[xp].equals(this.state.field.toString())?xp:!1).filter(Boolean)[0],Il=this.__error(new Xe("INVALID_OPENING_QUOTE",["Invalid Opening Quote:",`a quote is found on field ${JSON.stringify(Or.column)} at line ${Or.lines}, value is ${JSON.stringify(this.state.field.toString(d))}`,Sp?`(${Sp} bom)`:void 0],this.options,Or,{field:this.state.field}));if(Il!==void 0)return Il}}else{this.state.quoting=!0,re+=v.length-1;continue}if(this.state.quoting===!1){let Or=this.__isRecordDelimiter(Ct,D,re);if(Or!==0){if(this.state.commenting&&this.state.wasQuoting===!1&&this.state.record.length===0&&this.state.field.length===0)this.info.comment_lines++;else{if(this.state.enabled===!1&&this.info.lines+(this.state.wasRowDelimiter===!0?1:0)>=p){this.state.enabled=!0,this.__resetField(),this.__resetRecord(),re+=Or-1;continue}if(y===!0&&this.state.wasQuoting===!1&&this.state.record.length===0&&this.state.field.length===0){this.info.empty_lines++,re+=Or-1;continue}this.info.bytes=this.state.bufBytesStart+re;let xp=this.__onField();if(xp!==void 0)return xp;this.info.bytes=this.state.bufBytesStart+re+Or;let ub=this.__onRecord(o);if(ub!==void 0)return ub;if(I!==-1&&this.info.records>=I){this.state.stop=!0,a();return}}this.state.commenting=!1,re+=Or-1;continue}if(this.state.commenting)continue;if(b!==null&&(l===!1||this.state.record.length===0&&this.state.field.length===0)&&this.__compareBytes(b,D,re,Ct)!==0){this.state.commenting=!0;continue}let Sp=this.__isDelimiter(D,re,Ct);if(Sp!==0){this.info.bytes=this.state.bufBytesStart+re;let Il=this.__onField();if(Il!==void 0)return Il;re+=Sp-1;continue}}}if(this.state.commenting===!1&&m!==0&&this.state.record_length+this.state.field.length>m)return this.__error(new Xe("CSV_MAX_RECORD_SIZE",["Max Record Size:","record exceed the maximum number of tolerated bytes",`of ${m}`,`at line ${this.info.lines}`],this.options,this.__infoField()));let Su=f==
Line truncated
|
||||||
|
`,o),Buffer.from(`
|
||||||
|
`,o),Buffer.from("\r",o)];e:for(let c=0;c<a.length;c++){let l=a[c].length;for(let u=0;u<l;u++)if(a[c][u]!==n[s+u])continue e;return this.options.record_delimiter.push(a[c]),this.state.recordDelimiterMaxLength=a[c].length,a[c].length}return 0},"__autoDiscoverRecordDelimiter"),__error:i(function(n){let{encoding:s,raw:o,skip_records_with_error:a}=this.options,c=typeof n=="string"?new Error(n):n;if(a){if(this.state.recordHasError=!0,this.options.on_skip!==void 0)try{this.options.on_skip(c,o?this.state.rawBuffer.toString(s):void 0)}catch(l){return l}return}else return c},"__error"),__infoDataSet:i(function(){return{...this.info,columns:this.options.columns}},"__infoDataSet"),__infoRecord:i(function(){let{columns:n,raw:s,encoding:o}=this.options;return{...this.__infoDataSet(),bytes_records:this.info.bytes,error:this.state.error,header:n===!0,index:this.state.record.length,raw:s?this.state.rawBuffer.toString(o):void 0}},"__infoRecord"),__infoField:i(function(){let{columns:n}=this.options,s=Array.isArray(n),o=this.info.bytes_records;return{...this.__infoRecord(),bytes_records:o,column:s===!0?n.length>this.state.record.length?n[this.state.record.length].name:null:this.state.record.length,quoting:this.state.wasQuoting}},"__infoField")}},"transform");var Lwe=i(function(t,e={}){typeof t=="string"&&(t=Buffer.from(t));let r=e&&e.objname?Object.create(null):[],n=Pv(e),s=i(c=>{n.options.objname===void 0?r.push(c):r[c[0]]=c[1]},"push"),o=i(()=>{},"close"),a=n.parse(t,!0,s,o);if(a!==void 0)throw a;return r},"parse");var Sd=class t{static{i(this,"Util")}static getInputList(e,r){return this.getList($i(e,{trimWhitespace:r?.trimWhitespace!==!1}),r)}static getList(e,r){let n=[];if(e=="")return n;let s=Lwe(e,{columns:!1,relaxQuotes:!0,comment:r?.comment,comment_no_infix:r?.commentNoInfix,relaxColumnCount:!0,skipEmptyLines:!0,quote:r?.quote});for(let o of s)o.length==1?r?.ignoreComma?n.push(o[0]):n.push(...o[0].split(",")):r?.ignoreComma?n.push(o.join(",")):n.push(...o);return n.filter(o=>o).map(o=>r?.trimWhitespace===!1?o:o.trim())}static getInputNumber(e){let r=$i(e);if(r)return parseInt(r)}static async asyncForEach(e,r){for(let n=0;n<e.length;n++)await r(e[n],n,e)}static isValidURL(e){let r;try{r=new URL(e)}catch{return!1}return r.protocol==="http:"||r.protocol==="https:"}static isValidRef(e){if(t.isValidURL(e))return!0;for(let r of["git://","github.com/","git@"])if(e.startsWith(r))return!0;return!1}static async powershellCommand(e,r){let n=await Rs("powershell",!0),s=e.replace(/'/g,"''"),o=[];if(r)for(let a in r)o.push(`-${a} '${r[a].replace(/'/g,"''")}'`);return{command:`"${n}"`,args:["-NoLogo","-Sta","-NoProfile","-NonInteractive","-ExecutionPolicy","Unrestricted","-EncodedCommand",Buffer.from(`& '${s}' ${o.join(" ")}`,"utf16le").toString("base64")]}}static isDirectory(e){try{return Owe.default.lstatSync(e).isDirectory()}catch{}return!1}static trimPrefix(e,r){return!e||!r||e.indexOf(r)!==0?e:e.substring(r.length)}static trimSuffix(e,r){if(!e||!r)return e;let n=e.lastIndexOf(r);return n===-1||n+r.length!==e.length?e:e.substring(0,n)}static sleep(e){return new Promise(r=>setTimeout(r,e*1e3))}static hash(e){return HY.default.createHash("sha256").update(e).digest("hex")}static parseBool(e){if(e===void 0)return!1;switch(e){case"1":case"t":case"T":case"true":case"TRUE":case"True":return!0;case"0":case"f":case"F":case"false":case"FALSE":case"False":return!1;default:throw new Error(`parseBool syntax error: ${e}`)}}static parseBoolOrDefault(e,r=!1){try{return this.parseBool(e)}catch{return r}}static formatFileSize(e){if(e===0)return"0 Bytes";let r=1024,n=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],s=Math.floor(Math.log(e)/Math.log(r));return parseFloat((e/Math.pow(r,s)).toFixed(2))+" "+n[s]}static generateRandomString(e=10){return HY.default.randomBytes(Math.ceil(e/2)).toString("hex").slice(0,e)}static compileHandlebars(e,r,n){return Mwe.default.compile(e,r)(n)}static stringToUnicodeEntities(e){return Array.from(e).map(r=>`&#x${r.charCodeAt(0).toString(16)};`).join("")}static countLines(e){return e.split(/\r\n|\r|\n/).length}static isPathRelativeTo(e,r){let n=kw.default.resolve(e);return kw.default.resolve(r).startsWith(n.endsWith(kw.default.sep)?n:`${n}${kw.default.sep}`)}static formatDuration(e){if(e===0)return"0s";let r=Math.floor(e/1e9),n=Math.floor(r/3600),s=Math.floor(r%3600/60),o=r%60,a=[];return n&&a.push(`${n}h`),s&&a.push(`${s}m`),(o||a.length===0)&&a.push(`${o}s`),a.join("")}};var xd=class t{static{i(this,"Docker")}static get configDir(){return process.env.DOCKER_CONFIG||Lw.default.join(Fwe.default.homedir(),".docker")}static configFile(){let e=Lw.default.join(t.configDir,"config.json");if(zY.default.existsSync(e))return JSON.parse(zY.default.readFileSync(e,{encoding:"utf-8"}))}static async isAvailable(){return await Rs("docker",!0).then(e=>(T(`Docker.isAvailable ok: ${e}`),!0)).catch(e=>(T(`Docker.isAvailable error: ${e}`),!1))}static async isDaemonRunning(){try{return await t.getExecOutput(["version"],{silent:!0}),
Line truncated
|
||||||
|
${s}`)},"onRetry")})}static isPullTransientError(e){return/Client\.Timeout exceeded|TLS handshake timeout|i\/o timeout|context deadline exceeded|request canceled|connection reset by peer|connection refused|connection timed out|temporary failure|unexpected EOF|\bEOF\b|server misbehaving/i.test(e)||/\b(500|502|503|504)\b/.test(e)||/\b(service unavailable|bad gateway|gateway timeout|internal server error)\b/i.test(e)}};var FSe=R(require("crypto"),1);var vv=require("fs"),Gwe=require("os");var Pg=class{static{i(this,"Context")}constructor(){var e,r,n;if(this.payload={},process.env.GITHUB_EVENT_PATH)if((0,vv.existsSync)(process.env.GITHUB_EVENT_PATH))this.payload=JSON.parse((0,vv.readFileSync)(process.env.GITHUB_EVENT_PATH,{encoding:"utf8"}));else{let s=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${s} does not exist${Gwe.EOL}`)}this.eventName=process.env.GITHUB_EVENT_NAME,this.sha=process.env.GITHUB_SHA,this.ref=process.env.GITHUB_REF,this.workflow=process.env.GITHUB_WORKFLOW,this.action=process.env.GITHUB_ACTION,this.actor=process.env.GITHUB_ACTOR,this.job=process.env.GITHUB_JOB,this.runAttempt=parseInt(process.env.GITHUB_RUN_ATTEMPT,10),this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10),this.runId=parseInt(process.env.GITHUB_RUN_ID,10),this.apiUrl=(e=process.env.GITHUB_API_URL)!==null&&e!==void 0?e:"https://api.github.com",this.serverUrl=(r=process.env.GITHUB_SERVER_URL)!==null&&r!==void 0?r:"https://github.com",this.graphqlUrl=(n=process.env.GITHUB_GRAPHQL_URL)!==null&&n!==void 0?n:"https://api.github.com/graphql"}get issue(){let e=this.payload;return Object.assign(Object.assign({},this.repo),{number:(e.issue||e.pull_request||e).number})}get repo(){if(process.env.GITHUB_REPOSITORY){let[e,r]=process.env.GITHUB_REPOSITORY.split("/");return{owner:e,repo:r}}if(this.payload.repository)return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name};throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'")}};var JY=R(Wwe(),1),Ywe=R(ef(),1);var obt=function(t,e,r,n){function s(o){return o instanceof r?o:new r(function(a){a(o)})}return i(s,"adopt"),new(r||(r=Promise))(function(o,a){function c(d){try{u(n.next(d))}catch(p){a(p)}}i(c,"fulfilled");function l(d){try{u(n.throw(d))}catch(p){a(p)}}i(l,"rejected");function u(d){d.done?o(d.value):s(d.value).then(c,l)}i(u,"step"),u((n=n.apply(t,e||[])).next())})};function Jwe(t,e){if(!t&&!e.auth)throw new Error("Parameter token or opts.auth is required");if(t&&e.auth)throw new Error("Parameters token and opts.auth may not both be specified");return typeof e.auth=="string"?e.auth:`token ${t}`}i(Jwe,"getAuthString");function jwe(t){return new JY.HttpClient().getAgent(t)}i(jwe,"getProxyAgent");function ibt(t){return new JY.HttpClient().getAgentDispatcher(t)}i(ibt,"getProxyAgentDispatcher");function Kwe(t){let e=ibt(t);return i((n,s)=>obt(this,void 0,void 0,function*(){return(0,Ywe.fetch)(n,Object.assign(Object.assign({},s),{dispatcher:e}))}),"proxyFetch")}i(Kwe,"getProxyFetch");function Xwe(){return process.env.GITHUB_API_URL||"https://api.github.com"}i(Xwe,"getApiBaseUrl");function jY(t){var e;let r=(e=process.env.ACTIONS_ORCHESTRATION_ID)===null||e===void 0?void 0:e.trim();if(r){let s=`actions_orchestration_id/${r.replace(/[^a-z0-9_.-]/gi,"_")}`;return t?.includes(s)?t:`${t?`${t} `:""}${s}`}return t}i(jY,"getUserAgentWithOrchestrationId");function bd(){return typeof navigator=="object"&&"userAgent"in navigator?navigator.userAgent:typeof process=="object"&&process.version!==void 0?`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`:"<environment undetectable>"}i(bd,"getUserAgent");function Mv(t,e,r,n){if(typeof r!="function")throw new Error("method for before hook must be a function");return n||(n={}),Array.isArray(e)?e.reverse().reduce((s,o)=>Mv.bind(null,t,o,s,n),r)():Promise.resolve().then(()=>t.registry[e]?t.registry[e].reduce((s,o)=>o.hook.bind(null,s,n),r)():r(n))}i(Mv,"register");function Zwe(t,e,r,n){let s=n;t.registry[r]||(t.registry[r]=[]),e==="before"&&(n=i((o,a)=>Promise.resolve().then(s.bind(null,a)).then(o.bind(null,a)),"hook")),e==="after"&&(n=i((o,a)=>{let c;return Promise.resolve().then(o.bind(null,a)).then(l=>(c=l,s(c,a))).then(()=>c)},"hook")),e==="error"&&(n=i((o,a)=>Promise.resolve().then(o.bind(null,a)).catch(c=>s(c,a)),"hook")),t.registry[r].push({hook:n,orig:s})}i(Zwe,"addHook");function eSe(t,e,r){if(!t.registry[e])return;let n=t.registry[e].map(s=>s.orig).indexOf(r);n!==-1&&t.registry[e].splice(n,1)}i(eSe,"removeHook");var tSe=Function.bind,rSe=tSe.bind(tSe);function nSe(t,e,r){let n=rSe(eSe,null).apply(null,r?[e,r]:[e]);t.api={remove:n},t.remove=n,["before","error","after","wrap"].forEach(s=>{let o=r?[e,s,r]:[e,s];t[s]=t.api[s]=rSe(Zwe,null).apply(null,o)})}i(nSe,"bindApi");function cbt(){let t=Symbol("Singular"),e={registry:{}},r=Mv.bind(null,e,t);return nSe(r,e,t),r}i(cbt,"Singular");function lbt(){let t={registry:{}},e=Mv.bind(null,
Line truncated
|
||||||
|
`+t.errors.map(e=>` - ${e.message}`).join(`
|
||||||
|
`)}i(Mbt,"_buildMessageForResponseErrors");var Fbt=class extends Error{static{i(this,"GraphqlResponseError")}constructor(t,e,r){super(Mbt(r)),this.request=t,this.headers=e,this.response=r,this.errors=r.errors,this.data=r.data,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}name="GraphqlResponseError";errors;data},Ubt=["method","baseUrl","url","headers","request","query","mediaType","operationName"],qbt=["query","method","url"],bSe=/\/api\/v3\/?$/;function Gbt(t,e,r){if(r){if(typeof e=="string"&&"query"in r)return Promise.reject(new Error('[@octokit/graphql] "query" cannot be used as variable name'));for(let a in r)if(qbt.includes(a))return Promise.reject(new Error(`[@octokit/graphql] "${a}" cannot be used as variable name`))}let n=typeof e=="string"?Object.assign({query:e},r):e,s=Object.keys(n).reduce((a,c)=>Ubt.includes(c)?(a[c]=n[c],a):(a.variables||(a.variables={}),a.variables[c]=n[c],a),{}),o=n.baseUrl||t.endpoint.DEFAULTS.baseUrl;return bSe.test(o)&&(s.url=o.replace(bSe,"/api/graphql")),t(s).then(a=>{if(a.data.errors){let c={};for(let l of Object.keys(a.headers))c[l]=a.headers[l];throw new Fbt(s,c,a.data)}return a.data.data})}i(Gbt,"graphql");function r8(t,e){let r=t.defaults(e);return Object.assign(i((s,o)=>Gbt(r,s,o),"newApi"),{defaults:r8.bind(null,r),endpoint:r.endpoint})}i(r8,"withDefaults");var qbr=r8(Uw,{headers:{"user-agent":`octokit-graphql.js/${Obt} ${bd()}`},method:"POST",url:"/graphql"});function BSe(t){return r8(t,{method:"POST",url:"/graphql"})}i(BSe,"withCustomRequest");var n8="(?:[a-zA-Z0-9_-]+)",RSe="\\.",NSe=new RegExp(`^${n8}${RSe}${n8}${RSe}${n8}$`),$bt=NSe.test.bind(NSe);async function Hbt(t){let e=$bt(t),r=t.startsWith("v1.")||t.startsWith("ghs_"),n=t.startsWith("ghu_");return{type:"token",token:t,tokenType:e?"app":r?"installation":n?"user-to-server":"oauth"}}i(Hbt,"auth");function zbt(t){return t.split(/\./).length===3?`bearer ${t}`:`token ${t}`}i(zbt,"withAuthorizationPrefix");async function Vbt(t,e,r,n){let s=e.endpoint.merge(r,n);return s.headers.authorization=zbt(t),e(s)}i(Vbt,"hook");var TSe=i(function(e){if(!e)throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");if(typeof e!="string")throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");return e=e.replace(/^(token|bearer) +/i,""),Object.assign(Hbt.bind(null,e),{hook:Vbt.bind(null,e)})},"createTokenAuth2");var s8="7.0.6";var PSe=i(()=>{},"noop"),Wbt=console.warn.bind(console),Ybt=console.error.bind(console);function Jbt(t={}){return typeof t.debug!="function"&&(t.debug=PSe),typeof t.info!="function"&&(t.info=PSe),typeof t.warn!="function"&&(t.warn=Wbt),typeof t.error!="function"&&(t.error=Ybt),t}i(Jbt,"createLogger");var vSe=`octokit-core.js/${s8} ${bd()}`,Gv=class{static{i(this,"Octokit")}static VERSION=s8;static defaults(e){return class extends this{static{i(this,"OctokitWithDefaults")}constructor(...n){let s=n[0]||{};if(typeof e=="function"){super(e(s));return}super(Object.assign({},e,s,s.userAgent&&e.userAgent?{userAgent:`${s.userAgent} ${e.userAgent}`}:null))}}}static plugins=[];static plugin(...e){let r=this.plugins;return class extends this{static{i(this,"NewOctokit")}static plugins=r.concat(e.filter(s=>!r.includes(s)))}}constructor(e={}){let r=new sSe.Collection,n={baseUrl:Uw.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},e.request,{hook:r.bind(null,"request")}),mediaType:{previews:[],format:""}};if(n.headers["user-agent"]=e.userAgent?`${e.userAgent} ${vSe}`:vSe,e.baseUrl&&(n.baseUrl=e.baseUrl),e.previews&&(n.mediaType.previews=e.previews),e.timeZone&&(n.headers["time-zone"]=e.timeZone),this.request=Uw.defaults(n),this.graphql=BSe(this.request).defaults(n),this.log=Jbt(e.log),this.hook=r,e.authStrategy){let{authStrategy:o,...a}=e,c=o(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:a},e.auth));r.wrap("request",c.hook),this.auth=c}else if(!e.auth)this.auth=async()=>({type:"unauthenticated"});else{let o=TSe(e.auth);r.wrap("request",o.hook),this.auth=o}let s=this.constructor;for(let o=0;o<s.plugins.length;++o)Object.assign(this,s.plugins[o](this,e))}request;graphql;log;hook;auth};var o8="17.0.0";var jbt={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addRepoAccessToSelfHostedRunnerGroupInOrg:["PUT /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repos/{owner}/{repo}/environments/{environment_name}/variables"
Line truncated
|
||||||
|
More info: ${l.url}`);let m=l.range&&l.range.length>0?l.range[0]?.start.line:void 0,A=!1;for(let h of a)if(h.remote||h.path.endsWith(u)&&h.content===d){c.push({title:p,message:f,file:h.path,startLine:m}),A=!0;break}A||T(`Buildx.convertWarningsToGitHubAnnotations: skipping warning without matching Dockerfile ${u}: ${p}`)}return c}};function HSe(){return{registry:$i("registry"),username:$i("username"),password:$i("password"),scope:$i("scope"),ecr:$i("ecr"),logout:uie("logout"),registryAuth:$i("registry-auth")}}i(HSe,"getInputs");function zSe(t){if(t.registryAuth&&(t.registry||t.username||t.password||t.scope||t.ecr))throw new Error("Cannot use registry-auth with other inputs");let e=[];if(t.registryAuth)e=cye(t.registryAuth).map(r=>{r.password&&Ln(r.password);let n=r.registry||"docker.io";return{registry:n,username:r.username,password:r.password,scope:r.scope,ecr:String(r.ecr??"")||"auto",configDir:zv(n,r.scope)}});else{let r=t.registry||"docker.io";e.push({registry:r,username:t.username,password:t.password,scope:t.scope,ecr:t.ecr||"auto",configDir:zv(r,t.scope)})}if(e.length==0)throw new Error("No registry to login");return e}i(zSe,"getAuthList");function zv(t,e){if(a0t()||!e||e==="")return"";let r=t.indexOf("://"),n=r===-1?t:new URL(`registry://${t.slice(r+3)}`).host,s=cm.default.resolve(Hv.configDir,"config"),o=cm.default.resolve(s,n==="docker.io"?"registry-1.docker.io":n);if(!$Se(s,o))throw new Error(`Invalid registry '${t}': resolved config path escapes the Buildx config directory`);let a=e.split("@");if(a.length>2)throw new Error(`Invalid scope '${e}': scope can contain at most one @ separator`);let[c,l]=a;if(l!==void 0&&!/^[a-z]+(,[a-z]+)*$/.test(l))throw new Error(`Invalid scope '${e}': scope actions must be lowercase names separated by commas`);let u=l===void 0?"":`@${l}`;if(c==="")return`${o}${u}`;let d=cm.default.resolve(o,c);if(!$Se(o,d))throw new Error(`Invalid scope '${e}': resolved config path escapes the Buildx config directory`);return`${d}${u}`}i(zv,"scopeToConfigDir");function $Se(t,e){let r=cm.default.relative(t,e);return r!==""&&r!==".."&&!r.startsWith(`..${cm.default.sep}`)&&!cm.default.isAbsolute(r)}i($Se,"isChildPath");function a0t(){return process.env.DOCKER_LOGIN_SCOPE_DISABLED?Sd.parseBool(process.env.DOCKER_LOGIN_SCOPE_DISABLED):!1}i(a0t,"scopeDisabled");var cHe=R(mqe(),1),lHe=R(V$e(),1),tX=R(gu(),1);var j$e=R(require("net"),1),K$e=R(require("tls"),1),X$e=R(Ef(),1),Z$e=require("events");var W$e=R(require("net"),1),Y$e=R(require("http"),1),J$e=require("https");var yl=Symbol("AgentBaseInternalState"),KM=class extends Y$e.Agent{static{i(this,"Agent")}constructor(e){super(e),this[yl]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:r}=new Error;return typeof r!="string"?!1:r.split(`
|
||||||
|
`).some(n=>n.indexOf("(https.js:")!==-1||n.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let r=new W$e.Socket({writable:!1});return this.sockets[e].push(r),this.totalSocketCount++,r}decrementSockets(e,r){if(!this.sockets[e]||r===null)return;let n=this.sockets[e],s=n.indexOf(r);s!==-1&&(n.splice(s,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?J$e.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,r,n){let s={...r,secureEndpoint:this.isSecureEndpoint(r)},o=this.getName(s),a=this.incrementSockets(o);Promise.resolve().then(()=>this.connect(e,s)).then(c=>{if(this.decrementSockets(o,a),typeof c.addRequest=="function")try{return c.addRequest(e,s)}catch(l){return n(l)}this[yl].currentSocket=c,super.createSocket(e,r,n)},c=>{this.decrementSockets(o,a),n(c)})}createConnection(){let e=this[yl].currentSocket;if(this[yl].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[yl].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[yl]&&(this[yl].defaultPort=e)}get protocol(){return this[yl].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[yl]&&(this[yl].protocol=e)}};var XK=require("url");function XM(){return async({response:t,scheme:e})=>{if(e.toLowerCase()!=="negotiate")throw new Error(`Expected Negotiate scheme but got "${e}"`);let r;try{r=await import("kerberos")}catch{throw new Error('The "kerberos" package is required for Negotiate proxy authentication. Install it with: npm install kerberos')}let n=t.headers["proxy-authenticate"]||"",s=Array.isArray(n)?n[0]:n,o=typeof s=="string"&&s.includes(" ")?s.split(" ").slice(1).join(" "):void 0,c=await(await r.initializeClient("HTTP@proxy",{mechOID:r.GSS_MECH_OID_SPNEGO})).step(o||"");if(!c)throw new Error("Kerberos client.step() returned no token");return{headers:{"Proxy-Authorization":`Negotiate ${c}`}}}}i(XM,"createNegotiateAuth");var fE=(0,X$e.default)("http-proxy-agent"),ib=class extends KM{static{i(this,"HttpProxyAgent")}constructor(e,r){super(r),this.proxy=typeof e=="string"?new XK.URL(e):e,this.proxyHeaders=r?.headers??{},fE("Creating new HttpProxyAgent instance: %o",this.proxy.href),r?.negotiate?this.onProxyAuth=XM():r?.onProxyAuth&&(this.onProxyAuth=r.onProxyAuth);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),s=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...r?q3t(r,"headers","onProxyAuth","negotiate"):null,host:n,port:s}}addRequest(e,r){e._header=null,this.setRequestProps(e,r),super.addRequest(e,r)}setRequestProps(e,r){let{proxy:n}=this,s=r.secureEndpoint?"https:":"http:",o=e.getHeader("host")||"localhost",a=`${s}//${o}`,c=new XK.URL(e.path,a);r.port!==80&&(c.port=String(r.port)),e.path=String(c);let l=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(n.username||n.password){let u=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;l["Proxy-Authorization"]=`Basic ${Buffer.from(u).toString("base64")}`}l["Proxy-Connection"]||(l["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let u of Object.keys(l)){let d=l[u];d&&e.setHeader(u,d)}}async connect(e,r){e._header=null,e.path.includes("://")||this.setRequestProps(e,r);let n,s;fE("Regenerating stored HTTP header string for request"),e._implicitHeader(),e.outputData&&e.outputData.length>0&&(fE("Patching connection write() output buffer with updated header"),n=e.outputData[0].data,s=n.indexOf(`\r
|
||||||
|
\r
|
||||||
|
`)+4,e.outputData[0].data=e._header+n.substring(s),fE("Output buffer: %o",e.outputData[0].data));let o;this.proxy.protocol==="https:"?(fE("Creating `tls.Socket`: %o",this.connectOpts),o=K$e.connect(this.connectOpts)):(fE("Creating `net.Socket`: %o",this.connectOpts),o=j$e.connect(this.connectOpts)),await(0,Z$e.once)(o,"connect");let a={socket:o};return e.emit("proxyConnect",a),this.emit("proxyConnect",a,e),e.emit("proxy",{proxy:this.proxy.href,socket:o}),o}};ib.protocols=["http","https"];function q3t(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}i(q3t,"omit");var Cl=R(require("net"),1),ab=R(require("tls"),1),oHe=R(require("assert"),1),iHe=R(Ef(),1);var eHe=R(require("net"),1),tHe=R(require("http"),1),rHe=require("https");var El=Symbol("AgentBaseInternalState"),ZM=class extends tHe.Agent{static{i(this,"Agent")}constructor(e){super(e),this[El]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:r}=new Error;return typeof r!="string"?!1:r.split(`
|
||||||
|
`).some(n=>n.indexOf("(https.js:")!==-1||n.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[e]||(this.sockets[e]=[]);let r=new eHe.Socket({writable:!1});return this.sockets[e].push(r),this.totalSocketCount++,r}decrementSockets(e,r){if(!this.sockets[e]||r===null)return;let n=this.sockets[e],s=n.indexOf(r);s!==-1&&(n.splice(s,1),this.totalSocketCount--,n.length===0&&delete this.sockets[e])}getName(e){return this.isSecureEndpoint(e)?rHe.Agent.prototype.getName.call(this,e):super.getName(e)}createSocket(e,r,n){let s={...r,secureEndpoint:this.isSecureEndpoint(r)},o=this.getName(s),a=this.incrementSockets(o);Promise.resolve().then(()=>this.connect(e,s)).then(c=>{if(this.decrementSockets(o,a),typeof c.addRequest=="function")try{return c.addRequest(e,s)}catch(l){return n(l)}this[El].currentSocket=c,super.createSocket(e,r,n)},c=>{this.decrementSockets(o,a),n(c)})}createConnection(){let e=this[El].currentSocket;if(this[El].currentSocket=void 0,!e)throw new Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[El].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){this[El]&&(this[El].defaultPort=e)}get protocol(){return this[El].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){this[El]&&(this[El].protocol=e)}};var aHe=require("url");var nHe=R(Ef(),1);var eF=(0,nHe.default)("https-proxy-agent:parse-proxy-response");function ZK(t){return new Promise((e,r)=>{let n=0,s=[];function o(){let d=t.read();d?u(d):t.once("readable",o)}i(o,"read");function a(){t.removeListener("end",c),t.removeListener("error",l),t.removeListener("readable",o)}i(a,"cleanup");function c(){a(),eF("onend"),r(new Error("Proxy connection ended before receiving CONNECT response"))}i(c,"onend");function l(d){a(),eF("onerror %o",d),r(d)}i(l,"onerror");function u(d){s.push(d),n+=d.length;let p=Buffer.concat(s,n),f=p.indexOf(`\r
|
||||||
|
\r
|
||||||
|
`);if(f===-1){eF("have not received end of HTTP headers yet..."),o();return}let m=p.slice(0,f).toString("ascii").split(`\r
|
||||||
|
`),A=m.shift();if(!A)return t.destroy(),r(new Error("No header received from proxy CONNECT response"));let h=A.split(" "),E=+h[1],y=h.slice(2).join(" "),I={};for(let x of m){if(!x)continue;let b=x.indexOf(":");if(b===-1)return t.destroy(),r(new Error(`Invalid header from proxy CONNECT response: "${x}"`));let N=x.slice(0,b).toLowerCase(),v=x.slice(b+1).trimStart(),_=I[N];typeof _=="string"?I[N]=[_,v]:Array.isArray(_)?_.push(v):I[N]=v}eF("got proxy server response: %o %o",A,I),a(),e({connect:{statusCode:E,statusText:y,headers:I},buffered:p})}i(u,"ondata"),t.on("error",l),t.on("end",c),o()})}i(ZK,"parseProxyResponse");var Xm=(0,iHe.default)("https-proxy-agent"),tF=i(t=>t.servername===void 0&&t.host&&!Cl.isIP(t.host)?{...t,servername:t.host}:t,"setServernameFromNonIpHost"),cb=class extends ZM{static{i(this,"HttpsProxyAgent")}constructor(e,r){super(r),this.options={path:void 0},this.proxy=typeof e=="string"?new aHe.URL(e):e,this.proxyHeaders=r?.headers??{},Xm("Creating new HttpsProxyAgent instance: %o",this.proxy.href),r?.negotiate?this.onProxyAuth=XM():r?.onProxyAuth&&(this.onProxyAuth=r.onProxyAuth);let n=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),s=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...r?eX(r,"headers","onProxyAuth","negotiate"):null,host:n,port:s}}async connect(e,r){let{proxy:n}=this;if(!r.host)throw new TypeError('No "host" provided');let s;n.protocol==="https:"?(Xm("Creating `tls.Socket`: %o",this.connectOpts),s=ab.connect(tF(this.connectOpts))):(Xm("Creating `net.Socket`: %o",this.connectOpts),s=Cl.connect(this.connectOpts));let o=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},a=Cl.isIPv6(r.host)?`[${r.host}]`:r.host,c=`CONNECT ${a}:${r.port} HTTP/1.1\r
|
||||||
|
`;if(n.username||n.password){let f=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;o["Proxy-Authorization"]=`Basic ${Buffer.from(f).toString("base64")}`}o.Host=`${a}:${r.port}`,o["Proxy-Connection"]||(o["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let f of Object.keys(o))c+=`${f}: ${o[f]}\r
|
||||||
|
`;let l=ZK(s);s.write(`${c}\r
|
||||||
|
`);let{connect:u,buffered:d}=await l;if(e.emit("proxyConnect",u),this.emit("proxyConnect",u,e),e.emit("proxy",{proxy:this.proxy.href,socket:s}),u.statusCode===200)return e.once("socket",sHe),r.secureEndpoint?(Xm("Upgrading socket connection to TLS"),ab.connect({...eX(tF(r),"host","path","port"),socket:s})):s;if(u.statusCode===407&&this.onProxyAuth){Xm("Got 407 response, invoking onProxyAuth callback"),s.destroy();let f=u.headers["proxy-authenticate"]||"",m=Array.isArray(f)?f[0].split(/\s/)[0]:f.split(/\s/)[0],A=await this.onProxyAuth({response:u,scheme:m});return this._connectWithAuth(e,r,A.headers)}s.destroy();let p=new Cl.Socket({writable:!1});return p.readable=!0,e.once("socket",f=>{Xm("Replaying proxy buffer for failed request"),(0,oHe.default)(f.listenerCount("data")>0),f.push(d),f.push(null)}),p}async _connectWithAuth(e,r,n){let{proxy:s}=this,o;s.protocol==="https:"?o=ab.connect(tF(this.connectOpts)):o=Cl.connect(this.connectOpts);let a=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},c=Cl.isIPv6(r.host)?`[${r.host}]`:r.host,l=`CONNECT ${c}:${r.port} HTTP/1.1\r
|
||||||
|
`;if(s.username||s.password){let p=`${decodeURIComponent(s.username)}:${decodeURIComponent(s.password)}`;a["Proxy-Authorization"]=`Basic ${Buffer.from(p).toString("base64")}`}Object.assign(a,n),a.Host=`${c}:${r.port}`,a["Proxy-Connection"]||(a["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let p of Object.keys(a))l+=`${p}: ${a[p]}\r
|
||||||
|
`;let u=ZK(o);o.write(`${l}\r
|
||||||
|
`);let{connect:d}=await u;if(e.emit("proxyConnect",d),this.emit("proxyConnect",d,e),d.statusCode===200)return e.once("socket",sHe),r.secureEndpoint?(Xm("Upgrading socket connection to TLS"),ab.connect({...eX(tF(r),"host","path","port"),socket:o})):o;throw o.destroy(),new Error(`Proxy authentication failed with status ${d.statusCode} after retry`)}};cb.protocols=["http","https"];function sHe(t){setImmediate(()=>{t.resume()})}i(sHe,"resume");function eX(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}i(eX,"omit");var rX=/^(([0-9]{12})\.(dkr\.ecr|dkr-ecr)\.(.+)\.(on\.aws|amazonaws\.(com(.cn)?|eu)))(\/([^:]+)(:.+)?)?$/,G3t=/public\.ecr\.aws|ecr-public\.aws\.com/,uHe=i(t=>rX.test(t)||rF(t),"isECR"),rF=i(t=>G3t.test(t),"isPubECR"),$3t=i(t=>{if(rF(t))return process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION||"us-east-1";let e=t.match(rX);return e?e[4]:""},"getRegion"),H3t=i(t=>{if(rF(t))return[];let e=t.match(rX);if(!e)return[];let r=[e[2]];return process.env.AWS_ACCOUNT_IDS&&r.push(...process.env.AWS_ACCOUNT_IDS.split(",")),r.filter((n,s)=>r.indexOf(n)===s)},"getAccountIDs"),dHe=i(async(t,e,r)=>{let n=$3t(t),s=H3t(t),o={};s.length>0&&(T(`Requesting AWS ECR auth token for ${s.join(", ")}`),o.registryIds=s);let a,c=process.env.http_proxy||process.env.HTTP_PROXY||"";c&&(T(`Using http proxy ${c}`),a=new ib(c));let l,u=process.env.https_proxy||process.env.HTTPS_PROXY||"";u&&(T(`Using https proxy ${u}`),l=new cb(u));let d=e&&r?{accessKeyId:e,secretAccessKey:r}:void 0;if(rF(t)){ae(`AWS Public ECR detected with ${n} region`);let f=await new lHe.ECRPUBLIC({customUserAgent:"docker-login-action",credentials:d,region:n,requestHandler:new tX.NodeHttpHandler({httpAgent:a,httpsAgent:l})}).getAuthorizationToken(o);if(!f.authorizationData||!f.authorizationData.authorizationToken)throw new Error("Could not retrieve an authorization token from AWS Public ECR");let A=Buffer.from(f.authorizationData.authorizationToken,"base64").toString("utf-8").split(":",2);return Ln(A[0]),Ln(A[1]),[{registry:"public.ecr.aws",username:A[0],password:A[1]}]}else{ae(`AWS ECR detected with ${n} region`);let f=await new cHe.ECR({customUserAgent:"docker-login-action",credentials:d,region:n,requestHandler:new tX.NodeHttpHandler({httpAgent:a,httpsAgent:l})}).getAuthorizationToken(o);if(!Array.isArray(f.authorizationData)||!f.authorizationData.length)throw new Error("Could not retrieve an authorization token from AWS ECR");let m=[];for(let A of f.authorizationData){let E=Buffer.from(A.authorizationToken||"","base64").toString("utf-8").split(":",2);Ln(E[0]),Ln(E[1]),m.push({registry:A.proxyEndpoint||"",username:E[0],password:E[1]})}return m}},"getRegistriesData");var pHe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;function V3t(t){return typeof t=="string"&&pHe.test(t)}i(V3t,"validate");var nX=V3t;var W3t=new Set(["","docker.io","registry-1.docker.io","registry-1-stage.docker.io","dhi.io"]),Y3t=300,fHe=300,mHe=21600,AHe=5,hHe=i((t,e)=>process.env.DOCKERHUB_OIDC_CONNECTIONID!==void 0&&!e&&W3t.has(t),"isDockerHubOIDC"),gHe=i(async(t,e)=>{let r=process.env.DOCKERHUB_OIDC_CONNECTIONID?.trim();if(!r)throw new Error("DOCKERHUB_OIDC_CONNECTIONID is required for Docker Hub OIDC login");if(!nX(r))throw new Error("Invalid DOCKERHUB_OIDC_CONNECTIONID. Must be a valid UUID.");let n=J3t(),s=t==="registry-1-stage.docker.io"?"identity-stage.docker.com":"identity.docker.com",o=`https://${s}`;ae(`Docker Hub OIDC detected for ${t||"docker.io"}`),T(`Docker Hub OIDC token audience: ${o}`),T(`Docker Hub OIDC token expiration: ${n}s`),ae("Retrieving GitHub OIDC token for Docker Hub");let a=await fie(o),c=new fo("github.com/docker/login-action",[],{headers:{"Content-Type":"application/x-www-form-urlencoded"}}),l=new URLSearchParams;l.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),l.set("subject_token_type","urn:ietf:params:oauth:token-type:id_token"),l.set("subject_token",a),l.set("connection_id",r),l.set("expires_in",n.toString()),ae("Exchanging GitHub OIDC token for Docker Hub token");let u=await j3t(c,`https://${s}/oauth/token`,l.toString()),d=JSON.parse(await X3t(u));return Ln(d.access_token),ae("Docker Hub OIDC token exchange succeeded"),{username:e,token:d.access_token}},"getOIDCToken"),J3t=i(()=>{let t=process.env.DOCKERHUB_OIDC_EXPIREIN?.trim()||Y3t.toString(),e=Number(t);if(isNaN(e)||e<fHe||e>mHe)throw new Error(`Invalid DOCKERHUB_OIDC_EXPIREIN: ${t}. Must be between ${fHe} and ${mHe}`);return e},"getExpiresIn"),j3t=i(async(t,e,r)=>{T(`Sending Docker Hub OIDC token request to ${e}`);let n=await t.post(e,r);T(`Docker Hub OIDC token request returned status code ${n.message.statusCode||mt.InternalServerError}`);for(let s=0;(n.message.statusCode||mt.InternalServerError)===mt.TooManyRequests&&s<AHe;s++){let o=K3t(n.message.headers["retry-after"]);if(o===null){T("Docker Hub OIDC token request rate limited without retry-after he
Line truncated
|
||||||
|
/*! Bundled license information:
|
||||||
|
|
||||||
|
undici/lib/web/fetch/body.js:
|
||||||
|
(*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> *)
|
||||||
|
|
||||||
|
undici/lib/web/websocket/frame.js:
|
||||||
|
(*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> *)
|
||||||
|
|
||||||
|
tmp/lib/tmp.js:
|
||||||
|
(*!
|
||||||
|
* Tmp
|
||||||
|
*
|
||||||
|
* Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>
|
||||||
|
*
|
||||||
|
* MIT Licensed
|
||||||
|
*)
|
||||||
|
|
||||||
|
js-yaml/dist/js-yaml.mjs:
|
||||||
|
(*! js-yaml 5.5.0 https://github.com/nodeca/js-yaml @license MIT *)
|
||||||
|
|
||||||
|
@octokit/request-error/dist-src/index.js:
|
||||||
|
(* v8 ignore else -- @preserve -- Bug with vitest coverage where it sees an else branch that doesn't exist *)
|
||||||
|
|
||||||
|
@octokit/request/dist-bundle/index.js:
|
||||||
|
(* v8 ignore next -- @preserve *)
|
||||||
|
(* v8 ignore else -- @preserve *)
|
||||||
|
*/
|
||||||
|
//# sourceMappingURL=index.cjs.map
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"sources": ["../node_modules/tunnel/lib/tunnel.js", "../node_modules/tunnel/index.js", "../node_modules/undici/lib/core/symbols.js", "../node_modules/undici/lib/core/errors.js", "../node_modules/undici/lib/core/constants.js", "../node_modules/undici/lib/core/tree.js", "../node_modules/undici/lib/core/util.js", "../node_modules/undici/lib/core/diagnostics.js", "../node_modules/undici/lib/core/request.js", "../node_modules/undici/lib/dispatcher/dispatcher.js", "../node_modules/undici/lib/dispatcher/dispatcher-base.js", "../node_modules/undici/lib/util/timers.js", "../node_modules/undici/lib/core/connect.js", "../node_modules/undici/lib/llhttp/utils.js", "../node_modules/undici/lib/llhttp/constants.js", "../node_modules/undici/lib/llhttp/llhttp-wasm.js", "../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js", "../node_modules/undici/lib/web/fetch/constants.js", "../node_modules/undici/lib/web/fetch/global.js", "../node_modules/undici/lib/web/fetch/data-url.js", "../node_modules/undici/lib/web/fetch/webidl.js", "../node_modules/undici/lib/web/fetch/util.js", "../node_modules/undici/lib/web/fetch/symbols.js", "../node_modules/undici/lib/web/fetch/file.js", "../node_modules/undici/lib/web/fetch/formdata.js", "../node_modules/undici/lib/web/fetch/formdata-parser.js", "../node_modules/undici/lib/web/fetch/body.js", "../node_modules/undici/lib/dispatcher/client-h1.js", "../node_modules/undici/lib/dispatcher/client-h2.js", "../node_modules/undici/lib/handler/redirect-handler.js", "../node_modules/undici/lib/interceptor/redirect-interceptor.js", "../node_modules/undici/lib/dispatcher/client.js", "../node_modules/undici/lib/dispatcher/fixed-queue.js", "../node_modules/undici/lib/dispatcher/pool-stats.js", "../node_modules/undici/lib/dispatcher/pool-base.js", "../node_modules/undici/lib/dispatcher/pool.js", "../node_modules/undici/lib/dispatcher/balanced-pool.js", "../node_modules/undici/lib/dispatcher/agent.js", "../node_modules/undici/lib/dispatcher/proxy-agent.js", "../node_modules/undici/lib/dispatcher/env-http-proxy-agent.js", "../node_modules/undici/lib/handler/retry-handler.js", "../node_modules/undici/lib/dispatcher/retry-agent.js", "../node_modules/undici/lib/api/readable.js", "../node_modules/undici/lib/api/util.js", "../node_modules/undici/lib/api/api-request.js", "../node_modules/undici/lib/api/abort-signal.js", "../node_modules/undici/lib/api/api-stream.js", "../node_modules/undici/lib/api/api-pipeline.js", "../node_modules/undici/lib/api/api-upgrade.js", "../node_modules/undici/lib/api/api-connect.js", "../node_modules/undici/lib/api/index.js", "../node_modules/undici/lib/mock/mock-errors.js", "../node_modules/undici/lib/mock/mock-symbols.js", "../node_modules/undici/lib/mock/mock-utils.js", "../node_modules/undici/lib/mock/mock-interceptor.js", "../node_modules/undici/lib/mock/mock-client.js", "../node_modules/undici/lib/mock/mock-pool.js", "../node_modules/undici/lib/mock/pluralizer.js", "../node_modules/undici/lib/mock/pending-interceptors-formatter.js", "../node_modules/undici/lib/mock/mock-agent.js", "../node_modules/undici/lib/global.js", "../node_modules/undici/lib/handler/decorator-handler.js", "../node_modules/undici/lib/interceptor/redirect.js", "../node_modules/undici/lib/interceptor/retry.js", "../node_modules/undici/lib/interceptor/dump.js", "../node_modules/undici/lib/interceptor/dns.js", "../node_modules/undici/lib/web/fetch/headers.js", "../node_modules/undici/lib/web/fetch/response.js", "../node_modules/undici/lib/web/fetch/dispatcher-weakref.js", "../node_modules/undici/lib/web/fetch/request.js", "../node_modules/undici/lib/web/fetch/index.js", "../node_modules/undici/lib/web/fileapi/symbols.js", "../node_modules/undici/lib/web/fileapi/progressevent.js", "../node_modules/undici/lib/web/fileapi/encoding.js", "../node_modules/undici/lib/web/fileapi/util.js", "../node_modules/undici/lib/web/fileapi/filereader.js", "../node_modules/undici/lib/web/cache/symbols.js", "../node_modules/undici/lib/web/cache/util.js", "../node_modules/undici/lib/web/cache/cache.js", "../node_modules/undici/lib/web/cache/cachestorage.js", "../node_modules/undici/lib/web/cookies/constants.js", "../node_modules/undici/lib/web/cookies/util.js", "../node_modules/undici/lib/web/cookies/parse.js", "../node_modules/undici/lib/web/cookies/index.js", "../node_modules/undici/lib/web/websocket/events.js", "../node_modules/undici/lib/web/websocket/constants.js", "../node_modules/undici/lib/web/websocket/symbols.js", "../node_modules/undici/lib/web/websocket/util.js", "../node_modules/undici/lib/web/websocket/frame.js", "../node_modules/undici/lib/web/websocket/connection.js", "../node_modules/undici/lib/web/websocket/permessage-deflate.js", "../node_modules/undici/lib/web/websocket/receiver.js", "../node_modules/undici/lib/web/websocket/sender.js", "../node_modules/undici/lib/web/websocket/websocket.js", "../node_modules/undici/lib/web/eventsource/util.js", "../node_modules/undici/lib/web/eventsource/eventsource-stream.js",Line truncated
|
||||||
|
"sourcesContent": ["'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('Line truncated
|
||||||
|
"mappings": "2tBAAA,IAAAA,GAAAC,EAAAC,IAAA,cAEA,IAAIC,IAAM,QAAQ,KAAK,EACnBC,IAAM,QAAQ,KAAK,EACnBC,GAAO,QAAQ,MAAM,EACrBC,GAAQ,QAAQ,OAAO,EACvBC,IAAS,QAAQ,QAAQ,EACzBC,IAAS,QAAQ,QAAQ,EACzBC,IAAO,QAAQ,MAAM,EAGzBP,GAAQ,aAAeQ,IACvBR,GAAQ,cAAgBS,IACxBT,GAAQ,cAAgBU,IACxBV,GAAQ,eAAiBW,IAGzB,SAASH,IAAaI,EAAS,CAC7B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUV,GAAK,QACdU,CACT,CAJSE,EAAAP,IAAA,gBAMT,SAASC,IAAcG,EAAS,CAC9B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUV,GAAK,QACrBU,EAAM,aAAeG,GACrBH,EAAM,YAAc,IACbA,CACT,CANSE,EAAAN,IAAA,iBAQT,SAASC,IAAcE,EAAS,CAC9B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUT,GAAM,QACfS,CACT,CAJSE,EAAAL,IAAA,iBAMT,SAASC,IAAeC,EAAS,CAC/B,IAAIC,EAAQ,IAAIC,GAAeF,CAAO,EACtC,OAAAC,EAAM,QAAUT,GAAM,QACtBS,EAAM,aAAeG,GACrBH,EAAM,YAAc,IACbA,CACT,CANSE,EAAAJ,IAAA,kBAST,SAASG,GAAeF,EAAS,CAC/B,IAAIK,EAAO,KACXA,EAAK,QAAUL,GAAW,CAAC,EAC3BK,EAAK,aAAeA,EAAK,QAAQ,OAAS,CAAC,EAC3CA,EAAK,WAAaA,EAAK,QAAQ,YAAcd,GAAK,MAAM,kBACxDc,EAAK,SAAW,CAAC,EACjBA,EAAK,QAAU,CAAC,EAEhBA,EAAK,GAAG,OAAQF,EAAA,SAAgBG,EAAQC,EAAMC,EAAMC,EAAc,CAEhE,QADIT,EAAUU,GAAUH,EAAMC,EAAMC,CAAY,EACvCE,EAAI,EAAGC,EAAMP,EAAK,SAAS,OAAQM,EAAIC,EAAK,EAAED,EAAG,CACxD,IAAIE,EAAUR,EAAK,SAASM,CAAC,EAC7B,GAAIE,EAAQ,OAASb,EAAQ,MAAQa,EAAQ,OAASb,EAAQ,KAAM,CAGlEK,EAAK,SAAS,OAAOM,EAAG,CAAC,EACzBE,EAAQ,QAAQ,SAASP,CAAM,EAC/B,MACF,CACF,CACAA,EAAO,QAAQ,EACfD,EAAK,aAAaC,CAAM,CAC1B,EAdgB,SAcf,CACH,CAvBSH,EAAAD,GAAA,kBAwBTP,IAAK,SAASO,GAAgBT,IAAO,YAAY,EAEjDS,GAAe,UAAU,WAAaC,EAAA,SAAoBW,EAAKP,EAAMC,EAAMC,EAAc,CACvF,IAAIJ,EAAO,KACPL,EAAUe,GAAa,CAAC,QAASD,CAAG,EAAGT,EAAK,QAASK,GAAUH,EAAMC,EAAMC,CAAY,CAAC,EAE5F,GAAIJ,EAAK,QAAQ,QAAU,KAAK,WAAY,CAE1CA,EAAK,SAAS,KAAKL,CAAO,EAC1B,MACF,CAGAK,EAAK,aAAaL,EAAS,SAASM,EAAQ,CAC1CA,EAAO,GAAG,OAAQU,CAAM,EACxBV,EAAO,GAAG,QAASW,CAAe,EAClCX,EAAO,GAAG,cAAeW,CAAe,EACxCH,EAAI,SAASR,CAAM,EAEnB,SAASU,GAAS,CAChBX,EAAK,KAAK,OAAQC,EAAQN,CAAO,CACnC,CAFSG,EAAAa,EAAA,UAIT,SAASC,EAAgBC,EAAK,CAC5Bb,EAAK,aAAaC,CAAM,EACxBA,EAAO,eAAe,OAAQU,CAAM,EACpCV,EAAO,eAAe,QAASW,CAAe,EAC9CX,EAAO,eAAe,cAAeW,CAAe,CACtD,CALSd,EAAAc,EAAA,kBAMX,CAAC,CACH,EA5BsC,cA8BtCf,GAAe,UAAU,aAAeC,EAAA,SAAsBH,EAASmB,EAAI,CACzE,IAAId,EAAO,KACPe,EAAc,CAAC,EACnBf,EAAK,QAAQ,KAAKe,CAAW,EAE7B,IAAIC,EAAiBN,GAAa,CAAC,EAAGV,EAAK,aAAc,CACvD,OAAQ,UACR,KAAML,EAAQ,KAAO,IAAMA,EAAQ,KACnC,MAAO,GACP,QAAS,CACP,KAAMA,EAAQ,KAAO,IAAMA,EAAQ,IACrC,CACF,CAAC,EACGA,EAAQ,eACVqB,EAAe,aAAerB,EAAQ,cAEpCqB,EAAe,YACjBA,EAAe,QAAUA,EAAe,SAAW,CAAC,EACpDA,EAAe,QAAQ,qBAAqB,EAAI,SAC5C,IAAI,OAAOA,EAAe,SAAS,EAAE,SAAS,QAAQ,GAG5DC,GAAM,wBAAwB,EAC9B,IAAIC,EAAalB,EAAK,QAAQgB,CAAc,EAC5CE,EAAW,4BAA8B,GACzCA,EAAW,KAAK,WAAYC,CAAU,EACtCD,EAAW,KAAK,UAAWE,CAAS,EACpCF,EAAW,KAAK,UAAWG,CAAS,EACpCH,EAAW,KAAK,QAASI,CAAO,EAChCJ,EAAW,IAAI,EAEf,SAASC,EAAWI,EAAK,CAEvBA,EAAI,QAAU,EAChB,CAHSzB,EAAAqB,EAAA,cAKT,SAASC,EAAUG,EAAKtB,EAAQuB,EAAM,CAEpC,QAAQ,SAAS,UAAW,CAC1BH,EAAUE,EAAKtB,EAAQuB,CAAI,CAC7B,CAAC,CACH,CALS1B,EAAAsB,EAAA,aAOT,SAASC,EAAUE,EAAKtB,EAAQuB,EAAM,CAIpC,GAHAN,EAAW,mBAAmB,EAC9BjB,EAAO,mBAAmB,EAEtBsB,EAAI,aAAe,IAAK,CAC1BN,GAAM,2DACJM,EAAI,UAAU,EAChBtB,EAAO,QAAQ,EACf,IAAIwB,EAAQ,IAAI,MAAM,yDACJF,EAAI,UAAU,EAChCE,EAAM,KAAO,aACb9B,EAAQ,QAAQ,KAAK,QAAS8B,CAAK,EACnCzB,EAAK,aAAae,CAAW,EAC7B,MACF,CACA,GAAIS,EAAK,OAAS,EAAG,CACnBP,GAAM,sCAAsC,EAC5ChB,EAAO,QAAQ,EACf,IAAIwB,EAAQ,IAAI,MAAM,sCAAsC,EAC5DA,EAAM,KAAO,aACb9B,EAAQ,QAAQ,KAAK,QAAS8B,CAAK,EACnCzB,EAAK,aAAae,CAAW,EAC7B,MACF,CACA,OAAAE,GAAM,sCAAsC,EAC5CjB,EAAK,QAAQA,EAAK,QAAQ,QAAQe,CAAW,CAAC,EAAId,EAC3Ca,EAAGb,CAAM,CAClB,CA3BSH,EAAAuB,EAAA,aA6BT,SAASC,EAAQI,EAAO,CACtBR,EAAW,mBAAmB,EAE9BD,GAAM;AAAA,EACAS,EAAM,QAASA,EAAM,KAAK,EAChC,IAAID,EAAQ,IAAI,MAAM,oDACWC,EAAM,OAAO,EAC9CD,EAAM,KAAO,aACb9B,EAAQ,QAAQ,KAAK,QAAS8B,CAAK,EACnCzB,EAAK,aAAae,CAAW,CAC/B,CAVSjB,EAAAwB,EAAA,UAWX,EAnFwC,gBAqFxCzB,GAAe,UAAU,aAAeC,EAAA,SAAsBG,EAAQ,CACpE,IAAI0B,EAAM,KAAK,QAAQ,QAAQ1B,CAAM,EACrC,GAAI0B,IAAQ,GAGZ,MAAK,QAAQ,OAAOA,EAAK,CAAC,EAE1B,IAAInB,EAAU,KAAK,SAAS,MAAM,EAC9BA,GAGF,KAAK,aAAaA,EAAS,SAASP,EAAQ,CAC1CO,EAAQ,QAAQ,SAASP,CAAM,CACjC,CAAC,EAEL,EAfwC,gBAiBxC,SAASF,GAAmBJ,EAASmB,EAAI,CACvC,IAAId,EAAO,KACXH,GAAe,UAAU,aAAa,KAAKG,EAAML,EAAS,SAASM,EAAQ,CACzE,IAAI2B,EAAajC,EAAQ,QAAQ,UAAU,MAAM,EAC7CkC,EAAanB,GAAa,CAAC,EAAGV,EAAK,QAAS,CAC9C,OAAQC,EACR,WAAY2B,EAAaA,EAAW,QAAQ,OAAQ,EAAE,EAAIjC,EAAQ,IACpE,CAAC,EAGGmC,EAAe7C,IAAI,QAAQ,EAAG4C,CAAU,EAC5C7B,EAAK,QAAQA,EAAK,QAAQ,QAAQC,CAAM,CAAC,EAAI6B,EAC7ChB,EAAGgB,CAAY,CACjB,CAAC,CACH,CAdShC,EAAAC,GAAA,sBAiBT,SAASM,GAAUH,EAAMC,EAAMC,EAAc,CAC3C,OAAI,OAAOF,GAAS,SACX,CACL,KAAMA,EACN,KAAMC,EACN,aAAcC,CAChB,EAEKF,CACT,CATSJ,EAAAO,GAAA,aAWT,SAASK,GAAaqB,EAAQ,CAC5B,QAASzB,EAAI,EAAGC,EAAM,UAAU,OAAQD,EAAIC,EAAK,EAAED,EAAG,CACpD,IAAI0B,EAAY,UAAU1B,CAAC,EAC3B,GAAI,OAAO0B,GAAc,SAEvB,QADIC,EAAO,OAAO,KAAKD,CAAS,EACvBE,EAAI,EAAGC,EAASF,EAAK,OAAQC,EAAIC,EAAQ,EAAED,EAAG,CACrD,IAAIE,EAAIH,EAAKC,CAAC,EACVF,EAAUI,CAAC,IAAM,SACnBL,EAAOK,CAAC,EAAIJ,EAAUI,CAAC,EAE3B,CAEJ,CACA,OAAOL,CACT,CAdSjC,EAAAY,GAAA,gBAiBT,IAAIO,GACA,QAAQ,IAAI,YAAc,aAAa,KAAK,QAAQ,IAAI,UAAU,EACpEA,GAAQnB,EAAA,UAAW,CACjB,IAAIuC,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EAC3C,OAAOA,EAAK,CAAC,GAAM,SACrBA,EAAK,CAAC,EAAI,WALine truncated
|
||||||
|
"names": ["require_tunnel", "__commonJSMin", "exports", "net", "tls", "http", "https", "events", "assert", "util", "httpOverHttp", "httpsOverHttp", "httpOverHttps", "httpsOverHttps", "options", "agent", "TunnelingAgent", "__name", "createSecureSocket", "self", "socket", "host", "port", "localAddress", "toOptions", "i", "len", "pending", "req", "mergeOptions", "onFree", "onCloseOrRemove", "err", "cb", "placeholder", "connectOptions", "debug", "connectReq", "onResponse", "onUpgrade", "onConnect", "onError", "res", "head", "error", "cause", "pos", "hostHeader", "tlsOptions", "secureSocket", "target", "overrides", "keys", "j", "keyLen", "k", "args", "require_tunnel", "__commonJSMin", "exports", "module", "require_symbols", "__commonJSMin", "exports", "module", "require_errors", "__commonJSMin", "exports", "module", "kUndiciError", "UndiciError", "__name", "message", "instance", "kConnectTimeoutError", "ConnectTimeoutError", "kHeadersTimeoutError", "HeadersTimeoutError", "kHeadersOverflowError", "HeadersOverflowError", "kBodyTimeoutError", "BodyTimeoutError", "kResponseStatusCodeError", "ResponseStatusCodeError", "statusCode", "headers", "body", "kInvalidArgumentError", "InvalidArgumentError", "kInvalidReturnValueError", "InvalidReturnValueError", "kAbortError", "AbortError", "kRequestAbortedError", "RequestAbortedError", "kInformationalError", "InformationalError", "kRequestContentLengthMismatchError", "RequestContentLengthMismatchError", "kResponseContentLengthMismatchError", "ResponseContentLengthMismatchError", "kClientDestroyedError", "ClientDestroyedError", "kClientClosedError", "ClientClosedError", "kSocketError", "SocketError", "socket", "kNotSupportedError", "NotSupportedError", "kBalancedPoolMissingUpstreamError", "BalancedPoolMissingUpstreamError", "kHTTPParserError", "HTTPParserError", "code", "data", "kResponseExceededMaxSizeError", "ResponseExceededMaxSizeError", "kRequestRetryError", "RequestRetryError", "kResponseError", "ResponseError", "kSecureProxyConnectionError", "SecureProxyConnectionError", "cause", "options", "kMessageSizeExceededError", "MessageSizeExceededError", "require_constants", "__commonJSMin", "exports", "module", "headerNameLowerCasedRecord", "wellknownHeaderNames", "i", "key", "lowerCasedKey", "require_tree", "__commonJSMin", "exports", "module", "wellknownHeaderNames", "headerNameLowerCasedRecord", "TstNode", "_TstNode", "__name", "key", "value", "index", "length", "node", "code", "keylength", "TernarySearchTree", "tree", "i", "require_util", "__commonJSMin", "exports", "module", "assert", "kDestroyed", "kBodyUsed", "kListeners", "kBody", "IncomingMessage", "stream", "net", "Blob", "nodeUtil", "stringify", "EE", "InvalidArgumentError", "headerNameLowerCasedRecord", "tree", "nodeMajor", "nodeMinor", "v", "BodyAsyncIterable", "__name", "body", "wrapRequestBody", "isStream", "bodyLength", "isIterable", "nop", "obj", "isBlobLike", "object", "sTag", "buildURL", "url", "queryParams", "stringified", "isValidPort", "port", "value", "isHttpOrHttpsPrefixed", "parseURL", "origin", "path", "parseOrigin", "getHostname", "host", "idx", "getServerName", "servername", "deepClone", "isAsyncIterable", "state", "isBuffer", "isDestroyed", "destroy", "err", "KEEPALIVE_TIMEOUT_EXPR", "parseKeepAliveTimeout", "val", "m", "headerNameToString", "bufferToLowerCasedHeaderName", "parseHeaders", "headers", "i", "key", "headersValue", "x", "parseRawHeaders", "len", "ret", "hasContentLength", "contentDispositionIdx", "kLen", "n", "buffer", "validateHandler", "handler", "method", "upgrade", "isDisturbed", "isErrored", "isReadable", "getSocketInfo", "socket", "ReadableStreamFrom", "iterable", "iterator", "controller", "done", "buf", "reason", "isFormDataLike", "addAbortListener", "signal", "listener", "hasToWellFormed", "hasIsWellFormed", "toUSVString", "isUSVString", "isTokenCharCode", "c", "isValidHTTPToken", "characters", "headerCharRegex", "isValidHeaderValue", "parseRangeHeader", "range", "addListener", "name", "removeAllListeners", "errorRequest", "client", "request", "kEnumerableProperty", "normalizedMethodRecordsBase", "normalizedMethodRecords", "require_diagnostics", "__commonJSMin", "exports", "module", "diagnosticsChannel", "util", "undiciDebugLog", "fetchDebuglog", "websocketDebuglog", "isClientSet", "channels", "debuglog", "evt", "version", "protocol", "port", "host", "error", "method", "path", "origin", "statusCode", "address", "websocket", "code", "reason", "err", "require_request", "__commonJSMin", "exports", "module", "InvalidArgumentError", "NotSupportedError", "assert", "isValidHTTPToken", "isValidHeaderValue", "isStream", "destroy", "isBuffer", "isFormDataLike", "isIterable", "isBlobLike", "buildURL", "validateHandler", "getServerName", "normalizedMethodRecords", "channels", "headerNameLowerCasedRecord", "invalidPathRegex", "kHandler", "Request", "__name", "origin", "path", "method", "body", "headers", "query", "idempotent", "blocking", "upgrade", "headersTimeout", "bodyTimeout", "resetLine truncated
|
||||||
|
}
|
||||||
-82917
File diff suppressed because it is too large.
Load diff
+6158
File diff suppressed because it is too large.
Load diff
-473
@@ -1,473 +0,0 @@
|
|||||||
/******/ (() => { // webpackBootstrap
|
|
||||||
/******/ "use strict";
|
|
||||||
/******/ /* webpack/runtime/compat */
|
|
||||||
/******/
|
|
||||||
/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";/************************************************************************/
|
|
||||||
var __webpack_exports__ = {};
|
|
||||||
/* global host, data, VMError */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const LocalError = Error;
|
|
||||||
const LocalTypeError = TypeError;
|
|
||||||
const LocalWeakMap = WeakMap;
|
|
||||||
|
|
||||||
const {
|
|
||||||
apply: localReflectApply,
|
|
||||||
defineProperty: localReflectDefineProperty
|
|
||||||
} = Reflect;
|
|
||||||
|
|
||||||
const {
|
|
||||||
set: localWeakMapSet,
|
|
||||||
get: localWeakMapGet
|
|
||||||
} = LocalWeakMap.prototype;
|
|
||||||
|
|
||||||
const {
|
|
||||||
isArray: localArrayIsArray
|
|
||||||
} = Array;
|
|
||||||
|
|
||||||
function uncurryThis(func) {
|
|
||||||
return (thiz, ...args) => localReflectApply(func, thiz, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
const localArrayPrototypeSlice = uncurryThis(Array.prototype.slice);
|
|
||||||
const localArrayPrototypeIncludes = uncurryThis(Array.prototype.includes);
|
|
||||||
const localArrayPrototypePush = uncurryThis(Array.prototype.push);
|
|
||||||
const localArrayPrototypeIndexOf = uncurryThis(Array.prototype.indexOf);
|
|
||||||
const localArrayPrototypeSplice = uncurryThis(Array.prototype.splice);
|
|
||||||
const localStringPrototypeStartsWith = uncurryThis(String.prototype.startsWith);
|
|
||||||
const localStringPrototypeSlice = uncurryThis(String.prototype.slice);
|
|
||||||
const localStringPrototypeIndexOf = uncurryThis(String.prototype.indexOf);
|
|
||||||
|
|
||||||
const {
|
|
||||||
argv: optionArgv,
|
|
||||||
env: optionEnv,
|
|
||||||
console: optionConsole,
|
|
||||||
vm,
|
|
||||||
resolver,
|
|
||||||
extensions
|
|
||||||
} = data;
|
|
||||||
|
|
||||||
function ensureSandboxArray(a) {
|
|
||||||
return localArrayPrototypeSlice(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
const globalPaths = ensureSandboxArray(resolver.globalPaths);
|
|
||||||
|
|
||||||
class Module {
|
|
||||||
|
|
||||||
constructor(id, path, parent) {
|
|
||||||
this.id = id;
|
|
||||||
this.filename = id;
|
|
||||||
this.path = path;
|
|
||||||
this.parent = parent;
|
|
||||||
this.loaded = false;
|
|
||||||
this.paths = path ? ensureSandboxArray(resolver.genLookupPaths(path)) : [];
|
|
||||||
this.children = [];
|
|
||||||
this.exports = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
_updateChildren(child, isNew) {
|
|
||||||
const children = this.children;
|
|
||||||
if (children && (isNew || !localArrayPrototypeIncludes(children, child))) {
|
|
||||||
localArrayPrototypePush(children, child);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
require(id) {
|
|
||||||
return requireImpl(this, id, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const originalRequire = Module.prototype.require;
|
|
||||||
const cacheBuiltins = {__proto__: null};
|
|
||||||
|
|
||||||
function requireImpl(mod, id, direct) {
|
|
||||||
if (direct && mod.require !== originalRequire) {
|
|
||||||
return mod.require(id);
|
|
||||||
}
|
|
||||||
const filename = resolver.resolve(mod, id, undefined, Module._extensions, direct);
|
|
||||||
if (localStringPrototypeStartsWith(filename, 'node:')) {
|
|
||||||
id = localStringPrototypeSlice(filename, 5);
|
|
||||||
let nmod = cacheBuiltins[id];
|
|
||||||
if (!nmod) {
|
|
||||||
nmod = resolver.loadBuiltinModule(vm, id);
|
|
||||||
if (!nmod) throw new VMError(`Cannot find module '${filename}'`, 'ENOTFOUND');
|
|
||||||
cacheBuiltins[id] = nmod;
|
|
||||||
}
|
|
||||||
return nmod;
|
|
||||||
}
|
|
||||||
|
|
||||||
const cachedModule = Module._cache[filename];
|
|
||||||
if (cachedModule !== undefined) {
|
|
||||||
mod._updateChildren(cachedModule, false);
|
|
||||||
return cachedModule.exports;
|
|
||||||
}
|
|
||||||
|
|
||||||
let nmod = cacheBuiltins[id];
|
|
||||||
if (nmod) return nmod;
|
|
||||||
nmod = resolver.loadBuiltinModule(vm, id);
|
|
||||||
if (nmod) {
|
|
||||||
cacheBuiltins[id] = nmod;
|
|
||||||
return nmod;
|
|
||||||
}
|
|
||||||
|
|
||||||
const path = resolver.pathDirname(filename);
|
|
||||||
const module = new Module(filename, path, mod);
|
|
||||||
resolver.registerModule(module, filename, path, mod, direct);
|
|
||||||
mod._updateChildren(module, true);
|
|
||||||
try {
|
|
||||||
Module._cache[filename] = module;
|
|
||||||
const handler = findBestExtensionHandler(filename);
|
|
||||||
handler(module, filename);
|
|
||||||
module.loaded = true;
|
|
||||||
} catch (e) {
|
|
||||||
delete Module._cache[filename];
|
|
||||||
const children = mod.children;
|
|
||||||
if (localArrayIsArray(children)) {
|
|
||||||
const index = localArrayPrototypeIndexOf(children, module);
|
|
||||||
if (index !== -1) {
|
|
||||||
localArrayPrototypeSplice(children, index, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
|
|
||||||
return module.exports;
|
|
||||||
}
|
|
||||||
|
|
||||||
Module.builtinModules = ensureSandboxArray(resolver.getBuiltinModulesList());
|
|
||||||
Module.globalPaths = globalPaths;
|
|
||||||
Module._extensions = {__proto__: null};
|
|
||||||
Module._cache = {__proto__: null};
|
|
||||||
|
|
||||||
{
|
|
||||||
const keys = Object.getOwnPropertyNames(extensions);
|
|
||||||
for (let i = 0; i < keys.length; i++) {
|
|
||||||
const key = keys[i];
|
|
||||||
const handler = extensions[key];
|
|
||||||
Module._extensions[key] = (mod, filename) => handler(mod, filename);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function findBestExtensionHandler(filename) {
|
|
||||||
const name = resolver.pathBasename(filename);
|
|
||||||
for (let i = 0; (i = localStringPrototypeIndexOf(name, '.', i + 1)) !== -1;) {
|
|
||||||
const ext = localStringPrototypeSlice(name, i + 1);
|
|
||||||
const handler = Module._extensions[ext];
|
|
||||||
if (handler) return handler;
|
|
||||||
}
|
|
||||||
const js = Module._extensions['.js'];
|
|
||||||
if (js) return js;
|
|
||||||
const keys = Object.getOwnPropertyNames(Module._extensions);
|
|
||||||
if (keys.length === 0) throw new VMError(`Failed to load '${filename}': Unknown type.`, 'ELOADFAIL');
|
|
||||||
return Module._extensions[keys[0]];
|
|
||||||
}
|
|
||||||
|
|
||||||
function createRequireForModule(mod) {
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
function require(id) {
|
|
||||||
return requireImpl(mod, id, true);
|
|
||||||
}
|
|
||||||
function resolve(id, options) {
|
|
||||||
return resolver.resolve(mod, id, options, Module._extensions, true);
|
|
||||||
}
|
|
||||||
require.resolve = resolve;
|
|
||||||
function paths(id) {
|
|
||||||
return ensureSandboxArray(resolver.lookupPaths(mod, id));
|
|
||||||
}
|
|
||||||
resolve.paths = paths;
|
|
||||||
|
|
||||||
require.extensions = Module._extensions;
|
|
||||||
|
|
||||||
require.cache = Module._cache;
|
|
||||||
|
|
||||||
return require;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepare sandbox.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const TIMERS = new LocalWeakMap();
|
|
||||||
|
|
||||||
class Timeout {
|
|
||||||
}
|
|
||||||
|
|
||||||
class Interval {
|
|
||||||
}
|
|
||||||
|
|
||||||
class Immediate {
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearTimer(timer) {
|
|
||||||
const obj = localReflectApply(localWeakMapGet, TIMERS, [timer]);
|
|
||||||
if (obj) {
|
|
||||||
obj.clear(obj.value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is a function and not an arrow function, since the original is also a function
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
global.setTimeout = function setTimeout(callback, delay, ...args) {
|
|
||||||
if (typeof callback !== 'function') throw new LocalTypeError('"callback" argument must be a function');
|
|
||||||
const obj = new Timeout(callback, args);
|
|
||||||
const cb = () => {
|
|
||||||
localReflectApply(callback, null, args);
|
|
||||||
};
|
|
||||||
const tmr = host.setTimeout(cb, delay);
|
|
||||||
|
|
||||||
const ref = {
|
|
||||||
__proto__: null,
|
|
||||||
clear: host.clearTimeout,
|
|
||||||
value: tmr
|
|
||||||
};
|
|
||||||
|
|
||||||
localReflectApply(localWeakMapSet, TIMERS, [obj, ref]);
|
|
||||||
return obj;
|
|
||||||
};
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
global.setInterval = function setInterval(callback, interval, ...args) {
|
|
||||||
if (typeof callback !== 'function') throw new LocalTypeError('"callback" argument must be a function');
|
|
||||||
const obj = new Interval();
|
|
||||||
const cb = () => {
|
|
||||||
localReflectApply(callback, null, args);
|
|
||||||
};
|
|
||||||
const tmr = host.setInterval(cb, interval);
|
|
||||||
|
|
||||||
const ref = {
|
|
||||||
__proto__: null,
|
|
||||||
clear: host.clearInterval,
|
|
||||||
value: tmr
|
|
||||||
};
|
|
||||||
|
|
||||||
localReflectApply(localWeakMapSet, TIMERS, [obj, ref]);
|
|
||||||
return obj;
|
|
||||||
};
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
global.setImmediate = function setImmediate(callback, ...args) {
|
|
||||||
if (typeof callback !== 'function') throw new LocalTypeError('"callback" argument must be a function');
|
|
||||||
const obj = new Immediate();
|
|
||||||
const cb = () => {
|
|
||||||
localReflectApply(callback, null, args);
|
|
||||||
};
|
|
||||||
const tmr = host.setImmediate(cb);
|
|
||||||
|
|
||||||
const ref = {
|
|
||||||
__proto__: null,
|
|
||||||
clear: host.clearImmediate,
|
|
||||||
value: tmr
|
|
||||||
};
|
|
||||||
|
|
||||||
localReflectApply(localWeakMapSet, TIMERS, [obj, ref]);
|
|
||||||
return obj;
|
|
||||||
};
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
global.clearTimeout = function clearTimeout(timeout) {
|
|
||||||
clearTimer(timeout);
|
|
||||||
};
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
global.clearInterval = function clearInterval(interval) {
|
|
||||||
clearTimer(interval);
|
|
||||||
};
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
global.clearImmediate = function clearImmediate(immediate) {
|
|
||||||
clearTimer(immediate);
|
|
||||||
};
|
|
||||||
|
|
||||||
const localProcess = host.process;
|
|
||||||
|
|
||||||
function vmEmitArgs(event, args) {
|
|
||||||
const allargs = [event];
|
|
||||||
for (let i = 0; i < args.length; i++) {
|
|
||||||
if (!localReflectDefineProperty(allargs, i + 1, {
|
|
||||||
__proto__: null,
|
|
||||||
value: args[i],
|
|
||||||
writable: true,
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
})) throw new LocalError('Unexpected');
|
|
||||||
}
|
|
||||||
return localReflectApply(vm.emit, vm, allargs);
|
|
||||||
}
|
|
||||||
|
|
||||||
const LISTENERS = new LocalWeakMap();
|
|
||||||
const LISTENER_HANDLER = new LocalWeakMap();
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {*} name
|
|
||||||
* @param {*} handler
|
|
||||||
* @this process
|
|
||||||
* @return {this}
|
|
||||||
*/
|
|
||||||
function addListener(name, handler) {
|
|
||||||
if (name !== 'beforeExit' && name !== 'exit') {
|
|
||||||
throw new LocalError(`Access denied to listen for '${name}' event.`);
|
|
||||||
}
|
|
||||||
|
|
||||||
let cb = localReflectApply(localWeakMapGet, LISTENERS, [handler]);
|
|
||||||
if (!cb) {
|
|
||||||
cb = () => {
|
|
||||||
handler();
|
|
||||||
};
|
|
||||||
localReflectApply(localWeakMapSet, LISTENER_HANDLER, [cb, handler]);
|
|
||||||
localReflectApply(localWeakMapSet, LISTENERS, [handler, cb]);
|
|
||||||
}
|
|
||||||
|
|
||||||
localProcess.on(name, cb);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @this process
|
|
||||||
* @return {this}
|
|
||||||
*/
|
|
||||||
// eslint-disable-next-line no-shadow
|
|
||||||
function process() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME wrong class structure
|
|
||||||
global.process = {
|
|
||||||
__proto__: process.prototype,
|
|
||||||
argv: optionArgv !== undefined ? optionArgv : [],
|
|
||||||
title: localProcess.title,
|
|
||||||
version: localProcess.version,
|
|
||||||
versions: localProcess.versions,
|
|
||||||
arch: localProcess.arch,
|
|
||||||
platform: localProcess.platform,
|
|
||||||
env: optionEnv !== undefined ? optionEnv : {},
|
|
||||||
pid: localProcess.pid,
|
|
||||||
features: localProcess.features,
|
|
||||||
nextTick: function nextTick(callback, ...args) {
|
|
||||||
if (typeof callback !== 'function') {
|
|
||||||
throw new LocalError('Callback must be a function.');
|
|
||||||
}
|
|
||||||
|
|
||||||
localProcess.nextTick(()=>{
|
|
||||||
localReflectApply(callback, null, args);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
hrtime: function hrtime(time) {
|
|
||||||
return localProcess.hrtime(time);
|
|
||||||
},
|
|
||||||
cwd: function cwd() {
|
|
||||||
return localProcess.cwd();
|
|
||||||
},
|
|
||||||
addListener,
|
|
||||||
on: addListener,
|
|
||||||
|
|
||||||
once: function once(name, handler) {
|
|
||||||
if (name !== 'beforeExit' && name !== 'exit') {
|
|
||||||
throw new LocalError(`Access denied to listen for '${name}' event.`);
|
|
||||||
}
|
|
||||||
|
|
||||||
let triggered = false;
|
|
||||||
const cb = () => {
|
|
||||||
if (triggered) return;
|
|
||||||
triggered = true;
|
|
||||||
localProcess.removeListener(name, cb);
|
|
||||||
handler();
|
|
||||||
};
|
|
||||||
localReflectApply(localWeakMapSet, LISTENER_HANDLER, [cb, handler]);
|
|
||||||
|
|
||||||
localProcess.on(name, cb);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
},
|
|
||||||
|
|
||||||
listeners: function listeners(name) {
|
|
||||||
if (name !== 'beforeExit' && name !== 'exit') {
|
|
||||||
// Maybe add ({__proto__:null})[name] to throw when name fails in https://tc39.es/ecma262/#sec-topropertykey.
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Filter out listeners, which were not created in this sandbox
|
|
||||||
const all = localProcess.listeners(name);
|
|
||||||
const filtered = [];
|
|
||||||
let j = 0;
|
|
||||||
for (let i = 0; i < all.length; i++) {
|
|
||||||
const h = localReflectApply(localWeakMapGet, LISTENER_HANDLER, [all[i]]);
|
|
||||||
if (h) {
|
|
||||||
if (!localReflectDefineProperty(filtered, j, {
|
|
||||||
__proto__: null,
|
|
||||||
value: h,
|
|
||||||
writable: true,
|
|
||||||
enumerable: true,
|
|
||||||
configurable: true
|
|
||||||
})) throw new LocalError('Unexpected');
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return filtered;
|
|
||||||
},
|
|
||||||
|
|
||||||
removeListener: function removeListener(name, handler) {
|
|
||||||
if (name !== 'beforeExit' && name !== 'exit') {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
const cb = localReflectApply(localWeakMapGet, LISTENERS, [handler]);
|
|
||||||
if (cb) localProcess.removeListener(name, cb);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
},
|
|
||||||
|
|
||||||
umask: function umask() {
|
|
||||||
if (arguments.length) {
|
|
||||||
throw new LocalError('Access denied to set umask.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return localProcess.umask();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (optionConsole === 'inherit') {
|
|
||||||
global.console = host.console;
|
|
||||||
} else if (optionConsole === 'redirect') {
|
|
||||||
global.console = {
|
|
||||||
debug(...args) {
|
|
||||||
vmEmitArgs('console.debug', args);
|
|
||||||
},
|
|
||||||
log(...args) {
|
|
||||||
vmEmitArgs('console.log', args);
|
|
||||||
},
|
|
||||||
info(...args) {
|
|
||||||
vmEmitArgs('console.info', args);
|
|
||||||
},
|
|
||||||
warn(...args) {
|
|
||||||
vmEmitArgs('console.warn', args);
|
|
||||||
},
|
|
||||||
error(...args) {
|
|
||||||
vmEmitArgs('console.error', args);
|
|
||||||
},
|
|
||||||
dir(...args) {
|
|
||||||
vmEmitArgs('console.dir', args);
|
|
||||||
},
|
|
||||||
time() {},
|
|
||||||
timeEnd() {},
|
|
||||||
trace(...args) {
|
|
||||||
vmEmitArgs('console.trace', args);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
__proto__: null,
|
|
||||||
Module,
|
|
||||||
jsonParse: JSON.parse,
|
|
||||||
createRequireForModule
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = __webpack_exports__;
|
|
||||||
/******/ })()
|
|
||||||
;
|
|
||||||
-462
@@ -1,462 +0,0 @@
|
|||||||
/******/ (() => { // webpackBootstrap
|
|
||||||
/******/ "use strict";
|
|
||||||
/******/ /* webpack/runtime/compat */
|
|
||||||
/******/
|
|
||||||
/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";/************************************************************************/
|
|
||||||
var __webpack_exports__ = {};
|
|
||||||
/* global host, bridge, data, context */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const {
|
|
||||||
Object: localObject,
|
|
||||||
Array: localArray,
|
|
||||||
Error: LocalError,
|
|
||||||
Reflect: localReflect,
|
|
||||||
Proxy: LocalProxy,
|
|
||||||
WeakMap: LocalWeakMap,
|
|
||||||
Function: localFunction,
|
|
||||||
Promise: localPromise,
|
|
||||||
eval: localEval
|
|
||||||
} = global;
|
|
||||||
|
|
||||||
const {
|
|
||||||
freeze: localObjectFreeze
|
|
||||||
} = localObject;
|
|
||||||
|
|
||||||
const {
|
|
||||||
getPrototypeOf: localReflectGetPrototypeOf,
|
|
||||||
apply: localReflectApply,
|
|
||||||
deleteProperty: localReflectDeleteProperty,
|
|
||||||
has: localReflectHas,
|
|
||||||
defineProperty: localReflectDefineProperty,
|
|
||||||
setPrototypeOf: localReflectSetPrototypeOf,
|
|
||||||
getOwnPropertyDescriptor: localReflectGetOwnPropertyDescriptor
|
|
||||||
} = localReflect;
|
|
||||||
|
|
||||||
const {
|
|
||||||
isArray: localArrayIsArray
|
|
||||||
} = localArray;
|
|
||||||
|
|
||||||
const {
|
|
||||||
ensureThis,
|
|
||||||
ReadOnlyHandler,
|
|
||||||
from,
|
|
||||||
fromWithFactory,
|
|
||||||
readonlyFactory,
|
|
||||||
connect,
|
|
||||||
addProtoMapping,
|
|
||||||
VMError,
|
|
||||||
ReadOnlyMockHandler
|
|
||||||
} = bridge;
|
|
||||||
|
|
||||||
const {
|
|
||||||
allowAsync,
|
|
||||||
GeneratorFunction,
|
|
||||||
AsyncFunction,
|
|
||||||
AsyncGeneratorFunction
|
|
||||||
} = data;
|
|
||||||
|
|
||||||
const localWeakMapGet = LocalWeakMap.prototype.get;
|
|
||||||
|
|
||||||
function localUnexpected() {
|
|
||||||
return new VMError('Should not happen');
|
|
||||||
}
|
|
||||||
|
|
||||||
// global is originally prototype of host.Object so it can be used to climb up from the sandbox.
|
|
||||||
if (!localReflectSetPrototypeOf(context, localObject.prototype)) throw localUnexpected();
|
|
||||||
|
|
||||||
Object.defineProperties(global, {
|
|
||||||
global: {value: global, writable: true, configurable: true, enumerable: true},
|
|
||||||
globalThis: {value: global, writable: true, configurable: true},
|
|
||||||
GLOBAL: {value: global, writable: true, configurable: true},
|
|
||||||
root: {value: global, writable: true, configurable: true}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!localReflectDefineProperty(global, 'VMError', {
|
|
||||||
__proto__: null,
|
|
||||||
value: VMError,
|
|
||||||
writable: true,
|
|
||||||
enumerable: false,
|
|
||||||
configurable: true
|
|
||||||
})) throw localUnexpected();
|
|
||||||
|
|
||||||
// Fixes buffer unsafe allocation
|
|
||||||
/* eslint-disable no-use-before-define */
|
|
||||||
class BufferHandler extends ReadOnlyHandler {
|
|
||||||
|
|
||||||
apply(target, thiz, args) {
|
|
||||||
if (args.length > 0 && typeof args[0] === 'number') {
|
|
||||||
return LocalBuffer.alloc(args[0]);
|
|
||||||
}
|
|
||||||
return localReflectApply(LocalBuffer.from, LocalBuffer, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
construct(target, args, newTarget) {
|
|
||||||
if (args.length > 0 && typeof args[0] === 'number') {
|
|
||||||
return LocalBuffer.alloc(args[0]);
|
|
||||||
}
|
|
||||||
return localReflectApply(LocalBuffer.from, LocalBuffer, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
/* eslint-enable no-use-before-define */
|
|
||||||
|
|
||||||
const LocalBuffer = fromWithFactory(obj => new BufferHandler(obj), host.Buffer);
|
|
||||||
|
|
||||||
|
|
||||||
if (!localReflectDefineProperty(global, 'Buffer', {
|
|
||||||
__proto__: null,
|
|
||||||
value: LocalBuffer,
|
|
||||||
writable: true,
|
|
||||||
enumerable: false,
|
|
||||||
configurable: true
|
|
||||||
})) throw localUnexpected();
|
|
||||||
|
|
||||||
addProtoMapping(LocalBuffer.prototype, host.Buffer.prototype, 'Uint8Array');
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {*} size Size of new buffer
|
|
||||||
* @this LocalBuffer
|
|
||||||
* @return {LocalBuffer}
|
|
||||||
*/
|
|
||||||
function allocUnsafe(size) {
|
|
||||||
return LocalBuffer.alloc(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
connect(allocUnsafe, host.Buffer.allocUnsafe);
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {*} size Size of new buffer
|
|
||||||
* @this LocalBuffer
|
|
||||||
* @return {LocalBuffer}
|
|
||||||
*/
|
|
||||||
function allocUnsafeSlow(size) {
|
|
||||||
return LocalBuffer.alloc(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
connect(allocUnsafeSlow, host.Buffer.allocUnsafeSlow);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replacement for Buffer inspect
|
|
||||||
*
|
|
||||||
* @param {*} recurseTimes
|
|
||||||
* @param {*} ctx
|
|
||||||
* @this LocalBuffer
|
|
||||||
* @return {string}
|
|
||||||
*/
|
|
||||||
function inspect(recurseTimes, ctx) {
|
|
||||||
// Mimic old behavior, could throw but didn't pass a test.
|
|
||||||
const max = host.INSPECT_MAX_BYTES;
|
|
||||||
const actualMax = Math.min(max, this.length);
|
|
||||||
const remaining = this.length - max;
|
|
||||||
let str = this.hexSlice(0, actualMax).replace(/(.{2})/g, '$1 ').trim();
|
|
||||||
if (remaining > 0) str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`;
|
|
||||||
return `<${this.constructor.name} ${str}>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
connect(inspect, host.Buffer.prototype.inspect);
|
|
||||||
|
|
||||||
connect(localFunction.prototype.bind, host.Function.prototype.bind);
|
|
||||||
|
|
||||||
connect(localObject.prototype.__defineGetter__, host.Object.prototype.__defineGetter__);
|
|
||||||
connect(localObject.prototype.__defineSetter__, host.Object.prototype.__defineSetter__);
|
|
||||||
connect(localObject.prototype.__lookupGetter__, host.Object.prototype.__lookupGetter__);
|
|
||||||
connect(localObject.prototype.__lookupSetter__, host.Object.prototype.__lookupSetter__);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* PrepareStackTrace sanitization
|
|
||||||
*/
|
|
||||||
|
|
||||||
const oldPrepareStackTraceDesc = localReflectGetOwnPropertyDescriptor(LocalError, 'prepareStackTrace');
|
|
||||||
|
|
||||||
let currentPrepareStackTrace = LocalError.prepareStackTrace;
|
|
||||||
const wrappedPrepareStackTrace = new LocalWeakMap();
|
|
||||||
if (typeof currentPrepareStackTrace === 'function') {
|
|
||||||
wrappedPrepareStackTrace.set(currentPrepareStackTrace, currentPrepareStackTrace);
|
|
||||||
}
|
|
||||||
|
|
||||||
let OriginalCallSite;
|
|
||||||
LocalError.prepareStackTrace = (e, sst) => {
|
|
||||||
OriginalCallSite = sst[0].constructor;
|
|
||||||
};
|
|
||||||
new LocalError().stack;
|
|
||||||
if (typeof OriginalCallSite === 'function') {
|
|
||||||
LocalError.prepareStackTrace = undefined;
|
|
||||||
|
|
||||||
function makeCallSiteGetters(list) {
|
|
||||||
const callSiteGetters = [];
|
|
||||||
for (let i=0; i<list.length; i++) {
|
|
||||||
const name = list[i];
|
|
||||||
const func = OriginalCallSite.prototype[name];
|
|
||||||
callSiteGetters[i] = {__proto__: null,
|
|
||||||
name,
|
|
||||||
propName: '_' + name,
|
|
||||||
func: (thiz) => {
|
|
||||||
return localReflectApply(func, thiz, []);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return callSiteGetters;
|
|
||||||
}
|
|
||||||
|
|
||||||
function applyCallSiteGetters(thiz, callSite, getters) {
|
|
||||||
for (let i=0; i<getters.length; i++) {
|
|
||||||
const getter = getters[i];
|
|
||||||
localReflectDefineProperty(thiz, getter.propName, {
|
|
||||||
__proto__: null,
|
|
||||||
value: getter.func(callSite)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const callSiteGetters = makeCallSiteGetters([
|
|
||||||
'getTypeName',
|
|
||||||
'getFunctionName',
|
|
||||||
'getMethodName',
|
|
||||||
'getFileName',
|
|
||||||
'getLineNumber',
|
|
||||||
'getColumnNumber',
|
|
||||||
'getEvalOrigin',
|
|
||||||
'isToplevel',
|
|
||||||
'isEval',
|
|
||||||
'isNative',
|
|
||||||
'isConstructor',
|
|
||||||
'isAsync',
|
|
||||||
'isPromiseAll',
|
|
||||||
'getPromiseIndex'
|
|
||||||
]);
|
|
||||||
|
|
||||||
class CallSite {
|
|
||||||
constructor(callSite) {
|
|
||||||
applyCallSiteGetters(this, callSite, callSiteGetters);
|
|
||||||
}
|
|
||||||
getThis() {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
getFunction() {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
toString() {
|
|
||||||
return 'CallSite {}';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for (let i=0; i<callSiteGetters.length; i++) {
|
|
||||||
const name = callSiteGetters[i].name;
|
|
||||||
const funcProp = localReflectGetOwnPropertyDescriptor(OriginalCallSite.prototype, name);
|
|
||||||
if (!funcProp) continue;
|
|
||||||
const propertyName = callSiteGetters[i].propName;
|
|
||||||
const func = {func() {
|
|
||||||
return this[propertyName];
|
|
||||||
}}.func;
|
|
||||||
const nameProp = localReflectGetOwnPropertyDescriptor(func, 'name');
|
|
||||||
if (!nameProp) throw localUnexpected();
|
|
||||||
nameProp.value = name;
|
|
||||||
if (!localReflectDefineProperty(func, 'name', nameProp)) throw localUnexpected();
|
|
||||||
funcProp.value = func;
|
|
||||||
if (!localReflectDefineProperty(CallSite.prototype, name, funcProp)) throw localUnexpected();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!localReflectDefineProperty(LocalError, 'prepareStackTrace', {
|
|
||||||
configurable: false,
|
|
||||||
enumerable: false,
|
|
||||||
get() {
|
|
||||||
return currentPrepareStackTrace;
|
|
||||||
},
|
|
||||||
set(value) {
|
|
||||||
if (typeof(value) !== 'function') {
|
|
||||||
currentPrepareStackTrace = value;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const wrapped = localReflectApply(localWeakMapGet, wrappedPrepareStackTrace, [value]);
|
|
||||||
if (wrapped) {
|
|
||||||
currentPrepareStackTrace = wrapped;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const newWrapped = (error, sst) => {
|
|
||||||
if (localArrayIsArray(sst)) {
|
|
||||||
for (let i=0; i < sst.length; i++) {
|
|
||||||
const cs = sst[i];
|
|
||||||
if (typeof cs === 'object' && localReflectGetPrototypeOf(cs) === OriginalCallSite.prototype) {
|
|
||||||
sst[i] = new CallSite(cs);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value(error, sst);
|
|
||||||
};
|
|
||||||
wrappedPrepareStackTrace.set(value, newWrapped);
|
|
||||||
wrappedPrepareStackTrace.set(newWrapped, newWrapped);
|
|
||||||
currentPrepareStackTrace = newWrapped;
|
|
||||||
}
|
|
||||||
})) throw localUnexpected();
|
|
||||||
} else if (oldPrepareStackTraceDesc) {
|
|
||||||
localReflectDefineProperty(LocalError, 'prepareStackTrace', oldPrepareStackTraceDesc);
|
|
||||||
} else {
|
|
||||||
localReflectDeleteProperty(LocalError, 'prepareStackTrace');
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Exception sanitization
|
|
||||||
*/
|
|
||||||
|
|
||||||
const withProxy = localObjectFreeze({
|
|
||||||
__proto__: null,
|
|
||||||
has(target, key) {
|
|
||||||
if (key === host.INTERNAL_STATE_NAME) return false;
|
|
||||||
return localReflectHas(target, key);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const interanState = localObjectFreeze({
|
|
||||||
__proto__: null,
|
|
||||||
wrapWith(x) {
|
|
||||||
return new LocalProxy(x, withProxy);
|
|
||||||
},
|
|
||||||
handleException: ensureThis,
|
|
||||||
import(what) {
|
|
||||||
throw new VMError('Dynamic Import not supported');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!localReflectDefineProperty(global, host.INTERNAL_STATE_NAME, {
|
|
||||||
__proto__: null,
|
|
||||||
configurable: false,
|
|
||||||
enumerable: false,
|
|
||||||
writable: false,
|
|
||||||
value: interanState
|
|
||||||
})) throw localUnexpected();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Eval sanitization
|
|
||||||
*/
|
|
||||||
|
|
||||||
function throwAsync() {
|
|
||||||
return new VMError('Async not available');
|
|
||||||
}
|
|
||||||
|
|
||||||
function makeFunction(inputArgs, isAsync, isGenerator) {
|
|
||||||
const lastArgs = inputArgs.length - 1;
|
|
||||||
let code = lastArgs >= 0 ? `${inputArgs[lastArgs]}` : '';
|
|
||||||
let args = lastArgs > 0 ? `${inputArgs[0]}` : '';
|
|
||||||
for (let i = 1; i < lastArgs; i++) {
|
|
||||||
args += `,${inputArgs[i]}`;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
code = host.transformAndCheck(args, code, isAsync, isGenerator, allowAsync);
|
|
||||||
} catch (e) {
|
|
||||||
throw bridge.from(e);
|
|
||||||
}
|
|
||||||
return localEval(code);
|
|
||||||
}
|
|
||||||
|
|
||||||
const FunctionHandler = {
|
|
||||||
__proto__: null,
|
|
||||||
apply(target, thiz, args) {
|
|
||||||
return makeFunction(args, this.isAsync, this.isGenerator);
|
|
||||||
},
|
|
||||||
construct(target, args, newTarget) {
|
|
||||||
return makeFunction(args, this.isAsync, this.isGenerator);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const EvalHandler = {
|
|
||||||
__proto__: null,
|
|
||||||
apply(target, thiz, args) {
|
|
||||||
if (args.length === 0) return undefined;
|
|
||||||
let code = `${args[0]}`;
|
|
||||||
try {
|
|
||||||
code = host.transformAndCheck(null, code, false, false, allowAsync);
|
|
||||||
} catch (e) {
|
|
||||||
throw bridge.from(e);
|
|
||||||
}
|
|
||||||
return localEval(code);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const AsyncErrorHandler = {
|
|
||||||
__proto__: null,
|
|
||||||
apply(target, thiz, args) {
|
|
||||||
throw throwAsync();
|
|
||||||
},
|
|
||||||
construct(target, args, newTarget) {
|
|
||||||
throw throwAsync();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function makeCheckFunction(isAsync, isGenerator) {
|
|
||||||
if (isAsync && !allowAsync) return AsyncErrorHandler;
|
|
||||||
return {
|
|
||||||
__proto__: FunctionHandler,
|
|
||||||
isAsync,
|
|
||||||
isGenerator
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function overrideWithProxy(obj, prop, value, handler) {
|
|
||||||
const proxy = new LocalProxy(value, handler);
|
|
||||||
if (!localReflectDefineProperty(obj, prop, {__proto__: null, value: proxy})) throw localUnexpected();
|
|
||||||
return proxy;
|
|
||||||
}
|
|
||||||
|
|
||||||
const proxiedFunction = overrideWithProxy(localFunction.prototype, 'constructor', localFunction, makeCheckFunction(false, false));
|
|
||||||
if (GeneratorFunction) {
|
|
||||||
if (!localReflectSetPrototypeOf(GeneratorFunction, proxiedFunction)) throw localUnexpected();
|
|
||||||
overrideWithProxy(GeneratorFunction.prototype, 'constructor', GeneratorFunction, makeCheckFunction(false, true));
|
|
||||||
}
|
|
||||||
if (AsyncFunction) {
|
|
||||||
if (!localReflectSetPrototypeOf(AsyncFunction, proxiedFunction)) throw localUnexpected();
|
|
||||||
overrideWithProxy(AsyncFunction.prototype, 'constructor', AsyncFunction, makeCheckFunction(true, false));
|
|
||||||
}
|
|
||||||
if (AsyncGeneratorFunction) {
|
|
||||||
if (!localReflectSetPrototypeOf(AsyncGeneratorFunction, proxiedFunction)) throw localUnexpected();
|
|
||||||
overrideWithProxy(AsyncGeneratorFunction.prototype, 'constructor', AsyncGeneratorFunction, makeCheckFunction(true, true));
|
|
||||||
}
|
|
||||||
|
|
||||||
global.Function = proxiedFunction;
|
|
||||||
global.eval = new LocalProxy(localEval, EvalHandler);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Promise sanitization
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (localPromise && !allowAsync) {
|
|
||||||
|
|
||||||
const PromisePrototype = localPromise.prototype;
|
|
||||||
|
|
||||||
overrideWithProxy(PromisePrototype, 'then', PromisePrototype.then, AsyncErrorHandler);
|
|
||||||
// This seems not to work, and will produce
|
|
||||||
// UnhandledPromiseRejectionWarning: TypeError: Method Promise.prototype.then called on incompatible receiver [object Object].
|
|
||||||
// This is likely caused since the host.Promise.prototype.then cannot use the VM Proxy object.
|
|
||||||
// Contextify.connect(host.Promise.prototype.then, Promise.prototype.then);
|
|
||||||
|
|
||||||
if (PromisePrototype.finally) {
|
|
||||||
overrideWithProxy(PromisePrototype, 'finally', PromisePrototype.finally, AsyncErrorHandler);
|
|
||||||
// Contextify.connect(host.Promise.prototype.finally, Promise.prototype.finally);
|
|
||||||
}
|
|
||||||
if (Promise.prototype.catch) {
|
|
||||||
overrideWithProxy(PromisePrototype, 'catch', PromisePrototype.catch, AsyncErrorHandler);
|
|
||||||
// Contextify.connect(host.Promise.prototype.catch, Promise.prototype.catch);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function readonly(other, mock) {
|
|
||||||
// Note: other@other(unsafe) mock@other(unsafe) returns@this(unsafe) throws@this(unsafe)
|
|
||||||
if (!mock) return fromWithFactory(readonlyFactory, other);
|
|
||||||
const tmock = from(mock);
|
|
||||||
return fromWithFactory(obj=>new ReadOnlyMockHandler(obj, tmock), other);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
__proto__: null,
|
|
||||||
readonly,
|
|
||||||
global
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = __webpack_exports__;
|
|
||||||
/******/ })()
|
|
||||||
;
|
|
||||||
+21
-25
@@ -1,10 +1,6 @@
|
|||||||
variable "NODE_VERSION" {
|
target "_common" {
|
||||||
default = "12"
|
|
||||||
}
|
|
||||||
|
|
||||||
target "node-version" {
|
|
||||||
args = {
|
args = {
|
||||||
NODE_VERSION = NODE_VERSION
|
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,58 +9,58 @@ group "default" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group "pre-checkin" {
|
group "pre-checkin" {
|
||||||
targets = ["vendor-update", "format", "build"]
|
targets = ["vendor", "format", "build"]
|
||||||
}
|
}
|
||||||
|
|
||||||
group "validate" {
|
group "validate" {
|
||||||
targets = ["format-validate", "build-validate", "vendor-validate"]
|
targets = ["lint", "build-validate", "vendor-validate"]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "build" {
|
target "build" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "build-update"
|
target = "build-update"
|
||||||
output = ["."]
|
output = ["."]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "build-validate" {
|
target "build-validate" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "build-validate"
|
target = "build-validate"
|
||||||
output = ["type=cacheonly"]
|
output = ["type=cacheonly"]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "format" {
|
target "format" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "format-update"
|
target = "format-update"
|
||||||
output = ["."]
|
output = ["."]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "format-validate" {
|
target "lint" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "format-validate"
|
target = "lint"
|
||||||
output = ["type=cacheonly"]
|
output = ["type=cacheonly"]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "vendor-update" {
|
target "vendor" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "vendor-update"
|
target = "vendor-update"
|
||||||
output = ["."]
|
output = ["."]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "vendor-validate" {
|
target "vendor-validate" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "vendor-validate"
|
target = "vendor-validate"
|
||||||
output = ["type=cacheonly"]
|
output = ["type=cacheonly"]
|
||||||
}
|
}
|
||||||
|
|
||||||
target "test" {
|
target "test" {
|
||||||
inherits = ["node-version"]
|
inherits = ["_common"]
|
||||||
dockerfile = "./hack/build.Dockerfile"
|
dockerfile = "dev.Dockerfile"
|
||||||
target = "test-coverage"
|
target = "test-coverage"
|
||||||
output = ["./coverage"]
|
output = ["./coverage"]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
import {defineConfig} from 'eslint/config';
|
||||||
|
import js from '@eslint/js';
|
||||||
|
import tseslint from '@typescript-eslint/eslint-plugin';
|
||||||
|
import vitest from '@vitest/eslint-plugin';
|
||||||
|
import globals from 'globals';
|
||||||
|
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
||||||
|
import eslintPluginPrettier from 'eslint-plugin-prettier';
|
||||||
|
|
||||||
|
export default defineConfig([
|
||||||
|
{
|
||||||
|
ignores: ['.yarn/**/*', 'coverage/**/*', 'dist/**/*']
|
||||||
|
},
|
||||||
|
js.configs.recommended,
|
||||||
|
...tseslint.configs['flat/recommended'],
|
||||||
|
eslintConfigPrettier,
|
||||||
|
{
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.node
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['__tests__/**'],
|
||||||
|
...vitest.configs.recommended,
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.node,
|
||||||
|
...vitest.environments.env.globals
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
...vitest.configs.recommended.rules,
|
||||||
|
'vitest/no-conditional-expect': 'error',
|
||||||
|
'vitest/no-disabled-tests': 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
plugins: {
|
||||||
|
prettier: eslintPluginPrettier
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'prettier/prettier': 'error',
|
||||||
|
'@typescript-eslint/no-require-imports': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
allowAsImport: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
# syntax=docker/dockerfile:1.3-labs
|
|
||||||
|
|
||||||
ARG NODE_VERSION
|
|
||||||
ARG DOCKER_VERSION=20.10.10
|
|
||||||
ARG BUILDX_VERSION=0.7.0
|
|
||||||
|
|
||||||
FROM node:${NODE_VERSION}-alpine AS base
|
|
||||||
RUN apk add --no-cache cpio findutils git
|
|
||||||
WORKDIR /src
|
|
||||||
|
|
||||||
FROM base AS deps
|
|
||||||
RUN --mount=type=bind,target=.,rw \
|
|
||||||
--mount=type=cache,target=/src/node_modules \
|
|
||||||
yarn install && mkdir /vendor && cp yarn.lock /vendor
|
|
||||||
|
|
||||||
FROM scratch AS vendor-update
|
|
||||||
COPY --from=deps /vendor /
|
|
||||||
|
|
||||||
FROM deps AS vendor-validate
|
|
||||||
RUN --mount=type=bind,target=.,rw <<EOT
|
|
||||||
set -e
|
|
||||||
git add -A
|
|
||||||
cp -rf /vendor/* .
|
|
||||||
if [ -n "$(git status --porcelain -- yarn.lock)" ]; then
|
|
||||||
echo >&2 'ERROR: Vendor result differs. Please vendor your package with "docker buildx bake vendor-update"'
|
|
||||||
git status --porcelain -- yarn.lock
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
EOT
|
|
||||||
|
|
||||||
FROM deps AS build
|
|
||||||
RUN --mount=type=bind,target=.,rw \
|
|
||||||
--mount=type=cache,target=/src/node_modules \
|
|
||||||
yarn run build && mkdir /out && cp -Rf dist /out/
|
|
||||||
|
|
||||||
FROM scratch AS build-update
|
|
||||||
COPY --from=build /out /
|
|
||||||
|
|
||||||
FROM build AS build-validate
|
|
||||||
RUN --mount=type=bind,target=.,rw <<EOT
|
|
||||||
set -e
|
|
||||||
git add -A
|
|
||||||
cp -rf /out/* .
|
|
||||||
if [ -n "$(git status --porcelain -- dist)" ]; then
|
|
||||||
echo >&2 'ERROR: Build result differs. Please build first with "docker buildx bake build"'
|
|
||||||
git status --porcelain -- dist
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
EOT
|
|
||||||
|
|
||||||
FROM deps AS format
|
|
||||||
RUN --mount=type=bind,target=.,rw \
|
|
||||||
--mount=type=cache,target=/src/node_modules \
|
|
||||||
yarn run format \
|
|
||||||
&& mkdir /out && find . -name '*.ts' -not -path './node_modules/*' | cpio -pdm /out
|
|
||||||
|
|
||||||
FROM scratch AS format-update
|
|
||||||
COPY --from=format /out /
|
|
||||||
|
|
||||||
FROM deps AS format-validate
|
|
||||||
RUN --mount=type=bind,target=.,rw \
|
|
||||||
--mount=type=cache,target=/src/node_modules \
|
|
||||||
yarn run format-check
|
|
||||||
|
|
||||||
FROM docker:${DOCKER_VERSION} as docker
|
|
||||||
FROM docker/buildx-bin:${BUILDX_VERSION} as buildx
|
|
||||||
|
|
||||||
FROM deps AS test
|
|
||||||
ENV RUNNER_TEMP=/tmp/github_runner
|
|
||||||
ENV RUNNER_TOOL_CACHE=/tmp/github_tool_cache
|
|
||||||
RUN --mount=type=bind,target=.,rw \
|
|
||||||
--mount=type=cache,target=/src/node_modules \
|
|
||||||
--mount=type=bind,from=docker,source=/usr/local/bin/docker,target=/usr/bin/docker \
|
|
||||||
--mount=type=bind,from=buildx,source=/buildx,target=/usr/libexec/docker/cli-plugins/docker-buildx \
|
|
||||||
yarn run test --coverageDirectory=/tmp/coverage
|
|
||||||
|
|
||||||
FROM scratch AS test-coverage
|
|
||||||
COPY --from=test /tmp/coverage /
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
clearMocks: true,
|
|
||||||
moduleFileExtensions: ['js', 'ts'],
|
|
||||||
setupFiles: ["dotenv/config"],
|
|
||||||
testEnvironment: 'node',
|
|
||||||
testMatch: ['**/*.test.ts'],
|
|
||||||
testRunner: 'jest-circus/runner',
|
|
||||||
transform: {
|
|
||||||
'^.+\\.ts$': 'ts-jest'
|
|
||||||
},
|
|
||||||
verbose: false
|
|
||||||
}
|
|
||||||
+35
-31
@@ -1,13 +1,14 @@
|
|||||||
{
|
{
|
||||||
"name": "docker-login",
|
"name": "docker-login",
|
||||||
"description": "GitHub Action to login against a Docker registry",
|
"description": "GitHub Action to login against a Docker registry",
|
||||||
"main": "lib/main.js",
|
"type": "module",
|
||||||
|
"main": "src/main.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsc && ncc build",
|
"build": "esbuild src/main.ts --bundle --platform=node --target=node24 --format=cjs --outfile=dist/index.cjs --sourcemap --minify --keep-names && yarn run license",
|
||||||
"format": "prettier --write **/*.ts",
|
"lint": "eslint --max-warnings=0 .",
|
||||||
"format-check": "prettier --check **/*.ts",
|
"format": "eslint --fix .",
|
||||||
"test": "jest --coverage",
|
"test": "vitest run",
|
||||||
"pre-checkin": "yarn run format && yarn run build"
|
"license": "generate-license-file --input package.json --output dist/licenses.txt --overwrite --ci --no-spinner --eol lf"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -18,33 +19,36 @@
|
|||||||
"docker",
|
"docker",
|
||||||
"login"
|
"login"
|
||||||
],
|
],
|
||||||
"author": "Docker",
|
"author": "Docker Inc.",
|
||||||
"contributors": [
|
"license": "Apache-2.0",
|
||||||
{
|
"packageManager": "yarn@4.15.0",
|
||||||
"name": "CrazyMax",
|
|
||||||
"url": "https://crazymax.dev"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.6.0",
|
"@actions/core": "^3.0.1",
|
||||||
"@actions/exec": "^1.1.0",
|
"@actions/http-client": "^4.0.1",
|
||||||
"@actions/io": "^1.1.1",
|
"@aws-sdk/client-ecr": "^3.1154.0",
|
||||||
"@aws-sdk/client-ecr": "^3.45.0",
|
"@aws-sdk/client-ecr-public": "^3.1154.0",
|
||||||
"@aws-sdk/client-ecr-public": "^3.45.0",
|
"@docker/actions-toolkit": "^0.107.0",
|
||||||
"proxy-agent": "^5.0.0"
|
"http-proxy-agent": "^9.1.0",
|
||||||
|
"https-proxy-agent": "^9.1.0",
|
||||||
|
"js-yaml": "^5.5.0",
|
||||||
|
"uuid": "^14.0.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^26.0.23",
|
"@eslint/js": "^9.39.3",
|
||||||
"@types/node": "^14.17.4",
|
"@types/js-yaml": "^4.0.9",
|
||||||
"@vercel/ncc": "^0.28.6",
|
"@types/node": "^24.11.0",
|
||||||
"dotenv": "^8.6.0",
|
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
||||||
"jest": "^26.6.3",
|
"@typescript-eslint/parser": "^8.56.1",
|
||||||
"jest-circus": "^26.6.3",
|
"@vitest/coverage-v8": "^4.0.18",
|
||||||
"jest-runtime": "^26.6.3",
|
"@vitest/eslint-plugin": "^1.6.9",
|
||||||
"prettier": "^2.3.2",
|
"esbuild": "^0.28.0",
|
||||||
"ts-jest": "^26.5.6",
|
"eslint": "^9.39.3",
|
||||||
"typescript": "^3.9.10",
|
"eslint-config-prettier": "^10.1.8",
|
||||||
"typescript-formatter": "^7.2.2"
|
"eslint-plugin-prettier": "^5.5.5",
|
||||||
|
"generate-license-file": "^4.1.1",
|
||||||
|
"globals": "^17.3.0",
|
||||||
|
"prettier": "^3.8.1",
|
||||||
|
"typescript": "^5.9.3",
|
||||||
|
"vitest": "^4.0.18"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+16
-10
@@ -1,17 +1,19 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import {ECR} from '@aws-sdk/client-ecr';
|
import {ECR} from '@aws-sdk/client-ecr';
|
||||||
import {ECRPUBLIC} from '@aws-sdk/client-ecr-public';
|
import {ECRPUBLIC} from '@aws-sdk/client-ecr-public';
|
||||||
import {NodeHttpHandler} from '@aws-sdk/node-http-handler';
|
import {NodeHttpHandler} from '@smithy/node-http-handler';
|
||||||
import ProxyAgent from 'proxy-agent';
|
import {HttpProxyAgent} from 'http-proxy-agent';
|
||||||
|
import {HttpsProxyAgent} from 'https-proxy-agent';
|
||||||
|
|
||||||
const ecrRegistryRegex = /^(([0-9]{12})\.dkr\.ecr\.(.+)\.amazonaws\.com(.cn)?)(\/([^:]+)(:.+)?)?$/;
|
const ecrRegistryRegex = /^(([0-9]{12})\.(dkr\.ecr|dkr-ecr)\.(.+)\.(on\.aws|amazonaws\.(com(.cn)?|eu)))(\/([^:]+)(:.+)?)?$/;
|
||||||
|
const ecrPublicRegistryRegex = /public\.ecr\.aws|ecr-public\.aws\.com/;
|
||||||
|
|
||||||
export const isECR = (registry: string): boolean => {
|
export const isECR = (registry: string): boolean => {
|
||||||
return ecrRegistryRegex.test(registry) || isPubECR(registry);
|
return ecrRegistryRegex.test(registry) || isPubECR(registry);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const isPubECR = (registry: string): boolean => {
|
export const isPubECR = (registry: string): boolean => {
|
||||||
return registry === 'public.ecr.aws';
|
return ecrPublicRegistryRegex.test(registry);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getRegion = (registry: string): string => {
|
export const getRegion = (registry: string): string => {
|
||||||
@@ -22,7 +24,7 @@ export const getRegion = (registry: string): string => {
|
|||||||
if (!matches) {
|
if (!matches) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
return matches[3];
|
return matches[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getAccountIDs = (registry: string): string[] => {
|
export const getAccountIDs = (registry: string): string[] => {
|
||||||
@@ -33,7 +35,7 @@ export const getAccountIDs = (registry: string): string[] => {
|
|||||||
if (!matches) {
|
if (!matches) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
let accountIDs: Array<string> = [matches[2]];
|
const accountIDs: Array<string> = [matches[2]];
|
||||||
if (process.env.AWS_ACCOUNT_IDS) {
|
if (process.env.AWS_ACCOUNT_IDS) {
|
||||||
accountIDs.push(...process.env.AWS_ACCOUNT_IDS.split(','));
|
accountIDs.push(...process.env.AWS_ACCOUNT_IDS.split(','));
|
||||||
}
|
}
|
||||||
@@ -56,18 +58,18 @@ export const getRegistriesData = async (registry: string, username?: string, pas
|
|||||||
authTokenRequest['registryIds'] = accountIDs;
|
authTokenRequest['registryIds'] = accountIDs;
|
||||||
}
|
}
|
||||||
|
|
||||||
let httpProxyAgent: any = null;
|
let httpProxyAgent;
|
||||||
const httpProxy = process.env.http_proxy || process.env.HTTP_PROXY || '';
|
const httpProxy = process.env.http_proxy || process.env.HTTP_PROXY || '';
|
||||||
if (httpProxy) {
|
if (httpProxy) {
|
||||||
core.debug(`Using http proxy ${httpProxy}`);
|
core.debug(`Using http proxy ${httpProxy}`);
|
||||||
httpProxyAgent = new ProxyAgent(httpProxy);
|
httpProxyAgent = new HttpProxyAgent(httpProxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
let httpsProxyAgent: any = null;
|
let httpsProxyAgent;
|
||||||
const httpsProxy = process.env.https_proxy || process.env.HTTPS_PROXY || '';
|
const httpsProxy = process.env.https_proxy || process.env.HTTPS_PROXY || '';
|
||||||
if (httpsProxy) {
|
if (httpsProxy) {
|
||||||
core.debug(`Using https proxy ${httpsProxy}`);
|
core.debug(`Using https proxy ${httpsProxy}`);
|
||||||
httpsProxyAgent = new ProxyAgent(httpsProxy);
|
httpsProxyAgent = new HttpsProxyAgent(httpsProxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
const credentials =
|
const credentials =
|
||||||
@@ -95,6 +97,8 @@ export const getRegistriesData = async (registry: string, username?: string, pas
|
|||||||
}
|
}
|
||||||
const authToken = Buffer.from(authTokenResponse.authorizationData.authorizationToken, 'base64').toString('utf-8');
|
const authToken = Buffer.from(authTokenResponse.authorizationData.authorizationToken, 'base64').toString('utf-8');
|
||||||
const creds = authToken.split(':', 2);
|
const creds = authToken.split(':', 2);
|
||||||
|
core.setSecret(creds[0]); // redacted in workflow logs
|
||||||
|
core.setSecret(creds[1]); // redacted in workflow logs
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
registry: 'public.ecr.aws',
|
registry: 'public.ecr.aws',
|
||||||
@@ -121,6 +125,8 @@ export const getRegistriesData = async (registry: string, username?: string, pas
|
|||||||
for (const authData of authTokenResponse.authorizationData) {
|
for (const authData of authTokenResponse.authorizationData) {
|
||||||
const authToken = Buffer.from(authData.authorizationToken || '', 'base64').toString('utf-8');
|
const authToken = Buffer.from(authData.authorizationToken || '', 'base64').toString('utf-8');
|
||||||
const creds = authToken.split(':', 2);
|
const creds = authToken.split(':', 2);
|
||||||
|
core.setSecret(creds[0]); // redacted in workflow logs
|
||||||
|
core.setSecret(creds[1]); // redacted in workflow logs
|
||||||
regDatas.push({
|
regDatas.push({
|
||||||
registry: authData.proxyEndpoint || '',
|
registry: authData.proxyEndpoint || '',
|
||||||
username: creds[0],
|
username: creds[0],
|
||||||
|
|||||||
+99
-1
@@ -1,11 +1,27 @@
|
|||||||
|
import path from 'path';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
import * as yaml from 'js-yaml';
|
||||||
|
|
||||||
|
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
|
||||||
|
import {Util} from '@docker/actions-toolkit/lib/util.js';
|
||||||
|
|
||||||
export interface Inputs {
|
export interface Inputs {
|
||||||
registry: string;
|
registry: string;
|
||||||
username: string;
|
username: string;
|
||||||
password: string;
|
password: string;
|
||||||
|
scope: string;
|
||||||
ecr: string;
|
ecr: string;
|
||||||
logout: boolean;
|
logout: boolean;
|
||||||
|
registryAuth: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Auth {
|
||||||
|
registry: string;
|
||||||
|
username: string;
|
||||||
|
password: string;
|
||||||
|
scope: string;
|
||||||
|
ecr: string;
|
||||||
|
configDir: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getInputs(): Inputs {
|
export function getInputs(): Inputs {
|
||||||
@@ -13,7 +29,89 @@ export function getInputs(): Inputs {
|
|||||||
registry: core.getInput('registry'),
|
registry: core.getInput('registry'),
|
||||||
username: core.getInput('username'),
|
username: core.getInput('username'),
|
||||||
password: core.getInput('password'),
|
password: core.getInput('password'),
|
||||||
|
scope: core.getInput('scope'),
|
||||||
ecr: core.getInput('ecr'),
|
ecr: core.getInput('ecr'),
|
||||||
logout: core.getBooleanInput('logout')
|
logout: core.getBooleanInput('logout'),
|
||||||
|
registryAuth: core.getInput('registry-auth')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getAuthList(inputs: Inputs): Array<Auth> {
|
||||||
|
if (inputs.registryAuth && (inputs.registry || inputs.username || inputs.password || inputs.scope || inputs.ecr)) {
|
||||||
|
throw new Error('Cannot use registry-auth with other inputs');
|
||||||
|
}
|
||||||
|
let auths: Array<Auth> = [];
|
||||||
|
if (!inputs.registryAuth) {
|
||||||
|
const registry = inputs.registry || 'docker.io';
|
||||||
|
auths.push({
|
||||||
|
registry,
|
||||||
|
username: inputs.username,
|
||||||
|
password: inputs.password,
|
||||||
|
scope: inputs.scope,
|
||||||
|
ecr: inputs.ecr || 'auto',
|
||||||
|
configDir: scopeToConfigDir(registry, inputs.scope)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
auths = (yaml.load(inputs.registryAuth) as Array<Auth>).map(auth => {
|
||||||
|
if (auth.password) {
|
||||||
|
core.setSecret(auth.password); // redacted in workflow logs
|
||||||
|
}
|
||||||
|
const registry = auth.registry || 'docker.io';
|
||||||
|
return {
|
||||||
|
registry,
|
||||||
|
username: auth.username,
|
||||||
|
password: auth.password,
|
||||||
|
scope: auth.scope,
|
||||||
|
ecr: String(auth.ecr ?? '') || 'auto',
|
||||||
|
configDir: scopeToConfigDir(registry, auth.scope)
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (auths.length == 0) {
|
||||||
|
throw new Error('No registry to login');
|
||||||
|
}
|
||||||
|
return auths;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function scopeToConfigDir(registry: string, scope?: string): string {
|
||||||
|
if (scopeDisabled() || !scope || scope === '') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
const schemeEnd = registry.indexOf('://');
|
||||||
|
// A neutral scheme preserves explicit ports, including HTTP(S) default ports.
|
||||||
|
const registryHost = schemeEnd === -1 ? registry : new URL(`registry://${registry.slice(schemeEnd + 3)}`).host;
|
||||||
|
const configRoot = path.resolve(Buildx.configDir, 'config');
|
||||||
|
const registryDir = path.resolve(configRoot, registryHost === 'docker.io' ? 'registry-1.docker.io' : registryHost);
|
||||||
|
if (!isChildPath(configRoot, registryDir)) {
|
||||||
|
throw new Error(`Invalid registry '${registry}': resolved config path escapes the Buildx config directory`);
|
||||||
|
}
|
||||||
|
const scopeParts = scope.split('@');
|
||||||
|
if (scopeParts.length > 2) {
|
||||||
|
throw new Error(`Invalid scope '${scope}': scope can contain at most one @ separator`);
|
||||||
|
}
|
||||||
|
const [scopePath, scopeActions] = scopeParts;
|
||||||
|
if (scopeActions !== undefined && !/^[a-z]+(,[a-z]+)*$/.test(scopeActions)) {
|
||||||
|
throw new Error(`Invalid scope '${scope}': scope actions must be lowercase names separated by commas`);
|
||||||
|
}
|
||||||
|
const scopeSuffix = scopeActions === undefined ? '' : `@${scopeActions}`;
|
||||||
|
if (scopePath === '') {
|
||||||
|
return `${registryDir}${scopeSuffix}`;
|
||||||
|
}
|
||||||
|
const configDir = path.resolve(registryDir, scopePath);
|
||||||
|
if (!isChildPath(registryDir, configDir)) {
|
||||||
|
throw new Error(`Invalid scope '${scope}': resolved config path escapes the Buildx config directory`);
|
||||||
|
}
|
||||||
|
return `${configDir}${scopeSuffix}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isChildPath(parent: string, child: string): boolean {
|
||||||
|
const relativePath = path.relative(parent, child);
|
||||||
|
return relativePath !== '' && relativePath !== '..' && !relativePath.startsWith(`..${path.sep}`) && !path.isAbsolute(relativePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
function scopeDisabled(): boolean {
|
||||||
|
if (process.env.DOCKER_LOGIN_SCOPE_DISABLED) {
|
||||||
|
return Util.parseBool(process.env.DOCKER_LOGIN_SCOPE_DISABLED);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
+60
-42
@@ -1,71 +1,89 @@
|
|||||||
import * as aws from './aws';
|
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
|
||||||
|
|
||||||
export async function login(registry: string, username: string, password: string, ecr: string): Promise<void> {
|
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
|
||||||
if (/true/i.test(ecr) || (ecr == 'auto' && aws.isECR(registry))) {
|
|
||||||
await loginECR(registry, username, password);
|
import * as aws from './aws.js';
|
||||||
|
import * as context from './context.js';
|
||||||
|
import * as dockerhub from './dockerhub.js';
|
||||||
|
|
||||||
|
export async function login(auth: context.Auth): Promise<void> {
|
||||||
|
if (/true/i.test(auth.ecr) || (auth.ecr == 'auto' && aws.isECR(auth.registry))) {
|
||||||
|
await loginECR(auth.registry, auth.username, auth.password, auth.scope);
|
||||||
} else {
|
} else {
|
||||||
await loginStandard(registry, username, password);
|
let username = auth.username;
|
||||||
|
let password = auth.password;
|
||||||
|
if (dockerhub.isDockerHubOIDC(auth.registry, password)) {
|
||||||
|
const credentials = await dockerhub.getOIDCToken(auth.registry, username);
|
||||||
|
username = credentials.username;
|
||||||
|
password = credentials.token;
|
||||||
|
}
|
||||||
|
await loginStandard(auth.registry, username, password, auth.scope);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function logout(registry: string): Promise<void> {
|
export async function logout(registry: string, configDir: string): Promise<void> {
|
||||||
await exec
|
let envs: {[key: string]: string} | undefined;
|
||||||
.getExecOutput('docker', ['logout', registry], {
|
if (configDir !== '') {
|
||||||
ignoreReturnCode: true
|
envs = Object.assign({}, process.env, {
|
||||||
})
|
DOCKER_CONFIG: configDir
|
||||||
.then(res => {
|
}) as {
|
||||||
|
[key: string]: string;
|
||||||
|
};
|
||||||
|
core.info(`Alternative config dir: ${configDir}`);
|
||||||
|
}
|
||||||
|
await Docker.getExecOutput(['logout', registry], {
|
||||||
|
ignoreReturnCode: true,
|
||||||
|
env: envs
|
||||||
|
}).then(res => {
|
||||||
if (res.stderr.length > 0 && res.exitCode != 0) {
|
if (res.stderr.length > 0 && res.exitCode != 0) {
|
||||||
core.warning(res.stderr.trim());
|
core.warning(res.stderr.trim());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loginStandard(registry: string, username: string, password: string): Promise<void> {
|
export async function loginStandard(registry: string, username: string, password: string, scope?: string): Promise<void> {
|
||||||
if (!username || !password) {
|
if (!username && !password) {
|
||||||
throw new Error('Username and password required');
|
throw new Error('Username and password required');
|
||||||
}
|
}
|
||||||
|
if (!username) {
|
||||||
let loginArgs: Array<string> = ['login', '--password-stdin'];
|
throw new Error('Username required');
|
||||||
loginArgs.push('--username', username);
|
|
||||||
loginArgs.push(registry);
|
|
||||||
|
|
||||||
if (registry) {
|
|
||||||
core.info(`Logging into ${registry}...`);
|
|
||||||
} else {
|
|
||||||
core.info(`Logging into Docker Hub...`);
|
|
||||||
}
|
}
|
||||||
await exec
|
if (!password) {
|
||||||
.getExecOutput('docker', loginArgs, {
|
throw new Error('Password required');
|
||||||
ignoreReturnCode: true,
|
|
||||||
silent: true,
|
|
||||||
input: Buffer.from(password)
|
|
||||||
})
|
|
||||||
.then(res => {
|
|
||||||
if (res.stderr.length > 0 && res.exitCode != 0) {
|
|
||||||
throw new Error(res.stderr.trim());
|
|
||||||
}
|
}
|
||||||
core.info(`Login Succeeded!`);
|
await loginExec(registry, username, password, scope);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loginECR(registry: string, username: string, password: string): Promise<void> {
|
export async function loginECR(registry: string, username: string, password: string, scope?: string): Promise<void> {
|
||||||
core.info(`Retrieving registries data through AWS SDK...`);
|
core.info(`Retrieving registries data through AWS SDK...`);
|
||||||
const regDatas = await aws.getRegistriesData(registry, username, password);
|
const regDatas = await aws.getRegistriesData(registry, username, password);
|
||||||
for (const regData of regDatas) {
|
for (const regData of regDatas) {
|
||||||
core.info(`Logging into ${regData.registry}...`);
|
await loginExec(regData.registry, regData.username, regData.password, scope);
|
||||||
await exec
|
}
|
||||||
.getExecOutput('docker', ['login', '--password-stdin', '--username', regData.username, regData.registry], {
|
}
|
||||||
|
|
||||||
|
async function loginExec(registry: string, username: string, password: string, scope?: string): Promise<void> {
|
||||||
|
let envs: {[key: string]: string} | undefined;
|
||||||
|
const configDir = context.scopeToConfigDir(registry, scope);
|
||||||
|
if (configDir !== '') {
|
||||||
|
envs = Object.assign({}, process.env, {
|
||||||
|
DOCKER_CONFIG: configDir
|
||||||
|
}) as {
|
||||||
|
[key: string]: string;
|
||||||
|
};
|
||||||
|
core.info(`Logging into ${registry} (scope ${scope})...`);
|
||||||
|
} else {
|
||||||
|
core.info(`Logging into ${registry}...`);
|
||||||
|
}
|
||||||
|
await Docker.getExecOutput(['login', '--password-stdin', '--username', username, registry], {
|
||||||
ignoreReturnCode: true,
|
ignoreReturnCode: true,
|
||||||
silent: true,
|
silent: true,
|
||||||
input: Buffer.from(regData.password)
|
input: Buffer.from(password),
|
||||||
})
|
env: envs
|
||||||
.then(res => {
|
}).then(res => {
|
||||||
if (res.stderr.length > 0 && res.exitCode != 0) {
|
if (res.stderr.length > 0 && res.exitCode != 0) {
|
||||||
throw new Error(res.stderr.trim());
|
throw new Error(res.stderr.trim());
|
||||||
}
|
}
|
||||||
core.info('Login Succeeded!');
|
core.info('Login Succeeded!');
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
import * as core from '@actions/core';
|
||||||
|
import * as httpm from '@actions/http-client';
|
||||||
|
import {HttpCodes} from '@actions/http-client';
|
||||||
|
import {validate as uuidValidate} from 'uuid';
|
||||||
|
|
||||||
|
export interface LoginCredentials {
|
||||||
|
username: string;
|
||||||
|
token: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OIDCTokenResponse {
|
||||||
|
access_token: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const registries = new Set(['', 'docker.io', 'registry-1.docker.io', 'registry-1-stage.docker.io', 'dhi.io']);
|
||||||
|
const defaultExpiresIn = 300;
|
||||||
|
const minExpiresIn = 300;
|
||||||
|
const maxExpiresIn = 21600;
|
||||||
|
const maxRetries = 5;
|
||||||
|
|
||||||
|
export const isDockerHubOIDC = (registry: string, password: string): boolean => {
|
||||||
|
return process.env.DOCKERHUB_OIDC_CONNECTIONID !== undefined && !password && registries.has(registry);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getOIDCToken = async (registry: string, username: string): Promise<LoginCredentials> => {
|
||||||
|
const connectionID = process.env.DOCKERHUB_OIDC_CONNECTIONID?.trim();
|
||||||
|
if (!connectionID) {
|
||||||
|
throw new Error('DOCKERHUB_OIDC_CONNECTIONID is required for Docker Hub OIDC login');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!uuidValidate(connectionID)) {
|
||||||
|
throw new Error('Invalid DOCKERHUB_OIDC_CONNECTIONID. Must be a valid UUID.');
|
||||||
|
}
|
||||||
|
|
||||||
|
const expiresIn = getExpiresIn();
|
||||||
|
const identityHost = registry === 'registry-1-stage.docker.io' ? 'identity-stage.docker.com' : 'identity.docker.com';
|
||||||
|
const audience = `https://${identityHost}`;
|
||||||
|
core.info(`Docker Hub OIDC detected for ${registry || 'docker.io'}`);
|
||||||
|
core.debug(`Docker Hub OIDC token audience: ${audience}`);
|
||||||
|
core.debug(`Docker Hub OIDC token expiration: ${expiresIn}s`);
|
||||||
|
core.info(`Retrieving GitHub OIDC token for Docker Hub`);
|
||||||
|
const idToken = await core.getIDToken(audience);
|
||||||
|
const http: httpm.HttpClient = new httpm.HttpClient('github.com/docker/login-action', [], {
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = new URLSearchParams();
|
||||||
|
data.set('grant_type', 'urn:ietf:params:oauth:grant-type:token-exchange');
|
||||||
|
data.set('subject_token_type', 'urn:ietf:params:oauth:token-type:id_token');
|
||||||
|
data.set('subject_token', idToken);
|
||||||
|
data.set('connection_id', connectionID);
|
||||||
|
data.set('expires_in', expiresIn.toString());
|
||||||
|
|
||||||
|
core.info(`Exchanging GitHub OIDC token for Docker Hub token`);
|
||||||
|
const resp = await postWithRetry(http, `https://${identityHost}/oauth/token`, data.toString());
|
||||||
|
|
||||||
|
const tokenResp = <OIDCTokenResponse>JSON.parse(await handleResponse(resp));
|
||||||
|
core.setSecret(tokenResp.access_token);
|
||||||
|
core.info(`Docker Hub OIDC token exchange succeeded`);
|
||||||
|
|
||||||
|
return {
|
||||||
|
username,
|
||||||
|
token: tokenResp.access_token
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const getExpiresIn = (): number => {
|
||||||
|
const expiresInInput = process.env.DOCKERHUB_OIDC_EXPIREIN?.trim() || defaultExpiresIn.toString();
|
||||||
|
const expiresIn = Number(expiresInInput);
|
||||||
|
if (isNaN(expiresIn) || expiresIn < minExpiresIn || expiresIn > maxExpiresIn) {
|
||||||
|
throw new Error(`Invalid DOCKERHUB_OIDC_EXPIREIN: ${expiresInInput}. Must be between ${minExpiresIn} and ${maxExpiresIn}`);
|
||||||
|
}
|
||||||
|
return expiresIn;
|
||||||
|
};
|
||||||
|
|
||||||
|
const postWithRetry = async (http: httpm.HttpClient, url: string, data: string): Promise<httpm.HttpClientResponse> => {
|
||||||
|
core.debug(`Sending Docker Hub OIDC token request to ${url}`);
|
||||||
|
let resp = await http.post(url, data);
|
||||||
|
core.debug(`Docker Hub OIDC token request returned status code ${resp.message.statusCode || HttpCodes.InternalServerError}`);
|
||||||
|
for (let attempt = 0; (resp.message.statusCode || HttpCodes.InternalServerError) === HttpCodes.TooManyRequests && attempt < maxRetries; attempt++) {
|
||||||
|
const delay = parseRetryAfter(resp.message.headers['retry-after']);
|
||||||
|
if (delay === null) {
|
||||||
|
core.debug(`Docker Hub OIDC token request rate limited without retry-after header`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
await resp.readBody();
|
||||||
|
core.info(`Docker Hub OIDC token request rate limited, retrying in ${delay}ms (attempt ${attempt + 1}/${maxRetries})`);
|
||||||
|
await new Promise(resolve => setTimeout(resolve, delay));
|
||||||
|
resp = await http.post(url, data);
|
||||||
|
core.debug(`Docker Hub OIDC token request returned status code ${resp.message.statusCode || HttpCodes.InternalServerError}`);
|
||||||
|
}
|
||||||
|
return resp;
|
||||||
|
};
|
||||||
|
|
||||||
|
const parseRetryAfter = (value: string | string[] | undefined): number | null => {
|
||||||
|
if (value === undefined) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
value = value[0];
|
||||||
|
}
|
||||||
|
const seconds = Number(value);
|
||||||
|
if (isNaN(seconds)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return Math.max(0, seconds * 1000);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleResponse = async (resp: httpm.HttpClientResponse): Promise<string> => {
|
||||||
|
const body = await resp.readBody();
|
||||||
|
const statusCode = resp.message.statusCode || HttpCodes.InternalServerError;
|
||||||
|
core.debug(`Docker Hub OIDC token response status code: ${statusCode}`);
|
||||||
|
if (statusCode < HttpCodes.OK || statusCode >= HttpCodes.MultipleChoices) {
|
||||||
|
throw parseError(statusCode, body);
|
||||||
|
}
|
||||||
|
return body;
|
||||||
|
};
|
||||||
|
|
||||||
|
const parseError = (statusCode: number, body: string): Error => {
|
||||||
|
if (body) {
|
||||||
|
let errResp: unknown;
|
||||||
|
try {
|
||||||
|
errResp = JSON.parse(body);
|
||||||
|
} catch {
|
||||||
|
errResp = undefined;
|
||||||
|
}
|
||||||
|
if (errResp !== undefined) {
|
||||||
|
throw new Error(`Docker Hub API: bad status code ${statusCode}: ${JSON.stringify(errResp)}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (statusCode === 401) {
|
||||||
|
throw new Error(`Docker Hub API: operation not permitted`);
|
||||||
|
}
|
||||||
|
throw new Error(`Docker Hub API: bad status code ${statusCode}`);
|
||||||
|
};
|
||||||
+28
-18
@@ -1,28 +1,38 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as context from './context';
|
import * as actionsToolkit from '@docker/actions-toolkit';
|
||||||
import * as docker from './docker';
|
|
||||||
import * as stateHelper from './state-helper';
|
|
||||||
|
|
||||||
export async function run(): Promise<void> {
|
import * as context from './context.js';
|
||||||
try {
|
import * as docker from './docker.js';
|
||||||
const input: context.Inputs = context.getInputs();
|
import * as stateHelper from './state-helper.js';
|
||||||
stateHelper.setRegistry(input.registry);
|
|
||||||
stateHelper.setLogout(input.logout);
|
export async function main(): Promise<void> {
|
||||||
await docker.login(input.registry, input.username, input.password, input.ecr);
|
const inputs: context.Inputs = context.getInputs();
|
||||||
} catch (error) {
|
stateHelper.setLogout(inputs.logout);
|
||||||
core.setFailed(error.message);
|
|
||||||
|
const auths = context.getAuthList(inputs);
|
||||||
|
stateHelper.setRegistries(Array.from(new Map(auths.map(auth => [`${auth.registry}|${auth.configDir}`, {registry: auth.registry, configDir: auth.configDir} as stateHelper.RegistryState])).values()));
|
||||||
|
|
||||||
|
if (auths.length === 1) {
|
||||||
|
await docker.login(auths[0]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const auth of auths) {
|
||||||
|
await core.group(`Login to ${auth.registry}`, async () => {
|
||||||
|
await docker.login(auth);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function logout(): Promise<void> {
|
async function post(): Promise<void> {
|
||||||
if (!stateHelper.logout) {
|
if (!stateHelper.logout) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await docker.logout(stateHelper.registry);
|
for (const registryState of stateHelper.registries) {
|
||||||
|
await core.group(`Logout from ${registryState.registry}`, async () => {
|
||||||
|
await docker.logout(registryState.registry, registryState.configDir);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!stateHelper.IsPost) {
|
actionsToolkit.run(main, post);
|
||||||
run();
|
|
||||||
} else {
|
|
||||||
logout();
|
|
||||||
}
|
|
||||||
+8
-8
@@ -1,17 +1,17 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
export const IsPost = !!process.env['STATE_isPost'];
|
export const registries = process.env['STATE_registries'] ? (JSON.parse(process.env['STATE_registries']) as Array<RegistryState>) : [];
|
||||||
export const registry = process.env['STATE_registry'] || '';
|
|
||||||
export const logout = /true/i.test(process.env['STATE_logout'] || '');
|
export const logout = /true/i.test(process.env['STATE_logout'] || '');
|
||||||
|
|
||||||
export function setRegistry(registry: string) {
|
export interface RegistryState {
|
||||||
core.saveState('registry', registry);
|
registry: string;
|
||||||
|
configDir: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setRegistries(registries: Array<RegistryState>) {
|
||||||
|
core.saveState('registries', JSON.stringify(registries));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setLogout(logout: boolean) {
|
export function setLogout(logout: boolean) {
|
||||||
core.saveState('logout', logout);
|
core.saveState('logout', logout);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IsPost) {
|
|
||||||
core.saveState('isPost', 'true');
|
|
||||||
}
|
|
||||||
+9
-10
@@ -1,18 +1,17 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "es6",
|
"module": "nodenext",
|
||||||
"module": "commonjs",
|
"moduleResolution": "nodenext",
|
||||||
"lib": [
|
"esModuleInterop": true,
|
||||||
"es6",
|
|
||||||
"dom"
|
|
||||||
],
|
|
||||||
"newLine": "lf",
|
"newLine": "lf",
|
||||||
"outDir": "./lib",
|
"outDir": "./lib",
|
||||||
"rootDir": "./src",
|
"rootDir": "./src",
|
||||||
"strict": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"noImplicitAny": false,
|
"noImplicitAny": false,
|
||||||
"esModuleInterop": true,
|
"resolveJsonModule": true,
|
||||||
"sourceMap": true
|
"useUnknownInCatchVariables": false,
|
||||||
},
|
},
|
||||||
"exclude": ["node_modules", "**/*.test.ts"]
|
"include": [
|
||||||
|
"src/**/*.ts"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import {defineConfig} from 'vitest/config';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
test: {
|
||||||
|
clearMocks: true,
|
||||||
|
environment: 'node',
|
||||||
|
setupFiles: ['./__tests__/setup.unit.ts'],
|
||||||
|
include: ['**/*.test.ts'],
|
||||||
|
coverage: {
|
||||||
|
provider: 'v8',
|
||||||
|
reporter: ['clover'],
|
||||||
|
include: ['src/**/*.ts'],
|
||||||
|
exclude: ['src/**/main.ts']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in new issue
Block a user