@kubun/protocol 0.3.11 → 0.4.1

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.
@@ -1,272 +1,7 @@
1
1
  import { type FromSchema } from '@enkaku/schema';
2
2
  import { DocumentModelID } from '@kubun/id';
3
- import type { JSONSchema } from 'json-schema-typed';
4
- import { type DocumentFieldsMeta, type DocumentModel, type DocumentModelsCluster, type DocumentModelsRecord } from './document.js';
5
- export type DocumentModelBehavior = 'default' | 'interface' | 'unique';
6
- export type SetDocumentModel = Omit<DocumentModel, 'version' | 'behavior' | 'interfaces' | 'schema' | 'fieldsMeta'> & {
7
- version?: string;
8
- behavior?: DocumentModelBehavior;
9
- uniqueFields?: Array<string>;
10
- interfaces?: Array<string>;
11
- schema?: JSONSchema.Object;
12
- fieldsMeta?: DocumentFieldsMeta;
13
- };
14
- type JSONSchemaScalar = JSONSchema.Boolean | JSONSchema.Integer | JSONSchema.Number | JSONSchema.String;
15
- type JSONSchemaShape = JSONSchema.Array | JSONSchema.Object;
16
- type JSONSchemaType = JSONSchemaScalar | JSONSchemaShape;
17
- export type JSONSchemaReferencesRecord = Record<string, JSONSchemaType>;
18
- export declare const REFERENCE_PREFIX = "#/$defs/";
19
- export declare const validateDocumentModel: import("@enkaku/schema").Validator<{
20
- name: string;
21
- version: "1.0";
22
- schema: {
23
- type: "object";
24
- required: string[];
25
- properties: {
26
- [x: string]: {
27
- $ref: string;
28
- };
29
- };
30
- additionalProperties: boolean;
31
- $defs: {
32
- [x: string]: {
33
- default?: boolean | undefined;
34
- type: "boolean";
35
- } | {
36
- maximum?: number | undefined;
37
- minimum?: number | undefined;
38
- default?: number | undefined;
39
- type: "integer";
40
- } | {
41
- default?: number | undefined;
42
- min?: number | undefined;
43
- max?: number | undefined;
44
- type: "number";
45
- } | {
46
- title?: string | undefined;
47
- default?: string | undefined;
48
- type: "string";
49
- const: string;
50
- } | {
51
- maxLength?: number | undefined;
52
- minLength?: number | undefined;
53
- pattern?: string | undefined;
54
- title?: string | undefined;
55
- default?: string | undefined;
56
- type: "string";
57
- } | {
58
- default?: string | undefined;
59
- type: "string";
60
- enum: string[];
61
- title: string;
62
- } | {
63
- maxLength?: number | undefined;
64
- minLength?: number | undefined;
65
- title?: string | undefined;
66
- default?: string | undefined;
67
- type: "string";
68
- format: "date" | "date-time" | "duration" | "email" | "time" | "uri";
69
- } | {
70
- maxItems?: number | undefined;
71
- minItems?: number | undefined;
72
- uniqueItems?: boolean | undefined;
73
- type: "array";
74
- items: {
75
- $ref: string;
76
- };
77
- title: string;
78
- } | {
79
- type: "object";
80
- required: string[];
81
- properties: {
82
- [x: string]: {
83
- $ref: string;
84
- };
85
- };
86
- additionalProperties: boolean;
87
- title: string;
88
- } | {
89
- type: "object";
90
- additionalProperties: true;
91
- title: "JSONObject";
92
- };
93
- };
94
- };
95
- fieldsMeta: {
96
- [x: string]: {
97
- relationModel?: string | null | undefined;
98
- };
99
- };
100
- interfaces: string[];
101
- behavior: "default";
102
- } | {
103
- name: string;
104
- version: "1.0";
105
- schema: {
106
- type: "object";
107
- required: string[];
108
- properties: {
109
- [x: string]: {
110
- $ref: string;
111
- };
112
- };
113
- additionalProperties: boolean;
114
- $defs: {
115
- [x: string]: {
116
- default?: boolean | undefined;
117
- type: "boolean";
118
- } | {
119
- maximum?: number | undefined;
120
- minimum?: number | undefined;
121
- default?: number | undefined;
122
- type: "integer";
123
- } | {
124
- default?: number | undefined;
125
- min?: number | undefined;
126
- max?: number | undefined;
127
- type: "number";
128
- } | {
129
- title?: string | undefined;
130
- default?: string | undefined;
131
- type: "string";
132
- const: string;
133
- } | {
134
- maxLength?: number | undefined;
135
- minLength?: number | undefined;
136
- pattern?: string | undefined;
137
- title?: string | undefined;
138
- default?: string | undefined;
139
- type: "string";
140
- } | {
141
- default?: string | undefined;
142
- type: "string";
143
- enum: string[];
144
- title: string;
145
- } | {
146
- maxLength?: number | undefined;
147
- minLength?: number | undefined;
148
- title?: string | undefined;
149
- default?: string | undefined;
150
- type: "string";
151
- format: "date" | "date-time" | "duration" | "email" | "time" | "uri";
152
- } | {
153
- maxItems?: number | undefined;
154
- minItems?: number | undefined;
155
- uniqueItems?: boolean | undefined;
156
- type: "array";
157
- items: {
158
- $ref: string;
159
- };
160
- title: string;
161
- } | {
162
- type: "object";
163
- required: string[];
164
- properties: {
165
- [x: string]: {
166
- $ref: string;
167
- };
168
- };
169
- additionalProperties: boolean;
170
- title: string;
171
- } | {
172
- type: "object";
173
- additionalProperties: true;
174
- title: "JSONObject";
175
- };
176
- };
177
- };
178
- fieldsMeta: {
179
- [x: string]: {
180
- relationModel?: string | null | undefined;
181
- };
182
- };
183
- interfaces: string[];
184
- behavior: "interface";
185
- } | {
186
- name: string;
187
- version: "1.0";
188
- schema: {
189
- type: "object";
190
- required: string[];
191
- properties: {
192
- [x: string]: {
193
- $ref: string;
194
- };
195
- };
196
- additionalProperties: boolean;
197
- $defs: {
198
- [x: string]: {
199
- default?: boolean | undefined;
200
- type: "boolean";
201
- } | {
202
- maximum?: number | undefined;
203
- minimum?: number | undefined;
204
- default?: number | undefined;
205
- type: "integer";
206
- } | {
207
- default?: number | undefined;
208
- min?: number | undefined;
209
- max?: number | undefined;
210
- type: "number";
211
- } | {
212
- title?: string | undefined;
213
- default?: string | undefined;
214
- type: "string";
215
- const: string;
216
- } | {
217
- maxLength?: number | undefined;
218
- minLength?: number | undefined;
219
- pattern?: string | undefined;
220
- title?: string | undefined;
221
- default?: string | undefined;
222
- type: "string";
223
- } | {
224
- default?: string | undefined;
225
- type: "string";
226
- enum: string[];
227
- title: string;
228
- } | {
229
- maxLength?: number | undefined;
230
- minLength?: number | undefined;
231
- title?: string | undefined;
232
- default?: string | undefined;
233
- type: "string";
234
- format: "date" | "date-time" | "duration" | "email" | "time" | "uri";
235
- } | {
236
- maxItems?: number | undefined;
237
- minItems?: number | undefined;
238
- uniqueItems?: boolean | undefined;
239
- type: "array";
240
- items: {
241
- $ref: string;
242
- };
243
- title: string;
244
- } | {
245
- type: "object";
246
- required: string[];
247
- properties: {
248
- [x: string]: {
249
- $ref: string;
250
- };
251
- };
252
- additionalProperties: boolean;
253
- title: string;
254
- } | {
255
- type: "object";
256
- additionalProperties: true;
257
- title: "JSONObject";
258
- };
259
- };
260
- };
261
- fieldsMeta: {
262
- [x: string]: {
263
- relationModel?: string | null | undefined;
264
- };
265
- };
266
- interfaces: string[];
267
- behavior: "unique";
268
- uniqueFields: string[];
269
- }>;
3
+ import { type Logger } from '@kubun/logger';
4
+ import type { DocumentModel, DocumentModelInput, DocumentModelsCluster, DocumentModelsRecord } from './document.js';
270
5
  export declare const clusterModel: {
271
6
  readonly $id: "urn:kubun:protocol:model:cluster";
272
7
  readonly type: "object";
@@ -587,17 +322,44 @@ export declare const clusterModel: {
587
322
  readonly fieldsMeta: {
588
323
  readonly type: "object";
589
324
  readonly additionalProperties: {
590
- readonly type: "object";
591
- readonly properties: {
592
- readonly relationModel: {
593
- readonly anyOf: readonly [{
325
+ readonly anyOf: readonly [{
326
+ readonly type: "object";
327
+ readonly properties: {
328
+ readonly type: {
594
329
  readonly type: "string";
595
- }, {
596
- readonly type: "null";
597
- }];
330
+ readonly const: "account";
331
+ };
598
332
  };
599
- };
600
- readonly additionalProperties: false;
333
+ readonly required: readonly ["type"];
334
+ readonly additionalProperties: false;
335
+ }, {
336
+ readonly type: "object";
337
+ readonly properties: {
338
+ readonly type: {
339
+ readonly type: "string";
340
+ readonly const: "attachment";
341
+ };
342
+ };
343
+ readonly required: readonly ["type"];
344
+ readonly additionalProperties: false;
345
+ }, {
346
+ readonly type: "object";
347
+ readonly properties: {
348
+ readonly type: {
349
+ readonly type: "string";
350
+ readonly const: "document";
351
+ };
352
+ readonly model: {
353
+ readonly anyOf: readonly [{
354
+ readonly type: "string";
355
+ }, {
356
+ readonly type: "null";
357
+ }];
358
+ };
359
+ };
360
+ readonly required: readonly ["type", "model"];
361
+ readonly additionalProperties: false;
362
+ }];
601
363
  };
602
364
  };
603
365
  };
@@ -910,17 +672,44 @@ export declare const clusterModel: {
910
672
  readonly fieldsMeta: {
911
673
  readonly type: "object";
912
674
  readonly additionalProperties: {
913
- readonly type: "object";
914
- readonly properties: {
915
- readonly relationModel: {
916
- readonly anyOf: readonly [{
675
+ readonly anyOf: readonly [{
676
+ readonly type: "object";
677
+ readonly properties: {
678
+ readonly type: {
917
679
  readonly type: "string";
918
- }, {
919
- readonly type: "null";
920
- }];
680
+ readonly const: "account";
681
+ };
921
682
  };
922
- };
923
- readonly additionalProperties: false;
683
+ readonly required: readonly ["type"];
684
+ readonly additionalProperties: false;
685
+ }, {
686
+ readonly type: "object";
687
+ readonly properties: {
688
+ readonly type: {
689
+ readonly type: "string";
690
+ readonly const: "attachment";
691
+ };
692
+ };
693
+ readonly required: readonly ["type"];
694
+ readonly additionalProperties: false;
695
+ }, {
696
+ readonly type: "object";
697
+ readonly properties: {
698
+ readonly type: {
699
+ readonly type: "string";
700
+ readonly const: "document";
701
+ };
702
+ readonly model: {
703
+ readonly anyOf: readonly [{
704
+ readonly type: "string";
705
+ }, {
706
+ readonly type: "null";
707
+ }];
708
+ };
709
+ };
710
+ readonly required: readonly ["type", "model"];
711
+ readonly additionalProperties: false;
712
+ }];
924
713
  };
925
714
  };
926
715
  };
@@ -1239,17 +1028,44 @@ export declare const clusterModel: {
1239
1028
  readonly fieldsMeta: {
1240
1029
  readonly type: "object";
1241
1030
  readonly additionalProperties: {
1242
- readonly type: "object";
1243
- readonly properties: {
1244
- readonly relationModel: {
1245
- readonly anyOf: readonly [{
1031
+ readonly anyOf: readonly [{
1032
+ readonly type: "object";
1033
+ readonly properties: {
1034
+ readonly type: {
1246
1035
  readonly type: "string";
1247
- }, {
1248
- readonly type: "null";
1249
- }];
1036
+ readonly const: "account";
1037
+ };
1250
1038
  };
1251
- };
1252
- readonly additionalProperties: false;
1039
+ readonly required: readonly ["type"];
1040
+ readonly additionalProperties: false;
1041
+ }, {
1042
+ readonly type: "object";
1043
+ readonly properties: {
1044
+ readonly type: {
1045
+ readonly type: "string";
1046
+ readonly const: "attachment";
1047
+ };
1048
+ };
1049
+ readonly required: readonly ["type"];
1050
+ readonly additionalProperties: false;
1051
+ }, {
1052
+ readonly type: "object";
1053
+ readonly properties: {
1054
+ readonly type: {
1055
+ readonly type: "string";
1056
+ readonly const: "document";
1057
+ };
1058
+ readonly model: {
1059
+ readonly anyOf: readonly [{
1060
+ readonly type: "string";
1061
+ }, {
1062
+ readonly type: "null";
1063
+ }];
1064
+ };
1065
+ };
1066
+ readonly required: readonly ["type", "model"];
1067
+ readonly additionalProperties: false;
1068
+ }];
1253
1069
  };
1254
1070
  };
1255
1071
  };
@@ -1353,7 +1169,12 @@ export declare const validateClusterModel: import("@enkaku/schema").Validator<{
1353
1169
  };
1354
1170
  fieldsMeta: {
1355
1171
  [x: string]: {
1356
- relationModel?: string | null | undefined;
1172
+ type: "account";
1173
+ } | {
1174
+ type: "attachment";
1175
+ } | {
1176
+ type: "document";
1177
+ model: string | null;
1357
1178
  };
1358
1179
  };
1359
1180
  interfaces: string[];
@@ -1436,7 +1257,12 @@ export declare const validateClusterModel: import("@enkaku/schema").Validator<{
1436
1257
  };
1437
1258
  fieldsMeta: {
1438
1259
  [x: string]: {
1439
- relationModel?: string | null | undefined;
1260
+ type: "account";
1261
+ } | {
1262
+ type: "attachment";
1263
+ } | {
1264
+ type: "document";
1265
+ model: string | null;
1440
1266
  };
1441
1267
  };
1442
1268
  interfaces: string[];
@@ -1519,7 +1345,12 @@ export declare const validateClusterModel: import("@enkaku/schema").Validator<{
1519
1345
  };
1520
1346
  fieldsMeta: {
1521
1347
  [x: string]: {
1522
- relationModel?: string | null | undefined;
1348
+ type: "account";
1349
+ } | {
1350
+ type: "attachment";
1351
+ } | {
1352
+ type: "document";
1353
+ model: string | null;
1523
1354
  };
1524
1355
  };
1525
1356
  interfaces: string[];
@@ -1531,14 +1362,17 @@ export declare const validateClusterModel: import("@enkaku/schema").Validator<{
1531
1362
  };
1532
1363
  }>;
1533
1364
  export declare function verifyCluster(cluster: ClusterModel): DocumentModelsRecord;
1365
+ export type ClusterBuilderParams = {
1366
+ logger?: Logger;
1367
+ };
1534
1368
  export declare class ClusterBuilder {
1535
1369
  #private;
1370
+ constructor(params?: ClusterBuilderParams);
1536
1371
  get cluster(): DocumentModelsCluster;
1537
1372
  get length(): number;
1538
1373
  build(): ClusterModel;
1539
1374
  get(id: DocumentModelID | string | number): DocumentModel;
1540
- add(inputModel: SetDocumentModel): DocumentModelID;
1541
- addAll(models: Array<SetDocumentModel>): Array<DocumentModelID>;
1375
+ add(inputModel: DocumentModelInput): DocumentModelID;
1376
+ addAll(models: Array<DocumentModelInput>): Array<DocumentModelID>;
1542
1377
  }
1543
- export {};
1544
1378
  //# sourceMappingURL=cluster.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/models/cluster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/models/cluster.ts"],"names":[],"mappings":"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"}