@jcoreio/aws-ecr-utils 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/ECRDeployer.d.mts +46 -0
  2. package/ECRDeployer.d.mts.map +1 -0
  3. package/ECRDeployer.d.ts +46 -0
  4. package/ECRDeployer.d.ts.map +1 -0
  5. package/ECRDeployer.js +513 -0
  6. package/ECRDeployer.js.map +1 -0
  7. package/ECRDeployer.mjs +171 -0
  8. package/ECRDeployer.mjs.map +1 -0
  9. package/checkECRImageAccess.d.mts +1 -1
  10. package/checkECRImageAccess.d.mts.map +1 -1
  11. package/checkECRImageAccess.d.ts +1 -1
  12. package/checkECRImageAccess.d.ts.map +1 -1
  13. package/checkECRImageAccess.js +3 -3
  14. package/checkECRImageAccess.js.map +1 -1
  15. package/checkECRImageAccess.mjs +3 -3
  16. package/checkECRImageAccess.mjs.map +1 -1
  17. package/checkECRRepositoryPolicy.d.mts +1 -1
  18. package/checkECRRepositoryPolicy.d.mts.map +1 -1
  19. package/checkECRRepositoryPolicy.d.ts +1 -1
  20. package/checkECRRepositoryPolicy.d.ts.map +1 -1
  21. package/checkECRRepositoryPolicy.js +2 -2
  22. package/checkECRRepositoryPolicy.js.map +1 -1
  23. package/checkECRRepositoryPolicy.mjs +2 -2
  24. package/checkECRRepositoryPolicy.mjs.map +1 -1
  25. package/copyECRImage.d.mts +1 -1
  26. package/copyECRImage.d.mts.map +1 -1
  27. package/copyECRImage.d.ts +1 -1
  28. package/copyECRImage.d.ts.map +1 -1
  29. package/copyECRImage.js.map +1 -1
  30. package/ecrImageExists.d.mts +1 -1
  31. package/ecrImageExists.d.mts.map +1 -1
  32. package/ecrImageExists.d.ts +1 -1
  33. package/ecrImageExists.d.ts.map +1 -1
  34. package/index.d.mts +1 -0
  35. package/index.d.mts.map +1 -1
  36. package/index.d.ts +1 -0
  37. package/index.d.ts.map +1 -1
  38. package/index.js +7 -0
  39. package/index.js.map +1 -1
  40. package/index.mjs +1 -0
  41. package/index.mjs.map +1 -1
  42. package/isInteractive.d.mts +2 -0
  43. package/isInteractive.d.mts.map +1 -0
  44. package/isInteractive.d.ts +2 -0
  45. package/isInteractive.d.ts.map +1 -0
  46. package/isInteractive.js +8 -0
  47. package/isInteractive.js.map +1 -0
  48. package/isInteractive.mjs +2 -0
  49. package/isInteractive.mjs.map +1 -0
  50. package/loginToECR.d.mts +2 -2
  51. package/loginToECR.d.mts.map +1 -1
  52. package/loginToECR.d.ts +2 -2
  53. package/loginToECR.d.ts.map +1 -1
  54. package/loginToECR.js +25 -13
  55. package/loginToECR.js.map +1 -1
  56. package/loginToECR.mjs +1 -4
  57. package/loginToECR.mjs.map +1 -1
  58. package/once.d.mts +2 -0
  59. package/once.d.mts.map +1 -0
  60. package/once.d.ts +2 -0
  61. package/once.d.ts.map +1 -0
  62. package/once.js +14 -0
  63. package/once.js.map +1 -0
  64. package/once.mjs +8 -0
  65. package/once.mjs.map +1 -0
  66. package/package.json +5 -5
  67. package/src/ECRDeployer.ts +237 -0
  68. package/src/checkECRImageAccess.ts +7 -7
  69. package/src/checkECRRepositoryPolicy.ts +3 -3
  70. package/src/copyECRImage.ts +4 -4
  71. package/src/ecrImageExists.ts +1 -1
  72. package/src/formatECRImageUri.ts +1 -1
  73. package/src/index.ts +12 -11
  74. package/src/isInteractive.ts +2 -0
  75. package/src/loginToECR.ts +4 -7
  76. package/src/once.ts +7 -0
  77. package/src/tagECRImage.ts +2 -2
  78. package/src/upsertECRRepository.ts +1 -1
  79. package/tagECRImage.d.mts +1 -1
  80. package/tagECRImage.d.mts.map +1 -1
  81. package/tagECRImage.d.ts +1 -1
  82. package/tagECRImage.d.ts.map +1 -1
  83. package/tagECRImage.js.map +1 -1
  84. package/upsertECRRepository.d.mts +1 -1
  85. package/upsertECRRepository.d.mts.map +1 -1
  86. package/upsertECRRepository.d.ts +1 -1
  87. package/upsertECRRepository.d.ts.map +1 -1
package/index.js CHANGED
@@ -4,6 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ Object.defineProperty(exports, "ECRDeployer", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _ECRDeployer.ECRDeployer;
11
+ }
12
+ });
7
13
  Object.defineProperty(exports, "checkECRImageAccess", {
8
14
  enumerable: true,
9
15
  get: function get() {
@@ -81,4 +87,5 @@ var _checkECRRepositoryPolicy = _interopRequireDefault(require("./checkECRReposi
81
87
  var _checkECRImageAccess = _interopRequireDefault(require("./checkECRImageAccess.js"));
82
88
  var _formatECRRepositoryHostname = _interopRequireDefault(require("./formatECRRepositoryHostname.js"));
83
89
  var _formatECRImageUri = _interopRequireDefault(require("./formatECRImageUri.js"));
90
+ var _ECRDeployer = require("./ECRDeployer.js");
84
91
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_copyECRImage","_interopRequireDefault","require","_ecrImageExists","_loginToECR","_tagECRImage","_parseECRImageUri","_parseECRRepositoryHostname","_upsertECRRepository","_checkECRRepositoryPolicy","_checkECRImageAccess","_formatECRRepositoryHostname","_formatECRImageUri"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,iBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,2BAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,oBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,yBAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,oBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,4BAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,kBAAA,GAAAX,sBAAA,CAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_copyECRImage","_interopRequireDefault","require","_ecrImageExists","_loginToECR","_tagECRImage","_parseECRImageUri","_parseECRRepositoryHostname","_upsertECRRepository","_checkECRRepositoryPolicy","_checkECRImageAccess","_formatECRRepositoryHostname","_formatECRImageUri","_ECRDeployer"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,WAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,iBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,2BAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,oBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,yBAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,oBAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,4BAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,kBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,YAAA,GAAAX,OAAA","ignoreList":[]}
package/index.mjs CHANGED
@@ -9,4 +9,5 @@ export { default as checkECRRepositoryPolicy } from "./checkECRRepositoryPolicy.
9
9
  export { default as checkECRImageAccess } from "./checkECRImageAccess.mjs";
10
10
  export { default as formatECRRepositoryHostname } from "./formatECRRepositoryHostname.mjs";
11
11
  export { default as formatECRImageUri } from "./formatECRImageUri.mjs";
12
+ export { ECRDeployer } from "./ECRDeployer.mjs";
12
13
  //# sourceMappingURL=index.mjs.map
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["default","copyECRImage","ecrImageExists","loginToECR","tagECRImage","parseECRImageUri","parseECRRepositoryHostname","upsertECRRepository","checkECRRepositoryPolicy","checkECRImageAccess","formatECRRepositoryHostname","formatECRImageUri"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAO,IAAIC,YAAY;AAChC,SAASD,OAAO,IAAIE,cAAc;AAClC,SAASF,OAAO,IAAIG,UAAU;AAC9B,SAASH,OAAO,IAAII,WAAW;AAC/B,SAASJ,OAAO,IAAIK,gBAAgB;AACpC,SAASL,OAAO,IAAIM,0BAA0B;AAC9C,SAASN,OAAO,IAAIO,mBAAmB;AACvC,SAASP,OAAO,IAAIQ,wBAAwB;AAC5C,SAASR,OAAO,IAAIS,mBAAmB;AACvC,SAAST,OAAO,IAAIU,2BAA2B;AAC/C,SAASV,OAAO,IAAIW,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"index.mjs","names":["default","copyECRImage","ecrImageExists","loginToECR","tagECRImage","parseECRImageUri","parseECRRepositoryHostname","upsertECRRepository","checkECRRepositoryPolicy","checkECRImageAccess","formatECRRepositoryHostname","formatECRImageUri","ECRDeployer"],"sources":["src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAO,IAAIC,YAAY;AAChC,SAASD,OAAO,IAAIE,cAAc;AAClC,SAASF,OAAO,IAAIG,UAAU;AAC9B,SAASH,OAAO,IAAII,WAAW;AAC/B,SAASJ,OAAO,IAAIK,gBAAgB;AACpC,SAASL,OAAO,IAAIM,0BAA0B;AAC9C,SAASN,OAAO,IAAIO,mBAAmB;AACvC,SAASP,OAAO,IAAIQ,wBAAwB;AAC5C,SAASR,OAAO,IAAIS,mBAAmB;AACvC,SAAST,OAAO,IAAIU,2BAA2B;AAC/C,SAASV,OAAO,IAAIW,iBAAiB;AACrC,SAASC,WAAW","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare const isInteractive: boolean;
2
+ //# sourceMappingURL=isInteractive.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isInteractive.d.mts","names":["isInteractive"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":"AAAA,qBAAaA,aAAa,SACqD","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export declare const isInteractive: boolean;
2
+ //# sourceMappingURL=isInteractive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isInteractive.d.ts","names":["isInteractive"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":"AAAA,qBAAaA,aAAa,SACqD","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isInteractive = void 0;
7
+ var isInteractive = exports.isInteractive = process.stdout.isTTY && process.env.TERM !== 'dumb' && !('CI' in process.env);
8
+ //# sourceMappingURL=isInteractive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isInteractive.js","names":["isInteractive","exports","process","stdout","isTTY","env","TERM"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAO,IAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GACxBE,OAAO,CAACC,MAAM,CAACC,KAAK,IAAIF,OAAO,CAACG,GAAG,CAACC,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,IAAIJ,OAAO,CAACG,GAAG,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export const isInteractive = process.stdout.isTTY && process.env.TERM !== 'dumb' && !('CI' in process.env);
2
+ //# sourceMappingURL=isInteractive.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isInteractive.mjs","names":["isInteractive","process","stdout","isTTY","env","TERM"],"sources":["src/isInteractive.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,MAAMA,aAAa,GACxBC,OAAO,CAACC,MAAM,CAACC,KAAK,IAAIF,OAAO,CAACG,GAAG,CAACC,IAAI,KAAK,MAAM,IAAI,EAAE,IAAI,IAAIJ,OAAO,CAACG,GAAG,CAAC","ignoreList":[]}
package/loginToECR.d.mts CHANGED
@@ -1,9 +1,9 @@
1
- import { ECRClient, ECRClientConfig } from '@aws-sdk/client-ecr';
1
+ import { ECRClient, type ECRClientConfig } from '@aws-sdk/client-ecr';
2
2
  export default function loginToECR({
3
3
  ecr,
4
4
  forImages,
5
5
  awsConfig
6
- }: {
6
+ }?: {
7
7
  ecr?: ECRClient;
8
8
  forImages?: string[];
9
9
  awsConfig?: ECRClientConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"loginToECR.d.mts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,EACTC,eAAe,QAEV,qBAAqB;AAM5B,wBAA8BC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;CACD,EAAE;EACDF,GAAG,CAAC,EAAEH,SAAS;EACfI,SAAS,CAAC,EAAE,MAAM,EAAE;EACpBC,SAAS,CAAC,EAAEJ,eAAe;CAC5B,GAAGK,OAAO,CAAC,IAAI,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"loginToECR.d.mts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,EACT,KAAKC,eAAe,QAEf,qBAAqB;AAM5B,wBAA8BC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;CAKI,CAJL,EAAE;EACDF,GAAG,CAAC,EAAEH,SAAS;EACfI,SAAS,CAAC,EAAE,MAAM,EAAE;EACpBC,SAAS,CAAC,EAAEJ,eAAe;CACvB,GAAGK,OAAO,CAAC,IAAI,CAAC","ignoreList":[]}
package/loginToECR.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { ECRClient, ECRClientConfig } from '@aws-sdk/client-ecr';
1
+ import { ECRClient, type ECRClientConfig } from '@aws-sdk/client-ecr';
2
2
  declare function loginToECR({
3
3
  ecr,
4
4
  forImages,
5
5
  awsConfig
6
- }: {
6
+ }?: {
7
7
  ecr?: ECRClient;
8
8
  forImages?: string[];
9
9
  awsConfig?: ECRClientConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"loginToECR.d.ts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,EACTC,eAAe,QAEV,qBAAqB;AAM5B,iBAA8BC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;CACD,EAAE;EACDF,GAAG,CAAC,EAAEH,SAAS;EACfI,SAAS,CAAC,EAAE,MAAM,EAAE;EACpBC,SAAS,CAAC,EAAEJ,eAAe;CAC5B,GAAGK,OAAO,CAAC,IAAI,CAAC;AAwEhB,SAAAJ,UAAA","ignoreList":[]}
1
+ {"version":3,"file":"loginToECR.d.ts","names":["ECRClient","ECRClientConfig","loginToECR","ecr","forImages","awsConfig","Promise"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"AAKA,SACEA,SAAS,EACT,KAAKC,eAAe,QAEf,qBAAqB;AAM5B,iBAA8BC,UAAUA,CAAC;EACvCC,GAAG;EACHC,SAAS;EACTC;CAKI,CAJL,EAAE;EACDF,GAAG,CAAC,EAAEH,SAAS;EACfI,SAAS,CAAC,EAAE,MAAM,EAAE;EACpBC,SAAS,CAAC,EAAEJ,eAAe;CACvB,GAAGK,OAAO,CAAC,IAAI,CAAC;AAqErB,SAAAJ,UAAA","ignoreList":[]}
package/loginToECR.js CHANGED
@@ -23,16 +23,34 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
23
23
  * @prettier
24
24
  */
25
25
  var log = log4jcore.logger('@jcoreio/aws-ecr-utils/loginToECR');
26
- function loginToECR(_x) {
26
+ function loginToECR() {
27
27
  return _loginToECR.apply(this, arguments);
28
28
  }
29
29
  function _loginToECR() {
30
- _loginToECR = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref) {
31
- var ecr, forImages, awsConfig, regions, _yield$ecr$send, authorizationData, _ref3, authorizationToken, proxyEndpoint, decoded, _decoded$split, _decoded$split2, user, password, dockerArgs, child, _t;
30
+ _loginToECR = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
31
+ var _ref,
32
+ ecr,
33
+ forImages,
34
+ awsConfig,
35
+ regions,
36
+ _yield$ecr$send,
37
+ authorizationData,
38
+ _ref3,
39
+ authorizationToken,
40
+ proxyEndpoint,
41
+ decoded,
42
+ _decoded$split,
43
+ _decoded$split2,
44
+ user,
45
+ password,
46
+ dockerArgs,
47
+ child,
48
+ _args2 = arguments,
49
+ _t;
32
50
  return _regenerator["default"].wrap(function (_context2) {
33
51
  while (1) switch (_context2.prev = _context2.next) {
34
52
  case 0:
35
- ecr = _ref.ecr, forImages = _ref.forImages, awsConfig = _ref.awsConfig;
53
+ _ref = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, ecr = _ref.ecr, forImages = _ref.forImages, awsConfig = _ref.awsConfig;
36
54
  if (!forImages) {
37
55
  _context2.next = 2;
38
56
  break;
@@ -63,7 +81,7 @@ function _loginToECR() {
63
81
  }
64
82
  }, _callee);
65
83
  }));
66
- return function (_x2) {
84
+ return function (_x) {
67
85
  return _ref2.apply(this, arguments);
68
86
  };
69
87
  }()));
@@ -109,15 +127,9 @@ function _loginToECR() {
109
127
  stdio: ['pipe', 'pipe', 'inherit'],
110
128
  encoding: 'utf8'
111
129
  });
112
- if (child.stdin) {
113
- _context2.next = 7;
114
- break;
115
- }
116
- throw new Error('expected child.stdin to be defined');
117
- case 7:
118
130
  child.stdin.write(password);
119
131
  child.stdin.end();
120
- _context2.next = 8;
132
+ _context2.next = 7;
121
133
  return child.then(function () {
122
134
  return log.debug('ECR login succeeded');
123
135
  }, function (error) {
@@ -127,7 +139,7 @@ function _loginToECR() {
127
139
  }
128
140
  throw error;
129
141
  });
130
- case 8:
142
+ case 7:
131
143
  case "end":
132
144
  return _context2.stop();
133
145
  }
package/loginToECR.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loginToECR.js","names":["_promisifyChildProcess","require","_base64Js","_interopRequireDefault","_clientEcr","_parseECRImageUri","log4jcore","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof3","has","get","set","_t2","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","logger","loginToECR","_x","_loginToECR","_asyncToGenerator2","_regenerator","mark","_callee2","_ref","ecr","forImages","awsConfig","regions","_yield$ecr$send","authorizationData","_ref3","authorizationToken","proxyEndpoint","decoded","_decoded$split","_decoded$split2","user","password","dockerArgs","child","_t","wrap","_context2","prev","next","debug","Set","flatMap","image","parseECRImageUri","region","_unused","Promise","all","_toConsumableArray2","map","_ref2","_callee","_context","abrupt","stop","_x2","ECRClient","config","sent","send","GetAuthorizationTokenCommand","Error","Buffer","from","base64","toByteArray","toString","split","_slicedToArray2","concat","arg","test","replace","spawn","stdio","encoding","stdin","write","end","then","error","_typeof2","code","signal","module","exports","default"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;AAGA,IAAAA,sBAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAKA,IAAAI,iBAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,SAAA,GAAAC,uBAAA,CAAAN,OAAA;AAAsC,SAAAM,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,wBAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,mBAAAT,CAAA,iBAAAA,CAAA,gBAAAU,QAAA,CAAAV,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,cAAAM,GAAA,IAAAd,CAAA,gBAAAc,GAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,GAAA,OAAAP,CAAA,IAAAD,CAAA,GAAAW,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAc,GAAA,OAAAP,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAM,GAAA,EAAAP,CAAA,IAAAC,CAAA,CAAAM,GAAA,IAAAd,CAAA,CAAAc,GAAA,WAAAN,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAgB,MAAA,CAAAI,IAAA,CAAArB,CAAA,OAAAiB,MAAA,CAAAK,qBAAA,QAAAhB,CAAA,GAAAW,MAAA,CAAAK,qBAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAc,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,OAAA6B,OAAA,WAAA3B,CAAA,QAAA4B,gBAAA,aAAA/B,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAc,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAjC,CAAA,EAAAiB,MAAA,CAAAe,yBAAA,CAAA/B,CAAA,KAAAmB,OAAA,CAAAH,MAAA,CAAAhB,CAAA,GAAA6B,OAAA,WAAA3B,CAAA,IAAAc,MAAA,CAAAC,cAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAc,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA,IAXtC;AACA;AACA;AAWA,IAAMkC,GAAG,GAAGpC,SAAS,CAACqC,MAAM,CAAC,mCAAmC,CAAC;AAAA,SAEnCC,UAAUA,CAAAC,EAAA;EAAA,OAAAC,WAAA,CAAAZ,KAAA,OAAAE,SAAA;AAAA;AAAA,SAAAU,YAAA;EAAAA,WAAA,OAAAC,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAzB,SAAAC,SAAAC,IAAA;IAAA,IAAAC,GAAA,EAAAC,SAAA,EAAAC,SAAA,EAAAC,OAAA,EAAAC,eAAA,EAAAC,iBAAA,EAAAC,KAAA,EAAAC,kBAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,cAAA,EAAAC,eAAA,EAAAC,IAAA,EAAAC,QAAA,EAAAC,UAAA,EAAAC,KAAA,EAAAC,EAAA;IAAA,OAAApB,YAAA,YAAAqB,IAAA,WAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAAE,IAAA;QAAA;UACbpB,GAAG,GAAAD,IAAA,CAAHC,GAAG,EACHC,SAAS,GAAAF,IAAA,CAATE,SAAS,EACTC,SAAS,GAAAH,IAAA,CAATG,SAAS;UAAA,KAMLD,SAAS;YAAAiB,SAAA,CAAAE,IAAA;YAAA;UAAA;UACX9B,GAAG,CAAC+B,KAAK,CAAC,kCAAkC,EAAEpB,SAAS,CAAC;UAClDE,OAAO,GAAG,IAAImB,GAAG,CACrBrB,SAAS,CAACsB,OAAO,CAAC,UAACC,KAAK,EAAK;YAC3B,IAAI;cACF,OAAO,CAAC,IAAAC,4BAAgB,EAACD,KAAK,CAAC,CAACE,MAAM,CAAC;YACzC,CAAC,CAAC,OAAAC,OAAA,EAAM;cACN,OAAO,EAAE;YACX;UACF,CAAC,CACH,CAAC;UACDrC,GAAG,CAAC+B,KAAK,CAAC,iCAAiC,EAAElB,OAAO,CAAC;UAAAe,SAAA,CAAAE,IAAA;UAAA,OAC/CQ,OAAO,CAACC,GAAG,CACf,IAAAC,mBAAA,aAAI3B,OAAO,EAAE4B,GAAG;YAAA,IAAAC,KAAA,OAAArC,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAC,SAAAoC,QAAOP,MAAM;cAAA,OAAA9B,YAAA,YAAAqB,IAAA,WAAAiB,QAAA;gBAAA,kBAAAA,QAAA,CAAAf,IAAA,GAAAe,QAAA,CAAAd,IAAA;kBAAA;oBAAA,OAAAc,QAAA,CAAAC,MAAA,WAC5B3C,UAAU,CAAC;sBACTU,SAAS,EAAAnB,aAAA,CAAAA,aAAA,KAAOmB,SAAS;wBAAEwB,MAAM,EAANA;sBAAM;oBACnC,CAAC,CAAC;kBAAA;kBAAA;oBAAA,OAAAQ,QAAA,CAAAE,IAAA;gBAAA;cAAA,GAAAH,OAAA;YAAA;YAAA,iBAAAI,GAAA;cAAA,OAAAL,KAAA,CAAAlD,KAAA,OAAAE,SAAA;YAAA;UAAA,GACJ,CACF,CAAC;QAAA;UAAA,OAAAkC,SAAA,CAAAiB,MAAA;QAAA;UAGH,IAAI,CAACnC,GAAG,EAAEA,GAAG,GAAG,IAAIsC,oBAAS,CAAAvD,aAAA,KAAMmB,SAAS,CAAE,CAAC;UAAAc,EAAA,GAE/C1B,GAAG;UAAA4B,SAAA,CAAAE,IAAA;UAAA,OAA6CpB,GAAG,CAACuC,MAAM,CAACb,MAAM,CAAC,CAAC;QAAA;UAAAV,EAAA,CAA/DK,KAAK,CAAAjD,IAAA,CAAA4C,EAAA,EAAC,8BAA8B,EAAAE,SAAA,CAAAsB,IAAA;UAAAtB,SAAA,CAAAE,IAAA;UAAA,OACJpB,GAAG,CAACyC,IAAI,CAC1C,IAAIC,uCAA4B,CAAC,CACnC,CAAC;QAAA;UAAAtC,eAAA,GAAAc,SAAA,CAAAsB,IAAA;UAFOnC,iBAAiB,GAAAD,eAAA,CAAjBC,iBAAiB;UAAAC,KAAA,GAGqB,CAAAD,iBAAiB,aAAjBA,iBAAiB,uBAAjBA,iBAAiB,CAAG,CAAC,CAAC,KAAI,CAAC,CAAC,EAAlEE,kBAAkB,GAAAD,KAAA,CAAlBC,kBAAkB,EAAEC,aAAa,GAAAF,KAAA,CAAbE,aAAa;UACzClB,GAAG,CAAC+B,KAAK,CAAC,6BAA6B,EAAE;YACvCd,kBAAkB,EAAlBA,kBAAkB;YAClBC,aAAa,EAAbA;UACF,CAAC,CAAC;UAAA,IACGD,kBAAkB;YAAAW,SAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACf,IAAIuB,KAAK,CAAC,2CAA2C,CAAC;QAAA;UAAA,IAEzDnC,aAAa;YAAAU,SAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACV,IAAIuB,KAAK,CAAC,sCAAsC,CAAC;QAAA;UAEzD;UACMlC,OAAO,GAAGmC,MAAM,CAACC,IAAI,CAACC,oBAAM,CAACC,WAAW,CAACxC,kBAAkB,CAAC,CAAC,CAACyC,QAAQ,CAC1E,MACF,CAAC;UAAAtC,cAAA,GACwBD,OAAO,CAACwC,KAAK,CAAC,GAAG,CAAC,EAAAtC,eAAA,OAAAuC,eAAA,aAAAxC,cAAA,MAApCE,IAAI,GAAAD,eAAA,KAAEE,QAAQ,GAAAF,eAAA;UACfG,UAAU,GAAG,CAAC,OAAO,EAAE,IAAI,EAAEF,IAAI,EAAE,kBAAkB,EAAEJ,aAAa,CAAC;UAC3ElB,GAAG,CAAC+B,KAAK,CAAAvC,KAAA,CAATQ,GAAG,GACD,iBAAiB,EAAA6D,MAAA,KAAArB,mBAAA,aACdhB,UAAU,CAACiB,GAAG,CAAC,UAACqB,GAAG;YAAA,OACpB,gBAAgB,CAACC,IAAI,CAACD,GAAG,CAAC,GAAGA,GAAG,OAAAD,MAAA,CAAOC,GAAG,CAACE,OAAO,CAAC,IAAI,YAAY,CAAC,MAAG;UAAA,CACzE,CAAC,EACH,CAAC;UACKvC,KAAK,GAAG,IAAAwC,4BAAK,EAAC,QAAQ,EAAEzC,UAAU,EAAE;YACxC0C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;YAClCC,QAAQ,EAAE;UACZ,CAAC,CAAC;UAAA,IACG1C,KAAK,CAAC2C,KAAK;YAAAxC,SAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACR,IAAIuB,KAAK,CAAC,oCAAoC,CAAC;QAAA;UAEvD5B,KAAK,CAAC2C,KAAK,CAACC,KAAK,CAAC9C,QAAQ,CAAC;UAC3BE,KAAK,CAAC2C,KAAK,CAACE,GAAG,CAAC,CAAC;UAAA1C,SAAA,CAAAE,IAAA;UAAA,OACXL,KAAK,CAAC8C,IAAI,CACd;YAAA,OAAMvE,GAAG,CAAC+B,KAAK,CAAC,qBAAqB,CAAC;UAAA,GACtC,UAACyC,KAAc,EAAK;YAClB,IAAIA,KAAK,IAAI,IAAAC,QAAA,aAAOD,KAAK,MAAK,QAAQ,EAAE;cACtC,IAAI,MAAM,IAAIA,KAAK,EACjBxE,GAAG,CAAC+B,KAAK,CAAC,+BAA+B,EAAEyC,KAAK,CAACE,IAAI,CAAC;cACxD,IAAI,QAAQ,IAAIF,KAAK,EACnBxE,GAAG,CAAC+B,KAAK,CAAC,qCAAqC,EAAEyC,KAAK,CAACG,MAAM,CAAC;YAClE;YACA,MAAMH,KAAK;UACb,CACF,CAAC;QAAA;QAAA;UAAA,OAAA5C,SAAA,CAAAkB,IAAA;MAAA;IAAA,GAAAtC,QAAA;EAAA,CACF;EAAA,OAAAJ,WAAA,CAAAZ,KAAA,OAAAE,SAAA;AAAA;AAAAkF,MAAA,CAAAC,OAAA,GAAAA,OAAA,CAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"loginToECR.js","names":["_promisifyChildProcess","require","_base64Js","_interopRequireDefault","_clientEcr","_parseECRImageUri","log4jcore","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof3","has","get","set","_t2","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","logger","loginToECR","_loginToECR","_asyncToGenerator2","_regenerator","mark","_callee2","_ref","ecr","forImages","awsConfig","regions","_yield$ecr$send","authorizationData","_ref3","authorizationToken","proxyEndpoint","decoded","_decoded$split","_decoded$split2","user","password","dockerArgs","child","_args2","_t","wrap","_context2","prev","next","undefined","debug","Set","flatMap","image","parseECRImageUri","region","_unused","Promise","all","_toConsumableArray2","map","_ref2","_callee","_context","abrupt","stop","_x","ECRClient","config","sent","send","GetAuthorizationTokenCommand","Error","Buffer","from","base64","toByteArray","toString","split","_slicedToArray2","concat","arg","test","replace","spawn","stdio","encoding","stdin","write","end","then","error","_typeof2","code","signal","module","exports","default"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/loginToECR.mjs CHANGED
@@ -11,7 +11,7 @@ export default async function loginToECR({
11
11
  ecr,
12
12
  forImages,
13
13
  awsConfig
14
- }) {
14
+ } = {}) {
15
15
  if (forImages) {
16
16
  log.debug('logging into AWS ECR for images:', forImages);
17
17
  const regions = new Set(forImages.flatMap(image => {
@@ -60,9 +60,6 @@ export default async function loginToECR({
60
60
  stdio: ['pipe', 'pipe', 'inherit'],
61
61
  encoding: 'utf8'
62
62
  });
63
- if (!child.stdin) {
64
- throw new Error('expected child.stdin to be defined');
65
- }
66
63
  child.stdin.write(password);
67
64
  child.stdin.end();
68
65
  await child.then(() => log.debug('ECR login succeeded'), error => {
@@ -1 +1 @@
1
- {"version":3,"file":"loginToECR.mjs","names":["spawn","base64","ECRClient","GetAuthorizationTokenCommand","parseECRImageUri","log4jcore","log","logger","loginToECR","ecr","forImages","awsConfig","debug","regions","Set","flatMap","image","region","Promise","all","map","config","authorizationData","send","authorizationToken","proxyEndpoint","Error","decoded","Buffer","from","toByteArray","toString","user","password","split","dockerArgs","arg","test","replace","child","stdio","encoding","stdin","write","end","then","error","code","signal"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"loginToECR.mjs","names":["spawn","base64","ECRClient","GetAuthorizationTokenCommand","parseECRImageUri","log4jcore","log","logger","loginToECR","ecr","forImages","awsConfig","debug","regions","Set","flatMap","image","region","Promise","all","map","config","authorizationData","send","authorizationToken","proxyEndpoint","Error","decoded","Buffer","from","toByteArray","toString","user","password","split","dockerArgs","arg","test","replace","child","stdio","encoding","stdin","write","end","then","error","code","signal"],"sources":["src/loginToECR.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/once.d.mts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function once<Args extends unknown[], Ret>(fn: (...args: Args) => Ret): (...args: Args) => Ret;
2
+ //# sourceMappingURL=once.d.mts.map
package/once.d.mts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.d.mts","names":["once","fn","args","Args","Ret"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":"AAAA,wBAAgBA,IAAI,CAAC,aAAa,OAAO,EAAE,EAAE,GAAG,CAAAA,CAAEC,EAAE,EAAE,CAAC,GAAGC,IAAI,EAAEC,IAAI,KAAKC,GAAG,IAElE,GAAGF,IAAA,EAAMC,IAAI,KAAAC,GAAA","ignoreList":[]}
package/once.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function once<Args extends unknown[], Ret>(fn: (...args: Args) => Ret): (...args: Args) => Ret;
2
+ //# sourceMappingURL=once.d.ts.map
package/once.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.d.ts","names":["once","fn","args","Args","Ret"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":"AAAA,wBAAgBA,IAAI,CAAC,aAAa,OAAO,EAAE,EAAE,GAAG,CAAAA,CAAEC,EAAE,EAAE,CAAC,GAAGC,IAAI,EAAEC,IAAI,KAAKC,GAAG,IAElE,GAAGF,IAAA,EAAMC,IAAI,KAAAC,GAAA","ignoreList":[]}
package/once.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.once = once;
7
+ function once(fn) {
8
+ var result;
9
+ return function () {
10
+ if (!result) result = [fn.apply(void 0, arguments)];
11
+ return result[0];
12
+ };
13
+ }
14
+ //# sourceMappingURL=once.js.map
package/once.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.js","names":["once","fn","result","apply","arguments"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAO,SAASA,IAAIA,CAA8BC,EAA0B,EAAE;EAC5E,IAAIC,MAAyB;EAC7B,OAAO,YAAmB;IACxB,IAAI,CAACA,MAAM,EAAEA,MAAM,GAAG,CAACD,EAAE,CAAAE,KAAA,SAAAC,SAAQ,CAAC,CAAC;IACnC,OAAOF,MAAM,CAAC,CAAC,CAAC;EAClB,CAAC;AACH","ignoreList":[]}
package/once.mjs ADDED
@@ -0,0 +1,8 @@
1
+ export function once(fn) {
2
+ let result;
3
+ return (...args) => {
4
+ if (!result) result = [fn(...args)];
5
+ return result[0];
6
+ };
7
+ }
8
+ //# sourceMappingURL=once.mjs.map
package/once.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.mjs","names":["once","fn","result","args"],"sources":["src/once.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,SAASA,IAAIA,CAA8BC,EAA0B,EAAE;EAC5E,IAAIC,MAAyB;EAC7B,OAAO,CAAC,GAAGC,IAAU,KAAK;IACxB,IAAI,CAACD,MAAM,EAAEA,MAAM,GAAG,CAACD,EAAE,CAAC,GAAGE,IAAI,CAAC,CAAC;IACnC,OAAOD,MAAM,CAAC,CAAC,CAAC;EAClB,CAAC;AACH","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jcoreio/aws-ecr-utils",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "utilities for working with AWS Elastic Container Registry",
5
5
  "sideEffects": false,
6
6
  "repository": {
@@ -23,11 +23,11 @@
23
23
  "@aws-sdk/client-sts": "^3.577.0",
24
24
  "@babel/runtime": "^7.26.0",
25
25
  "base64-js": "^1.5.1",
26
+ "find-up": "^8.0.0",
26
27
  "inquirer": "^8.2.6",
27
- "is-interactive": "^1.0.0",
28
28
  "log4jcore": "^4.8.0",
29
- "promisify-child-process": "^4.1.1",
30
- "zod": "^3.22.4"
29
+ "promisify-child-process": "^5.0.0",
30
+ "zod": "^3.25.76"
31
31
  },
32
32
  "main": "index.js",
33
33
  "module": "index.mjs",
@@ -56,6 +56,6 @@
56
56
  },
57
57
  "packageManager": "pnpm@10.6.5",
58
58
  "@jcoreio/toolchain": {
59
- "migratedVersion": "5.8.6"
59
+ "migratedVersion": "5.8.8"
60
60
  }
61
61
  }
@@ -0,0 +1,237 @@
1
+ import {
2
+ BatchGetImageCommand,
3
+ ECRClient,
4
+ ECRClientConfig,
5
+ PutImageCommand,
6
+ } from '@aws-sdk/client-ecr'
7
+ import { spawn } from 'promisify-child-process'
8
+ import fs from 'fs/promises'
9
+ import path from 'path'
10
+ import { GetCallerIdentityCommand, STSClient } from '@aws-sdk/client-sts'
11
+ import { once } from './once.ts'
12
+ import loginToECR from './loginToECR.ts'
13
+ import os from 'os'
14
+
15
+ export interface ECRDeployerOptions {
16
+ awsConfig?: ECRClientConfig
17
+ /**
18
+ * {@link ECRDeployer#release} will only add a version tag if the current git branch
19
+ * is one of these branches (defaults to `['master', 'main', 'release']`)
20
+ */
21
+ releaseBranches?: string[]
22
+ /**
23
+ * The name of the ECR repository
24
+ */
25
+ repositoryName: string
26
+ }
27
+
28
+ /**
29
+ * Class that implements our conventional process for deploying docker images to ECR.
30
+ *
31
+ * The CI build step should build the docker image (you may want to use {@link getNpmToken}
32
+ * to pass an `NPM_TOKEN` build arg) and then call {@link push} to push the image to
33
+ * ECR tagged with the git commit hash.
34
+ *
35
+ * The CI release step should call {@link release} to add tags for the git branch and
36
+ * the `version` in your `package.json`.
37
+ *
38
+ * You may use the `OVERRIDE_ECR_BRANCH_TAG` and `OVERRIDE_ECR_VERSION_TAG` environment
39
+ * variables to force specific tags for the branch and version.
40
+ */
41
+ export class ECRDeployer {
42
+ options: ECRDeployerOptions
43
+
44
+ constructor(options: ECRDeployerOptions) {
45
+ this.options = options
46
+ }
47
+
48
+ async getBranch() {
49
+ return (
50
+ process.env.OVERRIDE_ECR_BRANCH_TAG ||
51
+ (
52
+ await spawn('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
53
+ encoding: 'utf8',
54
+ })
55
+ ).stdout.trim()
56
+ )
57
+ }
58
+
59
+ async getCommitHash() {
60
+ return (
61
+ await spawn('git', ['rev-parse', 'HEAD'], {
62
+ encoding: 'utf8',
63
+ })
64
+ ).stdout.trim()
65
+ }
66
+
67
+ private getAWSAccountId = once(async () => {
68
+ const sts = new STSClient(this.options.awsConfig || {})
69
+ const { Account } = await sts.send(new GetCallerIdentityCommand())
70
+ if (!Account) throw new Error(`failed to get AWS account id`)
71
+ return Account
72
+ })
73
+
74
+ private async getRegion() {
75
+ const ecr = new ECRClient(this.options.awsConfig || {})
76
+ const region = await ecr.config.region()
77
+ if (!region) {
78
+ throw new Error(`Couldn't get AWS region. Provide the AWS region by either:
79
+ - Setting the AWS_REGION environment variable
80
+ - Putting the region in your ~/.aws/config and setting AWS_SDK_LOAD_CONFIG=true
81
+ `)
82
+ }
83
+ return region
84
+ }
85
+
86
+ private async getECRHost() {
87
+ return `${await this.getAWSAccountId()}.dkr.ecr.${await this.getRegion()}.amazonaws.com`
88
+ }
89
+
90
+ private async getProjectPackageJson() {
91
+ const { findUp } = await import('find-up')
92
+
93
+ const file = await findUp(async (dir) =>
94
+ (
95
+ !/\/node_modules\//.test(path.posix.normalize(dir)) &&
96
+ (await fs.stat(path.join(dir, 'package.json')).then(
97
+ (s) => s.isFile(),
98
+ () => false
99
+ ))
100
+ ) ?
101
+ path.join(dir, 'package.json')
102
+ : undefined
103
+ )
104
+ if (!file) {
105
+ throw new Error(`failed to find enclosing project package.json`)
106
+ }
107
+ return { file, contents: JSON.parse(await fs.readFile(file, 'utf8')) }
108
+ }
109
+
110
+ async getDockerTags(): Promise<{
111
+ latest: string
112
+ branch: string
113
+ commitHash: string
114
+ version?: string
115
+ }> {
116
+ const [commitHash, branch, packageJson] = await Promise.all([
117
+ this.getCommitHash(),
118
+ this.getBranch(),
119
+ this.getProjectPackageJson(),
120
+ ])
121
+ const base = this.options.repositoryName
122
+ const result: {
123
+ latest: string
124
+ branch: string
125
+ commitHash: string
126
+ version?: string
127
+ } = {
128
+ latest: base,
129
+ branch: `${base}:${branch}`,
130
+ commitHash: `${base}:${commitHash}`,
131
+ }
132
+ const { releaseBranches = ['master', 'main', 'release'] } = this.options
133
+ if (releaseBranches.includes(branch)) {
134
+ const version =
135
+ process.env.OVERRIDE_ECR_VERSION_TAG || packageJson.contents.version
136
+ if (typeof version !== 'string') {
137
+ throw new Error(
138
+ `failed to get version from ${path.relative(process.cwd(), packageJson.file)}`
139
+ )
140
+ }
141
+ result.version = `${base}:${version}`
142
+ }
143
+ return result
144
+ }
145
+
146
+ async push() {
147
+ const { awsConfig } = this.options
148
+ const [ecrHost, { commitHash }] = await Promise.all([
149
+ this.getECRHost(),
150
+ this.getDockerTags(),
151
+ loginToECR({ awsConfig }),
152
+ ])
153
+ try {
154
+ await spawn('docker', ['tag', commitHash, `${ecrHost}/${commitHash}`], {
155
+ stdio: 'inherit',
156
+ })
157
+ } catch {
158
+ await spawn(
159
+ 'docker',
160
+ ['tag', '-f', commitHash, `${ecrHost}/${commitHash}`],
161
+ {
162
+ stdio: 'inherit',
163
+ }
164
+ )
165
+ }
166
+ await spawn('docker', ['push', `${ecrHost}/${commitHash}`])
167
+ }
168
+
169
+ async release() {
170
+ const [commitHash, ecrHost, tags] = await Promise.all([
171
+ this.getCommitHash(),
172
+ this.getECRHost(),
173
+ this.getDockerTags(),
174
+ ])
175
+ const ecr = new ECRClient()
176
+
177
+ const { repositoryName } = this.options
178
+
179
+ const { images: [image] = [] } = await ecr.send(
180
+ new BatchGetImageCommand({
181
+ repositoryName,
182
+ imageIds: [{ imageTag: commitHash }],
183
+ })
184
+ )
185
+
186
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
187
+ const imageManifest = image?.imageManifest
188
+
189
+ if (!imageManifest) {
190
+ throw new Error(
191
+ `failed to get image manifest for ${repositoryName}:${commitHash}`
192
+ )
193
+ }
194
+
195
+ if (imageManifest) {
196
+ // add other tags to ECR
197
+ for (const key of Object.keys(tags) as (keyof typeof tags)[]) {
198
+ if (key === 'latest' || key === 'commitHash') continue
199
+ const tag = tags[key]?.replace(/^[^:]+:?/, '')
200
+ if (!tag) continue
201
+ // eslint-disable-next-line no-console
202
+ console.error(`Adding tag ${ecrHost}/${tags[key]}`)
203
+ try {
204
+ await ecr.send(
205
+ new PutImageCommand({
206
+ repositoryName,
207
+ imageManifest,
208
+ imageTag: tag.substring(tag.indexOf(':') + 1),
209
+ })
210
+ )
211
+ } catch (error) {
212
+ if (
213
+ error instanceof Object &&
214
+ 'code' in error &&
215
+ error.code !== 'ImageAlreadyExistsException'
216
+ ) {
217
+ throw error
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+
224
+ async getNpmToken(env = process.env) {
225
+ const { NPM_TOKEN } = env
226
+ if (NPM_TOKEN) return NPM_TOKEN
227
+ try {
228
+ const homedir = os.homedir()
229
+ const npmrc = await fs.readFile(`${homedir}/.npmrc`, 'utf8')
230
+ const match = /registry\.npmjs\.org\/:_authToken=(.+)/.exec(npmrc)
231
+ if (match) return match[1]
232
+ } catch {
233
+ // ignore
234
+ }
235
+ throw new Error('Missing process.env.NPM_TOKEN or entry in ~/.npmrc')
236
+ }
237
+ }
@@ -2,17 +2,17 @@ import {
2
2
  BatchCheckLayerAvailabilityCommand,
3
3
  BatchGetImageCommand,
4
4
  ECRClient,
5
- ECRClientConfig,
5
+ type ECRClientConfig,
6
6
  GetDownloadUrlForLayerCommand,
7
7
  GetRepositoryPolicyCommand,
8
8
  SetRepositoryPolicyCommand,
9
9
  } from '@aws-sdk/client-ecr'
10
10
  import { STSClient, GetCallerIdentityCommand } from '@aws-sdk/client-sts'
11
- import parseECRImageUri from './parseECRImageUri'
12
- import { ImageManifestSchema } from './ImageManifestSchema'
13
- import isInteractive from 'is-interactive'
11
+ import parseECRImageUri from './parseECRImageUri.ts'
12
+ import { ImageManifestSchema } from './ImageManifestSchema.ts'
13
+ import { isInteractive } from './isInteractive.ts'
14
14
  import inquirer from 'inquirer'
15
- import formatECRRepositoryHostname from './formatECRRepositoryHostname'
15
+ import formatECRRepositoryHostname from './formatECRRepositoryHostname.ts'
16
16
 
17
17
  export default async function checkECRImageAccess({
18
18
  ecr,
@@ -37,7 +37,7 @@ export default async function checkECRImageAccess({
37
37
  error: (...args: any[]) => void
38
38
  }
39
39
  }): Promise<boolean> {
40
- log.error('checking access to ECR image:', imageUri, '...')
40
+ log.error('checking access to ECR image:', imageUri, '....ts')
41
41
 
42
42
  const { registryId, region, repositoryName, imageTag } =
43
43
  parseECRImageUri(imageUri)
@@ -114,7 +114,7 @@ The policy should include:
114
114
  ).replace(/\n/gm, '\n ')}
115
115
  `)
116
116
 
117
- if (repoAccountAwsConfig && isInteractive()) {
117
+ if (repoAccountAwsConfig && isInteractive) {
118
118
  const { Account } = await new STSClient({
119
119
  credentials: ecr.config.credentials,
120
120
  region,