@notatki/core 0.0.3 → 0.0.4

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 (53) hide show
  1. package/dist/export/anki.d.ts +6 -0
  2. package/dist/export/anki.d.ts.map +1 -0
  3. package/dist/export/anki.js +7 -0
  4. package/dist/export/anki.js.map +1 -0
  5. package/dist/export/csv.d.ts +6 -0
  6. package/dist/export/csv.d.ts.map +1 -0
  7. package/dist/{export-notes.js → export/csv.js} +9 -7
  8. package/dist/export/csv.js.map +1 -0
  9. package/dist/export/json.d.ts +31 -0
  10. package/dist/export/json.d.ts.map +1 -0
  11. package/dist/export/json.js +41 -0
  12. package/dist/export/json.js.map +1 -0
  13. package/dist/index.d.ts +4 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/insert-note-id.js.map +1 -1
  18. package/dist/model.d.ts +6 -6
  19. package/dist/model.d.ts.map +1 -1
  20. package/dist/model.js +5 -5
  21. package/dist/model.js.map +1 -1
  22. package/dist/nodes.d.ts +11 -0
  23. package/dist/nodes.d.ts.map +1 -1
  24. package/dist/nodes.js +47 -0
  25. package/dist/nodes.js.map +1 -1
  26. package/dist/note-parser.js +1 -1
  27. package/dist/note-parser.js.map +1 -1
  28. package/dist/note.d.ts +0 -2
  29. package/dist/note.d.ts.map +1 -1
  30. package/dist/note.js +0 -29
  31. package/dist/note.js.map +1 -1
  32. package/dist/output.js.map +1 -1
  33. package/dist/print-model-nodes.js +4 -4
  34. package/dist/print-model-nodes.js.map +1 -1
  35. package/dist/print-note-nodes.js.map +1 -1
  36. package/dist/reformat-model-nodes.js.map +1 -1
  37. package/dist/reformat-note-nodes.js.map +1 -1
  38. package/package.json +5 -4
  39. package/dist/export-notes.d.ts +0 -3
  40. package/dist/export-notes.d.ts.map +0 -1
  41. package/dist/export-notes.js.map +0 -1
  42. package/src/export-notes.ts +0 -31
  43. package/src/index.ts +0 -10
  44. package/src/insert-note-id.ts +0 -23
  45. package/src/model.ts +0 -155
  46. package/src/nodes.ts +0 -7
  47. package/src/note-parser.ts +0 -277
  48. package/src/note.ts +0 -189
  49. package/src/output.ts +0 -27
  50. package/src/print-model-nodes.ts +0 -39
  51. package/src/print-note-nodes.ts +0 -31
  52. package/src/reformat-model-nodes.ts +0 -5
  53. package/src/reformat-note-nodes.ts +0 -34
@@ -0,0 +1,6 @@
1
+ import type { NoteList } from "../note.js";
2
+ export type ExportAnkiOptions = {
3
+ signal?: AbortSignal;
4
+ };
5
+ export declare function exportAnki(col: NoteList, { signal }?: Readonly<ExportAnkiOptions>): Promise<Buffer>;
6
+ //# sourceMappingURL=anki.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anki.d.ts","sourceRoot":"","sources":["../../src/export/anki.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,GAAG,EAAE,QAAQ,EACb,EAAE,MAAqC,EAAE,GAAE,QAAQ,CAAC,iBAAiB,CAAM,GAC1E,OAAO,CAAC,MAAM,CAAC,CAKjB"}
@@ -0,0 +1,7 @@
1
+ export async function exportAnki(col, { signal = new AbortController().signal } = {}) {
2
+ if (signal.aborted) {
3
+ throw new Error("Aborted");
4
+ }
5
+ return Buffer.of();
6
+ }
7
+ //# sourceMappingURL=anki.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anki.js","sourceRoot":"","sources":["../../src/export/anki.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAa,EACb,EAAE,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,KAAkC,EAAE;IAE3E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;AACrB,CAAC","sourcesContent":["import type { NoteList } from \"../note.js\";\n\nexport type ExportAnkiOptions = {\n signal?: AbortSignal;\n};\n\nexport async function exportAnki(\n col: NoteList,\n { signal = new AbortController().signal }: Readonly<ExportAnkiOptions> = {},\n): Promise<Buffer> {\n if (signal.aborted) {\n throw new Error(\"Aborted\");\n }\n return Buffer.of();\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { type NoteList } from "../note.js";
2
+ export type ExportCsvOptions = {
3
+ signal?: AbortSignal;
4
+ };
5
+ export declare function exportCsv(col: NoteList, { signal }?: Readonly<ExportCsvOptions>): Promise<string>;
6
+ //# sourceMappingURL=csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../src/export/csv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,SAAS,CAC7B,GAAG,EAAE,QAAQ,EACb,EAAE,MAAqC,EAAE,GAAE,QAAQ,CAAC,gBAAgB,CAAM,GACzE,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
@@ -1,6 +1,9 @@
1
1
  import { formatField } from "@notatki/format";
2
- import {} from "./note.js";
3
- export function exportNotes(notes) {
2
+ import {} from "../note.js";
3
+ export async function exportCsv(col, { signal = new AbortController().signal } = {}) {
4
+ if (signal.aborted) {
5
+ throw new Error("Aborted");
6
+ }
4
7
  const lines = [];
5
8
  lines.push(`#separator:semicolon`);
6
9
  lines.push(`#html:true`);
@@ -8,10 +11,9 @@ export function exportNotes(notes) {
8
11
  lines.push(`#notetype column:2`);
9
12
  lines.push(`#deck column:3`);
10
13
  lines.push(`#tags column:4`);
11
- for (const note of notes) {
12
- lines.push([note.id, note.type.name, note.deck, note.tags, ...[...note].map(({ value }) => formatField(value))]
13
- .map(escape)
14
- .join(";"));
14
+ for (const note of col) {
15
+ const fields = [...note].map(({ value }) => formatField(value));
16
+ lines.push([note.id, note.type.name, note.deck, note.tags, ...fields].map(escape).join(";"));
15
17
  }
16
18
  lines.push("");
17
19
  return lines.join("\n");
@@ -25,4 +27,4 @@ function escape(value) {
25
27
  }
26
28
  return value;
27
29
  }
28
- //# sourceMappingURL=export-notes.js.map
30
+ //# sourceMappingURL=csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../src/export/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAiB,MAAM,YAAY,CAAC;AAM3C,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAa,EACb,EAAE,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,KAAiC,EAAE;IAE1E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,MAAM,CAAC,KAAoB;IAClC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { formatField } from \"@notatki/format\";\nimport { type NoteList } from \"../note.js\";\n\nexport type ExportCsvOptions = {\n signal?: AbortSignal;\n};\n\nexport async function exportCsv(\n col: NoteList,\n { signal = new AbortController().signal }: Readonly<ExportCsvOptions> = {},\n): Promise<string> {\n if (signal.aborted) {\n throw new Error(\"Aborted\");\n }\n const lines = [];\n lines.push(`#separator:semicolon`);\n lines.push(`#html:true`);\n lines.push(`#guid column:1`);\n lines.push(`#notetype column:2`);\n lines.push(`#deck column:3`);\n lines.push(`#tags column:4`);\n for (const note of col) {\n const fields = [...note].map(({ value }) => formatField(value));\n lines.push([note.id, note.type.name, note.deck, note.tags, ...fields].map(escape).join(\";\"));\n }\n lines.push(\"\");\n return lines.join(\"\\n\");\n}\n\nfunction escape(value: string | null): string {\n if (value == null) {\n return \"\";\n }\n if (value.includes(\";\") || value.includes(\"\\n\") || value.includes('\"')) {\n return `\"${value.replaceAll('\"', '\"\"')}\"`;\n }\n return value;\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import type { NoteList } from "../note.js";
2
+ export type JCollection = {
3
+ models: JModel[];
4
+ notes: JNote[];
5
+ };
6
+ export type JModel = {
7
+ id: number;
8
+ name: string;
9
+ cloze: boolean;
10
+ fields: {
11
+ name: string;
12
+ }[];
13
+ cards: {
14
+ name: string;
15
+ front: string;
16
+ back: string;
17
+ }[];
18
+ styles: string;
19
+ };
20
+ export type JNote = {
21
+ guid: string;
22
+ type: string;
23
+ deck: string;
24
+ tags: string[];
25
+ fields: Record<string, string>;
26
+ };
27
+ export type ExportJsonOptions = {
28
+ signal?: AbortSignal;
29
+ };
30
+ export declare function exportJson(col: NoteList, { signal }?: Readonly<ExportJsonOptions>): Promise<string>;
31
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/export/json.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,KAAK,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,EAAE,CAAC;IACJ,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,EAAE,CAAC;IACJ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,GAAG,EAAE,QAAQ,EACb,EAAE,MAAqC,EAAE,GAAE,QAAQ,CAAC,iBAAiB,CAAM,GAC1E,OAAO,CAAC,MAAM,CAAC,CA8CjB"}
@@ -0,0 +1,41 @@
1
+ import { formatField } from "@notatki/format";
2
+ export async function exportJson(col, { signal = new AbortController().signal } = {}) {
3
+ if (signal.aborted) {
4
+ throw new Error("Aborted");
5
+ }
6
+ const models = [];
7
+ const notes = [];
8
+ for (const model of col.types) {
9
+ models.push({
10
+ id: model.id,
11
+ name: model.name,
12
+ cloze: model.cloze,
13
+ fields: [...model.fields].map(({ name, //
14
+ }) => ({
15
+ name,
16
+ })),
17
+ cards: [...model.cards].map(({ name, //
18
+ front, back, }) => ({
19
+ name,
20
+ front,
21
+ back,
22
+ })),
23
+ styles: model.styles,
24
+ });
25
+ }
26
+ for (const note of col) {
27
+ const fields = {};
28
+ for (const field of note) {
29
+ fields[field.name] = formatField(field.value);
30
+ }
31
+ notes.push({
32
+ guid: note.id,
33
+ type: note.type.name,
34
+ deck: note.deck,
35
+ tags: note.tags.split(/\s+/),
36
+ fields,
37
+ });
38
+ }
39
+ return JSON.stringify({ models, notes }, null, 2);
40
+ }
41
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/export/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAmC9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAa,EACb,EAAE,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC,MAAM,KAAkC,EAAE;IAE3E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAY,EAAE,CAAC;IAC1B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAC3B,CAAC,EACC,IAAI,EAAE,EAAE;cACT,EAAE,EAAE,CAAC,CAAC;gBACL,IAAI;aACL,CAAC,CACH;YACD,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CACzB,CAAC,EACC,IAAI,EAAE,EAAE;YACR,KAAK,EACL,IAAI,GACL,EAAE,EAAE,CAAC,CAAC;gBACL,IAAI;gBACJ,KAAK;gBACL,IAAI;aACL,CAAC,CACH;YACD,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAwB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["import { formatField } from \"@notatki/format\";\nimport type { NoteList } from \"../note.js\";\n\nexport type JCollection = {\n models: JModel[];\n notes: JNote[];\n};\n\nexport type JModel = {\n id: number;\n name: string;\n cloze: boolean;\n fields: {\n name: string;\n }[];\n cards: {\n name: string;\n front: string;\n back: string;\n }[];\n styles: string;\n};\n\nexport type JNote = {\n guid: string;\n type: string;\n deck: string;\n tags: string[];\n fields: Record<string, string>;\n};\n\nexport type ExportJsonOptions = {\n signal?: AbortSignal;\n};\n\nexport async function exportJson(\n col: NoteList,\n { signal = new AbortController().signal }: Readonly<ExportJsonOptions> = {},\n): Promise<string> {\n if (signal.aborted) {\n throw new Error(\"Aborted\");\n }\n const models: JModel[] = [];\n const notes: JNote[] = [];\n for (const model of col.types) {\n models.push({\n id: model.id,\n name: model.name,\n cloze: model.cloze,\n fields: [...model.fields].map(\n ({\n name, //\n }) => ({\n name,\n }),\n ),\n cards: [...model.cards].map(\n ({\n name, //\n front,\n back,\n }) => ({\n name,\n front,\n back,\n }),\n ),\n styles: model.styles,\n });\n }\n for (const note of col) {\n const fields: Record<string, string> = {};\n for (const field of note) {\n fields[field.name] = formatField(field.value);\n }\n notes.push({\n guid: note.id,\n type: note.type.name,\n deck: note.deck,\n tags: note.tags.split(/\\s+/),\n fields,\n });\n }\n return JSON.stringify({ models, notes } satisfies JCollection, null, 2);\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
- export * from "./export-notes.js";
1
+ export * from "./export/anki.js";
2
+ export * from "./export/csv.js";
3
+ export * from "./export/json.js";
2
4
  export * from "./insert-note-id.js";
3
5
  export * from "./model.js";
6
+ export * from "./nodes.js";
4
7
  export * from "./note.js";
5
8
  export * from "./note-parser.js";
6
9
  export * from "./output.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
- export * from "./export-notes.js";
1
+ export * from "./export/anki.js";
2
+ export * from "./export/csv.js";
3
+ export * from "./export/json.js";
2
4
  export * from "./insert-note-id.js";
3
5
  export * from "./model.js";
6
+ export * from "./nodes.js";
4
7
  export * from "./note.js";
5
8
  export * from "./note-parser.js";
6
9
  export * from "./output.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./export/anki.js\";\nexport * from \"./export/csv.js\";\nexport * from \"./export/json.js\";\nexport * from \"./insert-note-id.js\";\nexport * from \"./model.js\";\nexport * from \"./nodes.js\";\nexport * from \"./note.js\";\nexport * from \"./note-parser.js\";\nexport * from \"./output.js\";\nexport * from \"./print-model-nodes.js\";\nexport * from \"./print-note-nodes.js\";\nexport * from \"./reformat-model-nodes.js\";\nexport * from \"./reformat-note-nodes.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"insert-note-id.js","sourceRoot":"","sources":["../src/insert-note-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,CAAC,MAAM,WAAW,GAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAElE,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,MAAmB,WAAW;IAC5E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"insert-note-id.js","sourceRoot":"","sources":["../src/insert-note-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,CAAC,MAAM,WAAW,GAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AAElE,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,MAAmB,WAAW;IAC5E,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { type NoteNode } from \"@notatki/parser\";\nimport { loc } from \"./nodes.js\";\nimport { Note } from \"./note.js\";\n\nexport type IdGenerator = () => string;\n\nexport const idGenerator: IdGenerator = () => crypto.randomUUID();\n\nexport function insertNoteId(nodes: NoteNode[], gen: IdGenerator = idGenerator): boolean {\n let changed = false;\n for (const node of nodes) {\n let field = node.fields.find(({ name }) => Note.isIdField(name.text));\n if (field == null) {\n node.fields.unshift((field = { name: { text: \"id\", loc }, value: { text: \"\", loc }, loc }));\n }\n const { value } = field;\n if (!value.text) {\n value.text = gen();\n changed = true;\n }\n }\n return changed;\n}\n"]}
package/dist/model.d.ts CHANGED
@@ -4,7 +4,7 @@ export type Model = {
4
4
  readonly cloze: boolean;
5
5
  readonly fields: readonly ModelField[];
6
6
  readonly cards: readonly ModelCard[];
7
- readonly styling: string;
7
+ readonly styles: string;
8
8
  };
9
9
  export type ModelField = {
10
10
  readonly name: string;
@@ -33,7 +33,7 @@ export declare class ModelMap implements Iterable<Model> {
33
33
  readonly front: "{{Front}}";
34
34
  readonly back: "{{FrontSide}}<hr>{{Back}}";
35
35
  }];
36
- readonly styling: "";
36
+ readonly styles: "";
37
37
  };
38
38
  static readonly basicAndReversedCard: {
39
39
  readonly name: "Basic (and reversed card)";
@@ -55,7 +55,7 @@ export declare class ModelMap implements Iterable<Model> {
55
55
  readonly front: "{{Back}}";
56
56
  readonly back: "{{FrontSide}}<hr>{{Front}}";
57
57
  }];
58
- readonly styling: "";
58
+ readonly styles: "";
59
59
  };
60
60
  static readonly basicOptionalReversedCard: {
61
61
  readonly name: "Basic (optional reversed card)";
@@ -80,7 +80,7 @@ export declare class ModelMap implements Iterable<Model> {
80
80
  readonly front: "{{#Add Reverse}}{{Back}}{{/Add Reverse}}";
81
81
  readonly back: "{{FrontSide}}<hr>{{Front}}";
82
82
  }];
83
- readonly styling: "";
83
+ readonly styles: "";
84
84
  };
85
85
  static readonly basicTypeInAnswer: {
86
86
  readonly name: "Basic (type in the answer)";
@@ -98,7 +98,7 @@ export declare class ModelMap implements Iterable<Model> {
98
98
  readonly front: "{{Front}}<br>{{type:Back}}";
99
99
  readonly back: "{{Front}}<hr>{{Back}}";
100
100
  }];
101
- readonly styling: "";
101
+ readonly styles: "";
102
102
  };
103
103
  static readonly cloze: {
104
104
  readonly name: "Cloze";
@@ -116,7 +116,7 @@ export declare class ModelMap implements Iterable<Model> {
116
116
  readonly front: "{{cloze:Text}}";
117
117
  readonly back: "{{cloze:Text}}<br>{{Back Extra}}";
118
118
  }];
119
- readonly styling: "";
119
+ readonly styles: "";
120
120
  };
121
121
  static readonly internal: readonly Model[];
122
122
  constructor(initial?: Iterable<Model>);
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,QAAS,YAAW,QAAQ,CAAC,KAAK,CAAC;;IAC9C,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;MAgBM;IAE3B,MAAM,CAAC,QAAQ,CAAC,oBAAoB;;;;;;;;;;;;;;;;;;;;;MAqBT;IAE3B,MAAM,CAAC,QAAQ,CAAC,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;MAsBd;IAE3B,MAAM,CAAC,QAAQ,CAAC,iBAAiB;;;;;;;;;;;;;;;;;MAgBN;IAE3B,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;MAgBM;IAE3B,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,KAAK,EAAE,CAMxC;gBAIU,OAAO,GAAE,QAAQ,CAAC,KAAK,CAAqB;IAMxD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;IAIpC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKvB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,QAAS,YAAW,QAAQ,CAAC,KAAK,CAAC;;IAC9C,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;MAgBM;IAE3B,MAAM,CAAC,QAAQ,CAAC,oBAAoB;;;;;;;;;;;;;;;;;;;;;MAqBT;IAE3B,MAAM,CAAC,QAAQ,CAAC,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;MAsBd;IAE3B,MAAM,CAAC,QAAQ,CAAC,iBAAiB;;;;;;;;;;;;;;;;;MAgBN;IAE3B,MAAM,CAAC,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;MAgBM;IAE3B,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,KAAK,EAAE,CAMxC;gBAIU,OAAO,GAAE,QAAQ,CAAC,KAAK,CAAqB;IAMxD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;IAIpC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKvB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;CAGhC"}
package/dist/model.js CHANGED
@@ -14,7 +14,7 @@ export class ModelMap {
14
14
  back: "{{FrontSide}}<hr>{{Back}}",
15
15
  },
16
16
  ],
17
- styling: "",
17
+ styles: "",
18
18
  };
19
19
  static basicAndReversedCard = {
20
20
  name: "Basic (and reversed card)",
@@ -36,7 +36,7 @@ export class ModelMap {
36
36
  back: "{{FrontSide}}<hr>{{Front}}",
37
37
  },
38
38
  ],
39
- styling: "",
39
+ styles: "",
40
40
  };
41
41
  static basicOptionalReversedCard = {
42
42
  name: "Basic (optional reversed card)",
@@ -59,7 +59,7 @@ export class ModelMap {
59
59
  back: "{{FrontSide}}<hr>{{Front}}",
60
60
  },
61
61
  ],
62
- styling: "",
62
+ styles: "",
63
63
  };
64
64
  static basicTypeInAnswer = {
65
65
  name: "Basic (type in the answer)",
@@ -76,7 +76,7 @@ export class ModelMap {
76
76
  back: "{{Front}}<hr>{{Back}}",
77
77
  },
78
78
  ],
79
- styling: "",
79
+ styles: "",
80
80
  };
81
81
  static cloze = {
82
82
  name: "Cloze",
@@ -93,7 +93,7 @@ export class ModelMap {
93
93
  back: "{{cloze:Text}}<br>{{Back Extra}}",
94
94
  },
95
95
  ],
96
- styling: "",
96
+ styles: "",
97
97
  };
98
98
  static internal = [
99
99
  ModelMap.basic,
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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","sourcesContent":["export type Model = {\n readonly name: string;\n readonly id: number;\n readonly cloze: boolean;\n readonly fields: readonly ModelField[];\n readonly cards: readonly ModelCard[];\n readonly styles: string;\n};\n\nexport type ModelField = {\n readonly name: string;\n readonly required: boolean;\n};\n\nexport type ModelCard = {\n readonly name: string;\n readonly front: string;\n readonly back: string;\n};\n\nexport class ModelMap implements Iterable<Model> {\n static readonly basic = {\n name: \"Basic\",\n id: 1607392319,\n cloze: false,\n fields: [\n { name: \"Front\", required: true },\n { name: \"Back\", required: true },\n ],\n cards: [\n {\n name: \"Card 1\",\n front: \"{{Front}}\",\n back: \"{{FrontSide}}<hr>{{Back}}\",\n },\n ],\n styles: \"\",\n } as const satisfies Model;\n\n static readonly basicAndReversedCard = {\n name: \"Basic (and reversed card)\",\n id: 1607392320,\n cloze: false,\n fields: [\n { name: \"Front\", required: true },\n { name: \"Back\", required: true },\n ],\n cards: [\n {\n name: \"Card 1\",\n front: \"{{Front}}\",\n back: \"{{FrontSide}}<hr>{{Back}}\",\n },\n {\n name: \"Card 2\",\n front: \"{{Back}}\",\n back: \"{{FrontSide}}<hr>{{Front}}\",\n },\n ],\n styles: \"\",\n } as const satisfies Model;\n\n static readonly basicOptionalReversedCard = {\n name: \"Basic (optional reversed card)\",\n id: 1607392321,\n cloze: false,\n fields: [\n { name: \"Front\", required: true },\n { name: \"Back\", required: true },\n { name: \"Add Reverse\", required: false },\n ],\n cards: [\n {\n name: \"Card 1\",\n front: \"{{Front}}\",\n back: \"{{FrontSide}}<hr>{{Back}}\",\n },\n {\n name: \"Card 2\",\n front: \"{{#Add Reverse}}{{Back}}{{/Add Reverse}}\",\n back: \"{{FrontSide}}<hr>{{Front}}\",\n },\n ],\n styles: \"\",\n } as const satisfies Model;\n\n static readonly basicTypeInAnswer = {\n name: \"Basic (type in the answer)\",\n id: 1607392322,\n cloze: false,\n fields: [\n { name: \"Front\", required: true },\n { name: \"Back\", required: true },\n ],\n cards: [\n {\n name: \"Card 1\",\n front: \"{{Front}}<br>{{type:Back}}\",\n back: \"{{Front}}<hr>{{Back}}\",\n },\n ],\n styles: \"\",\n } as const satisfies Model;\n\n static readonly cloze = {\n name: \"Cloze\",\n id: 1607392323,\n cloze: true,\n fields: [\n { name: \"Text\", required: true },\n { name: \"Back Extra\", required: false },\n ],\n cards: [\n {\n name: \"Cloze\",\n front: \"{{cloze:Text}}\",\n back: \"{{cloze:Text}}<br>{{Back Extra}}\",\n },\n ],\n styles: \"\",\n } as const satisfies Model;\n\n static readonly internal: readonly Model[] = [\n ModelMap.basic,\n ModelMap.basicAndReversedCard,\n ModelMap.basicOptionalReversedCard,\n ModelMap.basicTypeInAnswer,\n ModelMap.cloze,\n ];\n\n readonly #map = new Map<string, Model>();\n\n constructor(initial: Iterable<Model> = ModelMap.internal) {\n for (const model of initial) {\n this.add(model);\n }\n }\n\n [Symbol.iterator](): Iterator<Model> {\n return this.#map.values();\n }\n\n add(model: Model): this {\n this.#map.set(model.name.toLowerCase(), model);\n return this;\n }\n\n has(name: string): boolean {\n return this.#map.has(name.toLowerCase());\n }\n\n get(name: string): Model | null {\n return this.#map.get(name.toLowerCase()) ?? null;\n }\n}\n"]}
package/dist/nodes.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type NoteNode } from "@notatki/parser";
1
2
  export declare const loc: {
2
3
  readonly source: "<unknown>";
3
4
  readonly start: {
@@ -11,4 +12,14 @@ export declare const loc: {
11
12
  readonly column: 0;
12
13
  };
13
14
  };
15
+ export type NoteMaker = {
16
+ type(type: string): NoteMaker;
17
+ deck(deck: string): NoteMaker;
18
+ tags(tags: string): NoteMaker;
19
+ property(name: string, value: string): NoteMaker;
20
+ id(id: string): NoteMaker;
21
+ field(name: string, value: string): NoteMaker;
22
+ make(): NoteNode;
23
+ };
24
+ export declare function newNote(): NoteMaker;
14
25
  //# sourceMappingURL=nodes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG;;;;;;;;;;;;CAIkB,CAAC"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,QAAQ,EAAqB,MAAM,iBAAiB,CAAC;AAEvG,eAAO,MAAM,GAAG;;;;;;;;;;;;CAIkB,CAAC;AAEnC,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,IAAI,IAAI,QAAQ,CAAC;CAClB,CAAC;AAEF,wBAAgB,OAAO,IAAI,SAAS,CA8CnC"}
package/dist/nodes.js CHANGED
@@ -4,4 +4,51 @@ export const loc = {
4
4
  start: { offset: 0, line: 0, column: 0 },
5
5
  end: { offset: 0, line: 0, column: 0 },
6
6
  };
7
+ export function newNote() {
8
+ const properties = [];
9
+ const fields = [];
10
+ const maker = {
11
+ type(type) {
12
+ maker.property("type", type);
13
+ return maker;
14
+ },
15
+ deck(deck) {
16
+ maker.property("deck", deck);
17
+ return maker;
18
+ },
19
+ tags(tags) {
20
+ maker.property("tags", tags);
21
+ return maker;
22
+ },
23
+ property(name, value) {
24
+ properties.push({
25
+ name: { text: name, loc },
26
+ value: { text: value, loc },
27
+ loc,
28
+ });
29
+ return maker;
30
+ },
31
+ id(id) {
32
+ maker.field("id", id);
33
+ return maker;
34
+ },
35
+ field(name, value) {
36
+ fields.push({
37
+ name: { text: name, loc },
38
+ value: { text: value, loc },
39
+ loc,
40
+ });
41
+ return maker;
42
+ },
43
+ make() {
44
+ return {
45
+ properties: [...properties],
46
+ fields: [...fields],
47
+ end: { text: "~~~", loc },
48
+ loc,
49
+ };
50
+ },
51
+ };
52
+ return maker;
53
+ }
7
54
  //# sourceMappingURL=nodes.js.map
package/dist/nodes.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACxC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;CACN,CAAC"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwE,MAAM,iBAAiB,CAAC;AAEvG,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACxC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;CACN,CAAC;AAYnC,MAAM,UAAU,OAAO;IACrB,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAc;QACvB,IAAI,CAAC,IAAY;YACf,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAY;YACf,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,IAAY;YACf,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,QAAQ,CAAC,IAAY,EAAE,KAAa;YAClC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC3B,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,EAAE,CAAC,EAAU;YACX,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,IAAY,EAAE,KAAa;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;gBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;gBAC3B,GAAG;aACJ,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI;YACF,OAAO;gBACL,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC;gBAC3B,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;gBACnB,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;gBACzB,GAAG;aACJ,CAAC;QACJ,CAAC;KACF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { type FieldNode, type LocationRange, type NoteNode, type PropertyNode } from \"@notatki/parser\";\n\nexport const loc = {\n source: \"<unknown>\",\n start: { offset: 0, line: 0, column: 0 },\n end: { offset: 0, line: 0, column: 0 },\n} as const satisfies LocationRange;\n\nexport type NoteMaker = {\n type(type: string): NoteMaker;\n deck(deck: string): NoteMaker;\n tags(tags: string): NoteMaker;\n property(name: string, value: string): NoteMaker;\n id(id: string): NoteMaker;\n field(name: string, value: string): NoteMaker;\n make(): NoteNode;\n};\n\nexport function newNote(): NoteMaker {\n const properties: PropertyNode[] = [];\n const fields: FieldNode[] = [];\n const maker: NoteMaker = {\n type(type: string): NoteMaker {\n maker.property(\"type\", type);\n return maker;\n },\n deck(deck: string): NoteMaker {\n maker.property(\"deck\", deck);\n return maker;\n },\n tags(tags: string): NoteMaker {\n maker.property(\"tags\", tags);\n return maker;\n },\n property(name: string, value: string) {\n properties.push({\n name: { text: name, loc },\n value: { text: value, loc },\n loc,\n });\n return maker;\n },\n id(id: string) {\n maker.field(\"id\", id);\n return maker;\n },\n field(name: string, value: string) {\n fields.push({\n name: { text: name, loc },\n value: { text: value, loc },\n loc,\n });\n return maker;\n },\n make(): NoteNode {\n return {\n properties: [...properties],\n fields: [...fields],\n end: { text: \"~~~\", loc },\n loc,\n };\n },\n };\n return maker;\n}\n"]}
@@ -134,7 +134,7 @@ export class NoteParser {
134
134
  cloze: node.cloze != null,
135
135
  fields,
136
136
  cards,
137
- styling: node.styling?.text ?? "",
137
+ styles: node.styles?.text ?? "",
138
138
  });
139
139
  }
140
140
  parseNotes(path, text) {
@@ -1 +1 @@
1
- {"version":3,"file":"note-parser.js","sourceRoot":"","sources":["../src/note-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"note-parser.js","sourceRoot":"","sources":["../src/note-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type LocationRange,\n type ModelNode,\n type NoteNode,\n parseModelList,\n parseNoteList,\n SyntaxError,\n type Token,\n} from \"@notatki/parser\";\nimport { type Model, type ModelCard, type ModelField, ModelMap } from \"./model.js\";\nimport { Note, NoteList } from \"./note.js\";\n\nconst unknown = {\n source: \"<unknown>\",\n start: { offset: 0, line: 0, column: 0 },\n end: { offset: 0, line: 0, column: 0 },\n} as const satisfies LocationRange;\n\nexport type NoteError = {\n message: string;\n location: LocationRange;\n};\n\nexport class ParseError extends Error {\n errors: readonly NoteError[];\n\n constructor(errors: Iterable<NoteError>) {\n super();\n this.name = \"ParseError\";\n this.message = \"Note parsing error\";\n this.errors = [...errors];\n }\n}\n\ntype ParseState = {\n type: Model;\n deck: string;\n tags: string;\n};\n\nexport class NoteParser {\n readonly #notes: NoteList;\n readonly #errors: NoteError[];\n\n constructor(notes = new NoteList()) {\n this.#notes = notes;\n this.#errors = [];\n }\n\n get notes(): NoteList {\n return this.#notes;\n }\n\n get errors(): readonly NoteError[] {\n return this.#errors;\n }\n\n checkErrors(): void | never {\n if (this.#errors.length > 0) {\n throw new ParseError(this.#errors);\n }\n }\n\n checkDuplicates() {\n const byId = new Map<string, Note[]>();\n const byTitle = new Map<string, Note[]>();\n for (const note of this.#notes) {\n const { id } = note;\n if (id) {\n let list = byId.get(id);\n if (list == null) {\n byId.set(id, (list = []));\n }\n list.push(note);\n }\n const { value } = note.first;\n const title = value.trim().replaceAll(/\\s+/g, \" \");\n if (title) {\n let list = byTitle.get(title);\n if (list == null) {\n byTitle.set(title, (list = []));\n }\n list.push(note);\n }\n }\n for (const [key, list] of byId) {\n if (list.length > 1) {\n for (const note of list) {\n const { node } = note.get(\"id\");\n this.#errors.push({ message: `Duplicate ID: \"${key}\"`, location: node?.value.loc ?? unknown });\n }\n }\n }\n for (const [key, list] of byTitle) {\n if (list.length > 1) {\n for (const note of list) {\n const { node } = note.first;\n this.#errors.push({ message: `Duplicate note: \"${key}\"`, location: node?.value.loc ?? unknown });\n }\n }\n }\n }\n\n parseModels(path: string, text: string): this {\n this.walkModelNodes(this.parseModelNodes(path, text));\n return this;\n }\n\n parseModelNodes(path: string, text: string): ModelNode[] {\n try {\n return parseModelList(text, path);\n } catch (err) {\n if (err instanceof SyntaxError) {\n const { message, location } = err;\n this.#errors.push({ message, location });\n } else {\n throw err;\n }\n return [];\n }\n }\n\n walkModelNodes(nodes: readonly ModelNode[]) {\n for (const node of nodes) {\n this.walkModelNode(node);\n }\n }\n\n walkModelNode(node: ModelNode) {\n if (this.#notes.types.has(node.name.text)) {\n this.#errors.push({ message: `Duplicate model: \"${node.name.text}\"`, location: node.name.loc });\n return;\n }\n\n const fields: ModelField[] = [];\n const seenFields = new SeenNames();\n for (const fieldNode of node.fields) {\n const { name, required } = fieldNode;\n if (seenFields.seen(name)) {\n this.#errors.push({ message: `Duplicate field: \"${name.text}\"`, location: name.loc });\n return;\n }\n fields.push({\n name: name.text,\n required,\n });\n }\n\n const cards: ModelCard[] = [];\n const seenCards = new SeenNames();\n for (const cardNode of node.cards) {\n const { name, front, back } = cardNode;\n if (seenCards.seen(name)) {\n this.#errors.push({ message: `Duplicate card: \"${name.text}\"`, location: name.loc });\n return;\n }\n cards.push({\n name: name.text,\n front: front?.text ?? \"\",\n back: back?.text ?? \"\",\n });\n }\n\n this.#notes.types.add({\n name: node.name.text,\n id: node.id.value,\n cloze: node.cloze != null,\n fields,\n cards,\n styles: node.styles?.text ?? \"\",\n });\n }\n\n parseNotes(path: string, text: string): this {\n this.walkNoteNodes(this.parseNoteNodes(path, text));\n return this;\n }\n\n parseNoteNodes(path: string, text: string): NoteNode[] {\n try {\n return parseNoteList(text, path);\n } catch (err) {\n if (err instanceof SyntaxError) {\n const { message, location } = err;\n this.#errors.push({ message, location });\n } else {\n throw err;\n }\n return [];\n }\n }\n\n walkNoteNodes(\n nodes: readonly NoteNode[],\n state: ParseState = {\n type: ModelMap.basic,\n deck: \"\",\n tags: \"\",\n },\n ) {\n for (const noteNode of nodes) {\n this.walkNoteNode(noteNode, state);\n }\n }\n\n walkNoteNode(noteNode: NoteNode, state: ParseState) {\n const seen = new SeenNames();\n\n // Set note properties.\n for (const { name, value } of noteNode.properties) {\n if (seen.seen(name)) {\n this.#errors.push({ message: `Duplicate property: \"${name.text}\"`, location: name.loc });\n return;\n }\n\n switch (name.text) {\n case \"type\": {\n const type = this.#notes.types.get(value.text);\n if (type == null) {\n this.#errors.push({ message: `Unknown note type: \"${value.text}\"`, location: value.loc });\n return;\n }\n state.type = type;\n break;\n }\n case \"deck\": {\n state.deck = value.text;\n break;\n }\n case \"tags\": {\n state.tags = value.text;\n break;\n }\n }\n }\n\n const note = new Note(state.type);\n note.deck = state.deck;\n note.tags = state.tags;\n note.node = noteNode;\n\n // Set note fields.\n for (const fieldNode of noteNode.fields) {\n const { name, value } = fieldNode;\n\n if (seen.seen(name)) {\n this.#errors.push({ message: `Duplicate field: \"${name.text}\"`, location: name.loc });\n return;\n }\n\n if (note.has(name.text)) {\n const field = note.get(name.text);\n field.value = value.text;\n field.node = fieldNode;\n } else {\n this.#errors.push({ message: `Unknown field: \"${name.text}\"`, location: name.loc });\n return;\n }\n }\n\n this.#notes.add(note);\n }\n}\n\nclass SeenNames {\n readonly #set = new Set<string>();\n\n seen(name: Token): boolean {\n const key = name.text.toLowerCase();\n if (this.#set.has(key)) {\n return true;\n } else {\n this.#set.add(key);\n return false;\n }\n }\n}\n"]}
package/dist/note.d.ts CHANGED
@@ -25,7 +25,6 @@ export declare class Note implements Iterable<NoteField> {
25
25
  get first(): NoteField;
26
26
  get node(): NoteNode | null;
27
27
  set node(value: NoteNode | null);
28
- toNode(): NoteNode;
29
28
  static isIdField(fieldName: string): boolean;
30
29
  }
31
30
  export declare class NoteField {
@@ -37,6 +36,5 @@ export declare class NoteField {
37
36
  set value(value: string | null);
38
37
  get node(): FieldNode | null;
39
38
  set node(value: FieldNode | null);
40
- toNode(): FieldNode;
41
39
  }
42
40
  //# sourceMappingURL=note.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../src/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAqB,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGnE,qBAAa,QAAS,YAAW,QAAQ,CAAC,IAAI,CAAC;;gBAIjC,KAAK,WAAiB;IAKlC,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IAInC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAGtB;AAED,qBAAa,IAAK,YAAW,QAAQ,CAAC,SAAS,CAAC;;gBAQlC,IAAI,EAAE,KAAK;IAOvB,IAAI,IAAI,IAAI,KAAK,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE5B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE1B;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC;IAIxC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ/B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAIjC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAgBlD,IAAI,KAAK,IAAI,SAAS,CAMrB;IAED,IAAI,IAAI,IAAI,QAAQ,GAAG,IAAI,CAE1B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAE9B;IAED,MAAM,IAAI,QAAQ;IAsBlB,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG7C;AAED,qBAAa,SAAS;;gBAKR,IAAI,EAAE,UAAU;IAI5B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,IAAI,CAE3B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAE/B;IAED,MAAM,IAAI,SAAS;CAOpB"}
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../src/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnE,qBAAa,QAAS,YAAW,QAAQ,CAAC,IAAI,CAAC;;gBAIjC,KAAK,WAAiB;IAKlC,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;IAInC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAGtB;AAED,qBAAa,IAAK,YAAW,QAAQ,CAAC,SAAS,CAAC;;gBAQlC,IAAI,EAAE,KAAK;IAOvB,IAAI,IAAI,IAAI,KAAK,CAEhB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE5B;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE1B;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC;IAIxC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ/B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAIjC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAgBlD,IAAI,KAAK,IAAI,SAAS,CAMrB;IAED,IAAI,IAAI,IAAI,QAAQ,GAAG,IAAI,CAE1B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,EAE9B;IAED,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG7C;AAED,qBAAa,SAAS;;gBAKR,IAAI,EAAE,UAAU;IAI5B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,IAAI,CAE3B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAE/B;CACF"}
package/dist/note.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import {} from "@notatki/parser";
2
2
  import { ModelMap } from "./model.js";
3
- import { loc } from "./nodes.js";
4
3
  export class NoteList {
5
4
  #types;
6
5
  #notes;
@@ -95,27 +94,6 @@ export class Note {
95
94
  set node(value) {
96
95
  this.#node = value;
97
96
  }
98
- toNode() {
99
- const properties = [];
100
- properties.push({ name: { text: "type", loc }, value: { text: this.#type.name, loc }, loc });
101
- properties.push({ name: { text: "deck", loc }, value: { text: this.#deck, loc }, loc });
102
- properties.push({ name: { text: "tags", loc }, value: { text: this.#tags, loc }, loc });
103
- const fields = [];
104
- if (this.#id.value) {
105
- fields.push(this.#id.toNode());
106
- }
107
- for (const field of this.#fields.values()) {
108
- if (field.value) {
109
- fields.push(field.toNode());
110
- }
111
- }
112
- return {
113
- properties,
114
- fields,
115
- end: { text: "~~~", loc },
116
- loc,
117
- };
118
- }
119
97
  static isIdField(fieldName) {
120
98
  return fieldName.toLowerCase() === "id";
121
99
  }
@@ -145,12 +123,5 @@ export class NoteField {
145
123
  set node(value) {
146
124
  this.#node = value;
147
125
  }
148
- toNode() {
149
- return {
150
- name: { text: this.#type.name.toLowerCase(), loc },
151
- value: { text: this.#value, loc },
152
- loc,
153
- };
154
- }
155
126
  }
156
127
  //# sourceMappingURL=note.js.map
package/dist/note.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"note.js","sourceRoot":"","sources":["../src/note.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../src/note.ts"],"names":[],"mappings":"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","sourcesContent":["import { type FieldNode, type NoteNode } from \"@notatki/parser\";\nimport { type Model, type ModelField, ModelMap } from \"./model.js\";\n\nexport class NoteList implements Iterable<Note> {\n readonly #types: ModelMap;\n readonly #notes: Note[];\n\n constructor(types = new ModelMap()) {\n this.#types = types;\n this.#notes = [];\n }\n\n get types(): ModelMap {\n return this.#types;\n }\n\n [Symbol.iterator](): Iterator<Note> {\n return this.#notes[Symbol.iterator]();\n }\n\n get length(): number {\n return this.#notes.length;\n }\n\n add(note: Note): void {\n this.#notes.push(note);\n }\n}\n\nexport class Note implements Iterable<NoteField> {\n readonly #type: Model;\n #deck: string = \"\";\n #tags: string = \"\";\n readonly #id = new NoteField({ name: \"ID\", required: false });\n readonly #fields = new Map<string, NoteField>();\n #node: NoteNode | null = null;\n\n constructor(type: Model) {\n this.#type = type;\n for (const field of type.fields) {\n this.#fields.set(field.name.toLowerCase(), new NoteField(field));\n }\n }\n\n get type(): Model {\n return this.#type;\n }\n\n get deck(): string {\n return this.#deck;\n }\n\n set deck(value: string | null) {\n this.#deck = value ?? \"\";\n }\n\n get tags(): string {\n return this.#tags;\n }\n\n set tags(value: string | null) {\n this.#tags = value ?? \"\";\n }\n\n get id(): string {\n return this.#id.value;\n }\n\n set id(value: string | null) {\n this.#id.value = value;\n }\n\n [Symbol.iterator](): Iterator<NoteField> {\n return this.#fields.values();\n }\n\n has(fieldName: string): boolean {\n const key = fieldName.toLowerCase();\n if (key === \"id\") {\n return true;\n }\n return this.#fields.has(key);\n }\n\n get(fieldName: string): NoteField {\n return this.#getField(fieldName);\n }\n\n set(fieldName: string, value: string | null): void {\n this.#getField(fieldName).value = value;\n }\n\n #getField(fieldName: string): NoteField {\n const key = fieldName.toLowerCase();\n if (key === \"id\") {\n return this.#id;\n }\n const field = this.#fields.get(key);\n if (field != null) {\n return field;\n }\n throw new Error(`Unknown field: \"${fieldName}\"`);\n }\n\n get first(): NoteField {\n const [first] = this.#fields.values();\n if (first != null) {\n return first;\n }\n throw new Error(\"No fields\");\n }\n\n get node(): NoteNode | null {\n return this.#node;\n }\n\n set node(value: NoteNode | null) {\n this.#node = value;\n }\n\n static isIdField(fieldName: string): boolean {\n return fieldName.toLowerCase() === \"id\";\n }\n}\n\nexport class NoteField {\n readonly #type: ModelField;\n #value: string = \"\";\n #node: FieldNode | null = null;\n\n constructor(type: ModelField) {\n this.#type = type;\n }\n\n get name(): string {\n return this.#type.name;\n }\n\n get required(): boolean {\n return this.#type.required ?? false;\n }\n\n get value(): string {\n return this.#value;\n }\n\n set value(value: string | null) {\n this.#value = value ?? \"\";\n }\n\n get node(): FieldNode | null {\n return this.#node;\n }\n\n set node(value: FieldNode | null) {\n this.#node = value;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,MAAM;IACR,MAAM,GAAa,EAAE,CAAC;IAC/B,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,GAAkB,IAAI,CAAC;IAE5B,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,MAAM;IACR,MAAM,GAAa,EAAE,CAAC;IAC/B,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,GAAkB,IAAI,CAAC;IAE5B,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;CACF","sourcesContent":["export class Output {\n readonly #lines: string[] = [];\n #separate = false;\n #text: string | null = null;\n\n separate(): void {\n if (this.#lines.length > 0) {\n this.#separate = true;\n this.#text = null;\n }\n }\n\n print(line: string): void {\n if (line.length > 0) {\n if (this.#separate) {\n this.#lines.push(\"\");\n this.#separate = false;\n }\n this.#lines.push(line);\n this.#text = null;\n }\n }\n\n toString(): string {\n return (this.#text ??= this.#lines.join(\"\\n\") + \"\\n\");\n }\n}\n"]}