langchain 0.0.76 → 0.0.78

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 (162) hide show
  1. package/chains/query_constructor/ir.cjs +1 -0
  2. package/chains/query_constructor/ir.d.ts +1 -0
  3. package/chains/query_constructor/ir.js +1 -0
  4. package/chains/query_constructor.cjs +1 -0
  5. package/chains/query_constructor.d.ts +1 -0
  6. package/chains/query_constructor.js +1 -0
  7. package/dist/agents/agent.d.ts +5 -4
  8. package/dist/agents/agent_toolkits/sql/sql.cjs +2 -2
  9. package/dist/agents/agent_toolkits/sql/sql.d.ts +1 -1
  10. package/dist/agents/agent_toolkits/sql/sql.js +2 -2
  11. package/dist/agents/chat/index.cjs +3 -3
  12. package/dist/agents/chat/index.d.ts +1 -0
  13. package/dist/agents/chat/index.js +3 -3
  14. package/dist/agents/chat_convo/index.cjs +30 -14
  15. package/dist/agents/chat_convo/index.d.ts +5 -1
  16. package/dist/agents/chat_convo/index.js +31 -15
  17. package/dist/agents/chat_convo/outputParser.cjs +79 -7
  18. package/dist/agents/chat_convo/outputParser.d.ts +25 -13
  19. package/dist/agents/chat_convo/outputParser.js +77 -6
  20. package/dist/agents/chat_convo/prompt.cjs +11 -8
  21. package/dist/agents/chat_convo/prompt.d.ts +2 -2
  22. package/dist/agents/chat_convo/prompt.js +11 -8
  23. package/dist/agents/executor.d.ts +2 -3
  24. package/dist/agents/index.cjs +6 -1
  25. package/dist/agents/index.d.ts +2 -0
  26. package/dist/agents/index.js +2 -0
  27. package/dist/agents/initialize.cjs +19 -13
  28. package/dist/agents/initialize.d.ts +12 -2
  29. package/dist/agents/initialize.js +16 -10
  30. package/dist/agents/mrkl/index.cjs +3 -3
  31. package/dist/agents/mrkl/index.d.ts +1 -0
  32. package/dist/agents/mrkl/index.js +3 -3
  33. package/dist/agents/mrkl/outputParser.cjs +2 -2
  34. package/dist/agents/mrkl/outputParser.js +2 -2
  35. package/dist/agents/structured_chat/index.cjs +106 -0
  36. package/dist/agents/structured_chat/index.d.ts +44 -0
  37. package/dist/agents/structured_chat/index.js +102 -0
  38. package/dist/agents/structured_chat/outputParser.cjs +92 -0
  39. package/dist/agents/structured_chat/outputParser.d.ts +24 -0
  40. package/dist/agents/structured_chat/outputParser.js +87 -0
  41. package/dist/agents/structured_chat/prompt.cjs +62 -0
  42. package/dist/agents/structured_chat/prompt.d.ts +4 -0
  43. package/dist/agents/structured_chat/prompt.js +59 -0
  44. package/dist/callbacks/handlers/tracer_langchain.cjs +12 -4
  45. package/dist/callbacks/handlers/tracer_langchain.d.ts +4 -1
  46. package/dist/callbacks/handlers/tracer_langchain.js +12 -4
  47. package/dist/callbacks/manager.cjs +6 -2
  48. package/dist/callbacks/manager.js +6 -2
  49. package/dist/chains/query_constructor/index.cjs +105 -0
  50. package/dist/chains/query_constructor/index.d.ts +37 -0
  51. package/dist/chains/query_constructor/index.js +95 -0
  52. package/dist/chains/query_constructor/ir.cjs +116 -0
  53. package/dist/chains/query_constructor/ir.d.ts +60 -0
  54. package/dist/chains/query_constructor/ir.js +107 -0
  55. package/dist/chains/query_constructor/parser.cjs +103 -0
  56. package/dist/chains/query_constructor/parser.d.ts +12 -0
  57. package/dist/chains/query_constructor/parser.js +99 -0
  58. package/dist/chains/query_constructor/prompt.cjs +127 -0
  59. package/dist/chains/query_constructor/prompt.d.ts +15 -0
  60. package/dist/chains/query_constructor/prompt.js +124 -0
  61. package/dist/chains/sql_db/sql_db_chain.cjs +13 -0
  62. package/dist/chains/sql_db/sql_db_chain.d.ts +2 -0
  63. package/dist/chains/sql_db/sql_db_chain.js +13 -0
  64. package/dist/client/langchainplus.cjs +21 -15
  65. package/dist/client/langchainplus.d.ts +4 -2
  66. package/dist/client/langchainplus.js +21 -15
  67. package/dist/llms/sagemaker_endpoint.cjs +123 -0
  68. package/dist/llms/sagemaker_endpoint.d.ts +82 -0
  69. package/dist/llms/sagemaker_endpoint.js +118 -0
  70. package/dist/memory/buffer_memory.cjs +1 -1
  71. package/dist/memory/buffer_memory.js +1 -1
  72. package/dist/memory/buffer_window_memory.cjs +1 -1
  73. package/dist/memory/buffer_window_memory.js +1 -1
  74. package/dist/output_parsers/expression.cjs +68 -0
  75. package/dist/output_parsers/expression.d.ts +25 -0
  76. package/dist/output_parsers/expression.js +49 -0
  77. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.cjs +26 -0
  78. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.d.ts +7 -0
  79. package/dist/output_parsers/expression_type_handlers/array_literal_expression_handler.js +22 -0
  80. package/dist/output_parsers/expression_type_handlers/base.cjs +67 -0
  81. package/dist/output_parsers/expression_type_handlers/base.d.ts +23 -0
  82. package/dist/output_parsers/expression_type_handlers/base.js +62 -0
  83. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.cjs +24 -0
  84. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.d.ts +7 -0
  85. package/dist/output_parsers/expression_type_handlers/boolean_literal_handler.js +20 -0
  86. package/dist/output_parsers/expression_type_handlers/call_expression_handler.cjs +52 -0
  87. package/dist/output_parsers/expression_type_handlers/call_expression_handler.d.ts +7 -0
  88. package/dist/output_parsers/expression_type_handlers/call_expression_handler.js +48 -0
  89. package/dist/output_parsers/expression_type_handlers/factory.cjs +56 -0
  90. package/dist/output_parsers/expression_type_handlers/factory.d.ts +9 -0
  91. package/dist/output_parsers/expression_type_handlers/factory.js +52 -0
  92. package/dist/output_parsers/expression_type_handlers/identifier_handler.cjs +22 -0
  93. package/dist/output_parsers/expression_type_handlers/identifier_handler.d.ts +7 -0
  94. package/dist/output_parsers/expression_type_handlers/identifier_handler.js +18 -0
  95. package/dist/output_parsers/expression_type_handlers/member_expression_handler.cjs +45 -0
  96. package/dist/output_parsers/expression_type_handlers/member_expression_handler.d.ts +7 -0
  97. package/dist/output_parsers/expression_type_handlers/member_expression_handler.js +41 -0
  98. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.cjs +24 -0
  99. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.d.ts +7 -0
  100. package/dist/output_parsers/expression_type_handlers/numeric_literal_handler.js +20 -0
  101. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.cjs +29 -0
  102. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.d.ts +7 -0
  103. package/dist/output_parsers/expression_type_handlers/object_literal_expression_handler.js +25 -0
  104. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.cjs +36 -0
  105. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.d.ts +7 -0
  106. package/dist/output_parsers/expression_type_handlers/property_assignment_handler.js +32 -0
  107. package/dist/output_parsers/expression_type_handlers/string_literal_handler.cjs +22 -0
  108. package/dist/output_parsers/expression_type_handlers/string_literal_handler.d.ts +7 -0
  109. package/dist/output_parsers/expression_type_handlers/string_literal_handler.js +18 -0
  110. package/dist/output_parsers/expression_type_handlers/types.cjs +2 -0
  111. package/dist/output_parsers/expression_type_handlers/types.d.ts +41 -0
  112. package/dist/output_parsers/expression_type_handlers/types.js +1 -0
  113. package/dist/output_parsers/index.cjs +2 -1
  114. package/dist/output_parsers/index.d.ts +1 -1
  115. package/dist/output_parsers/index.js +1 -1
  116. package/dist/output_parsers/structured.cjs +81 -23
  117. package/dist/output_parsers/structured.d.ts +18 -0
  118. package/dist/output_parsers/structured.js +79 -22
  119. package/dist/retrievers/self_query/index.cjs +79 -0
  120. package/dist/retrievers/self_query/index.d.ts +33 -0
  121. package/dist/retrievers/self_query/index.js +74 -0
  122. package/dist/retrievers/self_query/translator.cjs +72 -0
  123. package/dist/retrievers/self_query/translator.d.ts +14 -0
  124. package/dist/retrievers/self_query/translator.js +67 -0
  125. package/dist/schema/query_constructor.cjs +26 -0
  126. package/dist/schema/query_constructor.d.ts +6 -0
  127. package/dist/schema/query_constructor.js +22 -0
  128. package/dist/text_splitter.cjs +2 -1
  129. package/dist/text_splitter.js +2 -1
  130. package/dist/tools/dynamic.cjs +39 -1
  131. package/dist/tools/dynamic.d.ts +18 -3
  132. package/dist/tools/dynamic.js +38 -1
  133. package/dist/tools/index.cjs +2 -1
  134. package/dist/tools/index.d.ts +1 -1
  135. package/dist/tools/index.js +1 -1
  136. package/dist/tools/json.cjs +3 -1
  137. package/dist/tools/json.js +3 -1
  138. package/dist/tools/sql.cjs +17 -11
  139. package/dist/tools/sql.d.ts +7 -1
  140. package/dist/tools/sql.js +17 -11
  141. package/dist/util/event-source-parse.cjs +31 -5
  142. package/dist/util/event-source-parse.d.ts +3 -3
  143. package/dist/util/event-source-parse.js +31 -5
  144. package/dist/vectorstores/faiss.cjs +245 -0
  145. package/dist/vectorstores/faiss.d.ts +39 -0
  146. package/dist/vectorstores/faiss.js +218 -0
  147. package/llms/sagemaker_endpoint.cjs +1 -0
  148. package/llms/sagemaker_endpoint.d.ts +1 -0
  149. package/llms/sagemaker_endpoint.js +1 -0
  150. package/output_parsers/expression.cjs +1 -0
  151. package/output_parsers/expression.d.ts +1 -0
  152. package/output_parsers/expression.js +1 -0
  153. package/package.json +79 -3
  154. package/retrievers/self_query.cjs +1 -0
  155. package/retrievers/self_query.d.ts +1 -0
  156. package/retrievers/self_query.js +1 -0
  157. package/schema/query_constructor.cjs +1 -0
  158. package/schema/query_constructor.d.ts +1 -0
  159. package/schema/query_constructor.js +1 -0
  160. package/vectorstores/faiss.cjs +1 -0
  161. package/vectorstores/faiss.d.ts +1 -0
  162. package/vectorstores/faiss.js +1 -0
@@ -0,0 +1,62 @@
1
+ export class NodeHandler {
2
+ constructor(parentHandler) {
3
+ Object.defineProperty(this, "parentHandler", {
4
+ enumerable: true,
5
+ configurable: true,
6
+ writable: true,
7
+ value: parentHandler
8
+ });
9
+ }
10
+ }
11
+ export class ASTParser {
12
+ static async importASTParser() {
13
+ try {
14
+ if (!ASTParser.astParseInstance) {
15
+ const meriyah = await import("meriyah");
16
+ ASTParser.astParseInstance =
17
+ meriyah.parseScript;
18
+ }
19
+ return ASTParser.astParseInstance;
20
+ }
21
+ catch (e) {
22
+ console.log(e);
23
+ throw new Error("Failed to import meriyah. Please install meriyah (i.e. npm install meriyah).");
24
+ }
25
+ }
26
+ static isProgram(node) {
27
+ return node.type === "Program";
28
+ }
29
+ static isExpressionStatement(node) {
30
+ return node.type === "ExpressionStatement";
31
+ }
32
+ static isCallExpression(node) {
33
+ return node.type === "CallExpression";
34
+ }
35
+ static isLiteral(node) {
36
+ return node.type === "Literal";
37
+ }
38
+ static isStringLiteral(node) {
39
+ return node.type === "Literal" && typeof node.value === "string";
40
+ }
41
+ static isNumericLiteral(node) {
42
+ return node.type === "Literal" && typeof node.value === "number";
43
+ }
44
+ static isBooleanLiteral(node) {
45
+ return node.type === "Literal" && typeof node.value === "boolean";
46
+ }
47
+ static isIdentifier(node) {
48
+ return node.type === "Identifier";
49
+ }
50
+ static isObjectExpression(node) {
51
+ return node.type === "ObjectExpression";
52
+ }
53
+ static isArrayExpression(node) {
54
+ return node.type === "ArrayExpression";
55
+ }
56
+ static isProperty(node) {
57
+ return node.type === "Property";
58
+ }
59
+ static isMemberExpression(node) {
60
+ return node.type === "MemberExpression";
61
+ }
62
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BooleanLiteralHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class BooleanLiteralHandler extends base_js_1.NodeHandler {
6
+ async accepts(node) {
7
+ if (base_js_1.ASTParser.isBooleanLiteral(node)) {
8
+ return node;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }
14
+ async handle(node) {
15
+ if (!this.parentHandler) {
16
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
17
+ }
18
+ return {
19
+ type: "boolean_literal",
20
+ value: node.value,
21
+ };
22
+ }
23
+ }
24
+ exports.BooleanLiteralHandler = BooleanLiteralHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { BooleanLiteralType } from "./types.js";
4
+ export declare class BooleanLiteralHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.Literal | boolean>;
6
+ handle(node: ESTree.Literal): Promise<BooleanLiteralType>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { NodeHandler, ASTParser } from "./base.js";
2
+ export class BooleanLiteralHandler extends NodeHandler {
3
+ async accepts(node) {
4
+ if (ASTParser.isBooleanLiteral(node)) {
5
+ return node;
6
+ }
7
+ else {
8
+ return false;
9
+ }
10
+ }
11
+ async handle(node) {
12
+ if (!this.parentHandler) {
13
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
14
+ }
15
+ return {
16
+ type: "boolean_literal",
17
+ value: node.value,
18
+ };
19
+ }
20
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallExpressionHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class CallExpressionHandler extends base_js_1.NodeHandler {
6
+ async accepts(node) {
7
+ if (base_js_1.ASTParser.isCallExpression(node)) {
8
+ return node;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }
14
+ async handle(node) {
15
+ function checkCallExpressionArgumentType(arg) {
16
+ return [
17
+ base_js_1.ASTParser.isStringLiteral,
18
+ base_js_1.ASTParser.isNumericLiteral,
19
+ base_js_1.ASTParser.isBooleanLiteral,
20
+ base_js_1.ASTParser.isArrayExpression,
21
+ base_js_1.ASTParser.isObjectExpression,
22
+ base_js_1.ASTParser.isCallExpression,
23
+ base_js_1.ASTParser.isIdentifier,
24
+ ].reduce((acc, func) => acc || func(arg), false);
25
+ }
26
+ if (this.parentHandler === undefined) {
27
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
28
+ }
29
+ const { callee } = node;
30
+ let funcCall;
31
+ if (base_js_1.ASTParser.isIdentifier(callee)) {
32
+ funcCall = callee.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
33
+ }
34
+ else if (base_js_1.ASTParser.isMemberExpression(callee)) {
35
+ funcCall = (await this.parentHandler.handle(callee));
36
+ }
37
+ else {
38
+ throw new Error("Unknown expression type");
39
+ }
40
+ const args = await Promise.all(node.arguments.map((arg) => {
41
+ if (!checkCallExpressionArgumentType(arg)) {
42
+ throw new Error("Unknown argument type");
43
+ }
44
+ if (!this.parentHandler) {
45
+ throw new Error("CallExpressionHandler must have a parent handler");
46
+ }
47
+ return this.parentHandler.handle(arg);
48
+ }));
49
+ return { type: "call_expression", funcCall, args };
50
+ }
51
+ }
52
+ exports.CallExpressionHandler = CallExpressionHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { CallExpressionType } from "./types.js";
4
+ export declare class CallExpressionHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.CallExpression | boolean>;
6
+ handle(node: ESTree.CallExpression): Promise<CallExpressionType>;
7
+ }
@@ -0,0 +1,48 @@
1
+ import { NodeHandler, ASTParser } from "./base.js";
2
+ export class CallExpressionHandler extends NodeHandler {
3
+ async accepts(node) {
4
+ if (ASTParser.isCallExpression(node)) {
5
+ return node;
6
+ }
7
+ else {
8
+ return false;
9
+ }
10
+ }
11
+ async handle(node) {
12
+ function checkCallExpressionArgumentType(arg) {
13
+ return [
14
+ ASTParser.isStringLiteral,
15
+ ASTParser.isNumericLiteral,
16
+ ASTParser.isBooleanLiteral,
17
+ ASTParser.isArrayExpression,
18
+ ASTParser.isObjectExpression,
19
+ ASTParser.isCallExpression,
20
+ ASTParser.isIdentifier,
21
+ ].reduce((acc, func) => acc || func(arg), false);
22
+ }
23
+ if (this.parentHandler === undefined) {
24
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
25
+ }
26
+ const { callee } = node;
27
+ let funcCall;
28
+ if (ASTParser.isIdentifier(callee)) {
29
+ funcCall = callee.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
30
+ }
31
+ else if (ASTParser.isMemberExpression(callee)) {
32
+ funcCall = (await this.parentHandler.handle(callee));
33
+ }
34
+ else {
35
+ throw new Error("Unknown expression type");
36
+ }
37
+ const args = await Promise.all(node.arguments.map((arg) => {
38
+ if (!checkCallExpressionArgumentType(arg)) {
39
+ throw new Error("Unknown argument type");
40
+ }
41
+ if (!this.parentHandler) {
42
+ throw new Error("CallExpressionHandler must have a parent handler");
43
+ }
44
+ return this.parentHandler.handle(arg);
45
+ }));
46
+ return { type: "call_expression", funcCall, args };
47
+ }
48
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MasterHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ const array_literal_expression_handler_js_1 = require("./array_literal_expression_handler.cjs");
6
+ const boolean_literal_handler_js_1 = require("./boolean_literal_handler.cjs");
7
+ const call_expression_handler_js_1 = require("./call_expression_handler.cjs");
8
+ const numeric_literal_handler_js_1 = require("./numeric_literal_handler.cjs");
9
+ const object_literal_expression_handler_js_1 = require("./object_literal_expression_handler.cjs");
10
+ const property_assignment_handler_js_1 = require("./property_assignment_handler.cjs");
11
+ const string_literal_handler_js_1 = require("./string_literal_handler.cjs");
12
+ const identifier_handler_js_1 = require("./identifier_handler.cjs");
13
+ const member_expression_handler_js_1 = require("./member_expression_handler.cjs");
14
+ const handlers = [
15
+ array_literal_expression_handler_js_1.ArrayLiteralExpressionHandler,
16
+ boolean_literal_handler_js_1.BooleanLiteralHandler,
17
+ call_expression_handler_js_1.CallExpressionHandler,
18
+ numeric_literal_handler_js_1.NumericLiteralHandler,
19
+ object_literal_expression_handler_js_1.ObjectLiteralExpressionHandler,
20
+ member_expression_handler_js_1.MemberExpressionHandler,
21
+ property_assignment_handler_js_1.PropertyAssignmentHandler,
22
+ string_literal_handler_js_1.StringLiteralHandler,
23
+ identifier_handler_js_1.IdentifierHandler,
24
+ ];
25
+ class MasterHandler extends base_js_1.NodeHandler {
26
+ constructor() {
27
+ super(...arguments);
28
+ Object.defineProperty(this, "nodeHandlers", {
29
+ enumerable: true,
30
+ configurable: true,
31
+ writable: true,
32
+ value: []
33
+ });
34
+ }
35
+ async accepts(node) {
36
+ throw new Error(`Master handler does not accept any nodes: ${node}`);
37
+ }
38
+ async handle(node) {
39
+ for (const handler of this.nodeHandlers) {
40
+ const accepts = await handler.accepts(node);
41
+ if (accepts) {
42
+ return handler.handle(node);
43
+ }
44
+ }
45
+ throw new Error(`No handler found for node: ${node}`);
46
+ }
47
+ static createMasterHandler() {
48
+ const masterHandler = new MasterHandler();
49
+ handlers.forEach((Handler) => {
50
+ const handlerInstance = new Handler(masterHandler);
51
+ masterHandler.nodeHandlers.push(handlerInstance);
52
+ });
53
+ return masterHandler;
54
+ }
55
+ }
56
+ exports.MasterHandler = MasterHandler;
@@ -0,0 +1,9 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { ParsedType } from "./types.js";
4
+ export declare class MasterHandler extends NodeHandler {
5
+ nodeHandlers: NodeHandler[];
6
+ accepts(node: ESTree.Node): Promise<ESTree.Node | boolean>;
7
+ handle(node: ESTree.CallExpression): Promise<ParsedType>;
8
+ static createMasterHandler(): MasterHandler;
9
+ }
@@ -0,0 +1,52 @@
1
+ import { NodeHandler } from "./base.js";
2
+ import { ArrayLiteralExpressionHandler } from "./array_literal_expression_handler.js";
3
+ import { BooleanLiteralHandler } from "./boolean_literal_handler.js";
4
+ import { CallExpressionHandler } from "./call_expression_handler.js";
5
+ import { NumericLiteralHandler } from "./numeric_literal_handler.js";
6
+ import { ObjectLiteralExpressionHandler } from "./object_literal_expression_handler.js";
7
+ import { PropertyAssignmentHandler } from "./property_assignment_handler.js";
8
+ import { StringLiteralHandler } from "./string_literal_handler.js";
9
+ import { IdentifierHandler } from "./identifier_handler.js";
10
+ import { MemberExpressionHandler } from "./member_expression_handler.js";
11
+ const handlers = [
12
+ ArrayLiteralExpressionHandler,
13
+ BooleanLiteralHandler,
14
+ CallExpressionHandler,
15
+ NumericLiteralHandler,
16
+ ObjectLiteralExpressionHandler,
17
+ MemberExpressionHandler,
18
+ PropertyAssignmentHandler,
19
+ StringLiteralHandler,
20
+ IdentifierHandler,
21
+ ];
22
+ export class MasterHandler extends NodeHandler {
23
+ constructor() {
24
+ super(...arguments);
25
+ Object.defineProperty(this, "nodeHandlers", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: []
30
+ });
31
+ }
32
+ async accepts(node) {
33
+ throw new Error(`Master handler does not accept any nodes: ${node}`);
34
+ }
35
+ async handle(node) {
36
+ for (const handler of this.nodeHandlers) {
37
+ const accepts = await handler.accepts(node);
38
+ if (accepts) {
39
+ return handler.handle(node);
40
+ }
41
+ }
42
+ throw new Error(`No handler found for node: ${node}`);
43
+ }
44
+ static createMasterHandler() {
45
+ const masterHandler = new MasterHandler();
46
+ handlers.forEach((Handler) => {
47
+ const handlerInstance = new Handler(masterHandler);
48
+ masterHandler.nodeHandlers.push(handlerInstance);
49
+ });
50
+ return masterHandler;
51
+ }
52
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentifierHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class IdentifierHandler extends base_js_1.NodeHandler {
6
+ async accepts(node) {
7
+ if (base_js_1.ASTParser.isIdentifier(node)) {
8
+ return node;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }
14
+ async handle(node) {
15
+ if (!this.parentHandler) {
16
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
17
+ }
18
+ const text = node.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
19
+ return { type: "identifier", value: text };
20
+ }
21
+ }
22
+ exports.IdentifierHandler = IdentifierHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { IdentifierType } from "./types.js";
4
+ export declare class IdentifierHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.Identifier | boolean>;
6
+ handle(node: ESTree.Identifier): Promise<IdentifierType>;
7
+ }
@@ -0,0 +1,18 @@
1
+ import { NodeHandler, ASTParser } from "./base.js";
2
+ export class IdentifierHandler extends NodeHandler {
3
+ async accepts(node) {
4
+ if (ASTParser.isIdentifier(node)) {
5
+ return node;
6
+ }
7
+ else {
8
+ return false;
9
+ }
10
+ }
11
+ async handle(node) {
12
+ if (!this.parentHandler) {
13
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
14
+ }
15
+ const text = node.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
16
+ return { type: "identifier", value: text };
17
+ }
18
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemberExpressionHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class MemberExpressionHandler extends base_js_1.NodeHandler {
6
+ async accepts(node) {
7
+ if (base_js_1.ASTParser.isMemberExpression(node)) {
8
+ return node;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }
14
+ async handle(node) {
15
+ if (!this.parentHandler) {
16
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
17
+ }
18
+ const { object, property } = node;
19
+ let prop;
20
+ if (base_js_1.ASTParser.isIdentifier(property)) {
21
+ prop = property.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
22
+ }
23
+ else if (base_js_1.ASTParser.isStringLiteral(property)) {
24
+ prop = `${property.value}`.replace(/^["'](.+(?=["']$))["']$/, "$1");
25
+ }
26
+ else {
27
+ throw new Error("Invalid property key type");
28
+ }
29
+ let identifier;
30
+ if (base_js_1.ASTParser.isIdentifier(object)) {
31
+ identifier = object.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
32
+ }
33
+ else if (base_js_1.ASTParser.isLiteral(object)) {
34
+ identifier = `${object.value}`.replace(/^["'](.+(?=["']$))["']$/, "$1");
35
+ }
36
+ else {
37
+ throw new Error("Invalid object type");
38
+ }
39
+ if (object.type !== "Identifier" && object.type !== "Literal") {
40
+ throw new Error("ArrayExpression is not supported");
41
+ }
42
+ return { type: "member_expression", identifier, property: prop };
43
+ }
44
+ }
45
+ exports.MemberExpressionHandler = MemberExpressionHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { MemberExpressionType } from "./types.js";
4
+ export declare class MemberExpressionHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.MemberExpression | boolean>;
6
+ handle(node: ESTree.MemberExpression): Promise<MemberExpressionType>;
7
+ }
@@ -0,0 +1,41 @@
1
+ import { NodeHandler, ASTParser } from "./base.js";
2
+ export class MemberExpressionHandler extends NodeHandler {
3
+ async accepts(node) {
4
+ if (ASTParser.isMemberExpression(node)) {
5
+ return node;
6
+ }
7
+ else {
8
+ return false;
9
+ }
10
+ }
11
+ async handle(node) {
12
+ if (!this.parentHandler) {
13
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
14
+ }
15
+ const { object, property } = node;
16
+ let prop;
17
+ if (ASTParser.isIdentifier(property)) {
18
+ prop = property.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
19
+ }
20
+ else if (ASTParser.isStringLiteral(property)) {
21
+ prop = `${property.value}`.replace(/^["'](.+(?=["']$))["']$/, "$1");
22
+ }
23
+ else {
24
+ throw new Error("Invalid property key type");
25
+ }
26
+ let identifier;
27
+ if (ASTParser.isIdentifier(object)) {
28
+ identifier = object.name.replace(/^["'](.+(?=["']$))["']$/, "$1");
29
+ }
30
+ else if (ASTParser.isLiteral(object)) {
31
+ identifier = `${object.value}`.replace(/^["'](.+(?=["']$))["']$/, "$1");
32
+ }
33
+ else {
34
+ throw new Error("Invalid object type");
35
+ }
36
+ if (object.type !== "Identifier" && object.type !== "Literal") {
37
+ throw new Error("ArrayExpression is not supported");
38
+ }
39
+ return { type: "member_expression", identifier, property: prop };
40
+ }
41
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumericLiteralHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class NumericLiteralHandler extends base_js_1.NodeHandler {
6
+ async accepts(node) {
7
+ if (base_js_1.ASTParser.isNumericLiteral(node)) {
8
+ return node;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }
14
+ async handle(node) {
15
+ if (!this.parentHandler) {
16
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
17
+ }
18
+ return {
19
+ type: "numeric_literal",
20
+ value: Number(node.value),
21
+ };
22
+ }
23
+ }
24
+ exports.NumericLiteralHandler = NumericLiteralHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { NumericLiteralType } from "./types.js";
4
+ export declare class NumericLiteralHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.Literal | boolean>;
6
+ handle(node: ESTree.Literal): Promise<NumericLiteralType>;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { NodeHandler, ASTParser } from "./base.js";
2
+ export class NumericLiteralHandler extends NodeHandler {
3
+ async accepts(node) {
4
+ if (ASTParser.isNumericLiteral(node)) {
5
+ return node;
6
+ }
7
+ else {
8
+ return false;
9
+ }
10
+ }
11
+ async handle(node) {
12
+ if (!this.parentHandler) {
13
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
14
+ }
15
+ return {
16
+ type: "numeric_literal",
17
+ value: Number(node.value),
18
+ };
19
+ }
20
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectLiteralExpressionHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ const property_assignment_handler_js_1 = require("./property_assignment_handler.cjs");
6
+ class ObjectLiteralExpressionHandler extends base_js_1.NodeHandler {
7
+ async accepts(node) {
8
+ if (base_js_1.ASTParser.isObjectExpression(node)) {
9
+ return node;
10
+ }
11
+ else {
12
+ return false;
13
+ }
14
+ }
15
+ async handle(node) {
16
+ if (!this.parentHandler) {
17
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
18
+ }
19
+ const values = [];
20
+ const { properties } = node;
21
+ for (const property of properties) {
22
+ if (base_js_1.ASTParser.isProperty(property)) {
23
+ values.push(await new property_assignment_handler_js_1.PropertyAssignmentHandler(this.parentHandler).handle(property));
24
+ }
25
+ }
26
+ return { type: "object_literal", values };
27
+ }
28
+ }
29
+ exports.ObjectLiteralExpressionHandler = ObjectLiteralExpressionHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { ObjectLiteralType } from "./types.js";
4
+ export declare class ObjectLiteralExpressionHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.ObjectExpression | boolean>;
6
+ handle(node: ESTree.ObjectExpression): Promise<ObjectLiteralType>;
7
+ }
@@ -0,0 +1,25 @@
1
+ import { NodeHandler, ASTParser } from "./base.js";
2
+ import { PropertyAssignmentHandler } from "./property_assignment_handler.js";
3
+ export class ObjectLiteralExpressionHandler extends NodeHandler {
4
+ async accepts(node) {
5
+ if (ASTParser.isObjectExpression(node)) {
6
+ return node;
7
+ }
8
+ else {
9
+ return false;
10
+ }
11
+ }
12
+ async handle(node) {
13
+ if (!this.parentHandler) {
14
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
15
+ }
16
+ const values = [];
17
+ const { properties } = node;
18
+ for (const property of properties) {
19
+ if (ASTParser.isProperty(property)) {
20
+ values.push(await new PropertyAssignmentHandler(this.parentHandler).handle(property));
21
+ }
22
+ }
23
+ return { type: "object_literal", values };
24
+ }
25
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PropertyAssignmentHandler = void 0;
4
+ const base_js_1 = require("./base.cjs");
5
+ class PropertyAssignmentHandler extends base_js_1.NodeHandler {
6
+ async accepts(node) {
7
+ if (base_js_1.ASTParser.isProperty(node)) {
8
+ return node;
9
+ }
10
+ else {
11
+ return false;
12
+ }
13
+ }
14
+ async handle(node) {
15
+ if (!this.parentHandler) {
16
+ throw new Error("ArrayLiteralExpressionHandler must have a parent handler");
17
+ }
18
+ let name;
19
+ if (base_js_1.ASTParser.isIdentifier(node.key)) {
20
+ name = node.key.name;
21
+ }
22
+ else if (base_js_1.ASTParser.isStringLiteral(node.key)) {
23
+ name = node.key.value;
24
+ }
25
+ else {
26
+ throw new Error("Invalid property key type");
27
+ }
28
+ if (!name) {
29
+ throw new Error("Invalid property key");
30
+ }
31
+ const identifier = `${name}`.replace(/^["'](.+(?=["']$))["']$/, "$1");
32
+ const value = await this.parentHandler.handle(node.value);
33
+ return { type: "property_assignment", identifier, value };
34
+ }
35
+ }
36
+ exports.PropertyAssignmentHandler = PropertyAssignmentHandler;
@@ -0,0 +1,7 @@
1
+ import type { ESTree } from "meriyah";
2
+ import { NodeHandler } from "./base.js";
3
+ import { PropertyAssignmentType } from "./types.js";
4
+ export declare class PropertyAssignmentHandler extends NodeHandler {
5
+ accepts(node: ESTree.Node): Promise<ESTree.Property | boolean>;
6
+ handle(node: ESTree.Property): Promise<PropertyAssignmentType>;
7
+ }