@e280/stz 0.0.0-5 → 0.0.0-6

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 (74) hide show
  1. package/package.json +8 -5
  2. package/s/clone/clone.test.ts +123 -123
  3. package/s/data/bytename/badge.test.ts +52 -0
  4. package/s/data/bytename/badge.ts +72 -0
  5. package/s/data/bytename/bytename.test.ts +49 -0
  6. package/s/data/{barname/barname.ts → bytename/bytename.ts} +20 -8
  7. package/s/data/bytename/index.ts +4 -0
  8. package/s/data/bytes.ts +10 -0
  9. package/s/debounce/debounce.test.ts +73 -73
  10. package/s/deep/deep.test.ts +8 -8
  11. package/s/deep/parts/equal.test.ts +123 -124
  12. package/s/index.ts +1 -1
  13. package/s/tests.test.ts +17 -0
  14. package/x/clone/clone.test.d.ts +15 -1
  15. package/x/clone/clone.test.js +106 -124
  16. package/x/clone/clone.test.js.map +1 -1
  17. package/x/data/bytename/badge.d.ts +25 -0
  18. package/x/data/bytename/badge.js +50 -0
  19. package/x/data/bytename/badge.js.map +1 -0
  20. package/x/data/bytename/badge.test.d.ts +23 -0
  21. package/x/data/bytename/badge.test.js +44 -0
  22. package/x/data/bytename/badge.test.js.map +1 -0
  23. package/x/data/bytename/bytename.d.ts +11 -0
  24. package/x/data/{barname/barname.js → bytename/bytename.js} +11 -9
  25. package/x/data/bytename/bytename.js.map +1 -0
  26. package/x/data/bytename/bytename.test.d.ts +17 -0
  27. package/x/data/bytename/bytename.test.js +41 -0
  28. package/x/data/bytename/bytename.test.js.map +1 -0
  29. package/x/data/bytename/index.d.ts +2 -0
  30. package/x/data/bytename/index.js +3 -0
  31. package/x/data/bytename/index.js.map +1 -0
  32. package/x/data/bytename/utils/prefixes.js.map +1 -0
  33. package/x/data/bytename/utils/suffixes.js.map +1 -0
  34. package/x/data/bytes.d.ts +1 -0
  35. package/x/data/bytes.js +9 -0
  36. package/x/data/bytes.js.map +1 -1
  37. package/x/debounce/debounce.test.d.ts +8 -1
  38. package/x/debounce/debounce.test.js +70 -74
  39. package/x/debounce/debounce.test.js.map +1 -1
  40. package/x/deep/deep.test.d.ts +21 -1
  41. package/x/deep/deep.test.js +5 -9
  42. package/x/deep/deep.test.js.map +1 -1
  43. package/x/deep/parts/equal.test.d.ts +19 -1
  44. package/x/deep/parts/equal.test.js +107 -125
  45. package/x/deep/parts/equal.test.js.map +1 -1
  46. package/x/index.d.ts +1 -1
  47. package/x/index.js +1 -1
  48. package/x/index.js.map +1 -1
  49. package/x/tests.test.js +14 -0
  50. package/x/tests.test.js.map +1 -0
  51. package/s/data/barname/badge.ts +0 -78
  52. package/s/data/barname/demo.ts +0 -49
  53. package/s/data/barname/index.ts +0 -4
  54. package/x/data/barname/badge.d.ts +0 -25
  55. package/x/data/barname/badge.js +0 -64
  56. package/x/data/barname/badge.js.map +0 -1
  57. package/x/data/barname/barname.d.ts +0 -7
  58. package/x/data/barname/barname.js.map +0 -1
  59. package/x/data/barname/demo.js +0 -45
  60. package/x/data/barname/demo.js.map +0 -1
  61. package/x/data/barname/index.d.ts +0 -2
  62. package/x/data/barname/index.js +0 -3
  63. package/x/data/barname/index.js.map +0 -1
  64. package/x/data/barname/utils/prefixes.js.map +0 -1
  65. package/x/data/barname/utils/suffixes.js.map +0 -1
  66. /package/{license → LICENSE} +0 -0
  67. /package/{readme.md → README.md} +0 -0
  68. /package/s/data/{barname → bytename}/utils/prefixes.ts +0 -0
  69. /package/s/data/{barname → bytename}/utils/suffixes.ts +0 -0
  70. /package/x/data/{barname → bytename}/utils/prefixes.d.ts +0 -0
  71. /package/x/data/{barname → bytename}/utils/prefixes.js +0 -0
  72. /package/x/data/{barname → bytename}/utils/suffixes.d.ts +0 -0
  73. /package/x/data/{barname → bytename}/utils/suffixes.js +0 -0
  74. /package/x/{data/barname/demo.d.ts → tests.test.d.ts} +0 -0
@@ -0,0 +1,50 @@
1
+ import { Base58 } from "../base58.js";
2
+ import { Bytename } from "./bytename.js";
3
+ /**
4
+ * Badge is a human-friendly presentation format for arbitrary binary data.
5
+ * - looks like "nodlyn.fasrep:39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"
6
+ * - the first lead bytes are shown in bytename format
7
+ * - the rest of the data is in base58
8
+ * - designed to be a nice way to present 256-bit passport thumbprints
9
+ * - can actually represent any number of bytes
10
+ * - "nodlyn.fasrep:39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"
11
+ */
12
+ export const Badge = {
13
+ defaults: {
14
+ leadBytes: 4,
15
+ leadSeparator: ".",
16
+ restSeparator: ":",
17
+ },
18
+ string(bytes, options = {}) {
19
+ const { leadBytes, leadSeparator, restSeparator } = { ...Badge.defaults, ...options };
20
+ const appetizer = Bytename.string(bytes.slice(0, leadBytes), {
21
+ wordSeparator: leadSeparator,
22
+ groupSeparator: leadSeparator,
23
+ });
24
+ return (bytes.length > leadBytes)
25
+ ? `${appetizer}${restSeparator}${Base58.string(bytes.slice(leadBytes))}`
26
+ : appetizer;
27
+ },
28
+ parse(badge) {
29
+ badge = badge.trim();
30
+ const parts = badge.split(/[^a-zA-Z0-9]+/m)
31
+ .filter(Boolean)
32
+ .map(s => s.trim());
33
+ if (parts.length < 2) {
34
+ const lead = parts.join(".");
35
+ const bytes = Bytename.bytes(lead);
36
+ return { lead, rest: "", bytes };
37
+ }
38
+ const rest = parts.pop();
39
+ const lead = parts.join(".");
40
+ const bytes = new Uint8Array([
41
+ ...Bytename.bytes(lead),
42
+ ...Base58.bytes(rest),
43
+ ]);
44
+ return { lead, rest, bytes };
45
+ },
46
+ bytes(badge) {
47
+ return Badge.parse(badge).bytes;
48
+ },
49
+ };
50
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../s/data/bytename/badge.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAA;AActC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,QAAQ,EAAiB;QACxB,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,GAAG;KACjB;IAEF,MAAM,CAAC,KAAiB,EAAE,UAAiC,EAAE;QAC5D,MAAM,EAAC,SAAS,EAAE,aAAa,EAAE,aAAa,EAAC,GAC5C,EAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAC,CAAA;QAElC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE;YAC5D,aAAa,EAAE,aAAa;YAC5B,cAAc,EAAE,aAAa;SAC7B,CAAC,CAAA;QAEF,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YAChC,CAAC,CAAC,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;YACxE,CAAC,CAAC,SAAS,CAAA;IACb,CAAC;IAED,KAAK,CAAC,KAAa;QAClB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC;aACzC,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEpB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,CAAA;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAG,CAAA;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;YAC5B,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACvB,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;SACrB,CAAC,CAAA;QACF,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,KAAa;QAClB,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAA;IAChC,CAAC;CACD,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { Science } from "@e280/science";
2
+ declare const _default: {
3
+ "bytes->string->bytes": Science.Test;
4
+ "zero bytes": Science.Test;
5
+ "one byte": Science.Test;
6
+ partially: {
7
+ normal: Science.Test;
8
+ nothing: Science.Test;
9
+ "no-rest": Science.Test;
10
+ "one-byte": Science.Test;
11
+ "three-byte": Science.Test;
12
+ "one-byte-lead": Science.Test;
13
+ };
14
+ tolerance: {
15
+ normal: Science.Test;
16
+ spaces: Science.Test;
17
+ dots: Science.Test;
18
+ "one-space": Science.Test;
19
+ "one-newline": Science.Test;
20
+ whitespace: Science.Test;
21
+ };
22
+ };
23
+ export default _default;
@@ -0,0 +1,44 @@
1
+ import { Hex } from "../hex.js";
2
+ import { Badge } from "./badge.js";
3
+ import { Bytes } from "../bytes.js";
4
+ import { Science, test, expect } from "@e280/science";
5
+ const sampleBadge = "nodlyn.fasrep:39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k";
6
+ const sampleHex = "88e8c3fad1028fcf6ce5ac491578850f4d833336feca03b608265501c3019d59";
7
+ const sampleBytes = Hex.bytes(sampleHex);
8
+ function good(bytes) {
9
+ expect(Bytes.eq(bytes, sampleBytes)).ok();
10
+ }
11
+ export default Science.suite({
12
+ "bytes->string->bytes": test(async () => {
13
+ const text = Badge.string(sampleBytes);
14
+ expect(text).is(sampleBadge);
15
+ good(Badge.bytes(text));
16
+ }),
17
+ "zero bytes": test(async () => {
18
+ const text = Badge.string(new Uint8Array([]));
19
+ expect(text).is("");
20
+ expect(Bytes.eq(Badge.bytes(text), new Uint8Array([]))).ok();
21
+ }),
22
+ "one byte": test(async () => {
23
+ const text = Badge.string(new Uint8Array([0x00]));
24
+ expect(text).is("doz");
25
+ expect(Bytes.eq(Badge.bytes(text), new Uint8Array([0x00]))).ok();
26
+ }),
27
+ "partially": Science.suite({
28
+ "normal": test(async () => expect(Badge.bytes("nodlyn.fasrep:39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k").length).ok()),
29
+ "nothing": test(async () => expect(Badge.bytes("").length).is(0)),
30
+ "no-rest": test(async () => expect(Badge.bytes("nodlyn.fasrep").length).ok()),
31
+ "one-byte": test(async () => expect(Badge.bytes("nod").length).is(1)),
32
+ "three-byte": test(async () => expect(Badge.bytes("nodlynfas").length).is(3)),
33
+ "one-byte-lead": test(async () => expect(Badge.bytes("nod:39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k").length).ok()),
34
+ }),
35
+ "tolerance": Science.suite({
36
+ "normal": test(async () => good(Badge.bytes("nodlyn.fasrep:39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"))),
37
+ "spaces": test(async () => good(Badge.bytes("nodlyn fasrep 39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"))),
38
+ "dots": test(async () => good(Badge.bytes("nodlyn.fasrep.39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"))),
39
+ "one-space": test(async () => good(Badge.bytes("nodlynfasrep 39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"))),
40
+ "one-newline": test(async () => good(Badge.bytes("nodlynfasrep\n39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k"))),
41
+ "whitespace": test(async () => good(Badge.bytes("\t\n nodlyn\n fasrep \n\n\t\n 39gfeGFAAnBzH5pkT7EdoETMUMAekG9h1iymk6k\n\t"))),
42
+ }),
43
+ });
44
+ //# sourceMappingURL=badge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.test.js","sourceRoot":"","sources":["../../../s/data/bytename/badge.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export type BytenameOptions = {
2
+ groupSize: number;
3
+ wordSeparator: string;
4
+ groupSeparator: string;
5
+ };
6
+ export declare const Bytename: {
7
+ defaults: BytenameOptions;
8
+ random(byteCount: number, options?: Partial<BytenameOptions>): string;
9
+ string(bytes: Uint8Array, options?: Partial<BytenameOptions>): string;
10
+ bytes(string: string): Uint8Array<ArrayBuffer>;
11
+ };
@@ -1,15 +1,17 @@
1
1
  import { Bytes } from "../bytes.js";
2
2
  import { prefixes } from "./utils/prefixes.js";
3
3
  import { suffixes } from "./utils/suffixes.js";
4
- const wordSeparator = "_";
5
- const groupSeparator = " ";
6
- const defaultWordsPerGroup = 4;
7
- export const Barname = {
8
- random(byteCount) {
9
- return this.string(Bytes.random(byteCount));
4
+ export const Bytename = {
5
+ defaults: {
6
+ groupSize: 4,
7
+ wordSeparator: ".",
8
+ groupSeparator: " ",
10
9
  },
11
- string(bytes, options) {
12
- const groupSize = options?.wordsPerGroup ?? defaultWordsPerGroup;
10
+ random(byteCount, options = {}) {
11
+ return this.string(Bytes.random(byteCount), options);
12
+ },
13
+ string(bytes, options = {}) {
14
+ const { groupSize = Bytename.defaults.groupSize, wordSeparator = Bytename.defaults.wordSeparator, groupSeparator = Bytename.defaults.groupSeparator, } = options;
13
15
  const words = [];
14
16
  let currentWord = [];
15
17
  bytes.forEach((byte, index) => {
@@ -46,4 +48,4 @@ export const Barname = {
46
48
  }));
47
49
  },
48
50
  };
49
- //# sourceMappingURL=barname.js.map
51
+ //# sourceMappingURL=bytename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytename.js","sourceRoot":"","sources":["../../../s/data/bytename/bytename.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Science } from "@e280/science";
2
+ declare const _default: {
3
+ "bytes->string->bytes": Science.Test;
4
+ "zero bytes": Science.Test;
5
+ "one byte": Science.Test;
6
+ groupings: Science.Test;
7
+ wordsep: {
8
+ underscore: Science.Test;
9
+ uppercase: Science.Test;
10
+ dots: Science.Test;
11
+ crushed: Science.Test;
12
+ space: Science.Test;
13
+ spaces: Science.Test;
14
+ whitespace: Science.Test;
15
+ };
16
+ };
17
+ export default _default;
@@ -0,0 +1,41 @@
1
+ import { Bytes } from "../bytes.js";
2
+ import { Bytename } from "./bytename.js";
3
+ import { Science, test, expect } from "@e280/science";
4
+ const deadbeef = new Uint8Array([0xDE, 0xAD, 0xBE, 0xEF]);
5
+ function good(bytes) {
6
+ expect(Bytes.eq(bytes, deadbeef)).ok();
7
+ }
8
+ export default Science.suite({
9
+ "bytes->string->bytes": test(async () => {
10
+ const text = Bytename.string(deadbeef);
11
+ expect(text).is("ribmug.hilmun");
12
+ good(Bytename.bytes(text));
13
+ }),
14
+ "zero bytes": test(async () => {
15
+ const text = Bytename.string(new Uint8Array([]));
16
+ expect(text).is("");
17
+ }),
18
+ "one byte": test(async () => {
19
+ const text = Bytename.string(new Uint8Array([0x00]));
20
+ expect(text).is("doz");
21
+ }),
22
+ "groupings": test(async () => {
23
+ const bytes = new Uint8Array([...deadbeef, ...deadbeef]);
24
+ const text = Bytename.string(bytes, {
25
+ groupSize: 2,
26
+ groupSeparator: " ",
27
+ wordSeparator: ".",
28
+ });
29
+ expect(text).is("ribmug.hilmun ribmug.hilmun");
30
+ }),
31
+ "wordsep": Science.suite({
32
+ "underscore": test(async () => good(Bytename.bytes("ribmug_hilmun"))),
33
+ "uppercase": test(async () => good(Bytename.bytes("RIBMUG_HILMUN"))),
34
+ "dots": test(async () => good(Bytename.bytes("ribmug.hilmun"))),
35
+ "crushed": test(async () => good(Bytename.bytes("ribmughilmun"))),
36
+ "space": test(async () => good(Bytename.bytes("ribmug hilmun"))),
37
+ "spaces": test(async () => good(Bytename.bytes("ribmug hilmun"))),
38
+ "whitespace": test(async () => good(Bytename.bytes("\n ribmug \n \t \n hilmun \n"))),
39
+ }),
40
+ });
41
+ //# sourceMappingURL=bytename.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytename.test.js","sourceRoot":"","sources":["../../../s/data/bytename/bytename.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./bytename.js";
2
+ export * from "./badge.js";
@@ -0,0 +1,3 @@
1
+ export * from "./bytename.js";
2
+ export * from "./badge.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../s/data/bytename/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefixes.js","sourceRoot":"","sources":["../../../../s/data/bytename/utils/prefixes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;CAC/F,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suffixes.js","sourceRoot":"","sources":["../../../../s/data/bytename/utils/suffixes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;IAC/F,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK;CAC/F,CAAA"}
package/x/data/bytes.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export declare const Bytes: {
2
+ eq(a: Uint8Array, b: Uint8Array): boolean;
2
3
  random(count: number): Uint8Array<ArrayBuffer>;
3
4
  };
package/x/data/bytes.js CHANGED
@@ -1,4 +1,13 @@
1
1
  export const Bytes = {
2
+ eq(a, b) {
3
+ if (a.length !== b.length)
4
+ return false;
5
+ for (let i = 0; i <= a.length; i++) {
6
+ if (a.at(i) !== b.at(i))
7
+ return false;
8
+ }
9
+ return true;
10
+ },
2
11
  random(count) {
3
12
  return crypto.getRandomValues(new Uint8Array(count));
4
13
  },
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../s/data/bytes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,MAAM,CAAC,KAAa;QACnB,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,CAAC;CACD,CAAA"}
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../s/data/bytes.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,EAAE,CAAC,CAAa,EAAE,CAAa;QAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YACxB,OAAO,KAAK,CAAA;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,MAAM,CAAC,KAAa;QACnB,OAAO,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,CAAC;CACD,CAAA"}
@@ -1 +1,8 @@
1
- export {};
1
+ declare const _default: {
2
+ "reduces many calls into one"(): Promise<void>;
3
+ "timer gets reset on each call"(): Promise<void>;
4
+ "provides a promise that resolves when done"(): Promise<void>;
5
+ "can wait multiple rounds"(): Promise<void>;
6
+ "errors are passed into promise chain"(): Promise<void>;
7
+ };
8
+ export default _default;
@@ -1,75 +1,71 @@
1
- export {};
2
- //
3
- // import {nap} from "../nap.js"
4
- // import {Suite, expect} from "cynic"
5
- // import {debounce as debounce} from "./debounce.js"
6
- //
7
- // export default <Suite>{
8
- // async "reduces many calls into one"() {
9
- // let count = 0
10
- // const increment = debounce(100, () => {
11
- // count += 1
12
- // })
13
- // increment()
14
- // increment()
15
- // increment()
16
- // await nap(200)
17
- // expect(count).equals(1)
18
- // },
19
- // async "timer gets reset on each call"() {
20
- // let count = 0
21
- // const increment = debounce(100, () => {
22
- // count += 1
23
- // })
24
- // increment()
25
- // await nap(50)
26
- // increment()
27
- // await nap(50)
28
- // increment()
29
- // await nap(50)
30
- // increment()
31
- // await nap(50)
32
- // increment()
33
- // expect(count).equals(0)
34
- // await nap(101)
35
- // expect(count).equals(1)
36
- // },
37
- // async "provides a promise that resolves when done"() {
38
- // let count = 0
39
- // const increment = debounce(100, () => {
40
- // count += 1
41
- // })
42
- // let done = false
43
- // increment()
44
- // .then(() => done = true)
45
- // await nap(50)
46
- // increment()
47
- // await nap(50)
48
- // increment()
49
- // await nap(50)
50
- // increment()
51
- // await nap(50)
52
- // increment()
53
- // expect(done).equals(false)
54
- // await nap(201)
55
- // expect(done).equals(true)
56
- // },
57
- // async "can wait multiple rounds"() {
58
- // let count = 0
59
- // const increment = debounce(100, () => {
60
- // count += 1
61
- // })
62
- // await increment()
63
- // expect(count).equals(1)
64
- // await increment()
65
- // expect(count).equals(2)
66
- // },
67
- // async "errors are passed into promise chain"() {
68
- // const err = debounce(1, () => {
69
- // throw new Error()
70
- // })
71
- // await expect(async() => err()).throws()
72
- // },
73
- // }
74
- //
1
+ import { nap } from "../nap.js";
2
+ import { Science, expect } from "@e280/science";
3
+ import { debounce as debounce } from "./debounce.js";
4
+ export default Science.suite({
5
+ async "reduces many calls into one"() {
6
+ let count = 0;
7
+ const increment = debounce(100, () => {
8
+ count += 1;
9
+ });
10
+ increment();
11
+ increment();
12
+ increment();
13
+ await nap(200);
14
+ expect(count).is(1);
15
+ },
16
+ async "timer gets reset on each call"() {
17
+ let count = 0;
18
+ const increment = debounce(100, () => {
19
+ count += 1;
20
+ });
21
+ increment();
22
+ await nap(50);
23
+ increment();
24
+ await nap(50);
25
+ increment();
26
+ await nap(50);
27
+ increment();
28
+ await nap(50);
29
+ increment();
30
+ expect(count).is(0);
31
+ await nap(101);
32
+ expect(count).is(1);
33
+ },
34
+ async "provides a promise that resolves when done"() {
35
+ let count = 0;
36
+ const increment = debounce(100, () => {
37
+ count += 1;
38
+ });
39
+ let done = false;
40
+ increment()
41
+ .then(() => done = true);
42
+ await nap(50);
43
+ increment();
44
+ await nap(50);
45
+ increment();
46
+ await nap(50);
47
+ increment();
48
+ await nap(50);
49
+ increment();
50
+ expect(done).is(false);
51
+ await nap(201);
52
+ expect(done).is(true);
53
+ },
54
+ async "can wait multiple rounds"() {
55
+ let count = 0;
56
+ const increment = debounce(100, () => {
57
+ count += 1;
58
+ });
59
+ await increment();
60
+ expect(count).is(1);
61
+ await increment();
62
+ expect(count).is(2);
63
+ },
64
+ async "errors are passed into promise chain"() {
65
+ const err = debounce(1, () => {
66
+ throw new Error();
67
+ });
68
+ await expect(async () => err()).throwsAsync();
69
+ },
70
+ });
75
71
  //# sourceMappingURL=debounce.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"debounce.test.js","sourceRoot":"","sources":["../../s/debounce/debounce.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,gCAAgC;AAChC,sCAAsC;AACtC,qDAAqD;AACrD,EAAE;AACF,0BAA0B;AAC1B,2CAA2C;AAC3C,kBAAkB;AAClB,4CAA4C;AAC5C,gBAAgB;AAChB,OAAO;AACP,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,mBAAmB;AACnB,4BAA4B;AAC5B,MAAM;AACN,6CAA6C;AAC7C,kBAAkB;AAClB,4CAA4C;AAC5C,gBAAgB;AAChB,OAAO;AACP,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,4BAA4B;AAC5B,mBAAmB;AACnB,4BAA4B;AAC5B,MAAM;AACN,0DAA0D;AAC1D,kBAAkB;AAClB,4CAA4C;AAC5C,gBAAgB;AAChB,OAAO;AACP,qBAAqB;AACrB,gBAAgB;AAChB,8BAA8B;AAC9B,kBAAkB;AAClB,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,kBAAkB;AAClB,gBAAgB;AAChB,+BAA+B;AAC/B,mBAAmB;AACnB,8BAA8B;AAC9B,MAAM;AACN,wCAAwC;AACxC,kBAAkB;AAClB,4CAA4C;AAC5C,gBAAgB;AAChB,OAAO;AACP,sBAAsB;AACtB,4BAA4B;AAC5B,sBAAsB;AACtB,4BAA4B;AAC5B,MAAM;AACN,oDAAoD;AACpD,oCAAoC;AACpC,uBAAuB;AACvB,OAAO;AACP,4CAA4C;AAC5C,MAAM;AACN,IAAI;AACJ,EAAE"}
1
+ {"version":3,"file":"debounce.test.js","sourceRoot":"","sources":["../../s/debounce/debounce.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1,21 @@
1
- export {};
1
+ declare const _default: {
2
+ deepEqual: {
3
+ "compare primitive types"(): Promise<void>;
4
+ "compare arrays"(): Promise<void>;
5
+ "compare plain objects"(): Promise<void>;
6
+ "compare nested objects"(): Promise<void>;
7
+ "compare array of objects"(): Promise<void>;
8
+ "compare null and undefined"(): Promise<void>;
9
+ "compare with nested arrays"(): Promise<void>;
10
+ "circularity is forbidden"(): Promise<void>;
11
+ "duplicate references are allowed"(): Promise<void>;
12
+ "maps and sets": {
13
+ "compare maps"(): Promise<void>;
14
+ "compare sets"(): Promise<void>;
15
+ "compare nested maps and sets"(): Promise<void>;
16
+ "compare complex structures"(): Promise<void>;
17
+ "compare edge cases"(): Promise<void>;
18
+ };
19
+ };
20
+ };
21
+ export default _default;
@@ -1,10 +1,6 @@
1
- export {};
2
- //
3
- // import {Suite} from "cynic"
4
- // import deepEqual from "./parts/equal.test.js"
5
- //
6
- // export default <Suite>{
7
- // deepEqual,
8
- // }
9
- //
1
+ import { Science } from "@e280/science";
2
+ import deepEqual from "./parts/equal.test.js";
3
+ export default Science.suite({
4
+ deepEqual,
5
+ });
10
6
  //# sourceMappingURL=deep.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deep.test.js","sourceRoot":"","sources":["../../s/deep/deep.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,8BAA8B;AAC9B,gDAAgD;AAChD,EAAE;AACF,0BAA0B;AAC1B,cAAc;AACd,IAAI;AACJ,EAAE"}
1
+ {"version":3,"file":"deep.test.js","sourceRoot":"","sources":["../../s/deep/deep.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,SAAS,MAAM,uBAAuB,CAAA;AAE7C,eAAe,OAAO,CAAC,KAAK,CAAC;IAC5B,SAAS;CACT,CAAC,CAAA"}
@@ -1 +1,19 @@
1
- export {};
1
+ declare const _default: {
2
+ "compare primitive types"(): Promise<void>;
3
+ "compare arrays"(): Promise<void>;
4
+ "compare plain objects"(): Promise<void>;
5
+ "compare nested objects"(): Promise<void>;
6
+ "compare array of objects"(): Promise<void>;
7
+ "compare null and undefined"(): Promise<void>;
8
+ "compare with nested arrays"(): Promise<void>;
9
+ "circularity is forbidden"(): Promise<void>;
10
+ "duplicate references are allowed"(): Promise<void>;
11
+ "maps and sets": {
12
+ "compare maps"(): Promise<void>;
13
+ "compare sets"(): Promise<void>;
14
+ "compare nested maps and sets"(): Promise<void>;
15
+ "compare complex structures"(): Promise<void>;
16
+ "compare edge cases"(): Promise<void>;
17
+ };
18
+ };
19
+ export default _default;