aberdeen 1.13.0 → 1.14.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 (79) hide show
  1. package/dist/src/aberdeen.d.ts +15 -0
  2. package/dist/src/aberdeen.js +40 -15
  3. package/dist/src/aberdeen.js.map +3 -3
  4. package/dist/tests/fakedom.js +6 -6
  5. package/dist/tests/fakedom.js.map +3 -3
  6. package/dist/tests/helpers.js +6 -6
  7. package/dist/tests/helpers.js.map +3 -3
  8. package/dist-docs/Tutorial/index.html +2 -2
  9. package/dist-docs/aberdeen/A/index.html +2 -2
  10. package/dist-docs/aberdeen/CUSTOM_DUMP/index.html +7 -0
  11. package/dist-docs/aberdeen/NO_COPY/index.html +2 -2
  12. package/dist-docs/aberdeen/OPAQUE/index.html +2 -2
  13. package/dist-docs/aberdeen/PromiseProxy/index.html +5 -5
  14. package/dist-docs/aberdeen/clean/index.html +2 -2
  15. package/dist-docs/aberdeen/clone/index.html +2 -2
  16. package/dist-docs/aberdeen/copy/index.html +3 -3
  17. package/dist-docs/aberdeen/count/index.html +2 -2
  18. package/dist-docs/aberdeen/cssVars/index.html +2 -2
  19. package/dist-docs/aberdeen/darkMode/index.html +2 -2
  20. package/dist-docs/aberdeen/default/index.html +5 -2
  21. package/dist-docs/aberdeen/derive/index.html +2 -2
  22. package/dist-docs/aberdeen/disableCreateDestroy/index.html +2 -2
  23. package/dist-docs/aberdeen/dump/index.html +2 -2
  24. package/dist-docs/aberdeen/index.html +5 -2
  25. package/dist-docs/aberdeen/insertCss/index.html +2 -2
  26. package/dist-docs/aberdeen/insertGlobalCss/index.html +2 -2
  27. package/dist-docs/aberdeen/invertString/index.html +2 -2
  28. package/dist-docs/aberdeen/isEmpty/index.html +2 -2
  29. package/dist-docs/aberdeen/map/index.html +4 -4
  30. package/dist-docs/aberdeen/merge/index.html +3 -3
  31. package/dist-docs/aberdeen/mount/index.html +2 -2
  32. package/dist-docs/aberdeen/multiMap/index.html +4 -4
  33. package/dist-docs/aberdeen/onEach/index.html +2 -2
  34. package/dist-docs/aberdeen/partition/index.html +4 -4
  35. package/dist-docs/aberdeen/peek/index.html +5 -5
  36. package/dist-docs/aberdeen/proxy/index.html +2 -2
  37. package/dist-docs/aberdeen/ref/index.html +2 -2
  38. package/dist-docs/aberdeen/runQueue/index.html +2 -2
  39. package/dist-docs/aberdeen/setErrorHandler/index.html +2 -2
  40. package/dist-docs/aberdeen/setSpacingCssVars/index.html +2 -2
  41. package/dist-docs/aberdeen/unmountAll/index.html +2 -2
  42. package/dist-docs/aberdeen/unproxy/index.html +2 -2
  43. package/dist-docs/assets/aberdeen/aberdeen.d.ts +15 -0
  44. package/dist-docs/assets/aberdeen/aberdeen.js +40 -15
  45. package/dist-docs/assets/aberdeen/aberdeen.js.map +3 -3
  46. package/dist-docs/assets/navigation.js +1 -1
  47. package/dist-docs/assets/search.js +1 -1
  48. package/dist-docs/dispatcher/Dispatcher/index.html +4 -4
  49. package/dist-docs/dispatcher/MATCH_FAILED/index.html +2 -2
  50. package/dist-docs/dispatcher/MATCH_REST/index.html +2 -2
  51. package/dist-docs/dispatcher/index.html +2 -2
  52. package/dist-docs/hierarchy.html +1 -1
  53. package/dist-docs/index.html +2 -2
  54. package/dist-docs/media/CHANGELOG.md +7 -0
  55. package/dist-docs/modules.html +1 -1
  56. package/dist-docs/prediction/applyCanon/index.html +2 -2
  57. package/dist-docs/prediction/applyPrediction/index.html +2 -2
  58. package/dist-docs/prediction/index.html +2 -2
  59. package/dist-docs/route/Route/index.html +9 -9
  60. package/dist-docs/route/back/index.html +2 -2
  61. package/dist-docs/route/current/index.html +2 -2
  62. package/dist-docs/route/go/index.html +2 -2
  63. package/dist-docs/route/index.html +2 -2
  64. package/dist-docs/route/interceptLinks/index.html +2 -2
  65. package/dist-docs/route/persistScroll/index.html +2 -2
  66. package/dist-docs/route/push/index.html +2 -2
  67. package/dist-docs/route/setLog/index.html +2 -2
  68. package/dist-docs/route/up/index.html +2 -2
  69. package/dist-docs/sitemap.xml +61 -57
  70. package/dist-docs/transitions/grow/index.html +2 -2
  71. package/dist-docs/transitions/index.html +2 -2
  72. package/dist-docs/transitions/shrink/index.html +2 -2
  73. package/package.json +13 -13
  74. package/skill/aberdeen.md +82 -53
  75. package/skill/dispatcher.md +6 -6
  76. package/skill/prediction.md +3 -3
  77. package/skill/route.md +17 -17
  78. package/skill/transitions.md +3 -3
  79. package/src/aberdeen.ts +58 -16
@@ -896,6 +896,20 @@ export declare function partition<IN_K extends string | number | symbol, OUT_K e
896
896
  * ```
897
897
  */
898
898
  export declare function dump<T>(data: T): T;
899
+ /**
900
+ * When set on an object or its prototype chain, {@link dump} calls this as a render function
901
+ * (with the object as `this`) instead of its default recursive rendering. When `false` this
902
+ * inhibits `dump` from rendering object properties.
903
+ *
904
+ * @example
905
+ * ```typescript
906
+ * class Color {
907
+ * constructor(public r: number, public g: number, public b: number) {}
908
+ * [CUSTOM_DUMP]() { A(`#rgb(${this.r}, ${this.g}, ${this.b})`); }
909
+ * }
910
+ * ```
911
+ */
912
+ export declare const CUSTOM_DUMP: unique symbol;
899
913
  /**
900
914
  * The main Aberdeen API. `A` is itself a callable function for building reactive DOM trees
901
915
  * (creating elements, setting attributes, adding content). All other Aberdeen functions and
@@ -918,6 +932,7 @@ declare const _default: typeof A & {
918
932
  /** {@inheritDoc copy} */ copy: typeof copy;
919
933
  /** {@inheritDoc count} */ count: typeof count;
920
934
  /** {@inheritDoc cssVars} */ cssVars: Record<string, string>;
935
+ /** {@inheritDoc CUSTOM_DUMP} */ CUSTOM_DUMP: symbol;
921
936
  /** {@inheritDoc darkMode} */ darkMode: typeof darkMode;
922
937
  /** {@inheritDoc derive} */ derive: typeof derive;
923
938
  /** {@inheritDoc disableCreateDestroy} */ disableCreateDestroy: typeof disableCreateDestroy;
@@ -981,7 +981,7 @@ var setHandler = {
981
981
  };
982
982
  var proxyMap = new WeakMap;
983
983
  function optProxy(value) {
984
- if (typeof value !== "object" || !value || value[TARGET_SYMBOL] !== undefined || value[OPAQUE]) {
984
+ if (typeof value !== "object" || !value || value[TARGET_SYMBOL] !== undefined || value[OPAQUE] || value instanceof Date) {
985
985
  return value;
986
986
  }
987
987
  let proxied = proxyMap.get(value);
@@ -1733,26 +1733,49 @@ function partition(source, func) {
1733
1733
  return out;
1734
1734
  }
1735
1735
  function dump(data) {
1736
+ const org = dumpSeen;
1737
+ dumpSeen ||= new Set;
1738
+ try {
1739
+ rawDump(data, dumpSeen);
1740
+ } finally {
1741
+ dumpSeen = org;
1742
+ }
1743
+ return data;
1744
+ }
1745
+ var dumpSeen;
1746
+ function rawDump(data, seen) {
1736
1747
  if (data && typeof data === "object") {
1737
- const name = data.constructor.name.toLowerCase() || "unknown object";
1738
- A(`#<${name}>`);
1739
- if (OPAQUE in data) {
1740
- A("# [OPAQUE]");
1741
- } else {
1742
- A("ul", () => {
1743
- onEach(data, (value, key) => {
1744
- A("li", () => {
1748
+ const name = data.constructor.name || "unknown object";
1749
+ if (seen.has(data)) {
1750
+ A(`#<${name}: circular reference>`);
1751
+ return;
1752
+ }
1753
+ seen.add(data);
1754
+ const customDump = data[CUSTOM_DUMP];
1755
+ if (customDump !== undefined) {
1756
+ if (typeof customDump === "function")
1757
+ customDump.call(data, seen);
1758
+ return;
1759
+ }
1760
+ A(`#<${name}>`, "ul", () => {
1761
+ onEach(data, (value, key) => {
1762
+ A("li", () => {
1763
+ if (!(data instanceof Array))
1745
1764
  A(`#${JSON.stringify(key)}: `);
1746
- dump(value);
1747
- });
1765
+ rawDump(value, seen);
1748
1766
  });
1749
1767
  });
1750
- }
1751
- } else if (data !== undefined) {
1768
+ });
1769
+ } else if (data === undefined) {
1770
+ A("#undefined");
1771
+ } else {
1752
1772
  A("#" + JSON.stringify(data));
1753
1773
  }
1754
- return data;
1755
1774
  }
1775
+ var CUSTOM_DUMP = Symbol("CUSTOM_DUMP");
1776
+ Date.prototype[CUSTOM_DUMP] = function() {
1777
+ A("#<Date> " + this.toISOString());
1778
+ };
1756
1779
  function internalError(code) {
1757
1780
  throw new Error(`Aberdeen internal error ${code}`);
1758
1781
  }
@@ -1810,6 +1833,7 @@ var aberdeen_default = Object.assign(A, {
1810
1833
  copy,
1811
1834
  count,
1812
1835
  cssVars,
1836
+ CUSTOM_DUMP,
1813
1837
  darkMode,
1814
1838
  derive,
1815
1839
  disableCreateDestroy,
@@ -1871,8 +1895,9 @@ export {
1871
1895
  NO_COPY,
1872
1896
  MAP_SIZE_SYMBOL,
1873
1897
  EMPTY,
1898
+ CUSTOM_DUMP,
1874
1899
  A
1875
1900
  };
1876
1901
 
1877
- //# debugId=B5E9F155214345E564756E2164756E21
1902
+ //# debugId=34A0CA77D4CA212064756E2164756E21
1878
1903
  //# sourceMappingURL=aberdeen.js.map