legacy.js 22 KB

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