@agentshouse/mdmodel 0.1.0-cd90851746292 → 0.1.0-cdbd463e01dc2

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 (95) hide show
  1. package/API.md +90 -81
  2. package/README.md +6 -4
  3. package/dist/definition.d.ts +1 -1
  4. package/dist/definition.d.ts.map +1 -1
  5. package/dist/definition.js +13 -9
  6. package/dist/event.d.ts +78 -0
  7. package/dist/event.d.ts.map +1 -0
  8. package/dist/event.js +230 -0
  9. package/dist/facts.d.ts +15 -0
  10. package/dist/facts.d.ts.map +1 -0
  11. package/dist/facts.js +39 -0
  12. package/dist/index.d.ts +17 -5
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +10 -3
  15. package/dist/kinds.d.ts +19 -0
  16. package/dist/kinds.d.ts.map +1 -0
  17. package/dist/kinds.js +161 -0
  18. package/dist/query/language.d.ts +223 -0
  19. package/dist/query/language.d.ts.map +1 -0
  20. package/dist/query/language.js +565 -0
  21. package/dist/query/match.d.ts +14 -0
  22. package/dist/query/match.d.ts.map +1 -0
  23. package/dist/query/match.js +121 -0
  24. package/dist/query/rows.d.ts +32 -0
  25. package/dist/query/rows.d.ts.map +1 -0
  26. package/dist/query/rows.js +161 -0
  27. package/dist/query/sql.d.ts +39 -0
  28. package/dist/query/sql.d.ts.map +1 -0
  29. package/dist/query/sql.js +279 -0
  30. package/dist/reserved.d.ts +5 -0
  31. package/dist/reserved.d.ts.map +1 -0
  32. package/dist/reserved.js +20 -0
  33. package/dist/types.d.ts +7 -0
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/validate.d.ts +4 -3
  36. package/dist/validate.d.ts.map +1 -1
  37. package/dist/validate.js +103 -36
  38. package/fixtures/README.md +17 -2
  39. package/fixtures/cases/link-into-a-reserved-name/context.json +1 -0
  40. package/fixtures/cases/link-into-a-reserved-name/expected.json +5 -0
  41. package/fixtures/cases/link-into-a-reserved-name/library/notes/a.md +6 -0
  42. package/fixtures/cases/link-into-a-reserved-name/schema.yaml +3 -0
  43. package/fixtures/cases/link-into-a-reserved-name-from-an-untyped-document/context.json +1 -0
  44. package/fixtures/cases/link-into-a-reserved-name-from-an-untyped-document/expected.json +5 -0
  45. package/fixtures/cases/link-into-a-reserved-name-from-an-untyped-document/library/notes/b.md +5 -0
  46. package/fixtures/cases/member-on-an-untyped-document/context.json +1 -0
  47. package/fixtures/cases/member-on-an-untyped-document/expected.json +6 -0
  48. package/fixtures/cases/member-on-an-untyped-document/library/note.md +4 -0
  49. package/fixtures/cases/member-on-another-type/context.json +1 -0
  50. package/fixtures/cases/member-on-another-type/expected.json +6 -0
  51. package/fixtures/cases/member-on-another-type/library/note.md +4 -0
  52. package/fixtures/cases/member-on-another-type/schema.yaml +7 -0
  53. package/fixtures/cases/reference-into-a-reserved-name/context.json +1 -0
  54. package/fixtures/cases/reference-into-a-reserved-name/expected.json +6 -0
  55. package/fixtures/cases/reference-into-a-reserved-name/library/notes/a.md +4 -0
  56. package/fixtures/cases/reference-into-a-reserved-name/library/settings/brief.md +1 -0
  57. package/fixtures/cases/reference-into-a-reserved-name/schema.yaml +3 -0
  58. package/fixtures/cases/room-md-declares-a-type/context.json +1 -0
  59. package/fixtures/cases/room-md-declares-a-type/expected.json +6 -0
  60. package/fixtures/cases/room-md-declares-a-type/library/ROOM.md +5 -0
  61. package/fixtures/cases/typed-path-names-another-type/context.json +11 -0
  62. package/fixtures/cases/typed-path-names-another-type/expected.json +6 -0
  63. package/fixtures/cases/typed-path-names-another-type/library/settings/prefs/one.md +3 -0
  64. package/fixtures/cases/typed-path-names-another-type/schema.yaml +6 -0
  65. package/fixtures/cases/typed-path-names-its-type/context.json +11 -0
  66. package/fixtures/cases/typed-path-names-its-type/expected.json +3 -0
  67. package/fixtures/cases/typed-path-names-its-type/library/settings/prefs/deeper/two.md +1 -0
  68. package/fixtures/cases/typed-path-names-its-type/library/settings/prefs/one.md +4 -0
  69. package/fixtures/cases/typed-path-names-its-type/schema.yaml +6 -0
  70. package/fixtures/cases/typed-path-names-no-type/context.json +11 -0
  71. package/fixtures/cases/typed-path-names-no-type/expected.json +6 -0
  72. package/fixtures/cases/typed-path-names-no-type/library/settings/prefs/one.md +1 -0
  73. package/fixtures/cases/typed-path-names-no-type/schema.yaml +6 -0
  74. package/fixtures/cases/unnamed-typed-path-checks-its-fields/context.json +11 -0
  75. package/fixtures/cases/unnamed-typed-path-checks-its-fields/expected.json +6 -0
  76. package/fixtures/cases/unnamed-typed-path-checks-its-fields/library/rooms/team/tasks/plan.md +4 -0
  77. package/fixtures/cases/unnamed-typed-path-checks-its-fields/schema.yaml +5 -0
  78. package/fixtures/cases/unnamed-typed-path-names-a-type/context.json +11 -0
  79. package/fixtures/cases/unnamed-typed-path-names-a-type/expected.json +6 -0
  80. package/fixtures/cases/unnamed-typed-path-names-a-type/library/rooms/team/tasks/plan.md +6 -0
  81. package/fixtures/cases/unnamed-typed-path-names-a-type/schema.yaml +5 -0
  82. package/fixtures/cases/unnamed-typed-path-reads-its-type/context.json +11 -0
  83. package/fixtures/cases/unnamed-typed-path-reads-its-type/expected.json +3 -0
  84. package/fixtures/cases/unnamed-typed-path-reads-its-type/library/rooms/team/plan.md +1 -0
  85. package/fixtures/cases/unnamed-typed-path-reads-its-type/library/rooms/team/tasks/plan.md +5 -0
  86. package/fixtures/cases/unnamed-typed-path-reads-its-type/schema.yaml +5 -0
  87. package/fixtures/cases/unnamed-typed-path-without-a-body/context.json +11 -0
  88. package/fixtures/cases/unnamed-typed-path-without-a-body/expected.json +5 -0
  89. package/fixtures/cases/unnamed-typed-path-without-a-body/library/rooms/team/tasks/plan.md +5 -0
  90. package/fixtures/cases/unnamed-typed-path-without-a-body/schema.yaml +5 -0
  91. package/fixtures/queries.json +913 -0
  92. package/package.json +1 -1
  93. package/dist/condition.d.ts +0 -180
  94. package/dist/condition.d.ts.map +0 -1
  95. package/dist/condition.js +0 -633
@@ -0,0 +1,223 @@
1
+ import { type Definition } from '../definition.js';
2
+ export type Value = string | number | boolean | null;
3
+ export type Predicate = Value | {
4
+ $eq: Value;
5
+ } | {
6
+ $ne: Value;
7
+ } | {
8
+ $in: readonly Value[];
9
+ } | {
10
+ $nin: readonly Value[];
11
+ } | {
12
+ $gt?: Value;
13
+ $gte?: Value;
14
+ $lt?: Value;
15
+ $lte?: Value;
16
+ } | {
17
+ $all: readonly Value[];
18
+ } | {
19
+ $size: number;
20
+ } | {
21
+ $exists: boolean;
22
+ } | {
23
+ $prefix: string;
24
+ };
25
+ export type Where = {
26
+ $and?: readonly Where[];
27
+ $or?: readonly Where[];
28
+ [field: string]: Predicate | readonly Where[] | undefined;
29
+ };
30
+ export type Related = {
31
+ types?: readonly string[];
32
+ where?: Where;
33
+ pathPrefix?: string;
34
+ };
35
+ export type Filter = {
36
+ rooms?: readonly string[];
37
+ types?: readonly string[];
38
+ where?: Where;
39
+ pathPrefix?: string;
40
+ folder?: string;
41
+ paths?: readonly string[];
42
+ fileIds?: readonly string[];
43
+ hop?: Related & {
44
+ field: string;
45
+ };
46
+ backlinks?: Related & {
47
+ field?: string;
48
+ };
49
+ text?: string;
50
+ };
51
+ export type Key = 'room' | 'path' | 'type' | 'folder' | {
52
+ field: string;
53
+ };
54
+ export type Select = 'all' | {
55
+ fields?: 'all' | readonly string[];
56
+ sections?: 'all' | readonly string[];
57
+ preamble?: true;
58
+ markdown?: true;
59
+ backlinks?: true;
60
+ change?: true;
61
+ fileId?: true;
62
+ revision?: true;
63
+ };
64
+ export type OrderOptions = {
65
+ nulls?: 'first' | 'last';
66
+ stringSort?: 'lexical' | 'locale';
67
+ locale?: string;
68
+ localeOptions?: Readonly<Record<string, unknown>>;
69
+ };
70
+ export type Direction = 'asc' | 'desc';
71
+ export type DocumentQuery = Filter & {
72
+ select: Select;
73
+ orderBy?: readonly ({
74
+ by: Key;
75
+ direction?: Direction;
76
+ } & OrderOptions)[];
77
+ limit?: number;
78
+ after?: string;
79
+ total?: true;
80
+ };
81
+ export type GroupQuery = Filter & {
82
+ groupBy: readonly Exclude<Key, 'path'>[];
83
+ orderBy?: readonly {
84
+ by: 'count' | Exclude<Key, 'path'>;
85
+ direction?: Direction;
86
+ }[];
87
+ limit?: number;
88
+ after?: string;
89
+ total?: true;
90
+ };
91
+ export type LocalQuery = DocumentQuery | GroupQuery;
92
+ export type QueryErrorCode = 'invalid-query' | 'unknown-type' | 'unknown-field' | 'wrong-kind';
93
+ export type RoomFacts = {
94
+ locator: string;
95
+ available: boolean;
96
+ types: readonly Definition[];
97
+ };
98
+ export type HeldRooms = {
99
+ listed: boolean;
100
+ rooms: readonly RoomFacts[];
101
+ };
102
+ export type Test = {
103
+ op: 'eq';
104
+ value: Value;
105
+ } | {
106
+ op: 'ne';
107
+ value: Value;
108
+ } | {
109
+ op: 'in';
110
+ values: readonly Value[];
111
+ } | {
112
+ op: 'nin';
113
+ values: readonly Value[];
114
+ } | {
115
+ op: 'range';
116
+ bounds: readonly (readonly ['gt' | 'gte' | 'lt' | 'lte', Value])[];
117
+ } | {
118
+ op: 'all';
119
+ values: readonly Value[];
120
+ } | {
121
+ op: 'size';
122
+ size: number;
123
+ } | {
124
+ op: 'exists';
125
+ exists: boolean;
126
+ } | {
127
+ op: 'prefix';
128
+ prefix: string;
129
+ };
130
+ export type Clause = {
131
+ every: readonly Clause[];
132
+ } | {
133
+ some: readonly Clause[];
134
+ } | {
135
+ field: string;
136
+ test: Test;
137
+ };
138
+ export type Scope = {
139
+ types: readonly string[] | null;
140
+ where: Clause | null;
141
+ pathPrefix: string | null;
142
+ };
143
+ export type KeyPlan = {
144
+ of: 'room';
145
+ } | {
146
+ of: 'path';
147
+ } | {
148
+ of: 'type';
149
+ } | {
150
+ of: 'folder';
151
+ } | {
152
+ of: 'field';
153
+ field: string;
154
+ };
155
+ export type DocumentShape = {
156
+ kind: 'documents';
157
+ fields: 'all' | readonly string[] | null;
158
+ sections: 'all' | readonly string[] | null;
159
+ preamble: boolean;
160
+ markdown: boolean;
161
+ backlinks: boolean;
162
+ change: boolean;
163
+ fileId: boolean;
164
+ revision: boolean;
165
+ orderBy: readonly {
166
+ key: KeyPlan;
167
+ options: OrderOptions & {
168
+ direction: Direction;
169
+ };
170
+ }[];
171
+ };
172
+ export type GroupShape = {
173
+ kind: 'groups';
174
+ groupBy: readonly KeyPlan[];
175
+ orderBy: readonly {
176
+ by: 'count' | number;
177
+ direction: Direction;
178
+ }[];
179
+ };
180
+ export type Continuation = {
181
+ text: string;
182
+ values: readonly unknown[] | null;
183
+ };
184
+ export type QueryPlan = {
185
+ key: string;
186
+ rooms: readonly string[] | null;
187
+ root: Scope;
188
+ folder: string | null;
189
+ paths: readonly string[] | null;
190
+ fileIds: readonly string[] | null;
191
+ hop: (Scope & {
192
+ field: string;
193
+ }) | null;
194
+ backlinks: (Scope & {
195
+ field: string | null;
196
+ }) | null;
197
+ text: string | null;
198
+ shape: DocumentShape | GroupShape;
199
+ limit: number | null;
200
+ after: Continuation | null;
201
+ total: boolean;
202
+ };
203
+ export type Place = readonly (string | number)[];
204
+ type At = Place | string;
205
+ export declare class QueryError extends Error {
206
+ readonly code: QueryErrorCode;
207
+ readonly place: Place;
208
+ readonly accepts: readonly string[];
209
+ readonly retryable = false;
210
+ constructor(code: QueryErrorCode, at: At, problem: string, accepts?: readonly string[]);
211
+ }
212
+ type Entries = Readonly<Record<string, unknown>>;
213
+ export declare function bodied(shape: DocumentShape): boolean;
214
+ export declare function invalid(at: At, problem: string, accepts?: readonly string[]): never;
215
+ export declare function placeText(at: Place): string;
216
+ export declare function known(value: Entries, allowed: readonly string[], at: At): void;
217
+ export declare function planOf(input: unknown, facts: HeldRooms): QueryPlan;
218
+ export declare function cursorOf(values: readonly unknown[]): string;
219
+ export declare function decodedCursor(text: string): readonly unknown[] | null;
220
+ export declare function queryKey(query: unknown): string;
221
+ export declare function identityOf(plan: QueryPlan): string;
222
+ export {};
223
+ //# sourceMappingURL=language.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/query/language.ts"],"names":[],"mappings":"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"}