nodecommons-esm-database-arangodb 0.0.2

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 { CommonsArangodbService } from './services/commons-arangodb.service.mjs';
2
+ import { TCommonsArangodbEdge, isTCommonsArangodbEdge } from './types/tcommons-arangodb-edge.mjs';
3
+ import { TCommonsArangodbDocument, isTCommonsArangodbDocument } from './types/tcommons-arangodb-document.mjs';
4
+ import { TCommonsArangodbTraversalDepth, isTCommonsArangodbTraversalDepth } from './types/tcommons-arangodb-traversal-depth.mjs';
5
+ export { CommonsArangodbService, TCommonsArangodbEdge, isTCommonsArangodbEdge, TCommonsArangodbDocument, isTCommonsArangodbDocument, TCommonsArangodbTraversalDepth, isTCommonsArangodbTraversalDepth };
package/dist/index.mjs ADDED
@@ -0,0 +1,6 @@
1
+ import { CommonsArangodbService } from './services/commons-arangodb.service.mjs';
2
+ import { isTCommonsArangodbEdge } from './types/tcommons-arangodb-edge.mjs';
3
+ import { isTCommonsArangodbDocument } from './types/tcommons-arangodb-document.mjs';
4
+ import { isTCommonsArangodbTraversalDepth } from './types/tcommons-arangodb-traversal-depth.mjs';
5
+ export { CommonsArangodbService, isTCommonsArangodbEdge, isTCommonsArangodbDocument, isTCommonsArangodbTraversalDepth };
6
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAwB,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAClG,OAAO,EAA4B,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAC9G,OAAO,EAAkC,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACjI,OAAO,EACN,sBAAsB,EAEtB,sBAAsB,EAEtB,0BAA0B,EAE1B,gCAAgC,EAChC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Database } from 'arangojs';
2
+ import { DocumentCollection, EdgeCollection } from 'arangojs/collections';
3
+ import { Document } from 'arangojs/documents';
4
+ import { Cursor } from 'arangojs/cursors';
5
+ import { GeneratedAqlQuery } from 'arangojs/aql';
6
+ import { TPropertyObject } from 'tscommons-esm-core';
7
+ import { CommonsNosqlDatabaseService, ICommonsCredentials } from 'nodecommons-esm-database';
8
+ import { TCommonsArangodbDocument } from '../types/tcommons-arangodb-document.mjs';
9
+ export declare abstract class CommonsArangodbService extends CommonsNosqlDatabaseService<ICommonsCredentials> {
10
+ private db;
11
+ protected init(): Promise<void>;
12
+ protected getRawDb(): Database;
13
+ getDocumentCollection<T extends TPropertyObject>(name: string): DocumentCollection<T>;
14
+ getEdgeCollection<T extends TPropertyObject>(name: string): EdgeCollection<T>;
15
+ query<T extends TPropertyObject>(query: GeneratedAqlQuery): Promise<Cursor<T>>;
16
+ protected listTDocumentByQuery<T extends TPropertyObject>(query: GeneratedAqlQuery): Promise<Document<T>[]>;
17
+ protected getFirstTDocumentByQuery<T extends TPropertyObject>(query: GeneratedAqlQuery): Promise<Document<T> | undefined>;
18
+ close(): void;
19
+ saveDocument<T extends TPropertyObject>(document: T, collection: string): Promise<T & TCommonsArangodbDocument>;
20
+ removeDocument<T extends TPropertyObject>(document: T & TCommonsArangodbDocument, collection: string): Promise<boolean>;
21
+ }
@@ -0,0 +1,65 @@
1
+ import { Database } from 'arangojs';
2
+ import { CommonsNosqlDatabaseService } from 'nodecommons-esm-database';
3
+ export class CommonsArangodbService extends CommonsNosqlDatabaseService {
4
+ db;
5
+ async init() {
6
+ this.db = new Database(`http://${this.credentials.host || 'localhost'}:${this.credentials.port || 8529}`, this.credentials.name);
7
+ if (this.credentials.user && this.credentials.user !== '') {
8
+ this.db.useBasicAuth(this.credentials.user, this.credentials.password);
9
+ }
10
+ }
11
+ getRawDb() {
12
+ if (!this.db)
13
+ throw new Error('Database not initialised');
14
+ return this.db;
15
+ }
16
+ getDocumentCollection(name) {
17
+ if (!this.db)
18
+ throw new Error('The database has not been initialised yet');
19
+ return this.db.collection(name);
20
+ }
21
+ getEdgeCollection(name) {
22
+ if (!this.db)
23
+ throw new Error('The database has not been initialised yet');
24
+ return this.db.collection(name);
25
+ }
26
+ async query(query) {
27
+ if (!this.db)
28
+ throw new Error('The database has not been initialised yet');
29
+ return await this.db.query(query);
30
+ }
31
+ async listTDocumentByQuery(query) {
32
+ const cursor = await this.query(query);
33
+ return cursor.all();
34
+ }
35
+ async getFirstTDocumentByQuery(query) {
36
+ const cursor = await this.query(query);
37
+ if (!cursor.hasNext)
38
+ return undefined;
39
+ const next = await cursor.next();
40
+ if (!next)
41
+ return undefined;
42
+ return next;
43
+ }
44
+ close() {
45
+ if (this.db)
46
+ this.db.close();
47
+ }
48
+ async saveDocument(document, collection) {
49
+ const c = this.getDocumentCollection(collection);
50
+ const result = await c.save(document);
51
+ if (result.new)
52
+ return result.new;
53
+ return {
54
+ ...document,
55
+ _id: result._id, // eslint-disable-line no-underscore-dangle
56
+ _key: result._key // eslint-disable-line no-underscore-dangle
57
+ };
58
+ }
59
+ async removeDocument(document, collection) {
60
+ const c = this.getDocumentCollection(collection);
61
+ const result = await c.remove(document);
62
+ return result.old !== undefined;
63
+ }
64
+ }
65
+ //# sourceMappingURL=commons-arangodb.service.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commons-arangodb.service.mjs","sourceRoot":"","sources":["../../src/services/commons-arangodb.service.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type TCommonsArangodbDocument = {
2
+ _id: string;
3
+ _key: string;
4
+ };
5
+ export declare function isTCommonsArangodbDocument(test: unknown): test is TCommonsArangodbDocument;
@@ -0,0 +1,9 @@
1
+ import { commonsTypeHasPropertyString } from 'tscommons-esm-core';
2
+ export function isTCommonsArangodbDocument(test) {
3
+ if (!commonsTypeHasPropertyString(test, '_id'))
4
+ return false;
5
+ if (!commonsTypeHasPropertyString(test, '_key'))
6
+ return false;
7
+ return true;
8
+ }
9
+ //# sourceMappingURL=tcommons-arangodb-document.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcommons-arangodb-document.mjs","sourceRoot":"","sources":["../../src/types/tcommons-arangodb-document.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAOlE,MAAM,UAAU,0BAA0B,CAAC,IAAa;IACvD,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9D,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TCommonsArangodbDocument } from './tcommons-arangodb-document.mjs';
2
+ export type TCommonsArangodbEdge = TCommonsArangodbDocument & {
3
+ _from: string;
4
+ _to: string;
5
+ };
6
+ export declare function isTCommonsArangodbEdge(test: unknown): test is TCommonsArangodbEdge;
@@ -0,0 +1,12 @@
1
+ import { commonsTypeHasPropertyString } from 'tscommons-esm-core';
2
+ import { isTCommonsArangodbDocument } from './tcommons-arangodb-document.mjs';
3
+ export function isTCommonsArangodbEdge(test) {
4
+ if (!isTCommonsArangodbDocument(test))
5
+ return false;
6
+ if (!commonsTypeHasPropertyString(test, '_from'))
7
+ return false;
8
+ if (!commonsTypeHasPropertyString(test, '_to'))
9
+ return false;
10
+ return true;
11
+ }
12
+ //# sourceMappingURL=tcommons-arangodb-edge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcommons-arangodb-edge.mjs","sourceRoot":"","sources":["../../src/types/tcommons-arangodb-edge.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAA4B,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAOxG,MAAM,UAAU,sBAAsB,CAAC,IAAa;IACnD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpD,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type TCommonsArangodbTraversalDepth = {
2
+ min: number;
3
+ max: number;
4
+ };
5
+ export declare function isTCommonsArangodbTraversalDepth(test: unknown): test is TCommonsArangodbTraversalDepth;
@@ -0,0 +1,9 @@
1
+ import { commonsTypeHasPropertyNumber } from 'tscommons-esm-core';
2
+ export function isTCommonsArangodbTraversalDepth(test) {
3
+ if (!commonsTypeHasPropertyNumber(test, 'min'))
4
+ return false;
5
+ if (!commonsTypeHasPropertyNumber(test, 'max'))
6
+ return false;
7
+ return true;
8
+ }
9
+ //# sourceMappingURL=tcommons-arangodb-traversal-depth.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcommons-arangodb-traversal-depth.mjs","sourceRoot":"","sources":["../../src/types/tcommons-arangodb-traversal-depth.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAOlE,MAAM,UAAU,gCAAgC,CAAC,IAAa;IAC7D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,OAAO,IAAI,CAAC;AACb,CAAC"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "nodecommons-esm-database-arangodb",
3
+ "version": "0.0.2",
4
+ "description": "",
5
+ "scripts": {
6
+ "tsc": "./node_modules/typescript/bin/tsc",
7
+ "preprepare": "rm -rf ./dist; php ~/Dev/etim.php src/ && npm run tsc",
8
+ "publish-major": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version major && npm install && npm publish && git add . && git commit -m 'publish'",
9
+ "publish-minor": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version minor && npm install && npm publish && git add . && git commit -m 'publish'",
10
+ "publish-patch": "rm -rf dist; npm run tsc && npx eslint . && npm run preprepare && npm version patch && npm install && npm publish && git add . && git commit -m 'publish'"
11
+ },
12
+ "main": "dist/index.mjs",
13
+ "types": "dist/index.d.mjs",
14
+ "type": "module",
15
+ "author": "Pete Morris",
16
+ "license": "ISC",
17
+ "devDependencies": {
18
+ "@stylistic/eslint-plugin-ts": "^2.11.0",
19
+ "@types/node": "^22.10.0",
20
+ "eslint-plugin-import": "^2.31.0",
21
+ "eslint-plugin-prefer-arrow-functions": "^3.4.1",
22
+ "typescript": "^5.7.2",
23
+ "typescript-eslint": "^8.16.0"
24
+ },
25
+ "files": [
26
+ "dist/**/*"
27
+ ],
28
+ "dependencies": {
29
+ "arangojs": "^10.1.1",
30
+ "nodecommons-esm-database": "^0.0.12",
31
+ "tscommons-esm-core": "^0.0.5"
32
+ }
33
+ }