obsidian-mcp-server 3.7.2 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/AGENTS.md +20 -15
  2. package/CLAUDE.md +20 -15
  3. package/README.md +31 -19
  4. package/changelog/3.8.x/3.8.0.md +38 -0
  5. package/changelog/3.9.x/3.9.0.md +43 -0
  6. package/changelog/template.md +10 -3
  7. package/dist/config/server-config.d.ts +1 -0
  8. package/dist/config/server-config.d.ts.map +1 -1
  9. package/dist/config/server-config.js +30 -19
  10. package/dist/config/server-config.js.map +1 -1
  11. package/dist/index.d.ts +3 -3
  12. package/dist/index.js +27 -15
  13. package/dist/index.js.map +1 -1
  14. package/dist/instructions.d.ts +4 -3
  15. package/dist/instructions.d.ts.map +1 -1
  16. package/dist/instructions.js +23 -12
  17. package/dist/instructions.js.map +1 -1
  18. package/dist/mcp-server/resources/definitions/index.d.ts +2 -2
  19. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts +3 -2
  20. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.d.ts.map +1 -1
  21. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js +6 -5
  22. package/dist/mcp-server/resources/definitions/obsidian-tags.resource.js.map +1 -1
  23. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.d.ts +2 -2
  24. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js +2 -2
  25. package/dist/mcp-server/resources/definitions/obsidian-vault-note.resource.js.map +1 -1
  26. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts +15 -6
  27. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.d.ts.map +1 -1
  28. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js +24 -12
  29. package/dist/mcp-server/tools/definitions/_shared/suggest-paths.js.map +1 -1
  30. package/dist/mcp-server/tools/definitions/index.d.ts +250 -230
  31. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  32. package/dist/mcp-server/tools/definitions/index.js +6 -4
  33. package/dist/mcp-server/tools/definitions/index.js.map +1 -1
  34. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts +8 -2
  35. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.d.ts.map +1 -1
  36. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js +10 -3
  37. package/dist/mcp-server/tools/definitions/obsidian-append-to-note.tool.js.map +1 -1
  38. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts +7 -6
  39. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.d.ts.map +1 -1
  40. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js +7 -7
  41. package/dist/mcp-server/tools/definitions/obsidian-delete-note.tool.js.map +1 -1
  42. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts +2 -2
  43. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.d.ts.map +1 -1
  44. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js +8 -5
  45. package/dist/mcp-server/tools/definitions/obsidian-get-note.tool.js.map +1 -1
  46. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts +6 -6
  47. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.d.ts.map +1 -1
  48. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js +8 -8
  49. package/dist/mcp-server/tools/definitions/obsidian-list-notes.tool.js.map +1 -1
  50. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.d.ts +4 -4
  51. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js +7 -7
  52. package/dist/mcp-server/tools/definitions/obsidian-list-tags.tool.js.map +1 -1
  53. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts +2 -2
  54. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.d.ts.map +1 -1
  55. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js +2 -2
  56. package/dist/mcp-server/tools/definitions/obsidian-manage-frontmatter.tool.js.map +1 -1
  57. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts +2 -2
  58. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.d.ts.map +1 -1
  59. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js +2 -2
  60. package/dist/mcp-server/tools/definitions/obsidian-manage-tags.tool.js.map +1 -1
  61. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.d.ts +2 -2
  62. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js +3 -3
  63. package/dist/mcp-server/tools/definitions/obsidian-open-in-ui.tool.js.map +1 -1
  64. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts +8 -2
  65. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.d.ts.map +1 -1
  66. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js +10 -3
  67. package/dist/mcp-server/tools/definitions/obsidian-patch-note.tool.js.map +1 -1
  68. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.d.ts +2 -2
  69. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js +2 -2
  70. package/dist/mcp-server/tools/definitions/obsidian-replace-in-note.tool.js.map +1 -1
  71. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts +185 -35
  72. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.d.ts.map +1 -1
  73. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js +145 -82
  74. package/dist/mcp-server/tools/definitions/obsidian-search-notes.tool.js.map +1 -1
  75. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts +8 -2
  76. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.d.ts.map +1 -1
  77. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js +12 -5
  78. package/dist/mcp-server/tools/definitions/obsidian-write-note.tool.js.map +1 -1
  79. package/dist/services/obsidian/jsonlogic-evaluator.d.ts +33 -8
  80. package/dist/services/obsidian/jsonlogic-evaluator.d.ts.map +1 -1
  81. package/dist/services/obsidian/jsonlogic-evaluator.js +171 -32
  82. package/dist/services/obsidian/jsonlogic-evaluator.js.map +1 -1
  83. package/dist/services/obsidian/jsonlogic-worker.d.ts +6 -5
  84. package/dist/services/obsidian/jsonlogic-worker.d.ts.map +1 -1
  85. package/dist/services/obsidian/jsonlogic-worker.js +7 -5
  86. package/dist/services/obsidian/jsonlogic-worker.js.map +1 -1
  87. package/dist/services/obsidian/obsidian-service.d.ts +90 -36
  88. package/dist/services/obsidian/obsidian-service.d.ts.map +1 -1
  89. package/dist/services/obsidian/obsidian-service.js +748 -248
  90. package/dist/services/obsidian/obsidian-service.js.map +1 -1
  91. package/dist/services/obsidian/patch-instruction.d.ts +4 -1
  92. package/dist/services/obsidian/patch-instruction.d.ts.map +1 -1
  93. package/dist/services/obsidian/patch-instruction.js +5 -2
  94. package/dist/services/obsidian/patch-instruction.js.map +1 -1
  95. package/dist/services/obsidian/path-policy.d.ts +67 -23
  96. package/dist/services/obsidian/path-policy.d.ts.map +1 -1
  97. package/dist/services/obsidian/path-policy.js +183 -80
  98. package/dist/services/obsidian/path-policy.js.map +1 -1
  99. package/dist/services/obsidian/section-extractor.d.ts +62 -1
  100. package/dist/services/obsidian/section-extractor.d.ts.map +1 -1
  101. package/dist/services/obsidian/section-extractor.js +387 -51
  102. package/dist/services/obsidian/section-extractor.js.map +1 -1
  103. package/dist/services/obsidian/simple-search.d.ts +62 -0
  104. package/dist/services/obsidian/simple-search.d.ts.map +1 -0
  105. package/dist/services/obsidian/simple-search.js +264 -0
  106. package/dist/services/obsidian/simple-search.js.map +1 -0
  107. package/manifest.json +12 -4
  108. package/package.json +9 -9
  109. package/server.json +23 -11
  110. package/skills/obsidian-guide/SKILL.md +61 -0
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * @fileoverview Server-side JSONLogic evaluation for searches scoped by
3
- * OBSIDIAN_READ_PATHS. The caller's tree runs here, on a worker thread, over
4
- * the readable notes alone, instead of upstream over the whole vault: no hit,
5
- * result, or error reads a note outside the read scope. The notes' link
6
- * fields arrive cut to readable entries, but which note a link resolves to is
7
- * still Obsidian's vault-wide resolution (#165).
3
+ * OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS. The caller's tree runs here, on
4
+ * a worker thread, over the readable notes alone, instead of upstream over the
5
+ * whole vault: no hit, result, or error reads a note outside the read scope.
6
+ * The notes carry no link fields: which note a link resolves to is Obsidian's
7
+ * vault-wide resolution, so `links`, `backlinks`, and `unresolvedLinks` would
8
+ * change with notes outside the scope (#165). A tree that names one fails with
9
+ * `link_fields_unavailable` before the search makes a request.
8
10
  *
9
11
  * Every evaluation is bounded — tree depth, work budgets the worker enforces
10
12
  * (per note for what each note's evaluation builds, per search for what kept
@@ -63,6 +65,27 @@ export declare function readsContent(logic: unknown): boolean;
63
65
  * anything recursive (serialization, the worker hand-off, evaluation).
64
66
  */
65
67
  export declare function assertTreeDepth(logic: unknown): void;
68
+ /**
69
+ * Reject a tree that reads a link field of the note through `var`, `missing`,
70
+ * or `missing_some`. A scoped search's notes carry none, so such a read would
71
+ * see `null` on every note: `{"in": [X, {"var": "backlinks"}]}` would answer
72
+ * "nothing links here", and `{"missing": ["backlinks"]}` would report the
73
+ * field missing everywhere. Only a key fixed by the tree is caught —
74
+ * `"links"`, `"backlinks.0"`, the array form with a default — while a computed
75
+ * key reads `null`, and a `var` or `missing` applied to the elements a `map`,
76
+ * `filter`, `reduce`, `all`, `some`, or `none` walks reads the element, not
77
+ * the note. An object of other than one key is data json-logic-js never
78
+ * evaluates. Iterative; the tree's depth is already held to
79
+ * {@link MAX_TREE_DEPTH}.
80
+ */
81
+ export declare function assertNoLinkFields(logic: unknown): void;
82
+ /** One search's evaluation; see {@link createJsonLogicEvaluation}. */
83
+ export interface JsonLogicEvaluation {
84
+ /** Terminate the worker, if one started. Idempotent; the search calls it however it ends. */
85
+ close(): Promise<void>;
86
+ /** Evaluate the next batch of readable notes, in vault order. */
87
+ evaluate(notes: NoteContext[]): Promise<StructuredSearchHit[]>;
88
+ }
66
89
  /**
67
90
  * One search's evaluation of `logic`. `evaluate` takes the readable notes in
68
91
  * vault order, all at once or in successive batches; the budget for kept
@@ -73,11 +96,13 @@ export declare function assertTreeDepth(logic: unknown): void;
73
96
  * `logic_invalid` when the tree fails on a note, `logic_too_costly` past
74
97
  * either budget or the deadline, `note_too_deep` for a note the worker
75
98
  * hand-off cannot carry, and the abort reason when `signal` aborts first.
99
+ *
100
+ * One worker evaluates every batch: started with the first batch that holds a
101
+ * note, it is terminated when a batch fails, passes a bound, or is cancelled,
102
+ * and otherwise by `close`.
76
103
  */
77
104
  export declare function createJsonLogicEvaluation(logic: unknown, opts?: {
78
105
  signal?: AbortSignal | undefined;
79
106
  deadlineMs?: number;
80
- }): {
81
- evaluate: (notes: NoteContext[]) => Promise<StructuredSearchHit[]>;
82
- };
107
+ }): JsonLogicEvaluation;
83
108
  //# sourceMappingURL=jsonlogic-evaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonlogic-evaluator.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAyC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,WAAa,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,WAAa,CAAC;AAE3C,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAW7C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAMpD;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE;IAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAA;CAAE,CA+BxE"}
1
+ {"version":3,"file":"jsonlogic-evaluator.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAyC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,OAAQ,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,WAAa,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,WAAa,CAAC;AAE3C,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAW7C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAMpD;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA2BvD;AAsED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,6FAA6F;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CAChE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACnE,mBAAmB,CAqFrB"}
@@ -1,10 +1,12 @@
1
1
  /**
2
2
  * @fileoverview Server-side JSONLogic evaluation for searches scoped by
3
- * OBSIDIAN_READ_PATHS. The caller's tree runs here, on a worker thread, over
4
- * the readable notes alone, instead of upstream over the whole vault: no hit,
5
- * result, or error reads a note outside the read scope. The notes' link
6
- * fields arrive cut to readable entries, but which note a link resolves to is
7
- * still Obsidian's vault-wide resolution (#165).
3
+ * OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS. The caller's tree runs here, on
4
+ * a worker thread, over the readable notes alone, instead of upstream over the
5
+ * whole vault: no hit, result, or error reads a note outside the read scope.
6
+ * The notes carry no link fields: which note a link resolves to is Obsidian's
7
+ * vault-wide resolution, so `links`, `backlinks`, and `unresolvedLinks` would
8
+ * change with notes outside the scope (#165). A tree that names one fails with
9
+ * `link_fields_unavailable` before the search makes a request.
8
10
  *
9
11
  * Every evaluation is bounded — tree depth, work budgets the worker enforces
10
12
  * (per note for what each note's evaluation builds, per search for what kept
@@ -74,6 +76,108 @@ export function assertTreeDepth(logic) {
74
76
  throw tooCostly(`The JSONLogic tree nests deeper than ${MAX_TREE_DEPTH.toLocaleString('en-US')} levels.`);
75
77
  }
76
78
  }
79
+ /** The note fields a scoped search leaves out: each follows Obsidian's link resolution across the whole vault. */
80
+ const LINK_FIELDS = new Set(['links', 'backlinks', 'unresolvedLinks']);
81
+ /**
82
+ * json-logic-js operations that apply their second operand to each element of
83
+ * the first (`reduce`: to `{ current, accumulator }`) rather than to the note.
84
+ */
85
+ const PER_ELEMENT_OPERATIONS = new Set([
86
+ 'map',
87
+ 'filter',
88
+ 'reduce',
89
+ 'all',
90
+ 'some',
91
+ 'none',
92
+ ]);
93
+ /**
94
+ * Reject a tree that reads a link field of the note through `var`, `missing`,
95
+ * or `missing_some`. A scoped search's notes carry none, so such a read would
96
+ * see `null` on every note: `{"in": [X, {"var": "backlinks"}]}` would answer
97
+ * "nothing links here", and `{"missing": ["backlinks"]}` would report the
98
+ * field missing everywhere. Only a key fixed by the tree is caught —
99
+ * `"links"`, `"backlinks.0"`, the array form with a default — while a computed
100
+ * key reads `null`, and a `var` or `missing` applied to the elements a `map`,
101
+ * `filter`, `reduce`, `all`, `some`, or `none` walks reads the element, not
102
+ * the note. An object of other than one key is data json-logic-js never
103
+ * evaluates. Iterative; the tree's depth is already held to
104
+ * {@link MAX_TREE_DEPTH}.
105
+ */
106
+ export function assertNoLinkFields(logic) {
107
+ const pending = [logic];
108
+ while (pending.length > 0) {
109
+ const node = pending.pop();
110
+ if (Array.isArray(node)) {
111
+ for (const item of node)
112
+ pending.push(item);
113
+ continue;
114
+ }
115
+ if (node === null || typeof node !== 'object' || Object.keys(node).length !== 1)
116
+ continue;
117
+ const [[operation, raw]] = Object.entries(node);
118
+ const operands = Array.isArray(raw) ? raw : [raw];
119
+ const keys = operation === 'var'
120
+ ? [raw]
121
+ : operation === 'missing'
122
+ ? missingKeys(raw)
123
+ : operation === 'missing_some'
124
+ ? missingKeys(operands[1])
125
+ : [];
126
+ for (const key of keys) {
127
+ const field = varField(key);
128
+ if (field !== undefined && LINK_FIELDS.has(field))
129
+ throw linkFieldsUnavailable(field);
130
+ }
131
+ for (const [index, operand] of operands.entries()) {
132
+ if (index !== 1 || !PER_ELEMENT_OPERATIONS.has(operation))
133
+ pending.push(operand);
134
+ }
135
+ }
136
+ }
137
+ /**
138
+ * The keys `missing` reads, each through `{"var": key}`, as json-logic-js
139
+ * picks them from its arguments: the first argument when it is an array,
140
+ * otherwise every argument. `missing_some` hands its second operand to
141
+ * `missing` the same way. None when a computed first argument leaves the
142
+ * choice to the note.
143
+ */
144
+ function missingKeys(raw) {
145
+ const args = Array.isArray(raw) ? raw : [raw];
146
+ if (Array.isArray(args[0]))
147
+ return args[0];
148
+ return staticValue(args[0]) === COMPUTED ? [] : args;
149
+ }
150
+ /** The note field `{"var": raw}` reads when the tree fixes its key; `undefined` otherwise. */
151
+ function varField(raw) {
152
+ return staticKey(Array.isArray(raw) ? raw[0] : raw)?.split('.')[0];
153
+ }
154
+ /**
155
+ * The key a `var` operand evaluates to when the tree alone fixes it, as the
156
+ * worker's `var` reads it (`String(key)`); `undefined` when it is computed or
157
+ * names the whole note. json-logic-js evaluates an array element by element,
158
+ * so a literal array is fixed when every element is, and returns an object of
159
+ * other than one key as it is.
160
+ */
161
+ function staticKey(operand) {
162
+ const value = staticValue(operand);
163
+ if (value === COMPUTED || value === undefined || value === null || value === '')
164
+ return;
165
+ return String(value);
166
+ }
167
+ const COMPUTED = Symbol('computed');
168
+ function staticValue(operand) {
169
+ if (Array.isArray(operand)) {
170
+ const values = operand.map(staticValue);
171
+ return values.includes(COMPUTED) ? COMPUTED : values;
172
+ }
173
+ if (operand !== null && typeof operand === 'object' && Object.keys(operand).length === 1) {
174
+ return COMPUTED;
175
+ }
176
+ return operand;
177
+ }
178
+ function linkFieldsUnavailable(field) {
179
+ return validationError(`The JSONLogic tree reads \`${field}\`, which a search under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS does not provide: \`links\`, \`backlinks\`, and \`unresolvedLinks\` follow Obsidian's link resolution across the whole vault.`, { reason: 'link_fields_unavailable' });
180
+ }
77
181
  /**
78
182
  * Deepest object/array nesting in `value`, which is level 1, measured until
79
183
  * it passes `limit`. Iterative, so it measures data too deep for any
@@ -102,12 +206,59 @@ function nestingDepth(value, limit = Number.POSITIVE_INFINITY) {
102
206
  * `logic_invalid` when the tree fails on a note, `logic_too_costly` past
103
207
  * either budget or the deadline, `note_too_deep` for a note the worker
104
208
  * hand-off cannot carry, and the abort reason when `signal` aborts first.
209
+ *
210
+ * One worker evaluates every batch: started with the first batch that holds a
211
+ * note, it is terminated when a batch fails, passes a bound, or is cancelled,
212
+ * and otherwise by `close`.
105
213
  */
106
214
  export function createJsonLogicEvaluation(logic, opts = {}) {
107
215
  const { signal, deadlineMs = EVALUATION_DEADLINE_MS } = opts;
108
216
  let keptUnitsLeft = KEPT_RESULT_UNITS;
109
217
  let msLeft = deadlineMs;
218
+ let worker;
219
+ /** The batch the worker is evaluating, settled by its reply, its failure, or its exit. */
220
+ let pending;
110
221
  const pastDeadline = () => tooCostly(`Evaluating the JSONLogic tree over the readable notes ran past ${deadlineMs / 1000} s.`);
222
+ const start = () => {
223
+ const started = new Worker(WORKER_URL);
224
+ started.on('message', (response) => pending?.resolve(response));
225
+ started.on('error', (err) => pending?.reject(err));
226
+ started.on('exit', (code) => {
227
+ pending?.reject(new Error(`JSONLogic worker exited with code ${code} before answering`));
228
+ if (worker === started)
229
+ worker = undefined;
230
+ });
231
+ return started;
232
+ };
233
+ const close = async () => {
234
+ const running = worker;
235
+ worker = undefined;
236
+ await running?.terminate();
237
+ };
238
+ /** Hand `request` to the worker and wait for its reply, the deadline, or the abort. */
239
+ const answer = async (request) => {
240
+ worker ??= start();
241
+ const { promise, resolve, reject } = Promise.withResolvers();
242
+ pending = { resolve, reject };
243
+ const timer = setTimeout(() => reject(pastDeadline()), msLeft);
244
+ const onAbort = () => reject(signal?.reason);
245
+ signal?.addEventListener('abort', onAbort, { once: true });
246
+ try {
247
+ worker.postMessage(request);
248
+ }
249
+ catch (err) {
250
+ // Rejected before the await below takes the promise, so the exit `close` raises settles nothing.
251
+ reject(handOffError(err, request.notes));
252
+ }
253
+ try {
254
+ return await promise;
255
+ }
256
+ finally {
257
+ pending = undefined;
258
+ clearTimeout(timer);
259
+ signal?.removeEventListener('abort', onAbort);
260
+ }
261
+ };
111
262
  return {
112
263
  async evaluate(notes) {
113
264
  if (notes.length === 0)
@@ -116,7 +267,19 @@ export function createJsonLogicEvaluation(logic, opts = {}) {
116
267
  if (msLeft <= 0)
117
268
  throw pastDeadline();
118
269
  const started = performance.now();
119
- const response = await runWorker({ logic, notes, keptUnits: keptUnitsLeft, noteUnits: NOTE_BUILD_UNITS }, msLeft, pastDeadline, signal);
270
+ let response;
271
+ try {
272
+ response = await answer({
273
+ logic,
274
+ notes,
275
+ keptUnits: keptUnitsLeft,
276
+ noteUnits: NOTE_BUILD_UNITS,
277
+ });
278
+ }
279
+ catch (err) {
280
+ await close();
281
+ throw err;
282
+ }
120
283
  msLeft -= performance.now() - started;
121
284
  if (response.ok) {
122
285
  keptUnitsLeft = response.keptUnitsLeft;
@@ -125,8 +288,10 @@ export function createJsonLogicEvaluation(logic, opts = {}) {
125
288
  result: JSON.parse(hit.json),
126
289
  }));
127
290
  }
291
+ await close();
128
292
  throw failureError(response);
129
293
  },
294
+ close,
130
295
  };
131
296
  }
132
297
  function failureError(response) {
@@ -142,32 +307,6 @@ function failureError(response) {
142
307
  return tooCostly(`The JSONLogic tree's results over the readable notes held more than the search's work budget of ${KEPT_RESULT_UNITS.toLocaleString('en-US')} units: each result over 1,024 characters pays for what it holds beyond its own note's size.`);
143
308
  }
144
309
  }
145
- /** One worker per batch, terminated however it ends. */
146
- async function runWorker(request, deadlineMs, pastDeadline, signal) {
147
- const worker = new Worker(WORKER_URL);
148
- const { promise, resolve, reject } = Promise.withResolvers();
149
- const timer = setTimeout(() => reject(pastDeadline()), deadlineMs);
150
- const onAbort = () => reject(signal?.reason);
151
- signal?.addEventListener('abort', onAbort, { once: true });
152
- worker.once('message', resolve);
153
- worker.once('error', reject);
154
- worker.once('exit', (code) => reject(new Error(`JSONLogic worker exited with code ${code} before answering`)));
155
- try {
156
- worker.postMessage(request);
157
- }
158
- catch (err) {
159
- // Rejected before the await below takes the promise, so the exit `terminate` raises settles nothing.
160
- reject(handOffError(err, request.notes));
161
- }
162
- try {
163
- return await promise;
164
- }
165
- finally {
166
- clearTimeout(timer);
167
- signal?.removeEventListener('abort', onAbort);
168
- await worker.terminate();
169
- }
170
- }
171
310
  /**
172
311
  * Why `postMessage` refused a batch. Structured clone recurses, so data
173
312
  * nested deep enough overflows the stack: about 3,500 levels under Node,
@@ -1 +1 @@
1
- {"version":3,"file":"jsonlogic-evaluator.js","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsonlogic-evaluator.js","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-evaluator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * @fileoverview Worker-thread entry that evaluates a caller's JSONLogic tree
3
- * against note contexts, for searches scoped by OBSIDIAN_READ_PATHS. Runs the
4
- * operator set the Local REST API plugin runs (json-logic-js 2.0.5 plus its
5
- * `glob` and `regexp`), with the plugin's hit test and JSON-shaped results, so
6
- * a scoped search answers as the plugin would over the same notes.
3
+ * against note contexts, for searches scoped by OBSIDIAN_READ_PATHS or
4
+ * OBSIDIAN_DENY_PATHS. Runs the operator set the Local REST API plugin runs
5
+ * (json-logic-js 2.0.5 plus its `glob` and `regexp`), with the plugin's hit
6
+ * test and JSON-shaped results, so a scoped search answers as the plugin would
7
+ * over the same notes.
7
8
  *
8
9
  * Off the main thread so a slow tree cannot hold the event loop: the evaluator
9
10
  * terminates this worker at its deadline, which also stops a native regex
@@ -18,7 +19,7 @@
18
19
  *
19
20
  * @module services/obsidian/jsonlogic-worker
20
21
  */
21
- /** A note as the plugin's JSONLogic search evaluates it, link fields already scoped. */
22
+ /** A note as the plugin's JSONLogic search evaluates it, less the link fields a scoped search leaves out. */
22
23
  export interface NoteContext {
23
24
  path: string;
24
25
  [field: string]: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"jsonlogic-worker.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,wFAAwF;AACxF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,kGAAkG;IAClG,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,kGAAkG;IAClG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,KAAK,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"jsonlogic-worker.d.ts","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,6GAA6G;AAC7G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,kGAAkG;IAClG,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,kGAAkG;IAClG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,gBAAgB,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,KAAK,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  /**
2
2
  * @fileoverview Worker-thread entry that evaluates a caller's JSONLogic tree
3
- * against note contexts, for searches scoped by OBSIDIAN_READ_PATHS. Runs the
4
- * operator set the Local REST API plugin runs (json-logic-js 2.0.5 plus its
5
- * `glob` and `regexp`), with the plugin's hit test and JSON-shaped results, so
6
- * a scoped search answers as the plugin would over the same notes.
3
+ * against note contexts, for searches scoped by OBSIDIAN_READ_PATHS or
4
+ * OBSIDIAN_DENY_PATHS. Runs the operator set the Local REST API plugin runs
5
+ * (json-logic-js 2.0.5 plus its `glob` and `regexp`), with the plugin's hit
6
+ * test and JSON-shaped results, so a scoped search answers as the plugin would
7
+ * over the same notes.
7
8
  *
8
9
  * Off the main thread so a slow tree cannot hold the event loop: the evaluator
9
10
  * terminates this worker at its deadline, which also stops a native regex
@@ -231,7 +232,8 @@ function evaluate(request) {
231
232
  }
232
233
  return { ok: true, hits, keptUnitsLeft };
233
234
  }
234
- parentPort?.once('message', (request) => {
235
+ /** One reply per request: a search's batches arrive one at a time, each answered before the next is sent. */
236
+ parentPort?.on('message', (request) => {
235
237
  parentPort?.postMessage(evaluate(request));
236
238
  });
237
239
  //# sourceMappingURL=jsonlogic-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jsonlogic-worker.js","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,SAAS,MAAM,eAAe,CAAC;AA4BtC,2FAA2F;AAC3F,MAAM,eAAgB,SAAQ,KAAK;IACxB,OAAO,CAAgB;IAChC,YAAY,OAAsB;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,iFAAiF;AACjF,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,kEAAkE;AAClE,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,MAAM,CAAC,KAAa;IAC3B,aAAa,IAAI,KAAK,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACvE,CAAC;AAED,oGAAoG;AACpG,SAAS,UAAU,CAAC,KAAa;IAC/B,aAAa,IAAI,KAAK,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACvE,CAAC;AAED,uEAAuE;AACvE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;;;;;GASG;AACH,SAAS,MAAM,CAAC,KAAc,EAAE,KAAa;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAc,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;QACnD,yEAAyE;aACpE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,KAAK,MAAM,IAAI,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrE,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnD,KAAK,IAAI,mBAAmB,CAAC;YAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;;YAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAgB,EAAE,KAAgB;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/E,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;AAClC;;;;;GAKG;AACH,SAAS,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IAChC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAmB,CAAC,CAAC,CAAC;SACvE,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,gFAAgF;AAChF,SAAS,KAAK,CAAC,KAAc;IAC3B,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,yHAAyH;AACzH,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjD,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ;IACtD,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,CAAC,CAAC,KAAK,CACV,CAAC;AACF,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACnD,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ;IACtD,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC,KAAK,CACV,CAAC;AAEF,8GAA8G;AAC9G,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAEjD;;;;GAIG;AACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAyB,GAAY,EAAE,QAAiB;IACrF,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACjF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,GAAI,IAAgC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,oGAAoG;AACpG,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;IAC3C,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,OAA0B;IAC1C,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAClC,MAAM,IAAI,GAA8C,EAAE,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,aAAa,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;gBACpC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;YAC9E,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBAClF,MAAM;aACP,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,OAA0B,EAAE,EAAE;IACzD,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"jsonlogic-worker.js","sourceRoot":"","sources":["../../../src/services/obsidian/jsonlogic-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,SAAS,MAAM,eAAe,CAAC;AA4BtC,2FAA2F;AAC3F,MAAM,eAAgB,SAAQ,KAAK;IACxB,OAAO,CAAgB;IAChC,YAAY,OAAsB;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,iFAAiF;AACjF,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,kEAAkE;AAClE,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,MAAM,CAAC,KAAa;IAC3B,aAAa,IAAI,KAAK,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACvE,CAAC;AAED,oGAAoG;AACpG,SAAS,UAAU,CAAC,KAAa;IAC/B,aAAa,IAAI,KAAK,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACvE,CAAC;AAED,uEAAuE;AACvE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;;;;;GASG;AACH,SAAS,MAAM,CAAC,KAAc,EAAE,KAAa;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAc,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;QACnD,yEAAyE;aACpE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,KAAK,MAAM,IAAI,IAAI,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrE,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnD,KAAK,IAAI,mBAAmB,CAAC;YAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;;YAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAgB,EAAE,KAAgB;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/E,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;AAClC;;;;;GAKG;AACH,SAAS,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IAChC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAmB,CAAC,CAAC,CAAC;SACvE,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,gFAAgF;AAChF,SAAS,KAAK,CAAC,KAAc;IAC3B,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,yHAAyH;AACzH,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjD,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ;IACtD,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,CAAC,CAAC,KAAK,CACV,CAAC;AACF,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACnD,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ;IACtD,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC,KAAK,CACV,CAAC;AAEF,8GAA8G;AAC9G,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAEjD;;;;GAIG;AACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAyB,GAAY,EAAE,QAAiB;IACrF,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YACjF,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,GAAI,IAAgC,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC;AAEH,oGAAoG;AACpG,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;IAC3C,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,OAA0B;IAC1C,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;IAClC,MAAM,IAAI,GAA8C,EAAE,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,aAAa,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC3E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;gBACpC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,eAAe,EAAE,CAAC;gBACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;YAC9E,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;gBAClF,MAAM;aACP,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,6GAA6G;AAC7G,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,OAA0B,EAAE,EAAE;IACvD,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}