typeferry 0.6.1 → 0.7.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.
@@ -0,0 +1,5 @@
1
+ import type { z } from 'zod';
2
+ /** Marks a Zod schema as representing a native BSON ObjectId. */
3
+ export declare function markObjectIdSchema<TSchema extends z.core.$ZodType>(schema: TSchema): TSchema;
4
+ /** Tests whether a schema was created by TypeFerry's ObjectId helper. */
5
+ export declare function isObjectIdSchema(schema: z.core.$ZodType): boolean;
@@ -0,0 +1,11 @@
1
+ const objectIdSchemas = new WeakSet();
2
+ /** Marks a Zod schema as representing a native BSON ObjectId. */
3
+ export function markObjectIdSchema(schema) {
4
+ objectIdSchemas.add(schema);
5
+ return schema;
6
+ }
7
+ /** Tests whether a schema was created by TypeFerry's ObjectId helper. */
8
+ export function isObjectIdSchema(schema) {
9
+ return objectIdSchemas.has(schema);
10
+ }
11
+ //# sourceMappingURL=bson-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bson-schema.js","sourceRoot":"","sources":["../../src/mongodb/bson-schema.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,OAAO,EAAmB,CAAA;AAEtD,iEAAiE;AACjE,MAAM,UAAU,kBAAkB,CAChC,MAAe;IAEf,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,MAAuB;IACtD,OAAO,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC"}
@@ -8,3 +8,4 @@ export * from './registry.js';
8
8
  export * from './schema.js';
9
9
  export * from './timestamps.js';
10
10
  export * from './types.js';
11
+ export * from './validator.js';
@@ -8,4 +8,5 @@ export * from './registry.js';
8
8
  export * from './schema.js';
9
9
  export * from './timestamps.js';
10
10
  export * from './types.js';
11
+ export * from './validator.js';
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mongodb/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mongodb/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { Collection, Db, Document, MongoClient } from 'mongodb';
1
+ import { type Collection, type Db, type Document, type MongoClient } from 'mongodb';
2
2
  import type { TypeFerryMongo, TypeFerryMongoOptions, MongoCollectionClass, MongoCollectionDefinition, MongoCollectionTarget, MongoCollectionToken, MongoDocumentOf } from './types.js';
3
3
  /** Extracts a decorated collection class from a raw class or typed token. */
4
4
  export declare function mongoCollectionClass(target: MongoCollectionTarget): MongoCollectionClass;
@@ -27,6 +27,8 @@ export declare class TypeFerryMongoRegistry implements TypeFerryMongo {
27
27
  meta(target: MongoCollectionTarget): MongoCollectionDefinition;
28
28
  /** Creates all declared indexes without dropping or reconciling existing indexes. */
29
29
  ensureIndexes(): Promise<void>;
30
+ /** Creates missing collections and updates existing strict schema validators. */
31
+ ensureSchemas(): Promise<void>;
30
32
  /** Closes change streams and the owned MongoDB client when applicable. */
31
33
  close(): Promise<void>;
32
34
  private startWatches;
@@ -1,7 +1,10 @@
1
+ import { MongoServerError, } from 'mongodb';
1
2
  import { startMongoWatch } from './change-streams.js';
2
3
  import { resolveMongoConnection } from './client.js';
3
4
  import { getMongoCollectionDefinition } from './decorators/index.js';
4
5
  import { MongoLiveEngine } from './live/engine.js';
6
+ import { mongoValidator } from './validator.js';
7
+ const NAMESPACE_EXISTS_ERROR_CODE = 48;
5
8
  /** Extracts a decorated collection class from a raw class or typed token. */
6
9
  export function mongoCollectionClass(target) {
7
10
  return 'Class' in target ? target.Class : target;
@@ -79,6 +82,36 @@ export class TypeFerryMongoRegistry {
79
82
  }
80
83
  }
81
84
  }
85
+ /** Creates missing collections and updates existing strict schema validators. */
86
+ async ensureSchemas() {
87
+ for (const definition of this.definitions.values()) {
88
+ if (!definition.schema) {
89
+ throw new Error(`MongoDB collection "${definition.name}" is missing @MongoSchema metadata.`);
90
+ }
91
+ const options = {
92
+ validator: mongoValidator(definition.schema),
93
+ validationLevel: 'strict',
94
+ validationAction: 'error',
95
+ };
96
+ const exists = await this.db
97
+ .listCollections({ name: definition.name }, { nameOnly: true })
98
+ .hasNext();
99
+ if (exists) {
100
+ await this.db.command({ collMod: definition.name, ...options });
101
+ continue;
102
+ }
103
+ try {
104
+ await this.db.createCollection(definition.name, options);
105
+ }
106
+ catch (error) {
107
+ if (!(error instanceof MongoServerError) ||
108
+ error.code !== NAMESPACE_EXISTS_ERROR_CODE) {
109
+ throw error;
110
+ }
111
+ await this.db.command({ collMod: definition.name, ...options });
112
+ }
113
+ }
114
+ }
82
115
  /** Closes change streams and the owned MongoDB client when applicable. */
83
116
  async close() {
84
117
  await this.liveEngine?.close();
@@ -111,6 +144,9 @@ export async function createTypeFerryMongo(options) {
111
144
  let registry = null;
112
145
  try {
113
146
  registry = new TypeFerryMongoRegistry(options, connection);
147
+ if (options.ensureSchemas) {
148
+ await registry.ensureSchemas();
149
+ }
114
150
  if (options.ensureIndexes) {
115
151
  await registry.ensureIndexes();
116
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/mongodb/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/mongodb/registry.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { ObjectId } from 'mongodb';
2
2
  import { z } from 'zod';
3
+ import { markObjectIdSchema } from './bson-schema.js';
3
4
  /** Zod schema that accepts only native MongoDB `ObjectId` values. */
4
5
  export function objectId() {
5
- return z.custom((value) => value instanceof ObjectId, 'Expected MongoDB ObjectId');
6
+ return markObjectIdSchema(z.custom((value) => value instanceof ObjectId, 'Expected MongoDB ObjectId'));
6
7
  }
7
8
  /** Zod schema that coerces valid hex strings into native MongoDB `ObjectId`s. */
8
9
  export function coerceObjectId() {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/mongodb/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,qEAAqE;AACrE,MAAM,UAAU,QAAQ;IACtB,OAAO,CAAC,CAAC,MAAM,CACb,CAAC,KAAK,EAAqB,EAAE,CAAC,KAAK,YAAY,QAAQ,EACvD,2BAA2B,CAC5B,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAC1B,IAAI,KAAK,YAAY,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAChB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,KAAwB;IACjD,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,IAAI,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAwB;IAClD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;AACxC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW,CACzB,MAA4B,EAC5B,KAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAC9B,MAA4B,EAC5B,KAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,QAAQ,CACtB,MAAuB,EACvB,KAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/mongodb/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,SAAS,CAAA;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAElD,qEAAqE;AACrE,MAAM,UAAU,QAAQ;IACtB,OAAO,kBAAkB,CACvB,CAAC,CAAC,MAAM,CACN,CAAC,KAAK,EAAqB,EAAE,CAAC,KAAK,YAAY,QAAQ,EACvD,2BAA2B,CAC5B,CACF,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc;IAC5B,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QAC1B,IAAI,KAAK,YAAY,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;AAChB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,KAAwB;IACjD,IAAI,KAAK,YAAY,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,IAAI,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAwB;IAClD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;AACxC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,WAAW,CACzB,MAA4B,EAC5B,KAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAC9B,MAA4B,EAC5B,KAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,QAAQ,CACtB,MAAuB,EACvB,KAAc;IAEd,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC5B,CAAC"}
@@ -55,7 +55,7 @@ export interface MongoCollectionDefinition<TDocument extends Document = Document
55
55
  readonly Class: MongoCollectionClass;
56
56
  /** MongoDB collection name. */
57
57
  readonly name: string;
58
- /** Optional Zod schema used by explicit parse helpers. */
58
+ /** Optional Zod schema used by explicit parsing and schema reconciliation. */
59
59
  readonly schema?: z.ZodType<TDocument>;
60
60
  /** Indexes declared for explicit or opt-in startup creation. */
61
61
  readonly indexes: readonly MongoIndexDefinition[];
@@ -80,6 +80,8 @@ export interface TypeFerryMongoOptions {
80
80
  readonly collections: readonly MongoCollectionTarget[];
81
81
  /** Whether to create declared indexes during startup. */
82
82
  readonly ensureIndexes?: boolean;
83
+ /** Whether to reconcile declared schemas during startup. */
84
+ readonly ensureSchemas?: boolean;
83
85
  /** Whether `close()` should close an externally supplied client. */
84
86
  readonly closeExternalClient?: boolean;
85
87
  /** Optional named MongoDB live-view extension. */
@@ -99,6 +101,8 @@ export interface TypeFerryMongo {
99
101
  meta(target: MongoCollectionTarget): MongoCollectionDefinition;
100
102
  /** Creates all declared indexes without dropping or reconciling existing indexes. */
101
103
  ensureIndexes(): Promise<void>;
104
+ /** Creates or updates strict MongoDB validators for all declared schemas. */
105
+ ensureSchemas(): Promise<void>;
102
106
  /** Closes change streams and the owned MongoDB client when applicable. */
103
107
  close(): Promise<void>;
104
108
  }
@@ -0,0 +1,6 @@
1
+ import type { Document } from 'mongodb';
2
+ import { z } from 'zod';
3
+ /** Compiles a supported Zod document schema into MongoDB's BSON schema dialect. */
4
+ export declare function toMongoJsonSchema<TDocument extends Document>(schema: z.ZodType<TDocument>): Document;
5
+ /** Wraps a compiled BSON schema in MongoDB's collection-validator shape. */
6
+ export declare function mongoValidator<TDocument extends Document>(schema: z.ZodType<TDocument>): Document;
@@ -0,0 +1,172 @@
1
+ import { z } from 'zod';
2
+ import { isObjectIdSchema } from './bson-schema.js';
3
+ const BSON_NUMERIC_TYPES = ['int', 'long', 'double', 'decimal'];
4
+ /**
5
+ * MongoDB accepts a deliberately smaller JSON Schema vocabulary than the
6
+ * general JSON Schema dialect emitted by Zod. Keep this allow-list explicit so
7
+ * a newly emitted keyword cannot silently weaken a database validator.
8
+ */
9
+ const BSON_SCHEMA_KEYS = new Set([
10
+ 'additionalProperties',
11
+ 'allOf',
12
+ 'anyOf',
13
+ 'bsonType',
14
+ 'description',
15
+ 'enum',
16
+ 'exclusiveMaximum',
17
+ 'exclusiveMinimum',
18
+ 'items',
19
+ 'maximum',
20
+ 'maxItems',
21
+ 'maxLength',
22
+ 'minimum',
23
+ 'minItems',
24
+ 'minLength',
25
+ 'multipleOf',
26
+ 'not',
27
+ 'oneOf',
28
+ 'pattern',
29
+ 'properties',
30
+ 'required',
31
+ 'type',
32
+ 'uniqueItems',
33
+ ]);
34
+ /** Compiles a supported Zod document schema into MongoDB's BSON schema dialect. */
35
+ export function toMongoJsonSchema(schema) {
36
+ const jsonSchema = z.toJSONSchema(schema, {
37
+ target: 'draft-04',
38
+ io: 'output',
39
+ cycles: 'throw',
40
+ reused: 'inline',
41
+ unrepresentable: 'any',
42
+ override: ({ zodSchema, jsonSchema: generated, path }) => {
43
+ if (isObjectIdSchema(zodSchema)) {
44
+ replaceContents(generated, { bsonType: 'objectId' });
45
+ return;
46
+ }
47
+ if (zodSchema instanceof z.ZodDate) {
48
+ replaceContents(generated, { bsonType: 'date' });
49
+ return;
50
+ }
51
+ if (Object.keys(generated).length === 0) {
52
+ const location = path.length > 0 ? path.join('.') : '<root>';
53
+ throw new Error(`Cannot derive a MongoDB validator for unsupported Zod schema at ${location}.`);
54
+ }
55
+ },
56
+ });
57
+ const converted = convertSchema(jsonSchema, []);
58
+ delete converted.$schema;
59
+ allowGeneratedObjectId(converted);
60
+ return converted;
61
+ }
62
+ /** Wraps a compiled BSON schema in MongoDB's collection-validator shape. */
63
+ export function mongoValidator(schema) {
64
+ return { $jsonSchema: toMongoJsonSchema(schema) };
65
+ }
66
+ function convertSchema(value, path) {
67
+ if (!isJsonObject(value)) {
68
+ throwUnsupported(path, 'Zod emitted a non-object JSON Schema node.');
69
+ }
70
+ if (Object.keys(value).length === 0) {
71
+ throwUnsupported(path, 'Zod emitted an unconstrained JSON Schema node.');
72
+ }
73
+ const result = {};
74
+ for (const [key, child] of Object.entries(value)) {
75
+ if (key === '$schema' || key === '~standard')
76
+ continue;
77
+ if (key === 'type') {
78
+ result.bsonType = convertJsonTypes(child);
79
+ continue;
80
+ }
81
+ if (key === 'properties' && isJsonObject(child)) {
82
+ result.properties = Object.fromEntries(Object.entries(child).map(([name, property]) => [
83
+ name,
84
+ convertSchema(property, [...path, 'properties', name]),
85
+ ]));
86
+ continue;
87
+ }
88
+ if (key === 'items') {
89
+ if (!isJsonObject(child)) {
90
+ throwUnsupported([...path, key], 'Tuple schemas are not supported.');
91
+ }
92
+ result.items = convertSchema(child, [...path, key]);
93
+ continue;
94
+ }
95
+ if (['allOf', 'anyOf', 'oneOf'].includes(key) && Array.isArray(child)) {
96
+ result[key] = child.map((item, index) => convertSchema(item, [...path, key, String(index)]));
97
+ continue;
98
+ }
99
+ if (key === 'not' && isJsonObject(child)) {
100
+ result.not = convertSchema(child, [...path, key]);
101
+ continue;
102
+ }
103
+ if (key === 'additionalProperties') {
104
+ if (typeof child === 'boolean') {
105
+ result.additionalProperties = child;
106
+ }
107
+ else if (isJsonObject(child)) {
108
+ result.additionalProperties = convertSchema(child, [...path, key]);
109
+ }
110
+ else {
111
+ throwUnsupported([...path, key], 'Zod emitted an invalid additionalProperties schema.');
112
+ }
113
+ continue;
114
+ }
115
+ if (key === 'const') {
116
+ result.enum = [child];
117
+ continue;
118
+ }
119
+ if (key === 'format') {
120
+ if (typeof value.pattern !== 'string') {
121
+ throwUnsupported([...path, key], `Zod string format "${String(child)}" has no MongoDB-compatible pattern.`);
122
+ }
123
+ continue;
124
+ }
125
+ if (!BSON_SCHEMA_KEYS.has(key)) {
126
+ throwUnsupported([...path, key], `Zod emitted unsupported JSON Schema keyword "${key}".`);
127
+ }
128
+ result[key] = child;
129
+ }
130
+ if (Object.keys(result).length === 0) {
131
+ throwUnsupported(path, 'Zod emitted an unconstrained JSON Schema node.');
132
+ }
133
+ return result;
134
+ }
135
+ function convertJsonTypes(value) {
136
+ if (Array.isArray(value)) {
137
+ return value.flatMap(convertJsonType);
138
+ }
139
+ if (typeof value !== 'string') {
140
+ throw new Error('Zod emitted an invalid JSON Schema type.');
141
+ }
142
+ return convertJsonType(value);
143
+ }
144
+ function convertJsonType(value) {
145
+ if (value === 'number' || value === 'integer')
146
+ return BSON_NUMERIC_TYPES;
147
+ return value;
148
+ }
149
+ function allowGeneratedObjectId(schema) {
150
+ if (schema.bsonType !== 'object')
151
+ return;
152
+ const properties = schema.properties;
153
+ if (!isJsonObject(properties) || Object.hasOwn(properties, '_id'))
154
+ return;
155
+ schema.properties = {
156
+ _id: { bsonType: 'objectId' },
157
+ ...properties,
158
+ };
159
+ }
160
+ function replaceContents(target, replacement) {
161
+ for (const key of Object.keys(target))
162
+ delete target[key];
163
+ Object.assign(target, replacement);
164
+ }
165
+ function isJsonObject(value) {
166
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
167
+ }
168
+ function throwUnsupported(path, message) {
169
+ const location = path.length > 0 ? path.join('.') : '<root>';
170
+ throw new Error(`${message} at ${location}.`);
171
+ }
172
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/mongodb/validator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typeferry",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "Type-safe real-time RPC framework for TypeScript",
5
5
  "type": "module",
6
6
  "sideEffects": false,