Repository: pmcelhaney/counterfact
Pull request #357 (2023-01-10 18:41:48)

OpenAPI2: fall back to top-level 'produces'


Patch:
diff --git a/.changeset/brown-lies-sin.md b/.changeset/brown-lies-sin.md
new file mode 100644
index 0000000..3689196
--- /dev/null
+++ b/.changeset/brown-lies-sin.md
@@ -0,0 +1,5 @@
+---
+"counterfact": patch
+---
+
+OpenAPI 2 -- fall back to top-level produces and consumes
diff --git a/src/typescript-generator/generate.js b/src/typescript-generator/generate.js
index 81c7f47..a53cf79 100644
--- a/src/typescript-generator/generate.js
+++ b/src/typescript-generator/generate.js
@@ -7,9 +7,9 @@ export async function generate(
   destination,
   repository = new Repository()
 ) {
-  const specification = new Specification();
+  const specification = new Specification(source);
 
-  const requirement = await specification.requirementAt(`${source}#/paths`);
+  const requirement = await specification.requirementAt("#/paths");
 
   requirement.forEach((pathDefinition, key) => {
     pathDefinition.forEach((operation) => {
diff --git a/src/typescript-generator/operation-type-coder.js b/src/typescript-generator/operation-type-coder.js
index dbbf943..32715c6 100644
--- a/src/typescript-generator/operation-type-coder.js
+++ b/src/typescript-generator/operation-type-coder.js
@@ -33,9 +33,12 @@ export class OperationTypeCoder extends Coder {
         }
 
         if (response.has("schema")) {
-          return this.requirement
-            .get("produces")
-            .data.map(
+          const produces =
+            this.requirement?.get("produces")?.data ??
+            this.requirement.specification.requirementAt("#/produces").data;
+
+          return produces
+            .map(
               (contentType) => `{
             status: ${status},
             contentType?: "${contentType}",
diff --git a/src/typescript-generator/specification.js b/src/typescript-generator/specification.js
index 541ed05..c5704dd 100644
--- a/src/typescript-generator/specification.js
+++ b/src/typescript-generator/specification.js
@@ -7,17 +7,20 @@ import { readFile } from "../util/read-file.js";
 import { Requirement } from "./requirement.js";
 
 export class Specification {
-  constructor() {
+  constructor(rootUrl) {
     this.cache = new Map();
+    this.rootUrl = rootUrl;
   }
 
   async requirementAt(url, fromUrl = "") {
     const [file, path] = url.split("#");
 
     const filePath = nodePath.join(fromUrl.split("#").at(0), file);
-    const data = await this.loadFile(filePath);
 
-    const rootRequirement = new Requirement(data, `${filePath}#`, this);
+    const fileUrl = filePath === "." ? this.rootUrl : filePath;
+    const data = await this.loadFile(fileUrl);
+
+    const rootRequirement = new Requirement(data, `${fileUrl}#`, this);
 
     return rootRequirement.select(path.slice(1));
   }


Test patch:
diff --git a/test/typescript-generator/__snapshots__/end-to-end.test.js.snap b/test/typescript-generator/__snapshots__/end-to-end.test.js.snap
index 52521c6..de8856f 100644
--- a/test/typescript-generator/__snapshots__/end-to-end.test.js.snap
+++ b/test/typescript-generator/__snapshots__/end-to-end.test.js.snap
@@ -4,10 +4,10 @@ exports[`end-to-end test generates the same code for pet store that it did on th
 Map {
   "paths/pet.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1pet/post@[object Object]:false" => "POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet/post@path-types/pet.types.ts:true:false" => "HTTP_POST",
-      "OperationCoder@petstore.yaml#/paths/~1pet/put@[object Object]:false" => "PUT",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet/put@path-types/pet.types.ts:true:false" => "HTTP_PUT",
+      "OperationCoder@./petstore.yaml#/paths/~1pet/post@[object Object]:false" => "POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post@path-types/pet.types.ts:true:false" => "HTTP_POST",
+      "OperationCoder@./petstore.yaml#/paths/~1pet/put@[object Object]:false" => "PUT",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put@path-types/pet.types.ts:true:false" => "HTTP_PUT",
     },
     "exports": Map {
       "POST" => Object {
@@ -16,7 +16,7 @@ Map {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet/post",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet/post",
         "isDefault": false,
         "isType": false,
         "name": "POST",
@@ -29,7 +29,7 @@ Map {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet/put",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet/put",
         "isDefault": false,
         "isType": false,
         "name": "PUT",
@@ -45,11 +45,11 @@ Map {
         "name": "HTTP_POST",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet/post@[object Object]:true" => "HTTP_POST",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet/put@[object Object]:true" => "HTTP_PUT",
-            "ContextCoder@petstore.yaml#/paths/~1pet/post@paths/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post@[object Object]:true" => "HTTP_POST",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put@[object Object]:true" => "HTTP_PUT",
+            "ContextCoder@./petstore.yaml#/paths/~1pet/post@paths/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-            "ContextCoder@petstore.yaml#/paths/~1pet/put@paths/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1pet/put@paths/$.context.ts:false:true" => "Context2",
           },
           "exports": Map {
             "HTTP_POST" => Object {
@@ -82,7 +82,7 @@ Map {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -131,7 +131,7 @@ Map {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet/put",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_PUT",
@@ -176,7 +176,7 @@ class Context {
 ",
                     "code": "new Context()",
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -316,7 +316,7 @@ class Context {
 ",
                     "code": "new Context()",
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -349,11 +349,11 @@ class Context {
         "name": "HTTP_PUT",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet/post@[object Object]:true" => "HTTP_POST",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet/put@[object Object]:true" => "HTTP_PUT",
-            "ContextCoder@petstore.yaml#/paths/~1pet/post@paths/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post@[object Object]:true" => "HTTP_POST",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put@[object Object]:true" => "HTTP_PUT",
+            "ContextCoder@./petstore.yaml#/paths/~1pet/post@paths/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-            "ContextCoder@petstore.yaml#/paths/~1pet/put@paths/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1pet/put@paths/$.context.ts:false:true" => "Context2",
           },
           "exports": Map {
             "HTTP_POST" => Object {
@@ -386,7 +386,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -435,7 +435,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet/put",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_PUT",
@@ -480,7 +480,7 @@ class Context {
 ",
                     "code": "new Context()",
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -620,7 +620,7 @@ class Context {
 ",
                     "code": "new Context()",
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -657,11 +657,11 @@ class Context {
   },
   "path-types/pet.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet/post@[object Object]:true" => "HTTP_POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet/put@[object Object]:true" => "HTTP_PUT",
-      "ContextCoder@petstore.yaml#/paths/~1pet/post@paths/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post@[object Object]:true" => "HTTP_POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put@[object Object]:true" => "HTTP_PUT",
+      "ContextCoder@./petstore.yaml#/paths/~1pet/post@paths/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-      "ContextCoder@petstore.yaml#/paths/~1pet/put@paths/$.context.ts:false:true" => "Context2",
+      "ContextCoder@./petstore.yaml#/paths/~1pet/put@paths/$.context.ts:false:true" => "Context2",
     },
     "exports": Map {
       "HTTP_POST" => Object {
@@ -694,7 +694,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet/post",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet/post",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_POST",
@@ -743,7 +743,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet/put",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet/put",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_PUT",
@@ -788,7 +788,7 @@ class Context {
 ",
               "code": "new Context()",
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -928,7 +928,7 @@ class Context {
 ",
               "code": "new Context()",
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -956,8 +956,8 @@ class Context {
   },
   "paths/pet/findByStatus.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1pet~1findByStatus/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByStatus/get@path-types/pet/findByStatus.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get@path-types/pet/findByStatus.types.ts:true:false" => "HTTP_GET",
     },
     "exports": Map {
       "GET" => Object {
@@ -966,7 +966,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -982,8 +982,8 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByStatus/get@[object Object]:true" => "HTTP_GET",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get@paths/pet/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get@[object Object]:true" => "HTTP_GET",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get@paths/pet/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
           },
           "exports": Map {
@@ -1017,7 +1017,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -1064,7 +1064,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -1197,8 +1197,8 @@ class Context {
   },
   "path-types/pet/findByStatus.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByStatus/get@[object Object]:true" => "HTTP_GET",
-      "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get@paths/pet/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get@[object Object]:true" => "HTTP_GET",
+      "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get@paths/pet/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
     },
     "exports": Map {
@@ -1232,7 +1232,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -1279,7 +1279,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -1403,8 +1403,8 @@ class Context {
   },
   "paths/pet/findByTags.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1pet~1findByTags/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByTags/get@path-types/pet/findByTags.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1pet~1findByTags/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByTags/get@path-types/pet/findByTags.types.ts:true:false" => "HTTP_GET",
     },
     "exports": Map {
       "GET" => Object {
@@ -1413,7 +1413,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet~1findByTags/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet~1findByTags/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -1429,8 +1429,8 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByTags/get@[object Object]:true" => "HTTP_GET",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1findByTags/get@paths/pet/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByTags/get@[object Object]:true" => "HTTP_GET",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1findByTags/get@paths/pet/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
           },
           "exports": Map {
@@ -1464,7 +1464,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByTags/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByTags/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -1511,7 +1511,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -1644,8 +1644,8 @@ class Context {
   },
   "path-types/pet/findByTags.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByTags/get@[object Object]:true" => "HTTP_GET",
-      "ContextCoder@petstore.yaml#/paths/~1pet~1findByTags/get@paths/pet/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByTags/get@[object Object]:true" => "HTTP_GET",
+      "ContextCoder@./petstore.yaml#/paths/~1pet~1findByTags/get@paths/pet/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
     },
     "exports": Map {
@@ -1679,7 +1679,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1findByTags/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1findByTags/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -1726,7 +1726,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -1850,12 +1850,12 @@ class Context {
   },
   "paths/pet/{petId}.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get@path-types/pet/{petId}.types.ts:true:false" => "HTTP_GET",
-      "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:false" => "POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post@path-types/pet/{petId}.types.ts:true:false" => "HTTP_POST",
-      "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:false" => "DELETE",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@path-types/pet/{petId}.types.ts:true:false" => "HTTP_DELETE",
+      "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@path-types/pet/{petId}.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:false" => "POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@path-types/pet/{petId}.types.ts:true:false" => "HTTP_POST",
+      "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:false" => "DELETE",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@path-types/pet/{petId}.types.ts:true:false" => "HTTP_DELETE",
     },
     "exports": Map {
       "GET" => Object {
@@ -1864,7 +1864,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -1875,7 +1875,7 @@ class Context {
         "beforeExport": "",
         "code": "() => { /* no response content specified in the OpenAPI document */ }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}/post",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}/post",
         "isDefault": false,
         "isType": false,
         "name": "POST",
@@ -1886,7 +1886,7 @@ class Context {
         "beforeExport": "",
         "code": "() => { /* no response content specified in the OpenAPI document */ }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}/delete",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete",
         "isDefault": false,
         "isType": false,
         "name": "DELETE",
@@ -1902,13 +1902,13 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -1947,7 +1947,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -1965,7 +1965,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -1983,7 +1983,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -2030,7 +2030,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2172,7 +2172,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2218,7 +2218,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2251,13 +2251,13 @@ class Context {
         "name": "HTTP_POST",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -2296,7 +2296,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -2314,7 +2314,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -2332,7 +2332,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -2379,7 +2379,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2521,7 +2521,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2567,7 +2567,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2600,13 +2600,13 @@ class Context {
         "name": "HTTP_DELETE",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -2645,7 +2645,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -2663,7 +2663,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -2681,7 +2681,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -2728,7 +2728,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2870,7 +2870,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2916,7 +2916,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -2953,13 +2953,13 @@ class Context {
   },
   "path-types/pet/{petId}.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
-      "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@[object Object]:true" => "HTTP_GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@[object Object]:true" => "HTTP_POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@[object Object]:true" => "HTTP_DELETE",
+      "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/get@paths/pet/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/Pet.ts:true:false" => "Pet",
-      "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
-      "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
+      "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/post@paths/pet/$.context.ts:false:true" => "Context2",
+      "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete@paths/pet/$.context.ts:false:true" => "Context3",
     },
     "exports": Map {
       "HTTP_GET" => Object {
@@ -2998,7 +2998,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -3016,7 +3016,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/post",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/post",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_POST",
@@ -3034,7 +3034,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}/delete",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}/delete",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_DELETE",
@@ -3081,7 +3081,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -3223,7 +3223,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -3269,7 +3269,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -3297,8 +3297,8 @@ class Context {
   },
   "paths/pet/{petId}/uploadImage.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@[object Object]:false" => "POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@path-types/pet/{petId}/uploadImage.types.ts:true:false" => "HTTP_POST",
+      "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@[object Object]:false" => "POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@path-types/pet/{petId}/uploadImage.types.ts:true:false" => "HTTP_POST",
     },
     "exports": Map {
       "POST" => Object {
@@ -3307,7 +3307,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
         "isDefault": false,
         "isType": false,
         "name": "POST",
@@ -3323,8 +3323,8 @@ class Context {
         "name": "HTTP_POST",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@[object Object]:true" => "HTTP_POST",
-            "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@paths/pet/{petId}/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@[object Object]:true" => "HTTP_POST",
+            "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@paths/pet/{petId}/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/ApiResponse.ts:true:false" => "ApiResponse",
           },
           "exports": Map {
@@ -3345,7 +3345,7 @@ class Context {
               body?: ApiResponse
             } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -3392,7 +3392,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -3460,8 +3460,8 @@ class Context {
   },
   "path-types/pet/{petId}/uploadImage.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@[object Object]:true" => "HTTP_POST",
-      "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@paths/pet/{petId}/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@[object Object]:true" => "HTTP_POST",
+      "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post@paths/pet/{petId}/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/ApiResponse.ts:true:false" => "ApiResponse",
     },
     "exports": Map {
@@ -3482,7 +3482,7 @@ class Context {
               body?: ApiResponse
             } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_POST",
@@ -3529,7 +3529,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -3588,8 +3588,8 @@ class Context {
   },
   "paths/store/inventory.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1store~1inventory/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1inventory/get@path-types/store/inventory.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1store~1inventory/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1inventory/get@path-types/store/inventory.types.ts:true:false" => "HTTP_GET",
     },
     "exports": Map {
       "GET" => Object {
@@ -3598,7 +3598,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1store~1inventory/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1store~1inventory/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -3614,8 +3614,8 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1store~1inventory/get@[object Object]:true" => "HTTP_GET",
-            "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get@paths/store/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1store~1inventory/get@[object Object]:true" => "HTTP_GET",
+            "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get@paths/store/$.context.ts:false:true" => "Context",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -3635,7 +3635,7 @@ class Context {
               body?: {[key: string]: number}
             } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1inventory/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1inventory/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -3682,7 +3682,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -3719,8 +3719,8 @@ class Context {
   },
   "path-types/store/inventory.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1inventory/get@[object Object]:true" => "HTTP_GET",
-      "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get@paths/store/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1inventory/get@[object Object]:true" => "HTTP_GET",
+      "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get@paths/store/$.context.ts:false:true" => "Context",
     },
     "exports": Map {
       "HTTP_GET" => Object {
@@ -3740,7 +3740,7 @@ class Context {
               body?: {[key: string]: number}
             } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1inventory/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1inventory/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -3787,7 +3787,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -3815,8 +3815,8 @@ class Context {
   },
   "paths/store/order.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1store~1order/post@[object Object]:false" => "POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1order/post@path-types/store/order.types.ts:true:false" => "HTTP_POST",
+      "OperationCoder@./petstore.yaml#/paths/~1store~1order/post@[object Object]:false" => "POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order/post@path-types/store/order.types.ts:true:false" => "HTTP_POST",
     },
     "exports": Map {
       "POST" => Object {
@@ -3825,7 +3825,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1store~1order/post",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1store~1order/post",
         "isDefault": false,
         "isType": false,
         "name": "POST",
@@ -3841,8 +3841,8 @@ class Context {
         "name": "HTTP_POST",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1store~1order/post@[object Object]:true" => "HTTP_POST",
-            "ContextCoder@petstore.yaml#/paths/~1store~1order/post@paths/store/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order/post@[object Object]:true" => "HTTP_POST",
+            "ContextCoder@./petstore.yaml#/paths/~1store~1order/post@paths/store/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Order.ts:true:false" => "Order",
           },
           "exports": Map {
@@ -3869,7 +3869,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -3916,7 +3916,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -3984,8 +3984,8 @@ class Context {
   },
   "path-types/store/order.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1order/post@[object Object]:true" => "HTTP_POST",
-      "ContextCoder@petstore.yaml#/paths/~1store~1order/post@paths/store/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order/post@[object Object]:true" => "HTTP_POST",
+      "ContextCoder@./petstore.yaml#/paths/~1store~1order/post@paths/store/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/Order.ts:true:false" => "Order",
     },
     "exports": Map {
@@ -4012,7 +4012,7 @@ class Context {
           status: 405 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order/post",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order/post",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_POST",
@@ -4059,7 +4059,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -4118,10 +4118,10 @@ class Context {
   },
   "paths/store/order/{orderId}.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@path-types/store/order/{orderId}.types.ts:true:false" => "HTTP_GET",
-      "OperationCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:false" => "DELETE",
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@path-types/store/order/{orderId}.types.ts:true:false" => "HTTP_DELETE",
+      "OperationCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@path-types/store/order/{orderId}.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:false" => "DELETE",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@path-types/store/order/{orderId}.types.ts:true:false" => "HTTP_DELETE",
     },
     "exports": Map {
       "GET" => Object {
@@ -4130,7 +4130,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -4141,7 +4141,7 @@ class Context {
         "beforeExport": "",
         "code": "() => { /* no response content specified in the OpenAPI document */ }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
         "isDefault": false,
         "isType": false,
         "name": "DELETE",
@@ -4157,11 +4157,11 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@paths/store/order/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@paths/store/order/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Order.ts:true:false" => "Order",
-            "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@paths/store/order/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@paths/store/order/$.context.ts:false:true" => "Context2",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -4200,7 +4200,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -4224,7 +4224,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -4271,7 +4271,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -4348,7 +4348,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -4381,11 +4381,11 @@ class Context {
         "name": "HTTP_DELETE",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@paths/store/order/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@paths/store/order/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/Order.ts:true:false" => "Order",
-            "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@paths/store/order/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@paths/store/order/$.context.ts:false:true" => "Context2",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -4424,7 +4424,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -4448,7 +4448,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -4495,7 +4495,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -4572,7 +4572,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -4609,11 +4609,11 @@ class Context {
   },
   "path-types/store/order/{orderId}.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:true" => "HTTP_GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:true" => "HTTP_DELETE",
-      "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get@paths/store/order/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@[object Object]:true" => "HTTP_GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@[object Object]:true" => "HTTP_DELETE",
+      "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get@paths/store/order/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/Order.ts:true:false" => "Order",
-      "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete@paths/store/order/$.context.ts:false:true" => "Context2",
+      "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete@paths/store/order/$.context.ts:false:true" => "Context2",
     },
     "exports": Map {
       "HTTP_GET" => Object {
@@ -4652,7 +4652,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -4676,7 +4676,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/delete",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_DELETE",
@@ -4723,7 +4723,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -4800,7 +4800,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -4828,8 +4828,8 @@ class Context {
   },
   "paths/user.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1user/post@[object Object]:false" => "POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user/post@path-types/user.types.ts:true:false" => "HTTP_POST",
+      "OperationCoder@./petstore.yaml#/paths/~1user/post@[object Object]:false" => "POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user/post@path-types/user.types.ts:true:false" => "HTTP_POST",
     },
     "exports": Map {
       "POST" => Object {
@@ -4838,7 +4838,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user/post",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user/post",
         "isDefault": false,
         "isType": false,
         "name": "POST",
@@ -4854,8 +4854,8 @@ class Context {
         "name": "HTTP_POST",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user/post@[object Object]:true" => "HTTP_POST",
-            "ContextCoder@petstore.yaml#/paths/~1user/post@paths/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user/post@[object Object]:true" => "HTTP_POST",
+            "ContextCoder@./petstore.yaml#/paths/~1user/post@paths/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
           },
           "exports": Map {
@@ -4883,7 +4883,7 @@ class Context {
               body?: User
             } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -4928,7 +4928,7 @@ class Context {
 ",
                     "code": "new Context()",
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -4996,8 +4996,8 @@ class Context {
   },
   "path-types/user.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1user/post@[object Object]:true" => "HTTP_POST",
-      "ContextCoder@petstore.yaml#/paths/~1user/post@paths/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user/post@[object Object]:true" => "HTTP_POST",
+      "ContextCoder@./petstore.yaml#/paths/~1user/post@paths/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
     },
     "exports": Map {
@@ -5025,7 +5025,7 @@ class Context {
               body?: User
             } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user/post",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user/post",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_POST",
@@ -5070,7 +5070,7 @@ class Context {
 ",
               "code": "new Context()",
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -5129,8 +5129,8 @@ class Context {
   },
   "paths/user/createWithList.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1user~1createWithList/post@[object Object]:false" => "POST",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1createWithList/post@path-types/user/createWithList.types.ts:true:false" => "HTTP_POST",
+      "OperationCoder@./petstore.yaml#/paths/~1user~1createWithList/post@[object Object]:false" => "POST",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1createWithList/post@path-types/user/createWithList.types.ts:true:false" => "HTTP_POST",
     },
     "exports": Map {
       "POST" => Object {
@@ -5139,7 +5139,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
         "isDefault": false,
         "isType": false,
         "name": "POST",
@@ -5155,8 +5155,8 @@ class Context {
         "name": "HTTP_POST",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1createWithList/post@[object Object]:true" => "HTTP_POST",
-            "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post@paths/user/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1createWithList/post@[object Object]:true" => "HTTP_POST",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post@paths/user/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
           },
           "exports": Map {
@@ -5190,7 +5190,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_POST",
@@ -5237,7 +5237,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -5305,8 +5305,8 @@ class Context {
   },
   "path-types/user/createWithList.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1createWithList/post@[object Object]:true" => "HTTP_POST",
-      "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post@paths/user/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1createWithList/post@[object Object]:true" => "HTTP_POST",
+      "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post@paths/user/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
     },
     "exports": Map {
@@ -5340,7 +5340,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_POST",
@@ -5387,7 +5387,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -5446,8 +5446,8 @@ class Context {
   },
   "paths/user/login.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1user~1login/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1login/get@path-types/user/login.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1user~1login/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1login/get@path-types/user/login.types.ts:true:false" => "HTTP_GET",
     },
     "exports": Map {
       "GET" => Object {
@@ -5456,7 +5456,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user~1login/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user~1login/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -5472,8 +5472,8 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1login/get@[object Object]:true" => "HTTP_GET",
-            "ContextCoder@petstore.yaml#/paths/~1user~1login/get@paths/user/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1login/get@[object Object]:true" => "HTTP_GET",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1login/get@paths/user/$.context.ts:false:true" => "Context",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -5509,7 +5509,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1login/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1login/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -5556,7 +5556,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -5593,8 +5593,8 @@ class Context {
   },
   "path-types/user/login.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1login/get@[object Object]:true" => "HTTP_GET",
-      "ContextCoder@petstore.yaml#/paths/~1user~1login/get@paths/user/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1login/get@[object Object]:true" => "HTTP_GET",
+      "ContextCoder@./petstore.yaml#/paths/~1user~1login/get@paths/user/$.context.ts:false:true" => "Context",
     },
     "exports": Map {
       "HTTP_GET" => Object {
@@ -5630,7 +5630,7 @@ class Context {
           status: 400 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1login/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1login/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -5677,7 +5677,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -5705,15 +5705,15 @@ class Context {
   },
   "paths/user/logout.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1user~1logout/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1logout/get@path-types/user/logout.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1user~1logout/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1logout/get@path-types/user/logout.types.ts:true:false" => "HTTP_GET",
     },
     "exports": Map {
       "GET" => Object {
         "beforeExport": "",
         "code": "() => { /* no response content specified in the OpenAPI document */ }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user~1logout/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user~1logout/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -5729,8 +5729,8 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1logout/get@[object Object]:true" => "HTTP_GET",
-            "ContextCoder@petstore.yaml#/paths/~1user~1logout/get@paths/user/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1logout/get@[object Object]:true" => "HTTP_GET",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1logout/get@paths/user/$.context.ts:false:true" => "Context",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -5744,7 +5744,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1logout/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1logout/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -5791,7 +5791,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -5828,8 +5828,8 @@ class Context {
   },
   "path-types/user/logout.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1logout/get@[object Object]:true" => "HTTP_GET",
-      "ContextCoder@petstore.yaml#/paths/~1user~1logout/get@paths/user/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1logout/get@[object Object]:true" => "HTTP_GET",
+      "ContextCoder@./petstore.yaml#/paths/~1user~1logout/get@paths/user/$.context.ts:false:true" => "Context",
     },
     "exports": Map {
       "HTTP_GET" => Object {
@@ -5843,7 +5843,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1logout/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1logout/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -5890,7 +5890,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -5918,12 +5918,12 @@ class Context {
   },
   "paths/user/{username}.ts" => Script {
     "cache": Map {
-      "OperationCoder@petstore.yaml#/paths/~1user~1{username}/get@[object Object]:false" => "GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get@path-types/user/{username}.types.ts:true:false" => "HTTP_GET",
-      "OperationCoder@petstore.yaml#/paths/~1user~1{username}/put@[object Object]:false" => "PUT",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put@path-types/user/{username}.types.ts:true:false" => "HTTP_PUT",
-      "OperationCoder@petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:false" => "DELETE",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete@path-types/user/{username}.types.ts:true:false" => "HTTP_DELETE",
+      "OperationCoder@./petstore.yaml#/paths/~1user~1{username}/get@[object Object]:false" => "GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get@path-types/user/{username}.types.ts:true:false" => "HTTP_GET",
+      "OperationCoder@./petstore.yaml#/paths/~1user~1{username}/put@[object Object]:false" => "PUT",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put@path-types/user/{username}.types.ts:true:false" => "HTTP_PUT",
+      "OperationCoder@./petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:false" => "DELETE",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete@path-types/user/{username}.types.ts:true:false" => "HTTP_DELETE",
     },
     "exports": Map {
       "GET" => Object {
@@ -5932,7 +5932,7 @@ class Context {
       return $.response[200].random();
     }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user~1{username}/get",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user~1{username}/get",
         "isDefault": false,
         "isType": false,
         "name": "GET",
@@ -5943,7 +5943,7 @@ class Context {
         "beforeExport": "",
         "code": "() => { /* no response content specified in the OpenAPI document */ }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user~1{username}/put",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user~1{username}/put",
         "isDefault": false,
         "isType": false,
         "name": "PUT",
@@ -5954,7 +5954,7 @@ class Context {
         "beforeExport": "",
         "code": "() => { /* no response content specified in the OpenAPI document */ }",
         "done": true,
-        "id": "OperationCoder@petstore.yaml#/paths/~1user~1{username}/delete",
+        "id": "OperationCoder@./petstore.yaml#/paths/~1user~1{username}/delete",
         "isDefault": false,
         "isType": false,
         "name": "DELETE",
@@ -5970,13 +5970,13 @@ class Context {
         "name": "HTTP_GET",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -6015,7 +6015,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -6033,7 +6033,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_PUT",
@@ -6057,7 +6057,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -6104,7 +6104,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6181,7 +6181,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6227,7 +6227,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6260,13 +6260,13 @@ class Context {
         "name": "HTTP_PUT",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -6305,7 +6305,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -6323,7 +6323,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_PUT",
@@ -6347,7 +6347,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -6394,7 +6394,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6471,7 +6471,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6517,7 +6517,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6550,13 +6550,13 @@ class Context {
         "name": "HTTP_DELETE",
         "script": Script {
           "cache": Map {
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
-            "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
+            "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
             "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
-            "ContextCoder@petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
+            "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
           },
           "exports": Map {
             "HTTP_GET" => Object {
@@ -6595,7 +6595,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_GET",
@@ -6613,7 +6613,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_PUT",
@@ -6637,7 +6637,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
               "done": true,
-              "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete",
+              "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete",
               "isDefault": false,
               "isType": true,
               "name": "HTTP_DELETE",
@@ -6684,7 +6684,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6761,7 +6761,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6807,7 +6807,7 @@ class Context {
                       "raw": "export { default } from \\"../$.context.js\\"",
                     },
                     "done": true,
-                    "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+                    "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
                     "isDefault": true,
                     "isType": false,
                     "name": "Context",
@@ -6844,13 +6844,13 @@ class Context {
   },
   "path-types/user/{username}.types.ts" => Script {
     "cache": Map {
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
-      "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
-      "ContextCoder@petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get@[object Object]:true" => "HTTP_GET",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put@[object Object]:true" => "HTTP_PUT",
+      "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete@[object Object]:true" => "HTTP_DELETE",
+      "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/get@paths/user/$.context.ts:false:true" => "Context",
       "SchemaTypeCoder@undefined@components/User.ts:true:false" => "User",
-      "ContextCoder@petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
-      "ContextCoder@petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
+      "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/put@paths/user/$.context.ts:false:true" => "Context2",
+      "ContextCoder@./petstore.yaml#/paths/~1user~1{username}/delete@paths/user/$.context.ts:false:true" => "Context3",
     },
     "exports": Map {
       "HTTP_GET" => Object {
@@ -6889,7 +6889,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/get",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/get",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_GET",
@@ -6907,7 +6907,7 @@ class Context {
           status: number | undefined 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/put",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/put",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_PUT",
@@ -6931,7 +6931,7 @@ class Context {
           status: 404 
         } | { status: 415, contentType: \\"text/plain\\", body: string } | void",
         "done": true,
-        "id": "OperationTypeCoder@petstore.yaml#/paths/~1user~1{username}/delete",
+        "id": "OperationTypeCoder@./petstore.yaml#/paths/~1user~1{username}/delete",
         "isDefault": false,
         "isType": true,
         "name": "HTTP_DELETE",
@@ -6978,7 +6978,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -7055,7 +7055,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -7101,7 +7101,7 @@ class Context {
                 "raw": "export { default } from \\"../$.context.js\\"",
               },
               "done": true,
-              "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+              "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
               "isDefault": true,
               "isType": false,
               "name": "Context",
@@ -7149,7 +7149,7 @@ class Context {
 ",
         "code": "new Context()",
         "done": true,
-        "id": "ContextCoder@petstore.yaml#/paths/~1pet/post",
+        "id": "ContextCoder@./petstore.yaml#/paths/~1pet/post",
         "isDefault": true,
         "isType": false,
         "name": "Context",
@@ -7281,7 +7281,7 @@ class Context {
           "raw": "export { default } from \\"../$.context.js\\"",
         },
         "done": true,
-        "id": "ContextCoder@petstore.yaml#/paths/~1pet~1findByStatus/get",
+        "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1findByStatus/get",
         "isDefault": true,
         "isType": false,
         "name": "Context",
@@ -7322,7 +7322,7 @@ class Context {
           "raw": "export { default } from \\"../$.context.js\\"",
         },
         "done": true,
-        "id": "ContextCoder@petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
+        "id": "ContextCoder@./petstore.yaml#/paths/~1pet~1{petId}~1uploadImage/post",
         "isDefault": true,
         "isType": false,
         "name": "Context",
@@ -7389,7 +7389,7 @@ class Context {
           "raw": "export { default } from \\"../$.context.js\\"",
         },
         "done": true,
-        "id": "ContextCoder@petstore.yaml#/paths/~1store~1inventory/get",
+        "id": "ContextCoder@./petstore.yaml#/paths/~1store~1inventory/get",
         "isDefault": true,
         "isType": false,
         "name": "Context",
@@ -7456,7 +7456,7 @@ class Context {
           "raw": "export { default } from \\"../$.context.js\\"",
         },
         "done": true,
-        "id": "ContextCoder@petstore.yaml#/paths/~1store~1order~1{orderId}/get",
+        "id": "ContextCoder@./petstore.yaml#/paths/~1store~1order~1{orderId}/get",
         "isDefault": true,
         "isType": false,
         "name": "Context",
@@ -7523,7 +7523,7 @@ class Context {
           "raw": "export { default } from \\"../$.context.js\\"",
         },
         "done": true,
-        "id": "ContextCoder@petstore.yaml#/paths/~1user~1createWithList/post",
+        "id": "ContextCoder@./petstore.yaml#/paths/~1user~1createWithList/post",
         "isDefault": true,
         "isType": false,
         "name": "Context",
diff --git a/test/typescript-generator/__snapshots__/operation-type-coder.test.js.snap b/test/typescript-generator/__snapshots__/operation-type-coder.test.js.snap
index 2e6c883..793c9c4 100644
--- a/test/typescript-generator/__snapshots__/operation-type-coder.test.js.snap
+++ b/test/typescript-generator/__snapshots__/operation-type-coder.test.js.snap
@@ -1,5 +1,41 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
+exports[`an OperationTypeCoder falls back to root level produces (OpenAPI 2) 1`] = `
+"type TestType = ({
+  query,
+  path,
+  header,
+  body,
+  context,
+  proxy,
+}: {
+  query: never;
+  path: never;
+  header: never;
+  body: undefined;
+  context: typeof default;
+  response: ResponseBuilderFactory<{
+    [statusCode in HttpStatusCode]: {
+      headers: {};
+      content: {
+        \\"text/plain\\": {
+          schema: Type;
+        };
+      };
+    };
+  }>;
+  proxy: (url: string) => { proxyUrl: string };
+}) =>
+  | {
+      status: number | undefined;
+      contentType?: \\"text/plain\\";
+      body?: Type;
+    }
+  | { status: 415; contentType: \\"text/plain\\"; body: string }
+  | void;
+"
+`;
+
 exports[`an OperationTypeCoder generates a complex post operation (OpenAPI 2) 1`] = `
 "type TestType = ({
   query,
diff --git a/test/typescript-generator/coder.test.js b/test/typescript-generator/coder.test.js
index 4c3cb31..01ab1f7 100644
--- a/test/typescript-generator/coder.test.js
+++ b/test/typescript-generator/coder.test.js
@@ -81,9 +81,9 @@ describe("a Coder", () => {
   });
 
   it("when asked to delegate a requirement that is a $ref, looks up the $ref and returns another coder of the same type with an inline requirement", async () => {
-    const specification = new Specification();
+    const specification = new Specification("openapi.yaml");
 
-    specification.cache.set(".", {
+    specification.cache.set("openapi.yaml", {
       components: { schemas: { Person: { type: "string" } } },
     });
 
diff --git a/test/typescript-generator/operation-type-coder.test.js b/test/typescript-generator/operation-type-coder.test.js
index 004e38a..121b024 100644
--- a/test/typescript-generator/operation-type-coder.test.js
+++ b/test/typescript-generator/operation-type-coder.test.js
@@ -206,4 +206,25 @@ describe("an OperationTypeCoder", () => {
       format(`type TestType =${coder.write(dummyScript)}`)
     ).toMatchSnapshot();
   });
+
+  it("falls back to root level produces (OpenAPI 2)", () => {
+    const requirement = new Requirement(
+      {
+        produces: ["text/plain"],
+
+        responses: {
+          default: {
+            schema: { $ref: "#/components/schemas/Example" },
+          },
+        },
+      },
+      "#/paths/hello/get"
+    );
+
+    const coder = new OperationTypeCoder(requirement);
+
+    expect(
+      format(`type TestType =${coder.write(dummyScript)}`)
+    ).toMatchSnapshot();
+  });
 });
diff --git a/test/typescript-generator/specification.test.js b/test/typescript-generator/specification.test.js
index d16af23..00263c3 100644
--- a/test/typescript-generator/specification.test.js
+++ b/test/typescript-generator/specification.test.js
@@ -101,4 +101,46 @@ describe("a Specification", () => {
 
     expect(requirement).toStrictEqual(person);
   });
+
+  it("looks for requirements in the root document if no path is provided", async () => {
+    const specification = new Specification("openapi.yaml");
+
+    specification.cache.set(
+      "openapi.yaml",
+      Promise.resolve({
+        components: {
+          schemas: {
+            Person: {
+              type: "object",
+
+              properties: {
+                name: { type: "string" },
+                phone: { type: "string" },
+              },
+            },
+          },
+        },
+      })
+    );
+
+    const person = new Requirement(
+      {
+        type: "object",
+
+        properties: {
+          name: { type: "string" },
+          phone: { type: "string" },
+        },
+      },
+
+      "openapi.yaml#/components/schemas/Person",
+      specification
+    );
+
+    const requirement = await specification.requirementAt(
+      "#/components/schemas/Person"
+    );
+
+    expect(requirement).toStrictEqual(person);
+  });
 });