hadron-document 8.6.2 → 8.6.3
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.
- package/dist/document.d.ts +152 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +161 -0
- package/dist/document.js.map +1 -1
- package/dist/editor/date.d.ts +36 -0
- package/dist/editor/date.d.ts.map +1 -1
- package/dist/editor/date.js +38 -0
- package/dist/editor/date.js.map +1 -1
- package/dist/editor/decimal128.d.ts +18 -0
- package/dist/editor/decimal128.d.ts.map +1 -1
- package/dist/editor/decimal128.js +18 -0
- package/dist/editor/decimal128.js.map +1 -1
- package/dist/editor/double.d.ts +25 -0
- package/dist/editor/double.d.ts.map +1 -1
- package/dist/editor/double.js +30 -1
- package/dist/editor/double.js.map +1 -1
- package/dist/editor/int32.d.ts +15 -0
- package/dist/editor/int32.d.ts.map +1 -1
- package/dist/editor/int32.js +15 -0
- package/dist/editor/int32.js.map +1 -1
- package/dist/editor/int64.d.ts +18 -0
- package/dist/editor/int64.d.ts.map +1 -1
- package/dist/editor/int64.js +18 -0
- package/dist/editor/int64.js.map +1 -1
- package/dist/editor/null.d.ts +20 -0
- package/dist/editor/null.d.ts.map +1 -1
- package/dist/editor/null.js +23 -0
- package/dist/editor/null.js.map +1 -1
- package/dist/editor/objectid.d.ts +20 -0
- package/dist/editor/objectid.d.ts.map +1 -1
- package/dist/editor/objectid.js +20 -0
- package/dist/editor/objectid.js.map +1 -1
- package/dist/editor/standard.d.ts +32 -0
- package/dist/editor/standard.d.ts.map +1 -1
- package/dist/editor/standard.js +36 -0
- package/dist/editor/standard.js.map +1 -1
- package/dist/editor/string.d.ts +8 -0
- package/dist/editor/string.d.ts.map +1 -1
- package/dist/editor/string.js +8 -0
- package/dist/editor/string.js.map +1 -1
- package/dist/editor/undefined.d.ts +20 -0
- package/dist/editor/undefined.d.ts.map +1 -1
- package/dist/editor/undefined.js +23 -0
- package/dist/editor/undefined.js.map +1 -1
- package/dist/element-events.d.ts +3 -0
- package/dist/element-events.d.ts.map +1 -1
- package/dist/element-events.js +3 -0
- package/dist/element-events.js.map +1 -1
- package/dist/element.d.ts +321 -0
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +341 -0
- package/dist/element.js.map +1 -1
- package/dist/object-generator.d.ts +96 -0
- package/dist/object-generator.d.ts.map +1 -1
- package/dist/object-generator.js +129 -0
- package/dist/object-generator.js.map +1 -1
- package/dist/utils.d.ts +22 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +25 -0
- package/dist/utils.js.map +1 -1
- package/package.json +5 -5
package/dist/document.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ import EventEmitter from 'eventemitter3';
|
|
|
4
4
|
import type { KeyInclusionOptions, ObjectGeneratorOptions } from './object-generator';
|
|
5
5
|
import type { BSONArray, BSONObject, BSONValue } from './utils';
|
|
6
6
|
import type { HadronEJSONOptions } from './utils';
|
|
7
|
+
/**
|
|
8
|
+
* The event constant.
|
|
9
|
+
*/
|
|
7
10
|
export declare const Events: {
|
|
8
11
|
Cancel: string;
|
|
9
12
|
Expanded: string;
|
|
@@ -15,6 +18,9 @@ export declare const Events: {
|
|
|
15
18
|
DeletionFinished: string;
|
|
16
19
|
};
|
|
17
20
|
export declare const DEFAULT_VISIBLE_ELEMENTS = 25;
|
|
21
|
+
/**
|
|
22
|
+
* Represents a document.
|
|
23
|
+
*/
|
|
18
24
|
export declare class Document extends EventEmitter {
|
|
19
25
|
uuid: string;
|
|
20
26
|
doc: BSONObject;
|
|
@@ -28,11 +34,46 @@ export declare class Document extends EventEmitter {
|
|
|
28
34
|
maxVisibleElementsCount: number;
|
|
29
35
|
editing: boolean;
|
|
30
36
|
markedForDeletion: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Send cancel event.
|
|
39
|
+
*/
|
|
31
40
|
cancel(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Create the new document from the provided object.
|
|
43
|
+
*
|
|
44
|
+
* @param {Object} doc - The document.
|
|
45
|
+
* @param {boolean} cloned - If it is a cloned document.
|
|
46
|
+
*/
|
|
32
47
|
constructor(doc: BSONObject, cloned?: boolean);
|
|
33
48
|
apply(doc: BSONObject | Document): void;
|
|
49
|
+
/**
|
|
50
|
+
* Generate the javascript object for this document.
|
|
51
|
+
*
|
|
52
|
+
* @returns {Object} The javascript object.
|
|
53
|
+
*/
|
|
34
54
|
generateObject(options?: ObjectGeneratorOptions): BSONObject;
|
|
55
|
+
/**
|
|
56
|
+
* Generate the javascript object with the original elements in this document.
|
|
57
|
+
*
|
|
58
|
+
* @returns {Object} The original javascript object.
|
|
59
|
+
*/
|
|
35
60
|
generateOriginalObject(options?: ObjectGeneratorOptions): BSONObject;
|
|
61
|
+
/**
|
|
62
|
+
* Generate the `query` and `updateDoc` to be used in an update operation
|
|
63
|
+
* where the update only succeeds when the changed document's elements have
|
|
64
|
+
* not been changed in the background.
|
|
65
|
+
*
|
|
66
|
+
* `query` and `updateDoc` may use $getField and $setField if field names
|
|
67
|
+
* contain either `.` or start with `$`. These operators are only available
|
|
68
|
+
* on MongoDB 5.0+. (Note that field names starting with `$` are also only
|
|
69
|
+
* allowed in MongoDB 5.0+.)
|
|
70
|
+
*
|
|
71
|
+
* @param keyInclusionOptions Specify which fields to include in the
|
|
72
|
+
* originalFields list.
|
|
73
|
+
*
|
|
74
|
+
* @returns {Object} An object containing the `query` and `updateDoc` to be
|
|
75
|
+
* used in an update operation.
|
|
76
|
+
*/
|
|
36
77
|
generateUpdateUnlessChangedInBackgroundQuery(opts?: Readonly<KeyInclusionOptions>): {
|
|
37
78
|
query: BSONObject;
|
|
38
79
|
updateDoc: {
|
|
@@ -40,25 +81,136 @@ export declare class Document extends EventEmitter {
|
|
|
40
81
|
$unset?: BSONObject;
|
|
41
82
|
} | BSONArray;
|
|
42
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* Get an element by its key.
|
|
86
|
+
*
|
|
87
|
+
* @param {String} key
|
|
88
|
+
*
|
|
89
|
+
* @returns {Element} The element.
|
|
90
|
+
*/
|
|
43
91
|
get(key: string): Element | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Get an element by a series of segment names.
|
|
94
|
+
*
|
|
95
|
+
* @param {Array} path - The series of fieldnames. Cannot be empty.
|
|
96
|
+
*
|
|
97
|
+
* @returns {Element} The element.
|
|
98
|
+
*/
|
|
44
99
|
getChild(path: (string | number)[]): Element | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Get the _id value for the document.
|
|
102
|
+
*
|
|
103
|
+
* @returns {Object} The id.
|
|
104
|
+
*/
|
|
45
105
|
getId(): BSONValue;
|
|
106
|
+
/**
|
|
107
|
+
* Generate the query javascript object reflecting the elements that
|
|
108
|
+
* are specified by the keys listed in `keys`. The values of this object are
|
|
109
|
+
* the original values, this can be used when querying for an update based
|
|
110
|
+
* on multiple criteria.
|
|
111
|
+
*
|
|
112
|
+
* @param keyInclusionOptions Specify which fields to include in the
|
|
113
|
+
* originalFields list.
|
|
114
|
+
*
|
|
115
|
+
* @returns {Object} The javascript object.
|
|
116
|
+
*/
|
|
46
117
|
getQueryForOriginalKeysAndValuesForSpecifiedKeys(opts?: Readonly<KeyInclusionOptions>): BSONObject;
|
|
118
|
+
/**
|
|
119
|
+
* Get the _id value as a string. Required if _id is not always an ObjectId.
|
|
120
|
+
*
|
|
121
|
+
* @returns {String} The string id.
|
|
122
|
+
*/
|
|
47
123
|
getStringId(): null | string;
|
|
124
|
+
/**
|
|
125
|
+
* Insert a placeholder element at the end of the document.
|
|
126
|
+
*
|
|
127
|
+
* @returns {Element} The placeholder element.
|
|
128
|
+
*/
|
|
48
129
|
insertPlaceholder(): Element;
|
|
130
|
+
/**
|
|
131
|
+
* Add a new element to this document.
|
|
132
|
+
*
|
|
133
|
+
* @param {String} key - The element key.
|
|
134
|
+
* @param {Object} value - The value.
|
|
135
|
+
*
|
|
136
|
+
* @returns {Element} The new element.
|
|
137
|
+
*/
|
|
49
138
|
insertBeginning(key: string | number, value: BSONValue): Element;
|
|
139
|
+
/**
|
|
140
|
+
* Add a new element to this document.
|
|
141
|
+
*
|
|
142
|
+
* @param {String} key - The element key.
|
|
143
|
+
* @param {Object} value - The value.
|
|
144
|
+
*
|
|
145
|
+
* @returns {Element} The new element.
|
|
146
|
+
*/
|
|
50
147
|
insertEnd(key: string | number, value: BSONValue): Element;
|
|
148
|
+
/**
|
|
149
|
+
* Insert an element after the provided element.
|
|
150
|
+
*
|
|
151
|
+
* @param {Element} element - The element to insert after.
|
|
152
|
+
* @param {String} key - The key.
|
|
153
|
+
* @param {Object} value - The value.
|
|
154
|
+
*
|
|
155
|
+
* @returns {Element} The new element.
|
|
156
|
+
*/
|
|
51
157
|
insertAfter(element: Element, key: string | number, value: BSONValue): Element | undefined;
|
|
158
|
+
/**
|
|
159
|
+
* A document always exists, is never added.
|
|
160
|
+
*
|
|
161
|
+
* @returns Always false.
|
|
162
|
+
*/
|
|
52
163
|
isAdded(): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Determine if the element is modified at all.
|
|
166
|
+
*
|
|
167
|
+
* @returns {Boolean} If the element is modified.
|
|
168
|
+
*/
|
|
53
169
|
isModified(): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* A document is never removed
|
|
172
|
+
*
|
|
173
|
+
* @returns {false} Always false.
|
|
174
|
+
*/
|
|
54
175
|
isRemoved(): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* The document object is always the root object.
|
|
178
|
+
*
|
|
179
|
+
* @returns {true} Always true.
|
|
180
|
+
*/
|
|
55
181
|
isRoot(): this is Document;
|
|
182
|
+
/**
|
|
183
|
+
* Generates a sequence of elements.
|
|
184
|
+
*
|
|
185
|
+
* @returns {Array} The elements.
|
|
186
|
+
*/
|
|
56
187
|
_generateElements(): ElementList;
|
|
188
|
+
/**
|
|
189
|
+
* @deprecated Use DocumentEvents import instead
|
|
190
|
+
*/
|
|
57
191
|
static get Events(): typeof Events;
|
|
192
|
+
/**
|
|
193
|
+
* Parse a new Document from extended JSON input.
|
|
194
|
+
*/
|
|
58
195
|
static FromEJSON(input: string): Document;
|
|
196
|
+
/**
|
|
197
|
+
* Parse multiple Document from extended JSON input.
|
|
198
|
+
* If the input consists of only a single document without
|
|
199
|
+
* `[array]` brackets, return an array consisting of only
|
|
200
|
+
* that document.
|
|
201
|
+
*/
|
|
59
202
|
static FromEJSONArray(input: string): Document[];
|
|
203
|
+
/**
|
|
204
|
+
* Convert this Document instance into a human-readable EJSON string.
|
|
205
|
+
*/
|
|
60
206
|
toEJSON(source?: 'original' | 'current', options?: HadronEJSONOptions): string;
|
|
207
|
+
/**
|
|
208
|
+
* Expands a document by expanding all of its fields
|
|
209
|
+
*/
|
|
61
210
|
expand(): void;
|
|
211
|
+
/**
|
|
212
|
+
* Collapses a document by collapsing all of its fields
|
|
213
|
+
*/
|
|
62
214
|
collapse(): void;
|
|
63
215
|
getVisibleElements(): Element[];
|
|
64
216
|
setMaxVisibleElementsCount(newCount: number): void;
|
package/dist/document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAA2B,MAAM,WAAW,CAAC;AACjE,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/dist/document.js
CHANGED
|
@@ -10,6 +10,9 @@ const bson_1 = require("bson");
|
|
|
10
10
|
const object_generator_1 = __importDefault(require("./object-generator"));
|
|
11
11
|
const utils_1 = require("./utils");
|
|
12
12
|
const _1 = require(".");
|
|
13
|
+
/**
|
|
14
|
+
* The event constant.
|
|
15
|
+
*/
|
|
13
16
|
exports.Events = {
|
|
14
17
|
Cancel: 'Document::Cancel',
|
|
15
18
|
Expanded: 'Document::Expanded',
|
|
@@ -20,15 +23,32 @@ exports.Events = {
|
|
|
20
23
|
MarkedForDeletion: 'Document::MarkedForDeletion',
|
|
21
24
|
DeletionFinished: 'Document::DeletionFinished',
|
|
22
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* The id field.
|
|
28
|
+
*/
|
|
23
29
|
const ID = '_id';
|
|
24
30
|
exports.DEFAULT_VISIBLE_ELEMENTS = 25;
|
|
31
|
+
/**
|
|
32
|
+
* Represents a document.
|
|
33
|
+
*/
|
|
25
34
|
class Document extends eventemitter3_1.default {
|
|
35
|
+
/**
|
|
36
|
+
* Send cancel event.
|
|
37
|
+
*/
|
|
26
38
|
cancel() {
|
|
39
|
+
// Cancel will remove elements from iterator, clone it before iterating
|
|
40
|
+
// otherwise we will skip items
|
|
27
41
|
for (const element of Array.from(this.elements)) {
|
|
28
42
|
element.cancel();
|
|
29
43
|
}
|
|
30
44
|
this.emit(exports.Events.Cancel);
|
|
31
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Create the new document from the provided object.
|
|
48
|
+
*
|
|
49
|
+
* @param {Object} doc - The document.
|
|
50
|
+
* @param {boolean} cloned - If it is a cloned document.
|
|
51
|
+
*/
|
|
32
52
|
constructor(doc, cloned = false) {
|
|
33
53
|
super();
|
|
34
54
|
this.size = null;
|
|
@@ -69,13 +89,43 @@ class Document extends eventemitter3_1.default {
|
|
|
69
89
|
}
|
|
70
90
|
}
|
|
71
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Generate the javascript object for this document.
|
|
94
|
+
*
|
|
95
|
+
* @returns {Object} The javascript object.
|
|
96
|
+
*/
|
|
72
97
|
generateObject(options) {
|
|
73
98
|
return object_generator_1.default.generate(this.elements, options);
|
|
74
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Generate the javascript object with the original elements in this document.
|
|
102
|
+
*
|
|
103
|
+
* @returns {Object} The original javascript object.
|
|
104
|
+
*/
|
|
75
105
|
generateOriginalObject(options) {
|
|
76
106
|
return object_generator_1.default.generateOriginal(this.elements, options);
|
|
77
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Generate the `query` and `updateDoc` to be used in an update operation
|
|
110
|
+
* where the update only succeeds when the changed document's elements have
|
|
111
|
+
* not been changed in the background.
|
|
112
|
+
*
|
|
113
|
+
* `query` and `updateDoc` may use $getField and $setField if field names
|
|
114
|
+
* contain either `.` or start with `$`. These operators are only available
|
|
115
|
+
* on MongoDB 5.0+. (Note that field names starting with `$` are also only
|
|
116
|
+
* allowed in MongoDB 5.0+.)
|
|
117
|
+
*
|
|
118
|
+
* @param keyInclusionOptions Specify which fields to include in the
|
|
119
|
+
* originalFields list.
|
|
120
|
+
*
|
|
121
|
+
* @returns {Object} An object containing the `query` and `updateDoc` to be
|
|
122
|
+
* used in an update operation.
|
|
123
|
+
*/
|
|
78
124
|
generateUpdateUnlessChangedInBackgroundQuery(opts = {}) {
|
|
125
|
+
// Build a query that will find the document to update only if it has the
|
|
126
|
+
// values of elements that were changed with their original value.
|
|
127
|
+
// This query won't find the document if an updated element's value isn't
|
|
128
|
+
// the same value as it was when it was originally loaded.
|
|
79
129
|
const originalFieldsThatWillBeUpdated = object_generator_1.default.getQueryForOriginalKeysAndValuesForSpecifiedFields(this, opts, true);
|
|
80
130
|
const query = {
|
|
81
131
|
_id: this.getId(),
|
|
@@ -87,9 +137,23 @@ class Document extends eventemitter3_1.default {
|
|
|
87
137
|
updateDoc,
|
|
88
138
|
};
|
|
89
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Get an element by its key.
|
|
142
|
+
*
|
|
143
|
+
* @param {String} key
|
|
144
|
+
*
|
|
145
|
+
* @returns {Element} The element.
|
|
146
|
+
*/
|
|
90
147
|
get(key) {
|
|
91
148
|
return this.elements.get(key);
|
|
92
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Get an element by a series of segment names.
|
|
152
|
+
*
|
|
153
|
+
* @param {Array} path - The series of fieldnames. Cannot be empty.
|
|
154
|
+
*
|
|
155
|
+
* @returns {Element} The element.
|
|
156
|
+
*/
|
|
93
157
|
getChild(path) {
|
|
94
158
|
if (!path) {
|
|
95
159
|
return undefined;
|
|
@@ -108,13 +172,34 @@ class Document extends eventemitter3_1.default {
|
|
|
108
172
|
}
|
|
109
173
|
return element;
|
|
110
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Get the _id value for the document.
|
|
177
|
+
*
|
|
178
|
+
* @returns {Object} The id.
|
|
179
|
+
*/
|
|
111
180
|
getId() {
|
|
112
181
|
const element = this.get(ID);
|
|
113
182
|
return element ? element.generateObject() : null;
|
|
114
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Generate the query javascript object reflecting the elements that
|
|
186
|
+
* are specified by the keys listed in `keys`. The values of this object are
|
|
187
|
+
* the original values, this can be used when querying for an update based
|
|
188
|
+
* on multiple criteria.
|
|
189
|
+
*
|
|
190
|
+
* @param keyInclusionOptions Specify which fields to include in the
|
|
191
|
+
* originalFields list.
|
|
192
|
+
*
|
|
193
|
+
* @returns {Object} The javascript object.
|
|
194
|
+
*/
|
|
115
195
|
getQueryForOriginalKeysAndValuesForSpecifiedKeys(opts = {}) {
|
|
116
196
|
return object_generator_1.default.getQueryForOriginalKeysAndValuesForSpecifiedFields(this, opts, false);
|
|
117
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Get the _id value as a string. Required if _id is not always an ObjectId.
|
|
200
|
+
*
|
|
201
|
+
* @returns {String} The string id.
|
|
202
|
+
*/
|
|
118
203
|
getStringId() {
|
|
119
204
|
const element = this.get(ID);
|
|
120
205
|
if (!element) {
|
|
@@ -126,30 +211,70 @@ class Document extends eventemitter3_1.default {
|
|
|
126
211
|
}
|
|
127
212
|
return String(element.value);
|
|
128
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Insert a placeholder element at the end of the document.
|
|
216
|
+
*
|
|
217
|
+
* @returns {Element} The placeholder element.
|
|
218
|
+
*/
|
|
129
219
|
insertPlaceholder() {
|
|
130
220
|
return this.insertEnd('', '');
|
|
131
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* Add a new element to this document.
|
|
224
|
+
*
|
|
225
|
+
* @param {String} key - The element key.
|
|
226
|
+
* @param {Object} value - The value.
|
|
227
|
+
*
|
|
228
|
+
* @returns {Element} The new element.
|
|
229
|
+
*/
|
|
132
230
|
insertBeginning(key, value) {
|
|
133
231
|
const newElement = this.elements.insertBeginning(key, value);
|
|
134
232
|
newElement._bubbleUp(element_1.Events.Added, newElement, this);
|
|
135
233
|
this.emit(exports.Events.VisibleElementsChanged, this);
|
|
136
234
|
return newElement;
|
|
137
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Add a new element to this document.
|
|
238
|
+
*
|
|
239
|
+
* @param {String} key - The element key.
|
|
240
|
+
* @param {Object} value - The value.
|
|
241
|
+
*
|
|
242
|
+
* @returns {Element} The new element.
|
|
243
|
+
*/
|
|
138
244
|
insertEnd(key, value) {
|
|
139
245
|
const newElement = this.elements.insertEnd(key, value);
|
|
140
246
|
newElement._bubbleUp(element_1.Events.Added, newElement, this);
|
|
141
247
|
this.emit(exports.Events.VisibleElementsChanged, this);
|
|
142
248
|
return newElement;
|
|
143
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Insert an element after the provided element.
|
|
252
|
+
*
|
|
253
|
+
* @param {Element} element - The element to insert after.
|
|
254
|
+
* @param {String} key - The key.
|
|
255
|
+
* @param {Object} value - The value.
|
|
256
|
+
*
|
|
257
|
+
* @returns {Element} The new element.
|
|
258
|
+
*/
|
|
144
259
|
insertAfter(element, key, value) {
|
|
145
260
|
const newElement = this.elements.insertAfter(element, key, value);
|
|
146
261
|
newElement?._bubbleUp(element_1.Events.Added, newElement, this);
|
|
147
262
|
this.emit(exports.Events.VisibleElementsChanged, this);
|
|
148
263
|
return newElement;
|
|
149
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* A document always exists, is never added.
|
|
267
|
+
*
|
|
268
|
+
* @returns Always false.
|
|
269
|
+
*/
|
|
150
270
|
isAdded() {
|
|
151
271
|
return false;
|
|
152
272
|
}
|
|
273
|
+
/**
|
|
274
|
+
* Determine if the element is modified at all.
|
|
275
|
+
*
|
|
276
|
+
* @returns {Boolean} If the element is modified.
|
|
277
|
+
*/
|
|
153
278
|
isModified() {
|
|
154
279
|
for (const element of this.elements) {
|
|
155
280
|
if (element.isModified()) {
|
|
@@ -158,34 +283,67 @@ class Document extends eventemitter3_1.default {
|
|
|
158
283
|
}
|
|
159
284
|
return false;
|
|
160
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* A document is never removed
|
|
288
|
+
*
|
|
289
|
+
* @returns {false} Always false.
|
|
290
|
+
*/
|
|
161
291
|
isRemoved() {
|
|
162
292
|
return false;
|
|
163
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* The document object is always the root object.
|
|
296
|
+
*
|
|
297
|
+
* @returns {true} Always true.
|
|
298
|
+
*/
|
|
164
299
|
isRoot() {
|
|
165
300
|
return true;
|
|
166
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Generates a sequence of elements.
|
|
304
|
+
*
|
|
305
|
+
* @returns {Array} The elements.
|
|
306
|
+
*/
|
|
167
307
|
_generateElements() {
|
|
168
308
|
return new element_1.ElementList(this, this.doc);
|
|
169
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* @deprecated Use DocumentEvents import instead
|
|
312
|
+
*/
|
|
170
313
|
static get Events() {
|
|
171
314
|
return exports.Events;
|
|
172
315
|
}
|
|
316
|
+
/**
|
|
317
|
+
* Parse a new Document from extended JSON input.
|
|
318
|
+
*/
|
|
173
319
|
static FromEJSON(input) {
|
|
174
320
|
const parsed = bson_1.EJSON.parse(input, { relaxed: false });
|
|
175
321
|
return new Document(parsed);
|
|
176
322
|
}
|
|
323
|
+
/**
|
|
324
|
+
* Parse multiple Document from extended JSON input.
|
|
325
|
+
* If the input consists of only a single document without
|
|
326
|
+
* `[array]` brackets, return an array consisting of only
|
|
327
|
+
* that document.
|
|
328
|
+
*/
|
|
177
329
|
static FromEJSONArray(input) {
|
|
178
330
|
const parsed = bson_1.EJSON.parse(input, { relaxed: false });
|
|
179
331
|
return Array.isArray(parsed)
|
|
180
332
|
? parsed.map((doc) => new Document(doc))
|
|
181
333
|
: [new Document(parsed)];
|
|
182
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* Convert this Document instance into a human-readable EJSON string.
|
|
337
|
+
*/
|
|
183
338
|
toEJSON(source = 'current', options = {}) {
|
|
184
339
|
const obj = source === 'original'
|
|
185
340
|
? this.generateOriginalObject()
|
|
186
341
|
: this.generateObject();
|
|
187
342
|
return (0, utils_1.objectToIdiomaticEJSON)(obj, options);
|
|
188
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Expands a document by expanding all of its fields
|
|
346
|
+
*/
|
|
189
347
|
expand() {
|
|
190
348
|
this.expanded = true;
|
|
191
349
|
for (const element of this.elements) {
|
|
@@ -194,6 +352,9 @@ class Document extends eventemitter3_1.default {
|
|
|
194
352
|
this.emit(exports.Events.Expanded);
|
|
195
353
|
this.emit(exports.Events.VisibleElementsChanged, this);
|
|
196
354
|
}
|
|
355
|
+
/**
|
|
356
|
+
* Collapses a document by collapsing all of its fields
|
|
357
|
+
*/
|
|
197
358
|
collapse() {
|
|
198
359
|
this.expanded = false;
|
|
199
360
|
for (const element of this.elements) {
|
package/dist/document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,uCAAiE;AACjE,kEAAyC;AACzC,+BAAmC;AAKnC,0EAAiD;AAEjD,mCAAiD;AAEjD,wBAAmC;
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/dist/editor/date.d.ts
CHANGED
|
@@ -1,12 +1,48 @@
|
|
|
1
1
|
import type { BSONValue } from '../utils';
|
|
2
2
|
import StandardEditor from './standard';
|
|
3
3
|
import type Element from '../element';
|
|
4
|
+
/**
|
|
5
|
+
* CRUD editor for date values.
|
|
6
|
+
*/
|
|
4
7
|
export default class DateEditor extends StandardEditor {
|
|
8
|
+
/**
|
|
9
|
+
* Create the editor with the element.
|
|
10
|
+
*
|
|
11
|
+
* @param {Element} element - The hadron document element.
|
|
12
|
+
*/
|
|
5
13
|
constructor(element: Element);
|
|
14
|
+
/**
|
|
15
|
+
* Complete the date edit by converting the valid string to a date
|
|
16
|
+
* object or leaving as invalid.
|
|
17
|
+
*/
|
|
6
18
|
complete(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Edit the element with the provided value.
|
|
21
|
+
*
|
|
22
|
+
* @param {Object} value - The new value.
|
|
23
|
+
*/
|
|
7
24
|
edit(value: BSONValue): void;
|
|
25
|
+
/**
|
|
26
|
+
* Get the number of characters the value should display.
|
|
27
|
+
*
|
|
28
|
+
* @param {Boolean} editMode - If the element is being edited.
|
|
29
|
+
*
|
|
30
|
+
* @returns {Number} The number of characters.
|
|
31
|
+
*/
|
|
8
32
|
size(editMode?: boolean): number;
|
|
33
|
+
/**
|
|
34
|
+
* Start the date edit.
|
|
35
|
+
*
|
|
36
|
+
* @param {Object} value - The value in the field.
|
|
37
|
+
*/
|
|
9
38
|
start(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get the value being edited.
|
|
41
|
+
*
|
|
42
|
+
* @param {Boolean} editMode - If the UI is in edit mode.
|
|
43
|
+
*
|
|
44
|
+
* @returns {String} The value.
|
|
45
|
+
*/
|
|
10
46
|
value(): string;
|
|
11
47
|
_formattedValue(): string;
|
|
12
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/editor/date.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,cAAc,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/editor/date.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,cAAc,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,cAAc;IACpD;;;;OAIG;gBACS,OAAO,EAAE,OAAO;IAI5B;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAOhB;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAmB5B;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAUhC;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAOb;;;;;;OAMG;IACH,KAAK,IAAI,MAAM;IAQf,eAAe,IAAI,MAAM;CAU1B"}
|
package/dist/editor/date.js
CHANGED
|
@@ -7,16 +7,33 @@ const hadron_type_checker_1 = __importDefault(require("hadron-type-checker"));
|
|
|
7
7
|
const element_events_1 = __importDefault(require("../element-events"));
|
|
8
8
|
const utils_1 = require("../utils");
|
|
9
9
|
const standard_1 = __importDefault(require("./standard"));
|
|
10
|
+
/**
|
|
11
|
+
* CRUD editor for date values.
|
|
12
|
+
*/
|
|
10
13
|
class DateEditor extends standard_1.default {
|
|
14
|
+
/**
|
|
15
|
+
* Create the editor with the element.
|
|
16
|
+
*
|
|
17
|
+
* @param {Element} element - The hadron document element.
|
|
18
|
+
*/
|
|
11
19
|
constructor(element) {
|
|
12
20
|
super(element);
|
|
13
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Complete the date edit by converting the valid string to a date
|
|
24
|
+
* object or leaving as invalid.
|
|
25
|
+
*/
|
|
14
26
|
complete() {
|
|
15
27
|
super.complete();
|
|
16
28
|
if (this.element.isCurrentTypeValid()) {
|
|
17
29
|
this.element.edit(hadron_type_checker_1.default.cast(this._formattedValue(), 'Date'));
|
|
18
30
|
}
|
|
19
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Edit the element with the provided value.
|
|
34
|
+
*
|
|
35
|
+
* @param {Object} value - The new value.
|
|
36
|
+
*/
|
|
20
37
|
edit(value) {
|
|
21
38
|
try {
|
|
22
39
|
const date = hadron_type_checker_1.default.cast(value, 'Date');
|
|
@@ -33,6 +50,13 @@ class DateEditor extends standard_1.default {
|
|
|
33
50
|
this.element.setInvalid(value, this.element.currentType, e.message);
|
|
34
51
|
}
|
|
35
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the number of characters the value should display.
|
|
55
|
+
*
|
|
56
|
+
* @param {Boolean} editMode - If the element is being edited.
|
|
57
|
+
*
|
|
58
|
+
* @returns {Number} The number of characters.
|
|
59
|
+
*/
|
|
36
60
|
size(editMode) {
|
|
37
61
|
const value = this.element.currentValue;
|
|
38
62
|
if (editMode) {
|
|
@@ -42,12 +66,24 @@ class DateEditor extends standard_1.default {
|
|
|
42
66
|
? (0, utils_1.fieldStringLen)(this._formattedValue())
|
|
43
67
|
: (0, utils_1.fieldStringLen)(value);
|
|
44
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Start the date edit.
|
|
71
|
+
*
|
|
72
|
+
* @param {Object} value - The value in the field.
|
|
73
|
+
*/
|
|
45
74
|
start() {
|
|
46
75
|
super.start();
|
|
47
76
|
if (this.element.isCurrentTypeValid()) {
|
|
48
77
|
this.edit(this._formattedValue());
|
|
49
78
|
}
|
|
50
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Get the value being edited.
|
|
82
|
+
*
|
|
83
|
+
* @param {Boolean} editMode - If the UI is in edit mode.
|
|
84
|
+
*
|
|
85
|
+
* @returns {String} The value.
|
|
86
|
+
*/
|
|
51
87
|
value() {
|
|
52
88
|
const value = this.element.currentValue;
|
|
53
89
|
if (!this.editing && this.element.isCurrentTypeValid()) {
|
|
@@ -56,6 +92,8 @@ class DateEditor extends standard_1.default {
|
|
|
56
92
|
return String(value);
|
|
57
93
|
}
|
|
58
94
|
_formattedValue() {
|
|
95
|
+
// BSON Date are uint64_t ms, JS Date only supports float64 ms,
|
|
96
|
+
// so some valid BSON Dates are not representable in JS.
|
|
59
97
|
const date = new Date(this.element.currentValue);
|
|
60
98
|
try {
|
|
61
99
|
return date.toISOString().replace('Z', '+00:00');
|