permaweb-deploy 2.4.0 → 2.5.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.
package/dist/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
 
4
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
5
  var _turboSdk = require("@ardrive/turbo-sdk");
5
6
  var _fs = _interopRequireDefault(require("fs"));
6
7
  var _yargs = _interopRequireDefault(require("yargs"));
@@ -8,15 +9,25 @@ var _helpers = require("yargs/helpers");
8
9
  var _mimeTypes = _interopRequireDefault(require("mime-types"));
9
10
  var _sdk = require("@ar.io/sdk");
10
11
  var _aoconnect = require("@permaweb/aoconnect");
12
+ var _nodeStream = require("node:stream");
11
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
14
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
13
15
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { if (r) i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n;else { var o = function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); }; o("next", 0), o("throw", 1), o("return", 2); } }, _regeneratorDefine2(e, r, n, t); }
14
16
  function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
15
17
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
16
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
17
18
  function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
18
19
  function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
20
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
23
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
24
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
25
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
26
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
27
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
19
28
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
29
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
30
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
20
31
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
21
32
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
22
33
  var arweaveTxIdRegex = /^[a-zA-Z0-9-_]{43}$/;
@@ -74,7 +85,7 @@ if (ARIO_PROCESS === 'mainnet') {
74
85
  ARIO_PROCESS = _sdk.ARIO_TESTNET_PROCESS_ID;
75
86
  }
76
87
  _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
77
- var ario, arnsNameRecord, signer, token, jwk, turbo, uploadResult, txOrManifestId, mimeType, ant, _t, _t2;
88
+ var ario, arnsNameRecord, signer, token, jwk, turbo, uploadResult, txOrManifestId, mimeType, origPaths, newPaths, replaceManifest, _i, _Object$entries, _Object$entries$_i, key, value, newKey, newManifest, buffer, _yield$turbo$uploadFi, id, ant, _t, _t2;
78
89
  return _regenerator().w(function (_context) {
79
90
  while (1) switch (_context.n) {
80
91
  case 0:
@@ -180,7 +191,7 @@ _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
180
191
  case 9:
181
192
  uploadResult = _context.v;
182
193
  txOrManifestId = uploadResult.id;
183
- _context.n = 12;
194
+ _context.n = 13;
184
195
  break;
185
196
  case 10:
186
197
  _context.n = 11;
@@ -200,8 +211,52 @@ _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
200
211
  });
201
212
  case 11:
202
213
  uploadResult = _context.v;
203
- txOrManifestId = uploadResult.manifestResponse.id;
214
+ txOrManifestId = uploadResult.manifestResponse.id; //might replace now
215
+
216
+ // Make default folder paths work by adding extra path entries
217
+ origPaths = uploadResult.manifest.paths;
218
+ newPaths = {};
219
+ replaceManifest = false;
220
+ for (_i = 0, _Object$entries = Object.entries(origPaths); _i < _Object$entries.length; _i++) {
221
+ _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), key = _Object$entries$_i[0], value = _Object$entries$_i[1];
222
+ newPaths[key] = value;
223
+ if (key.endsWith('/index.html')) {
224
+ newKey = key.replace(/\/index\.html$/, '');
225
+ newPaths[newKey] = value;
226
+ replaceManifest = true;
227
+ }
228
+ ;
229
+ }
230
+ ;
231
+ if (!replaceManifest) {
232
+ _context.n = 13;
233
+ break;
234
+ }
235
+ console.info('replacing manifest');
236
+ newManifest = _objectSpread(_objectSpread({}, uploadResult.manifest), {}, {
237
+ paths: newPaths
238
+ });
239
+ buffer = Buffer.from(JSON.stringify(newManifest));
240
+ _context.n = 12;
241
+ return turbo.uploadFile({
242
+ fileStreamFactory: function fileStreamFactory() {
243
+ return _nodeStream.Readable.from(buffer);
244
+ },
245
+ fileSizeFactory: function fileSizeFactory() {
246
+ return buffer.length;
247
+ },
248
+ dataItemOpts: {
249
+ tags: [{
250
+ name: 'Content-Type',
251
+ value: 'application/x.arweave-manifest+json'
252
+ }]
253
+ }
254
+ });
204
255
  case 12:
256
+ _yield$turbo$uploadFi = _context.v;
257
+ id = _yield$turbo$uploadFi.id;
258
+ txOrManifestId = id;
259
+ case 13:
205
260
  console.log('-------------------- DEPLOY DETAILS --------------------');
206
261
  console.log("Tx ID: ".concat(txOrManifestId));
207
262
  console.log("ArNS Name: ".concat(ARNS_NAME));
@@ -214,7 +269,7 @@ _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
214
269
  processId: arnsNameRecord.processId,
215
270
  signer: signer
216
271
  }); // Update the ANT record (assumes the JWK is a controller or owner)
217
- _context.n = 13;
272
+ _context.n = 14;
218
273
  return ant.setRecord({
219
274
  undername: argv.undername,
220
275
  transactionId: txOrManifestId,
@@ -228,17 +283,17 @@ _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
228
283
  value: process.env.GITHUB_SHA
229
284
  }] : []))
230
285
  });
231
- case 13:
286
+ case 14:
232
287
  console.log("Deployed TxId [".concat(txOrManifestId, "] to name [").concat(ARNS_NAME, "] for ANT [").concat(arnsNameRecord.processId, "] using undername [").concat(argv.undername, "]"));
233
- _context.n = 15;
288
+ _context.n = 16;
234
289
  break;
235
- case 14:
236
- _context.p = 14;
290
+ case 15:
291
+ _context.p = 15;
237
292
  _t2 = _context.v;
238
293
  console.error('Deployment failed:', _t2);
239
294
  process.exit(1); // Exit with error code
240
- case 15:
295
+ case 16:
241
296
  return _context.a(2);
242
297
  }
243
- }, _callee, null, [[2, 14]]);
298
+ }, _callee, null, [[2, 15]]);
244
299
  }))();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "permaweb-deploy",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "Permaweb App Deployment Package",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/src/index.js CHANGED
@@ -7,6 +7,7 @@ import mime from 'mime-types';
7
7
 
8
8
  import { ANT, AOProcess, ARIO, ARIO_MAINNET_PROCESS_ID, ARIO_TESTNET_PROCESS_ID, ArweaveSigner } from '@ar.io/sdk';
9
9
  import { connect } from '@permaweb/aoconnect';
10
+ import { Readable } from 'node:stream';
10
11
 
11
12
  const arweaveTxIdRegex = /^[a-zA-Z0-9-_]{43}$/;
12
13
 
@@ -212,7 +213,32 @@ if (ARIO_PROCESS === 'mainnet') {
212
213
  ],
213
214
  },
214
215
  });
215
- txOrManifestId = uploadResult.manifestResponse.id;
216
+ txOrManifestId = uploadResult.manifestResponse.id; //might replace now
217
+
218
+ // Make default folder paths work by adding extra path entries
219
+ const origPaths = uploadResult.manifest.paths;
220
+ const newPaths = {};
221
+ let replaceManifest = false;
222
+ for (const [key, value] of Object.entries(origPaths)) {
223
+ newPaths[key] = value;
224
+ if (key.endsWith('/index.html')) {
225
+ const newKey = key.replace(/\/index\.html$/, '');
226
+ newPaths[newKey] = value;
227
+ replaceManifest = true;
228
+ };
229
+ };
230
+
231
+ if (replaceManifest) {
232
+ console.info('replacing manifest');
233
+ const newManifest = { ...uploadResult.manifest, paths: newPaths };
234
+ const buffer = Buffer.from(JSON.stringify(newManifest));
235
+ const { id } = await turbo.uploadFile({
236
+ fileStreamFactory: () => Readable.from(buffer),
237
+ fileSizeFactory: () => buffer.length,
238
+ dataItemOpts: { tags: [{ name: 'Content-Type', value: 'application/x.arweave-manifest+json' }] },
239
+ });
240
+ txOrManifestId = id;
241
+ }
216
242
  }
217
243
 
218
244
  console.log('-------------------- DEPLOY DETAILS --------------------');