tasknotes-spec 0.2.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 (53) hide show
  1. package/00-overview.md +172 -0
  2. package/01-terminology.md +156 -0
  3. package/02-model-and-mapping.md +288 -0
  4. package/03-temporal-semantics.md +290 -0
  5. package/04-recurrence.md +398 -0
  6. package/05-operations.md +968 -0
  7. package/06-validation.md +267 -0
  8. package/07-conformance.md +292 -0
  9. package/08-compatibility-and-migrations.md +188 -0
  10. package/09-configuration.md +837 -0
  11. package/10-dependencies-and-reminders.md +266 -0
  12. package/11-links.md +373 -0
  13. package/CHANGELOG.md +25 -0
  14. package/README.md +80 -0
  15. package/conformance/README.md +31 -0
  16. package/conformance/adapters/mdbase-tasknotes.adapter.mjs +141 -0
  17. package/conformance/adapters/tasknotes-core/conformance.ts +2498 -0
  18. package/conformance/adapters/tasknotes-core/create-compat.ts +1 -0
  19. package/conformance/adapters/tasknotes-core/date.ts +12 -0
  20. package/conformance/adapters/tasknotes-core/field-mapping.ts +14 -0
  21. package/conformance/adapters/tasknotes-core/recurrence.ts +10 -0
  22. package/conformance/adapters/tasknotes-date-bridge.ts +20 -0
  23. package/conformance/adapters/tasknotes-runtime-bridge.ts +1107 -0
  24. package/conformance/adapters/tasknotes-runtime-obsidian-shim.ts +84 -0
  25. package/conformance/adapters/tasknotes-templating-bridge.ts +13 -0
  26. package/conformance/adapters/tasknotes.adapter.mjs +485 -0
  27. package/conformance/docs/ADAPTER_CONTRACT.md +245 -0
  28. package/conformance/docs/FIXTURE_FORMAT.md +247 -0
  29. package/conformance/docs/RUNNER_GUIDE.md +393 -0
  30. package/conformance/fixtures/config-schema.json +634 -0
  31. package/conformance/fixtures/config.json +18984 -0
  32. package/conformance/fixtures/conformance.json +444 -0
  33. package/conformance/fixtures/create-compat.json +18639 -0
  34. package/conformance/fixtures/date.json +25612 -0
  35. package/conformance/fixtures/dependencies.json +8647 -0
  36. package/conformance/fixtures/field-mapping.json +5406 -0
  37. package/conformance/fixtures/links.json +1127 -0
  38. package/conformance/fixtures/migrations.json +668 -0
  39. package/conformance/fixtures/operations.json +2761 -0
  40. package/conformance/fixtures/recurrence.json +22958 -0
  41. package/conformance/fixtures/reminders.json +13333 -0
  42. package/conformance/fixtures/templating.json +497 -0
  43. package/conformance/fixtures/validation.json +5308 -0
  44. package/conformance/lib/adapter-loader.mjs +23 -0
  45. package/conformance/lib/load-fixtures.mjs +43 -0
  46. package/conformance/lib/matchers.mjs +200 -0
  47. package/conformance/manifest.json +232 -0
  48. package/conformance/scripts/generate-fixtures.mjs +5239 -0
  49. package/conformance/scripts/package-fixtures.mjs +101 -0
  50. package/conformance/tests/coverage.test.mjs +213 -0
  51. package/conformance/tests/runner.test.mjs +102 -0
  52. package/conformance/tests/tasknotes-runtime-routing.test.mjs +64 -0
  53. package/package.json +49 -0
@@ -0,0 +1,444 @@
1
+ [
2
+ {
3
+ "id": "conformance.0001",
4
+ "section": "§7.10",
5
+ "profile": "core-lite",
6
+ "operation": "meta.claim",
7
+ "assertion": "envelope_equals",
8
+ "input": {},
9
+ "expect": {
10
+ "ok": true,
11
+ "result": {
12
+ "implementation": {
13
+ "$regex": "^\\S+$"
14
+ },
15
+ "version": {
16
+ "$regex": "^\\S+$"
17
+ },
18
+ "spec_version": {
19
+ "$regex": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$"
20
+ },
21
+ "validation_modes": {
22
+ "$contains": [
23
+ "strict"
24
+ ]
25
+ },
26
+ "profiles": {
27
+ "$contains": []
28
+ },
29
+ "capabilities": {
30
+ "$contains": []
31
+ }
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "id": "conformance.0002",
37
+ "section": "§7.11",
38
+ "profile": "core-lite",
39
+ "operation": "meta.has_capability",
40
+ "assertion": "envelope_equals",
41
+ "input": {
42
+ "capability": "dependencies"
43
+ },
44
+ "expect": {
45
+ "ok": true,
46
+ "result": {
47
+ "value": {
48
+ "$oneOf": [
49
+ true,
50
+ false
51
+ ]
52
+ }
53
+ }
54
+ }
55
+ },
56
+ {
57
+ "id": "conformance.0003",
58
+ "section": "§7.11",
59
+ "profile": "core-lite",
60
+ "operation": "meta.has_capability",
61
+ "assertion": "envelope_equals",
62
+ "input": {
63
+ "capability": "reminders"
64
+ },
65
+ "expect": {
66
+ "ok": true,
67
+ "result": {
68
+ "value": {
69
+ "$oneOf": [
70
+ true,
71
+ false
72
+ ]
73
+ }
74
+ }
75
+ }
76
+ },
77
+ {
78
+ "id": "conformance.0004",
79
+ "section": "§7.11",
80
+ "profile": "core-lite",
81
+ "operation": "meta.has_capability",
82
+ "assertion": "envelope_equals",
83
+ "input": {
84
+ "capability": "links"
85
+ },
86
+ "expect": {
87
+ "ok": true,
88
+ "result": {
89
+ "value": {
90
+ "$oneOf": [
91
+ true,
92
+ false
93
+ ]
94
+ }
95
+ }
96
+ }
97
+ },
98
+ {
99
+ "id": "conformance.0005",
100
+ "section": "§7.11",
101
+ "profile": "core-lite",
102
+ "operation": "meta.has_capability",
103
+ "assertion": "envelope_equals",
104
+ "input": {
105
+ "capability": "rename"
106
+ },
107
+ "expect": {
108
+ "ok": true,
109
+ "result": {
110
+ "value": {
111
+ "$oneOf": [
112
+ true,
113
+ false
114
+ ]
115
+ }
116
+ }
117
+ }
118
+ },
119
+ {
120
+ "id": "conformance.0006",
121
+ "section": "§7.11",
122
+ "profile": "core-lite",
123
+ "operation": "meta.has_capability",
124
+ "assertion": "envelope_equals",
125
+ "input": {
126
+ "capability": "archive"
127
+ },
128
+ "expect": {
129
+ "ok": true,
130
+ "result": {
131
+ "value": {
132
+ "$oneOf": [
133
+ true,
134
+ false
135
+ ]
136
+ }
137
+ }
138
+ }
139
+ },
140
+ {
141
+ "id": "conformance.0007",
142
+ "section": "§7.11",
143
+ "profile": "core-lite",
144
+ "operation": "meta.has_capability",
145
+ "assertion": "envelope_equals",
146
+ "input": {
147
+ "capability": "batch"
148
+ },
149
+ "expect": {
150
+ "ok": true,
151
+ "result": {
152
+ "value": {
153
+ "$oneOf": [
154
+ true,
155
+ false
156
+ ]
157
+ }
158
+ }
159
+ }
160
+ },
161
+ {
162
+ "id": "conformance.0008",
163
+ "section": "§7.11",
164
+ "profile": "core-lite",
165
+ "operation": "meta.has_capability",
166
+ "assertion": "envelope_equals",
167
+ "input": {
168
+ "capability": "concurrency"
169
+ },
170
+ "expect": {
171
+ "ok": true,
172
+ "result": {
173
+ "value": {
174
+ "$oneOf": [
175
+ true,
176
+ false
177
+ ]
178
+ }
179
+ }
180
+ }
181
+ },
182
+ {
183
+ "id": "conformance.0009",
184
+ "section": "§7.11",
185
+ "profile": "core-lite",
186
+ "operation": "meta.has_capability",
187
+ "assertion": "envelope_equals",
188
+ "input": {
189
+ "capability": "dry-run"
190
+ },
191
+ "expect": {
192
+ "ok": true,
193
+ "result": {
194
+ "value": {
195
+ "$oneOf": [
196
+ true,
197
+ false
198
+ ]
199
+ }
200
+ }
201
+ }
202
+ },
203
+ {
204
+ "id": "conformance.0010",
205
+ "section": "§7.11",
206
+ "profile": "core-lite",
207
+ "operation": "meta.has_capability",
208
+ "assertion": "envelope_equals",
209
+ "input": {
210
+ "capability": "time-tracking"
211
+ },
212
+ "expect": {
213
+ "ok": true,
214
+ "result": {
215
+ "value": {
216
+ "$oneOf": [
217
+ true,
218
+ false
219
+ ]
220
+ }
221
+ }
222
+ }
223
+ },
224
+ {
225
+ "id": "conformance.0011",
226
+ "section": "§7.11",
227
+ "profile": "core-lite",
228
+ "operation": "meta.has_capability",
229
+ "assertion": "envelope_equals",
230
+ "input": {
231
+ "capability": "migration"
232
+ },
233
+ "expect": {
234
+ "ok": true,
235
+ "result": {
236
+ "value": {
237
+ "$oneOf": [
238
+ true,
239
+ false
240
+ ]
241
+ }
242
+ }
243
+ }
244
+ },
245
+ {
246
+ "id": "conformance.0012",
247
+ "section": "§7.11",
248
+ "profile": "core-lite",
249
+ "operation": "meta.has_capability",
250
+ "assertion": "envelope_equals",
251
+ "input": {
252
+ "capability": "templating"
253
+ },
254
+ "expect": {
255
+ "ok": true,
256
+ "result": {
257
+ "value": {
258
+ "$oneOf": [
259
+ true,
260
+ false
261
+ ]
262
+ }
263
+ }
264
+ }
265
+ },
266
+ {
267
+ "id": "conformance.0013",
268
+ "section": "§7.10",
269
+ "profile": "core-lite",
270
+ "operation": "meta.has_profile",
271
+ "assertion": "envelope_equals",
272
+ "input": {
273
+ "profile": "core-lite"
274
+ },
275
+ "expect": {
276
+ "ok": true,
277
+ "result": {
278
+ "value": {
279
+ "$oneOf": [
280
+ true,
281
+ false
282
+ ]
283
+ }
284
+ }
285
+ }
286
+ },
287
+ {
288
+ "id": "conformance.0014",
289
+ "section": "§7.10",
290
+ "profile": "core-lite",
291
+ "operation": "meta.has_profile",
292
+ "assertion": "envelope_equals",
293
+ "input": {
294
+ "profile": "recurrence"
295
+ },
296
+ "expect": {
297
+ "ok": true,
298
+ "result": {
299
+ "value": {
300
+ "$oneOf": [
301
+ true,
302
+ false
303
+ ]
304
+ }
305
+ }
306
+ }
307
+ },
308
+ {
309
+ "id": "conformance.0015",
310
+ "section": "§7.10",
311
+ "profile": "core-lite",
312
+ "operation": "meta.has_profile",
313
+ "assertion": "envelope_equals",
314
+ "input": {
315
+ "profile": "extended"
316
+ },
317
+ "expect": {
318
+ "ok": true,
319
+ "result": {
320
+ "value": {
321
+ "$oneOf": [
322
+ true,
323
+ false
324
+ ]
325
+ }
326
+ }
327
+ }
328
+ },
329
+ {
330
+ "id": "conformance.0016",
331
+ "section": "§7.10",
332
+ "profile": "core-lite",
333
+ "operation": "meta.has_profile",
334
+ "assertion": "envelope_equals",
335
+ "input": {
336
+ "profile": "templating"
337
+ },
338
+ "expect": {
339
+ "ok": true,
340
+ "result": {
341
+ "value": {
342
+ "$oneOf": [
343
+ true,
344
+ false
345
+ ]
346
+ }
347
+ }
348
+ }
349
+ },
350
+ {
351
+ "id": "conformance.0017",
352
+ "section": "§7.10",
353
+ "profile": "core-lite",
354
+ "operation": "meta.has_profile",
355
+ "assertion": "envelope_equals",
356
+ "input": {
357
+ "profile": "materialized-occurrences"
358
+ },
359
+ "expect": {
360
+ "ok": true,
361
+ "result": {
362
+ "value": {
363
+ "$oneOf": [
364
+ true,
365
+ false
366
+ ]
367
+ }
368
+ }
369
+ }
370
+ },
371
+ {
372
+ "id": "conformance.0018",
373
+ "section": "§7.3.5",
374
+ "profile": "extended",
375
+ "operation": "meta.claim",
376
+ "assertion": "envelope_equals",
377
+ "input": {},
378
+ "expect": {
379
+ "ok": true,
380
+ "result": {
381
+ "profiles": {
382
+ "$contains": [
383
+ "extended"
384
+ ]
385
+ },
386
+ "capabilities": {
387
+ "$contains": [
388
+ "dependencies",
389
+ "reminders",
390
+ "links",
391
+ "time-tracking"
392
+ ]
393
+ }
394
+ }
395
+ }
396
+ },
397
+ {
398
+ "id": "conformance.0019",
399
+ "section": "§7.3.3",
400
+ "profile": "templating",
401
+ "operation": "meta.claim",
402
+ "assertion": "envelope_equals",
403
+ "input": {},
404
+ "expect": {
405
+ "ok": true,
406
+ "result": {
407
+ "profiles": {
408
+ "$contains": [
409
+ "templating"
410
+ ]
411
+ },
412
+ "capabilities": {
413
+ "$contains": [
414
+ "templating"
415
+ ]
416
+ }
417
+ }
418
+ }
419
+ },
420
+ {
421
+ "id": "conformance.0020",
422
+ "section": "§7.3.4",
423
+ "profile": "materialized-occurrences",
424
+ "operation": "meta.claim",
425
+ "assertion": "envelope_equals",
426
+ "input": {},
427
+ "expect": {
428
+ "ok": true,
429
+ "result": {
430
+ "profiles": {
431
+ "$contains": [
432
+ "materialized-occurrences",
433
+ "recurrence"
434
+ ]
435
+ },
436
+ "capabilities": {
437
+ "$contains": [
438
+ "materialized-occurrences"
439
+ ]
440
+ }
441
+ }
442
+ }
443
+ }
444
+ ]