UNPKG

seed-engine

Version:

A Lightweight 2D game engine using WebGL2. The engine is designed on the focus of creating a bridge between creating and publishing games to the Seed Network as modules.

1,834 lines 71.4 kB
{ "type": "File", "start": 0, "end": 1179, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 37, "column": 33 } }, "program": { "type": "Program", "start": 0, "end": 1179, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 37, "column": 33 } }, "sourceType": "module", "body": [ { "type": "ImportDeclaration", "start": 0, "end": 32, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 32 } }, "specifiers": [ { "type": "ImportDefaultSpecifier", "start": 7, "end": 14, "loc": { "start": { "line": 1, "column": 7 }, "end": { "line": 1, "column": 14 } }, "local": { "type": "Identifier", "start": 7, "end": 14, "loc": { "start": { "line": 1, "column": 7 }, "end": { "line": 1, "column": 14 }, "identifierName": "Manager" }, "name": "Manager" } } ], "source": { "type": "StringLiteral", "start": 20, "end": 31, "loc": { "start": { "line": 1, "column": 20 }, "end": { "line": 1, "column": 31 } }, "extra": { "rawValue": "./Manager", "raw": "'./Manager'" }, "value": "./Manager" }, "trailingComments": [ { "type": "CommentBlock", "value": "*\n * Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\n * ID (number) which can be used to distinguish it.\n * \n * Any object that descends from Updateable will have an ID.\n ", "start": 34, "end": 263, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 8, "column": 3 } } } ] }, { "type": "ExportNamedDeclaration", "start": 264, "end": 1038, "loc": { "start": { "line": 9, "column": 0 }, "end": { "line": 31, "column": 1 } }, "specifiers": [], "source": null, "declaration": { "type": "ClassDeclaration", "start": 271, "end": 1038, "loc": { "start": { "line": 9, "column": 7 }, "end": { "line": 31, "column": 1 } }, "id": { "type": "Identifier", "start": 277, "end": 295, "loc": { "start": { "line": 9, "column": 13 }, "end": { "line": 9, "column": 31 }, "identifierName": "_UpdateableManager" }, "name": "_UpdateableManager", "leadingComments": null }, "superClass": { "type": "Identifier", "start": 304, "end": 311, "loc": { "start": { "line": 9, "column": 40 }, "end": { "line": 9, "column": 47 }, "identifierName": "Manager" }, "name": "Manager" }, "body": { "type": "ClassBody", "start": 312, "end": 1038, "loc": { "start": { "line": 9, "column": 48 }, "end": { "line": 31, "column": 1 } }, "body": [ { "type": "ClassMethod", "start": 405, "end": 481, "loc": { "start": { "line": 13, "column": 4 }, "end": { "line": 16, "column": 5 } }, "static": false, "computed": false, "key": { "type": "Identifier", "start": 405, "end": 416, "loc": { "start": { "line": 13, "column": 4 }, "end": { "line": 13, "column": 15 }, "identifierName": "constructor" }, "name": "constructor", "leadingComments": null }, "kind": "constructor", "id": null, "generator": false, "expression": false, "async": false, "params": [], "body": { "type": "BlockStatement", "start": 419, "end": 481, "loc": { "start": { "line": 13, "column": 18 }, "end": { "line": 16, "column": 5 } }, "body": [ { "type": "ExpressionStatement", "start": 429, "end": 437, "loc": { "start": { "line": 14, "column": 8 }, "end": { "line": 14, "column": 16 } }, "expression": { "type": "CallExpression", "start": 429, "end": 436, "loc": { "start": { "line": 14, "column": 8 }, "end": { "line": 14, "column": 15 } }, "callee": { "type": "Super", "start": 429, "end": 434, "loc": { "start": { "line": 14, "column": 8 }, "end": { "line": 14, "column": 13 } } }, "arguments": [] } }, { "type": "ExpressionStatement", "start": 446, "end": 475, "loc": { "start": { "line": 15, "column": 8 }, "end": { "line": 15, "column": 37 } }, "expression": { "type": "AssignmentExpression", "start": 446, "end": 474, "loc": { "start": { "line": 15, "column": 8 }, "end": { "line": 15, "column": 36 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 446, "end": 470, "loc": { "start": { "line": 15, "column": 8 }, "end": { "line": 15, "column": 32 } }, "object": { "type": "ThisExpression", "start": 446, "end": 450, "loc": { "start": { "line": 15, "column": 8 }, "end": { "line": 15, "column": 12 } } }, "property": { "type": "Identifier", "start": 451, "end": 470, "loc": { "start": { "line": 15, "column": 13 }, "end": { "line": 15, "column": 32 }, "identifierName": "updateableIDCounter" }, "name": "updateableIDCounter" }, "computed": false }, "right": { "type": "NumericLiteral", "start": 473, "end": 474, "loc": { "start": { "line": 15, "column": 35 }, "end": { "line": 15, "column": 36 } }, "extra": { "rawValue": 0, "raw": "0" }, "value": 0 } } } ], "directives": [], "trailingComments": null }, "leadingComments": [ { "type": "CommentBlock", "value": "*\n * Constructor for UpdateableManager. Holds the static ID counter.\n ", "start": 318, "end": 400, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 7 } } } ], "trailingComments": [ { "type": "CommentBlock", "value": "*\n * Gives an ID and a way to unsubscribe from the Updateable binding with the manager.\n * \n * Since the UpdateableManager does nothing to bind the Updateable to the manager, there is no code in the callback\n * assigned. However, the pattern is there to outline a default.\n * \n * @param {Updateable} updateable The updateable to be registered.\n ", "start": 487, "end": 864, "loc": { "start": { "line": 18, "column": 4 }, "end": { "line": 25, "column": 7 } } } ] }, { "type": "ClassMethod", "start": 869, "end": 1036, "loc": { "start": { "line": 26, "column": 4 }, "end": { "line": 30, "column": 5 } }, "static": false, "computed": false, "key": { "type": "Identifier", "start": 869, "end": 887, "loc": { "start": { "line": 26, "column": 4 }, "end": { "line": 26, "column": 22 }, "identifierName": "registerUpdateable" }, "name": "registerUpdateable", "leadingComments": null }, "kind": "method", "id": null, "generator": false, "expression": false, "async": false, "params": [ { "type": "Identifier", "start": 888, "end": 898, "loc": { "start": { "line": 26, "column": 23 }, "end": { "line": 26, "column": 33 }, "identifierName": "updateable" }, "name": "updateable" } ], "body": { "type": "BlockStatement", "start": 900, "end": 1036, "loc": { "start": { "line": 26, "column": 35 }, "end": { "line": 30, "column": 5 } }, "body": [ { "type": "ExpressionStatement", "start": 910, "end": 953, "loc": { "start": { "line": 27, "column": 8 }, "end": { "line": 27, "column": 51 } }, "expression": { "type": "AssignmentExpression", "start": 910, "end": 952, "loc": { "start": { "line": 27, "column": 8 }, "end": { "line": 27, "column": 50 } }, "operator": "=", "left": { "type": "MemberExpression", "start": 910, "end": 923, "loc": { "start": { "line": 27, "column": 8 }, "end": { "line": 27, "column": 21 } }, "object": { "type": "Identifier", "start": 910, "end": 920, "loc": { "start": { "line": 27, "column": 8 }, "end": { "line": 27, "column": 18 }, "identifierName": "updateable" }, "name": "updateable" }, "property": { "type": "Identifier", "start": 921, "end": 923, "loc": { "start": { "line": 27, "column": 19 }, "end": { "line": 27, "column": 21 }, "identifierName": "id" }, "name": "id" }, "computed": false }, "right": { "type": "UpdateExpression", "start": 926, "end": 952, "loc": { "start": { "line": 27, "column": 24 }, "end": { "line": 27, "column": 50 } }, "operator": "++", "prefix": false, "argument": { "type": "MemberExpression", "start": 926, "end": 950, "loc": { "start": { "line": 27, "column": 24 }, "end": { "line": 27, "column": 48 } }, "object": { "type": "ThisExpression", "start": 926, "end": 930, "loc": { "start": { "line": 27, "column": 24 }, "end": { "line": 27, "column": 28 } } }, "property": { "type": "Identifier", "start": 931, "end": 950, "loc": { "start": { "line": 27, "column": 29 }, "end": { "line": 27, "column": 48 }, "identifierName": "updateableIDCounter" }, "name": "updateableIDCounter" }, "computed": false } } } }, { "type": "VariableDeclaration", "start": 962, "end": 995, "loc": { "start": { "line": 28, "column": 8 }, "end": { "line": 28, "column": 41 } }, "declarations": [ { "type": "VariableDeclarator", "start": 966, "end": 995, "loc": { "start": { "line": 28, "column": 12 }, "end": { "line": 28, "column": 41 } }, "id": { "type": "Identifier", "start": 966, "end": 984, "loc": { "start": { "line": 28, "column": 12 }, "end": { "line": 28, "column": 30 }, "identifierName": "deregisterCallback" }, "name": "deregisterCallback" }, "init": { "type": "ArrowFunctionExpression", "start": 987, "end": 995, "loc": { "start": { "line": 28, "column": 33 }, "end": { "line": 28, "column": 41 } }, "id": null, "generator": false, "expression": false, "async": false, "params": [], "body": { "type": "BlockStatement", "start": 993, "end": 995, "loc": { "start": { "line": 28, "column": 39 }, "end": { "line": 28, "column": 41 } }, "body": [], "directives": [] } } } ], "kind": "let" }, { "type": "ReturnStatement", "start": 1004, "end": 1030, "loc": { "start": { "line": 29, "column": 8 }, "end": { "line": 29, "column": 34 } }, "argument": { "type": "Identifier", "start": 1011, "end": 1029, "loc": { "start": { "line": 29, "column": 15 }, "end": { "line": 29, "column": 33 }, "identifierName": "deregisterCallback" }, "name": "deregisterCallback" } } ], "directives": [] }, "leadingComments": [ { "type": "CommentBlock", "value": "*\n * Gives an ID and a way to unsubscribe from the Updateable binding with the manager.\n * \n * Since the UpdateableManager does nothing to bind the Updateable to the manager, there is no code in the callback\n * assigned. However, the pattern is there to outline a default.\n * \n * @param {Updateable} updateable The updateable to be registered.\n ", "start": 487, "end": 864, "loc": { "start": { "line": 18, "column": 4 }, "end": { "line": 25, "column": 7 } } } ] } ], "trailingComments": null }, "leadingComments": [ { "type": "CommentBlock", "value": "*\n * Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\n * ID (number) which can be used to distinguish it.\n * \n * Any object that descends from Updateable will have an ID.\n ", "start": 34, "end": 263, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 8, "column": 3 } } } ], "trailingComments": [ { "type": "CommentBlock", "value": "*\n * Singleton reference to the Object Manager.\n ", "start": 1040, "end": 1093, "loc": { "start": { "line": 33, "column": 0 }, "end": { "line": 35, "column": 3 } } } ] }, "leadingComments": [ { "type": "CommentBlock", "value": "*\n * Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\n * ID (number) which can be used to distinguish it.\n * \n * Any object that descends from Updateable will have an ID.\n ", "start": 34, "end": 263, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 8, "column": 3 } } } ], "trailingComments": [ { "type": "CommentBlock", "value": "*\n * Singleton reference to the Object Manager.\n ", "start": 1040, "end": 1093, "loc": { "start": { "line": 33, "column": 0 }, "end": { "line": 35, "column": 3 } } } ] }, { "type": "Identifier", "start": 1094, "end": 1145, "loc": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 51 } }, "declarations": [ { "type": "VariableDeclarator", "start": 1100, "end": 1144, "loc": { "start": { "line": 36, "column": 6 }, "end": { "line": 36, "column": 50 } }, "id": { "type": "Identifier", "start": 1100, "end": 1117, "loc": { "start": { "line": 36, "column": 6 }, "end": { "line": 36, "column": 23 }, "identifierName": "UpdateableManager" }, "name": "UpdateableManager", "leadingComments": null }, "init": { "type": "NewExpression", "start": 1120, "end": 1144, "loc": { "start": { "line": 36, "column": 26 }, "end": { "line": 36, "column": 50 } }, "callee": { "type": "Identifier", "start": 1124, "end": 1142, "loc": { "start": { "line": 36, "column": 30 }, "end": { "line": 36, "column": 48 }, "identifierName": "_UpdateableManager" }, "name": "_UpdateableManager" }, "arguments": [] }, "leadingComments": null } ], "kind": "const", "leadingComments": [], "name": "_", "trailingComments": [] }, { "type": "Identifier", "start": 1146, "end": 1179, "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 33 } }, "declaration": { "type": "Identifier", "start": 1161, "end": 1178, "loc": { "start": { "line": 37, "column": 15 }, "end": { "line": 37, "column": 32 }, "identifierName": "UpdateableManager" }, "name": "UpdateableManager" }, "name": "_", "leadingComments": [], "trailingComments": [] }, { "type": "ExportDefaultDeclaration", "start": 1146, "end": 1179, "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 33 } }, "declaration": { "type": "VariableDeclaration", "kind": "let", "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 33 } }, "declarations": [ { "type": "VariableDeclarator", "id": { "type": "Identifier", "name": "UpdateableManager" }, "init": { "type": "NewExpression", "callee": { "type": "Identifier", "name": "_UpdateableManager" } } } ], "leadingComments": [], "trailingComments": [] } } ], "directives": [] }, "comments": [ { "type": "CommentBlock", "value": "*\n * Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\n * ID (number) which can be used to distinguish it.\n * \n * Any object that descends from Updateable will have an ID.\n ", "start": 34, "end": 263, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 8, "column": 3 } } }, { "type": "CommentBlock", "value": "*\n * Constructor for UpdateableManager. Holds the static ID counter.\n ", "start": 318, "end": 400, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 7 } } }, { "type": "CommentBlock", "value": "*\n * Gives an ID and a way to unsubscribe from the Updateable binding with the manager.\n * \n * Since the UpdateableManager does nothing to bind the Updateable to the manager, there is no code in the callback\n * assigned. However, the pattern is there to outline a default.\n * \n * @param {Updateable} updateable The updateable to be registered.\n ", "start": 487, "end": 864, "loc": { "start": { "line": 18, "column": 4 }, "end": { "line": 25, "column": 7 } } }, { "type": "CommentBlock", "value": "*\n * Singleton reference to the Object Manager.\n ", "start": 1040, "end": 1093, "loc": { "start": { "line": 33, "column": 0 }, "end": { "line": 35, "column": 3 } } } ], "tokens": [ { "type": { "label": "import", "keyword": "import", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "import", "start": 0, "end": 6, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 6 } } }, { "type": { "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "value": "Manager", "start": 7, "end": 14, "loc": { "start": { "line": 1, "column": 7 }, "end": { "line": 1, "column": 14 } } }, { "type": { "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "value": "from", "start": 15, "end": 19, "loc": { "start": { "line": 1, "column": 15 }, "end": { "line": 1, "column": 19 } } }, { "type": { "label": "string", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "./Manager", "start": 20, "end": 31, "loc": { "start": { "line": 1, "column": 20 }, "end": { "line": 1, "column": 31 } } }, { "type": { "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "start": 31, "end": 32, "loc": { "start": { "line": 1, "column": 31 }, "end": { "line": 1, "column": 32 } } }, { "type": "CommentBlock", "value": "*\n * Singleton manager that manages all Updateable Objects. All updateable objects are given a global game\n * ID (number) which can be used to distinguish it.\n * \n * Any object that descends from Updateable will have an ID.\n ", "start": 34, "end": 263, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 8, "column": 3 } } }, { "type": { "label": "export", "keyword": "export", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "export", "start": 264, "end": 270, "loc": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 6 } } }, { "type": { "label": "class", "keyword": "class", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "class", "start": 271, "end": 276, "loc": { "start": { "line": 9, "column": 7 }, "end": { "line": 9, "column": 12 } } }, { "type": { "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "value": "_UpdateableManager", "start": 277, "end": 295, "loc": { "start": { "line": 9, "column": 13 }, "end": { "line": 9, "column": 31 } } }, { "type": { "label": "extends", "keyword": "extends", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "extends", "start": 296, "end": 303, "loc": { "start": { "line": 9, "column": 32 }, "end": { "line": 9, "column": 39 } } }, { "type": { "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "value": "Manager", "start": 304, "end": 311, "loc": { "start": { "line": 9, "column": 40 }, "end": { "line": 9, "column": 47 } } }, { "type": { "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 312, "end": 313, "loc": { "start": { "line": 9, "column": 48 }, "end": { "line": 9, "column": 49 } } }, { "type": "CommentBlock", "value": "*\n * Constructor for UpdateableManager. Holds the static ID counter.\n ", "start": 318, "end": 400, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 7 } } }, { "type": { "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "value": "constructor", "start": 405, "end": 416, "loc": { "start": { "line": 13, "column": 4 }, "end": { "line": 13, "column": 15 } } }, { "type": { "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 416, "end": 417, "loc": { "start": { "line": 13, "column": 15 }, "end": { "line": 13, "column": 16 } } }, { "type": { "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 417, "end": 418, "loc": { "start": { "line": 13, "column": 16 }, "end": { "line": 13, "column": 17 } } }, { "type": { "label": "{", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 419, "end": 420, "loc": { "start": { "line": 13, "column": 18 }, "end": { "line": 13, "column": 19 } } }, { "type": { "label": "super", "keyword": "super", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "super", "start": 429, "end": 434, "loc": { "start": { "line": 14, "column": 8 }, "end": { "line": 14, "column": 13 } } }, { "type": { "label": "(", "beforeExpr": true, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 434, "end": 435, "loc": { "start": { "line": 14, "column": 13 }, "end": { "line": 14, "column": 14 } } }, { "type": { "label": ")", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 435, "end": 436, "loc": { "start": { "line": 14, "column": 14 }, "end": { "line": 14, "column": 15 } } }, { "type": { "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "start": 436, "end": 437, "loc": { "start": { "line": 14, "column": 15 }, "end": { "line": 14, "column": 16 } } }, { "type": { "label": "this", "keyword": "this", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "this", "start": 446, "end": 450, "loc": { "start": { "line": 15, "column": 8 }, "end": { "line": 15, "column": 12 } } }, { "type": { "label": ".", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "start": 450, "end": 451, "loc": { "start": { "line": 15, "column": 12 }, "end": { "line": 15, "column": 13 } } }, { "type": { "label": "name", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "value": "updateableIDCounter", "start": 451, "end": 470, "loc": { "start": { "line": 15, "column": 13 }, "end": { "line": 15, "column": 32 } } }, { "type": { "label": "=", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": true, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": "=", "start": 471, "end": 472, "loc": { "start": { "line": 15, "column": 33 }, "end": { "line": 15, "column": 34 } } }, { "type": { "label": "num", "beforeExpr": false, "startsExpr": true, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "value": 0, "start": 473, "end": 474, "loc": { "start": { "line": 15, "column": 35 }, "end": { "line": 15, "column": 36 } } }, { "type": { "label": ";", "beforeExpr": true, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null, "updateContext": null }, "start": 474, "end": 475, "loc": { "start": { "line": 15, "column": 36 }, "end": { "line": 15, "column": 37 } } }, { "type": { "label": "}", "beforeExpr": false, "startsExpr": false, "rightAssociative": false, "isLoop": false, "isAssign": false, "prefix": false, "postfix": false, "binop": null }, "start": 480, "end": 481, "loc": { "start": { "line": 16, "column": 4 }, "end": { "line": 16, "column": 5 } } }, { "type": "CommentBlock", "value": "*\n * Gives an ID and a way to unsubscribe from the Updateable binding with the manager.\n * \n * Since the UpdateableManager does nothing to bind the Updateable to the manager, there is no code in the callback\n * assigned. However, the pattern is there to outline a default.\n * \n * @param