sequelize
Version:
Multi dialect ORM for Node.JS/io.js
1,728 lines (1,727 loc) • 4.18 MB
JSON
{
"type": "File",
"start": 0,
"end": 26436,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 939,
"column": 0
}
},
"program": {
"type": "Program",
"start": 0,
"end": 26436,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 939,
"column": 0
}
},
"sourceType": "module",
"body": [
{
"type": "VariableDeclaration",
"start": 33,
"end": 62,
"loc": {
"start": {
"line": 4,
"column": 0
},
"end": {
"line": 4,
"column": 29
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 39,
"end": 61,
"loc": {
"start": {
"line": 4,
"column": 6
},
"end": {
"line": 4,
"column": 28
}
},
"id": {
"type": "Identifier",
"start": 39,
"end": 43,
"loc": {
"start": {
"line": 4,
"column": 6
},
"end": {
"line": 4,
"column": 10
},
"identifierName": "util"
},
"name": "util",
"leadingComments": null
},
"init": {
"type": "CallExpression",
"start": 46,
"end": 61,
"loc": {
"start": {
"line": 4,
"column": 13
},
"end": {
"line": 4,
"column": 28
}
},
"callee": {
"type": "Identifier",
"start": 46,
"end": 53,
"loc": {
"start": {
"line": 4,
"column": 13
},
"end": {
"line": 4,
"column": 20
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 54,
"end": 60,
"loc": {
"start": {
"line": 4,
"column": 21
},
"end": {
"line": 4,
"column": 27
}
},
"extra": {
"rawValue": "util",
"raw": "'util'"
},
"value": "util"
}
]
},
"leadingComments": null
}
],
"kind": "const",
"leadingComments": [
{
"type": "CommentBlock",
"value": "jshint -W110 ",
"start": 14,
"end": 31,
"loc": {
"start": {
"line": 2,
"column": 0
},
"end": {
"line": 2,
"column": 17
}
}
}
]
},
{
"type": "VariableDeclaration",
"start": 63,
"end": 109,
"loc": {
"start": {
"line": 5,
"column": 0
},
"end": {
"line": 5,
"column": 46
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 69,
"end": 108,
"loc": {
"start": {
"line": 5,
"column": 6
},
"end": {
"line": 5,
"column": 45
}
},
"id": {
"type": "Identifier",
"start": 69,
"end": 77,
"loc": {
"start": {
"line": 5,
"column": 6
},
"end": {
"line": 5,
"column": 14
},
"identifierName": "inherits"
},
"name": "inherits"
},
"init": {
"type": "CallExpression",
"start": 80,
"end": 108,
"loc": {
"start": {
"line": 5,
"column": 17
},
"end": {
"line": 5,
"column": 45
}
},
"callee": {
"type": "Identifier",
"start": 80,
"end": 87,
"loc": {
"start": {
"line": 5,
"column": 17
},
"end": {
"line": 5,
"column": 24
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 88,
"end": 107,
"loc": {
"start": {
"line": 5,
"column": 25
},
"end": {
"line": 5,
"column": 44
}
},
"extra": {
"rawValue": "../utils/inherits",
"raw": "'../utils/inherits'"
},
"value": "../utils/inherits"
}
]
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 110,
"end": 138,
"loc": {
"start": {
"line": 6,
"column": 0
},
"end": {
"line": 6,
"column": 28
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 116,
"end": 137,
"loc": {
"start": {
"line": 6,
"column": 6
},
"end": {
"line": 6,
"column": 27
}
},
"id": {
"type": "Identifier",
"start": 116,
"end": 117,
"loc": {
"start": {
"line": 6,
"column": 6
},
"end": {
"line": 6,
"column": 7
},
"identifierName": "_"
},
"name": "_"
},
"init": {
"type": "CallExpression",
"start": 120,
"end": 137,
"loc": {
"start": {
"line": 6,
"column": 10
},
"end": {
"line": 6,
"column": 27
}
},
"callee": {
"type": "Identifier",
"start": 120,
"end": 127,
"loc": {
"start": {
"line": 6,
"column": 10
},
"end": {
"line": 6,
"column": 17
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 128,
"end": 136,
"loc": {
"start": {
"line": 6,
"column": 18
},
"end": {
"line": 6,
"column": 26
}
},
"extra": {
"rawValue": "lodash",
"raw": "'lodash'"
},
"value": "lodash"
}
]
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 139,
"end": 185,
"loc": {
"start": {
"line": 7,
"column": 0
},
"end": {
"line": 7,
"column": 46
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 145,
"end": 184,
"loc": {
"start": {
"line": 7,
"column": 6
},
"end": {
"line": 7,
"column": 45
}
},
"id": {
"type": "Identifier",
"start": 145,
"end": 148,
"loc": {
"start": {
"line": 7,
"column": 6
},
"end": {
"line": 7,
"column": 9
},
"identifierName": "Wkt"
},
"name": "Wkt"
},
"init": {
"type": "CallExpression",
"start": 151,
"end": 184,
"loc": {
"start": {
"line": 7,
"column": 12
},
"end": {
"line": 7,
"column": 45
}
},
"callee": {
"type": "Identifier",
"start": 151,
"end": 158,
"loc": {
"start": {
"line": 7,
"column": 12
},
"end": {
"line": 7,
"column": 19
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 159,
"end": 183,
"loc": {
"start": {
"line": 7,
"column": 20
},
"end": {
"line": 7,
"column": 44
}
},
"extra": {
"rawValue": "terraformer-wkt-parser",
"raw": "'terraformer-wkt-parser'"
},
"value": "terraformer-wkt-parser"
}
]
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 186,
"end": 231,
"loc": {
"start": {
"line": 8,
"column": 0
},
"end": {
"line": 8,
"column": 45
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 192,
"end": 230,
"loc": {
"start": {
"line": 8,
"column": 6
},
"end": {
"line": 8,
"column": 44
}
},
"id": {
"type": "Identifier",
"start": 192,
"end": 207,
"loc": {
"start": {
"line": 8,
"column": 6
},
"end": {
"line": 8,
"column": 21
},
"identifierName": "sequelizeErrors"
},
"name": "sequelizeErrors"
},
"init": {
"type": "CallExpression",
"start": 210,
"end": 230,
"loc": {
"start": {
"line": 8,
"column": 24
},
"end": {
"line": 8,
"column": 44
}
},
"callee": {
"type": "Identifier",
"start": 210,
"end": 217,
"loc": {
"start": {
"line": 8,
"column": 24
},
"end": {
"line": 8,
"column": 31
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 218,
"end": 229,
"loc": {
"start": {
"line": 8,
"column": 32
},
"end": {
"line": 8,
"column": 43
}
},
"extra": {
"rawValue": "../errors",
"raw": "'../errors'"
},
"value": "../errors"
}
]
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 232,
"end": 252,
"loc": {
"start": {
"line": 9,
"column": 0
},
"end": {
"line": 9,
"column": 20
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 238,
"end": 251,
"loc": {
"start": {
"line": 9,
"column": 6
},
"end": {
"line": 9,
"column": 19
}
},
"id": {
"type": "Identifier",
"start": 238,
"end": 246,
"loc": {
"start": {
"line": 9,
"column": 6
},
"end": {
"line": 9,
"column": 14
},
"identifierName": "warnings"
},
"name": "warnings"
},
"init": {
"type": "ObjectExpression",
"start": 249,
"end": 251,
"loc": {
"start": {
"line": 9,
"column": 17
},
"end": {
"line": 9,
"column": 19
}
},
"properties": []
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 253,
"end": 318,
"loc": {
"start": {
"line": 10,
"column": 0
},
"end": {
"line": 10,
"column": 65
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 259,
"end": 317,
"loc": {
"start": {
"line": 10,
"column": 6
},
"end": {
"line": 10,
"column": 64
}
},
"id": {
"type": "Identifier",
"start": 259,
"end": 268,
"loc": {
"start": {
"line": 10,
"column": 6
},
"end": {
"line": 10,
"column": 15
},
"identifierName": "Validator"
},
"name": "Validator"
},
"init": {
"type": "MemberExpression",
"start": 271,
"end": 317,
"loc": {
"start": {
"line": 10,
"column": 18
},
"end": {
"line": 10,
"column": 64
}
},
"object": {
"type": "CallExpression",
"start": 271,
"end": 307,
"loc": {
"start": {
"line": 10,
"column": 18
},
"end": {
"line": 10,
"column": 54
}
},
"callee": {
"type": "Identifier",
"start": 271,
"end": 278,
"loc": {
"start": {
"line": 10,
"column": 18
},
"end": {
"line": 10,
"column": 25
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 279,
"end": 306,
"loc": {
"start": {
"line": 10,
"column": 26
},
"end": {
"line": 10,
"column": 53
}
},
"extra": {
"rawValue": "../utils/validator-extras",
"raw": "'../utils/validator-extras'"
},
"value": "../utils/validator-extras"
}
]
},
"property": {
"type": "Identifier",
"start": 308,
"end": 317,
"loc": {
"start": {
"line": 10,
"column": 55
},
"end": {
"line": 10,
"column": 64
},
"identifierName": "validator"
},
"name": "validator"
},
"computed": false
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 319,
"end": 363,
"loc": {
"start": {
"line": 11,
"column": 0
},
"end": {
"line": 11,
"column": 44
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 325,
"end": 362,
"loc": {
"start": {
"line": 11,
"column": 6
},
"end": {
"line": 11,
"column": 43
}
},
"id": {
"type": "Identifier",
"start": 325,
"end": 333,
"loc": {
"start": {
"line": 11,
"column": 6
},
"end": {
"line": 11,
"column": 14
},
"identifierName": "momentTz"
},
"name": "momentTz"
},
"init": {
"type": "CallExpression",
"start": 336,
"end": 362,
"loc": {
"start": {
"line": 11,
"column": 17
},
"end": {
"line": 11,
"column": 43
}
},
"callee": {
"type": "Identifier",
"start": 336,
"end": 343,
"loc": {
"start": {
"line": 11,
"column": 17
},
"end": {
"line": 11,
"column": 24
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 344,
"end": 361,
"loc": {
"start": {
"line": 11,
"column": 25
},
"end": {
"line": 11,
"column": 42
}
},
"extra": {
"rawValue": "moment-timezone",
"raw": "'moment-timezone'"
},
"value": "moment-timezone"
}
]
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 364,
"end": 397,
"loc": {
"start": {
"line": 12,
"column": 0
},
"end": {
"line": 12,
"column": 33
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 370,
"end": 396,
"loc": {
"start": {
"line": 12,
"column": 6
},
"end": {
"line": 12,
"column": 32
}
},
"id": {
"type": "Identifier",
"start": 370,
"end": 376,
"loc": {
"start": {
"line": 12,
"column": 6
},
"end": {
"line": 12,
"column": 12
},
"identifierName": "moment"
},
"name": "moment"
},
"init": {
"type": "CallExpression",
"start": 379,
"end": 396,
"loc": {
"start": {
"line": 12,
"column": 15
},
"end": {
"line": 12,
"column": 32
}
},
"callee": {
"type": "Identifier",
"start": 379,
"end": 386,
"loc": {
"start": {
"line": 12,
"column": 15
},
"end": {
"line": 12,
"column": 22
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 387,
"end": 395,
"loc": {
"start": {
"line": 12,
"column": 23
},
"end": {
"line": 12,
"column": 31
}
},
"extra": {
"rawValue": "moment",
"raw": "'moment'"
},
"value": "moment"
}
]
}
}
],
"kind": "const"
},
{
"type": "VariableDeclaration",
"start": 398,
"end": 432,
"loc": {
"start": {
"line": 13,
"column": 0
},
"end": {
"line": 13,
"column": 34
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 404,
"end": 431,
"loc": {
"start": {
"line": 13,
"column": 6
},
"end": {
"line": 13,
"column": 33
}
},
"id": {
"type": "Identifier",
"start": 404,
"end": 409,
"loc": {
"start": {
"line": 13,
"column": 6
},
"end": {
"line": 13,
"column": 11
},
"identifierName": "Utils"
},
"name": "Utils"
},
"init": {
"type": "CallExpression",
"start": 412,
"end": 431,
"loc": {
"start": {
"line": 13,
"column": 14
},
"end": {
"line": 13,
"column": 33
}
},
"callee": {
"type": "Identifier",
"start": 412,
"end": 419,
"loc": {
"start": {
"line": 13,
"column": 14
},
"end": {
"line": 13,
"column": 21
},
"identifierName": "require"
},
"name": "require"
},
"arguments": [
{
"type": "StringLiteral",
"start": 420,
"end": 430,
"loc": {
"start": {
"line": 13,
"column": 22
},
"end": {
"line": 13,
"column": 32
}
},
"extra": {
"rawValue": "../utils",
"raw": "'../utils'"
},
"value": "../utils"
}
]
}
}
],
"kind": "const",
"trailingComments": [
{
"type": "CommentBlock",
"value": "*\n * A convenience class holding commonly used data types. The datatypes are used when defining a new model using `Sequelize.define`, like this:\n * ```js\n * sequelize.define('model', {\n * column: DataTypes.INTEGER\n * })\n * ```\n * When defining a model you can just as easily pass a string as type, but often using the types defined here is beneficial. For example, using `DataTypes.BLOB`, mean\n * that that column will be returned as an instance of `Buffer` when being fetched by sequelize.\n *\n * Some data types have special properties that can be accessed in order to change the data type.\n * For example, to get an unsigned integer with zerofill you can do `DataTypes.INTEGER.UNSIGNED.ZEROFILL`.\n * The order you access the properties in do not matter, so `DataTypes.INTEGER.ZEROFILL.UNSIGNED` is fine as well. The available properties are listed under each data type.\n *\n * To provide a length for the data type, you can invoke it like a function: `INTEGER(2)`\n *\n * Three of the values provided here (`NOW`, `UUIDV1` and `UUIDV4`) are special default values, that should not be used to define types. Instead they are used as shorthands for\n * defining default values. For example, to get a uuid field with a default value generated following v1 of the UUID standard:\n * ```js\n * sequelize.define('model', {\n * uuid: {\n * type: DataTypes.UUID,\n * defaultValue: DataTypes.UUIDV1,\n * primaryKey: true\n * }\n * })\n * ```\n * There may be times when you want to generate your own UUID conforming to some other algorithm. This is accomplised\n * using the defaultValue property as well, but instead of specifying one of the supplied UUID types, you return a value\n * from a function.\n * ```js\n * sequelize.define('model', {\n * uuid: {\n * type: DataTypes.UUID,\n * defaultValue: function() {\n * return generateMyId()\n * },\n * primaryKey: true\n * }\n * })\n * ```\n *\n * @property {function(length=255: integer)} STRING A variable length string\n * @property {function(length=255: integer)} CHAR A fixed length string.\n * @property {function([length]: string)} TEXT An unlimited length text column (length can be one of `tiny`, `medium`, or `long`)\n * @property {function(length=255: integer)} INTEGER A 32 bit integer.\n * @property {function(length: integer)} BIGINT A 64 bit integer. Note: an attribute defined as `BIGINT` will be treated like a `string` due this [feature from node-postgres](https://github.com/brianc/node-postgres/pull/353) to prevent precision loss. To have this attribute as a `number`, this is a possible [workaround](https://github.com/sequelize/sequelize/issues/2383#issuecomment-58006083).\n * @property {function(length: integer, decimals: integer)} FLOAT Floating point number (4-byte precision). Accepts one or two arguments for precision\n ",
"start": 434,
"end": 3240,
"loc": {
"start": {
"line": 15,
"column": 0
},
"end": {
"line": 63,
"column": 3
}
}
}
]
},
{
"type": "VariableDeclaration",
"start": 3241,
"end": 3262,
"loc": {
"start": {
"line": 64,
"column": 0
},
"end": {
"line": 64,
"column": 21
}
},
"declarations": [
{
"type": "VariableDeclarator",
"start": 3247,
"end": 3261,
"loc": {
"start": {
"line": 64,
"column": 6
},
"end": {
"line": 64,
"column": 20
}
},
"id": {
"type": "Identifier",
"start": 3247,
"end": 3256,
"loc": {
"start": {
"line": 64,
"column": 6
},
"end": {
"line": 64,
"column": 15
},
"identifierName": "DataTypes"
},
"name": "DataTypes",
"leadingComments": null
},
"init": {
"type": "ObjectExpression",
"start": 3259,
"end": 3261,
"loc": {
"start": {
"line": 64,
"column": 18
},
"end": {
"line": 64,
"column": 20
}
},
"properties": []
},
"leadingComments": null
}
],
"kind": "const",
"leadingComments": [
{
"type": "CommentBlock",
"value": "*\n * A convenience class holding commonly used data types. The datatypes are used when defining a new model using `Sequelize.define`, like this:\n * ```js\n * sequelize.define('model', {\n * column: DataTypes.INTEGER\n * })\n * ```\n * When defining a model you can just as easily pass a string as type, but often using the types defined here is beneficial. For example, using `DataTypes.BLOB`, mean\n * that that column will be returned as an instance of `Buffer` when being fetched by sequelize.\n *\n * Some data types have special properties that can be accessed in order to change the data type.\n * For example, to get an unsigned integer with zerofill you can do `DataTypes.INTEGER.UNSIGNED.ZEROFILL`.\n * The order you access the properties in do not matter, so `DataTypes.INTEGER.ZEROFILL.UNSIGNED` is fine as well. The available properties are listed under each data type.\n *\n * To provide a length for the data type, you can invoke it like a function: `INTEGER(2)`\n *\n * Three of the values provided here (`NOW`, `UUIDV1` and `UUIDV4`) are special default values, that should not be used to define types. Instead they are used as shorthands for\n * defining default values. For example, to get a uuid field with a default value generated following v1 of the UUID standard:\n * ```js\n * sequelize.define('model', {\n * uuid: {\n * type: DataTypes.UUID,\n * defaultValue: DataTypes.UUIDV1,\n * primaryKey: true\n * }\n * })\n * ```\n * There may be times when you want to generate your own UUID conforming to some other algorithm. This is accomplised\n * using the defaultValue property as well, but instead of specifying one of the supplied UUID types, you return a value\n * from a function.\n * ```js\n * sequelize.define('model', {\n * uuid: {\n * type: DataTypes.UUID,\n * defaultValue: function() {\n * return generateMyId()\n * },\n * primaryKey: true\n * }\n * })\n * ```\n *\n * @property {function(length=255: integer)} STRING A variable length string\n * @property {function(length=255: integer)} CHAR A fixed length string.\n * @property {function([length]: string)} TEXT An unlimited length text column (length can be one of `tiny`, `medium`, or `long`)\n * @property {function(length=255: integer)} INTEGER A 32 bit integer.\n * @property {function(length: integer)} BIGINT A 64 bit integer. Note: an attribute defined as `BIGINT` will be treated like a `string` due this [feature from node-postgres](https://github.com/brianc/node-postgres/pull/353) to prevent precision loss. To have this attribute as a `number`, this is a possible [workaround](https://github.com/sequelize/sequelize/issues/2383#issuecomment-58006083).\n * @property {function(length: integer, decimals: integer)} FLOAT Floating point number (4-byte precision). Accepts one or two arguments for precision\n ",
"start": 434,
"end": 3240,
"loc": {
"start": {
"line": 15,
"column": 0
},
"end": {
"line": 63,
"column": 3
}
}
}
]
},
{
"type": "FunctionDeclaration",
"start": 3264,
"end": 3286,
"loc": {
"start": {
"line": 66,
"column": 0
},
"end": {
"line": 66,
"column": 22
}
},
"id": {
"type": "Identifier",
"start": 3273,
"end": 3281,
"loc": {
"start": {
"line": 66,
"column": 9
},
"end": {
"line": 66,
"column": 17
},
"identifierName": "ABSTRACT"
},
"name": "ABSTRACT"
},
"generator": false,
"expression": false,
"async": false,
"params": [],
"body": {
"type": "BlockStatement",
"start": 3284,
"end": 3286,
"loc": {
"start": {
"line": 66,
"column": 20
},
"end": {
"line": 66,
"column": 22
}
},
"body": [],
"directives": []
}
},
{
"type": "ExpressionStatement",
"start": 3288,
"end": 3325,
"loc": {
"start": {
"line": 68,
"column": 0
},
"end": {
"line": 68,
"column": 37
}
},
"expression": {
"type": "AssignmentExpression",
"start": 3288,
"end": 3324,
"loc": {
"start": {
"line": 68,
"column": 0
},
"end": {
"line": 68,
"column": 36
}
},
"operator": "=",
"left": {
"type": "MemberExpression",
"start": 3288,
"end": 3319,
"loc": {
"start": {
"line": 68,
"column": 0
},
"end": {
"line": 68,
"column": 31
}
},
"object": {
"type": "MemberExpression",
"start": 3288,
"end": 3306,
"loc": {
"start": {
"line": 68,
"column": 0
},
"end": {
"line": 68,
"column": 18
}
},
"object": {
"type": "Identifier",
"start": 3288,
"end": 3296,
"loc": {
"start": {
"line": 68,
"column": 0
},
"end": {
"line": 68,
"column": 8
},
"identifierName": "ABSTRACT"
},
"name": "ABSTRACT"
},
"property": {
"type": "Identifier",
"start": 3297,
"end": 3306,
"loc": {
"start": {
"line": 68,
"column": 9
},
"end": {
"line": 68,
"column": 18
},
"identifierName": "prototype"
},
"name": "prototype"
},
"computed": false
},
"property": {
"type": "Identifier",
"start": 3307,
"end": 3319,
"loc": {
"start": {
"line": 68,
"column": 19
},
"end": {
"line": 68,
"column": 31
},
"identifierName": "dialectTypes"
},
"name": "dialectTypes"
},
"computed": false
},
"right": {
"type": "StringLiteral",
"start": 3322,
"end": 3324,
"loc": {
"start": {
"line": 68,
"column": 34
},
"end": {
"line": 68,
"column": 36
}
},
"extra": {
"rawValue": "",
"raw": "''"
},
"value": ""
}
}
},
{
"type": "ExpressionStatement",
"start": 3327,
"end": 3418,
"loc": {
"start": {
"line": 70,
"column": 0
},
"end": {
"line": 72,
"column": 2
}
},
"expression": {
"type": "AssignmentExpression",
"start": 3327,
"end": 3417,
"loc": {
"start": {
"line": 70,
"column": 0
},
"end": {
"line": 72,
"column": 1
}
},
"operator": "=",
"left": {
"type": "MemberExpression",
"start": 3327,
"end": 3354,
"loc": {
"start": {
"line": 70,
"column": 0
},
"end": {
"line": 70,
"column": 27
}
},
"object": {
"type": "MemberExpression",
"start": 3327,
"end": 3345,
"loc": {
"start": {
"line": 70,
"column": 0
},
"end": {
"line": 70,
"column": 18
}
},
"object": {
"type": "Identifier",
"start": 3327,
"end": 3335,
"loc": {
"start": {
"line": 70,
"column": 0
},
"end": {
"line": 70,
"column": 8
},
"identifierName": "ABSTRACT"
},
"name": "ABSTRACT"
},
"property": {
"type": "Identifier",
"start": 3336,
"end": 3345,
"loc": {
"start": {
"line": 70,
"column": 9
},
"end": {
"line": 70,
"column": 18
},
"identifierName": "prototype"
},
"name": "prototype"
},
"computed": false
},
"property": {
"type": "Identifier",
"start": 3346,
"end": 3354,
"loc": {
"start": {
"line": 70,
"column": 19
},
"end": {
"line": 70,
"column": 27
},
"identifierName": "toString"
},
"name": "toString"
},
"computed": false
},
"right": {
"type": "FunctionExpression",
"start": 3357,
"end": 3417,
"loc": {
"start": {
"line": 70,
"column": 30
},
"end": {
"line": 72,
"column": 1
}
},
"id": {
"type": "Identifier",
"start": 3346,
"end": 3354,
"loc": {
"start": {
"line": 70,
"column": 19
},
"end": {
"line": 70,
"column": 27
},
"identifierName": "toString"
},
"name": "toString"
},
"generator": false,
"expression": false,
"async": false,
"params": [
{
"type": "Identifier",
"start": 3375,
"end": 3382,
"loc": {
"start": {
"line": 70,
"column": 48
},
"end": {
"line": 70,
"column": 55
},
"identifierName": "options"
},
"name": "options"
}
],
"body": {
"type": "BlockStatement",
"start": 3384,
"end": 3417,
"loc": {
"start": {
"line": 70,
"column": 57
},
"end": {
"line": 72,
"column": 1
}
},
"body": [
{
"type": "ReturnStatement",
"start": 3388,
"end": 3415,
"loc": {
"start": {
"line": 71,
"column": 2
},
"end": {
"line": 71,
"column": 29
}
},
"argument": {
"type": "CallExpression",
"start": 3395,
"end": 3414,
"loc": {
"start": {
"line": 71,
"column": 9
},
"end": {
"line": 71,
"column": 28
}
},
"callee": {
"type": "MemberExpression",
"start": 3395,
"end": 3405,
"loc": {
"start": {
"line": 71,
"column": 9
},
"end": {
"line": 71,
"column": 19
}
},
"object": {
"type": "ThisExpression",
"start": 3395,
"end": 3399,
"loc": {
"start": {
"line": 71,
"column": 9
},
"end": {
"line": 71,
"column": 13
}
}
},
"property": {
"type": "Identifier",
"start": 3400,
"end": 3405,
"loc": {
"start": {
"line": 71,
"column": 14
},
"end": {
"line": 71,
"column": 19
},
"identifierName": "toSql"
},
"name": "toSql"
},
"computed": false
},
"arguments": [
{
"type": "Identifier",
"start": 3406,
"end": 3413,
"loc": {
"start": {
"line": 71,
"column": 20
},
"end": {
"line": 71,
"column": 27
},
"identifierName": "options"
},
"name": "options"
}
]
}
}
],
"directives": []
}
}
}
},
{
"type": "ExpressionStatement",
"start": 3419,
"end": 3486,
"loc": {
"start": {
"line": 73,
"column": 0
},
"end": {
"line": 75,
"column": 2
}
},
"expression": {
"type": "AssignmentExpression",
"start": 3419,
"end": 3485,
"loc": {
"start": {
"line": 73,
"column": 0
},
"end": {
"line": 75,
"column": 1
}
},
"operator": "=",
"left": {
"type": "MemberExpression",
"start": 3419,
"end": 3443,
"loc": {
"start": {
"line": 73,
"column": 0
},
"end": {
"line": 73,
"column": 24
}
},
"object": {
"type": "MemberExpression",
"start": 3419,
"end": 3437,
"loc": {
"start": {
"line": 73,
"column": 0
},
"end": {
"line": 73,
"column": 18
}
},
"object": {
"type": "Identifier",
"start": 3419,
"end": 3427,
"loc": {
"start": {
"line": 73,
"column": 0
},
"end": {
"line": 73,