@neo4j-cypher/query-tools 2.0.0-next.19

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.
Files changed (149) hide show
  1. package/CHANGELOG.md +173 -0
  2. package/LICENSE.md +201 -0
  3. package/README.md +7 -0
  4. package/dist/cjs/package.json +41 -0
  5. package/dist/cjs/src/connectionErrorHandler.d.ts +12 -0
  6. package/dist/cjs/src/connectionErrorHandler.js +41 -0
  7. package/dist/cjs/src/connectionErrorHandler.js.map +1 -0
  8. package/dist/cjs/src/cypher-execution/query-result.d.ts +11 -0
  9. package/dist/cjs/src/cypher-execution/query-result.js +195 -0
  10. package/dist/cjs/src/cypher-execution/query-result.js.map +1 -0
  11. package/dist/cjs/src/data-transforms/clean-type.d.ts +6 -0
  12. package/dist/cjs/src/data-transforms/clean-type.js +16 -0
  13. package/dist/cjs/src/data-transforms/clean-type.js.map +1 -0
  14. package/dist/cjs/src/data-transforms/cypher-type-names.d.ts +6 -0
  15. package/dist/cjs/src/data-transforms/cypher-type-names.js +85 -0
  16. package/dist/cjs/src/data-transforms/cypher-type-names.js.map +1 -0
  17. package/dist/cjs/src/data-transforms/format-float.d.ts +1 -0
  18. package/dist/cjs/src/data-transforms/format-float.js +14 -0
  19. package/dist/cjs/src/data-transforms/format-float.js.map +1 -0
  20. package/dist/cjs/src/data-transforms/record-to-string.d.ts +5 -0
  21. package/dist/cjs/src/data-transforms/record-to-string.js +174 -0
  22. package/dist/cjs/src/data-transforms/record-to-string.js.map +1 -0
  23. package/dist/cjs/src/data-types/cypher-data-types.d.ts +29 -0
  24. package/dist/cjs/src/data-types/cypher-data-types.js +3 -0
  25. package/dist/cjs/src/data-types/cypher-data-types.js.map +1 -0
  26. package/dist/cjs/src/index.d.ts +14 -0
  27. package/dist/cjs/src/index.js +15 -0
  28. package/dist/cjs/src/index.js.map +1 -0
  29. package/dist/cjs/src/metadataPoller.d.ts +31 -0
  30. package/dist/cjs/src/metadataPoller.js +197 -0
  31. package/dist/cjs/src/metadataPoller.js.map +1 -0
  32. package/dist/cjs/src/neo4jConnection.d.ts +29 -0
  33. package/dist/cjs/src/neo4jConnection.js +107 -0
  34. package/dist/cjs/src/neo4jConnection.js.map +1 -0
  35. package/dist/cjs/src/queries/dataSummary.d.ts +7 -0
  36. package/dist/cjs/src/queries/dataSummary.js +33 -0
  37. package/dist/cjs/src/queries/dataSummary.js.map +1 -0
  38. package/dist/cjs/src/queries/databases.d.ts +27 -0
  39. package/dist/cjs/src/queries/databases.js +28 -0
  40. package/dist/cjs/src/queries/databases.js.map +1 -0
  41. package/dist/cjs/src/queries/functions.d.ts +16 -0
  42. package/dist/cjs/src/queries/functions.js +88 -0
  43. package/dist/cjs/src/queries/functions.js.map +1 -0
  44. package/dist/cjs/src/queries/procedures.d.ts +16 -0
  45. package/dist/cjs/src/queries/procedures.js +106 -0
  46. package/dist/cjs/src/queries/procedures.js.map +1 -0
  47. package/dist/cjs/src/queries/roles.d.ts +11 -0
  48. package/dist/cjs/src/queries/roles.js +24 -0
  49. package/dist/cjs/src/queries/roles.js.map +1 -0
  50. package/dist/cjs/src/queries/users.d.ts +15 -0
  51. package/dist/cjs/src/queries/users.js +24 -0
  52. package/dist/cjs/src/queries/users.js.map +1 -0
  53. package/dist/cjs/src/queries/version.d.ts +7 -0
  54. package/dist/cjs/src/queries/version.js +26 -0
  55. package/dist/cjs/src/queries/version.js.map +1 -0
  56. package/dist/cjs/src/schemaPoller.d.ts +44 -0
  57. package/dist/cjs/src/schemaPoller.js +167 -0
  58. package/dist/cjs/src/schemaPoller.js.map +1 -0
  59. package/dist/cjs/src/types/cypher-data-types.d.ts +41 -0
  60. package/dist/cjs/src/types/cypher-data-types.js +46 -0
  61. package/dist/cjs/src/types/cypher-data-types.js.map +1 -0
  62. package/dist/cjs/src/types/sdkTypes.d.ts +17 -0
  63. package/dist/cjs/src/types/sdkTypes.js +3 -0
  64. package/dist/cjs/src/types/sdkTypes.js.map +1 -0
  65. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  66. package/dist/esm/package.json +41 -0
  67. package/dist/esm/src/connectionErrorHandler.d.ts +12 -0
  68. package/dist/esm/src/connectionErrorHandler.js +35 -0
  69. package/dist/esm/src/connectionErrorHandler.js.map +1 -0
  70. package/dist/esm/src/cypher-execution/query-result.d.ts +11 -0
  71. package/dist/esm/src/cypher-execution/query-result.js +188 -0
  72. package/dist/esm/src/cypher-execution/query-result.js.map +1 -0
  73. package/dist/esm/src/data-transforms/clean-type.d.ts +6 -0
  74. package/dist/esm/src/data-transforms/clean-type.js +12 -0
  75. package/dist/esm/src/data-transforms/clean-type.js.map +1 -0
  76. package/dist/esm/src/data-transforms/cypher-type-names.d.ts +6 -0
  77. package/dist/esm/src/data-transforms/cypher-type-names.js +80 -0
  78. package/dist/esm/src/data-transforms/cypher-type-names.js.map +1 -0
  79. package/dist/esm/src/data-transforms/format-float.d.ts +1 -0
  80. package/dist/esm/src/data-transforms/format-float.js +10 -0
  81. package/dist/esm/src/data-transforms/format-float.js.map +1 -0
  82. package/dist/esm/src/data-transforms/record-to-string.d.ts +5 -0
  83. package/dist/esm/src/data-transforms/record-to-string.js +169 -0
  84. package/dist/esm/src/data-transforms/record-to-string.js.map +1 -0
  85. package/dist/esm/src/data-types/cypher-data-types.d.ts +29 -0
  86. package/dist/esm/src/data-types/cypher-data-types.js +2 -0
  87. package/dist/esm/src/data-types/cypher-data-types.js.map +1 -0
  88. package/dist/esm/src/index.d.ts +14 -0
  89. package/dist/esm/src/index.js +6 -0
  90. package/dist/esm/src/index.js.map +1 -0
  91. package/dist/esm/src/metadataPoller.d.ts +31 -0
  92. package/dist/esm/src/metadataPoller.js +191 -0
  93. package/dist/esm/src/metadataPoller.js.map +1 -0
  94. package/dist/esm/src/neo4jConnection.d.ts +29 -0
  95. package/dist/esm/src/neo4jConnection.js +103 -0
  96. package/dist/esm/src/neo4jConnection.js.map +1 -0
  97. package/dist/esm/src/queries/dataSummary.d.ts +7 -0
  98. package/dist/esm/src/queries/dataSummary.js +30 -0
  99. package/dist/esm/src/queries/dataSummary.js.map +1 -0
  100. package/dist/esm/src/queries/databases.d.ts +27 -0
  101. package/dist/esm/src/queries/databases.js +25 -0
  102. package/dist/esm/src/queries/databases.js.map +1 -0
  103. package/dist/esm/src/queries/functions.d.ts +16 -0
  104. package/dist/esm/src/queries/functions.js +81 -0
  105. package/dist/esm/src/queries/functions.js.map +1 -0
  106. package/dist/esm/src/queries/procedures.d.ts +16 -0
  107. package/dist/esm/src/queries/procedures.js +99 -0
  108. package/dist/esm/src/queries/procedures.js.map +1 -0
  109. package/dist/esm/src/queries/roles.d.ts +11 -0
  110. package/dist/esm/src/queries/roles.js +21 -0
  111. package/dist/esm/src/queries/roles.js.map +1 -0
  112. package/dist/esm/src/queries/users.d.ts +15 -0
  113. package/dist/esm/src/queries/users.js +21 -0
  114. package/dist/esm/src/queries/users.js.map +1 -0
  115. package/dist/esm/src/queries/version.d.ts +7 -0
  116. package/dist/esm/src/queries/version.js +23 -0
  117. package/dist/esm/src/queries/version.js.map +1 -0
  118. package/dist/esm/src/schemaPoller.d.ts +44 -0
  119. package/dist/esm/src/schemaPoller.js +160 -0
  120. package/dist/esm/src/schemaPoller.js.map +1 -0
  121. package/dist/esm/src/types/cypher-data-types.d.ts +41 -0
  122. package/dist/esm/src/types/cypher-data-types.js +39 -0
  123. package/dist/esm/src/types/cypher-data-types.js.map +1 -0
  124. package/dist/esm/src/types/sdkTypes.d.ts +17 -0
  125. package/dist/esm/src/types/sdkTypes.js +2 -0
  126. package/dist/esm/src/types/sdkTypes.js.map +1 -0
  127. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  128. package/package.json +41 -0
  129. package/src/connectionErrorHandler.ts +56 -0
  130. package/src/cypher-execution/query-result.ts +348 -0
  131. package/src/data-transforms/clean-type.ts +13 -0
  132. package/src/data-transforms/cypher-type-names.ts +146 -0
  133. package/src/data-transforms/format-float.ts +9 -0
  134. package/src/data-transforms/record-to-string.ts +248 -0
  135. package/src/data-types/cypher-data-types.ts +60 -0
  136. package/src/index.ts +21 -0
  137. package/src/metadataPoller.ts +261 -0
  138. package/src/neo4jConnection.ts +149 -0
  139. package/src/queries/dataSummary.ts +42 -0
  140. package/src/queries/databases.ts +63 -0
  141. package/src/queries/functions.ts +97 -0
  142. package/src/queries/procedures.ts +117 -0
  143. package/src/queries/roles.ts +30 -0
  144. package/src/queries/users.ts +35 -0
  145. package/src/queries/version.ts +28 -0
  146. package/src/schemaPoller.ts +301 -0
  147. package/src/types/cypher-data-types.ts +153 -0
  148. package/src/types/sdkTypes.ts +29 -0
  149. package/tsconfig.json +8 -0
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.procedureSchema = void 0;
7
+ exports.listProcedures = listProcedures;
8
+ const ajv_1 = __importDefault(require("ajv"));
9
+ const neo4j_driver_1 = require("neo4j-driver");
10
+ const clean_type_1 = require("../data-transforms/clean-type");
11
+ exports.procedureSchema = {
12
+ type: 'object',
13
+ properties: {
14
+ admin: { type: 'boolean' },
15
+ argumentDescription: {
16
+ type: 'array',
17
+ items: {
18
+ type: 'object',
19
+ properties: {
20
+ name: { type: 'string' },
21
+ description: { type: 'string' },
22
+ type: { type: 'string' },
23
+ default: { type: 'string', nullable: true },
24
+ isDeprecated: { type: 'boolean', default: false },
25
+ },
26
+ required: ['name', 'description', 'type', 'isDeprecated'],
27
+ },
28
+ },
29
+ description: { type: 'string' },
30
+ mode: { type: 'string' },
31
+ name: { type: 'string' },
32
+ option: { type: 'object' },
33
+ returnDescription: {
34
+ type: 'array',
35
+ items: {
36
+ type: 'object',
37
+ properties: {
38
+ name: { type: 'string' },
39
+ description: { type: 'string' },
40
+ type: { type: 'string' },
41
+ isDeprecated: { type: 'boolean', default: false },
42
+ },
43
+ required: ['name', 'description', 'type', 'isDeprecated'],
44
+ },
45
+ },
46
+ signature: { type: 'string' },
47
+ worksOnSystem: { type: 'boolean' },
48
+ deprecatedBy: { type: 'string', nullable: true },
49
+ },
50
+ required: [
51
+ 'admin',
52
+ 'argumentDescription',
53
+ 'description',
54
+ 'mode',
55
+ 'name',
56
+ 'option',
57
+ 'returnDescription',
58
+ 'signature',
59
+ 'worksOnSystem',
60
+ ],
61
+ additionalProperties: true,
62
+ };
63
+ const validateProcedure = new ajv_1.default({ useDefaults: true }).compile(exports.procedureSchema);
64
+ function cleanTypes(result) {
65
+ return {
66
+ ...result,
67
+ argumentDescription: result.argumentDescription.map(clean_type_1.cleanTypeDescription),
68
+ returnDescription: result.returnDescription.map(clean_type_1.cleanTypeDescription),
69
+ };
70
+ }
71
+ /**
72
+ * Gets available procedures on your database
73
+ * https://neo4j.com/docs/cypher-manual/current/clauses/listing-procedures/
74
+ */
75
+ function listProcedures({ executableByMe, cypherVersion } = {
76
+ executableByMe: false,
77
+ cypherVersion: undefined,
78
+ }) {
79
+ const query = `${cypherVersion ? cypherVersion + ' ' : ''}
80
+ SHOW PROCEDURES
81
+ ${executableByMe ? 'EXECUTABLE BY CURRENT USER' : ''}
82
+ YIELD *`;
83
+ const resultTransformer = neo4j_driver_1.resultTransformers.mappedResultTransformer({
84
+ map(record) {
85
+ // Assign default values (e.g. isDeprecated) in case they are not present
86
+ const objResult = record.toObject();
87
+ validateProcedure(objResult);
88
+ // Type is verified in integration tests
89
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
90
+ const result = cleanTypes(objResult);
91
+ return result;
92
+ },
93
+ collect(procedures, summary) {
94
+ return { procedures, summary };
95
+ },
96
+ });
97
+ return {
98
+ query,
99
+ queryConfig: {
100
+ routing: 'READ',
101
+ database: 'system',
102
+ resultTransformer,
103
+ },
104
+ };
105
+ }
106
+ //# sourceMappingURL=procedures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../../../src/queries/procedures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ExecuteQueryArgs } from '../types/sdkTypes.js';
2
+ export type Neo4jRole = {
3
+ role: string;
4
+ };
5
+ /**
6
+ * Gets available roles in your database
7
+ * https://neo4j.com/docs/operations-manual/current/authentication-authorization/manage-roles/#access-control-list-roles
8
+ */
9
+ export declare function listRoles(): ExecuteQueryArgs<{
10
+ roles: Neo4jRole[];
11
+ }>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listRoles = listRoles;
4
+ const neo4j_driver_1 = require("neo4j-driver");
5
+ /**
6
+ * Gets available roles in your database
7
+ * https://neo4j.com/docs/operations-manual/current/authentication-authorization/manage-roles/#access-control-list-roles
8
+ */
9
+ function listRoles() {
10
+ const query = `SHOW ROLES`;
11
+ const resultTransformer = neo4j_driver_1.resultTransformers.mappedResultTransformer({
12
+ map(record) {
13
+ return record.toObject();
14
+ },
15
+ collect(roles, summary) {
16
+ return { roles, summary };
17
+ },
18
+ });
19
+ return {
20
+ query,
21
+ queryConfig: { resultTransformer, routing: 'READ', database: 'system' },
22
+ };
23
+ }
24
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../../../src/queries/roles.ts"],"names":[],"mappings":";;AAWA,8BAkBC;AA7BD,+CAAkD;AAOlD;;;GAGG;AACH,SAAgB,SAAS;IAGvB,MAAM,KAAK,GAAG,YAAY,CAAC;IAE3B,MAAM,iBAAiB,GAAG,iCAAkB,CAAC,uBAAuB,CAAC;QACnE,GAAG,CAAC,MAAM;YACR,OAAO,MAAM,CAAC,QAAQ,EAAe,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,OAAO;YACpB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,WAAW,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ExecuteQueryArgs } from '../types/sdkTypes.js';
2
+ export type Neo4jUser = {
3
+ user: string;
4
+ roles: string[];
5
+ passwordChangeRequired: string;
6
+ suspended?: boolean;
7
+ home?: string;
8
+ };
9
+ /**
10
+ * Gets available users in your database
11
+ * https://neo4j.com/docs/cypher-manual/current/administration/access-control/manage-users/#access-control-list-users
12
+ */
13
+ export declare function listUsers(): ExecuteQueryArgs<{
14
+ users: Neo4jUser[];
15
+ }>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listUsers = listUsers;
4
+ const neo4j_driver_1 = require("neo4j-driver");
5
+ /**
6
+ * Gets available users in your database
7
+ * https://neo4j.com/docs/cypher-manual/current/administration/access-control/manage-users/#access-control-list-users
8
+ */
9
+ function listUsers() {
10
+ const query = `SHOW USERS`;
11
+ const resultTransformer = neo4j_driver_1.resultTransformers.mappedResultTransformer({
12
+ map(record) {
13
+ return record.toObject();
14
+ },
15
+ collect(users, summary) {
16
+ return { users, summary };
17
+ },
18
+ });
19
+ return {
20
+ query,
21
+ queryConfig: { resultTransformer, routing: 'READ', database: 'system' },
22
+ };
23
+ }
24
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../src/queries/users.ts"],"names":[],"mappings":";;AAgBA,8BAkBC;AAlCD,+CAAkD;AAYlD;;;GAGG;AACH,SAAgB,SAAS;IAGvB,MAAM,KAAK,GAAG,YAAY,CAAC;IAE3B,MAAM,iBAAiB,GAAG,iCAAkB,CAAC,uBAAuB,CAAC;QACnE,GAAG,CAAC,MAAM;YACR,OAAO,MAAM,CAAC,QAAQ,EAAe,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,OAAO;YACpB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,WAAW,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ExecuteQueryArgs } from '../types/sdkTypes';
2
+ /**
3
+ * Get dbms version
4
+ */
5
+ export declare function getVersion(): ExecuteQueryArgs<{
6
+ serverVersion: string | undefined;
7
+ }>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVersion = getVersion;
4
+ const neo4j_driver_1 = require("neo4j-driver");
5
+ /**
6
+ * Get dbms version
7
+ */
8
+ function getVersion() {
9
+ const query = 'CALL dbms.components() YIELD versions';
10
+ const resultTransformer = neo4j_driver_1.resultTransformers.mappedResultTransformer({
11
+ map(record) {
12
+ const obj = record.toObject();
13
+ const versions = obj.versions;
14
+ const version = versions?.at(0);
15
+ return version;
16
+ },
17
+ collect(versions, summary) {
18
+ return { serverVersion: versions.at(0), summary };
19
+ },
20
+ });
21
+ return {
22
+ query,
23
+ queryConfig: { resultTransformer, routing: 'READ', database: 'system' },
24
+ };
25
+ }
26
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/queries/version.ts"],"names":[],"mappings":";;AAMA,gCAqBC;AA3BD,+CAAkD;AAGlD;;GAEG;AACH,SAAgB,UAAU;IAGxB,MAAM,KAAK,GAAG,uCAAuC,CAAC;IAEtD,MAAM,iBAAiB,GAAG,iCAAkB,CAAC,uBAAuB,CAAC;QACnE,GAAG,CAAC,MAAM;YACR,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAoB,CAAC;YAC1C,MAAM,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,OAAO;YACvB,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QACpD,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,WAAW,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;KACxE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { EventEmitter } from 'events';
2
+ import { Config } from 'neo4j-driver';
3
+ import { ConnectionError } from './connectionErrorHandler';
4
+ import { MetadataPoller } from './metadataPoller';
5
+ import { Neo4jConnection } from './neo4jConnection';
6
+ export type ConnnectionResult = {
7
+ success: boolean;
8
+ retriable?: boolean;
9
+ error?: ConnectionError;
10
+ };
11
+ export declare class Neo4jSchemaPoller {
12
+ connection?: Neo4jConnection;
13
+ metadata?: MetadataPoller;
14
+ events: EventEmitter;
15
+ private driver?;
16
+ private reconnectionTimeout?;
17
+ private retries;
18
+ private lastError?;
19
+ private parameters;
20
+ setParameters(parameters: Record<string, unknown>): void;
21
+ connect(url: string, credentials: {
22
+ username: string;
23
+ password: string;
24
+ }, config: {
25
+ driverConfig?: Config;
26
+ appName: string;
27
+ }, database?: string): Promise<ConnnectionResult>;
28
+ persistentConnect(url: string, credentials: {
29
+ username: string;
30
+ password: string;
31
+ }, config: {
32
+ driverConfig?: Config;
33
+ appName: string;
34
+ }, database?: string): Promise<ConnnectionResult>;
35
+ disconnect(): void;
36
+ private connectAndStartMetadataPoller;
37
+ private initializeDriver;
38
+ private setReconnectionTimeout;
39
+ private handleSuccessfulConnection;
40
+ private handleNonSuccessfulConnection;
41
+ private handlePermanentlyFailingConnection;
42
+ private formatConnectionErrorFriendlyMessage;
43
+ private resetRetries;
44
+ }
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Neo4jSchemaPoller = void 0;
7
+ const events_1 = require("events");
8
+ const neo4j_driver_1 = __importDefault(require("neo4j-driver"));
9
+ const connectionErrorHandler_1 = require("./connectionErrorHandler");
10
+ const metadataPoller_1 = require("./metadataPoller");
11
+ const neo4jConnection_1 = require("./neo4jConnection");
12
+ const databases_js_1 = require("./queries/databases.js");
13
+ const version_1 = require("./queries/version");
14
+ const MAX_RETRY_ATTEMPTS = 5;
15
+ const RETRY_INTERVAL_MS = 30000;
16
+ class Neo4jSchemaPoller {
17
+ connection;
18
+ metadata;
19
+ events = new events_1.EventEmitter();
20
+ driver;
21
+ reconnectionTimeout;
22
+ retries = MAX_RETRY_ATTEMPTS;
23
+ lastError;
24
+ parameters = {};
25
+ setParameters(parameters) {
26
+ this.parameters = parameters;
27
+ if (this.metadata) {
28
+ this.metadata.dbSchema.parameters = parameters;
29
+ }
30
+ else {
31
+ this.metadata = new metadataPoller_1.DisconnectedMetadataPoller(parameters);
32
+ }
33
+ }
34
+ async connect(url, credentials, config, database) {
35
+ try {
36
+ this.driver = await this.initializeDriver(url, credentials, config, database);
37
+ }
38
+ catch (error) {
39
+ console.error('Error connecting to Neo4j.', error);
40
+ return {
41
+ success: false,
42
+ retriable: (0, connectionErrorHandler_1.isRetriableNeo4jError)(error),
43
+ error: (0, connectionErrorHandler_1.getConnectionError)(error),
44
+ };
45
+ }
46
+ return { success: true };
47
+ }
48
+ async persistentConnect(url, credentials, config, database) {
49
+ const shouldHaveConnection = this.connection !== undefined;
50
+ const connectionAlive = await this.connection?.healthcheck();
51
+ const shouldUpdateConnection = this.connection && database && this.connection?.currentDb !== database;
52
+ if (!connectionAlive || shouldUpdateConnection) {
53
+ if (shouldHaveConnection && !shouldUpdateConnection) {
54
+ console.error('Connection to Neo4j dropped');
55
+ this.disconnect();
56
+ }
57
+ else if (shouldUpdateConnection) {
58
+ this.disconnect();
59
+ }
60
+ try {
61
+ await this.connectAndStartMetadataPoller(url, credentials, config, database);
62
+ this.reconnectionTimeout = this.setReconnectionTimeout(url, credentials, config, database);
63
+ return this.handleSuccessfulConnection();
64
+ }
65
+ catch (error) {
66
+ console.error('Error connecting to Neo4j.', error);
67
+ this.retries -= 1;
68
+ this.lastError = (0, connectionErrorHandler_1.getConnectionError)(error);
69
+ if (!(0, connectionErrorHandler_1.isRetriableNeo4jError)(error)) {
70
+ return this.handlePermanentlyFailingConnection();
71
+ }
72
+ if (this.retries > 0) {
73
+ this.reconnectionTimeout = this.setReconnectionTimeout(url, credentials, config, database);
74
+ return this.handleNonSuccessfulConnection();
75
+ }
76
+ return this.handlePermanentlyFailingConnection();
77
+ }
78
+ }
79
+ this.reconnectionTimeout = this.setReconnectionTimeout(url, credentials, config, database);
80
+ return { success: true };
81
+ }
82
+ disconnect() {
83
+ if (this.connection) {
84
+ // eslint-disable-next-line no-console
85
+ console.log('Disconnected from Neo4j');
86
+ }
87
+ this.connection?.dispose();
88
+ this.metadata?.stopBackgroundPolling();
89
+ this.connection = undefined;
90
+ const parameters = this.metadata?.dbSchema?.parameters ?? {};
91
+ this.metadata = new metadataPoller_1.DisconnectedMetadataPoller(parameters);
92
+ this.driver = undefined;
93
+ clearTimeout(this.reconnectionTimeout);
94
+ }
95
+ async connectAndStartMetadataPoller(url, credentials, config, database) {
96
+ this.driver =
97
+ this.driver ??
98
+ (await this.initializeDriver(url, credentials, config, database));
99
+ const { query: dbQuery, queryConfig: dbQueryConfig } = (0, databases_js_1.listDatabases)();
100
+ const { databases, summary } = await this.driver.executeQuery(dbQuery, {}, dbQueryConfig);
101
+ const protocolVersion = summary.server.protocolVersion?.toString() ?? 'unknown';
102
+ this.connection = new neo4jConnection_1.Neo4jConnection(credentials.username, protocolVersion, databases, this.driver, database);
103
+ const { query: versionQuery, queryConfig: versionQueryConfig } = (0, version_1.getVersion)();
104
+ const { serverVersion } = await this.driver.executeQuery(versionQuery, {}, versionQueryConfig);
105
+ this.metadata = new metadataPoller_1.ConnectedMetadataPoller(databases, this.parameters, serverVersion, this.connection, this.events);
106
+ this.metadata.startBackgroundPolling();
107
+ }
108
+ async initializeDriver(url, credentials, config, database) {
109
+ const driver = neo4j_driver_1.default.driver(url, neo4j_driver_1.default.auth.basic(credentials.username, credentials.password), { userAgent: config.appName, ...config.driverConfig });
110
+ await driver.verifyConnectivity({ database: database });
111
+ if (await driver.supportsSessionAuth()) {
112
+ if (!(await driver.verifyAuthentication())) {
113
+ throw new Error('Invalid credentials');
114
+ }
115
+ }
116
+ return driver;
117
+ }
118
+ setReconnectionTimeout(url, credentials, config, database) {
119
+ return setTimeout(() => {
120
+ void this.persistentConnect(url, credentials, config, database);
121
+ }, RETRY_INTERVAL_MS);
122
+ }
123
+ handleSuccessfulConnection() {
124
+ this.resetRetries();
125
+ // eslint-disable-next-line no-console
126
+ console.log('Established connection to Neo4j');
127
+ this.events.emit('connectionConnected');
128
+ return { success: true };
129
+ }
130
+ handleNonSuccessfulConnection() {
131
+ const connectionError = this.formatConnectionErrorFriendlyMessage(this.lastError, true);
132
+ this.events.emit('connectionErrored', connectionError);
133
+ return {
134
+ success: false,
135
+ retriable: true,
136
+ error: connectionError,
137
+ };
138
+ }
139
+ handlePermanentlyFailingConnection() {
140
+ this.resetRetries();
141
+ const connectionError = this.formatConnectionErrorFriendlyMessage(this.lastError, false);
142
+ this.events.emit('connectionFailed', connectionError);
143
+ return {
144
+ success: false,
145
+ retriable: false,
146
+ error: connectionError,
147
+ };
148
+ }
149
+ formatConnectionErrorFriendlyMessage(connectionError = {
150
+ message: '',
151
+ friendlyMessage: connectionErrorHandler_1.FRIENDLY_ERROR_MESSAGES.Default,
152
+ code: '',
153
+ }, retriable) {
154
+ const friendlyMessage = retriable
155
+ ? `${connectionError.friendlyMessage}. Retrying in ${RETRY_INTERVAL_MS / 1000} seconds`
156
+ : connectionError.friendlyMessage;
157
+ return {
158
+ ...connectionError,
159
+ friendlyMessage: friendlyMessage,
160
+ };
161
+ }
162
+ resetRetries() {
163
+ this.retries = MAX_RETRY_ATTEMPTS;
164
+ }
165
+ }
166
+ exports.Neo4jSchemaPoller = Neo4jSchemaPoller;
167
+ //# sourceMappingURL=schemaPoller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemaPoller.js","sourceRoot":"","sources":["../../../src/schemaPoller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Date, DateTime, Duration, Integer, LocalDateTime, LocalTime, Node, Path, Point, Relationship, Time } from 'neo4j-driver';
2
+ type NumberOrInteger = number | Integer | bigint;
3
+ /**
4
+ The neo4j driver type mapping - https://neo4j.com/docs/javascript-manual/current/cypher-workflow/#js-driver-type-mapping
5
+
6
+ Star denotes custom driver class.
7
+
8
+ Cypher(neo4j) - Driver type(js)
9
+ null - null
10
+ List - array
11
+ Map - Object
12
+ Boolean - boolean
13
+ Integer - Integer*
14
+ Float - number
15
+ String - string
16
+ ByteArray - Int8Array
17
+ Date - Date*
18
+ Time - Time*
19
+ LocalTime - LocalTime*
20
+ DateTime - DateTime*
21
+ LocalDateTime - LocalDateTime*
22
+ Duration - Duration*
23
+ Point - Point*
24
+ Node - Node*
25
+ Relationship - Relationship*
26
+ Path - Path*
27
+ */
28
+ export type CypherBasicPropertyType = null | boolean | number | string | Integer | bigint | Int8Array | CypherTemporalType | Point;
29
+ export type CypherTemporalType = Date<NumberOrInteger> | Time<NumberOrInteger> | DateTime | LocalTime<NumberOrInteger> | LocalDateTime | Duration<NumberOrInteger>;
30
+ export type CypherProperty = CypherBasicPropertyType | CypherBasicPropertyType[];
31
+ export type CypherStructuralType = Node | Relationship | Path;
32
+ export type CypherList = (CypherBasicPropertyType | CypherStructuralType | CypherMap | CypherList)[];
33
+ export interface CypherMap {
34
+ [key: string]: CypherBasicPropertyType | CypherStructuralType | CypherMap | CypherList;
35
+ }
36
+ export type CypherDataType = CypherBasicPropertyType | CypherStructuralType | CypherMap | CypherList;
37
+ export declare const isCypherTemporalType: (anything: unknown) => anything is CypherTemporalType;
38
+ export declare const isCypherBasicPropertyType: (value: unknown) => value is CypherBasicPropertyType;
39
+ export declare const isCypherPropertyType: (value: unknown) => value is CypherProperty;
40
+ export declare function isInt8Array(val: unknown): val is Int8Array;
41
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCypherPropertyType = exports.isCypherBasicPropertyType = exports.isCypherTemporalType = void 0;
4
+ exports.isInt8Array = isInt8Array;
5
+ const neo4j_driver_1 = require("neo4j-driver");
6
+ const isCypherTemporalType = (anything) => {
7
+ if (typeof anything === 'object' && anything !== null) {
8
+ return [
9
+ neo4j_driver_1.isDate,
10
+ neo4j_driver_1.isTime,
11
+ neo4j_driver_1.isDateTime,
12
+ neo4j_driver_1.isLocalTime,
13
+ neo4j_driver_1.isLocalDateTime,
14
+ neo4j_driver_1.isDuration,
15
+ ].some((tester) => tester(anything));
16
+ }
17
+ return false;
18
+ };
19
+ exports.isCypherTemporalType = isCypherTemporalType;
20
+ const isCypherBasicPropertyType = (value) => {
21
+ const valType = typeof value;
22
+ return (value === null ||
23
+ valType === 'boolean' ||
24
+ valType === 'string' ||
25
+ valType === 'number' ||
26
+ valType === 'bigint' ||
27
+ value?.constructor === Int8Array ||
28
+ (0, neo4j_driver_1.isInt)(value) ||
29
+ (0, exports.isCypherTemporalType)(value) ||
30
+ (0, neo4j_driver_1.isPoint)(value));
31
+ };
32
+ exports.isCypherBasicPropertyType = isCypherBasicPropertyType;
33
+ const isCypherPropertyType = (value) => {
34
+ if (Array.isArray(value)) {
35
+ if (value.length === 0) {
36
+ return true;
37
+ }
38
+ return (0, exports.isCypherBasicPropertyType)(value[0]);
39
+ }
40
+ return (0, exports.isCypherBasicPropertyType)(value);
41
+ };
42
+ exports.isCypherPropertyType = isCypherPropertyType;
43
+ function isInt8Array(val) {
44
+ return (typeof val === 'object' && val !== null && val.constructor === Int8Array);
45
+ }
46
+ //# sourceMappingURL=cypher-data-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cypher-data-types.js","sourceRoot":"","sources":["../../../../src/types/cypher-data-types.ts"],"names":[],"mappings":";;;AAoJA,kCAIC;AA3ID,+CASsB;AA+Ef,MAAM,oBAAoB,GAAG,CAClC,QAAiB,EACe,EAAE;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO;YACL,qBAAM;YACN,qBAAM;YACN,yBAAU;YACV,0BAAW;YACX,8BAAe;YACf,yBAAU;SACX,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAdW,QAAA,oBAAoB,wBAc/B;AAEK,MAAM,yBAAyB,GAAG,CACvC,KAAc,EACoB,EAAE;IACpC,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC;IAE7B,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,SAAS;QACrB,OAAO,KAAK,QAAQ;QACpB,OAAO,KAAK,QAAQ;QACpB,OAAO,KAAK,QAAQ;QACpB,KAAK,EAAE,WAAW,KAAK,SAAS;QAChC,IAAA,oBAAK,EAAC,KAAK,CAAC;QACZ,IAAA,4BAAoB,EAAC,KAAK,CAAC;QAC3B,IAAA,sBAAO,EAAC,KAAK,CAAC,CACf,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,yBAAyB,6BAgBpC;AAEK,MAAM,oBAAoB,GAAG,CAClC,KAAc,EACW,EAAE;IAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAA,iCAAyB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAA,iCAAyB,EAAC,KAAK,CAAC,CAAC;AAC1C,CAAC,CAAC;AAXW,QAAA,oBAAoB,wBAW/B;AAEF,SAAgB,WAAW,CAAC,GAAY;IACtC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,CACzE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { QueryConfig, ResultSummary } from 'neo4j-driver';
2
+ export type DbType = 'system' | 'standard' | 'composite';
3
+ export type QueryType = 'system' | 'user-direct' | 'user-action' | 'user-transpiled';
4
+ export type CypherTransactionMetadata = {
5
+ app: 'neo4j-sdk';
6
+ type: QueryType;
7
+ version?: string;
8
+ };
9
+ export type ExtendedQueryConfig<T> = QueryConfig<T> & Required<Pick<QueryConfig<T>, 'routing' | 'resultTransformer'>>;
10
+ type Result<T> = T & {
11
+ summary: ResultSummary;
12
+ };
13
+ export type ExecuteQueryArgs<T> = {
14
+ query: string;
15
+ queryConfig: ExtendedQueryConfig<Result<T>>;
16
+ };
17
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sdkTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkTypes.js","sourceRoot":"","sources":["../../../../src/types/sdkTypes.ts"],"names":[],"mappings":""}