Repository: Azure/azure-functions-durable-js
Pull request #117 (2019-11-01 16:41:02)

Merging dev into master for v1.3.1 release


Patch:
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 3ce4166..7097915 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -4,6 +4,8 @@
     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
     "version": "0.2.0",
     "configurations": [
+
+
         {
             "type": "node",
             "request": "launch",
@@ -55,6 +57,28 @@
                 "${workspaceFolder}/lib/**"
             ],
             "preLaunchTask": "build"
+        },
+        {
+            "type": "node",
+            "request": "launch",
+            "name": "Mocha Tests Debug",
+            "program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
+            "args": [
+                "-u",
+                "tdd",
+                "--colors",
+                "${workspaceFolder}/lib/test/**/**-spec.js",
+                "-g",
+                ".*",
+                "--timeout",
+                "300000"
+            ],
+            "internalConsoleOptions": "openOnSessionStart",
+            "sourceMaps": true,
+            "outFiles": [
+                "${workspaceFolder}/lib/**"
+            ],
+            "preLaunchTask": "build"
         }
     ]
 }
diff --git a/README.md b/README.md
index 9688325..d082fc3 100644
--- a/README.md
+++ b/README.md
@@ -40,10 +40,10 @@ You can follow the [Visual Studio Code quickstart](https://docs.microsoft.com/en
 
 Run this command from the root folder of your Azure Functions app:
 ```bash
-func extensions install -p Microsoft.Azure.WebJobs.Extensions.DurableTask -v 1.7.0
+func extensions install -p Microsoft.Azure.WebJobs.Extensions.DurableTask -v 1.8.3
 ```
 
-**durable-functions requires Microsoft.Azure.WebJobs.Extensions.DurableTask 1.7.0 or greater.**
+**durable-functions requires Microsoft.Azure.WebJobs.Extensions.DurableTask 1.8.3 or greater.**
 
 4. Install the `durable-functions` npm package at the root of your function app:
 
diff --git a/package-lock.json b/package-lock.json
index 62d69c2..39b7f17 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "durable-functions",
-  "version": "1.3.0",
+  "version": "1.3.1",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -606,3055 +606,6 @@
         }
       }
     },
-    "npm": {
-      "version": "6.11.3",
-      "resolved": "https://registry.npmjs.org/npm/-/npm-6.11.3.tgz",
-      "integrity": "sha512-K2h+MPzZiY39Xf6eHEdECe/LKoJXam4UCflz5kIxoskN3LQFeYs5fqBGT5i4TtM/aBk+86Mcf+jgXs/WuWAutQ==",
-      "requires": {
-        "JSONStream": "1.3.5",
-        "abbrev": "1.1.1",
-        "ansicolors": "0.3.2",
-        "ansistyles": "0.1.3",
-        "aproba": "2.0.0",
-        "archy": "1.0.0",
-        "bin-links": "1.1.3",
-        "bluebird": "3.5.5",
-        "byte-size": "5.0.1",
-        "cacache": "12.0.3",
-        "call-limit": "1.1.1",
-        "chownr": "1.1.2",
-        "ci-info": "2.0.0",
-        "cli-columns": "3.1.2",
-        "cli-table3": "0.5.1",
-        "cmd-shim": "3.0.3",
-        "columnify": "1.5.4",
-        "config-chain": "1.1.12",
-        "debuglog": "1.0.1",
-        "detect-indent": "5.0.0",
-        "detect-newline": "2.1.0",
-        "dezalgo": "1.0.3",
-        "editor": "1.0.0",
-        "figgy-pudding": "3.5.1",
-        "find-npm-prefix": "1.0.2",
-        "fs-vacuum": "1.2.10",
-        "fs-write-stream-atomic": "1.0.10",
-        "gentle-fs": "2.2.1",
-        "glob": "7.1.4",
-        "graceful-fs": "4.2.2",
-        "has-unicode": "2.0.1",
-        "hosted-git-info": "2.8.2",
-        "iferr": "1.0.2",
-        "imurmurhash": "0.1.4",
-        "infer-owner": "1.0.4",
-        "inflight": "1.0.6",
-        "inherits": "2.0.4",
-        "ini": "1.3.5",
-        "init-package-json": "1.10.3",
-        "is-cidr": "3.0.0",
-        "json-parse-better-errors": "1.0.2",
-        "lazy-property": "1.0.0",
-        "libcipm": "4.0.3",
-        "libnpm": "3.0.1",
-        "libnpmaccess": "3.0.2",
-        "libnpmhook": "5.0.3",
-        "libnpmorg": "1.0.1",
-        "libnpmsearch": "2.0.2",
-        "libnpmteam": "1.0.2",
-        "libnpx": "10.2.0",
-        "lock-verify": "2.1.0",
-        "lockfile": "1.0.4",
-        "lodash._baseindexof": "3.1.0",
-        "lodash._baseuniq": "4.6.0",
-        "lodash._bindcallback": "3.0.1",
-        "lodash._cacheindexof": "3.0.2",
-        "lodash._createcache": "3.1.2",
-        "lodash._getnative": "3.9.1",
-        "lodash.clonedeep": "4.5.0",
-        "lodash.restparam": "3.6.1",
-        "lodash.union": "4.6.0",
-        "lodash.uniq": "4.5.0",
-        "lodash.without": "4.4.0",
-        "lru-cache": "5.1.1",
-        "meant": "1.0.1",
-        "mississippi": "3.0.0",
-        "mkdirp": "0.5.1",
-        "move-concurrently": "1.0.1",
-        "node-gyp": "5.0.3",
-        "nopt": "4.0.1",
-        "normalize-package-data": "2.5.0",
-        "npm-audit-report": "1.3.2",
-        "npm-cache-filename": "1.0.2",
-        "npm-install-checks": "3.0.0",
-        "npm-lifecycle": "3.1.3",
-        "npm-package-arg": "6.1.1",
-        "npm-packlist": "1.4.4",
-        "npm-pick-manifest": "3.0.2",
-        "npm-profile": "4.0.2",
-        "npm-registry-fetch": "4.0.0",
-        "npm-user-validate": "1.0.0",
-        "npmlog": "4.1.2",
-        "once": "1.4.0",
-        "opener": "1.5.1",
-        "osenv": "0.1.5",
-        "pacote": "9.5.8",
-        "path-is-inside": "1.0.2",
-        "promise-inflight": "1.0.1",
-        "qrcode-terminal": "0.12.0",
-        "query-string": "6.8.2",
-        "qw": "1.0.1",
-        "read": "1.0.7",
-        "read-cmd-shim": "1.0.4",
-        "read-installed": "4.0.3",
-        "read-package-json": "2.1.0",
-        "read-package-tree": "5.3.1",
-        "readable-stream": "3.4.0",
-        "readdir-scoped-modules": "1.1.0",
-        "request": "2.88.0",
-        "retry": "0.12.0",
-        "rimraf": "2.6.3",
-        "safe-buffer": "5.1.2",
-        "semver": "5.7.1",
-        "sha": "3.0.0",
-        "slide": "1.1.6",
-        "sorted-object": "2.0.1",
-        "sorted-union-stream": "2.1.3",
-        "ssri": "6.0.1",
-        "stringify-package": "1.0.0",
-        "tar": "4.4.10",
-        "text-table": "0.2.0",
-        "tiny-relative-date": "1.3.0",
-        "uid-number": "0.0.6",
-        "umask": "1.1.0",
-        "unique-filename": "1.1.1",
-        "unpipe": "1.0.0",
-        "update-notifier": "2.5.0",
-        "uuid": "3.3.2",
-        "validate-npm-package-license": "3.0.4",
-        "validate-npm-package-name": "3.0.0",
-        "which": "1.3.1",
-        "worker-farm": "1.7.0",
-        "write-file-atomic": "2.4.3"
-      },
-      "dependencies": {
-        "JSONStream": {
-          "version": "1.3.5",
-          "bundled": true,
-          "requires": {
-            "jsonparse": "1.3.1",
-            "through": "2.3.8"
-          }
-        },
-        "abbrev": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "agent-base": {
-          "version": "4.3.0",
-          "bundled": true,
-          "requires": {
-            "es6-promisify": "5.0.0"
-          }
-        },
-        "agentkeepalive": {
-          "version": "3.5.2",
-          "bundled": true,
-          "requires": {
-            "humanize-ms": "1.2.1"
-          }
-        },
-        "ajv": {
-          "version": "5.5.2",
-          "bundled": true,
-          "requires": {
-            "co": "4.6.0",
-            "fast-deep-equal": "1.1.0",
-            "fast-json-stable-stringify": "2.0.0",
-            "json-schema-traverse": "0.3.1"
-          }
-        },
-        "ansi-align": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "string-width": "2.1.1"
-          }
-        },
-        "ansi-regex": {
-          "version": "2.1.1",
-          "bundled": true
-        },
-        "ansi-styles": {
-          "version": "3.2.1",
-          "bundled": true,
-          "requires": {
-            "color-convert": "1.9.1"
-          }
-        },
-        "ansicolors": {
-          "version": "0.3.2",
-          "bundled": true
-        },
-        "ansistyles": {
-          "version": "0.1.3",
-          "bundled": true
-        },
-        "aproba": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "archy": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "are-we-there-yet": {
-          "version": "1.1.4",
-          "bundled": true,
-          "requires": {
-            "delegates": "1.0.0",
-            "readable-stream": "2.3.6"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "asap": {
-          "version": "2.0.6",
-          "bundled": true
-        },
-        "asn1": {
-          "version": "0.2.4",
-          "bundled": true,
-          "requires": {
-            "safer-buffer": "2.1.2"
-          }
-        },
-        "assert-plus": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "asynckit": {
-          "version": "0.4.0",
-          "bundled": true
-        },
-        "aws-sign2": {
-          "version": "0.7.0",
-          "bundled": true
-        },
-        "aws4": {
-          "version": "1.8.0",
-          "bundled": true
-        },
-        "balanced-match": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "bcrypt-pbkdf": {
-          "version": "1.0.2",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "tweetnacl": "0.14.5"
-          }
-        },
-        "bin-links": {
-          "version": "1.1.3",
-          "bundled": true,
-          "requires": {
-            "bluebird": "3.5.5",
-            "cmd-shim": "3.0.3",
-            "gentle-fs": "2.2.1",
-            "graceful-fs": "4.2.2",
-            "write-file-atomic": "2.4.3"
-          }
-        },
-        "bluebird": {
-          "version": "3.5.5",
-          "bundled": true
-        },
-        "boxen": {
-          "version": "1.3.0",
-          "bundled": true,
-          "requires": {
-            "ansi-align": "2.0.0",
-            "camelcase": "4.1.0",
-            "chalk": "2.4.1",
-            "cli-boxes": "1.0.0",
-            "string-width": "2.1.1",
-            "term-size": "1.2.0",
-            "widest-line": "2.0.0"
-          }
-        },
-        "brace-expansion": {
-          "version": "1.1.11",
-          "bundled": true,
-          "requires": {
-            "balanced-match": "1.0.0",
-            "concat-map": "0.0.1"
-          }
-        },
-        "buffer-from": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "builtins": {
-          "version": "1.0.3",
-          "bundled": true
-        },
-        "byline": {
-          "version": "5.0.0",
-          "bundled": true
-        },
-        "byte-size": {
-          "version": "5.0.1",
-          "bundled": true
-        },
-        "cacache": {
-          "version": "12.0.3",
-          "bundled": true,
-          "requires": {
-            "bluebird": "3.5.5",
-            "chownr": "1.1.2",
-            "figgy-pudding": "3.5.1",
-            "glob": "7.1.4",
-            "graceful-fs": "4.2.2",
-            "infer-owner": "1.0.4",
-            "lru-cache": "5.1.1",
-            "mississippi": "3.0.0",
-            "mkdirp": "0.5.1",
-            "move-concurrently": "1.0.1",
-            "promise-inflight": "1.0.1",
-            "rimraf": "2.6.3",
-            "ssri": "6.0.1",
-            "unique-filename": "1.1.1",
-            "y18n": "4.0.0"
-          }
-        },
-        "call-limit": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "camelcase": {
-          "version": "4.1.0",
-          "bundled": true
-        },
-        "capture-stack-trace": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "caseless": {
-          "version": "0.12.0",
-          "bundled": true
-        },
-        "chalk": {
-          "version": "2.4.1",
-          "bundled": true,
-          "requires": {
-            "ansi-styles": "3.2.1",
-            "escape-string-regexp": "1.0.5",
-            "supports-color": "5.4.0"
-          }
-        },
-        "chownr": {
-          "version": "1.1.2",
-          "bundled": true
-        },
-        "ci-info": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "cidr-regex": {
-          "version": "2.0.10",
-          "bundled": true,
-          "requires": {
-            "ip-regex": "2.1.0"
-          }
-        },
-        "cli-boxes": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "cli-columns": {
-          "version": "3.1.2",
-          "bundled": true,
-          "requires": {
-            "string-width": "2.1.1",
-            "strip-ansi": "3.0.1"
-          }
-        },
-        "cli-table3": {
-          "version": "0.5.1",
-          "bundled": true,
-          "requires": {
-            "colors": "1.3.3",
-            "object-assign": "4.1.1",
-            "string-width": "2.1.1"
-          }
-        },
-        "cliui": {
-          "version": "4.1.0",
-          "bundled": true,
-          "requires": {
-            "string-width": "2.1.1",
-            "strip-ansi": "4.0.0",
-            "wrap-ansi": "2.1.0"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "3.0.0",
-              "bundled": true
-            },
-            "strip-ansi": {
-              "version": "4.0.0",
-              "bundled": true,
-              "requires": {
-                "ansi-regex": "3.0.0"
-              }
-            }
-          }
-        },
-        "clone": {
-          "version": "1.0.4",
-          "bundled": true
-        },
-        "cmd-shim": {
-          "version": "3.0.3",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "4.2.2",
-            "mkdirp": "0.5.1"
-          }
-        },
-        "co": {
-          "version": "4.6.0",
-          "bundled": true
-        },
-        "code-point-at": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "color-convert": {
-          "version": "1.9.1",
-          "bundled": true,
-          "requires": {
-            "color-name": "1.1.3"
-          }
-        },
-        "color-name": {
-          "version": "1.1.3",
-          "bundled": true
-        },
-        "colors": {
-          "version": "1.3.3",
-          "bundled": true,
-          "optional": true
-        },
-        "columnify": {
-          "version": "1.5.4",
-          "bundled": true,
-          "requires": {
-            "strip-ansi": "3.0.1",
-            "wcwidth": "1.0.1"
-          }
-        },
-        "combined-stream": {
-          "version": "1.0.6",
-          "bundled": true,
-          "requires": {
-            "delayed-stream": "1.0.0"
-          }
-        },
-        "concat-map": {
-          "version": "0.0.1",
-          "bundled": true
-        },
-        "concat-stream": {
-          "version": "1.6.2",
-          "bundled": true,
-          "requires": {
-            "buffer-from": "1.0.0",
-            "inherits": "2.0.4",
-            "readable-stream": "2.3.6",
-            "typedarray": "0.0.6"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "config-chain": {
-          "version": "1.1.12",
-          "bundled": true,
-          "requires": {
-            "ini": "1.3.5",
-            "proto-list": "1.2.4"
-          }
-        },
-        "configstore": {
-          "version": "3.1.2",
-          "bundled": true,
-          "requires": {
-            "dot-prop": "4.2.0",
-            "graceful-fs": "4.2.2",
-            "make-dir": "1.3.0",
-            "unique-string": "1.0.0",
-            "write-file-atomic": "2.4.3",
-            "xdg-basedir": "3.0.0"
-          }
-        },
-        "console-control-strings": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "copy-concurrently": {
-          "version": "1.0.5",
-          "bundled": true,
-          "requires": {
-            "aproba": "1.2.0",
-            "fs-write-stream-atomic": "1.0.10",
-            "iferr": "0.1.5",
-            "mkdirp": "0.5.1",
-            "rimraf": "2.6.3",
-            "run-queue": "1.0.3"
-          },
-          "dependencies": {
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true
-            },
-            "iferr": {
-              "version": "0.1.5",
-              "bundled": true
-            }
-          }
-        },
-        "core-util-is": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "create-error-class": {
-          "version": "3.0.2",
-          "bundled": true,
-          "requires": {
-            "capture-stack-trace": "1.0.0"
-          }
-        },
-        "cross-spawn": {
-          "version": "5.1.0",
-          "bundled": true,
-          "requires": {
-            "lru-cache": "4.1.5",
-            "shebang-command": "1.2.0",
-            "which": "1.3.1"
-          },
-          "dependencies": {
-            "lru-cache": {
-              "version": "4.1.5",
-              "bundled": true,
-              "requires": {
-                "pseudomap": "1.0.2",
-                "yallist": "2.1.2"
-              }
-            },
-            "yallist": {
-              "version": "2.1.2",
-              "bundled": true
-            }
-          }
-        },
-        "crypto-random-string": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "cyclist": {
-          "version": "0.2.2",
-          "bundled": true
-        },
-        "dashdash": {
-          "version": "1.14.1",
-          "bundled": true,
-          "requires": {
-            "assert-plus": "1.0.0"
-          }
-        },
-        "debug": {
-          "version": "3.1.0",
-          "bundled": true,
-          "requires": {
-            "ms": "2.0.0"
-          },
-          "dependencies": {
-            "ms": {
-              "version": "2.0.0",
-              "bundled": true
-            }
-          }
-        },
-        "debuglog": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "decamelize": {
-          "version": "1.2.0",
-          "bundled": true
-        },
-        "decode-uri-component": {
-          "version": "0.2.0",
-          "bundled": true
-        },
-        "deep-extend": {
-          "version": "0.5.1",
-          "bundled": true
-        },
-        "defaults": {
-          "version": "1.0.3",
-          "bundled": true,
-          "requires": {
-            "clone": "1.0.4"
-          }
-        },
-        "define-properties": {
-          "version": "1.1.3",
-          "bundled": true,
-          "requires": {
-            "object-keys": "1.0.12"
-          }
-        },
-        "delayed-stream": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "delegates": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "detect-indent": {
-          "version": "5.0.0",
-          "bundled": true
-        },
-        "detect-newline": {
-          "version": "2.1.0",
-          "bundled": true
-        },
-        "dezalgo": {
-          "version": "1.0.3",
-          "bundled": true,
-          "requires": {
-            "asap": "2.0.6",
-            "wrappy": "1.0.2"
-          }
-        },
-        "dot-prop": {
-          "version": "4.2.0",
-          "bundled": true,
-          "requires": {
-            "is-obj": "1.0.1"
-          }
-        },
-        "dotenv": {
-          "version": "5.0.1",
-          "bundled": true
-        },
-        "duplexer3": {
-          "version": "0.1.4",
-          "bundled": true
-        },
-        "duplexify": {
-          "version": "3.6.0",
-          "bundled": true,
-          "requires": {
-            "end-of-stream": "1.4.1",
-            "inherits": "2.0.4",
-            "readable-stream": "2.3.6",
-            "stream-shift": "1.0.0"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "ecc-jsbn": {
-          "version": "0.1.2",
-          "bundled": true,
-          "optional": true,
-          "requires": {
-            "jsbn": "0.1.1",
-            "safer-buffer": "2.1.2"
-          }
-        },
-        "editor": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "encoding": {
-          "version": "0.1.12",
-          "bundled": true,
-          "requires": {
-            "iconv-lite": "0.4.23"
-          }
-        },
-        "end-of-stream": {
-          "version": "1.4.1",
-          "bundled": true,
-          "requires": {
-            "once": "1.4.0"
-          }
-        },
-        "env-paths": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "err-code": {
-          "version": "1.1.2",
-          "bundled": true
-        },
-        "errno": {
-          "version": "0.1.7",
-          "bundled": true,
-          "requires": {
-            "prr": "1.0.1"
-          }
-        },
-        "es-abstract": {
-          "version": "1.12.0",
-          "bundled": true,
-          "requires": {
-            "es-to-primitive": "1.2.0",
-            "function-bind": "1.1.1",
-            "has": "1.0.3",
-            "is-callable": "1.1.4",
-            "is-regex": "1.0.4"
-          }
-        },
-        "es-to-primitive": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "is-callable": "1.1.4",
-            "is-date-object": "1.0.1",
-            "is-symbol": "1.0.2"
-          }
-        },
-        "es6-promise": {
-          "version": "4.2.8",
-          "bundled": true
-        },
-        "es6-promisify": {
-          "version": "5.0.0",
-          "bundled": true,
-          "requires": {
-            "es6-promise": "4.2.8"
-          }
-        },
-        "escape-string-regexp": {
-          "version": "1.0.5",
-          "bundled": true
-        },
-        "execa": {
-          "version": "0.7.0",
-          "bundled": true,
-          "requires": {
-            "cross-spawn": "5.1.0",
-            "get-stream": "3.0.0",
-            "is-stream": "1.1.0",
-            "npm-run-path": "2.0.2",
-            "p-finally": "1.0.0",
-            "signal-exit": "3.0.2",
-            "strip-eof": "1.0.0"
-          },
-          "dependencies": {
-            "get-stream": {
-              "version": "3.0.0",
-              "bundled": true
-            }
-          }
-        },
-        "extend": {
-          "version": "3.0.2",
-          "bundled": true
-        },
-        "extsprintf": {
-          "version": "1.3.0",
-          "bundled": true
-        },
-        "fast-deep-equal": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "fast-json-stable-stringify": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "figgy-pudding": {
-          "version": "3.5.1",
-          "bundled": true
-        },
-        "find-npm-prefix": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "find-up": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "locate-path": "2.0.0"
-          }
-        },
-        "flush-write-stream": {
-          "version": "1.0.3",
-          "bundled": true,
-          "requires": {
-            "inherits": "2.0.4",
-            "readable-stream": "2.3.6"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "forever-agent": {
-          "version": "0.6.1",
-          "bundled": true
-        },
-        "form-data": {
-          "version": "2.3.2",
-          "bundled": true,
-          "requires": {
-            "asynckit": "0.4.0",
-            "combined-stream": "1.0.6",
-            "mime-types": "2.1.19"
-          }
-        },
-        "from2": {
-          "version": "2.3.0",
-          "bundled": true,
-          "requires": {
-            "inherits": "2.0.4",
-            "readable-stream": "2.3.6"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "fs-minipass": {
-          "version": "1.2.6",
-          "bundled": true,
-          "requires": {
-            "minipass": "2.3.3"
-          }
-        },
-        "fs-vacuum": {
-          "version": "1.2.10",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "4.2.2",
-            "path-is-inside": "1.0.2",
-            "rimraf": "2.6.3"
-          }
-        },
-        "fs-write-stream-atomic": {
-          "version": "1.0.10",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "4.2.2",
-            "iferr": "0.1.5",
-            "imurmurhash": "0.1.4",
-            "readable-stream": "2.3.6"
-          },
-          "dependencies": {
-            "iferr": {
-              "version": "0.1.5",
-              "bundled": true
-            },
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "fs.realpath": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "function-bind": {
-          "version": "1.1.1",
-          "bundled": true
-        },
-        "gauge": {
-          "version": "2.7.4",
-          "bundled": true,
-          "requires": {
-            "aproba": "1.2.0",
-            "console-control-strings": "1.1.0",
-            "has-unicode": "2.0.1",
-            "object-assign": "4.1.1",
-            "signal-exit": "3.0.2",
-            "string-width": "1.0.2",
-            "strip-ansi": "3.0.1",
-            "wide-align": "1.1.2"
-          },
-          "dependencies": {
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true
-            },
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "code-point-at": "1.1.0",
-                "is-fullwidth-code-point": "1.0.0",
-                "strip-ansi": "3.0.1"
-              }
-            }
-          }
-        },
-        "genfun": {
-          "version": "5.0.0",
-          "bundled": true
-        },
-        "gentle-fs": {
-          "version": "2.2.1",
-          "bundled": true,
-          "requires": {
-            "aproba": "1.2.0",
-            "chownr": "1.1.2",
-            "fs-vacuum": "1.2.10",
-            "graceful-fs": "4.2.2",
-            "iferr": "0.1.5",
-            "infer-owner": "1.0.4",
-            "mkdirp": "0.5.1",
-            "path-is-inside": "1.0.2",
-            "read-cmd-shim": "1.0.4",
-            "slide": "1.1.6"
-          },
-          "dependencies": {
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true
-            },
-            "iferr": {
-              "version": "0.1.5",
-              "bundled": true
-            }
-          }
-        },
-        "get-caller-file": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "get-stream": {
-          "version": "4.1.0",
-          "bundled": true,
-          "requires": {
-            "pump": "3.0.0"
-          }
-        },
-        "getpass": {
-          "version": "0.1.7",
-          "bundled": true,
-          "requires": {
-            "assert-plus": "1.0.0"
-          }
-        },
-        "glob": {
-          "version": "7.1.4",
-          "bundled": true,
-          "requires": {
-            "fs.realpath": "1.0.0",
-            "inflight": "1.0.6",
-            "inherits": "2.0.4",
-            "minimatch": "3.0.4",
-            "once": "1.4.0",
-            "path-is-absolute": "1.0.1"
-          }
-        },
-        "global-dirs": {
-          "version": "0.1.1",
-          "bundled": true,
-          "requires": {
-            "ini": "1.3.5"
-          }
-        },
-        "got": {
-          "version": "6.7.1",
-          "bundled": true,
-          "requires": {
-            "create-error-class": "3.0.2",
-            "duplexer3": "0.1.4",
-            "get-stream": "3.0.0",
-            "is-redirect": "1.0.0",
-            "is-retry-allowed": "1.1.0",
-            "is-stream": "1.1.0",
-            "lowercase-keys": "1.0.1",
-            "safe-buffer": "5.1.2",
-            "timed-out": "4.0.1",
-            "unzip-response": "2.0.1",
-            "url-parse-lax": "1.0.0"
-          },
-          "dependencies": {
-            "get-stream": {
-              "version": "3.0.0",
-              "bundled": true
-            }
-          }
-        },
-        "graceful-fs": {
-          "version": "4.2.2",
-          "bundled": true
-        },
-        "har-schema": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "har-validator": {
-          "version": "5.1.0",
-          "bundled": true,
-          "requires": {
-            "ajv": "5.5.2",
-            "har-schema": "2.0.0"
-          }
-        },
-        "has": {
-          "version": "1.0.3",
-          "bundled": true,
-          "requires": {
-            "function-bind": "1.1.1"
-          }
-        },
-        "has-flag": {
-          "version": "3.0.0",
-          "bundled": true
-        },
-        "has-symbols": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "has-unicode": {
-          "version": "2.0.1",
-          "bundled": true
-        },
-        "hosted-git-info": {
-          "version": "2.8.2",
-          "bundled": true,
-          "requires": {
-            "lru-cache": "5.1.1"
-          }
-        },
-        "http-cache-semantics": {
-          "version": "3.8.1",
-          "bundled": true
-        },
-        "http-proxy-agent": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "agent-base": "4.3.0",
-            "debug": "3.1.0"
-          }
-        },
-        "http-signature": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "assert-plus": "1.0.0",
-            "jsprim": "1.4.1",
-            "sshpk": "1.14.2"
-          }
-        },
-        "https-proxy-agent": {
-          "version": "2.2.2",
-          "bundled": true,
-          "requires": {
-            "agent-base": "4.3.0",
-            "debug": "3.1.0"
-          }
-        },
-        "humanize-ms": {
-          "version": "1.2.1",
-          "bundled": true,
-          "requires": {
-            "ms": "2.1.1"
-          }
-        },
-        "iconv-lite": {
-          "version": "0.4.23",
-          "bundled": true,
-          "requires": {
-            "safer-buffer": "2.1.2"
-          }
-        },
-        "iferr": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "ignore-walk": {
-          "version": "3.0.1",
-          "bundled": true,
-          "requires": {
-            "minimatch": "3.0.4"
-          }
-        },
-        "import-lazy": {
-          "version": "2.1.0",
-          "bundled": true
-        },
-        "imurmurhash": {
-          "version": "0.1.4",
-          "bundled": true
-        },
-        "infer-owner": {
-          "version": "1.0.4",
-          "bundled": true
-        },
-        "inflight": {
-          "version": "1.0.6",
-          "bundled": true,
-          "requires": {
-            "once": "1.4.0",
-            "wrappy": "1.0.2"
-          }
-        },
-        "inherits": {
-          "version": "2.0.4",
-          "bundled": true
-        },
-        "ini": {
-          "version": "1.3.5",
-          "bundled": true
-        },
-        "init-package-json": {
-          "version": "1.10.3",
-          "bundled": true,
-          "requires": {
-            "glob": "7.1.4",
-            "npm-package-arg": "6.1.1",
-            "promzard": "0.3.0",
-            "read": "1.0.7",
-            "read-package-json": "2.1.0",
-            "semver": "5.7.1",
-            "validate-npm-package-license": "3.0.4",
-            "validate-npm-package-name": "3.0.0"
-          }
-        },
-        "invert-kv": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "ip": {
-          "version": "1.1.5",
-          "bundled": true
-        },
-        "ip-regex": {
-          "version": "2.1.0",
-          "bundled": true
-        },
-        "is-callable": {
-          "version": "1.1.4",
-          "bundled": true
-        },
-        "is-ci": {
-          "version": "1.1.0",
-          "bundled": true,
-          "requires": {
-            "ci-info": "1.6.0"
-          },
-          "dependencies": {
-            "ci-info": {
-              "version": "1.6.0",
-              "bundled": true
-            }
-          }
-        },
-        "is-cidr": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "cidr-regex": "2.0.10"
-          }
-        },
-        "is-date-object": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "number-is-nan": "1.0.1"
-          }
-        },
-        "is-installed-globally": {
-          "version": "0.1.0",
-          "bundled": true,
-          "requires": {
-            "global-dirs": "0.1.1",
-            "is-path-inside": "1.0.1"
-          }
-        },
-        "is-npm": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "is-obj": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "is-path-inside": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "path-is-inside": "1.0.2"
-          }
-        },
-        "is-redirect": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "is-regex": {
-          "version": "1.0.4",
-          "bundled": true,
-          "requires": {
-            "has": "1.0.3"
-          }
-        },
-        "is-retry-allowed": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "is-stream": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "is-symbol": {
-          "version": "1.0.2",
-          "bundled": true,
-          "requires": {
-            "has-symbols": "1.0.0"
-          }
-        },
-        "is-typedarray": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "isarray": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "isexe": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "isstream": {
-          "version": "0.1.2",
-          "bundled": true
-        },
-        "jsbn": {
-          "version": "0.1.1",
-          "bundled": true,
-          "optional": true
-        },
-        "json-parse-better-errors": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "json-schema": {
-          "version": "0.2.3",
-          "bundled": true
-        },
-        "json-schema-traverse": {
-          "version": "0.3.1",
-          "bundled": true
-        },
-        "json-stringify-safe": {
-          "version": "5.0.1",
-          "bundled": true
-        },
-        "jsonparse": {
-          "version": "1.3.1",
-          "bundled": true
-        },
-        "jsprim": {
-          "version": "1.4.1",
-          "bundled": true,
-          "requires": {
-            "assert-plus": "1.0.0",
-            "extsprintf": "1.3.0",
-            "json-schema": "0.2.3",
-            "verror": "1.10.0"
-          }
-        },
-        "latest-version": {
-          "version": "3.1.0",
-          "bundled": true,
-          "requires": {
-            "package-json": "4.0.1"
-          }
-        },
-        "lazy-property": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "lcid": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "invert-kv": "1.0.0"
-          }
-        },
-        "libcipm": {
-          "version": "4.0.3",
-          "bundled": true,
-          "requires": {
-            "bin-links": "1.1.3",
-            "bluebird": "3.5.5",
-            "figgy-pudding": "3.5.1",
-            "find-npm-prefix": "1.0.2",
-            "graceful-fs": "4.2.2",
-            "ini": "1.3.5",
-            "lock-verify": "2.1.0",
-            "mkdirp": "0.5.1",
-            "npm-lifecycle": "3.1.3",
-            "npm-logical-tree": "1.2.1",
-            "npm-package-arg": "6.1.1",
-            "pacote": "9.5.8",
-            "read-package-json": "2.1.0",
-            "rimraf": "2.6.3",
-            "worker-farm": "1.7.0"
-          }
-        },
-        "libnpm": {
-          "version": "3.0.1",
-          "bundled": true,
-          "requires": {
-            "bin-links": "1.1.3",
-            "bluebird": "3.5.5",
-            "find-npm-prefix": "1.0.2",
-            "libnpmaccess": "3.0.2",
-            "libnpmconfig": "1.2.1",
-            "libnpmhook": "5.0.3",
-            "libnpmorg": "1.0.1",
-            "libnpmpublish": "1.1.2",
-            "libnpmsearch": "2.0.2",
-            "libnpmteam": "1.0.2",
-            "lock-verify": "2.1.0",
-            "npm-lifecycle": "3.1.3",
-            "npm-logical-tree": "1.2.1",
-            "npm-package-arg": "6.1.1",
-            "npm-profile": "4.0.2",
-            "npm-registry-fetch": "4.0.0",
-            "npmlog": "4.1.2",
-            "pacote": "9.5.8",
-            "read-package-json": "2.1.0",
-            "stringify-package": "1.0.0"
-          }
-        },
-        "libnpmaccess": {
-          "version": "3.0.2",
-          "bundled": true,
-          "requires": {
-            "aproba": "2.0.0",
-            "get-stream": "4.1.0",
-            "npm-package-arg": "6.1.1",
-            "npm-registry-fetch": "4.0.0"
-          }
-        },
-        "libnpmconfig": {
-          "version": "1.2.1",
-          "bundled": true,
-          "requires": {
-            "figgy-pudding": "3.5.1",
-            "find-up": "3.0.0",
-            "ini": "1.3.5"
-          },
-          "dependencies": {
-            "find-up": {
-              "version": "3.0.0",
-              "bundled": true,
-              "requires": {
-                "locate-path": "3.0.0"
-              }
-            },
-            "locate-path": {
-              "version": "3.0.0",
-              "bundled": true,
-              "requires": {
-                "p-locate": "3.0.0",
-                "path-exists": "3.0.0"
-              }
-            },
-            "p-limit": {
-              "version": "2.2.0",
-              "bundled": true,
-              "requires": {
-                "p-try": "2.2.0"
-              }
-            },
-            "p-locate": {
-              "version": "3.0.0",
-              "bundled": true,
-              "requires": {
-                "p-limit": "2.2.0"
-              }
-            },
-            "p-try": {
-              "version": "2.2.0",
-              "bundled": true
-            }
-          }
-        },
-        "libnpmhook": {
-          "version": "5.0.3",
-          "bundled": true,
-          "requires": {
-            "aproba": "2.0.0",
-            "figgy-pudding": "3.5.1",
-            "get-stream": "4.1.0",
-            "npm-registry-fetch": "4.0.0"
-          }
-        },
-        "libnpmorg": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "aproba": "2.0.0",
-            "figgy-pudding": "3.5.1",
-            "get-stream": "4.1.0",
-            "npm-registry-fetch": "4.0.0"
-          }
-        },
-        "libnpmpublish": {
-          "version": "1.1.2",
-          "bundled": true,
-          "requires": {
-            "aproba": "2.0.0",
-            "figgy-pudding": "3.5.1",
-            "get-stream": "4.1.0",
-            "lodash.clonedeep": "4.5.0",
-            "normalize-package-data": "2.5.0",
-            "npm-package-arg": "6.1.1",
-            "npm-registry-fetch": "4.0.0",
-            "semver": "5.7.1",
-            "ssri": "6.0.1"
-          }
-        },
-        "libnpmsearch": {
-          "version": "2.0.2",
-          "bundled": true,
-          "requires": {
-            "figgy-pudding": "3.5.1",
-            "get-stream": "4.1.0",
-            "npm-registry-fetch": "4.0.0"
-          }
-        },
-        "libnpmteam": {
-          "version": "1.0.2",
-          "bundled": true,
-          "requires": {
-            "aproba": "2.0.0",
-            "figgy-pudding": "3.5.1",
-            "get-stream": "4.1.0",
-            "npm-registry-fetch": "4.0.0"
-          }
-        },
-        "libnpx": {
-          "version": "10.2.0",
-          "bundled": true,
-          "requires": {
-            "dotenv": "5.0.1",
-            "npm-package-arg": "6.1.1",
-            "rimraf": "2.6.3",
-            "safe-buffer": "5.1.2",
-            "update-notifier": "2.5.0",
-            "which": "1.3.1",
-            "y18n": "4.0.0",
-            "yargs": "11.0.0"
-          }
-        },
-        "locate-path": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "p-locate": "2.0.0",
-            "path-exists": "3.0.0"
-          }
-        },
-        "lock-verify": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "npm-package-arg": "6.1.1",
-            "semver": "5.7.1"
-          }
-        },
-        "lockfile": {
-          "version": "1.0.4",
-          "bundled": true,
-          "requires": {
-            "signal-exit": "3.0.2"
-          }
-        },
-        "lodash._baseindexof": {
-          "version": "3.1.0",
-          "bundled": true
-        },
-        "lodash._baseuniq": {
-          "version": "4.6.0",
-          "bundled": true,
-          "requires": {
-            "lodash._createset": "4.0.3",
-            "lodash._root": "3.0.1"
-          }
-        },
-        "lodash._bindcallback": {
-          "version": "3.0.1",
-          "bundled": true
-        },
-        "lodash._cacheindexof": {
-          "version": "3.0.2",
-          "bundled": true
-        },
-        "lodash._createcache": {
-          "version": "3.1.2",
-          "bundled": true,
-          "requires": {
-            "lodash._getnative": "3.9.1"
-          }
-        },
-        "lodash._createset": {
-          "version": "4.0.3",
-          "bundled": true
-        },
-        "lodash._getnative": {
-          "version": "3.9.1",
-          "bundled": true
-        },
-        "lodash._root": {
-          "version": "3.0.1",
-          "bundled": true
-        },
-        "lodash.clonedeep": {
-          "version": "4.5.0",
-          "bundled": true
-        },
-        "lodash.restparam": {
-          "version": "3.6.1",
-          "bundled": true
-        },
-        "lodash.union": {
-          "version": "4.6.0",
-          "bundled": true
-        },
-        "lodash.uniq": {
-          "version": "4.5.0",
-          "bundled": true
-        },
-        "lodash.without": {
-          "version": "4.4.0",
-          "bundled": true
-        },
-        "lowercase-keys": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "lru-cache": {
-          "version": "5.1.1",
-          "bundled": true,
-          "requires": {
-            "yallist": "3.0.3"
-          }
-        },
-        "make-dir": {
-          "version": "1.3.0",
-          "bundled": true,
-          "requires": {
-            "pify": "3.0.0"
-          }
-        },
-        "make-fetch-happen": {
-          "version": "5.0.0",
-          "bundled": true,
-          "requires": {
-            "agentkeepalive": "3.5.2",
-            "cacache": "12.0.3",
-            "http-cache-semantics": "3.8.1",
-            "http-proxy-agent": "2.1.0",
-            "https-proxy-agent": "2.2.2",
-            "lru-cache": "5.1.1",
-            "mississippi": "3.0.0",
-            "node-fetch-npm": "2.0.2",
-            "promise-retry": "1.1.1",
-            "socks-proxy-agent": "4.0.2",
-            "ssri": "6.0.1"
-          }
-        },
-        "meant": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "mem": {
-          "version": "1.1.0",
-          "bundled": true,
-          "requires": {
-            "mimic-fn": "1.2.0"
-          }
-        },
-        "mime-db": {
-          "version": "1.35.0",
-          "bundled": true
-        },
-        "mime-types": {
-          "version": "2.1.19",
-          "bundled": true,
-          "requires": {
-            "mime-db": "1.35.0"
-          }
-        },
-        "mimic-fn": {
-          "version": "1.2.0",
-          "bundled": true
-        },
-        "minimatch": {
-          "version": "3.0.4",
-          "bundled": true,
-          "requires": {
-            "brace-expansion": "1.1.11"
-          }
-        },
-        "minimist": {
-          "version": "0.0.8",
-          "bundled": true
-        },
-        "minipass": {
-          "version": "2.3.3",
-          "bundled": true,
-          "requires": {
-            "safe-buffer": "5.1.2",
-            "yallist": "3.0.2"
-          },
-          "dependencies": {
-            "yallist": {
-              "version": "3.0.2",
-              "bundled": true
-            }
-          }
-        },
-        "minizlib": {
-          "version": "1.2.1",
-          "bundled": true,
-          "requires": {
-            "minipass": "2.3.3"
-          }
-        },
-        "mississippi": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "concat-stream": "1.6.2",
-            "duplexify": "3.6.0",
-            "end-of-stream": "1.4.1",
-            "flush-write-stream": "1.0.3",
-            "from2": "2.3.0",
-            "parallel-transform": "1.1.0",
-            "pump": "3.0.0",
-            "pumpify": "1.5.1",
-            "stream-each": "1.2.2",
-            "through2": "2.0.3"
-          }
-        },
-        "mkdirp": {
-          "version": "0.5.1",
-          "bundled": true,
-          "requires": {
-            "minimist": "0.0.8"
-          }
-        },
-        "move-concurrently": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "aproba": "1.2.0",
-            "copy-concurrently": "1.0.5",
-            "fs-write-stream-atomic": "1.0.10",
-            "mkdirp": "0.5.1",
-            "rimraf": "2.6.3",
-            "run-queue": "1.0.3"
-          },
-          "dependencies": {
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true
-            }
-          }
-        },
-        "ms": {
-          "version": "2.1.1",
-          "bundled": true
-        },
-        "mute-stream": {
-          "version": "0.0.7",
-          "bundled": true
-        },
-        "node-fetch-npm": {
-          "version": "2.0.2",
-          "bundled": true,
-          "requires": {
-            "encoding": "0.1.12",
-            "json-parse-better-errors": "1.0.2",
-            "safe-buffer": "5.1.2"
-          }
-        },
-        "node-gyp": {
-          "version": "5.0.3",
-          "bundled": true,
-          "requires": {
-            "env-paths": "1.0.0",
-            "glob": "7.1.4",
-            "graceful-fs": "4.2.2",
-            "mkdirp": "0.5.1",
-            "nopt": "3.0.6",
-            "npmlog": "4.1.2",
-            "request": "2.88.0",
-            "rimraf": "2.6.3",
-            "semver": "5.3.0",
-            "tar": "4.4.10",
-            "which": "1.3.1"
-          },
-          "dependencies": {
-            "nopt": {
-              "version": "3.0.6",
-              "bundled": true,
-              "requires": {
-                "abbrev": "1.1.1"
-              }
-            },
-            "semver": {
-              "version": "5.3.0",
-              "bundled": true
-            }
-          }
-        },
-        "nopt": {
-          "version": "4.0.1",
-          "bundled": true,
-          "requires": {
-            "abbrev": "1.1.1",
-            "osenv": "0.1.5"
-          }
-        },
-        "normalize-package-data": {
-          "version": "2.5.0",
-          "bundled": true,
-          "requires": {
-            "hosted-git-info": "2.8.2",
-            "resolve": "1.10.0",
-            "semver": "5.7.1",
-            "validate-npm-package-license": "3.0.4"
-          },
-          "dependencies": {
-            "resolve": {
-              "version": "1.10.0",
-              "bundled": true,
-              "requires": {
-                "path-parse": "1.0.6"
-              }
-            }
-          }
-        },
-        "npm-audit-report": {
-          "version": "1.3.2",
-          "bundled": true,
-          "requires": {
-            "cli-table3": "0.5.1",
-            "console-control-strings": "1.1.0"
-          }
-        },
-        "npm-bundled": {
-          "version": "1.0.6",
-          "bundled": true
-        },
-        "npm-cache-filename": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "npm-install-checks": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "semver": "5.7.1"
-          }
-        },
-        "npm-lifecycle": {
-          "version": "3.1.3",
-          "bundled": true,
-          "requires": {
-            "byline": "5.0.0",
-            "graceful-fs": "4.2.2",
-            "node-gyp": "5.0.3",
-            "resolve-from": "4.0.0",
-            "slide": "1.1.6",
-            "uid-number": "0.0.6",
-            "umask": "1.1.0",
-            "which": "1.3.1"
-          }
-        },
-        "npm-logical-tree": {
-          "version": "1.2.1",
-          "bundled": true
-        },
-        "npm-package-arg": {
-          "version": "6.1.1",
-          "bundled": true,
-          "requires": {
-            "hosted-git-info": "2.8.2",
-            "osenv": "0.1.5",
-            "semver": "5.7.1",
-            "validate-npm-package-name": "3.0.0"
-          }
-        },
-        "npm-packlist": {
-          "version": "1.4.4",
-          "bundled": true,
-          "requires": {
-            "ignore-walk": "3.0.1",
-            "npm-bundled": "1.0.6"
-          }
-        },
-        "npm-pick-manifest": {
-          "version": "3.0.2",
-          "bundled": true,
-          "requires": {
-            "figgy-pudding": "3.5.1",
-            "npm-package-arg": "6.1.1",
-            "semver": "5.7.1"
-          }
-        },
-        "npm-profile": {
-          "version": "4.0.2",
-          "bundled": true,
-          "requires": {
-            "aproba": "2.0.0",
-            "figgy-pudding": "3.5.1",
-            "npm-registry-fetch": "4.0.0"
-          }
-        },
-        "npm-registry-fetch": {
-          "version": "4.0.0",
-          "bundled": true,
-          "requires": {
-            "JSONStream": "1.3.5",
-            "bluebird": "3.5.5",
-            "figgy-pudding": "3.5.1",
-            "lru-cache": "5.1.1",
-            "make-fetch-happen": "5.0.0",
-            "npm-package-arg": "6.1.1"
-          }
-        },
-        "npm-run-path": {
-          "version": "2.0.2",
-          "bundled": true,
-          "requires": {
-            "path-key": "2.0.1"
-          }
-        },
-        "npm-user-validate": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "npmlog": {
-          "version": "4.1.2",
-          "bundled": true,
-          "requires": {
-            "are-we-there-yet": "1.1.4",
-            "console-control-strings": "1.1.0",
-            "gauge": "2.7.4",
-            "set-blocking": "2.0.0"
-          }
-        },
-        "number-is-nan": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "oauth-sign": {
-          "version": "0.9.0",
-          "bundled": true
-        },
-        "object-assign": {
-          "version": "4.1.1",
-          "bundled": true
-        },
-        "object-keys": {
-          "version": "1.0.12",
-          "bundled": true
-        },
-        "object.getownpropertydescriptors": {
-          "version": "2.0.3",
-          "bundled": true,
-          "requires": {
-            "define-properties": "1.1.3",
-            "es-abstract": "1.12.0"
-          }
-        },
-        "once": {
-          "version": "1.4.0",
-          "bundled": true,
-          "requires": {
-            "wrappy": "1.0.2"
-          }
-        },
-        "opener": {
-          "version": "1.5.1",
-          "bundled": true
-        },
-        "os-homedir": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "os-locale": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "execa": "0.7.0",
-            "lcid": "1.0.0",
-            "mem": "1.1.0"
-          }
-        },
-        "os-tmpdir": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "osenv": {
-          "version": "0.1.5",
-          "bundled": true,
-          "requires": {
-            "os-homedir": "1.0.2",
-            "os-tmpdir": "1.0.2"
-          }
-        },
-        "p-finally": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "p-limit": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "p-try": "1.0.0"
-          }
-        },
-        "p-locate": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "p-limit": "1.2.0"
-          }
-        },
-        "p-try": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "package-json": {
-          "version": "4.0.1",
-          "bundled": true,
-          "requires": {
-            "got": "6.7.1",
-            "registry-auth-token": "3.3.2",
-            "registry-url": "3.1.0",
-            "semver": "5.7.1"
-          }
-        },
-        "pacote": {
-          "version": "9.5.8",
-          "bundled": true,
-          "requires": {
-            "bluebird": "3.5.5",
-            "cacache": "12.0.3",
-            "chownr": "1.1.2",
-            "figgy-pudding": "3.5.1",
-            "get-stream": "4.1.0",
-            "glob": "7.1.4",
-            "infer-owner": "1.0.4",
-            "lru-cache": "5.1.1",
-            "make-fetch-happen": "5.0.0",
-            "minimatch": "3.0.4",
-            "minipass": "2.3.5",
-            "mississippi": "3.0.0",
-            "mkdirp": "0.5.1",
-            "normalize-package-data": "2.5.0",
-            "npm-package-arg": "6.1.1",
-            "npm-packlist": "1.4.4",
-            "npm-pick-manifest": "3.0.2",
-            "npm-registry-fetch": "4.0.0",
-            "osenv": "0.1.5",
-            "promise-inflight": "1.0.1",
-            "promise-retry": "1.1.1",
-            "protoduck": "5.0.1",
-            "rimraf": "2.6.3",
-            "safe-buffer": "5.1.2",
-            "semver": "5.7.1",
-            "ssri": "6.0.1",
-            "tar": "4.4.10",
-            "unique-filename": "1.1.1",
-            "which": "1.3.1"
-          },
-          "dependencies": {
-            "minipass": {
-              "version": "2.3.5",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2",
-                "yallist": "3.0.3"
-              }
-            }
-          }
-        },
-        "parallel-transform": {
-          "version": "1.1.0",
-          "bundled": true,
-          "requires": {
-            "cyclist": "0.2.2",
-            "inherits": "2.0.4",
-            "readable-stream": "2.3.6"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "path-exists": {
-          "version": "3.0.0",
-          "bundled": true
-        },
-        "path-is-absolute": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "path-is-inside": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "path-key": {
-          "version": "2.0.1",
-          "bundled": true
-        },
-        "path-parse": {
-          "version": "1.0.6",
-          "bundled": true
-        },
-        "performance-now": {
-          "version": "2.1.0",
-          "bundled": true
-        },
-        "pify": {
-          "version": "3.0.0",
-          "bundled": true
-        },
-        "prepend-http": {
-          "version": "1.0.4",
-          "bundled": true
-        },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "promise-inflight": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "promise-retry": {
-          "version": "1.1.1",
-          "bundled": true,
-          "requires": {
-            "err-code": "1.1.2",
-            "retry": "0.10.1"
-          },
-          "dependencies": {
-            "retry": {
-              "version": "0.10.1",
-              "bundled": true
-            }
-          }
-        },
-        "promzard": {
-          "version": "0.3.0",
-          "bundled": true,
-          "requires": {
-            "read": "1.0.7"
-          }
-        },
-        "proto-list": {
-          "version": "1.2.4",
-          "bundled": true
-        },
-        "protoduck": {
-          "version": "5.0.1",
-          "bundled": true,
-          "requires": {
-            "genfun": "5.0.0"
-          }
-        },
-        "prr": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "pseudomap": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "psl": {
-          "version": "1.1.29",
-          "bundled": true
-        },
-        "pump": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "end-of-stream": "1.4.1",
-            "once": "1.4.0"
-          }
-        },
-        "pumpify": {
-          "version": "1.5.1",
-          "bundled": true,
-          "requires": {
-            "duplexify": "3.6.0",
-            "inherits": "2.0.4",
-            "pump": "2.0.1"
-          },
-          "dependencies": {
-            "pump": {
-              "version": "2.0.1",
-              "bundled": true,
-              "requires": {
-                "end-of-stream": "1.4.1",
-                "once": "1.4.0"
-              }
-            }
-          }
-        },
-        "punycode": {
-          "version": "1.4.1",
-          "bundled": true
-        },
-        "qrcode-terminal": {
-          "version": "0.12.0",
-          "bundled": true
-        },
-        "qs": {
-          "version": "6.5.2",
-          "bundled": true
-        },
-        "query-string": {
-          "version": "6.8.2",
-          "bundled": true,
-          "requires": {
-            "decode-uri-component": "0.2.0",
-            "split-on-first": "1.1.0",
-            "strict-uri-encode": "2.0.0"
-          }
-        },
-        "qw": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "rc": {
-          "version": "1.2.7",
-          "bundled": true,
-          "requires": {
-            "deep-extend": "0.5.1",
-            "ini": "1.3.5",
-            "minimist": "1.2.0",
-            "strip-json-comments": "2.0.1"
-          },
-          "dependencies": {
-            "minimist": {
-              "version": "1.2.0",
-              "bundled": true
-            }
-          }
-        },
-        "read": {
-          "version": "1.0.7",
-          "bundled": true,
-          "requires": {
-            "mute-stream": "0.0.7"
-          }
-        },
-        "read-cmd-shim": {
-          "version": "1.0.4",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "4.2.2"
-          }
-        },
-        "read-installed": {
-          "version": "4.0.3",
-          "bundled": true,
-          "requires": {
-            "debuglog": "1.0.1",
-            "graceful-fs": "4.2.2",
-            "read-package-json": "2.1.0",
-            "readdir-scoped-modules": "1.1.0",
-            "semver": "5.7.1",
-            "slide": "1.1.6",
-            "util-extend": "1.0.3"
-          }
-        },
-        "read-package-json": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "glob": "7.1.4",
-            "graceful-fs": "4.2.2",
-            "json-parse-better-errors": "1.0.2",
-            "normalize-package-data": "2.5.0",
-            "slash": "1.0.0"
-          }
-        },
-        "read-package-tree": {
-          "version": "5.3.1",
-          "bundled": true,
-          "requires": {
-            "read-package-json": "2.1.0",
-            "readdir-scoped-modules": "1.1.0",
-            "util-promisify": "2.1.0"
-          }
-        },
-        "readable-stream": {
-          "version": "3.4.0",
-          "bundled": true,
-          "requires": {
-            "inherits": "2.0.4",
-            "string_decoder": "1.2.0",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "readdir-scoped-modules": {
-          "version": "1.1.0",
-          "bundled": true,
-          "requires": {
-            "debuglog": "1.0.1",
-            "dezalgo": "1.0.3",
-            "graceful-fs": "4.2.2",
-            "once": "1.4.0"
-          }
-        },
-        "registry-auth-token": {
-          "version": "3.3.2",
-          "bundled": true,
-          "requires": {
-            "rc": "1.2.7",
-            "safe-buffer": "5.1.2"
-          }
-        },
-        "registry-url": {
-          "version": "3.1.0",
-          "bundled": true,
-          "requires": {
-            "rc": "1.2.7"
-          }
-        },
-        "request": {
-          "version": "2.88.0",
-          "bundled": true,
-          "requires": {
-            "aws-sign2": "0.7.0",
-            "aws4": "1.8.0",
-            "caseless": "0.12.0",
-            "combined-stream": "1.0.6",
-            "extend": "3.0.2",
-            "forever-agent": "0.6.1",
-            "form-data": "2.3.2",
-            "har-validator": "5.1.0",
-            "http-signature": "1.2.0",
-            "is-typedarray": "1.0.0",
-            "isstream": "0.1.2",
-            "json-stringify-safe": "5.0.1",
-            "mime-types": "2.1.19",
-            "oauth-sign": "0.9.0",
-            "performance-now": "2.1.0",
-            "qs": "6.5.2",
-            "safe-buffer": "5.1.2",
-            "tough-cookie": "2.4.3",
-            "tunnel-agent": "0.6.0",
-            "uuid": "3.3.2"
-          }
-        },
-        "require-directory": {
-          "version": "2.1.1",
-          "bundled": true
-        },
-        "require-main-filename": {
-          "version": "1.0.1",
-          "bundled": true
-        },
-        "resolve-from": {
-          "version": "4.0.0",
-          "bundled": true
-        },
-        "retry": {
-          "version": "0.12.0",
-          "bundled": true
-        },
-        "rimraf": {
-          "version": "2.6.3",
-          "bundled": true,
-          "requires": {
-            "glob": "7.1.4"
-          }
-        },
-        "run-queue": {
-          "version": "1.0.3",
-          "bundled": true,
-          "requires": {
-            "aproba": "1.2.0"
-          },
-          "dependencies": {
-            "aproba": {
-              "version": "1.2.0",
-              "bundled": true
-            }
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.2",
-          "bundled": true
-        },
-        "safer-buffer": {
-          "version": "2.1.2",
-          "bundled": true
-        },
-        "semver": {
-          "version": "5.7.1",
-          "bundled": true
-        },
-        "semver-diff": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "semver": "5.7.1"
-          }
-        },
-        "set-blocking": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "sha": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "4.2.2"
-          }
-        },
-        "shebang-command": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "shebang-regex": "1.0.0"
-          }
-        },
-        "shebang-regex": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "signal-exit": {
-          "version": "3.0.2",
-          "bundled": true
-        },
-        "slash": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "slide": {
-          "version": "1.1.6",
-          "bundled": true
-        },
-        "smart-buffer": {
-          "version": "4.0.2",
-          "bundled": true
-        },
-        "socks": {
-          "version": "2.3.2",
-          "bundled": true,
-          "requires": {
-            "ip": "1.1.5",
-            "smart-buffer": "4.0.2"
-          }
-        },
-        "socks-proxy-agent": {
-          "version": "4.0.2",
-          "bundled": true,
-          "requires": {
-            "agent-base": "4.2.1",
-            "socks": "2.3.2"
-          },
-          "dependencies": {
-            "agent-base": {
-              "version": "4.2.1",
-              "bundled": true,
-              "requires": {
-                "es6-promisify": "5.0.0"
-              }
-            }
-          }
-        },
-        "sorted-object": {
-          "version": "2.0.1",
-          "bundled": true
-        },
-        "sorted-union-stream": {
-          "version": "2.1.3",
-          "bundled": true,
-          "requires": {
-            "from2": "1.3.0",
-            "stream-iterate": "1.2.0"
-          },
-          "dependencies": {
-            "from2": {
-              "version": "1.3.0",
-              "bundled": true,
-              "requires": {
-                "inherits": "2.0.4",
-                "readable-stream": "1.1.14"
-              }
-            },
-            "isarray": {
-              "version": "0.0.1",
-              "bundled": true
-            },
-            "readable-stream": {
-              "version": "1.1.14",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "0.0.1",
-                "string_decoder": "0.10.31"
-              }
-            },
-            "string_decoder": {
-              "version": "0.10.31",
-              "bundled": true
-            }
-          }
-        },
-        "spdx-correct": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "spdx-expression-parse": "3.0.0",
-            "spdx-license-ids": "3.0.3"
-          }
-        },
-        "spdx-exceptions": {
-          "version": "2.1.0",
-          "bundled": true
-        },
-        "spdx-expression-parse": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "spdx-exceptions": "2.1.0",
-            "spdx-license-ids": "3.0.3"
-          }
-        },
-        "spdx-license-ids": {
-          "version": "3.0.3",
-          "bundled": true
-        },
-        "split-on-first": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "sshpk": {
-          "version": "1.14.2",
-          "bundled": true,
-          "requires": {
-            "asn1": "0.2.4",
-            "assert-plus": "1.0.0",
-            "bcrypt-pbkdf": "1.0.2",
-            "dashdash": "1.14.1",
-            "ecc-jsbn": "0.1.2",
-            "getpass": "0.1.7",
-            "jsbn": "0.1.1",
-            "safer-buffer": "2.1.2",
-            "tweetnacl": "0.14.5"
-          }
-        },
-        "ssri": {
-          "version": "6.0.1",
-          "bundled": true,
-          "requires": {
-            "figgy-pudding": "3.5.1"
-          }
-        },
-        "stream-each": {
-          "version": "1.2.2",
-          "bundled": true,
-          "requires": {
-            "end-of-stream": "1.4.1",
-            "stream-shift": "1.0.0"
-          }
-        },
-        "stream-iterate": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "readable-stream": "2.3.6",
-            "stream-shift": "1.0.0"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "stream-shift": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "strict-uri-encode": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "string-width": {
-          "version": "2.1.1",
-          "bundled": true,
-          "requires": {
-            "is-fullwidth-code-point": "2.0.0",
-            "strip-ansi": "4.0.0"
-          },
-          "dependencies": {
-            "ansi-regex": {
-              "version": "3.0.0",
-              "bundled": true
-            },
-            "is-fullwidth-code-point": {
-              "version": "2.0.0",
-              "bundled": true
-            },
-            "strip-ansi": {
-              "version": "4.0.0",
-              "bundled": true,
-              "requires": {
-                "ansi-regex": "3.0.0"
-              }
-            }
-          }
-        },
-        "string_decoder": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        },
-        "stringify-package": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "bundled": true,
-          "requires": {
-            "ansi-regex": "2.1.1"
-          }
-        },
-        "strip-eof": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "strip-json-comments": {
-          "version": "2.0.1",
-          "bundled": true
-        },
-        "supports-color": {
-          "version": "5.4.0",
-          "bundled": true,
-          "requires": {
-            "has-flag": "3.0.0"
-          }
-        },
-        "tar": {
-          "version": "4.4.10",
-          "bundled": true,
-          "requires": {
-            "chownr": "1.1.2",
-            "fs-minipass": "1.2.6",
-            "minipass": "2.3.5",
-            "minizlib": "1.2.1",
-            "mkdirp": "0.5.1",
-            "safe-buffer": "5.1.2",
-            "yallist": "3.0.3"
-          },
-          "dependencies": {
-            "minipass": {
-              "version": "2.3.5",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2",
-                "yallist": "3.0.3"
-              }
-            },
-            "yallist": {
-              "version": "3.0.3",
-              "bundled": true
-            }
-          }
-        },
-        "term-size": {
-          "version": "1.2.0",
-          "bundled": true,
-          "requires": {
-            "execa": "0.7.0"
-          }
-        },
-        "text-table": {
-          "version": "0.2.0",
-          "bundled": true
-        },
-        "through": {
-          "version": "2.3.8",
-          "bundled": true
-        },
-        "through2": {
-          "version": "2.0.3",
-          "bundled": true,
-          "requires": {
-            "readable-stream": "2.3.6",
-            "xtend": "4.0.1"
-          },
-          "dependencies": {
-            "readable-stream": {
-              "version": "2.3.6",
-              "bundled": true,
-              "requires": {
-                "core-util-is": "1.0.2",
-                "inherits": "2.0.4",
-                "isarray": "1.0.0",
-                "process-nextick-args": "2.0.0",
-                "safe-buffer": "5.1.2",
-                "string_decoder": "1.1.1",
-                "util-deprecate": "1.0.2"
-              }
-            },
-            "string_decoder": {
-              "version": "1.1.1",
-              "bundled": true,
-              "requires": {
-                "safe-buffer": "5.1.2"
-              }
-            }
-          }
-        },
-        "timed-out": {
-          "version": "4.0.1",
-          "bundled": true
-        },
-        "tiny-relative-date": {
-          "version": "1.3.0",
-          "bundled": true
-        },
-        "tough-cookie": {
-          "version": "2.4.3",
-          "bundled": true,
-          "requires": {
-            "psl": "1.1.29",
-            "punycode": "1.4.1"
-          }
-        },
-        "tunnel-agent": {
-          "version": "0.6.0",
-          "bundled": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        },
-        "tweetnacl": {
-          "version": "0.14.5",
-          "bundled": true,
-          "optional": true
-        },
-        "typedarray": {
-          "version": "0.0.6",
-          "bundled": true
-        },
-        "uid-number": {
-          "version": "0.0.6",
-          "bundled": true
-        },
-        "umask": {
-          "version": "1.1.0",
-          "bundled": true
-        },
-        "unique-filename": {
-          "version": "1.1.1",
-          "bundled": true,
-          "requires": {
-            "unique-slug": "2.0.0"
-          }
-        },
-        "unique-slug": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "imurmurhash": "0.1.4"
-          }
-        },
-        "unique-string": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "crypto-random-string": "1.0.0"
-          }
-        },
-        "unpipe": {
-          "version": "1.0.0",
-          "bundled": true
-        },
-        "unzip-response": {
-          "version": "2.0.1",
-          "bundled": true
-        },
-        "update-notifier": {
-          "version": "2.5.0",
-          "bundled": true,
-          "requires": {
-            "boxen": "1.3.0",
-            "chalk": "2.4.1",
-            "configstore": "3.1.2",
-            "import-lazy": "2.1.0",
-            "is-ci": "1.1.0",
-            "is-installed-globally": "0.1.0",
-            "is-npm": "1.0.0",
-            "latest-version": "3.1.0",
-            "semver-diff": "2.1.0",
-            "xdg-basedir": "3.0.0"
-          }
-        },
-        "url-parse-lax": {
-          "version": "1.0.0",
-          "bundled": true,
-          "requires": {
-            "prepend-http": "1.0.4"
-          }
-        },
-        "util-deprecate": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "util-extend": {
-          "version": "1.0.3",
-          "bundled": true
-        },
-        "util-promisify": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "object.getownpropertydescriptors": "2.0.3"
-          }
-        },
-        "uuid": {
-          "version": "3.3.2",
-          "bundled": true
-        },
-        "validate-npm-package-license": {
-          "version": "3.0.4",
-          "bundled": true,
-          "requires": {
-            "spdx-correct": "3.0.0",
-            "spdx-expression-parse": "3.0.0"
-          }
-        },
-        "validate-npm-package-name": {
-          "version": "3.0.0",
-          "bundled": true,
-          "requires": {
-            "builtins": "1.0.3"
-          }
-        },
-        "verror": {
-          "version": "1.10.0",
-          "bundled": true,
-          "requires": {
-            "assert-plus": "1.0.0",
-            "core-util-is": "1.0.2",
-            "extsprintf": "1.3.0"
-          }
-        },
-        "wcwidth": {
-          "version": "1.0.1",
-          "bundled": true,
-          "requires": {
-            "defaults": "1.0.3"
-          }
-        },
-        "which": {
-          "version": "1.3.1",
-          "bundled": true,
-          "requires": {
-            "isexe": "2.0.0"
-          }
-        },
-        "which-module": {
-          "version": "2.0.0",
-          "bundled": true
-        },
-        "wide-align": {
-          "version": "1.1.2",
-          "bundled": true,
-          "requires": {
-            "string-width": "1.0.2"
-          },
-          "dependencies": {
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "code-point-at": "1.1.0",
-                "is-fullwidth-code-point": "1.0.0",
-                "strip-ansi": "3.0.1"
-              }
-            }
-          }
-        },
-        "widest-line": {
-          "version": "2.0.0",
-          "bundled": true,
-          "requires": {
-            "string-width": "2.1.1"
-          }
-        },
-        "worker-farm": {
-          "version": "1.7.0",
-          "bundled": true,
-          "requires": {
-            "errno": "0.1.7"
-          }
-        },
-        "wrap-ansi": {
-          "version": "2.1.0",
-          "bundled": true,
-          "requires": {
-            "string-width": "1.0.2",
-            "strip-ansi": "3.0.1"
-          },
-          "dependencies": {
-            "string-width": {
-              "version": "1.0.2",
-              "bundled": true,
-              "requires": {
-                "code-point-at": "1.1.0",
-                "is-fullwidth-code-point": "1.0.0",
-                "strip-ansi": "3.0.1"
-              }
-            }
-          }
-        },
-        "wrappy": {
-          "version": "1.0.2",
-          "bundled": true
-        },
-        "write-file-atomic": {
-          "version": "2.4.3",
-          "bundled": true,
-          "requires": {
-            "graceful-fs": "4.2.2",
-            "imurmurhash": "0.1.4",
-            "signal-exit": "3.0.2"
-          }
-        },
-        "xdg-basedir": {
-          "version": "3.0.0",
-          "bundled": true
-        },
-        "xtend": {
-          "version": "4.0.1",
-          "bundled": true
-        },
-        "y18n": {
-          "version": "4.0.0",
-          "bundled": true
-        },
-        "yallist": {
-          "version": "3.0.3",
-          "bundled": true
-        },
-        "yargs": {
-          "version": "11.0.0",
-          "bundled": true,
-          "requires": {
-            "cliui": "4.1.0",
-            "decamelize": "1.2.0",
-            "find-up": "2.1.0",
-            "get-caller-file": "1.0.2",
-            "os-locale": "2.1.0",
-            "require-directory": "2.1.1",
-            "require-main-filename": "1.0.1",
-            "set-blocking": "2.0.0",
-            "string-width": "2.1.1",
-            "which-module": "2.0.0",
-            "y18n": "3.2.1",
-            "yargs-parser": "9.0.2"
-          },
-          "dependencies": {
-            "y18n": {
-              "version": "3.2.1",
-              "bundled": true
-            }
-          }
-        },
-        "yargs-parser": {
-          "version": "9.0.2",
-          "bundled": true,
-          "requires": {
-            "camelcase": "4.1.0"
-          }
-        }
-      }
-    },
     "once": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
diff --git a/package.json b/package.json
index 3fe4f64..88fa483 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "durable-functions",
-  "version": "1.3.0",
+  "version": "1.3.1",
   "description": "Durable Functions library for Node.js Azure Functions",
   "license": "MIT",
   "repository": "github:Azure/azure-functions-durable-js",
@@ -33,7 +33,6 @@
     "commander": "~2.9.0",
     "debug": "~2.6.9",
     "lodash": "^4.17.15",
-    "npm": "^6.11.3",
     "rimraf": "~2.5.4",
     "uuid": "~3.3.2",
     "validator": "~10.8.0"
diff --git a/src/durableentitybindinginfo.ts b/src/durableentitybindinginfo.ts
index 2850944..a77f7a3 100644
--- a/src/durableentitybindinginfo.ts
+++ b/src/durableentitybindinginfo.ts
@@ -5,7 +5,7 @@ export class DurableEntityBindingInfo {
     constructor(
         public readonly self: EntityId,
         public readonly exists: boolean,
-        public readonly state: string,
+        public readonly state: string | undefined,
         public readonly batch: RequestMessage[],
     ) { }
 }
diff --git a/src/durableentitycontext.ts b/src/durableentitycontext.ts
index 4cdb8c3..8d71750 100644
--- a/src/durableentitycontext.ts
+++ b/src/durableentitycontext.ts
@@ -26,7 +26,7 @@ export class DurableEntityContext {
      * An operation invocation on an entity includes an operation name, which
      * states what operation to perform, and optionally an operation input.
      */
-    public readonly operationName: string;
+    public readonly operationName: string | undefined;
 
     /**
      * Whether this entity is freshly constructed, i.e. did not exist prior to
diff --git a/src/durableorchestrationbindinginfo.ts b/src/durableorchestrationbindinginfo.ts
index 2ca058d..dc58e24 100644
--- a/src/durableorchestrationbindinginfo.ts
+++ b/src/durableorchestrationbindinginfo.ts
@@ -5,8 +5,8 @@ export class DurableOrchestrationBindingInfo {
     constructor(
         public readonly history: HistoryEvent[] = [],
         public readonly input?: unknown,
-        public readonly instanceId?: string,
-        public readonly isReplaying?: boolean,
+        public readonly instanceId: string = "",
+        public readonly isReplaying: boolean = false,
         public readonly parentInstanceId?: string,
         // TODO: Implement entity locking
         // public readonly contextLocks?: EntityId[],
diff --git a/src/durableorchestrationclient.ts b/src/durableorchestrationclient.ts
index 4871653..468f0ab 100644
--- a/src/durableorchestrationclient.ts
+++ b/src/durableorchestrationclient.ts
@@ -150,7 +150,7 @@ export class DurableOrchestrationClient {
      * @returns An HTTP 202 response with a Location header and a payload
      *  containing instance management URLs.
      */
-    public createCheckStatusResponse(request: IHttpRequest | HttpRequest, instanceId: string): IHttpResponse {
+    public createCheckStatusResponse(request: IHttpRequest | HttpRequest | undefined, instanceId: string): IHttpResponse {
         const httpManagementPayload = this.getClientResponseLinks(request, instanceId);
 
         return {
@@ -234,8 +234,8 @@ export class DurableOrchestrationClient {
      *  the runtimeStatus values in this array.
      */
     public async getStatusBy(
-        createdTimeFrom: Date,
-        createdTimeTo: Date,
+        createdTimeFrom: Date | undefined,
+        createdTimeTo: Date | undefined,
         runtimeStatus: OrchestrationRuntimeStatus[],
         ): Promise<DurableOrchestrationStatus[]> {
         try {
@@ -410,6 +410,10 @@ export class DurableOrchestrationClient {
      * @returns A response containing the current state of the entity.
      */
     public async readEntityState<T>(entityId: EntityId, taskHubName?: string, connectionName?: string): Promise<EntityStateResponse<T>> {
+        if (!(this.clientData.baseUrl && this.clientData.requiredQueryStringParameters)) {
+            throw new Error("Cannot use the readEntityState API with this version of the Durable Task Extension.");
+        }
+
         const requestUrl = WebhookUtils.getReadEntityUrl(this.clientData.baseUrl,
             this.clientData.requiredQueryStringParameters,
             entityId.name,
@@ -478,6 +482,10 @@ export class DurableOrchestrationClient {
         taskHubName?: string,
         connectionName?: string,
         ): Promise<void> {
+        if (!(this.clientData.baseUrl && this.clientData.requiredQueryStringParameters)) {
+            throw new Error("Cannot use the signalEntity API with this version of the Durable Task Extension.");
+        }
+
         const requestUrl = WebhookUtils.getSignalEntityUrl(this.clientData.baseUrl,
             this.clientData.requiredQueryStringParameters,
             entityId.name,
@@ -524,11 +532,11 @@ export class DurableOrchestrationClient {
             .replace(this.instanceIdPlaceholder, (instanceId ? `/${instanceId}` : ""));
 
         try {
-            const response = await this.axiosInstance.post(requestUrl, JSON.stringify(input));
-            if (response.status > 202) {
-                return Promise.reject(new Error(response.data as string));
-            } else if (response.data) {
+            const response = await this.axiosInstance.post(requestUrl, input !== undefined ? JSON.stringify(input) : "");
+            if (response.data && response.status <= 202) {
                 return (response.data as HttpManagementPayload).id;
+            } else  {
+                return Promise.reject(new Error(response.data as string));
             }
         } catch (message) {
             throw new Error(message.error);
@@ -634,7 +642,7 @@ export class DurableOrchestrationClient {
         };
     }
 
-    private getClientResponseLinks(request: IHttpRequest | HttpRequest, instanceId: string): HttpManagementPayload {
+    private getClientResponseLinks(request: IHttpRequest | HttpRequest | undefined, instanceId: string): HttpManagementPayload {
         const payload = { ...this.clientData.managementUrls };
 
         (Object.keys(payload) as Array<(keyof HttpManagementPayload)>).forEach((key) => {
@@ -650,7 +658,7 @@ export class DurableOrchestrationClient {
         return payload;
     }
 
-    private hasValidRequestUrl(request: IHttpRequest | HttpRequest): boolean {
+    private hasValidRequestUrl(request: IHttpRequest | HttpRequest | undefined): boolean {
         const isHttpRequest = request !== undefined && (request as HttpRequest).url !== undefined;
         const isIHttpRequest = request !== undefined && (request as IHttpRequest).http !== undefined;
         return isHttpRequest || isIHttpRequest && (request as IHttpRequest).http.url !== undefined;
diff --git a/src/durableorchestrationcontext.ts b/src/durableorchestrationcontext.ts
index da91f08..58a00ad 100644
--- a/src/durableorchestrationcontext.ts
+++ b/src/durableorchestrationcontext.ts
@@ -37,7 +37,7 @@ export class DurableOrchestrationContext {
      * which case it is formatted as a GUID, or it can be user-specified with
      * any format.
      */
-    public readonly parentInstanceId: string;
+    public readonly parentInstanceId: string | undefined;
 
     /**
      * Gets the current date/time in a way that is safe for use by orchestrator
diff --git a/src/entities/entitystate.ts b/src/entities/entitystate.ts
index 0ddf7e0..0c5aa6e 100644
--- a/src/entities/entitystate.ts
+++ b/src/entities/entitystate.ts
@@ -3,7 +3,7 @@ import { OperationResult, Signal } from "../classes";
 /** @hidden */
 export class EntityState {
     public entityExists: boolean;
-    public entityState: string;
+    public entityState: string | undefined;
     public readonly results: OperationResult[];
     public readonly signals: Signal[];
 
diff --git a/src/entities/entitystateresponse.ts b/src/entities/entitystateresponse.ts
index 0d47125..bf6b4b9 100644
--- a/src/entities/entitystateresponse.ts
+++ b/src/entities/entitystateresponse.ts
@@ -7,6 +7,6 @@ export class EntityStateResponse<T> {
         public entityExists: boolean,
 
         /** The current state of the entity, if it exists, or default value otherwise. */
-        public entityState: T,
+        public entityState: T | undefined,
     ) {}
 }
diff --git a/src/entity.ts b/src/entity.ts
index e74ac71..4579090 100644
--- a/src/entity.ts
+++ b/src/entity.ts
@@ -15,7 +15,7 @@ export class Entity {
 
     private async handle(context: IEntityFunctionContext): Promise<void> {
         const entityBinding = Utils.getInstancesOf<DurableEntityBindingInfo>(
-            context.bindings, new DurableEntityBindingInfo(null, null, null, []))[0];
+            context.bindings, new DurableEntityBindingInfo(new EntityId("samplename", "samplekey"), true, "", []))[0];
 
         if (entityBinding === undefined) {
             throw new Error("Could not find an entityTrigger binding on context.");
diff --git a/src/history/eventraisedevent.ts b/src/history/eventraisedevent.ts
index 467e2e5..bc2235b 100644
--- a/src/history/eventraisedevent.ts
+++ b/src/history/eventraisedevent.ts
@@ -3,7 +3,7 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 /** @hidden */
 export class EventRaisedEvent extends HistoryEvent {
     public Name: string;
-    public Input: string;
+    public Input: string | undefined;
 
     constructor(
         options: HistoryEventOptions,
@@ -15,7 +15,12 @@ export class EventRaisedEvent extends HistoryEvent {
             options.timestamp,
         );
 
-        this.Name = options.name;
+        if (options.name === undefined) {
+            throw new Error("EventRaisedEvent needs a name provided.");
+        } else {
+            this.Name = options.name;
+        }
+
         this.Input = options.input;
     }
 }
diff --git a/src/history/eventsentevent.ts b/src/history/eventsentevent.ts
index 52e690d..1350ab8 100644
--- a/src/history/eventsentevent.ts
+++ b/src/history/eventsentevent.ts
@@ -3,7 +3,7 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 /** @hidden */
 export class EventSentEvent extends HistoryEvent {
     public Name: string;
-    public Input: string;
+    public Input: string | undefined;
     public InstanceId: string;
 
     constructor(
@@ -16,8 +16,16 @@ export class EventSentEvent extends HistoryEvent {
             options.timestamp,
         );
 
-        this.Name = options.name;
+        if (options.name === undefined) {
+            throw new Error("EventSentEvent needs a name provided.");
+        }
+
+        if (options.instanceId === undefined) {
+            throw new Error("EventSentEvent needs an instance id provided.");
+        }
+
         this.Input = options.input;
+        this.Name = options.name;
         this.InstanceId = options.instanceId;
     }
 }
diff --git a/src/history/executionstartedevent.ts b/src/history/executionstartedevent.ts
index a045315..84c80e0 100644
--- a/src/history/executionstartedevent.ts
+++ b/src/history/executionstartedevent.ts
@@ -3,7 +3,7 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 /** @hidden */
 export class ExecutionStartedEvent extends HistoryEvent {
     public Name: string;
-    public Input: string;
+    public Input: string | undefined;
 
     constructor(
         options: HistoryEventOptions,
@@ -15,7 +15,12 @@ export class ExecutionStartedEvent extends HistoryEvent {
             options.timestamp,
         );
 
-        this.Name = options.name;
+        if (options.name === undefined) {
+            throw new Error("ExecutionStartedEvent needs a name provided.");
+        } else {
+            this.Name = options.name;
+        }
+
         this.Input = options.input;
     }
 }
diff --git a/src/history/suborchestrationinstancecompletedevent.ts b/src/history/suborchestrationinstancecompletedevent.ts
index 40c726e..5f29688 100644
--- a/src/history/suborchestrationinstancecompletedevent.ts
+++ b/src/history/suborchestrationinstancecompletedevent.ts
@@ -15,6 +15,14 @@ export class SubOrchestrationInstanceCompletedEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.taskScheduledId === undefined) {
+            throw new Error("SubOrchestrationInstanceCompletedEvent needs a task scheduled id provided.");
+        }
+
+        if (options.result === undefined) {
+            throw new Error("SubOrchestrationInstanceCompletedEvent needs an result provided.");
+        }
+
         this.TaskScheduledId = options.taskScheduledId;
         this.Result = options.result;
     }
diff --git a/src/history/suborchestrationinstancecreatedevent.ts b/src/history/suborchestrationinstancecreatedevent.ts
index 0afd1c8..6550a51 100644
--- a/src/history/suborchestrationinstancecreatedevent.ts
+++ b/src/history/suborchestrationinstancecreatedevent.ts
@@ -4,7 +4,7 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 export class SubOrchestrationInstanceCreatedEvent extends HistoryEvent {
     public Name: string;
     public InstanceId: string;
-    public Input: string;
+    public Input: string | undefined;
 
     constructor(
         options: HistoryEventOptions,
@@ -16,8 +16,16 @@ export class SubOrchestrationInstanceCreatedEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.name === undefined) {
+            throw new Error("SubOrchestrationInstanceCreatedEvent needs a name provided.");
+        }
+
+        if (options.instanceId === undefined) {
+            throw new Error("SubOrchestrationInstanceCreatedEvent needs an instance id provided.");
+        }
+
+        this.Input = options.input;
         this.Name = options.name;
         this.InstanceId = options.instanceId;
-        this.Input = options.input;
     }
 }
diff --git a/src/history/suborchestrationinstancefailedevent.ts b/src/history/suborchestrationinstancefailedevent.ts
index dd94e5f..a5fabfa 100644
--- a/src/history/suborchestrationinstancefailedevent.ts
+++ b/src/history/suborchestrationinstancefailedevent.ts
@@ -3,8 +3,8 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 /** @hidden */
 export class SubOrchestrationInstanceFailedEvent extends HistoryEvent {
     public TaskScheduledId: number;
-    public Reason: string;
-    public Details: string;
+    public Reason: string | undefined;
+    public Details: string | undefined;
 
     constructor(
         options: HistoryEventOptions,
@@ -16,6 +16,10 @@ export class SubOrchestrationInstanceFailedEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.taskScheduledId === undefined) {
+            throw new Error("SubOrchestrationInstanceFailedEvent needs a task scheduled id provided.");
+        }
+
         this.TaskScheduledId = options.taskScheduledId;
         this.Reason = options.reason;
         this.Details = options.details;
diff --git a/src/history/taskcompletedevent.ts b/src/history/taskcompletedevent.ts
index 4c08d1e..ee68e1c 100644
--- a/src/history/taskcompletedevent.ts
+++ b/src/history/taskcompletedevent.ts
@@ -15,6 +15,14 @@ export class TaskCompletedEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.taskScheduledId === undefined) {
+            throw new Error("TaskCompletedEvent needs a task scheduled id provided.");
+        }
+
+        if (options.result === undefined) {
+            throw new Error("TaskCompletedEvent needs a result provided.");
+        }
+
         this.TaskScheduledId = options.taskScheduledId;
         this.Result = options.result;
     }
diff --git a/src/history/taskfailedevent.ts b/src/history/taskfailedevent.ts
index 2668679..f54c54b 100644
--- a/src/history/taskfailedevent.ts
+++ b/src/history/taskfailedevent.ts
@@ -3,8 +3,8 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 /** @hidden */
 export class TaskFailedEvent extends HistoryEvent {
     public TaskScheduledId: number;
-    public Reason: string;
-    public Details: string;
+    public Reason: string | undefined;
+    public Details: string | undefined;
 
     constructor(
         options: HistoryEventOptions,
@@ -16,6 +16,10 @@ export class TaskFailedEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.taskScheduledId === undefined) {
+            throw new Error("TaskFailedEvent needs a task scheduled id provided.");
+        }
+
         this.TaskScheduledId = options.taskScheduledId;
         this.Reason = options.reason;
         this.Details = options.details;
diff --git a/src/history/taskscheduledevent.ts b/src/history/taskscheduledevent.ts
index f5f6c05..e236b37 100644
--- a/src/history/taskscheduledevent.ts
+++ b/src/history/taskscheduledevent.ts
@@ -3,7 +3,7 @@ import { HistoryEvent, HistoryEventOptions, HistoryEventType } from "../classes"
 /** @hidden */
 export class TaskScheduledEvent extends HistoryEvent {
     public Name: string;
-    public Input: string;
+    public Input: string | undefined;
 
     constructor(
         options: HistoryEventOptions,
@@ -15,7 +15,11 @@ export class TaskScheduledEvent extends HistoryEvent {
             options.timestamp,
         );
 
-        this.Name = options.name;
+        if (options.name === undefined) {
+            throw new Error("TaskScheduledEvent needs a name provided.");
+        }
+
         this.Input = options.input;
+        this.Name = options.name;
     }
 }
diff --git a/src/history/timercreatedevent.ts b/src/history/timercreatedevent.ts
index 4056f99..1444868 100644
--- a/src/history/timercreatedevent.ts
+++ b/src/history/timercreatedevent.ts
@@ -14,6 +14,10 @@ export class TimerCreatedEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.fireAt === undefined) {
+            throw new Error("TimerCreatedEvent needs a fireAt time provided.");
+        }
+
         this.FireAt = options.fireAt;
     }
 }
diff --git a/src/history/timerfiredevent.ts b/src/history/timerfiredevent.ts
index fef7a3d..2c5b095 100644
--- a/src/history/timerfiredevent.ts
+++ b/src/history/timerfiredevent.ts
@@ -15,6 +15,14 @@ export class TimerFiredEvent extends HistoryEvent {
             options.timestamp,
         );
 
+        if (options.timerId === undefined) {
+            throw new Error("TimerFiredEvent needs a timer id provided.");
+        }
+
+        if (options.fireAt === undefined) {
+            throw new Error("TimerFiredEvent needs a fireAt time provided.");
+        }
+
         this.TimerId = options.timerId;
         this.FireAt = options.fireAt;
     }
diff --git a/src/orchestrator.ts b/src/orchestrator.ts
index 4dbfa59..1317372 100644
--- a/src/orchestrator.ts
+++ b/src/orchestrator.ts
@@ -19,6 +19,7 @@ export class Orchestrator {
     private currentUtcDateTime: Date;
     private customStatus: unknown;
     private newGuidCounter: number;
+    private subOrchestratorCounter: number;
 
     constructor(public fn: (context: IOrchestrationFunctionContext) => IterableIterator<unknown>) { }
 
@@ -40,14 +41,14 @@ export class Orchestrator {
         // const contextLocks: EntityId[] = orchestrationBinding.contextLocks;
 
         // Initialize currentUtcDateTime
-        let decisionStartedEvent: HistoryEvent = state.find((e) =>
-            (e.EventType === HistoryEventType.OrchestratorStarted));
-        this.currentUtcDateTime = decisionStartedEvent
-            ? new Date(decisionStartedEvent.Timestamp)
-            : undefined;
+        let decisionStartedEvent: HistoryEvent = Utils.ensureNonNull(
+            state.find((e) => e.EventType === HistoryEventType.OrchestratorStarted),
+            "The orchestrator can not execute without an OrchestratorStarted event.");
+        this.currentUtcDateTime = new Date(decisionStartedEvent.Timestamp);
 
-        // Reset newGuidCounter
+        // Reset counters
         this.newGuidCounter = 0;
+        this.subOrchestratorCounter = 0;
 
         // Create durable orchestration context
         context.df = {
@@ -81,9 +82,33 @@ export class Orchestrator {
         let partialResult: Task | TaskSet;
 
         try {
-            let g = gen.next(partialResult ? partialResult.result : undefined);
+            // First execution, we have not yet "yielded" any of the tasks.
+            let g = gen.next(undefined);
 
             while (true) {
+
+                if (!(g.value instanceof Task || g.value instanceof TaskSet)) {
+                    if (!g.done) {
+                        // The orchestrator must have yielded a non-Task related type,
+                        // so just return execution flow with what they yielded back.
+                        g = gen.next(g.value);
+                        continue;
+                    } else {
+                        log("Iterator is done");
+                        // The customer returned an absolute type.
+                        context.done(
+                            null,
+                            new OrchestratorState({
+                                isDone: true,
+                                output: g.value,
+                                actions,
+                                customStatus: this.customStatus,
+                            }),
+                        );
+                        return;
+                    }
+                }
+
                 partialResult = g.value as Task | TaskSet;
                 if (partialResult instanceof Task && partialResult.action) {
                     actions.push([ partialResult.action ]);
@@ -91,7 +116,21 @@ export class Orchestrator {
                     actions.push(partialResult.actions);
                 }
 
-                if (this.shouldFinish(partialResult)) {
+                // Return continue as new events as completed, as the execution itself is now completed.
+                if (partialResult instanceof Task && partialResult.action instanceof ContinueAsNewAction) {
+                    context.done(
+                        null,
+                        new OrchestratorState({
+                            isDone: true,
+                            output: undefined,
+                            actions,
+                            customStatus: this.customStatus,
+                        }),
+                    );
+                    return;
+                }
+
+                if (!partialResult.isCompleted) {
                     context.done(
                         null,
                         new OrchestratorState({
@@ -104,18 +143,24 @@ export class Orchestrator {
                     return;
                 }
 
-                if ((partialResult instanceof Task || partialResult instanceof TaskSet) && partialResult.isFaulted) {
-                    g = gen.throw(partialResult.exception);
+                if (partialResult.isFaulted) {
+                    if (!gen.throw) {
+                        throw new Error("Cannot properly throw the execption returned by customer code");
+                    }
+                    g = gen.throw!(partialResult.exception);
                     continue;
                 }
 
+                // Handles the case where an orchestration completes with a return value of a
+                // completed (non-faulted) task. This shouldn't generally happen as hopefully the customer
+                // would yield the task before returning out of the generator function.
                 if (g.done) {
                     log("Iterator is done");
                     context.done(null,
                         new OrchestratorState({
                             isDone: true,
                             actions,
-                            output: g.value,
+                            output: partialResult.result,
                             customStatus: this.customStatus,
                         }),
                     );
@@ -129,7 +174,7 @@ export class Orchestrator {
                 decisionStartedEvent = newDecisionStartedEvent || decisionStartedEvent;
                 context.df.currentUtcDateTime = this.currentUtcDateTime = new Date(decisionStartedEvent.Timestamp);
 
-                g = gen.next(partialResult ? partialResult.result : undefined);
+                g = gen.next(partialResult.result);
             }
         } catch (error) {
             log(`Error: ${error}`);
@@ -227,7 +272,7 @@ export class Orchestrator {
         const eventSent = this.findEventSent(state, schedulerId, "op");
         let eventRaised;
         if (eventSent) {
-            const eventSentInput = eventSent ? JSON.parse(eventSent.Input) as RequestMessage : undefined;
+            const eventSentInput = eventSent && eventSent.Input !== undefined ? JSON.parse(eventSent.Input) as RequestMessage : undefined;
             eventRaised = eventSentInput ? this.findEventRaised(state, eventSentInput.id) : undefined;
         }
         this.setProcessed([ eventSent, eventRaised ]);
@@ -248,12 +293,16 @@ export class Orchestrator {
     }
 
     private callSubOrchestrator(state: HistoryEvent[], name: string, input?: unknown, instanceId?: string): Task {
-        const newAction = new CallSubOrchestratorAction(name, instanceId, input);
+        if (!name) {
+            throw new Error("A sub-orchestration function name must be provided when attempting to create a suborchestration");
+        }
 
+        const newAction = new CallSubOrchestratorAction(name, instanceId, input);
         const subOrchestratorCreated = this.findSubOrchestrationInstanceCreated(state, name, instanceId);
         const subOrchestratorCompleted = this.findSubOrchestrationInstanceCompleted(state, subOrchestratorCreated);
         const subOrchestratorFailed = this.findSubOrchestrationInstanceFailed(state, subOrchestratorCreated);
-        this.setProcessed([subOrchestratorCreated, subOrchestratorCompleted]);
+
+        this.setProcessed([subOrchestratorCreated, subOrchestratorCompleted, subOrchestratorFailed]);
 
         if (subOrchestratorCompleted) {
             const result = this.parseHistoryEvent(subOrchestratorCompleted);
@@ -292,6 +341,10 @@ export class Orchestrator {
         input?: unknown,
         instanceId?: string)
         : Task {
+        if (!name) {
+            throw new Error("A sub-orchestration function name must be provided when attempting to create a suborchestration");
+        }
+
         const newAction = new CallSubOrchestratorWithRetryAction(name, retryOptions, input, instanceId);
 
         for (let attempt = 1; attempt <= retryOptions.maxNumberOfAttempts; attempt++) {
@@ -419,7 +472,7 @@ export class Orchestrator {
         );
     }
 
-    private lock(state: HistoryEvent[], instanceId: string, contextLocks: EntityId[], entities: EntityId[]): DurableLock {
+    private lock(state: HistoryEvent[], instanceId: string, contextLocks: EntityId[], entities: EntityId[]): DurableLock | undefined {
         if (contextLocks) {
             throw new Error("Cannot acquire more locks when already holding some locks.");
         }
@@ -518,10 +571,13 @@ export class Orchestrator {
         }, []);
 
         const completedTasks = tasks
-            .filter((t) => t.isCompleted)
+            .filter((t) => t && t.isCompleted)
             .sort((a, b) => {
-                if (a.timestamp > b.timestamp) { return 1; }
-                if (a.timestamp < b.timestamp) { return -1; }
+                // Because we have filtered by completed tasks, all of them should have timestamps
+                if (a.timestamp && b.timestamp) {
+                    if (a.timestamp > b.timestamp) { return 1; }
+                    if (a.timestamp < b.timestamp) { return -1; }
+                }
                 return 0;
             });
 
@@ -538,7 +594,8 @@ export class Orchestrator {
 
         switch (directiveResult.EventType) {
             case (HistoryEventType.EventRaised):
-                parsedDirectiveResult = JSON.parse((directiveResult as EventRaisedEvent).Input);
+                const eventRaised = directiveResult as EventRaisedEvent;
+                parsedDirectiveResult = (eventRaised && eventRaised.Input !== undefined) ? JSON.parse(eventRaised.Input) : undefined;
                 break;
             case (HistoryEventType.SubOrchestrationInstanceCompleted):
                 parsedDirectiveResult = JSON.parse((directiveResult as SubOrchestrationInstanceCompletedEvent).Result);
@@ -579,7 +636,7 @@ export class Orchestrator {
     }
 
     /* Returns undefined if not found. */
-    private findRetryTimer(state: HistoryEvent[], failedTask: HistoryEvent): TimerCreatedEvent {
+    private findRetryTimer(state: HistoryEvent[], failedTask: HistoryEvent | undefined): TimerCreatedEvent | undefined {
         const returnValue = failedTask
             ? state.filter((val: HistoryEvent, index: number, array: HistoryEvent[]) => {
                 const failedTaskIndex = array.indexOf(failedTask);
@@ -594,45 +651,68 @@ export class Orchestrator {
     private findSubOrchestrationInstanceCreated(
         state: HistoryEvent[],
         name: string,
-        instanceId: string)
-        : SubOrchestrationInstanceCreatedEvent {
-        const returnValue = name
-            ? state.filter((val: HistoryEvent) => {
-                return val.EventType === HistoryEventType.SubOrchestrationInstanceCreated
-                    && (val as SubOrchestrationInstanceCreatedEvent).Name === name
-                    && (val as SubOrchestrationInstanceCreatedEvent).InstanceId === instanceId
-                    && !val.IsProcessed;
-            })[0]
-            : undefined;
-        return returnValue as SubOrchestrationInstanceCreatedEvent;
+        instanceId: string | undefined)
+        : SubOrchestrationInstanceCreatedEvent | undefined {
+        const matches = state.filter((val: HistoryEvent) => {
+            return val.EventType === HistoryEventType.SubOrchestrationInstanceCreated
+                && !val.IsProcessed;
+        });
+
+        if (matches.length === 0) {
+            return undefined;
+        }
+
+        this.subOrchestratorCounter++;
+
+        // Grab the first unprocessed sub orchestration creation event and verify that
+        // it matches the same function name and instance id if provided. If not, we know that
+        // we have nondeterministic behavior, because the callSubOrchestrator*() methods were not
+        // called in the same order this replay that they were scheduled in.
+        const returnValue = matches[0] as SubOrchestrationInstanceCreatedEvent;
+        if (returnValue.Name !== name) {
+            throw new Error(`The sub-orchestration call (n = ${this.subOrchestratorCounter}) should be executed with a function name of ${returnValue.Name} instead of the provided function name of ${name}. Check your code for non-deterministic behavior.`);
+        }
+
+        if (instanceId && returnValue.InstanceId !== instanceId) {
+            throw new Error(`The sub-orchestration call (n = ${this.subOrchestratorCounter}) should be executed with an instance id of ${returnValue.InstanceId} instead of the provided instance id of ${instanceId}. Check your code for non-deterministic behavior.`);
+        }
+        return returnValue;
     }
 
     /* Returns undefined if not found. */
     private findSubOrchestrationInstanceCompleted(
         state: HistoryEvent[],
-        createdSubOrch: SubOrchestrationInstanceCreatedEvent)
-        : SubOrchestrationInstanceCompletedEvent {
-        const returnValue = createdSubOrch
-            ? state.filter((val: HistoryEvent) => {
+        createdSubOrch: SubOrchestrationInstanceCreatedEvent | undefined)
+        : SubOrchestrationInstanceCompletedEvent | undefined {
+        if (createdSubOrch === undefined) {
+            return undefined;
+        }
+
+        const matches = state.filter((val: HistoryEvent) => {
                 return val.EventType === HistoryEventType.SubOrchestrationInstanceCompleted
-                    && (val as SubOrchestrationInstanceCompletedEvent).TaskScheduledId === createdSubOrch.EventId;
-            })[0]
-            : undefined;
-        return returnValue as SubOrchestrationInstanceCompletedEvent;
+                    && (val as SubOrchestrationInstanceCompletedEvent).TaskScheduledId === createdSubOrch.EventId
+                    && !val.IsProcessed;
+            });
+
+        return (matches.length > 0) ? matches[0] as SubOrchestrationInstanceCompletedEvent : undefined;
     }
 
     /* Returns undefined if not found. */
     private findSubOrchestrationInstanceFailed(
         state: HistoryEvent[],
-        createdSubOrchInstance: SubOrchestrationInstanceCreatedEvent)
-        : SubOrchestrationInstanceFailedEvent {
-        const returnValue = createdSubOrchInstance
-            ? state.filter((val: HistoryEvent) => {
-                return val.EventType === HistoryEventType.SubOrchestrationInstanceFailed
-                    && (val as SubOrchestrationInstanceFailedEvent).TaskScheduledId === createdSubOrchInstance.EventId;
-            })[0]
-            : undefined;
-        return returnValue as SubOrchestrationInstanceFailedEvent;
+        createdSubOrchInstance: SubOrchestrationInstanceCreatedEvent | undefined)
+        : SubOrchestrationInstanceFailedEvent | undefined {
+            if (createdSubOrchInstance === undefined) {
+                return undefined;
+            }
+
+            const matches = state.filter((val: HistoryEvent) => {
+                    return val.EventType === HistoryEventType.SubOrchestrationInstanceFailed
+                        && (val as SubOrchestrationInstanceFailedEvent).TaskScheduledId === createdSubOrchInstance.EventId
+                        && !val.IsProcessed;
+                });
+
+            return (matches.length > 0) ? matches[0] as SubOrchestrationInstanceFailedEvent : undefined;
     }
 
     /* Returns undefined if not found. */
@@ -681,7 +761,7 @@ export class Orchestrator {
     }
 
     /* Returns undefined if not found. */
-    private findTimerFired(state: HistoryEvent[], createdTimer: HistoryEvent): TimerFiredEvent {
+    private findTimerFired(state: HistoryEvent[], createdTimer: TimerCreatedEvent | undefined): TimerFiredEvent | undefined {
         const returnValue = createdTimer
             ? state.filter((val: HistoryEvent) => {
                 return val.EventType === HistoryEventType.TimerFired
@@ -691,14 +771,9 @@ export class Orchestrator {
         return returnValue as TimerFiredEvent;
     }
 
-    private setProcessed(events: HistoryEvent[]): void {
-        events.map((val: HistoryEvent) => {
+    private setProcessed(events: Array<HistoryEvent | undefined>): void {
+        events.map((val: HistoryEvent | undefined) => {
             if (val) { val.IsProcessed = true; }
         });
     }
-
-    private shouldFinish(result: unknown): boolean {
-        return result && Object.prototype.hasOwnProperty.call(result, "isCompleted") && !(result as Task).isCompleted
-            || result instanceof Task && result.action instanceof ContinueAsNewAction;
-    }
 }
diff --git a/src/utils.ts b/src/utils.ts
index 68df532..bd4009f 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -21,6 +21,14 @@ export class Utils {
             });
     }
 
+    public static ensureNonNull<T>(argument: T | undefined, message: string) {
+        if (argument === undefined) {
+            throw new TypeError(message);
+        }
+
+        return argument;
+    }
+
     public static sleep(delayInMilliseconds: number): Promise<NodeJS.Timer> {
         return new Promise((resolve) => setTimeout(resolve, delayInMilliseconds));
     }
@@ -32,8 +40,10 @@ export class Utils {
     }
 
     public static throwIfEmpty(value: unknown, name: string): void {
-        if (typeof value !== "string" || value.trim().length < 1) {
+        if (typeof value !== "string") {
             throw new TypeError(`${name}: Expected non-empty, non-whitespace string but got ${typeof value}`);
+        } else if (value.trim().length < 1) {
+            throw new Error(`${name}: Expected non-empty, non-whitespace string but got empty string`);
         }
     }
 
diff --git a/tsconfig.json b/tsconfig.json
index ba55b42..8afb6e6 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,6 @@
 {
   "compilerOptions": {
-    "strictNullChecks": false,
+    "strictNullChecks": true,
     "declaration": true,
     "module": "commonjs",
     "moduleResolution": "node",


Test patch:
diff --git a/test/integration/entity-spec.ts b/test/integration/entity-spec.ts
index d42935c..1bc2c54 100644
--- a/test/integration/entity-spec.ts
+++ b/test/integration/entity-spec.ts
@@ -14,13 +14,17 @@ describe("Entity", () => {
         operations.push({ kind: "set", value: "hello world"});
         operations.push({ kind: "get"});
 
-        const testData = TestEntityBatches.GetStringStoreBatch(operations, null);
+        const testData = TestEntityBatches.GetStringStoreBatch(operations, undefined);
         const mockContext = new MockContext({
             context: testData.input,
         });
         entity(mockContext);
 
-        entityStateMatchesExpected(mockContext.doneValue, testData.output);
+        expect(mockContext.doneValue).to.not.equal(undefined);
+
+        if (mockContext.doneValue) {
+            entityStateMatchesExpected(mockContext.doneValue, testData.output);
+        }
     });
 
     it("StringStore entity with initial state.", async () => {
@@ -34,7 +38,11 @@ describe("Entity", () => {
         });
         entity(mockContext);
 
-        entityStateMatchesExpected(mockContext.doneValue, testData.output);
+        expect(mockContext.doneValue).to.not.equal(undefined);
+
+        if (mockContext.doneValue) {
+            entityStateMatchesExpected(mockContext.doneValue, testData.output);
+        }
     });
 });
 
diff --git a/test/integration/orchestrator-spec.ts b/test/integration/orchestrator-spec.ts
index c97953d..9aa2b2f 100644
--- a/test/integration/orchestrator-spec.ts
+++ b/test/integration/orchestrator-spec.ts
@@ -40,6 +40,29 @@ describe("Orchestrator", () => {
         );
     });
 
+    it("handles a simple orchestration function (no activity functions), with yield of non-Task object", async () => {
+        const orchestrator = TestOrchestrations.SayHelloInlineInproperYield;
+        const name = "World";
+        const mockContext = new MockContext({
+            context: new DurableOrchestrationBindingInfo(
+                TestHistories.GetOrchestratorStart(
+                    "SayHelloInlineInproperYield",
+                    moment.utc().toDate(),
+                    name),
+                name,
+            ),
+        });
+        orchestrator(mockContext);
+
+        expect(mockContext.doneValue).to.be.deep.equal(
+            new OrchestratorState({
+                isDone: true,
+                actions: [],
+                output: `Hello, ${name}!`,
+            }),
+        );
+    });
+
     falsyValues.forEach((falsyValue) => {
         it(`handles an orchestration function that returns ${falsyValue === "" ? "empty string" : falsyValue}`, async () => {
             const orchestrator = TestOrchestrations.PassThrough;
@@ -63,9 +86,9 @@ describe("Orchestrator", () => {
                 }),
             );
             if (isNaN(falsyValue as number)) {
-                expect(isNaN(mockContext.doneValue.output as number)).to.equal(true);
+                expect(isNaN(mockContext.doneValue!.output as number)).to.equal(true);
             } else {
-                expect(mockContext.doneValue.output).to.equal(falsyValue);
+                expect(mockContext.doneValue!.output).to.equal(falsyValue);
             }
             expect(mockContext.err).to.equal(null);
         });
@@ -88,7 +111,7 @@ describe("Orchestrator", () => {
             });
             orchestrator(mockContext);
 
-            expect(mockContext.df.instanceId).to.be.equal(id);
+            expect(mockContext.df!.instanceId).to.be.equal(id);
         });
 
         it("assigns isReplaying", async () => {
@@ -110,7 +133,7 @@ describe("Orchestrator", () => {
 
             orchestrator(mockContext);
 
-            expect(mockContext.df.isReplaying).to.be.equal(replaying);
+            expect(mockContext.df!.isReplaying).to.be.equal(replaying);
         });
 
         it("assigns parentInstanceId", async () => {
@@ -133,7 +156,7 @@ describe("Orchestrator", () => {
 
             orchestrator(mockContext);
 
-            expect(mockContext.df.parentInstanceId).to.be.equal(id);
+            expect(mockContext.df!.parentInstanceId).to.be.equal(id);
         });
 
         it("updates currentUtcDateTime to the most recent OrchestratorStarted timestamp", async () => {
@@ -154,7 +177,7 @@ describe("Orchestrator", () => {
 
             orchestrator(mockContext);
 
-            expect(mockContext.df.currentUtcDateTime).to.be.deep.equal(nextTimestamp);
+            expect(mockContext.df!.currentUtcDateTime).to.be.deep.equal(nextTimestamp);
         });
 
         it("uses existing currentUtcDateTime if OrchestratorStarted events are exhausted", async () => {
@@ -170,7 +193,7 @@ describe("Orchestrator", () => {
 
             orchestrator(mockContext);
 
-            expect(mockContext.doneValue.error).to.equal(undefined);
+            expect(mockContext.doneValue!.error).to.equal(undefined);
 
             expect(mockContext.err).to.equal(null);
         });
@@ -195,9 +218,9 @@ describe("Orchestrator", () => {
                 isDone: false,
                 actions: [],
             });
-            expect(mockContext.doneValue.error).to.include(expectedErr);
+            expect(mockContext.doneValue!.error).to.include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("reports an unhandled exception from activity passed through orchestrator", async () => {
@@ -220,9 +243,9 @@ describe("Orchestrator", () => {
                     [ new CallActivityAction("ThrowsErrorActivity") ],
                 ],
             });
-            expect(mockContext.doneValue.error).to.include(expectedErr);
+            expect(mockContext.doneValue!.error).to.include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("schedules an activity function after orchestrator catches an exception", async () => {
@@ -388,6 +411,33 @@ describe("Orchestrator", () => {
             );
         });
 
+        it("handles a completed activity function by returning instead of yielding", async () => {
+            const orchestrator = TestOrchestrations.SayHelloWithActivityDirectReturn;
+            const name = "World";
+            const mockContext = new MockContext({
+                context: new DurableOrchestrationBindingInfo(
+                    TestHistories.GetSayHelloWithActivityReplayOne(
+                        "SayHelloWithActivityDirectReturn",
+                        moment.utc().toDate(),
+                        name),
+                    name,
+                ),
+            });
+
+            orchestrator(mockContext);
+
+            expect(mockContext.doneValue).to.be.deep.equal(
+                new OrchestratorState({
+                    isDone: true,
+                    actions:
+                    [
+                        [ new CallActivityAction("Hello", name) ],
+                    ],
+                    output: `Hello, ${name}!`,
+                }),
+            );
+        });
+
         it("handles a completed series of activity functions", async () => {
             const orchestrator = TestOrchestrations.SayHelloSequence;
             const mockContext = new MockContext({
@@ -442,10 +492,10 @@ describe("Orchestrator", () => {
                     actions: [],
                 }),
             );
-            expect(mockContext.doneValue.error).to
+            expect(mockContext.doneValue!.error).to
                 .include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("schedules an activity function", async () => {
@@ -572,10 +622,10 @@ describe("Orchestrator", () => {
                     ],
                 ],
             });
-            expect(mockContext.doneValue.error).to
+            expect(mockContext.doneValue!.error).to
                 .include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("handles a completed activity function", async () => {
@@ -840,6 +890,98 @@ describe("Orchestrator", () => {
             );
         });
 
+        it("Succesfully runs multiple suborchestrator function with no instanceId", async () => {
+            const orchestrator = TestOrchestrations.MultipleSubOrchestratorNoSubId;
+            const name = "World";
+            const id = uuidv1();
+            const mockContext = new MockContext({
+                context: new DurableOrchestrationBindingInfo(
+                    TestHistories.GetMultipleSubOrchestratorNoIdsSubOrchestrationsFinished(
+                        moment.utc().toDate(),
+                        orchestrator,
+                        ["SayHelloWithActivity", "SayHelloInline", "SayHelloWithActivity", "SayHelloInline"],
+                        name,
+                    ),
+                    name,
+                    id,
+                ),
+            });
+
+            orchestrator(mockContext);
+
+            expect(mockContext.doneValue).to.be.deep.equal(
+                new OrchestratorState({
+                    isDone: true,
+                    output: [`Hello, ${name}_SayHelloWithActivity_0!`, `Hello, ${name}_SayHelloInline_1!`, `Hello, ${name}_SayHelloWithActivity_2!`, `Hello, ${name}_SayHelloInline_3!`],
+                    actions: [
+                                [
+                                    new CallSubOrchestratorAction("SayHelloWithActivity", undefined, `${name}_SayHelloWithActivity_0`),
+                                    new CallSubOrchestratorAction("SayHelloInline", undefined, `${name}_SayHelloInline_1`),
+                                    new CallSubOrchestratorAction("SayHelloWithActivity", undefined, `${name}_SayHelloWithActivity_2`),
+                                    new CallSubOrchestratorAction("SayHelloInline", undefined, `${name}_SayHelloInline_3`),
+                                ],
+                            ],
+                }),
+            );
+        });
+
+        it("replay does not match history (mismatched suborchestration name) and throws error.", async () => {
+            const orchestrator = TestOrchestrations.MultipleSubOrchestratorNoSubId;
+            const name = "World";
+            const id = uuidv1();
+            const mockContext = new MockContext({
+                context: new DurableOrchestrationBindingInfo(
+                    TestHistories.GetMultipleSubOrchestratorNoIdsSubOrchestrationsFinished(
+                        moment.utc().toDate(),
+                        orchestrator,
+                        // The order in the sample suborchestrator is ["SayHelloWithActivity", "SayHelloInline", "SayHelloWithActivity", "SayHelloInline"]
+                        ["SayHelloInline", "SayHelloWithActivity", "SayHelloWithActivity", "SayHelloInline"],
+                        name,
+                    ),
+                    name,
+                    id,
+                ),
+            });
+
+            orchestrator(mockContext);
+
+            const expectedErr = "The sub-orchestration call (n = 1) should be executed with a function name of SayHelloInline instead of the provided function name of SayHelloWithActivity. Check your code for non-deterministic behavior.";
+
+            expect(mockContext.doneValue!.error).to
+                .include(expectedErr);
+
+            expect(mockContext.err!.toString()).to.include(expectedErr);
+        });
+
+        it("replay does not match history (mismatched suborchestration instance id) and throws error.", async () => {
+            const orchestrator = TestOrchestrations.SayHelloWithSubOrchestrator;
+            const name = "World";
+            const id = uuidv1();
+            const subId = id + ":1";
+            const mockContext = new MockContext({
+                context: new DurableOrchestrationBindingInfo(
+                    TestHistories.GetSayHelloWithSubOrchestratorReplayOne(
+                        moment.utc().toDate(),
+                        orchestrator,
+                        "SayHelloWithActivity",
+                        subId,
+                        name,
+                    ),
+                    name,
+                    id,
+                ),
+            });
+
+            orchestrator(mockContext);
+
+            const expectedErr = `The sub-orchestration call (n = 1) should be executed with an instance id of ${subId} instead of the provided instance id of ${id}:0. Check your code for non-deterministic behavior.`;
+
+            expect(mockContext.doneValue!.error).to
+                .include(expectedErr);
+
+            expect(mockContext.err!.toString()).to.include(expectedErr);
+        });
+
         it("handles a completed suborchestrator function", async () => {
             const orchestrator = TestOrchestrations.SayHelloWithSubOrchestrator;
             const name = "World";
@@ -902,10 +1044,11 @@ describe("Orchestrator", () => {
                     [ new CallSubOrchestratorAction("SayHelloWithActivity", childId, name) ],
                 ],
             });
-            expect(mockContext.doneValue.error).to
+
+            expect(mockContext.doneValue!.error).to
                 .include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
     });
 
@@ -930,10 +1073,10 @@ describe("Orchestrator", () => {
                 isDone: false,
                 actions: [],
             });
-            expect(mockContext.doneValue.error).to
+            expect(mockContext.doneValue!.error).to
                 .include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("schedules a suborchestrator function", async () => {
@@ -1085,10 +1228,10 @@ describe("Orchestrator", () => {
                     ],
                 ],
             });
-            expect(mockContext.doneValue.error).to
+            expect(mockContext.doneValue!.error).to
                 .include(expectedErr);
 
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("handles a completed suborchestrator function", async () => {
@@ -1148,7 +1291,8 @@ describe("Orchestrator", () => {
 
             expect(mockContext.doneValue).to.be.deep.equal(
                 new OrchestratorState({
-                    isDone: false,
+                    // Is Done needs to be marked as true for 1.8.0 and later to properly process continueAsNew
+                    isDone: true,
                     output: undefined,
                     actions:
                     [
@@ -1249,7 +1393,7 @@ describe("Orchestrator", () => {
             orchestrator(mockContext1);
             orchestrator(mockContext2);
 
-            expect(mockContext1.doneValue.isDone).to.equal(true);
+            expect(mockContext1.doneValue!.isDone).to.equal(true);
             expect(mockContext1.doneValue).to.deep.equal(mockContext2.doneValue);
         });
     });
@@ -1263,7 +1407,7 @@ describe("Orchestrator", () => {
                 ),
             });
 
-            const expectedLockState = new LockState(false, undefined);
+            const expectedLockState = new LockState(false, [new EntityId("samplename", "samplekey")]);
 
             orchestrator(mockContext);
 
@@ -1311,7 +1455,7 @@ describe("Orchestrator", () => {
             orchestrator(mockContext1);
             orchestrator(mockContext2);
 
-            expect(mockContext1.doneValue.isDone).to.equal(true);
+            expect(mockContext1.doneValue!.isDone).to.equal(true);
             expect(mockContext1.doneValue).to.deep.equal(mockContext2.doneValue);
         });
     });
@@ -1546,8 +1690,8 @@ describe("Orchestrator", () => {
                     ],
                 }),
             );
-            expect(mockContext.doneValue.error).to.include(expectedErr);
-            expect(mockContext.err.toString()).to.include(expectedErr);
+            expect(mockContext.doneValue!.error).to.include(expectedErr);
+            expect(mockContext.err!.toString()).to.include(expectedErr);
         });
 
         it("Task.any proceeds if a scheduled parallel task completes in order", async () => {
diff --git a/test/testobjects/TestOrchestrations.ts b/test/testobjects/TestOrchestrations.ts
index 1aa7661..d3cbffc 100644
--- a/test/testobjects/TestOrchestrations.ts
+++ b/test/testobjects/TestOrchestrations.ts
@@ -93,12 +93,22 @@ export class TestOrchestrations {
         return `Hello, ${input}!`;
     });
 
+    public static SayHelloInlineInproperYield: any = df.orchestrator(function*(context: any) {
+        const input = yield context.df.getInput();
+        return `Hello, ${input}!`;
+    });
+
     public static SayHelloWithActivity: any = df.orchestrator(function*(context: any) {
         const input = context.df.getInput();
         const output = yield context.df.callActivity("Hello", input);
         return output;
     });
 
+    public static SayHelloWithActivityDirectReturn: any = df.orchestrator(function*(context: any) {
+        const input = context.df.getInput();
+        return context.df.callActivity("Hello", input);
+    });
+
     public static SayHelloWithActivityRetry: any = df.orchestrator(function*(context: any) {
         const input = context.df.getInput();
         const retryOptions = new df.RetryOptions(10000, 2);
@@ -137,6 +147,17 @@ export class TestOrchestrations {
         return output;
     });
 
+    public static MultipleSubOrchestratorNoSubId: any = df.orchestrator(function*(context: any) {
+        const input = context.df.getInput();
+        const subOrchName1 = "SayHelloWithActivity";
+        const subOrchName2 = "SayHelloInline";
+        const output = context.df.callSubOrchestrator(subOrchName1, `${input}_${subOrchName1}_0`);
+        const output2 = context.df.callSubOrchestrator(subOrchName2, `${input}_${subOrchName2}_1`);
+        const output3 = context.df.callSubOrchestrator(subOrchName1, `${input}_${subOrchName1}_2`);
+        const output4 = context.df.callSubOrchestrator(subOrchName2, `${input}_${subOrchName2}_3`);
+        return yield context.df.Task.all([output, output2, output3, output4]);
+    });
+
     public static SayHelloWithSubOrchestratorRetry: any = df.orchestrator(function*(context: any) {
         const input = context.df.getInput();
         const childId = context.df.instanceId + ":0";
diff --git a/test/testobjects/testentitybatches.ts b/test/testobjects/testentitybatches.ts
index 4f74779..e592e65 100644
--- a/test/testobjects/testentitybatches.ts
+++ b/test/testobjects/testentitybatches.ts
@@ -4,10 +4,10 @@ import { CounterOperation, EntityInputsAndOutputs, StringStoreOperation  } from
 
 export class TestEntityBatches {
 
-    public static GetStringStoreBatch(operations: StringStoreOperation[], existingState: string): EntityInputsAndOutputs {
+    public static GetStringStoreBatch(operations: StringStoreOperation[], existingState: string | undefined): EntityInputsAndOutputs {
         const id = new df.EntityId("stringstore", "stringstorekey");
 
-        const entityExists = existingState != null;
+        const entityExists = existingState !== undefined;
         const output = new EntityState([], []);
         if (entityExists)  {
             output.entityState = JSON.stringify(existingState);
@@ -52,7 +52,7 @@ export class TestEntityBatches {
 
     public static GetCounterBatch(operations: CounterOperation[], existingState: number | undefined): EntityInputsAndOutputs {
         const id = new df.EntityId("stringstore", "stringstorekey");
-        let currentState: number;
+        let currentState: number | undefined;
         if (existingState) {
             currentState = Number(existingState);
         }
@@ -128,7 +128,7 @@ export class TestEntityBatches {
             operationCount++;
         }
         return  {
-            input: new DurableEntityBindingInfo(id, entityExists, existingState != null ? existingState.toString() : undefined, batch),
+            input: new DurableEntityBindingInfo(id, entityExists, existingState !== undefined ? existingState.toString() : undefined, batch),
             output,
         };
     }
diff --git a/test/testobjects/testhistories.ts b/test/testobjects/testhistories.ts
index 92b2504..9967ddf 100644
--- a/test/testobjects/testhistories.ts
+++ b/test/testobjects/testhistories.ts
@@ -588,7 +588,6 @@ export class TestHistories {
                     timestamp: firstTimestamp,
                     isPlayed: false,
                     name: "Hello",
-                    input: null,
                 },
             ),
             new OrchestratorCompletedEvent(
@@ -620,7 +619,6 @@ export class TestHistories {
                     timestamp: firstMoment.add(1, "s").toDate(),
                     isPlayed: false,
                     name: "Hello",
-                    input: null,
                 },
             ),
             new OrchestratorCompletedEvent(
@@ -652,7 +650,6 @@ export class TestHistories {
                     timestamp: firstMoment.add(2, "s").toDate(),
                     isPlayed: false,
                     name: "Hello",
-                    input: null,
                 },
             ),
             new OrchestratorCompletedEvent(
@@ -1483,6 +1480,78 @@ export class TestHistories {
         ];
     }
 
+    // Covers the scenario for TestOrchestrations.MultipleSubOrchestratorNoSubId in which
+    // all of the scheduled sub orchestrations are completed around the same time and processed
+    // in the same orchestration replay.
+    public static GetMultipleSubOrchestratorNoIdsSubOrchestrationsFinished(
+        firstTimestamp: Date,
+        orchestratorName: string,
+        subOrchestratorNames: string[],
+        input: string)
+        : HistoryEvent[] {
+        const firstMoment = moment(firstTimestamp);
+
+        const baseSubInstanceId = "dummy-unique-id";
+        const historyEvents =  [
+            new OrchestratorStartedEvent(
+                {
+                    eventId: -1,
+                    timestamp: firstTimestamp,
+                    isPlayed: false,
+                },
+            ),
+            new ExecutionStartedEvent(
+                {
+                    eventId: -1,
+                    timestamp: firstTimestamp,
+                    isPlayed: true,
+                    name: orchestratorName,
+                    input,
+                },
+            )];
+        for (let i = 0; i < subOrchestratorNames.length; i++) {
+            historyEvents.push(new SubOrchestrationInstanceCreatedEvent(
+                {
+                    eventId: i,
+                    timestamp: firstTimestamp,
+                    isPlayed: false,
+                    name: subOrchestratorNames[i],
+                    input: `${input}_${subOrchestratorNames[i]}_${i}`,
+                    instanceId: `${baseSubInstanceId}_${i}`,
+                },
+            ));
+        }
+        historyEvents.push(
+            new OrchestratorCompletedEvent(
+                {
+                    eventId: -1,
+                    timestamp: firstTimestamp,
+                    isPlayed: false,
+                },
+            ),
+            new OrchestratorStartedEvent(
+                {
+                    eventId: -1,
+                    timestamp: firstMoment.add(1, "s").toDate(),
+                    isPlayed: false,
+                },
+            ));
+
+        for (let i = 0; i < subOrchestratorNames.length; i++) {
+            historyEvents.push(new SubOrchestrationInstanceCompletedEvent(
+                {
+                    eventId: -1,
+                    timestamp: firstMoment.add(1, "s").toDate(),
+                    isPlayed: false,
+                    result: JSON.stringify(`Hello, ${input}_${subOrchestratorNames[i]}_${i}!`),
+                    taskScheduledId: i,
+                },
+            ));
+        }
+
+        return historyEvents;
+    }
+
     public static GetSayHelloWithSubOrchestratorFail(
         firstTimestamp: Date,
         orchestratorName: string,
diff --git a/test/unit/guidmanager-spec.ts b/test/unit/guidmanager-spec.ts
index 357bb2b..8379a09 100644
--- a/test/unit/guidmanager-spec.ts
+++ b/test/unit/guidmanager-spec.ts
@@ -10,13 +10,13 @@ import { GuidManager } from "../../src/classes";
 describe("GuidManager", () => {
     describe("createDeterministicGuid()", async () => {
         it("throws if namespaceValue is empty", () => {
-            expect(() => GuidManager.createDeterministicGuid(undefined, "name"))
-                .to.throw("namespaceValue: Expected non-empty, non-whitespace string but got undefined");
+            expect(() => GuidManager.createDeterministicGuid("", "name"))
+                .to.throw("namespaceValue: Expected non-empty, non-whitespace string but got empty string");
         });
 
         it("throws if name is empty", () => {
-            expect(() => GuidManager.createDeterministicGuid("namespaceValue", undefined))
-                .to.throw("name: Expected non-empty, non-whitespace string but got undefined");
+            expect(() => GuidManager.createDeterministicGuid("namespaceValue", ""))
+                .to.throw("name: Expected non-empty, non-whitespace string but got empty string");
         });
 
         it("returns consistent GUID for namespace and name", () => {
diff --git a/test/unit/orchestrationclient-spec.ts b/test/unit/orchestrationclient-spec.ts
index 5662be2..07a7ee4 100644
--- a/test/unit/orchestrationclient-spec.ts
+++ b/test/unit/orchestrationclient-spec.ts
@@ -49,14 +49,6 @@ describe("Orchestration Client", () => {
 
     const requiredPostHeaders = { reqheaders: { "Content-Type": "application/json" } };
 
-    describe("Constructor", () => {
-        it("throws if clientData is undefined", async () => {
-            expect(() => {
-                const client = new DurableOrchestrationClient(undefined);
-            }).to.throw(`clientData: Expected OrchestrationClientInputData but got undefined`);
-        });
-    });
-
     describe("Properties", () => {
         it("assigns taskHubName", async () => {
             const client = new DurableOrchestrationClient(defaultClientInputData);
@@ -174,13 +166,11 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                null,
-                null,
-                null,
-                null,
-                OrchestrationRuntimeStatus.Pending,
-                null,
-                null);
+                new Date(),
+                new Date(),
+                undefined,
+                undefined,
+                OrchestrationRuntimeStatus.Pending);
             const expectedWebhookUrl = new url.URL(defaultClientInputData.managementUrls.statusQueryGetUri
                 .replace(TestConstants.idPlaceholder, defaultInstanceId));
 
@@ -191,7 +181,7 @@ describe("Orchestration Client", () => {
 
             const result = await client.getStatus(defaultInstanceId);
             expect(scope.isDone()).to.be.equal(true);
-            expect(result).to.be.deep.equal(expectedStatus);
+            expect(JSON.stringify(result)).to.be.equal(JSON.stringify(expectedStatus));
         });
 
         it("calls expected webhook when showHistory = true", async () => {
@@ -200,13 +190,11 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                null,
-                null,
-                null,
-                null,
-                OrchestrationRuntimeStatus.Pending,
-                null,
-                null);
+                new Date(),
+                new Date(),
+                undefined,
+                undefined,
+                OrchestrationRuntimeStatus.Pending);
             const expectedWebhookUrl = new url.URL(defaultClientInputData.managementUrls.statusQueryGetUri
                 .replace(TestConstants.idPlaceholder, defaultInstanceId)
                 + "&showHistory=true");
@@ -218,7 +206,7 @@ describe("Orchestration Client", () => {
 
             const result = await client.getStatus(defaultInstanceId, true);
             expect(scope.isDone()).to.be.equal(true);
-            expect(result).to.be.deep.equal(expectedStatus);
+            expect(JSON.stringify(result)).to.be.equal(JSON.stringify(expectedStatus));
         });
 
         it("calls expected webhook when showHistoryOutput = true", async () => {
@@ -227,13 +215,11 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                null,
-                null,
-                null,
-                null,
-                OrchestrationRuntimeStatus.Pending,
-                null,
-                null);
+                new Date(),
+                new Date(),
+                undefined,
+                undefined,
+                OrchestrationRuntimeStatus.Pending);
             const expectedWebhookUrl = new url.URL(defaultClientInputData.managementUrls.statusQueryGetUri
                 .replace(TestConstants.idPlaceholder, defaultInstanceId)
                 + "&showHistoryOutput=true");
@@ -245,7 +231,7 @@ describe("Orchestration Client", () => {
 
             const result = await client.getStatus(defaultInstanceId, false, true);
             expect(scope.isDone()).to.be.equal(true);
-            expect(result).to.be.deep.equal(expectedStatus);
+            expect(JSON.stringify(result)).to.be.equal(JSON.stringify(expectedStatus));
         });
 
         it("calls expected webhook when showInput = false", async () => {
@@ -254,13 +240,11 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                null,
-                null,
-                null,
-                null,
-                OrchestrationRuntimeStatus.Pending,
-                null,
-                null);
+                new Date(),
+                new Date(),
+                undefined,
+                undefined,
+                OrchestrationRuntimeStatus.Pending);
             const expectedWebhookUrl = new url.URL(defaultClientInputData.managementUrls.statusQueryGetUri
                 .replace(TestConstants.idPlaceholder, defaultInstanceId)
                 + "&showInput=false");
@@ -272,7 +256,7 @@ describe("Orchestration Client", () => {
 
             const result = await client.getStatus(defaultInstanceId, false, false, false);
             expect(scope.isDone()).to.be.equal(true);
-            expect(result).to.be.deep.equal(expectedStatus);
+            expect(JSON.stringify(result)).to.be.equal(JSON.stringify(expectedStatus));
         });
 
         // TODO: test status codes individually
@@ -297,13 +281,11 @@ describe("Orchestration Client", () => {
                 new DurableOrchestrationStatus(
                     defaultOrchestrationName,
                     defaultInstanceId,
-                    null,
-                    null,
-                    null,
-                    null,
-                    OrchestrationRuntimeStatus.Pending,
-                    null,
-                    null),
+                    new Date(),
+                    new Date(),
+                    undefined,
+                    undefined,
+                    OrchestrationRuntimeStatus.Pending),
             ];
             const scope = nock(expectedWebhookUrl.origin)
                 .get(expectedWebhookUrl.pathname)
@@ -312,7 +294,7 @@ describe("Orchestration Client", () => {
 
             const result = await client.getStatusAll();
             expect(scope.isDone()).to.be.equal(true);
-            expect(result).to.be.deep.equal(expectedStatuses);
+            expect(JSON.stringify(result)).to.be.equal(JSON.stringify(expectedStatuses));
         });
     });
 
@@ -342,13 +324,13 @@ describe("Orchestration Client", () => {
                 new DurableOrchestrationStatus(
                     defaultOrchestrationName,
                     defaultInstanceId,
-                    null,
-                    null,
-                    null,
-                    null,
+                    new Date(),
+                    new Date(),
+                    undefined,
+                    undefined,
                     OrchestrationRuntimeStatus.Terminated,
-                    null,
-                    null),
+                    undefined,
+                    undefined),
             ];
             const scope = nock(expectedWebhookUrl.origin)
                 .get(expectedWebhookUrl.pathname)
@@ -357,7 +339,7 @@ describe("Orchestration Client", () => {
 
             const result = await client.getStatusBy(createdTimeFrom, createdTimeTo, runtimeStatuses);
             expect(scope.isDone()).to.be.equal(true);
-            expect(result).to.be.deep.equal(expectedStatuses);
+            expect(JSON.stringify(result)).to.be.equal(JSON.stringify(expectedStatuses));
         });
 
         it("calls expected webhook with some filters", async () => {
@@ -438,13 +420,6 @@ describe("Orchestration Client", () => {
             nock.cleanAll();
         });
 
-        it("throws if createdTimeFrom is not a valid date", async () => {
-            const client = new DurableOrchestrationClient(defaultClientInputData);
-
-            await expect(client.purgeInstanceHistoryBy(undefined, undefined, undefined))
-                .to.be.rejectedWith("createdTimeFrom must be a valid Date");
-        });
-
         it("calls expected webhook with all filters and returns expected result when instance(s) found", async () => {
             const client = new DurableOrchestrationClient(defaultClientInputData);
 
@@ -977,13 +952,13 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                null,
-                null,
-                null,
+                new Date(),
+                new Date(),
+                undefined,
                 expectedOutput,
                 OrchestrationRuntimeStatus.Completed,
-                null,
-                null,
+                undefined,
+                undefined,
             );
             const scope = nock(Constants.DefaultLocalOrigin)
                 .get(/.*/)
@@ -1011,8 +986,8 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                undefined,
-                undefined,
+                new Date(),
+                new Date(),
                 undefined,
                 undefined,
                 OrchestrationRuntimeStatus.Canceled,
@@ -1044,8 +1019,8 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                undefined,
-                undefined,
+                new Date(),
+                new Date(),
                 undefined,
                 undefined,
                 OrchestrationRuntimeStatus.Terminated,
@@ -1077,8 +1052,8 @@ describe("Orchestration Client", () => {
             const expectedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                undefined,
-                undefined,
+                new Date(),
+                new Date(),
                 undefined,
                 undefined,
                 OrchestrationRuntimeStatus.Failed,
@@ -1112,8 +1087,8 @@ describe("Orchestration Client", () => {
             const runningStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                undefined,
-                undefined,
+                new Date(),
+                new Date(),
                 undefined,
                 undefined,
                 OrchestrationRuntimeStatus.Running,
@@ -1121,8 +1096,8 @@ describe("Orchestration Client", () => {
             const completedStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                undefined,
-                undefined,
+                new Date(),
+                new Date(),
                 undefined,
                 expectedOutput,
                 OrchestrationRuntimeStatus.Completed,
@@ -1168,8 +1143,8 @@ describe("Orchestration Client", () => {
             const runningStatus = new DurableOrchestrationStatus(
                 defaultOrchestrationName,
                 defaultInstanceId,
-                undefined,
-                undefined,
+                new Date(),
+                new Date(),
                 undefined,
                 undefined,
                 OrchestrationRuntimeStatus.Running,
diff --git a/test/unit/timertask-spec.ts b/test/unit/timertask-spec.ts
index eab9b72..253e439 100644
--- a/test/unit/timertask-spec.ts
+++ b/test/unit/timertask-spec.ts
@@ -4,7 +4,7 @@ import { Constants, CreateTimerAction, TimerTask } from "../../src/classes";
 
 describe("TimerTask", () => {
     it ("throws cannot cancel a completed task", async () => {
-        const task = new TimerTask(true, undefined, undefined, undefined, undefined);
+        const task = new TimerTask(true, false, new CreateTimerAction(new Date(), false));
         expect(() => {
             task.cancel();
         }).to.throw("Cannot cancel a completed task.");
diff --git a/test/unit/utils-spec.ts b/test/unit/utils-spec.ts
index 9fdb01a..adb193e 100644
--- a/test/unit/utils-spec.ts
+++ b/test/unit/utils-spec.ts
@@ -9,11 +9,6 @@ describe("Utils", () => {
             return expect(result).to.be.an("array").that.is.empty;
         });
 
-        it("returns empty array when collection is undefined", async () => {
-            const result = Utils.getInstancesOf<TestType>(undefined, new TestType());
-            return expect(result).to.be.an("array").that.is.empty;
-        });
-
         it("returns empty array when typeInstance is undefined", async () => {
             const result = Utils.getInstancesOf([], undefined);
             return expect(result).to.be.an("array").that.is.empty;
@@ -139,7 +134,7 @@ describe("Utils", () => {
             expect(() => {
                 Utils.throwIfEmpty("  ", defaultName);
             }).to.throw(
-                `${defaultName}: Expected non-empty, non-whitespace string but got ${typeof "  "}`,
+                `${defaultName}: Expected non-empty, non-whitespace string but got empty string`,
             );
         });