pm-todos 2026.6.1 → 2026.6.2
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.
- package/CHANGELOG.md +7 -1
- package/README.md +46 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +452 -152
- package/dist/index.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2026.6.
|
|
3
|
+
## 2026.6.2 - 2026-06-02
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Enhance markdown TODO parser + native importer/exporter pipeline ([pm-todos-2e52](https://github.com/unbraind/pm-todos/blob/main/.agents/pm/features/pm-todos-2e52.toon))
|
|
8
|
+
|
|
9
|
+
## 2026.06.01 - 2026-06-01
|
|
4
10
|
|
|
5
11
|
### Fixed
|
|
6
12
|
|
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@ Markdown TODO round-trip for [pm-cli](https://github.com/unbraind/pm-cli).
|
|
|
4
4
|
|
|
5
5
|
Import markdown checkboxes (`- [ ]` and `- [x]`) as pm items and export pm items back to markdown TODO lists.
|
|
6
6
|
|
|
7
|
+
The parser understands **nested/indented sub-tasks**, **section headers** (`## …` mapped to tags), **priority markers** (`(p1)` and `!`/`!!`/`!!!`), and can import **multiple files at once** via a `--glob` pattern.
|
|
8
|
+
|
|
7
9
|
---
|
|
8
10
|
|
|
9
11
|
## Installation
|
|
@@ -39,6 +41,9 @@ Parse a markdown file for `- [ ]` and `- [x]` checkboxes and create pm items.
|
|
|
39
41
|
pm todos import TODO.md
|
|
40
42
|
pm todos import notes.md --dry-run
|
|
41
43
|
pm todos import backlog.md --type Task --priority 2
|
|
44
|
+
pm todos import --glob 'docs/**/*.md'
|
|
45
|
+
pm todos import TODO.md --section Backlog
|
|
46
|
+
pm todos import TODO.md --closed-as canceled
|
|
42
47
|
```
|
|
43
48
|
|
|
44
49
|
**Flags**
|
|
@@ -47,8 +52,19 @@ pm todos import backlog.md --type Task --priority 2
|
|
|
47
52
|
|---|---|---|
|
|
48
53
|
| `--dry-run` | boolean | Preview without writing |
|
|
49
54
|
| `--type <type>` | string | Item type (default: Task) |
|
|
50
|
-
| `--priority <n>` | number | Priority (0–4) |
|
|
51
|
-
| `--tags <tags>` | string | Comma-separated tags |
|
|
55
|
+
| `--priority <n>` | number | Priority (0–4); overrides markers inferred from the text |
|
|
56
|
+
| `--tags <tags>` | string | Comma-separated tags applied to every item |
|
|
57
|
+
| `--glob <pattern>` | string | Import every markdown file matching the glob (e.g. `docs/**/*.md`) instead of a single positional file |
|
|
58
|
+
| `--section <name>` | string | Import only items found under this `##` section heading |
|
|
59
|
+
| `--closed-as <status>` | string | Status assigned to checked (`- [x]`) items (default: `closed`) |
|
|
60
|
+
| `--no-section-tags` | boolean | Do not derive tags from section headings |
|
|
61
|
+
|
|
62
|
+
**Parsing rules**
|
|
63
|
+
|
|
64
|
+
- **Bullets**: `-`, `*` and `+` checkbox bullets are all recognised.
|
|
65
|
+
- **Nested sub-tasks**: indentation is preserved (sub-items are imported as their own items; indent is shown in `--dry-run`).
|
|
66
|
+
- **Section headers**: the nearest preceding `## Heading` is slugged (e.g. `## In Progress` → `in-progress`) and added as a tag, unless `--no-section-tags` is given.
|
|
67
|
+
- **Priority markers**: `(p0)`…`(p4)` set an explicit priority; trailing/leading `!`, `!!`, `!!!` map to priority `2`, `1`, `0`. Markers are stripped from the item title. An explicit `--priority` flag always wins.
|
|
52
68
|
|
|
53
69
|
### `pm todos export`
|
|
54
70
|
|
|
@@ -71,7 +87,34 @@ pm todos export --type Task
|
|
|
71
87
|
|
|
72
88
|
---
|
|
73
89
|
|
|
74
|
-
##
|
|
90
|
+
## Native import/export pipeline
|
|
91
|
+
|
|
92
|
+
pm-todos registers a first-class `todos` importer and exporter, so markdown is a
|
|
93
|
+
native pm import/export format. These power the `pm todos import` / `pm todos
|
|
94
|
+
export` routes above and can also be driven programmatically:
|
|
95
|
+
|
|
96
|
+
```jsonc
|
|
97
|
+
{
|
|
98
|
+
"importers": [
|
|
99
|
+
{
|
|
100
|
+
"name": "todos",
|
|
101
|
+
"config": {
|
|
102
|
+
"glob": "docs/**/*.md", // or "file": "./TODO.md"
|
|
103
|
+
"section": "Backlog", // optional
|
|
104
|
+
"closed-as": "canceled", // optional
|
|
105
|
+
"type": "Task" // optional
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
The `todos` exporter accepts `output`, `status` and `type` options and emits the
|
|
113
|
+
same grouped (`## Open` / `## Done`) markdown produced by `pm todos export`.
|
|
114
|
+
|
|
115
|
+
### Legacy importer: `todos-import`
|
|
116
|
+
|
|
117
|
+
The original `todos-import` importer is retained for backward compatibility:
|
|
75
118
|
|
|
76
119
|
```jsonc
|
|
77
120
|
{
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;kBAmcgB,GAAG;;AAJnB,wBA2QG"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// pm-todos — Markdown TODO round-trip for pm-cli
|
|
2
|
-
import { readFileSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { resolve } from "node:path";
|
|
2
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from "node:fs";
|
|
3
|
+
import { resolve, join, relative, sep } from "node:path";
|
|
4
4
|
import { spawnSync } from "node:child_process";
|
|
5
5
|
const defineExtension = ((extension) => extension);
|
|
6
6
|
// ---------------------------------------------------------------------------
|
|
@@ -29,7 +29,13 @@ class CommandError extends Error {
|
|
|
29
29
|
// ---------------------------------------------------------------------------
|
|
30
30
|
// Markdown TODO parser
|
|
31
31
|
// ---------------------------------------------------------------------------
|
|
32
|
-
|
|
32
|
+
// A checkbox line: optional leading whitespace, a `-`/`*`/`+` bullet, then the
|
|
33
|
+
// `[ ]` / `[x]` marker, then the text. Indentation is preserved to detect
|
|
34
|
+
// nested sub-tasks.
|
|
35
|
+
const TODO_RE = /^(\s*)[-*+] \[([ xX])\] (.+)$/;
|
|
36
|
+
// A markdown section header (`## Title`, any level). We treat the heading text
|
|
37
|
+
// as a tag for every TODO that follows it (until the next heading).
|
|
38
|
+
const HEADER_RE = /^(#{1,6})\s+(.+?)\s*#*$/;
|
|
33
39
|
/**
|
|
34
40
|
* Read a boolean option honoring both the kebab-case long flag and the
|
|
35
41
|
* camelCase key the runtime normalizes it to (e.g. `--dry-run` -> `dryRun`).
|
|
@@ -42,34 +48,309 @@ function readBoolOption(options, ...keys) {
|
|
|
42
48
|
}
|
|
43
49
|
return false;
|
|
44
50
|
}
|
|
45
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Read the first defined string option among the given keys (handles both the
|
|
53
|
+
* kebab-case and camelCase forms the runtime may use, e.g. `closed-as` /
|
|
54
|
+
* `closedAs`).
|
|
55
|
+
*/
|
|
56
|
+
function readStringOption(options, ...keys) {
|
|
57
|
+
for (const key of keys) {
|
|
58
|
+
const v = options[key];
|
|
59
|
+
if (v !== undefined && v !== null)
|
|
60
|
+
return String(v);
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Strip priority markers from a TODO's text and return the inferred priority.
|
|
66
|
+
*
|
|
67
|
+
* Recognised markers (case-insensitive), anywhere in the text:
|
|
68
|
+
* - `(p0)`..`(p4)` → that numeric priority
|
|
69
|
+
* - trailing/leading `!`, `!!`, `!!!` → 0, 1, 2 (more bangs = higher)
|
|
70
|
+
*
|
|
71
|
+
* Returns the cleaned text plus the inferred priority (undefined if none).
|
|
72
|
+
*/
|
|
73
|
+
function extractPriority(text) {
|
|
74
|
+
let priority;
|
|
75
|
+
let cleaned = text;
|
|
76
|
+
const pMatch = /\(p([0-4])\)/i.exec(cleaned);
|
|
77
|
+
if (pMatch) {
|
|
78
|
+
priority = parseInt(pMatch[1], 10);
|
|
79
|
+
cleaned = cleaned.replace(pMatch[0], "");
|
|
80
|
+
}
|
|
81
|
+
// Bang markers: only count a contiguous run of `!` that is its own token
|
|
82
|
+
// (surrounded by start/space/end) so we don't strip "!" inside words.
|
|
83
|
+
const bangMatch = /(^|\s)(!{1,3})(?=\s|$)/.exec(cleaned);
|
|
84
|
+
if (bangMatch && priority === undefined) {
|
|
85
|
+
priority = Math.max(0, 3 - bangMatch[2].length); // ! -> 2, !! -> 1, !!! -> 0
|
|
86
|
+
cleaned = cleaned.replace(bangMatch[0], bangMatch[1]);
|
|
87
|
+
}
|
|
88
|
+
return { text: cleaned.replace(/\s+/g, " ").trim(), priority };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Normalise a section heading into a tag-safe slug (lowercase, dashes).
|
|
92
|
+
*/
|
|
93
|
+
function sectionToTag(section) {
|
|
94
|
+
return section
|
|
95
|
+
.toLowerCase()
|
|
96
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
97
|
+
.replace(/^-+|-+$/g, "");
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Parse a markdown string into TODO items.
|
|
101
|
+
*
|
|
102
|
+
* Supports:
|
|
103
|
+
* - `-`/`*`/`+` bullets with `[ ]` / `[x]` checkboxes
|
|
104
|
+
* - nested/indented sub-tasks (indentation captured on `.indent`)
|
|
105
|
+
* - section headers (`## Foo`) attached to every following item as `.section`
|
|
106
|
+
* - priority markers (`(p1)`, `!`/`!!`/`!!!`) parsed out of the text
|
|
107
|
+
*
|
|
108
|
+
* @param file absolute source path recorded on each item (for provenance)
|
|
109
|
+
*/
|
|
110
|
+
function parseMarkdownTodos(md, file) {
|
|
46
111
|
const lines = md.split("\n");
|
|
47
112
|
const todos = [];
|
|
113
|
+
let currentSection;
|
|
48
114
|
for (let i = 0; i < lines.length; i++) {
|
|
49
|
-
const
|
|
115
|
+
const line = lines[i];
|
|
116
|
+
const header = HEADER_RE.exec(line);
|
|
117
|
+
if (header) {
|
|
118
|
+
currentSection = header[2].trim();
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const match = TODO_RE.exec(line);
|
|
50
122
|
if (match) {
|
|
123
|
+
const raw = match[3].trim();
|
|
124
|
+
const { text, priority } = extractPriority(raw);
|
|
51
125
|
todos.push({
|
|
52
|
-
indent: match[1].length,
|
|
126
|
+
indent: match[1].replace(/\t/g, " ").length,
|
|
53
127
|
checked: match[2] !== " ",
|
|
54
|
-
text
|
|
128
|
+
text,
|
|
129
|
+
priority,
|
|
130
|
+
section: currentSection,
|
|
55
131
|
lineNumber: i + 1,
|
|
132
|
+
file,
|
|
56
133
|
});
|
|
57
134
|
}
|
|
58
135
|
}
|
|
59
136
|
return todos;
|
|
60
137
|
}
|
|
61
|
-
|
|
62
|
-
|
|
138
|
+
/**
|
|
139
|
+
* Filter parsed todos to a single section (matched case-insensitively against
|
|
140
|
+
* the raw heading text).
|
|
141
|
+
*/
|
|
142
|
+
function filterBySection(todos, section) {
|
|
143
|
+
const want = section.trim().toLowerCase();
|
|
144
|
+
return todos.filter((t) => (t.section ?? "").toLowerCase() === want);
|
|
145
|
+
}
|
|
146
|
+
function mapStatusToPm(checked, closedAs) {
|
|
147
|
+
return checked ? closedAs : "open";
|
|
63
148
|
}
|
|
64
149
|
function mapPmStatusToChecked(status) {
|
|
65
150
|
return status === "closed" || status === "canceled";
|
|
66
151
|
}
|
|
67
152
|
// ---------------------------------------------------------------------------
|
|
153
|
+
// File discovery (glob)
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
/**
|
|
156
|
+
* Convert a simple glob pattern (supporting `*`, `?`, `**`) into a RegExp that
|
|
157
|
+
* matches a path relative to the base directory (with `/` separators).
|
|
158
|
+
*/
|
|
159
|
+
function globToRegExp(glob) {
|
|
160
|
+
let re = "";
|
|
161
|
+
for (let i = 0; i < glob.length; i++) {
|
|
162
|
+
const ch = glob[i];
|
|
163
|
+
if (ch === "*") {
|
|
164
|
+
if (glob[i + 1] === "*") {
|
|
165
|
+
// `**` matches across directory separators
|
|
166
|
+
re += ".*";
|
|
167
|
+
i++;
|
|
168
|
+
if (glob[i + 1] === "/")
|
|
169
|
+
i++; // swallow the trailing slash of `**/`
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
re += "[^/]*";
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else if (ch === "?") {
|
|
176
|
+
re += "[^/]";
|
|
177
|
+
}
|
|
178
|
+
else if (".+^${}()|[]\\".includes(ch)) {
|
|
179
|
+
re += "\\" + ch;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
re += ch;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return new RegExp("^" + re + "$");
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Resolve a `--glob <pattern>` into a sorted list of absolute file paths.
|
|
189
|
+
* Walks the working directory (capped depth) and matches relative paths.
|
|
190
|
+
*/
|
|
191
|
+
function resolveGlob(pattern, cwd) {
|
|
192
|
+
const re = globToRegExp(pattern);
|
|
193
|
+
const out = [];
|
|
194
|
+
const walk = (dir, depth) => {
|
|
195
|
+
if (depth > 12)
|
|
196
|
+
return;
|
|
197
|
+
let entries;
|
|
198
|
+
try {
|
|
199
|
+
entries = readdirSync(dir);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
for (const entry of entries) {
|
|
205
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist")
|
|
206
|
+
continue;
|
|
207
|
+
const abs = join(dir, entry);
|
|
208
|
+
let st;
|
|
209
|
+
try {
|
|
210
|
+
st = statSync(abs);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (st.isDirectory()) {
|
|
216
|
+
walk(abs, depth + 1);
|
|
217
|
+
}
|
|
218
|
+
else if (st.isFile()) {
|
|
219
|
+
const rel = relative(cwd, abs).split(sep).join("/");
|
|
220
|
+
if (re.test(rel))
|
|
221
|
+
out.push(abs);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
walk(cwd, 0);
|
|
226
|
+
return out.sort();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Read, parse and (unless dry-run) create pm items for every TODO found across
|
|
230
|
+
* the given files. Single code path shared by the command and the importer.
|
|
231
|
+
*/
|
|
232
|
+
function runTodoImport(opts) {
|
|
233
|
+
let imported = 0;
|
|
234
|
+
let skipped = 0;
|
|
235
|
+
const previews = [];
|
|
236
|
+
for (const file of opts.files) {
|
|
237
|
+
let md;
|
|
238
|
+
try {
|
|
239
|
+
md = readFileSync(file, "utf-8");
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
243
|
+
const exitCode = /ENOENT|no such file/i.test(msg) ? EXIT_CODE.NOT_FOUND : EXIT_CODE.GENERIC_FAILURE;
|
|
244
|
+
throw new CommandError(`Failed to read file ${file}: ${msg}`, exitCode);
|
|
245
|
+
}
|
|
246
|
+
let todos = parseMarkdownTodos(md, file);
|
|
247
|
+
if (opts.section)
|
|
248
|
+
todos = filterBySection(todos, opts.section);
|
|
249
|
+
for (const todo of todos) {
|
|
250
|
+
const tags = [...opts.extraTags];
|
|
251
|
+
if (opts.sectionTags && todo.section) {
|
|
252
|
+
const tag = sectionToTag(todo.section);
|
|
253
|
+
if (tag && !tags.includes(tag))
|
|
254
|
+
tags.push(tag);
|
|
255
|
+
}
|
|
256
|
+
// CLI --priority wins; otherwise use the priority inferred from markers.
|
|
257
|
+
const priority = opts.priority !== undefined && opts.priority !== ""
|
|
258
|
+
? opts.priority
|
|
259
|
+
: todo.priority !== undefined
|
|
260
|
+
? String(todo.priority)
|
|
261
|
+
: undefined;
|
|
262
|
+
const status = mapStatusToPm(todo.checked, opts.closedAs);
|
|
263
|
+
if (opts.dryRun) {
|
|
264
|
+
previews.push({
|
|
265
|
+
checked: todo.checked,
|
|
266
|
+
title: todo.text,
|
|
267
|
+
status,
|
|
268
|
+
priority,
|
|
269
|
+
tags,
|
|
270
|
+
section: todo.section,
|
|
271
|
+
indent: todo.indent,
|
|
272
|
+
file: todo.file,
|
|
273
|
+
line: todo.lineNumber,
|
|
274
|
+
});
|
|
275
|
+
console.error(` [dry-run] ${todo.checked ? "[x]" : "[ ]"} ${" ".repeat(Math.floor(todo.indent / 2))}${todo.text}` +
|
|
276
|
+
(tags.length ? ` (tags: ${tags.join(",")})` : "") +
|
|
277
|
+
(priority !== undefined ? ` (p${priority})` : ""));
|
|
278
|
+
imported++;
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
try {
|
|
282
|
+
const spawnArgs = [
|
|
283
|
+
"--path", opts.pmRoot,
|
|
284
|
+
"create",
|
|
285
|
+
"--title", todo.text,
|
|
286
|
+
"--type", opts.itemType,
|
|
287
|
+
"--status", status,
|
|
288
|
+
"--description", `Imported from ${todo.file ?? "stdin"} line ${todo.lineNumber}`,
|
|
289
|
+
];
|
|
290
|
+
if (priority !== undefined && priority !== "")
|
|
291
|
+
spawnArgs.push("--priority", priority);
|
|
292
|
+
if (tags.length > 0)
|
|
293
|
+
spawnArgs.push("--tags", tags.join(","));
|
|
294
|
+
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
295
|
+
if (result.status !== 0) {
|
|
296
|
+
throw new Error(result.stderr || "pm create failed");
|
|
297
|
+
}
|
|
298
|
+
imported++;
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
302
|
+
console.error(`${todo.file}:${todo.lineNumber}: create failed — ${msg}`);
|
|
303
|
+
skipped++;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return { imported, skipped, previews: opts.dryRun ? previews : undefined };
|
|
308
|
+
}
|
|
309
|
+
function buildTodoMarkdown(opts) {
|
|
310
|
+
const result = spawnSync("pm", ["--path", opts.pmRoot, "list-all", "--json"], { encoding: "utf-8" });
|
|
311
|
+
if (result.status !== 0) {
|
|
312
|
+
throw new CommandError(result.stderr || "pm list-all failed");
|
|
313
|
+
}
|
|
314
|
+
let items = JSON.parse(result.stdout).items ?? [];
|
|
315
|
+
if (opts.statusFilter)
|
|
316
|
+
items = items.filter((i) => i.status === opts.statusFilter);
|
|
317
|
+
if (opts.typeFilter)
|
|
318
|
+
items = items.filter((i) => i.type === opts.typeFilter);
|
|
319
|
+
if (items.length === 0) {
|
|
320
|
+
return { markdown: "", count: 0 };
|
|
321
|
+
}
|
|
322
|
+
const lines = [
|
|
323
|
+
"# TODO",
|
|
324
|
+
"",
|
|
325
|
+
`<!-- Exported from pm-cli on ${new Date().toISOString()} -->`,
|
|
326
|
+
"",
|
|
327
|
+
];
|
|
328
|
+
const openItems = items.filter((i) => i.status === "open" || i.status === "in_progress" || i.status === "blocked" || i.status === "draft");
|
|
329
|
+
const closedItems = items.filter((i) => i.status === "closed" || i.status === "canceled");
|
|
330
|
+
if (openItems.length > 0) {
|
|
331
|
+
lines.push("## Open", "");
|
|
332
|
+
for (const item of openItems) {
|
|
333
|
+
const check = mapPmStatusToChecked(item.status) ? "x" : " ";
|
|
334
|
+
const typeTag = item.type ? ` [${item.type}]` : "";
|
|
335
|
+
lines.push(`- [${check}] ${item.title}${typeTag} <!-- ${item.id} -->`);
|
|
336
|
+
}
|
|
337
|
+
lines.push("");
|
|
338
|
+
}
|
|
339
|
+
if (closedItems.length > 0) {
|
|
340
|
+
lines.push("## Done", "");
|
|
341
|
+
for (const item of closedItems) {
|
|
342
|
+
lines.push(`- [x] ${item.title} <!-- ${item.id} -->`);
|
|
343
|
+
}
|
|
344
|
+
lines.push("");
|
|
345
|
+
}
|
|
346
|
+
return { markdown: lines.join("\n"), count: items.length };
|
|
347
|
+
}
|
|
348
|
+
// ---------------------------------------------------------------------------
|
|
68
349
|
// Extension
|
|
69
350
|
// ---------------------------------------------------------------------------
|
|
70
351
|
export default defineExtension({
|
|
71
352
|
name: "pm-todos",
|
|
72
|
-
version: "2026.6.
|
|
353
|
+
version: "2026.6.2",
|
|
73
354
|
activate(api) {
|
|
74
355
|
// -----------------------------------------------------------------------
|
|
75
356
|
// Command: pm todos import <file>
|
|
@@ -77,80 +358,72 @@ export default defineExtension({
|
|
|
77
358
|
api.registerCommand({
|
|
78
359
|
name: "todos import",
|
|
79
360
|
description: "Import markdown TODO items (- [ ] and - [x]) as pm items. " +
|
|
80
|
-
"Each checkbox becomes a pm Task; checked items are closed."
|
|
361
|
+
"Each checkbox becomes a pm Task; checked items are closed. " +
|
|
362
|
+
"Supports nested sub-tasks, multiple files via --glob, section headers " +
|
|
363
|
+
"(## …) mapped to tags, and priority markers ((p1), !).",
|
|
81
364
|
intent: "import markdown checkboxes as pm items",
|
|
82
365
|
examples: [
|
|
83
366
|
"pm todos import TODO.md",
|
|
84
367
|
"pm todos import notes.md --dry-run",
|
|
85
|
-
"pm todos import backlog.md --type Task",
|
|
368
|
+
"pm todos import backlog.md --type Task --priority 2",
|
|
369
|
+
"pm todos import --glob 'docs/**/*.md'",
|
|
370
|
+
"pm todos import TODO.md --section Backlog",
|
|
371
|
+
"pm todos import TODO.md --closed-as canceled",
|
|
86
372
|
],
|
|
87
373
|
flags: [
|
|
88
374
|
{ long: "--dry-run", description: "Preview without writing" },
|
|
89
375
|
{ long: "--type", value_name: "type", description: "Item type for imported items (default: Task)" },
|
|
90
|
-
{ long: "--priority", value_name: "n", description: "Priority for imported items (0-4)" },
|
|
91
|
-
{ long: "--tags", value_name: "tags", description: "Comma-separated tags to apply" },
|
|
376
|
+
{ long: "--priority", value_name: "n", description: "Priority for imported items (0-4); overrides inferred markers" },
|
|
377
|
+
{ long: "--tags", value_name: "tags", description: "Comma-separated tags to apply to all items" },
|
|
378
|
+
{ long: "--glob", value_name: "pattern", description: "Import every markdown file matching this glob (e.g. 'docs/**/*.md')" },
|
|
379
|
+
{ long: "--section", value_name: "name", description: "Import only items under this ## section heading" },
|
|
380
|
+
{ long: "--closed-as", value_name: "status", description: "Status to assign checked items (default: closed)" },
|
|
381
|
+
{ long: "--no-section-tags", description: "Do not derive tags from section headings" },
|
|
92
382
|
],
|
|
93
383
|
async run(ctx) {
|
|
94
|
-
const filePath = ctx.args[0];
|
|
95
|
-
if (!filePath) {
|
|
96
|
-
throw new CommandError("Usage: pm todos import <file> [--dry-run] [--type Task]", EXIT_CODE.USAGE);
|
|
97
|
-
}
|
|
98
384
|
const dryRun = readBoolOption(ctx.options, "dry-run", "dryRun");
|
|
99
385
|
const itemType = ctx.options["type"] || "Task";
|
|
100
386
|
const priority = ctx.options["priority"];
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
387
|
+
const tagsOpt = ctx.options["tags"];
|
|
388
|
+
const glob = readStringOption(ctx.options, "glob");
|
|
389
|
+
const section = readStringOption(ctx.options, "section");
|
|
390
|
+
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
391
|
+
// `--no-section-tags` arrives as sectionTags=false; default on.
|
|
392
|
+
const sectionTags = ctx.options["sectionTags"] !== false && ctx.options["section-tags"] !== false;
|
|
393
|
+
let files;
|
|
394
|
+
if (glob) {
|
|
395
|
+
files = resolveGlob(glob, process.cwd());
|
|
396
|
+
if (files.length === 0) {
|
|
397
|
+
throw new CommandError(`No files matched glob: ${glob}`, EXIT_CODE.NOT_FOUND);
|
|
398
|
+
}
|
|
399
|
+
console.error(`Matched ${files.length} file(s) for glob '${glob}'.`);
|
|
107
400
|
}
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
401
|
+
else {
|
|
402
|
+
const filePath = ctx.args[0];
|
|
403
|
+
if (!filePath) {
|
|
404
|
+
throw new CommandError("Usage: pm todos import <file> [--glob <pattern>] [--section <name>] [--closed-as <status>] [--dry-run]", EXIT_CODE.USAGE);
|
|
405
|
+
}
|
|
406
|
+
files = [resolve(filePath)];
|
|
112
407
|
}
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
408
|
+
const extraTags = (tagsOpt ?? "").split(",").map((t) => t.trim()).filter(Boolean);
|
|
409
|
+
const { imported, skipped, previews } = runTodoImport({
|
|
410
|
+
files,
|
|
411
|
+
itemType,
|
|
412
|
+
closedAs,
|
|
413
|
+
priority,
|
|
414
|
+
extraTags,
|
|
415
|
+
section,
|
|
416
|
+
sectionTags,
|
|
417
|
+
dryRun,
|
|
418
|
+
pmRoot: ctx.pm_root,
|
|
419
|
+
});
|
|
420
|
+
if (imported === 0 && skipped === 0) {
|
|
421
|
+
console.error("No TODO items found.");
|
|
116
422
|
return { imported: 0, skipped: 0 };
|
|
117
423
|
}
|
|
118
|
-
let imported = 0;
|
|
119
|
-
let skipped = 0;
|
|
120
|
-
for (const todo of todos) {
|
|
121
|
-
if (dryRun) {
|
|
122
|
-
console.error(` [dry-run] ${todo.checked ? "[x]" : "[ ]"} ${todo.text}`);
|
|
123
|
-
imported++;
|
|
124
|
-
continue;
|
|
125
|
-
}
|
|
126
|
-
try {
|
|
127
|
-
const spawnArgs = [
|
|
128
|
-
"--path", ctx.pm_root,
|
|
129
|
-
"create",
|
|
130
|
-
"--title", todo.text,
|
|
131
|
-
"--type", itemType,
|
|
132
|
-
"--status", mapStatusToPm(todo.checked),
|
|
133
|
-
"--description", `Imported from ${filePath} line ${todo.lineNumber}`,
|
|
134
|
-
];
|
|
135
|
-
if (priority)
|
|
136
|
-
spawnArgs.push("--priority", priority);
|
|
137
|
-
if (tags)
|
|
138
|
-
spawnArgs.push("--tags", tags);
|
|
139
|
-
const result = spawnSync("pm", spawnArgs, { encoding: "utf-8" });
|
|
140
|
-
if (result.status !== 0) {
|
|
141
|
-
throw new Error(result.stderr || "pm create failed");
|
|
142
|
-
}
|
|
143
|
-
imported++;
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
147
|
-
console.error(`Line ${todo.lineNumber}: create failed — ${msg}`);
|
|
148
|
-
skipped++;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
424
|
if (dryRun) {
|
|
152
425
|
console.error(`[dry-run] Would import ${imported} TODO item(s), skip ${skipped}.`);
|
|
153
|
-
return { dryRun: true, wouldImport: imported, wouldSkip: skipped };
|
|
426
|
+
return { dryRun: true, wouldImport: imported, wouldSkip: skipped, previews };
|
|
154
427
|
}
|
|
155
428
|
console.error(`Imported ${imported} TODO item(s), skipped ${skipped}.`);
|
|
156
429
|
return { imported, skipped };
|
|
@@ -177,110 +450,137 @@ export default defineExtension({
|
|
|
177
450
|
],
|
|
178
451
|
async run(ctx) {
|
|
179
452
|
const outputPath = ctx.options["output"];
|
|
180
|
-
const statusFilter = ctx.options["status"];
|
|
181
|
-
const typeFilter = ctx.options["type"];
|
|
182
|
-
const spawnArgs = ["--path", ctx.pm_root, "list-all", "--json"];
|
|
183
453
|
console.error("Fetching pm items…");
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (statusFilter) {
|
|
191
|
-
items = items.filter((i) => i.status === statusFilter);
|
|
192
|
-
}
|
|
193
|
-
if (typeFilter) {
|
|
194
|
-
items = items.filter((i) => i.type === typeFilter);
|
|
195
|
-
}
|
|
196
|
-
if (items.length === 0) {
|
|
454
|
+
const { markdown, count } = buildTodoMarkdown({
|
|
455
|
+
statusFilter: ctx.options["status"],
|
|
456
|
+
typeFilter: ctx.options["type"],
|
|
457
|
+
pmRoot: ctx.pm_root,
|
|
458
|
+
});
|
|
459
|
+
if (count === 0) {
|
|
197
460
|
console.error("No items found.");
|
|
198
461
|
return { exported: 0 };
|
|
199
462
|
}
|
|
200
|
-
const lines = [
|
|
201
|
-
"# TODO",
|
|
202
|
-
"",
|
|
203
|
-
`<!-- Exported from pm-cli on ${new Date().toISOString()} -->`,
|
|
204
|
-
"",
|
|
205
|
-
];
|
|
206
|
-
// Group: open first, then in_progress, then closed/canceled
|
|
207
|
-
const openItems = items.filter((i) => i.status === "open" || i.status === "in_progress" || i.status === "blocked" || i.status === "draft");
|
|
208
|
-
const closedItems = items.filter((i) => i.status === "closed" || i.status === "canceled");
|
|
209
|
-
if (openItems.length > 0) {
|
|
210
|
-
lines.push("## Open");
|
|
211
|
-
lines.push("");
|
|
212
|
-
for (const item of openItems) {
|
|
213
|
-
const check = mapPmStatusToChecked(item.status) ? "x" : " ";
|
|
214
|
-
const typeTag = item.type ? ` [${item.type}]` : "";
|
|
215
|
-
lines.push(`- [${check}] ${item.title}${typeTag} <!-- ${item.id} -->`);
|
|
216
|
-
}
|
|
217
|
-
lines.push("");
|
|
218
|
-
}
|
|
219
|
-
if (closedItems.length > 0) {
|
|
220
|
-
lines.push("## Done");
|
|
221
|
-
lines.push("");
|
|
222
|
-
for (const item of closedItems) {
|
|
223
|
-
lines.push(`- [x] ${item.title} <!-- ${item.id} -->`);
|
|
224
|
-
}
|
|
225
|
-
lines.push("");
|
|
226
|
-
}
|
|
227
|
-
const markdown = lines.join("\n");
|
|
228
463
|
if (outputPath) {
|
|
229
464
|
const absolutePath = resolve(outputPath);
|
|
230
465
|
writeFileSync(absolutePath, markdown, "utf-8");
|
|
231
|
-
console.error(`Exported ${
|
|
232
|
-
return { exported:
|
|
466
|
+
console.error(`Exported ${count} item(s) to: ${absolutePath}`);
|
|
467
|
+
return { exported: count, file: absolutePath };
|
|
233
468
|
}
|
|
234
|
-
console.error(`Exported ${
|
|
235
|
-
return { exported:
|
|
469
|
+
console.error(`Exported ${count} item(s).`);
|
|
470
|
+
return { exported: count, markdown };
|
|
236
471
|
},
|
|
237
472
|
});
|
|
238
473
|
// -----------------------------------------------------------------------
|
|
239
|
-
// Importer: todos
|
|
474
|
+
// Importer: todos (native `pm import todos` pipeline)
|
|
475
|
+
//
|
|
476
|
+
// Driven by options (config-driven import). Accepts the same knobs as the
|
|
477
|
+
// command: `file`, `glob`, `section`, `closed-as`, `type`, `priority`,
|
|
478
|
+
// `tags`. Reuses the shared import core so behaviour stays identical.
|
|
240
479
|
// -----------------------------------------------------------------------
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
480
|
+
// NOTE: registering the importer under the name "todos" makes the pm
|
|
481
|
+
// runtime route `pm todos import` through THIS handler (the action contract
|
|
482
|
+
// shadows the like-named registerCommand). So this handler is the single
|
|
483
|
+
// source of truth for `pm todos import` and must accept the positional file
|
|
484
|
+
// argument (`ctx.args[0]`) exactly as the command did — otherwise the
|
|
485
|
+
// existing CLI usage would silently break.
|
|
486
|
+
api.registerImporter("todos", async (ctx) => {
|
|
487
|
+
const dryRun = readBoolOption(ctx.options, "dry-run", "dryRun");
|
|
488
|
+
const glob = readStringOption(ctx.options, "glob");
|
|
489
|
+
const fileArg = (ctx.args && ctx.args[0]);
|
|
490
|
+
const fileOpt = readStringOption(ctx.options, "file");
|
|
491
|
+
let files;
|
|
492
|
+
if (glob) {
|
|
493
|
+
files = resolveGlob(glob, process.cwd());
|
|
494
|
+
if (files.length === 0 && ctx.pm_root) {
|
|
495
|
+
files = resolveGlob(glob, resolve(ctx.pm_root, ".."));
|
|
496
|
+
}
|
|
497
|
+
if (files.length === 0) {
|
|
498
|
+
throw new CommandError(`No files matched glob: ${glob}`, EXIT_CODE.NOT_FOUND);
|
|
499
|
+
}
|
|
500
|
+
console.error(`Matched ${files.length} file(s) for glob '${glob}'.`);
|
|
246
501
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
let md;
|
|
250
|
-
try {
|
|
251
|
-
md = readFileSync(absolutePath, "utf-8");
|
|
502
|
+
else if (fileArg || fileOpt) {
|
|
503
|
+
files = [resolve((fileArg ?? fileOpt))];
|
|
252
504
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
console.error(`todos-import: failed to read — ${msg}`);
|
|
256
|
-
return;
|
|
505
|
+
else {
|
|
506
|
+
throw new CommandError("Usage: pm todos import <file> [--glob <pattern>] [--section <name>] [--closed-as <status>] [--dry-run]", EXIT_CODE.USAGE);
|
|
257
507
|
}
|
|
258
|
-
const
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
508
|
+
const itemType = readStringOption(ctx.options, "type") ?? "Task";
|
|
509
|
+
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
510
|
+
const priority = readStringOption(ctx.options, "priority");
|
|
511
|
+
const section = readStringOption(ctx.options, "section");
|
|
512
|
+
const extraTags = (readStringOption(ctx.options, "tags") ?? "")
|
|
513
|
+
.split(",").map((t) => t.trim()).filter(Boolean);
|
|
514
|
+
const sectionTags = ctx.options["sectionTags"] !== false && ctx.options["section-tags"] !== false;
|
|
515
|
+
const { imported, skipped, previews } = runTodoImport({
|
|
516
|
+
files,
|
|
517
|
+
itemType,
|
|
518
|
+
closedAs,
|
|
519
|
+
priority,
|
|
520
|
+
extraTags,
|
|
521
|
+
section,
|
|
522
|
+
sectionTags,
|
|
523
|
+
dryRun,
|
|
524
|
+
pmRoot: ctx.pm_root,
|
|
525
|
+
});
|
|
526
|
+
if (imported === 0 && skipped === 0) {
|
|
527
|
+
console.error("No TODO items found.");
|
|
528
|
+
return { imported: 0, skipped: 0 };
|
|
262
529
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
530
|
+
if (dryRun) {
|
|
531
|
+
console.error(`[dry-run] Would import ${imported} TODO item(s), skip ${skipped}.`);
|
|
532
|
+
return { dryRun: true, wouldImport: imported, wouldSkip: skipped, previews };
|
|
533
|
+
}
|
|
534
|
+
console.error(`Imported ${imported} TODO item(s), skipped ${skipped}.`);
|
|
535
|
+
return { imported, skipped };
|
|
536
|
+
});
|
|
537
|
+
// -----------------------------------------------------------------------
|
|
538
|
+
// Exporter: todos (native `pm export todos` pipeline)
|
|
539
|
+
//
|
|
540
|
+
// Mirrors the `todos export` command so markdown is a first-class
|
|
541
|
+
// import/export pair. Writes to `--output` or prints to stdout.
|
|
542
|
+
// -----------------------------------------------------------------------
|
|
543
|
+
api.registerExporter("todos", async (ctx) => {
|
|
544
|
+
const outputPath = readStringOption(ctx.options, "output");
|
|
545
|
+
const { markdown, count } = buildTodoMarkdown({
|
|
546
|
+
statusFilter: readStringOption(ctx.options, "status"),
|
|
547
|
+
typeFilter: readStringOption(ctx.options, "type"),
|
|
548
|
+
pmRoot: ctx.pm_root,
|
|
549
|
+
});
|
|
550
|
+
if (count === 0) {
|
|
551
|
+
console.error("todos: no items found.");
|
|
552
|
+
return { exported: 0 };
|
|
553
|
+
}
|
|
554
|
+
if (outputPath) {
|
|
555
|
+
const absolutePath = resolve(outputPath);
|
|
556
|
+
writeFileSync(absolutePath, markdown, "utf-8");
|
|
557
|
+
console.error(`todos: wrote ${count} item(s) to ${absolutePath}`);
|
|
558
|
+
return { exported: count, file: absolutePath };
|
|
559
|
+
}
|
|
560
|
+
console.log(markdown);
|
|
561
|
+
return { exported: count, markdown };
|
|
562
|
+
});
|
|
563
|
+
// -----------------------------------------------------------------------
|
|
564
|
+
// Importer: todos-import (legacy alias — retained for backward compat)
|
|
565
|
+
// -----------------------------------------------------------------------
|
|
566
|
+
api.registerImporter("todos-import", async (ctx) => {
|
|
567
|
+
const filePath = readStringOption(ctx.options, "file");
|
|
568
|
+
if (!filePath) {
|
|
569
|
+
console.error("todos-import: no 'file' provided — skipping.");
|
|
570
|
+
return;
|
|
283
571
|
}
|
|
572
|
+
const closedAs = readStringOption(ctx.options, "closed-as", "closedAs") ?? "closed";
|
|
573
|
+
const { imported, skipped } = runTodoImport({
|
|
574
|
+
files: [resolve(filePath)],
|
|
575
|
+
itemType: readStringOption(ctx.options, "type") ?? "Task",
|
|
576
|
+
closedAs,
|
|
577
|
+
priority: readStringOption(ctx.options, "priority"),
|
|
578
|
+
extraTags: [],
|
|
579
|
+
section: readStringOption(ctx.options, "section"),
|
|
580
|
+
sectionTags: false,
|
|
581
|
+
dryRun: false,
|
|
582
|
+
pmRoot: ctx.pm_root,
|
|
583
|
+
});
|
|
284
584
|
console.error(`todos-import: done — imported ${imported}, skipped ${skipped}.`);
|
|
285
585
|
});
|
|
286
586
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,eAAe,GAA+B,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAQ,CAAC;AAE3F,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,SAAS,GAAG;IAChB,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,YAAa,SAAQ,KAAK;IAC9B,QAAQ,CAAS;IACjB,YAAY,OAAe,EAAE,WAAmB,SAAS,CAAC,eAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAwBD,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAE5C;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAAgC,EAAE,GAAG,IAAc;IACzE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAU;IACpC,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACrB,UAAU,EAAE,CAAC,GAAG,CAAC;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,eAAe,eAAe,CAAC;IAC7B,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IAEnB,QAAQ,CAAC,GAAQ;QACf,0EAA0E;QAC1E,kCAAkC;QAClC,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,4DAA4D;gBAC5D,4DAA4D;YAC9D,MAAM,EAAE,wCAAwC;YAChD,QAAQ,EAAE;gBACR,yBAAyB;gBACzB,oCAAoC;gBACpC,wCAAwC;aACzC;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBAC7D,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,8CAA8C,EAAE;gBACnG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBACzF,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE;aACrF;YACD,KAAK,CAAC,GAAG,CAAC,GAAQ;gBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;gBACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,IAAI,YAAY,CAAC,yDAAyD,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBACrG,CAAC;gBAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAY,IAAI,MAAM,CAAC;gBAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAuB,CAAC;gBAC/D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAC;gBACvD,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEvC,OAAO,CAAC,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;gBAE9D,IAAI,EAAU,CAAC;gBACf,IAAI,CAAC;oBACH,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;oBACpG,MAAM,IAAI,YAAY,CAAC,wBAAwB,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAC9C,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrC,CAAC;gBAED,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC1E,QAAQ,EAAE,CAAC;wBACX,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG;4BAChB,QAAQ,EAAE,GAAG,CAAC,OAAO;4BACrB,QAAQ;4BACR,SAAS,EAAE,IAAI,CAAC,IAAI;4BACpB,QAAQ,EAAE,QAAQ;4BAClB,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;4BACvC,eAAe,EAAE,iBAAiB,QAAQ,SAAS,IAAI,CAAC,UAAU,EAAE;yBACrE,CAAC;wBACF,IAAI,QAAQ;4BAAE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;wBACrD,IAAI,IAAI;4BAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBAEzC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;wBACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACxB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC;wBACvD,CAAC;wBACD,QAAQ,EAAE,CAAC;oBACb,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,UAAU,qBAAqB,GAAG,EAAE,CAAC,CAAC;wBACjE,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,uBAAuB,OAAO,GAAG,CAAC,CAAC;oBACnF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBACrE,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,0BAA0B,OAAO,GAAG,CAAC,CAAC;gBACxE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC/B,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,2BAA2B;QAC3B,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,2CAA2C;gBAC3C,8DAA8D;YAChE,MAAM,EAAE,yCAAyC;YACjD,QAAQ,EAAE;gBACR,iBAAiB;gBACjB,kCAAkC;gBAClC,mDAAmD;gBACnD,6BAA6B;aAC9B;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,0CAA0C,EAAE;gBACjG,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC3E,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAC3E;YACD,KAAK,CAAC,GAAG,CAAC,GAAQ;gBAChB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAuB,CAAC;gBAC/D,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAuB,CAAC;gBACjE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAC;gBAE7D,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAEhE,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACpC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAAC;oBAClD,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC;gBAED,IAAI,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAE5D,IAAI,YAAY,EAAE,CAAC;oBACjB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;gBACzD,CAAC;gBACD,IAAI,UAAU,EAAE,CAAC;oBACf,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACjC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACzB,CAAC;gBAED,MAAM,KAAK,GAAa;oBACtB,QAAQ;oBACR,EAAE;oBACF,gCAAgC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM;oBAC9D,EAAE;iBACH,CAAC;gBAEF,4DAA4D;gBAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;gBAC3I,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;gBAE1F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;wBAC7B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnD,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,OAAO,SAAS,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;oBACzE,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;gBAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;wBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;oBACxD,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjB,CAAC;gBAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAElC,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;oBACzC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC/C,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,MAAM,gBAAgB,YAAY,EAAE,CAAC,CAAC;oBACtE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBACxD,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;gBACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,yBAAyB;QACzB,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAC;YAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;YAEvD,IAAI,EAAU,CAAC;YACf,IAAI,CAAC;gBACH,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;gBACvD,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,OAAO,GAAG,CAAC,CAAC;YAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG;wBAChB,QAAQ,EAAE,GAAG,CAAC,OAAO;wBACrB,QAAQ;wBACR,SAAS,EAAE,IAAI,CAAC,IAAI;wBACpB,QAAQ,EAAE,MAAM;wBAChB,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;qBACxC,CAAC;oBAEF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;oBACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC;oBACvD,CAAC;oBACD,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,aAAa,OAAO,GAAG,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,MAAM,eAAe,GAA+B,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,SAAS,CAAQ,CAAC;AAE3F,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,yEAAyE;AACzE,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,SAAS,GAAG;IAChB,eAAe,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,YAAa,SAAQ,KAAK;IAC9B,QAAQ,CAAS;IACjB,YAAY,OAAe,EAAE,WAAmB,SAAS,CAAC,eAAe;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AA8BD,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,+EAA+E;AAC/E,0EAA0E;AAC1E,oBAAoB;AACpB,MAAM,OAAO,GAAG,+BAA+B,CAAC;AAChD,+EAA+E;AAC/E,oEAAoE;AACpE,MAAM,SAAS,GAAG,yBAAyB,CAAC;AAE5C;;;;GAIG;AACH,SAAS,cAAc,CAAC,OAAgC,EAAE,GAAG,IAAc;IACzE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,OAAgC,EAAE,GAAG,IAAc;IAC3E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,QAA4B,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,4BAA4B;QAC7E,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,OAAO;SACX,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,kBAAkB,CAAC,EAAU,EAAE,IAAa;IACnD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,cAAkC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM;gBAC9C,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBACzB,IAAI;gBACJ,QAAQ;gBACR,OAAO,EAAE,cAAc;gBACvB,UAAU,EAAE,CAAC,GAAG,CAAC;gBACjB,IAAI;aACL,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAiB,EAAE,OAAe;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAE,QAAgB;IACvD,OAAO,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACrC,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAC;AACtD,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxB,2CAA2C;gBAC3C,EAAE,IAAI,IAAI,CAAC;gBACX,CAAC,EAAE,CAAC;gBACJ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC,CAAC,sCAAsC;YACtE,CAAC;iBAAM,CAAC;gBACN,EAAE,IAAI,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,EAAE,IAAI,MAAM,CAAC;QACf,CAAC;aAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,EAAE,IAAI,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,OAAe,EAAE,GAAW;IAC/C,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QAChD,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO;QACvB,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM;gBAAE,SAAS;YAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC;YACP,IAAI,CAAC;gBACH,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACb,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAyBD;;;GAGG;AACH,SAAS,aAAa,CAAC,IAAuB;IAC5C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAmC,EAAE,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,EAAU,CAAC;QACf,IAAI,CAAC;YACH,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;YACpG,MAAM,IAAI,YAAY,CAAC,uBAAuB,IAAI,KAAK,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,KAAK,GAAG,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO;YAAE,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;YAED,yEAAyE;YACzE,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE;gBACjD,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACf,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS;oBAC3B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACvB,CAAC,CAAC,SAAS,CAAC;YAElB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE1D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,MAAM;oBACN,QAAQ;oBACR,IAAI;oBACJ,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,UAAU;iBACtB,CAAC,CAAC;gBACH,OAAO,CAAC,KAAK,CACX,eAAe,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;oBACnG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACpD,CAAC;gBACF,QAAQ,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG;oBAChB,QAAQ,EAAE,IAAI,CAAC,MAAM;oBACrB,QAAQ;oBACR,SAAS,EAAE,IAAI,CAAC,IAAI;oBACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,UAAU,EAAE,MAAM;oBAClB,eAAe,EAAE,iBAAiB,IAAI,CAAC,IAAI,IAAI,OAAO,SAAS,IAAI,CAAC,UAAU,EAAE;iBACjF,CAAC;gBACF,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;oBAAE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACtF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE9D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBACjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC,CAAC;gBACvD,CAAC;gBACD,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBACzE,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC7E,CAAC;AAYD,SAAS,iBAAiB,CAAC,IAAuB;IAChD,MAAM,MAAM,GAAG,SAAS,CACtB,IAAI,EACJ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAC7C,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC5D,IAAI,IAAI,CAAC,YAAY;QAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC;IACnF,IAAI,IAAI,CAAC,UAAU;QAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;IAE7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAAa;QACtB,QAAQ;QACR,EAAE;QACF,gCAAgC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM;QAC9D,EAAE;KACH,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAC3G,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IAE1F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,OAAO,SAAS,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,eAAe,eAAe,CAAC;IAC7B,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,UAAU;IAEnB,QAAQ,CAAC,GAAQ;QACf,0EAA0E;QAC1E,kCAAkC;QAClC,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,4DAA4D;gBAC5D,6DAA6D;gBAC7D,wEAAwE;gBACxE,wDAAwD;YAC1D,MAAM,EAAE,wCAAwC;YAChD,QAAQ,EAAE;gBACR,yBAAyB;gBACzB,oCAAoC;gBACpC,qDAAqD;gBACrD,uCAAuC;gBACvC,2CAA2C;gBAC3C,8CAA8C;aAC/C;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB,EAAE;gBAC7D,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,8CAA8C,EAAE;gBACnG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,+DAA+D,EAAE;gBACrH,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,4CAA4C,EAAE;gBACjG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,qEAAqE,EAAE;gBAC7H,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,iDAAiD,EAAE;gBACzG,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;gBAC9G,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,0CAA0C,EAAE;aACvF;YACD,KAAK,CAAC,GAAG,CAAC,GAAQ;gBAChB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAY,IAAI,MAAM,CAAC;gBAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAuB,CAAC;gBAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAC;gBAC1D,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC;gBACpF,gEAAgE;gBAChE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC;gBAElG,IAAI,KAAe,CAAC;gBACpB,IAAI,IAAI,EAAE,CAAC;oBACT,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,MAAM,IAAI,YAAY,CAAC,0BAA0B,IAAI,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;oBAChF,CAAC;oBACD,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,MAAM,sBAAsB,IAAI,IAAI,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAuB,CAAC;oBACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,YAAY,CACpB,wGAAwG,EACxG,SAAS,CAAC,KAAK,CAChB,CAAC;oBACJ,CAAC;oBACD,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9B,CAAC;gBAED,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAElF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;oBACpD,KAAK;oBACL,QAAQ;oBACR,QAAQ;oBACR,QAAQ;oBACR,SAAS;oBACT,OAAO;oBACP,WAAW;oBACX,MAAM;oBACN,MAAM,EAAE,GAAG,CAAC,OAAO;iBACpB,CAAC,CAAC;gBAEH,IAAI,QAAQ,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;oBACpC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBACtC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrC,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,uBAAuB,OAAO,GAAG,CAAC,CAAC;oBACnF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC/E,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,0BAA0B,OAAO,GAAG,CAAC,CAAC;gBACxE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YAC/B,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,2BAA2B;QAC3B,0EAA0E;QAC1E,GAAG,CAAC,eAAe,CAAC;YAClB,IAAI,EAAE,cAAc;YACpB,WAAW,EACT,2CAA2C;gBAC3C,8DAA8D;YAChE,MAAM,EAAE,yCAAyC;YACjD,QAAQ,EAAE;gBACR,iBAAiB;gBACjB,kCAAkC;gBAClC,mDAAmD;gBACnD,6BAA6B;aAC9B;YACD,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,0CAA0C,EAAE;gBACjG,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;gBAC3E,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,qBAAqB,EAAE;aAC3E;YACD,KAAK,CAAC,GAAG,CAAC,GAAQ;gBAChB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAuB,CAAC;gBAE/D,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACpC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC;oBAC5C,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAuB;oBACzD,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB;oBACrD,MAAM,EAAE,GAAG,CAAC,OAAO;iBACpB,CAAC,CAAC;gBAEH,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACjC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACzB,CAAC;gBAED,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;oBACzC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAC/C,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,gBAAgB,YAAY,EAAE,CAAC,CAAC;oBAC/D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;gBACjD,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,WAAW,CAAC,CAAC;gBAC5C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACvC,CAAC;SACF,CAAC,CAAC;QAEH,0EAA0E;QAC1E,uDAAuD;QACvD,EAAE;QACF,0EAA0E;QAC1E,uEAAuE;QACvE,sEAAsE;QACtE,0EAA0E;QAC1E,qEAAqE;QACrE,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,sEAAsE;QACtE,2CAA2C;QAC3C,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YAC/C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAuB,CAAC;YAChE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAEtD,IAAI,KAAe,CAAC;YACpB,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACtC,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBACxD,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,YAAY,CAAC,0BAA0B,IAAI,EAAE,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;gBAChF,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,MAAM,sBAAsB,IAAI,IAAI,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC9B,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,OAAO,CAAW,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,YAAY,CACpB,wGAAwG,EACxG,SAAS,CAAC,KAAK,CAChB,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC;YACjE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC;YACpF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;iBAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC;YAElG,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;gBACpD,KAAK;gBACL,QAAQ;gBACR,QAAQ;gBACR,QAAQ;gBACR,SAAS;gBACT,OAAO;gBACP,WAAW;gBACX,MAAM;gBACN,MAAM,EAAE,GAAG,CAAC,OAAO;aACpB,CAAC,CAAC;YAEH,IAAI,QAAQ,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBACtC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACrC,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,uBAAuB,OAAO,GAAG,CAAC,CAAC;gBACnF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC/E,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,YAAY,QAAQ,0BAA0B,OAAO,GAAG,CAAC,CAAC;YACxE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,uDAAuD;QACvD,EAAE;QACF,kEAAkE;QAClE,gEAAgE;QAChE,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YAC/C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,iBAAiB,CAAC;gBAC5C,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;gBACrD,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;gBACjD,MAAM,EAAE,GAAG,CAAC,OAAO;aACpB,CAAC,CAAC;YAEH,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACxC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACzB,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;gBACzC,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,eAAe,YAAY,EAAE,CAAC,CAAC;gBAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACjD,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE,GAAQ,EAAE,EAAE;YACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,IAAI,QAAQ,CAAC;YACpF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;gBAC1C,KAAK,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1B,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM;gBACzD,QAAQ;gBACR,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC;gBACnD,SAAS,EAAE,EAAE;gBACb,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;gBACjD,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,GAAG,CAAC,OAAO;aACpB,CAAC,CAAC;YAEH,OAAO,CAAC,KAAK,CAAC,iCAAiC,QAAQ,aAAa,OAAO,GAAG,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-todos",
|
|
3
|
-
"version": "2026.6.
|
|
3
|
+
"version": "2026.6.2",
|
|
4
4
|
"description": "Markdown TODO round-trip extension for pm-cli",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^25.9.1",
|
|
41
|
-
"@unbrained/pm-cli": "^2026.5.
|
|
41
|
+
"@unbrained/pm-cli": "^2026.5.31",
|
|
42
42
|
"pm-changelog": "^2026.5.29-2",
|
|
43
43
|
"typescript": "^6.0.3"
|
|
44
44
|
},
|