legacy.mjs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
  1. function _array_like_to_array(arr, len) {
  2. if (len == null || len > arr.length) len = arr.length;
  3. for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
  4. return arr2;
  5. }
  6. function _array_with_holes(arr) {
  7. if (Array.isArray(arr)) return arr;
  8. }
  9. function _class_call_check(instance, Constructor) {
  10. if (!(instance instanceof Constructor)) {
  11. throw new TypeError("Cannot call a class as a function");
  12. }
  13. }
  14. function _defineProperties(target, props) {
  15. for(var i = 0; i < props.length; i++){
  16. var descriptor = props[i];
  17. descriptor.enumerable = descriptor.enumerable || false;
  18. descriptor.configurable = true;
  19. if ("value" in descriptor) descriptor.writable = true;
  20. Object.defineProperty(target, descriptor.key, descriptor);
  21. }
  22. }
  23. function _create_class(Constructor, protoProps, staticProps) {
  24. if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  25. if (staticProps) _defineProperties(Constructor, staticProps);
  26. return Constructor;
  27. }
  28. function _instanceof(left, right) {
  29. if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
  30. return !!right[Symbol.hasInstance](left);
  31. } else {
  32. return left instanceof right;
  33. }
  34. }
  35. function _iterable_to_array_limit(arr, i) {
  36. var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
  37. if (_i == null) return;
  38. var _arr = [];
  39. var _n = true;
  40. var _d = false;
  41. var _s, _e;
  42. try {
  43. for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
  44. _arr.push(_s.value);
  45. if (i && _arr.length === i) break;
  46. }
  47. } catch (err) {
  48. _d = true;
  49. _e = err;
  50. } finally{
  51. try {
  52. if (!_n && _i["return"] != null) _i["return"]();
  53. } finally{
  54. if (_d) throw _e;
  55. }
  56. }
  57. return _arr;
  58. }
  59. function _non_iterable_rest() {
  60. throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  61. }
  62. function _sliced_to_array(arr, i) {
  63. return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
  64. }
  65. function _type_of(obj) {
  66. "@swc/helpers - typeof";
  67. return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
  68. }
  69. function _unsupported_iterable_to_array(o, minLen) {
  70. if (!o) return;
  71. if (typeof o === "string") return _array_like_to_array(o, minLen);
  72. var n = Object.prototype.toString.call(o).slice(8, -1);
  73. if (n === "Object" && o.constructor) n = o.constructor.name;
  74. if (n === "Map" || n === "Set") return Array.from(n);
  75. if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
  76. }
  77. var __typeError = function(msg) {
  78. throw TypeError(msg);
  79. };
  80. var __accessCheck = function(obj, member, msg) {
  81. return member.has(obj) || __typeError("Cannot " + msg);
  82. };
  83. var __privateGet = function(obj, member, getter) {
  84. return __accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj);
  85. };
  86. var __privateAdd = function(obj, member, value) {
  87. return member.has(obj) ? __typeError("Cannot add the same private member more than once") : _instanceof(member, WeakSet) ? member.add(obj) : member.set(obj, value);
  88. };
  89. var __privateSet = function(obj, member, value, setter) {
  90. return __accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value;
  91. };
  92. // src/index.ts
  93. var to_string = function(obj) {
  94. return Object.prototype.toString.call(obj);
  95. };
  96. var is_typed_array = function(value) {
  97. return ArrayBuffer.isView(value) && !_instanceof(value, DataView);
  98. };
  99. var is_date = function(obj) {
  100. return to_string(obj) === "[object Date]";
  101. };
  102. var is_regexp = function(obj) {
  103. return to_string(obj) === "[object RegExp]";
  104. };
  105. var is_error = function(obj) {
  106. return to_string(obj) === "[object Error]";
  107. };
  108. var is_boolean = function(obj) {
  109. return to_string(obj) === "[object Boolean]";
  110. };
  111. var is_number = function(obj) {
  112. return to_string(obj) === "[object Number]";
  113. };
  114. var is_string = function(obj) {
  115. return to_string(obj) === "[object String]";
  116. };
  117. var is_array = Array.isArray;
  118. var gopd = Object.getOwnPropertyDescriptor;
  119. var is_property_enumerable = Object.prototype.propertyIsEnumerable;
  120. var get_own_property_symbols = Object.getOwnPropertySymbols;
  121. var has_own_property = Object.prototype.hasOwnProperty;
  122. function own_enumerable_keys(obj) {
  123. var res = Object.keys(obj);
  124. var symbols = get_own_property_symbols(obj);
  125. for(var i = 0; i < symbols.length; i++){
  126. if (is_property_enumerable.call(obj, symbols[i])) {
  127. res.push(symbols[i]);
  128. }
  129. }
  130. return res;
  131. }
  132. function is_writable(object, key) {
  133. var _gopd;
  134. return !((_gopd = gopd(object, key)) === null || _gopd === void 0 ? void 0 : _gopd.writable);
  135. }
  136. function copy(src, options) {
  137. if ((typeof src === "undefined" ? "undefined" : _type_of(src)) === "object" && src !== null) {
  138. var dst;
  139. if (is_array(src)) {
  140. dst = [];
  141. } else if (is_date(src)) {
  142. dst = new Date(src.getTime ? src.getTime() : src);
  143. } else if (is_regexp(src)) {
  144. dst = new RegExp(src);
  145. } else if (is_error(src)) {
  146. dst = {
  147. message: src.message
  148. };
  149. } else if (is_boolean(src) || is_number(src) || is_string(src)) {
  150. dst = Object(src);
  151. } else if (is_typed_array(src)) {
  152. return src.slice();
  153. } else {
  154. dst = Object.create(Object.getPrototypeOf(src));
  155. }
  156. var iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;
  157. var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
  158. try {
  159. for(var _iterator = iterator_function(src)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
  160. var key = _step.value;
  161. dst[key] = src[key];
  162. }
  163. } catch (err) {
  164. _didIteratorError = true;
  165. _iteratorError = err;
  166. } finally{
  167. try {
  168. if (!_iteratorNormalCompletion && _iterator.return != null) {
  169. _iterator.return();
  170. }
  171. } finally{
  172. if (_didIteratorError) {
  173. throw _iteratorError;
  174. }
  175. }
  176. }
  177. return dst;
  178. }
  179. return src;
  180. }
  181. var empty_null = {
  182. includeSymbols: false,
  183. immutable: false
  184. };
  185. function walk(root, cb) {
  186. var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : empty_null;
  187. var path = [];
  188. var parents = [];
  189. var alive = true;
  190. var iterator_function = options.includeSymbols ? own_enumerable_keys : Object.keys;
  191. var immutable = !!options.immutable;
  192. return function walker(node_) {
  193. var node = immutable ? copy(node_, options) : node_;
  194. var modifiers = {};
  195. var keep_going = true;
  196. var state = {
  197. node: node,
  198. node_: node_,
  199. path: [].concat(path),
  200. parent: parents[parents.length - 1],
  201. parents: parents,
  202. key: path[path.length - 1],
  203. isRoot: path.length === 0,
  204. level: path.length,
  205. circular: void 0,
  206. isLeaf: false,
  207. notLeaf: true,
  208. notRoot: true,
  209. isFirst: false,
  210. isLast: false,
  211. update: function update(x) {
  212. var stopHere = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
  213. if (!state.isRoot) {
  214. state.parent.node[state.key] = x;
  215. }
  216. state.node = x;
  217. if (stopHere) {
  218. keep_going = false;
  219. }
  220. },
  221. delete: function _delete(stopHere) {
  222. delete state.parent.node[state.key];
  223. if (stopHere) {
  224. keep_going = false;
  225. }
  226. },
  227. remove: function remove(stopHere) {
  228. if (is_array(state.parent.node)) {
  229. state.parent.node.splice(state.key, 1);
  230. } else {
  231. delete state.parent.node[state.key];
  232. }
  233. if (stopHere) {
  234. keep_going = false;
  235. }
  236. },
  237. keys: null,
  238. before: function before(f) {
  239. modifiers.before = f;
  240. },
  241. after: function after(f) {
  242. modifiers.after = f;
  243. },
  244. pre: function pre(f) {
  245. modifiers.pre = f;
  246. },
  247. post: function post(f) {
  248. modifiers.post = f;
  249. },
  250. stop: function stop() {
  251. alive = false;
  252. },
  253. block: function block() {
  254. keep_going = false;
  255. }
  256. };
  257. if (!alive) {
  258. return state;
  259. }
  260. function update_state() {
  261. if (_type_of(state.node) === "object" && state.node !== null) {
  262. if (!state.keys || state.node_ !== state.node) {
  263. state.keys = iterator_function(state.node);
  264. }
  265. state.isLeaf = state.keys.length === 0;
  266. for(var i = 0; i < parents.length; i++){
  267. if (parents[i].node_ === node_) {
  268. state.circular = parents[i];
  269. break;
  270. }
  271. }
  272. } else {
  273. state.isLeaf = true;
  274. state.keys = null;
  275. }
  276. state.notLeaf = !state.isLeaf;
  277. state.notRoot = !state.isRoot;
  278. }
  279. update_state();
  280. var ret = cb.call(state, state.node);
  281. if (ret !== void 0 && state.update) {
  282. state.update(ret);
  283. }
  284. if (modifiers.before) {
  285. modifiers.before.call(state, state.node);
  286. }
  287. if (!keep_going) {
  288. return state;
  289. }
  290. if (_type_of(state.node) === "object" && state.node !== null && !state.circular) {
  291. parents.push(state);
  292. update_state();
  293. var _state_keys;
  294. var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
  295. try {
  296. for(var _iterator = Object.entries((_state_keys = state.keys) !== null && _state_keys !== void 0 ? _state_keys : [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
  297. var _step_value = _sliced_to_array(_step.value, 2), index = _step_value[0], key = _step_value[1];
  298. var _state_keys1;
  299. path.push(key);
  300. if (modifiers.pre) {
  301. modifiers.pre.call(state, state.node[key], key);
  302. }
  303. var child = walker(state.node[key]);
  304. if (immutable && has_own_property.call(state.node, key) && !is_writable(state.node, key)) {
  305. state.node[key] = child.node;
  306. }
  307. child.isLast = ((_state_keys1 = state.keys) === null || _state_keys1 === void 0 ? void 0 : _state_keys1.length) ? +index === state.keys.length - 1 : false;
  308. child.isFirst = +index === 0;
  309. if (modifiers.post) {
  310. modifiers.post.call(state, child);
  311. }
  312. path.pop();
  313. }
  314. } catch (err) {
  315. _didIteratorError = true;
  316. _iteratorError = err;
  317. } finally{
  318. try {
  319. if (!_iteratorNormalCompletion && _iterator.return != null) {
  320. _iterator.return();
  321. }
  322. } finally{
  323. if (_didIteratorError) {
  324. throw _iteratorError;
  325. }
  326. }
  327. }
  328. parents.pop();
  329. }
  330. if (modifiers.after) {
  331. modifiers.after.call(state, state.node);
  332. }
  333. return state;
  334. }(root).node;
  335. }
  336. var _value, _options;
  337. var Traverse = /*#__PURE__*/ function() {
  338. "use strict";
  339. function Traverse(obj) {
  340. var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : empty_null;
  341. _class_call_check(this, Traverse);
  342. // ! Have to keep these public as legacy mode requires them
  343. __privateAdd(this, _value);
  344. __privateAdd(this, _options);
  345. __privateSet(this, _value, obj);
  346. __privateSet(this, _options, options);
  347. }
  348. _create_class(Traverse, [
  349. {
  350. /**
  351. * Get the element at the array `path`.
  352. */ key: "get",
  353. value: function get(paths) {
  354. var node = __privateGet(this, _value);
  355. for(var i = 0; node && i < paths.length; i++){
  356. var key = paths[i];
  357. if (!has_own_property.call(node, key) || !__privateGet(this, _options).includeSymbols && (typeof key === "undefined" ? "undefined" : _type_of(key)) === "symbol") {
  358. return void 0;
  359. }
  360. node = node[key];
  361. }
  362. return node;
  363. }
  364. },
  365. {
  366. /**
  367. * Return whether the element at the array `path` exists.
  368. */ key: "has",
  369. value: function has(paths) {
  370. var node = __privateGet(this, _value);
  371. for(var i = 0; node && i < paths.length; i++){
  372. var key = paths[i];
  373. if (!has_own_property.call(node, key) || !__privateGet(this, _options).includeSymbols && (typeof key === "undefined" ? "undefined" : _type_of(key)) === "symbol") {
  374. return false;
  375. }
  376. node = node[key];
  377. }
  378. return true;
  379. }
  380. },
  381. {
  382. /**
  383. * Set the element at the array `path` to `value`.
  384. */ key: "set",
  385. value: function set(path, value) {
  386. var node = __privateGet(this, _value);
  387. var i = 0;
  388. for(i = 0; i < path.length - 1; i++){
  389. var key = path[i];
  390. if (!has_own_property.call(node, key)) {
  391. node[key] = {};
  392. }
  393. node = node[key];
  394. }
  395. node[path[i]] = value;
  396. return value;
  397. }
  398. },
  399. {
  400. /**
  401. * Execute `fn` for each node in the object and return a new object with the results of the walk. To update nodes in the result use `this.update(value)`.
  402. */ key: "map",
  403. value: function map(cb) {
  404. return walk(__privateGet(this, _value), cb, {
  405. immutable: true,
  406. includeSymbols: !!__privateGet(this, _options).includeSymbols
  407. });
  408. }
  409. },
  410. {
  411. /**
  412. * Execute `fn` for each node in the object but unlike `.map()`, when `this.update()` is called it updates the object in-place.
  413. */ key: "forEach",
  414. value: function forEach(cb) {
  415. __privateSet(this, _value, walk(__privateGet(this, _value), cb, __privateGet(this, _options)));
  416. return __privateGet(this, _value);
  417. }
  418. },
  419. {
  420. /**
  421. * For each node in the object, perform a [left-fold](http://en.wikipedia.org/wiki/Fold_(higher-order_function)) with the return value of `fn(acc, node)`.
  422. *
  423. * If `init` isn't specified, `init` is set to the root object for the first step and the root element is skipped.
  424. */ key: "reduce",
  425. value: function reduce(cb, init) {
  426. var skip = arguments.length === 1;
  427. var acc = skip ? __privateGet(this, _value) : init;
  428. this.forEach(function(x) {
  429. if (!this.isRoot || !skip) {
  430. acc = cb.call(this, acc, x);
  431. }
  432. });
  433. return acc;
  434. }
  435. },
  436. {
  437. /**
  438. * Return an `Array` of every possible non-cyclic path in the object.
  439. * Paths are `Array`s of string keys.
  440. */ key: "paths",
  441. value: function paths() {
  442. var acc = [];
  443. this.forEach(function() {
  444. acc.push(this.path);
  445. });
  446. return acc;
  447. }
  448. },
  449. {
  450. /**
  451. * Return an `Array` of every node in the object.
  452. */ key: "nodes",
  453. value: function nodes() {
  454. var acc = [];
  455. this.forEach(function() {
  456. acc.push(this.node);
  457. });
  458. return acc;
  459. }
  460. },
  461. {
  462. /**
  463. * Create a deep clone of the object.
  464. */ key: "clone",
  465. value: function clone() {
  466. var parents = [];
  467. var nodes = [];
  468. var options = __privateGet(this, _options);
  469. if (is_typed_array(__privateGet(this, _value))) {
  470. return __privateGet(this, _value).slice();
  471. }
  472. return function clone(src) {
  473. for(var i = 0; i < parents.length; i++){
  474. if (parents[i] === src) {
  475. return nodes[i];
  476. }
  477. }
  478. if ((typeof src === "undefined" ? "undefined" : _type_of(src)) === "object" && src !== null) {
  479. var dst = copy(src, options);
  480. parents.push(src);
  481. nodes.push(dst);
  482. var iteratorFunction = options.includeSymbols ? own_enumerable_keys : Object.keys;
  483. var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
  484. try {
  485. for(var _iterator = iteratorFunction(src)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
  486. var key = _step.value;
  487. dst[key] = clone(src[key]);
  488. }
  489. } catch (err) {
  490. _didIteratorError = true;
  491. _iteratorError = err;
  492. } finally{
  493. try {
  494. if (!_iteratorNormalCompletion && _iterator.return != null) {
  495. _iterator.return();
  496. }
  497. } finally{
  498. if (_didIteratorError) {
  499. throw _iteratorError;
  500. }
  501. }
  502. }
  503. parents.pop();
  504. nodes.pop();
  505. return dst;
  506. }
  507. return src;
  508. }(__privateGet(this, _value));
  509. }
  510. }
  511. ]);
  512. return Traverse;
  513. }();
  514. _value = new WeakMap();
  515. _options = new WeakMap();
  516. var traverse = function(obj, options) {
  517. return new Traverse(obj, options);
  518. };
  519. traverse.get = function(obj, paths, options) {
  520. return new Traverse(obj, options).get(paths);
  521. };
  522. traverse.set = function(obj, path, value, options) {
  523. return new Traverse(obj, options).set(path, value);
  524. };
  525. traverse.has = function(obj, paths, options) {
  526. return new Traverse(obj, options).has(paths);
  527. };
  528. traverse.map = function(obj, cb, options) {
  529. return new Traverse(obj, options).map(cb);
  530. };
  531. traverse.forEach = function(obj, cb, options) {
  532. return new Traverse(obj, options).forEach(cb);
  533. };
  534. traverse.reduce = function(obj, cb, init, options) {
  535. return new Traverse(obj, options).reduce(cb, init);
  536. };
  537. traverse.paths = function(obj, options) {
  538. return new Traverse(obj, options).paths();
  539. };
  540. traverse.nodes = function(obj, options) {
  541. return new Traverse(obj, options).nodes();
  542. };
  543. traverse.clone = function(obj, options) {
  544. return new Traverse(obj, options).clone();
  545. };
  546. var src_default = traverse;
  547. // src/legacy.cts
  548. export { src_default as default };