New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

hadron-document

Package Overview
Dependencies
Maintainers
0
Versions
546
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hadron-document - npm Package Compare versions

Comparing version 0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158 to 0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b

23

dist/document.d.ts

@@ -11,3 +11,9 @@ import type { Element } from './element';

Collapsed: string;
VisibleElementsChanged: string;
EditingStarted: string;
EditingFinished: string;
MarkedForDeletion: string;
DeletionFinished: string;
};
export declare const DEFAULT_VISIBLE_ELEMENTS = 25;
export declare class Document extends EventEmitter {

@@ -23,2 +29,5 @@ uuid: string;

expanded: boolean;
maxVisibleElementsCount: number;
editing: boolean;
markedForDeletion: boolean;
cancel(): void;

@@ -56,4 +65,18 @@ constructor(doc: BSONObject, cloned?: boolean);

collapse(): void;
getVisibleElements(): Element[];
setMaxVisibleElementsCount(newCount: number): void;
getTotalVisibleElementsCount(): number;
startEditing(elementId?: string, field?: 'key' | 'value' | 'type'): void;
finishEditing(): void;
onUpdateStart(): void;
onUpdateSuccess(doc: Record<string, unknown>): void;
onUpdateBlocked(): void;
onUpdateError(error: Error): void;
markForDeletion(): void;
finishDeletion(): void;
onRemoveStart(): void;
onRemoveSuccess(): void;
onRemoveError(error: Error): void;
}
export default Document;
//# sourceMappingURL=document.d.ts.map

77

dist/document.js

@@ -6,3 +6,3 @@ 'use strict';

Object.defineProperty(exports, "__esModule", { value: true });
exports.Document = exports.Events = void 0;
exports.Document = exports.DEFAULT_VISIBLE_ELEMENTS = exports.Events = void 0;
const element_1 = require("./element");

@@ -13,2 +13,3 @@ const eventemitter3_1 = __importDefault(require("eventemitter3"));

const utils_1 = require("./utils");
const _1 = require(".");
exports.Events = {

@@ -18,4 +19,10 @@ Cancel: 'Document::Cancel',

Collapsed: 'Document::Collapsed',
VisibleElementsChanged: 'Document::VisibleElementsChanged',
EditingStarted: 'Document::EditingStarted',
EditingFinished: 'Document::EditingFinished',
MarkedForDeletion: 'Document::MarkedForDeletion',
DeletionFinished: 'Document::DeletionFinished',
};
const ID = '_id';
exports.DEFAULT_VISIBLE_ELEMENTS = 25;
class Document extends eventemitter3_1.default {

@@ -32,2 +39,5 @@ cancel() {

this.expanded = false;
this.maxVisibleElementsCount = exports.DEFAULT_VISIBLE_ELEMENTS;
this.editing = false;
this.markedForDeletion = false;
this.uuid = new bson_1.UUID().toHexString();

@@ -129,2 +139,3 @@ this.doc = doc;

newElement._bubbleUp(element_1.Events.Added, newElement, this);
this.emit(exports.Events.VisibleElementsChanged, this);
return newElement;

@@ -135,2 +146,3 @@ }

newElement._bubbleUp(element_1.Events.Added, newElement, this);
this.emit(exports.Events.VisibleElementsChanged, this);
return newElement;

@@ -141,2 +153,3 @@ }

newElement?._bubbleUp(element_1.Events.Added, newElement, this);
this.emit(exports.Events.VisibleElementsChanged, this);
return newElement;

@@ -189,2 +202,3 @@ }

this.emit(exports.Events.Expanded);
this.emit(exports.Events.VisibleElementsChanged, this);
}

@@ -197,3 +211,64 @@ collapse() {

this.emit(exports.Events.Collapsed);
this.emit(exports.Events.VisibleElementsChanged, this);
}
getVisibleElements() {
return [...this.elements].slice(0, this.maxVisibleElementsCount);
}
setMaxVisibleElementsCount(newCount) {
this.maxVisibleElementsCount = newCount;
this.emit(exports.Events.VisibleElementsChanged, this);
}
getTotalVisibleElementsCount() {
const visibleElements = this.getVisibleElements();
return visibleElements.reduce((totalVisibleChildElements, element) => {
return (totalVisibleChildElements + 1 + element.getTotalVisibleElementsCount());
}, 0);
}
startEditing(elementId, field) {
if (!this.editing) {
this.editing = true;
this.emit(_1.DocumentEvents.EditingStarted, elementId, field);
}
}
finishEditing() {
if (this.editing) {
this.editing = false;
this.emit(_1.DocumentEvents.EditingFinished);
}
}
onUpdateStart() {
this.emit('update-start');
}
onUpdateSuccess(doc) {
this.emit('update-success', doc);
this.finishEditing();
}
onUpdateBlocked() {
this.emit('update-blocked');
}
onUpdateError(error) {
this.emit('update-error', error.message);
}
markForDeletion() {
if (!this.markedForDeletion) {
this.markedForDeletion = true;
this.emit(_1.DocumentEvents.MarkedForDeletion);
}
}
finishDeletion() {
if (this.markedForDeletion) {
this.markedForDeletion = false;
this.emit(_1.DocumentEvents.DeletionFinished);
}
}
onRemoveStart() {
this.emit('remove-start');
}
onRemoveSuccess() {
this.emit('remove-success');
this.finishDeletion();
}
onRemoveError(error) {
this.emit('remove-error', error.message);
}
}

@@ -200,0 +275,0 @@ exports.Document = Document;

@@ -11,4 +11,5 @@ declare const _default: {

readonly Collapsed: "Element::Collapsed";
readonly VisibleElementsChanged: "Element::VisibleElementsChanged";
};
export default _default;
//# sourceMappingURL=element-events.d.ts.map

@@ -13,3 +13,4 @@ "use strict";

Collapsed: 'Element::Collapsed',
VisibleElementsChanged: 'Element::VisibleElementsChanged',
};
//# sourceMappingURL=element-events.js.map

@@ -11,2 +11,4 @@ import EventEmitter from 'eventemitter3';

export declare function isInternalFieldPath(path: string | number): boolean;
export declare const DEFAULT_VISIBLE_ELEMENTS = 25;
export declare function isValueExpandable(value: BSONValue): value is BSONObject | BSONArray;
export declare class Element extends EventEmitter {

@@ -30,2 +32,3 @@ uuid: string;

expanded: boolean;
maxVisibleElementsCount: number;
cancel(): void;

@@ -57,2 +60,3 @@ constructor(key: string | number, value: BSONValue | number, parent?: Element | Document | null, added?: boolean);

_isObjectIdEqual(): boolean;
_isExpandable(): boolean;
isLast(): boolean;

@@ -83,5 +87,8 @@ isRenamed(): boolean;

_isElementEmpty(element: Element | undefined | null): boolean;
_isExpandable(value: BSONValue): value is BSONObject | BSONArray;
_generateElements(object: BSONObject | BSONArray): ElementList;
_removeAddedElements(): void;
getVisibleElements(): Element[];
setMaxVisibleElementsCount(newCount: number): void;
getTotalVisibleElementsCount(): number;
private emitVisibleElementsChanged;
static get Events(): typeof ElementEvents;

@@ -88,0 +95,0 @@ }

@@ -6,3 +6,3 @@ 'use strict';

Object.defineProperty(exports, "__esModule", { value: true });
exports.ElementList = exports.Element = exports.isInternalFieldPath = exports.Events = exports.DATE_FORMAT = void 0;
exports.ElementList = exports.Element = exports.isValueExpandable = exports.DEFAULT_VISIBLE_ELEMENTS = exports.isInternalFieldPath = exports.Events = exports.DATE_FORMAT = void 0;
const eventemitter3_1 = __importDefault(require("eventemitter3"));

@@ -35,2 +35,7 @@ const lodash_1 = require("lodash");

];
exports.DEFAULT_VISIBLE_ELEMENTS = 25;
function isValueExpandable(value) {
return (0, lodash_1.isPlainObject)(value) || (0, lodash_1.isArray)(value);
}
exports.isValueExpandable = isValueExpandable;
class Element extends eventemitter3_1.default {

@@ -50,2 +55,3 @@ cancel() {

this.expanded = false;
this.maxVisibleElementsCount = exports.DEFAULT_VISIBLE_ELEMENTS;
this.uuid = new bson_1.UUID().toHexString();

@@ -64,3 +70,3 @@ this.key = key;

}
if (this._isExpandable(value)) {
if (isValueExpandable(value)) {
this.originalExpandableValue = value;

@@ -101,7 +107,7 @@ this.elements = this._generateElements(value);

this.currentType = hadron_type_checker_1.default.type(value);
if (this._isExpandable(value) && !this._isExpandable(this.currentValue)) {
if (isValueExpandable(value) && !isValueExpandable(this.currentValue)) {
this.currentValue = null;
this.elements = this._generateElements(value);
}
else if (!this._isExpandable(value) && this.elements) {
else if (!isValueExpandable(value) && this.elements) {
this.currentValue = value;

@@ -182,2 +188,3 @@ this.elements = undefined;

newElement._bubbleUp(element_events_1.default.Added, newElement, this);
this.emitVisibleElementsChanged();
return newElement;

@@ -191,2 +198,3 @@ }

this._bubbleUp(element_events_1.default.Added, newElement);
this.emitVisibleElementsChanged();
return newElement;

@@ -261,2 +269,5 @@ }

}
_isExpandable() {
return this.currentType === 'Array' || this.currentType === 'Object';
}
isLast() {

@@ -362,2 +373,3 @@ return this.parent?.elements?.lastElement === this;

this._bubbleUp(element_events_1.default.Removed, this, this.parent);
this.emitVisibleElementsChanged(this.parent);
}

@@ -369,2 +381,5 @@ }

this._bubbleUp(element_events_1.default.Removed, this, this.parent);
if (this.parent) {
this.emitVisibleElementsChanged(this.parent);
}
delete this.parent;

@@ -394,3 +409,3 @@ }

expand(expandChildren = false) {
if (!this._isExpandable(this.originalExpandableValue)) {
if (!this._isExpandable()) {
return;

@@ -405,5 +420,6 @@ }

this.emit(_1.ElementEvents.Expanded, this);
this.emitVisibleElementsChanged();
}
collapse() {
if (!this._isExpandable(this.originalExpandableValue)) {
if (!this._isExpandable()) {
return;

@@ -418,2 +434,3 @@ }

this.emit(_1.ElementEvents.Collapsed, this);
this.emitVisibleElementsChanged();
}

@@ -443,5 +460,2 @@ _bubbleUp(evt, ...data) {

}
_isExpandable(value) {
return (0, lodash_1.isPlainObject)(value) || (0, lodash_1.isArray)(value);
}
_generateElements(object) {

@@ -459,2 +473,31 @@ return new ElementList(this, object);

}
getVisibleElements() {
if (!this.elements || !this.expanded) {
return [];
}
return [...this.elements].slice(0, this.maxVisibleElementsCount);
}
setMaxVisibleElementsCount(newCount) {
if (!this._isExpandable()) {
return;
}
this.maxVisibleElementsCount = newCount;
this.emitVisibleElementsChanged();
}
getTotalVisibleElementsCount() {
if (!this.elements || !this.expanded) {
return 0;
}
return this.getVisibleElements().reduce((totalVisibleChildElements, element) => {
return (totalVisibleChildElements + 1 + element.getTotalVisibleElementsCount());
}, 0);
}
emitVisibleElementsChanged(targetElement = this) {
if (targetElement.isRoot()) {
targetElement.emit(_1.DocumentEvents.VisibleElementsChanged, targetElement);
}
else if (targetElement.expanded) {
targetElement._bubbleUp(element_events_1.default.VisibleElementsChanged, targetElement, targetElement.getRoot());
}
}
static get Events() {

@@ -461,0 +504,0 @@ return _1.ElementEvents;

6

dist/index.d.ts

@@ -1,3 +0,3 @@

import Document, { Events as DocumentEvents } from './document';
import Element, { Events as ElementEvents, isInternalFieldPath } from './element';
import Document, { Events as DocumentEvents, DEFAULT_VISIBLE_ELEMENTS as DEFAULT_VISIBLE_DOCUMENT_ELEMENTS } from './document';
import Element, { Events as ElementEvents, isInternalFieldPath, DEFAULT_VISIBLE_ELEMENTS } from './element';
import ElementEditor from './editor';

@@ -8,3 +8,3 @@ import type { Editor } from './editor';

export type { Editor };
export { Document, DocumentEvents, Element, ElementEvents, ElementEditor, isInternalFieldPath, getDefaultValueForType, objectToIdiomaticEJSON, };
export { Document, DocumentEvents, DEFAULT_VISIBLE_DOCUMENT_ELEMENTS, Element, ElementEvents, DEFAULT_VISIBLE_ELEMENTS, ElementEditor, isInternalFieldPath, getDefaultValueForType, objectToIdiomaticEJSON, };
//# sourceMappingURL=index.d.ts.map

@@ -29,6 +29,7 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.objectToIdiomaticEJSON = exports.getDefaultValueForType = exports.isInternalFieldPath = exports.ElementEditor = exports.ElementEvents = exports.Element = exports.DocumentEvents = exports.Document = void 0;
exports.objectToIdiomaticEJSON = exports.getDefaultValueForType = exports.isInternalFieldPath = exports.ElementEditor = exports.DEFAULT_VISIBLE_ELEMENTS = exports.ElementEvents = exports.Element = exports.DEFAULT_VISIBLE_DOCUMENT_ELEMENTS = exports.DocumentEvents = exports.Document = void 0;
const document_1 = __importStar(require("./document"));
exports.Document = document_1.default;
Object.defineProperty(exports, "DocumentEvents", { enumerable: true, get: function () { return document_1.Events; } });
Object.defineProperty(exports, "DEFAULT_VISIBLE_DOCUMENT_ELEMENTS", { enumerable: true, get: function () { return document_1.DEFAULT_VISIBLE_ELEMENTS; } });
const element_1 = __importStar(require("./element"));

@@ -38,2 +39,3 @@ exports.Element = element_1.default;

Object.defineProperty(exports, "isInternalFieldPath", { enumerable: true, get: function () { return element_1.isInternalFieldPath; } });
Object.defineProperty(exports, "DEFAULT_VISIBLE_ELEMENTS", { enumerable: true, get: function () { return element_1.DEFAULT_VISIBLE_ELEMENTS; } });
const editor_1 = __importDefault(require("./editor"));

@@ -40,0 +42,0 @@ exports.ElementEditor = editor_1.default;

@@ -10,3 +10,3 @@ {

"homepage": "https://github.com/mongodb-js/compass",
"version": "0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158",
"version": "0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b",
"repository": {

@@ -52,10 +52,10 @@ "type": "git",

"eventemitter3": "^4.0.0",
"hadron-type-checker": "0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158",
"hadron-type-checker": "0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b",
"lodash": "^4.17.21"
},
"devDependencies": {
"@mongodb-js/eslint-config-compass": "0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158",
"@mongodb-js/mocha-config-compass": "0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158",
"@mongodb-js/prettier-config-compass": "0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158",
"@mongodb-js/tsconfig-compass": "0.0.0-next-7c947c96565b95ba0e5f6a75a5adbb5bdbc22158",
"@mongodb-js/eslint-config-compass": "0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b",
"@mongodb-js/mocha-config-compass": "0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b",
"@mongodb-js/prettier-config-compass": "0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b",
"@mongodb-js/tsconfig-compass": "0.0.0-next-7d60fbd8c2507b0b952d0654732af0cd7386641b",
"chai": "^4.2.0",

@@ -70,3 +70,3 @@ "depcheck": "^1.4.1",

},
"gitHead": "7c947c96565b95ba0e5f6a75a5adbb5bdbc22158"
"gitHead": "7d60fbd8c2507b0b952d0654732af0cd7386641b"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc