@matter/general 0.13.1-alpha.0-20250508-047aa0277 → 0.13.1-alpha.0-20250511-74ef153aa

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.
@@ -144,16 +144,16 @@ export declare const Transaction: {
144
144
  */
145
145
  act<T>(via: string, actor: (transaction: Transaction) => MaybePromise<T>): MaybePromise<T>;
146
146
  ReadOnly: {
147
- "__#15412@#participants": Set<Participant>;
148
- "__#15412@#roles": Map<{}, Participant>;
149
- "__#15412@#resources": Set<Resource>;
150
- "__#15412@#status": Status;
151
- "__#15412@#waitingOn"?: Iterable<Transaction>;
152
- "__#15412@#via": string;
153
- "__#15412@#shared"?: import("../index.js").Observable<[]>;
154
- "__#15412@#closed"?: import("../index.js").Observable<[]>;
155
- "__#15412@#isAsync": boolean;
156
- "__#15412@#reportingLocks": boolean;
147
+ "__#15448@#participants": Set<Participant>;
148
+ "__#15448@#roles": Map<{}, Participant>;
149
+ "__#15448@#resources": Set<Resource>;
150
+ "__#15448@#status": Status;
151
+ "__#15448@#waitingOn"?: Iterable<Transaction>;
152
+ "__#15448@#via": string;
153
+ "__#15448@#shared"?: import("../index.js").Observable<[]>;
154
+ "__#15448@#closed"?: import("../index.js").Observable<[]>;
155
+ "__#15448@#isAsync": boolean;
156
+ "__#15448@#reportingLocks": boolean;
157
157
  close(): void;
158
158
  readonly via: string;
159
159
  readonly status: Status;
@@ -175,15 +175,15 @@ export declare const Transaction: {
175
175
  waitFor(others: Set<Transaction>): Promise<void>;
176
176
  toString(): string;
177
177
  treatAsSlow(): void;
178
- "__#15412@#finalize"(status: Status, why: string, finalizer: () => MaybePromise): Promise<void> | undefined;
179
- "__#15412@#executePreCommit"(): MaybePromise<void>;
180
- "__#15412@#executeCommit"(): MaybePromise;
181
- "__#15412@#executeCommit1"(): MaybePromise;
182
- "__#15412@#executeCommit2"(): Promise<void> | undefined;
183
- "__#15412@#executePostCommit"(participants: Participant[]): MaybePromise;
184
- "__#15412@#executeRollback"(): Promise<void> | undefined;
185
- "__#15412@#locksChanged"(resources: Set<Resource>, how?: string): void;
186
- "__#15412@#assertAvailable"(): void;
178
+ "__#15448@#finalize"(status: Status, why: string, finalizer: () => MaybePromise): Promise<void> | undefined;
179
+ "__#15448@#executePreCommit"(): MaybePromise<void>;
180
+ "__#15448@#executeCommit"(): MaybePromise;
181
+ "__#15448@#executeCommit1"(): MaybePromise;
182
+ "__#15448@#executeCommit2"(): Promise<void> | undefined;
183
+ "__#15448@#executePostCommit"(participants: Participant[]): MaybePromise;
184
+ "__#15448@#executeRollback"(): Promise<void> | undefined;
185
+ "__#15448@#locksChanged"(resources: Set<Resource>, how?: string): void;
186
+ "__#15448@#assertAvailable"(): void;
187
187
  };
188
188
  Status: typeof Status;
189
189
  Resource: typeof Resource;
@@ -8,7 +8,30 @@ export { camelize, describeList, serialize } from "./String.js";
8
8
  * Performs word wrap. Input is assumed to be a series of paragraphs separated by a newline. Output is an array of
9
9
  * formatted lines.
10
10
  *
11
- * Contains specialized support for lists, ESDoc directives ans ANSI escape codes.
11
+ * Contains specialized support for lists, ESDoc directives and ANSI escape codes.
12
12
  */
13
13
  export declare function FormattedText(text: string, width?: number): string[];
14
+ /**
15
+ * Types of things we consider "blocks". Most blocks are lists but we also support markdown-style quotes prefixed with
16
+ * ">".
17
+ */
18
+ export declare enum BlockKind {
19
+ Simple = "simple",
20
+ Bullet1 = "\u2022",
21
+ Bullet2 = "\u25E6",
22
+ Bullet3 = "\u25AA",
23
+ Bullet4 = "\u25CB",
24
+ Bullet5 = "\u25CF",
25
+ Bullet6 = "\u2023",
26
+ Bullet7 = "\u2043",
27
+ Bullet8 = "\u25D8",
28
+ Quote = ">",
29
+ Number = "number",
30
+ LowerAlpha = "alpha",
31
+ UpperAlpha = "ALPHA",
32
+ LowerRoman = "roman",
33
+ UpperRoman = "ROMAN"
34
+ }
35
+ export declare const Bullets: BlockKind[];
36
+ export declare function looksLikeListItem(text: string): boolean;
14
37
  //# sourceMappingURL=FormattedText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormattedText.d.ts","sourceRoot":"","sources":["../../../src/util/FormattedText.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,YAGtD"}
1
+ {"version":3,"file":"FormattedText.d.ts","sourceRoot":"","sources":["../../../src/util/FormattedText.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAM,YAGtD;AAED;;;GAGG;AACH,oBAAY,SAAS;IACjB,MAAM,WAAW;IACjB,OAAO,WAAM;IACb,OAAO,WAAM;IACb,OAAO,WAAM;IACb,OAAO,WAAM;IACb,OAAO,WAAM;IACb,OAAO,WAAM;IACb,OAAO,WAAM;IACb,OAAO,WAAM;IACb,KAAK,MAAM;IACX,MAAM,WAAW;IACjB,UAAU,UAAU;IACpB,UAAU,UAAU;IACpB,UAAU,UAAU;IACpB,UAAU,UAAU;CACvB;AAED,eAAO,MAAM,OAAO,aAEU,CAAC;AAK/B,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,WAE7C"}
@@ -3,108 +3,98 @@
3
3
  * Copyright 2022-2025 Matter.js Authors
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- const LIST_INDENT = 2;
6
+ const INDENT = " ";
7
7
  import { camelize, describeList, serialize } from "./String.js";
8
8
  function FormattedText(text, width = 120) {
9
9
  const structure = detectStructure(text);
10
- return formatStructure(structure, width);
10
+ return formatBlock(structure, width);
11
11
  }
12
- var ListType = /* @__PURE__ */ ((ListType2) => {
13
- ListType2["Bullet1"] = "\u2022";
14
- ListType2["Bullet2"] = "\u25E6";
15
- ListType2["Bullet3"] = "\u25AA";
16
- ListType2["Bullet4"] = "\u25CB";
17
- ListType2["Bullet5"] = "\u25CF";
18
- ListType2["Bullet6"] = "\u2023";
19
- ListType2["Bullet7"] = "\u2043";
20
- ListType2["Bullet8"] = "\u25D8";
21
- ListType2["Number"] = "number";
22
- ListType2["LowerAlpha"] = "alpha";
23
- ListType2["UpperAlpha"] = "ALPHA";
24
- ListType2["LowerRoman"] = "roman";
25
- ListType2["UpperRoman"] = "ROMAN";
26
- return ListType2;
27
- })(ListType || {});
28
- function detectList(text, listState) {
29
- function enterList(listType) {
30
- const existing = listState.indexOf(listType);
31
- if (existing == -1) {
32
- listState.push(listType);
33
- } else {
34
- listState.length = existing + 1;
35
- }
12
+ var BlockKind = /* @__PURE__ */ ((BlockKind2) => {
13
+ BlockKind2["Simple"] = "simple";
14
+ BlockKind2["Bullet1"] = "\u2022";
15
+ BlockKind2["Bullet2"] = "\u25E6";
16
+ BlockKind2["Bullet3"] = "\u25AA";
17
+ BlockKind2["Bullet4"] = "\u25CB";
18
+ BlockKind2["Bullet5"] = "\u25CF";
19
+ BlockKind2["Bullet6"] = "\u2023";
20
+ BlockKind2["Bullet7"] = "\u2043";
21
+ BlockKind2["Bullet8"] = "\u25D8";
22
+ BlockKind2["Quote"] = ">";
23
+ BlockKind2["Number"] = "number";
24
+ BlockKind2["LowerAlpha"] = "alpha";
25
+ BlockKind2["UpperAlpha"] = "ALPHA";
26
+ BlockKind2["LowerRoman"] = "roman";
27
+ BlockKind2["UpperRoman"] = "ROMAN";
28
+ return BlockKind2;
29
+ })(BlockKind || {});
30
+ const Bullets = Object.entries(BlockKind).filter(([key]) => key.startsWith("Bullet")).map(([, value]) => value);
31
+ const enumTest = "(?:\\d+|[ivx]+|[a-z])\\.";
32
+ const listItemTest = new RegExp(`^(?:[${Bullets.join("")}]|${enumTest})\\s`, "i");
33
+ function looksLikeListItem(text) {
34
+ return !!listItemTest.exec(text);
35
+ }
36
+ const Empty = {
37
+ kind: "simple" /* Simple */,
38
+ indentWidth: 0,
39
+ entries: []
40
+ };
41
+ function detectBlock(text, breadcrumb) {
42
+ const match = text.match(/^\s*(\S+)/);
43
+ if (!match) {
44
+ return;
36
45
  }
37
- for (const value of Object.values(ListType)) {
38
- if (text[0] === value && text[1] === " ") {
39
- enterList(text[0]);
46
+ const [, marker] = match;
47
+ if (Bullets.includes(marker) || marker === ">" /* Quote */) {
48
+ enterBlock(marker);
49
+ return;
50
+ }
51
+ if (detectEnumeration(/^\d+\.$/, "1", "number" /* Number */)) return;
52
+ if (detectEnumeration(/^[ivx]+\.$/, "i", "roman" /* LowerRoman */)) return;
53
+ if (detectEnumeration(/^[IVX]+\.$/, "I", "ROMAN" /* UpperRoman */)) return;
54
+ if (detectEnumeration(/^[a-z]+\.$/, "a", "alpha" /* LowerAlpha */)) return;
55
+ if (detectEnumeration(/^[A-Z]+\.$/, "A", "ALPHA" /* UpperAlpha */)) return;
56
+ breadcrumb.length = 1;
57
+ function enterBlock(kind) {
58
+ const level = breadcrumb.findIndex((entry) => entry.kind === kind);
59
+ if (level !== -1) {
60
+ breadcrumb.length = level + 1;
40
61
  return;
41
62
  }
63
+ const block = {
64
+ kind,
65
+ indentWidth: (breadcrumb[breadcrumb.length - 1]?.indentWidth ?? 0) + kind === ">" /* Quote */ ? 0 : 2,
66
+ entries: []
67
+ };
68
+ breadcrumb[breadcrumb.length - 1].entries.push(block);
69
+ breadcrumb.push(block);
42
70
  }
43
- function detectEnumeration(test, listType, first) {
44
- if (!text.match(test)) {
71
+ function detectEnumeration(test, startsWith, kind) {
72
+ if (!marker.match(test)) {
45
73
  return false;
46
74
  }
47
- if (listState.indexOf(listType) != -1 || text.startsWith(`${first}.`)) {
48
- enterList(listType);
49
- return true;
75
+ if (!breadcrumb.find((block) => block.kind === kind)) {
76
+ if (marker !== `${startsWith}.`) {
77
+ return false;
78
+ }
50
79
  }
51
- return false;
80
+ enterBlock(kind);
81
+ return true;
52
82
  }
53
- if (detectEnumeration(/^\d+\./, "number" /* Number */, "1")) return;
54
- if (detectEnumeration(/^[ivx]+\./, "roman" /* LowerRoman */, "i")) return;
55
- if (detectEnumeration(/^[IVX]+\./, "ROMAN" /* UpperRoman */, "I")) return;
56
- if (detectEnumeration(/^[a-z]+\./, "alpha" /* LowerAlpha */, "a")) return;
57
- if (detectEnumeration(/^[A-Z]+\./, "ALPHA" /* UpperAlpha */, "A")) return;
58
- listState.length = 0;
59
- }
60
- function extractPrefix(text) {
61
- const match = text.match(/^(\S+)\s+($|\S.*$)/);
62
- if (match) {
63
- return { prefix: match[1], text: match[2] };
64
- }
65
- return { prefix: text, text: "" };
66
83
  }
67
84
  function detectStructure(text) {
68
- if (text == "") {
69
- return { prefixWidth: 0, entries: [] };
85
+ const lines = text.split(/\n+/).map((line) => line.trimEnd());
86
+ if (!lines.some((p) => p)) {
87
+ return Empty;
70
88
  }
71
- const paragraphs = text.split(/\n+/).map((paragraph) => paragraph.trim().replace(/\s+/g, " "));
72
- if (!paragraphs.length) {
73
- return { prefixWidth: 0, entries: [] };
89
+ const breadcrumb = [{ ...Empty, entries: [] }];
90
+ for (const line of lines) {
91
+ detectBlock(line, breadcrumb);
92
+ breadcrumb[breadcrumb.length - 1].entries.push(line.trim().replace(/\s+/g, " "));
74
93
  }
75
- const listState = Array();
76
- let index = 0;
77
- function processLevel() {
78
- const level = listState.length;
79
- const structure = {
80
- prefixWidth: 0,
81
- entries: []
82
- };
83
- while (index < paragraphs.length) {
84
- detectList(paragraphs[index], listState);
85
- if (listState.length < level) {
86
- break;
87
- }
88
- if (listState.length > level) {
89
- structure.entries.push(processLevel());
90
- if (listState.length < level || index >= paragraphs.length) {
91
- break;
92
- }
93
- }
94
- structure.entries.push(paragraphs[index]);
95
- if (level) {
96
- const { prefix } = extractPrefix(paragraphs[index]);
97
- if (prefix.length > structure.prefixWidth) {
98
- structure.prefixWidth = prefix.length;
99
- }
100
- }
101
- index++;
102
- }
103
- return structure;
104
- }
105
- return processLevel();
94
+ return breadcrumb[0];
106
95
  }
107
- function wrapParagraph(input, into, wrapWidth, padding, prefixWidth) {
96
+ function wrapParagraph(input, into, wrapWidth, initialPrefix, wrapPrefix) {
97
+ const prefixWidth = visibleWidthOf(initialPrefix);
108
98
  const segments = input.split(/\s+/);
109
99
  if (!segments) {
110
100
  return;
@@ -120,35 +110,23 @@ function wrapParagraph(input, into, wrapWidth, padding, prefixWidth) {
120
110
  }
121
111
  }
122
112
  }
123
- let wrapPrefix;
124
- if (prefixWidth) {
125
- wrapPrefix = "".padStart(prefixWidth + 1, " ");
126
- } else {
127
- wrapPrefix = "";
128
- }
129
- const line = Array();
130
- let length = 0;
113
+ const line = [initialPrefix];
114
+ let width = prefixWidth;
131
115
  let pushedOne = false;
132
- let needWrapPrefix = false;
133
116
  for (const s of segments) {
134
- const segmentLength = visibleLengthOf(s);
135
- if (length && length + segmentLength > wrapWidth) {
117
+ const segmentWidth = visibleWidthOf(s);
118
+ if (width && width + segmentWidth > wrapWidth) {
136
119
  addLine();
137
- line.length = length = 0;
138
- needWrapPrefix = true;
139
- }
140
- if (!line.length && padding) {
141
- line.push("".padStart(padding, " "));
142
- length += padding;
120
+ line.length = 0;
121
+ width = prefixWidth;
143
122
  }
144
- if (needWrapPrefix) {
145
- needWrapPrefix = false;
123
+ if (!line.length) {
146
124
  line.push(wrapPrefix);
147
- length += wrapPrefix.length;
125
+ width = prefixWidth;
148
126
  }
149
127
  line.push(s);
150
128
  line.push(" ");
151
- length += segmentLength + 1;
129
+ width += segmentWidth + 1;
152
130
  }
153
131
  line.length = line.length - 1;
154
132
  if (line.length) {
@@ -164,21 +142,45 @@ function wrapParagraph(input, into, wrapWidth, padding, prefixWidth) {
164
142
  into.push(line.join(""));
165
143
  }
166
144
  }
167
- function formatStructure(structure, width) {
145
+ function separatePrefixFromContent(text) {
146
+ const match = text.match(/^(\S+\s)\s*(\S.*$)/);
147
+ if (match) {
148
+ return { prefix: match[1], text: match[2] };
149
+ }
150
+ return { prefix: "", text };
151
+ }
152
+ function formatBlock(block, width) {
168
153
  const lines = Array();
169
- function formatLevel(structure2, padding) {
170
- for (const entry of structure2.entries) {
154
+ function formatLevel(block2, parentPrefix) {
155
+ for (const entry of block2.entries) {
171
156
  if (typeof entry == "string") {
172
- wrapParagraph(entry, lines, width, padding, structure2.prefixWidth);
157
+ let prefix, text;
158
+ if (block2.kind === "simple" /* Simple */) {
159
+ prefix = "";
160
+ text = entry;
161
+ } else {
162
+ ({ prefix, text } = separatePrefixFromContent(entry));
163
+ }
164
+ wrapParagraph(
165
+ text,
166
+ lines,
167
+ width,
168
+ parentPrefix + prefix,
169
+ parentPrefix + " ".repeat(visibleWidthOf(prefix))
170
+ );
173
171
  } else {
174
- formatLevel(entry, padding + LIST_INDENT);
172
+ let childPrefix = parentPrefix;
173
+ if (entry.kind !== ">" /* Quote */ || parentPrefix !== "") {
174
+ childPrefix += INDENT;
175
+ }
176
+ formatLevel(entry, childPrefix);
175
177
  }
176
178
  }
177
179
  }
178
- formatLevel(structure, 0);
180
+ formatLevel(block, "");
179
181
  return lines;
180
182
  }
181
- function visibleLengthOf(text) {
183
+ function visibleWidthOf(text) {
182
184
  let length = 0;
183
185
  for (let i = 0; i < text.length; ) {
184
186
  switch (text[i]) {
@@ -215,9 +217,12 @@ function visibleLengthOf(text) {
215
217
  return length;
216
218
  }
217
219
  export {
220
+ BlockKind,
221
+ Bullets,
218
222
  FormattedText,
219
223
  camelize,
220
224
  describeList,
225
+ looksLikeListItem,
221
226
  serialize
222
227
  };
223
228
  //# sourceMappingURL=FormattedText.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/FormattedText.ts"],
4
- "mappings": "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",
5
- "names": ["ListType", "structure"]
4
+ "mappings": "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",
5
+ "names": ["BlockKind", "block"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matter/general",
3
- "version": "0.13.1-alpha.0-20250508-047aa0277",
3
+ "version": "0.13.1-alpha.0-20250511-74ef153aa",
4
4
  "description": "Non-Matter support for Matter.js",
5
5
  "keywords": [
6
6
  "iot",
@@ -36,7 +36,7 @@
36
36
  "@noble/curves": "^1.8.2"
37
37
  },
38
38
  "devDependencies": {
39
- "@matter/testing": "0.13.1-alpha.0-20250508-047aa0277"
39
+ "@matter/testing": "0.13.1-alpha.0-20250511-74ef153aa"
40
40
  },
41
41
  "files": [
42
42
  "dist/**/*",
@@ -498,6 +498,9 @@ function renderValue(value: unknown, formatter: Formatter, squash: boolean): str
498
498
  }
499
499
  return formatter.text(serialize(value) ?? "undefined");
500
500
  }
501
+ if (typeof value === "function") {
502
+ return renderValue(value(), formatter, squash);
503
+ }
501
504
 
502
505
  const text = typeof value === "string" || value instanceof String ? value : value.toString().trim();
503
506
  if (!text.includes("\n")) {