@scalar/oas-utils 0.2.140 → 0.2.141
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/entities/cookie/cookie.js +14 -13
- package/dist/entities/cookie/cookie.js.map +7 -0
- package/dist/entities/cookie/index.d.ts +1 -1
- package/dist/entities/cookie/index.d.ts.map +1 -1
- package/dist/entities/cookie/index.js +5 -1
- package/dist/entities/cookie/index.js.map +7 -0
- package/dist/entities/environment/environment.js +10 -9
- package/dist/entities/environment/environment.js.map +7 -0
- package/dist/entities/environment/index.d.ts +1 -1
- package/dist/entities/environment/index.d.ts.map +1 -1
- package/dist/entities/environment/index.js +5 -1
- package/dist/entities/environment/index.js.map +7 -0
- package/dist/entities/hotkeys/hotkeys.js +109 -116
- package/dist/entities/hotkeys/hotkeys.js.map +7 -0
- package/dist/entities/hotkeys/index.d.ts +1 -1
- package/dist/entities/hotkeys/index.d.ts.map +1 -1
- package/dist/entities/hotkeys/index.js +6 -1
- package/dist/entities/hotkeys/index.js.map +7 -0
- package/dist/entities/shared/index.d.ts +1 -1
- package/dist/entities/shared/index.d.ts.map +1 -1
- package/dist/entities/shared/index.js +7 -1
- package/dist/entities/shared/index.js.map +7 -0
- package/dist/entities/shared/utility.js +9 -12
- package/dist/entities/shared/utility.js.map +7 -0
- package/dist/entities/spec/collection.d.ts.map +1 -1
- package/dist/entities/spec/collection.js +91 -94
- package/dist/entities/spec/collection.js.map +7 -0
- package/dist/entities/spec/index.d.ts +8 -8
- package/dist/entities/spec/index.d.ts.map +1 -1
- package/dist/entities/spec/index.js +59 -9
- package/dist/entities/spec/index.js.map +7 -0
- package/dist/entities/spec/operation.d.ts +1 -1
- package/dist/entities/spec/operation.d.ts.map +1 -1
- package/dist/entities/spec/operation.js +5 -8
- package/dist/entities/spec/operation.js.map +7 -0
- package/dist/entities/spec/operation.test.js +43 -0
- package/dist/entities/spec/operation.test.js.map +7 -0
- package/dist/entities/spec/parameters.d.ts +1 -1
- package/dist/entities/spec/parameters.d.ts.map +1 -1
- package/dist/entities/spec/parameters.js +40 -38
- package/dist/entities/spec/parameters.js.map +7 -0
- package/dist/entities/spec/parameters.test.js +71 -0
- package/dist/entities/spec/parameters.test.js.map +7 -0
- package/dist/entities/spec/request-example.test.js +637 -0
- package/dist/entities/spec/request-example.test.js.map +7 -0
- package/dist/entities/spec/request-examples.d.ts +3 -3
- package/dist/entities/spec/request-examples.d.ts.map +1 -1
- package/dist/entities/spec/request-examples.js +323 -338
- package/dist/entities/spec/request-examples.js.map +7 -0
- package/dist/entities/spec/requests.d.ts +6 -8
- package/dist/entities/spec/requests.d.ts.map +1 -1
- package/dist/entities/spec/requests.js +80 -101
- package/dist/entities/spec/requests.js.map +7 -0
- package/dist/entities/spec/server.js +47 -63
- package/dist/entities/spec/server.js.map +7 -0
- package/dist/entities/spec/server.test.js +120 -0
- package/dist/entities/spec/server.test.js.map +7 -0
- package/dist/entities/spec/spec-objects.d.ts.map +1 -1
- package/dist/entities/spec/spec-objects.js +77 -121
- package/dist/entities/spec/spec-objects.js.map +7 -0
- package/dist/entities/spec/spec-objects.test.js +205 -0
- package/dist/entities/spec/spec-objects.test.js.map +7 -0
- package/dist/entities/spec/x-scalar-environments.js +21 -18
- package/dist/entities/spec/x-scalar-environments.js.map +7 -0
- package/dist/entities/spec/x-scalar-environments.test.js +11 -0
- package/dist/entities/spec/x-scalar-environments.test.js.map +7 -0
- package/dist/entities/spec/x-scalar-secrets.js +8 -6
- package/dist/entities/spec/x-scalar-secrets.js.map +7 -0
- package/dist/entities/spec/x-scalar-secrets.test.js +11 -0
- package/dist/entities/spec/x-scalar-secrets.test.js.map +7 -0
- package/dist/entities/workspace/index.d.ts +1 -1
- package/dist/entities/workspace/index.d.ts.map +1 -1
- package/dist/entities/workspace/index.js +7 -1
- package/dist/entities/workspace/index.js.map +7 -0
- package/dist/entities/workspace/workspace.js +46 -50
- package/dist/entities/workspace/workspace.js.map +7 -0
- package/dist/helpers/create-hash.js +15 -18
- package/dist/helpers/create-hash.js.map +7 -0
- package/dist/helpers/ensure-protocol.js +9 -10
- package/dist/helpers/ensure-protocol.js.map +7 -0
- package/dist/helpers/ensure-protocol.test.js +70 -0
- package/dist/helpers/ensure-protocol.test.js.map +7 -0
- package/dist/helpers/fetch-document.js +24 -32
- package/dist/helpers/fetch-document.js.map +7 -0
- package/dist/helpers/fetch-document.test.js +63 -0
- package/dist/helpers/fetch-document.test.js.map +7 -0
- package/dist/helpers/fetch-with-proxy-fallback.js +20 -28
- package/dist/helpers/fetch-with-proxy-fallback.js.map +7 -0
- package/dist/helpers/find-variables.d.ts +1 -1
- package/dist/helpers/find-variables.d.ts.map +1 -1
- package/dist/helpers/find-variables.js +6 -8
- package/dist/helpers/find-variables.js.map +7 -0
- package/dist/helpers/find-variables.test.js +20 -0
- package/dist/helpers/find-variables.test.js.map +7 -0
- package/dist/helpers/http-methods.d.ts +1 -1
- package/dist/helpers/http-methods.d.ts.map +1 -1
- package/dist/helpers/http-methods.js +60 -66
- package/dist/helpers/http-methods.js.map +7 -0
- package/dist/helpers/http-status-codes.js +319 -317
- package/dist/helpers/http-status-codes.js.map +7 -0
- package/dist/helpers/index.d.ts +27 -27
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +73 -27
- package/dist/helpers/index.js.map +7 -0
- package/dist/helpers/is-defined.js +5 -14
- package/dist/helpers/is-defined.js.map +7 -0
- package/dist/helpers/is-defined.test.js +37 -0
- package/dist/helpers/is-defined.test.js.map +7 -0
- package/dist/helpers/is-local-url.js +11 -16
- package/dist/helpers/is-local-url.js.map +7 -0
- package/dist/helpers/is-local-url.test.js +40 -0
- package/dist/helpers/is-local-url.test.js.map +7 -0
- package/dist/helpers/is-valid-url.js +9 -18
- package/dist/helpers/is-valid-url.js.map +7 -0
- package/dist/helpers/is-valid-url.test.js +17 -0
- package/dist/helpers/is-valid-url.test.js.map +7 -0
- package/dist/helpers/iterate-title.js +11 -15
- package/dist/helpers/iterate-title.js.map +7 -0
- package/dist/helpers/json2xml.js +40 -47
- package/dist/helpers/json2xml.js.map +7 -0
- package/dist/helpers/json2xml.test.js +19 -0
- package/dist/helpers/json2xml.test.js.map +7 -0
- package/dist/helpers/local-storage.js +13 -15
- package/dist/helpers/local-storage.js.map +7 -0
- package/dist/helpers/make-url-absolute.js +11 -17
- package/dist/helpers/make-url-absolute.js.map +7 -0
- package/dist/helpers/make-url-absolute.test.js +61 -0
- package/dist/helpers/make-url-absolute.test.js.map +7 -0
- package/dist/helpers/merge-urls.js +50 -75
- package/dist/helpers/merge-urls.js.map +7 -0
- package/dist/helpers/merge-urls.test.js +339 -0
- package/dist/helpers/merge-urls.test.js.map +7 -0
- package/dist/helpers/normalize-mime-type-object.js +21 -31
- package/dist/helpers/normalize-mime-type-object.js.map +7 -0
- package/dist/helpers/normalize-mime-type-object.test.js +53 -0
- package/dist/helpers/normalize-mime-type-object.test.js.map +7 -0
- package/dist/helpers/normalize-mime-type.js +8 -18
- package/dist/helpers/normalize-mime-type.js.map +7 -0
- package/dist/helpers/normalize-mime-type.test.js +33 -0
- package/dist/helpers/normalize-mime-type.test.js.map +7 -0
- package/dist/helpers/object.js +12 -18
- package/dist/helpers/object.js.map +7 -0
- package/dist/helpers/omit-undefined-values.js +17 -19
- package/dist/helpers/omit-undefined-values.js.map +7 -0
- package/dist/helpers/omit-undefined-values.test.js +89 -0
- package/dist/helpers/omit-undefined-values.test.js.map +7 -0
- package/dist/helpers/parse.js +71 -83
- package/dist/helpers/parse.js.map +7 -0
- package/dist/helpers/parse.test.js +45 -0
- package/dist/helpers/parse.test.js.map +7 -0
- package/dist/helpers/pretty-print-json.js +31 -35
- package/dist/helpers/pretty-print-json.js.map +7 -0
- package/dist/helpers/pretty-print-json.test.js +28 -0
- package/dist/helpers/pretty-print-json.test.js.map +7 -0
- package/dist/helpers/redirect-to-proxy.js +46 -83
- package/dist/helpers/redirect-to-proxy.js.map +7 -0
- package/dist/helpers/redirect-to-proxy.test.js +54 -0
- package/dist/helpers/redirect-to-proxy.test.js.map +7 -0
- package/dist/helpers/regex-helpers.js +11 -9
- package/dist/helpers/regex-helpers.js.map +7 -0
- package/dist/helpers/regex-helpers.test.js +154 -0
- package/dist/helpers/regex-helpers.test.js.map +7 -0
- package/dist/helpers/replace-variables.js +13 -16
- package/dist/helpers/replace-variables.js.map +7 -0
- package/dist/helpers/replace-variables.test.js +30 -0
- package/dist/helpers/replace-variables.test.js.map +7 -0
- package/dist/helpers/schema-model.js +15 -14
- package/dist/helpers/schema-model.js.map +7 -0
- package/dist/helpers/security/get-schemes.d.ts +1 -1
- package/dist/helpers/security/get-schemes.d.ts.map +1 -1
- package/dist/helpers/security/get-schemes.js +7 -9
- package/dist/helpers/security/get-schemes.js.map +7 -0
- package/dist/helpers/security/get-schemes.test.js +71 -0
- package/dist/helpers/security/get-schemes.test.js.map +7 -0
- package/dist/helpers/security/has-token.js +18 -19
- package/dist/helpers/security/has-token.js.map +7 -0
- package/dist/helpers/security/has-token.test.js +157 -0
- package/dist/helpers/security/has-token.test.js.map +7 -0
- package/dist/helpers/security/index.d.ts +2 -2
- package/dist/helpers/security/index.d.ts.map +1 -1
- package/dist/helpers/security/index.js +7 -2
- package/dist/helpers/security/index.js.map +7 -0
- package/dist/helpers/should-ignore-entity.d.ts +2 -2
- package/dist/helpers/should-ignore-entity.d.ts.map +1 -1
- package/dist/helpers/should-ignore-entity.js +5 -6
- package/dist/helpers/should-ignore-entity.js.map +7 -0
- package/dist/helpers/ssr-state.js +6 -6
- package/dist/helpers/ssr-state.js.map +7 -0
- package/dist/helpers/string.js +6 -18
- package/dist/helpers/string.js.map +7 -0
- package/dist/migrations/data-version.js +7 -17
- package/dist/migrations/data-version.js.map +7 -0
- package/dist/migrations/generate-types.js +56 -0
- package/dist/migrations/generate-types.js.map +7 -0
- package/dist/migrations/index.d.ts +3 -3
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +10 -3
- package/dist/migrations/index.js.map +7 -0
- package/dist/migrations/local-storage.d.ts +1 -1
- package/dist/migrations/local-storage.d.ts.map +1 -1
- package/dist/migrations/local-storage.js +27 -32
- package/dist/migrations/local-storage.js.map +7 -0
- package/dist/migrations/migrator.d.ts +1 -1
- package/dist/migrations/migrator.d.ts.map +1 -1
- package/dist/migrations/migrator.js +51 -58
- package/dist/migrations/migrator.js.map +7 -0
- package/dist/migrations/semver.js +23 -25
- package/dist/migrations/semver.js.map +7 -0
- package/dist/migrations/semver.test.js +21 -0
- package/dist/migrations/semver.test.js.map +7 -0
- package/dist/migrations/v-0.0.0/types.generated.js +1 -0
- package/dist/migrations/v-0.0.0/types.generated.js.map +7 -0
- package/dist/migrations/v-2.1.0/migration.d.ts +2 -2
- package/dist/migrations/v-2.1.0/migration.d.ts.map +1 -1
- package/dist/migrations/v-2.1.0/migration.js +256 -273
- package/dist/migrations/v-2.1.0/migration.js.map +7 -0
- package/dist/migrations/v-2.1.0/types.generated.js +1 -0
- package/dist/migrations/v-2.1.0/types.generated.js.map +7 -0
- package/dist/migrations/v-2.2.0/migration.d.ts +2 -2
- package/dist/migrations/v-2.2.0/migration.d.ts.map +1 -1
- package/dist/migrations/v-2.2.0/migration.js +95 -100
- package/dist/migrations/v-2.2.0/migration.js.map +7 -0
- package/dist/migrations/v-2.2.0/types.generated.js +1 -0
- package/dist/migrations/v-2.2.0/types.generated.js.map +7 -0
- package/dist/migrations/v-2.3.0/migration.d.ts +2 -2
- package/dist/migrations/v-2.3.0/migration.d.ts.map +1 -1
- package/dist/migrations/v-2.3.0/migration.js +47 -46
- package/dist/migrations/v-2.3.0/migration.js.map +7 -0
- package/dist/migrations/v-2.3.0/types.generated.js +1 -0
- package/dist/migrations/v-2.3.0/types.generated.js.map +7 -0
- package/dist/migrations/v-2.4.0/migration.d.ts +2 -2
- package/dist/migrations/v-2.4.0/migration.d.ts.map +1 -1
- package/dist/migrations/v-2.4.0/migration.js +24 -26
- package/dist/migrations/v-2.4.0/migration.js.map +7 -0
- package/dist/migrations/v-2.4.0/migration.test.js +90 -0
- package/dist/migrations/v-2.4.0/migration.test.js.map +7 -0
- package/dist/migrations/v-2.4.0/types.generated.js +1 -0
- package/dist/migrations/v-2.4.0/types.generated.js.map +7 -0
- package/dist/migrations/v-2.5.0/migration.d.ts +2 -2
- package/dist/migrations/v-2.5.0/migration.d.ts.map +1 -1
- package/dist/migrations/v-2.5.0/migration.js +135 -119
- package/dist/migrations/v-2.5.0/migration.js.map +7 -0
- package/dist/migrations/v-2.5.0/migration.test.js +108 -0
- package/dist/migrations/v-2.5.0/migration.test.js.map +7 -0
- package/dist/migrations/v-2.5.0/types.generated.d.ts +8 -8
- package/dist/migrations/v-2.5.0/types.generated.d.ts.map +1 -1
- package/dist/migrations/v-2.5.0/types.generated.js +1 -0
- package/dist/migrations/v-2.5.0/types.generated.js.map +7 -0
- package/dist/spec-getters/get-example-from-schema.js +206 -268
- package/dist/spec-getters/get-example-from-schema.js.map +7 -0
- package/dist/spec-getters/get-example-from-schema.test.js +1092 -0
- package/dist/spec-getters/get-example-from-schema.test.js.map +7 -0
- package/dist/spec-getters/get-parameters-from-operation.js +22 -42
- package/dist/spec-getters/get-parameters-from-operation.js.map +7 -0
- package/dist/spec-getters/get-parameters-from-operation.test.js +178 -0
- package/dist/spec-getters/get-parameters-from-operation.test.js.map +7 -0
- package/dist/spec-getters/get-request-body-from-operation.js +110 -162
- package/dist/spec-getters/get-request-body-from-operation.js.map +7 -0
- package/dist/spec-getters/get-request-body-from-operation.test.js +289 -0
- package/dist/spec-getters/get-request-body-from-operation.test.js.map +7 -0
- package/dist/spec-getters/get-server-variable-examples.d.ts +1 -1
- package/dist/spec-getters/get-server-variable-examples.d.ts.map +1 -1
- package/dist/spec-getters/get-server-variable-examples.js +12 -11
- package/dist/spec-getters/get-server-variable-examples.js.map +7 -0
- package/dist/spec-getters/index.d.ts +4 -4
- package/dist/spec-getters/index.d.ts.map +1 -1
- package/dist/spec-getters/index.js +11 -4
- package/dist/spec-getters/index.js.map +7 -0
- package/dist/transforms/import-spec.d.ts +6 -6
- package/dist/transforms/import-spec.d.ts.map +1 -1
- package/dist/transforms/import-spec.js +313 -425
- package/dist/transforms/import-spec.js.map +7 -0
- package/dist/transforms/import-spec.test.js +1124 -0
- package/dist/transforms/import-spec.test.js.map +7 -0
- package/dist/transforms/index.d.ts +1 -1
- package/dist/transforms/index.d.ts.map +1 -1
- package/dist/transforms/index.js +7 -1
- package/dist/transforms/index.js.map +7 -0
- package/package.json +9 -10
|
@@ -1,282 +1,265 @@
|
|
|
1
|
-
import { camelToTitleWords, capitalize } from
|
|
2
|
-
import { parseLocalStorage } from
|
|
3
|
-
|
|
4
|
-
/** V-0.0.0 to V-2.1.0 migration */
|
|
1
|
+
import { camelToTitleWords, capitalize } from "../../helpers/string.js";
|
|
2
|
+
import { parseLocalStorage } from "../../migrations/local-storage.js";
|
|
5
3
|
const migrate_v_2_1_0 = (data) => {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
console.info("Performing data migration v-0.0.0 to v-2.1.0");
|
|
5
|
+
const oldData = {
|
|
6
|
+
...data,
|
|
7
|
+
// @ts-expect-error Tags used to be called folders
|
|
8
|
+
folders: parseLocalStorage("folder")
|
|
9
|
+
};
|
|
10
|
+
const flattenChildren = (childUids) => childUids.reduce(
|
|
11
|
+
(prev, uid) => {
|
|
12
|
+
const request = oldData.requests[uid];
|
|
13
|
+
if (request) {
|
|
14
|
+
prev.requestUids.add(uid);
|
|
15
|
+
request.securitySchemeUids?.forEach((s) => prev.authUids.add(s));
|
|
16
|
+
} else if (oldData.folders[uid]) {
|
|
17
|
+
const { requestUids, tagUids, authUids } = flattenChildren(oldData.folders[uid].childUids ?? []);
|
|
18
|
+
prev.tagUids.add(uid);
|
|
19
|
+
requestUids.forEach((r) => prev.requestUids.add(r));
|
|
20
|
+
tagUids.forEach((t) => prev.tagUids.add(t));
|
|
21
|
+
authUids.forEach((a) => prev.authUids.add(a));
|
|
22
|
+
}
|
|
23
|
+
return prev;
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
requestUids: /* @__PURE__ */ new Set(),
|
|
27
|
+
tagUids: /* @__PURE__ */ new Set(),
|
|
28
|
+
authUids: /* @__PURE__ */ new Set()
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
const migrateAuth = (scheme) => {
|
|
32
|
+
if (scheme.type === "apiKey") {
|
|
33
|
+
return { type: "apiKey", name: scheme.name, value: scheme.value ?? "" };
|
|
34
|
+
}
|
|
35
|
+
if (scheme.type === "http") {
|
|
36
|
+
return {
|
|
37
|
+
type: "http",
|
|
38
|
+
username: scheme.value ?? "",
|
|
39
|
+
password: scheme.secondValue ?? "",
|
|
40
|
+
token: scheme.value ?? ""
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (scheme.type === "oauth2" && scheme.flow.type === "implicit") {
|
|
44
|
+
return {
|
|
45
|
+
type: "oauth-implicit",
|
|
46
|
+
token: scheme.flow.token ?? ""
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (scheme.type === "oauth2" && scheme.flow.type === "password") {
|
|
50
|
+
return {
|
|
51
|
+
type: "oauth-password",
|
|
52
|
+
token: scheme.flow.token ?? "",
|
|
53
|
+
username: scheme.flow.value ?? "",
|
|
54
|
+
password: scheme.flow.secondValue ?? "",
|
|
55
|
+
clientSecret: scheme.flow.clientSecret ?? ""
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (scheme.type === "oauth2" && scheme.flow.type === "clientCredentials") {
|
|
59
|
+
return {
|
|
60
|
+
type: "oauth-clientCredentials",
|
|
61
|
+
token: scheme.flow.token ?? "",
|
|
62
|
+
clientSecret: scheme.flow.clientSecret ?? ""
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (scheme.type === "oauth2" && scheme.flow.type === "authorizationCode") {
|
|
66
|
+
return {
|
|
67
|
+
type: "oauth-authorizationCode",
|
|
68
|
+
token: scheme.flow.token ?? "",
|
|
69
|
+
clientSecret: scheme.flow.clientSecret ?? ""
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
type: "apiKey",
|
|
74
|
+
name: "",
|
|
75
|
+
value: ""
|
|
12
76
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
prev.tagUids.add(uid);
|
|
26
|
-
requestUids.forEach((r) => prev.requestUids.add(r));
|
|
27
|
-
tagUids.forEach((t) => prev.tagUids.add(t));
|
|
28
|
-
authUids.forEach((a) => prev.authUids.add(a));
|
|
29
|
-
}
|
|
30
|
-
return prev;
|
|
31
|
-
}, {
|
|
32
|
-
requestUids: new Set(),
|
|
33
|
-
tagUids: new Set(),
|
|
34
|
-
authUids: new Set(),
|
|
35
|
-
});
|
|
36
|
-
/** Migrate values from old securitySchemes to the new auth */
|
|
37
|
-
const migrateAuth = (scheme) => {
|
|
38
|
-
if (scheme.type === 'apiKey') {
|
|
39
|
-
// ApiKey
|
|
40
|
-
return { type: 'apiKey', name: scheme.name, value: scheme.value ?? '' };
|
|
41
|
-
}
|
|
42
|
-
// HTTP
|
|
43
|
-
if (scheme.type === 'http') {
|
|
44
|
-
return {
|
|
45
|
-
type: 'http',
|
|
46
|
-
username: scheme.value ?? '',
|
|
47
|
-
password: scheme.secondValue ?? '',
|
|
48
|
-
token: scheme.value ?? '',
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
// Oauth2 Implicit
|
|
52
|
-
if (scheme.type === 'oauth2' && scheme.flow.type === 'implicit') {
|
|
53
|
-
return {
|
|
54
|
-
type: 'oauth-implicit',
|
|
55
|
-
token: scheme.flow.token ?? '',
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
// Oauth2 Password
|
|
59
|
-
if (scheme.type === 'oauth2' && scheme.flow.type === 'password') {
|
|
60
|
-
return {
|
|
61
|
-
type: 'oauth-password',
|
|
62
|
-
token: scheme.flow.token ?? '',
|
|
63
|
-
username: scheme.flow.value ?? '',
|
|
64
|
-
password: scheme.flow.secondValue ?? '',
|
|
65
|
-
clientSecret: scheme.flow.clientSecret ?? '',
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
// Oauth2 clientCredentials
|
|
69
|
-
if (scheme.type === 'oauth2' && scheme.flow.type === 'clientCredentials') {
|
|
70
|
-
return {
|
|
71
|
-
type: 'oauth-clientCredentials',
|
|
72
|
-
token: scheme.flow.token ?? '',
|
|
73
|
-
clientSecret: scheme.flow.clientSecret ?? '',
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
// Oauth2 Authorization Code
|
|
77
|
-
if (scheme.type === 'oauth2' && scheme.flow.type === 'authorizationCode') {
|
|
78
|
-
return {
|
|
79
|
-
type: 'oauth-authorizationCode',
|
|
80
|
-
token: scheme.flow.token ?? '',
|
|
81
|
-
clientSecret: scheme.flow.clientSecret ?? '',
|
|
82
|
-
};
|
|
77
|
+
};
|
|
78
|
+
const requestSecurityDict = {};
|
|
79
|
+
const collections = Object.values(oldData.collections ?? {}).reduce((prev, c) => {
|
|
80
|
+
const { requestUids, tagUids, authUids } = flattenChildren(c.childUids ?? []);
|
|
81
|
+
const securitySchemesSet = /* @__PURE__ */ new Set([...authUids, ...Object.values(c.securitySchemeDict ?? {})]);
|
|
82
|
+
const securitySchemes2 = [...securitySchemesSet];
|
|
83
|
+
requestUids.forEach((r) => requestSecurityDict[r] = securitySchemes2);
|
|
84
|
+
const auth = securitySchemes2.reduce(
|
|
85
|
+
(_prev, uid) => {
|
|
86
|
+
const scheme = oldData.securitySchemes[uid];
|
|
87
|
+
if (scheme?.uid && _prev) {
|
|
88
|
+
_prev[uid] = migrateAuth(scheme);
|
|
83
89
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
return _prev;
|
|
91
|
+
},
|
|
92
|
+
{}
|
|
93
|
+
);
|
|
94
|
+
prev[c.uid] = {
|
|
95
|
+
"type": "collection",
|
|
96
|
+
"openapi": c.spec?.openapi || "3.1.0",
|
|
97
|
+
"info": c.spec?.info || { title: "OpenAPI Spec", version: "0.0.1" },
|
|
98
|
+
"security": c.spec?.security || [],
|
|
99
|
+
"externalDocs": c.spec?.externalDocs,
|
|
100
|
+
"uid": c.uid,
|
|
101
|
+
securitySchemes: securitySchemes2,
|
|
102
|
+
"selectedSecuritySchemeUids": [],
|
|
103
|
+
"selectedServerUid": c.selectedServerUid || c.spec?.serverUids?.[0] || "",
|
|
104
|
+
"servers": c.spec?.serverUids || [],
|
|
105
|
+
"requests": [...requestUids],
|
|
106
|
+
"tags": [...tagUids],
|
|
107
|
+
auth,
|
|
108
|
+
"children": c.childUids || [],
|
|
109
|
+
"x-scalar-icon": "interface-content-folder",
|
|
110
|
+
"watchMode": false,
|
|
111
|
+
"watchModeStatus": "IDLE"
|
|
90
112
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
'children': c.childUids || [],
|
|
124
|
-
'x-scalar-icon': 'interface-content-folder',
|
|
125
|
-
'watchMode': false,
|
|
126
|
-
'watchModeStatus': 'IDLE',
|
|
127
|
-
};
|
|
128
|
-
return prev;
|
|
129
|
-
}, {});
|
|
130
|
-
// Cookies
|
|
131
|
-
const cookies = oldData.cookies ?? {};
|
|
132
|
-
// Environments
|
|
133
|
-
const environments = Object.values(oldData.environments ?? {}).reduce((prev, e) => {
|
|
134
|
-
prev[e.uid] = {
|
|
135
|
-
...e,
|
|
136
|
-
value: e.raw ?? '',
|
|
137
|
-
};
|
|
138
|
-
return prev;
|
|
139
|
-
}, {});
|
|
140
|
-
// Requests
|
|
141
|
-
const requests = Object.values(oldData.requests ?? {}).reduce((prev, r) => {
|
|
142
|
-
// Convert parameters
|
|
143
|
-
const parameters = [
|
|
144
|
-
...Object.values(r.parameters?.path ?? {}),
|
|
145
|
-
...Object.values(r.parameters?.query ?? {}),
|
|
146
|
-
...Object.values(r.parameters?.headers ?? {}),
|
|
147
|
-
...Object.values(r.parameters?.cookies ?? {}),
|
|
148
|
-
].filter((p) => p);
|
|
149
|
-
// Ensure this request can access these schemes
|
|
150
|
-
const selectedSecuritySchemeUids = (r.selectedSecuritySchemeUids || []).filter((s) => requestSecurityDict[r.uid]?.includes(s));
|
|
151
|
-
prev[r.uid] = {
|
|
152
|
-
...r,
|
|
153
|
-
parameters,
|
|
154
|
-
type: 'request',
|
|
155
|
-
method: r.method?.toLowerCase() ?? 'get',
|
|
156
|
-
examples: r.childUids || [],
|
|
157
|
-
selectedSecuritySchemeUids,
|
|
158
|
-
selectedServerUid: '',
|
|
159
|
-
servers: [],
|
|
160
|
-
};
|
|
161
|
-
return prev;
|
|
162
|
-
}, {});
|
|
163
|
-
// Request Examples
|
|
164
|
-
const requestExamples = Object.values(oldData.requestExamples ?? {}).reduce((prev, e) => {
|
|
165
|
-
prev[e.uid] = {
|
|
166
|
-
...e,
|
|
167
|
-
type: 'requestExample',
|
|
168
|
-
};
|
|
169
|
-
return prev;
|
|
170
|
-
}, {});
|
|
171
|
-
/** Specifically handle each oauth2 flow */
|
|
172
|
-
const migrateFlow = (flow) => {
|
|
173
|
-
const base = {
|
|
174
|
-
refreshUrl: flow.refreshUrl || '',
|
|
175
|
-
selectedScopes: flow.selectedScopes || [],
|
|
176
|
-
scopes: flow.scopes || {},
|
|
177
|
-
};
|
|
178
|
-
if (flow.type === 'implicit') {
|
|
179
|
-
return {
|
|
180
|
-
...flow,
|
|
181
|
-
...base,
|
|
182
|
-
'type': 'implicit',
|
|
183
|
-
'x-scalar-redirect-uri': ('redirectUri' in flow ? flow.redirectUri : '') || '',
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
if (flow.type === 'password') {
|
|
187
|
-
return {
|
|
188
|
-
...flow,
|
|
189
|
-
...base,
|
|
190
|
-
tokenUrl: flow.tokenUrl || '',
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
if (flow.type === 'clientCredentials') {
|
|
194
|
-
return {
|
|
195
|
-
...flow,
|
|
196
|
-
...base,
|
|
197
|
-
tokenUrl: flow.tokenUrl || '',
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
return {
|
|
201
|
-
...flow,
|
|
202
|
-
...base,
|
|
203
|
-
'x-usePkce': 'no',
|
|
204
|
-
'x-scalar-redirect-uri': ('redirectUri' in flow ? flow.redirectUri : '') || '',
|
|
205
|
-
'authorizationUrl': flow.authorizationUrl || '',
|
|
206
|
-
'tokenUrl': flow.tokenUrl || '',
|
|
207
|
-
};
|
|
113
|
+
return prev;
|
|
114
|
+
}, {});
|
|
115
|
+
const cookies = oldData.cookies ?? {};
|
|
116
|
+
const environments = Object.values(oldData.environments ?? {}).reduce(
|
|
117
|
+
(prev, e) => {
|
|
118
|
+
prev[e.uid] = {
|
|
119
|
+
...e,
|
|
120
|
+
value: e.raw ?? ""
|
|
121
|
+
};
|
|
122
|
+
return prev;
|
|
123
|
+
},
|
|
124
|
+
{}
|
|
125
|
+
);
|
|
126
|
+
const requests = Object.values(oldData.requests ?? {}).reduce((prev, r) => {
|
|
127
|
+
const parameters = [
|
|
128
|
+
...Object.values(r.parameters?.path ?? {}),
|
|
129
|
+
...Object.values(r.parameters?.query ?? {}),
|
|
130
|
+
...Object.values(r.parameters?.headers ?? {}),
|
|
131
|
+
...Object.values(r.parameters?.cookies ?? {})
|
|
132
|
+
].filter((p) => p);
|
|
133
|
+
const selectedSecuritySchemeUids = (r.selectedSecuritySchemeUids || []).filter(
|
|
134
|
+
(s) => requestSecurityDict[r.uid]?.includes(s)
|
|
135
|
+
);
|
|
136
|
+
prev[r.uid] = {
|
|
137
|
+
...r,
|
|
138
|
+
parameters,
|
|
139
|
+
type: "request",
|
|
140
|
+
method: r.method?.toLowerCase() ?? "get",
|
|
141
|
+
examples: r.childUids || [],
|
|
142
|
+
selectedSecuritySchemeUids,
|
|
143
|
+
selectedServerUid: "",
|
|
144
|
+
servers: []
|
|
208
145
|
};
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
146
|
+
return prev;
|
|
147
|
+
}, {});
|
|
148
|
+
const requestExamples = Object.values(oldData.requestExamples ?? {}).reduce(
|
|
149
|
+
(prev, e) => {
|
|
150
|
+
prev[e.uid] = {
|
|
151
|
+
...e,
|
|
152
|
+
type: "requestExample"
|
|
153
|
+
};
|
|
154
|
+
return prev;
|
|
155
|
+
},
|
|
156
|
+
{}
|
|
157
|
+
);
|
|
158
|
+
const migrateFlow = (flow) => {
|
|
159
|
+
const base = {
|
|
160
|
+
refreshUrl: flow.refreshUrl || "",
|
|
161
|
+
selectedScopes: flow.selectedScopes || [],
|
|
162
|
+
scopes: flow.scopes || {}
|
|
224
163
|
};
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
const tags = Object.values(oldData.folders ?? {}).reduce((prev, f) => {
|
|
248
|
-
prev[f.uid] = {
|
|
249
|
-
'type': 'tag',
|
|
250
|
-
'uid': f.uid,
|
|
251
|
-
'name': f.name || 'unknownTag',
|
|
252
|
-
'description': f.description,
|
|
253
|
-
'children': f.childUids || [],
|
|
254
|
-
'x-scalar-children': [],
|
|
255
|
-
};
|
|
256
|
-
return prev;
|
|
257
|
-
}, {});
|
|
258
|
-
// Workspaces
|
|
259
|
-
const workspaces = Object.values(oldData.workspaces ?? {}).reduce((prev, w) => {
|
|
260
|
-
prev[w.uid] = {
|
|
261
|
-
...w,
|
|
262
|
-
description: w.description ?? 'Basic Scalar Workspace',
|
|
263
|
-
cookies: w.cookieUids || [],
|
|
264
|
-
collections: w.collectionUids || [],
|
|
265
|
-
environments: w.environmentUids || [],
|
|
266
|
-
};
|
|
267
|
-
return prev;
|
|
268
|
-
}, {});
|
|
164
|
+
if (flow.type === "implicit") {
|
|
165
|
+
return {
|
|
166
|
+
...flow,
|
|
167
|
+
...base,
|
|
168
|
+
"type": "implicit",
|
|
169
|
+
"x-scalar-redirect-uri": ("redirectUri" in flow ? flow.redirectUri : "") || ""
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
if (flow.type === "password") {
|
|
173
|
+
return {
|
|
174
|
+
...flow,
|
|
175
|
+
...base,
|
|
176
|
+
tokenUrl: flow.tokenUrl || ""
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
if (flow.type === "clientCredentials") {
|
|
180
|
+
return {
|
|
181
|
+
...flow,
|
|
182
|
+
...base,
|
|
183
|
+
tokenUrl: flow.tokenUrl || ""
|
|
184
|
+
};
|
|
185
|
+
}
|
|
269
186
|
return {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
servers,
|
|
277
|
-
tags,
|
|
278
|
-
workspaces,
|
|
187
|
+
...flow,
|
|
188
|
+
...base,
|
|
189
|
+
"x-usePkce": "no",
|
|
190
|
+
"x-scalar-redirect-uri": ("redirectUri" in flow ? flow.redirectUri : "") || "",
|
|
191
|
+
"authorizationUrl": flow.authorizationUrl || "",
|
|
192
|
+
"tokenUrl": flow.tokenUrl || ""
|
|
279
193
|
};
|
|
194
|
+
};
|
|
195
|
+
const getNameKey = (scheme) => {
|
|
196
|
+
switch (scheme?.type) {
|
|
197
|
+
case "apiKey":
|
|
198
|
+
return `${capitalize(scheme.in)}`;
|
|
199
|
+
case "http": {
|
|
200
|
+
return `${capitalize(scheme.scheme)} Authentication`;
|
|
201
|
+
}
|
|
202
|
+
case "oauth2":
|
|
203
|
+
return camelToTitleWords(scheme.flow.type);
|
|
204
|
+
case "openIdConnect":
|
|
205
|
+
return "Open ID Connect";
|
|
206
|
+
default:
|
|
207
|
+
return "None";
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
const securitySchemes = Object.values(oldData.securitySchemes ?? {}).reduce(
|
|
211
|
+
(prev, s) => {
|
|
212
|
+
prev[s.uid] = s.type === "oauth2" ? {
|
|
213
|
+
...s,
|
|
214
|
+
"nameKey": getNameKey(s),
|
|
215
|
+
"x-scalar-client-id": s.clientId || "",
|
|
216
|
+
"flow": migrateFlow(s.flow)
|
|
217
|
+
} : { ...s, nameKey: getNameKey(s) };
|
|
218
|
+
return prev;
|
|
219
|
+
},
|
|
220
|
+
{}
|
|
221
|
+
);
|
|
222
|
+
const servers = Object.values(oldData.servers ?? {}).reduce((prev, s) => {
|
|
223
|
+
prev[s.uid] = {
|
|
224
|
+
...s,
|
|
225
|
+
variables: s.variables ?? {}
|
|
226
|
+
};
|
|
227
|
+
return prev;
|
|
228
|
+
}, {});
|
|
229
|
+
const tags = Object.values(oldData.folders ?? {}).reduce((prev, f) => {
|
|
230
|
+
prev[f.uid] = {
|
|
231
|
+
"type": "tag",
|
|
232
|
+
"uid": f.uid,
|
|
233
|
+
"name": f.name || "unknownTag",
|
|
234
|
+
"description": f.description,
|
|
235
|
+
"children": f.childUids || [],
|
|
236
|
+
"x-scalar-children": []
|
|
237
|
+
};
|
|
238
|
+
return prev;
|
|
239
|
+
}, {});
|
|
240
|
+
const workspaces = Object.values(oldData.workspaces ?? {}).reduce((prev, w) => {
|
|
241
|
+
prev[w.uid] = {
|
|
242
|
+
...w,
|
|
243
|
+
description: w.description ?? "Basic Scalar Workspace",
|
|
244
|
+
cookies: w.cookieUids || [],
|
|
245
|
+
collections: w.collectionUids || [],
|
|
246
|
+
environments: w.environmentUids || []
|
|
247
|
+
};
|
|
248
|
+
return prev;
|
|
249
|
+
}, {});
|
|
250
|
+
return {
|
|
251
|
+
collections,
|
|
252
|
+
cookies,
|
|
253
|
+
environments,
|
|
254
|
+
requestExamples,
|
|
255
|
+
requests,
|
|
256
|
+
securitySchemes,
|
|
257
|
+
servers,
|
|
258
|
+
tags,
|
|
259
|
+
workspaces
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
export {
|
|
263
|
+
migrate_v_2_1_0
|
|
280
264
|
};
|
|
281
|
-
|
|
282
|
-
export { migrate_v_2_1_0 };
|
|
265
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/migrations/v-2.1.0/migration.ts"],
|
|
4
|
+
"sourcesContent": ["import { camelToTitleWords, capitalize } from '@/helpers/string'\nimport { parseLocalStorage } from '@/migrations/local-storage'\nimport type { v_0_0_0 } from '@/migrations/v-0.0.0/types.generated'\n\nimport type { v_2_1_0 } from './types.generated'\n\n/** V-0.0.0 to V-2.1.0 migration */\nexport const migrate_v_2_1_0 = (data: Omit<v_0_0_0.DataRecord, 'folders'>) => {\n console.info('Performing data migration v-0.0.0 to v-2.1.0')\n\n // Augment the previous data\n const oldData = {\n ...data,\n // @ts-expect-error Tags used to be called folders\n folders: parseLocalStorage('folder'),\n } as v_0_0_0.DataRecord\n\n /** To grab requests and tags we must traverse children, also for security */\n const flattenChildren = (childUids: string[]) =>\n childUids.reduce(\n (prev, uid) => {\n const request = oldData.requests[uid]\n\n // Request\n if (request) {\n prev.requestUids.add(uid)\n // Security\n request.securitySchemeUids?.forEach((s) => prev.authUids.add(s))\n }\n\n // Folder -> tag\n else if (oldData.folders[uid]) {\n const { requestUids, tagUids, authUids } = flattenChildren(oldData.folders[uid].childUids ?? [])\n prev.tagUids.add(uid)\n requestUids.forEach((r) => prev.requestUids.add(r))\n tagUids.forEach((t) => prev.tagUids.add(t))\n authUids.forEach((a) => prev.authUids.add(a))\n }\n\n return prev\n },\n {\n requestUids: new Set<string>(),\n tagUids: new Set<string>(),\n authUids: new Set<string>(),\n },\n )\n\n /** Migrate values from old securitySchemes to the new auth */\n const migrateAuth = (scheme: v_0_0_0.SecurityScheme): NonNullable<v_2_1_0.Collection['auth']>[string] => {\n if (scheme.type === 'apiKey') {\n // ApiKey\n return { type: 'apiKey', name: scheme.name, value: scheme.value ?? '' }\n }\n\n // HTTP\n if (scheme.type === 'http') {\n return {\n type: 'http',\n username: scheme.value ?? '',\n password: scheme.secondValue ?? '',\n token: scheme.value ?? '',\n }\n }\n\n // Oauth2 Implicit\n if (scheme.type === 'oauth2' && scheme.flow.type === 'implicit') {\n return {\n type: 'oauth-implicit',\n token: scheme.flow.token ?? '',\n }\n }\n\n // Oauth2 Password\n if (scheme.type === 'oauth2' && scheme.flow.type === 'password') {\n return {\n type: 'oauth-password',\n token: scheme.flow.token ?? '',\n username: scheme.flow.value ?? '',\n password: scheme.flow.secondValue ?? '',\n clientSecret: scheme.flow.clientSecret ?? '',\n }\n }\n\n // Oauth2 clientCredentials\n if (scheme.type === 'oauth2' && scheme.flow.type === 'clientCredentials') {\n return {\n type: 'oauth-clientCredentials',\n token: scheme.flow.token ?? '',\n clientSecret: scheme.flow.clientSecret ?? '',\n }\n }\n\n // Oauth2 Authorization Code\n if (scheme.type === 'oauth2' && scheme.flow.type === 'authorizationCode') {\n return {\n type: 'oauth-authorizationCode',\n token: scheme.flow.token ?? '',\n clientSecret: scheme.flow.clientSecret ?? '',\n }\n }\n\n // Default - should not get hit\n return {\n type: 'apiKey',\n name: '',\n value: '',\n }\n }\n\n /** This is needed due to our previous data being poluted, we will only allow auth on a requst which is in the spec */\n const requestSecurityDict: Record<string, string[]> = {}\n\n // Collections\n const collections = Object.values(oldData.collections ?? {}).reduce<v_2_1_0.DataRecord['collections']>((prev, c) => {\n const { requestUids, tagUids, authUids } = flattenChildren(c.childUids ?? [])\n\n // Ensure we got unique uids\n const securitySchemesSet = new Set([...authUids, ...Object.values(c.securitySchemeDict ?? {})])\n const securitySchemes = [...securitySchemesSet]\n\n // Add this auth to each request\n requestUids.forEach((r) => (requestSecurityDict[r] = securitySchemes))\n\n // Migrate auth\n const auth = securitySchemes.reduce(\n (_prev, uid) => {\n const scheme = oldData.securitySchemes[uid]\n if (scheme?.uid && _prev) {\n _prev[uid] = migrateAuth(scheme)\n }\n return _prev\n },\n {} as v_2_1_0.Collection['auth'],\n )\n\n prev[c.uid] = {\n 'type': 'collection',\n 'openapi': c.spec?.openapi || '3.1.0',\n 'info': c.spec?.info || { title: 'OpenAPI Spec', version: '0.0.1' },\n 'security': c.spec?.security || [],\n 'externalDocs': c.spec?.externalDocs,\n 'uid': c.uid,\n securitySchemes,\n 'selectedSecuritySchemeUids': [],\n 'selectedServerUid': c.selectedServerUid || c.spec?.serverUids?.[0] || '',\n 'servers': c.spec?.serverUids || [],\n 'requests': [...requestUids],\n 'tags': [...tagUids],\n auth,\n 'children': c.childUids || [],\n 'x-scalar-icon': 'interface-content-folder',\n 'watchMode': false,\n 'watchModeStatus': 'IDLE',\n } satisfies v_2_1_0.Collection\n return prev\n }, {})\n\n // Cookies\n const cookies = oldData.cookies ?? {}\n\n // Environments\n const environments = Object.values(oldData.environments ?? {}).reduce<v_2_1_0.DataRecord['environments']>(\n (prev, e) => {\n prev[e.uid] = {\n ...e,\n value: e.raw ?? '',\n }\n return prev\n },\n {},\n )\n\n // Requests\n const requests = Object.values(oldData.requests ?? {}).reduce<v_2_1_0.DataRecord['requests']>((prev, r) => {\n // Convert parameters\n const parameters: v_2_1_0.Request['parameters'] = [\n ...Object.values(r.parameters?.path ?? {}),\n ...Object.values(r.parameters?.query ?? {}),\n ...Object.values(r.parameters?.headers ?? {}),\n ...Object.values(r.parameters?.cookies ?? {}),\n ].filter((p) => p)\n\n // Ensure this request can access these schemes\n const selectedSecuritySchemeUids = (r.selectedSecuritySchemeUids || []).filter((s) =>\n requestSecurityDict[r.uid]?.includes(s),\n )\n\n prev[r.uid] = {\n ...r,\n parameters,\n type: 'request',\n method: (r.method?.toLowerCase() as v_2_1_0.Request['method']) ?? 'get',\n examples: r.childUids || [],\n selectedSecuritySchemeUids,\n selectedServerUid: '',\n servers: [],\n } satisfies v_2_1_0.Request\n return prev\n }, {})\n\n // Request Examples\n const requestExamples = Object.values(oldData.requestExamples ?? {}).reduce<v_2_1_0.DataRecord['requestExamples']>(\n (prev, e) => {\n prev[e.uid] = {\n ...e,\n type: 'requestExample',\n }\n return prev\n },\n {},\n )\n\n type Oauth2 = Exclude<v_2_1_0.SecurityScheme, { type: 'http' } | { type: 'apiKey' } | { type: 'openIdConnect' }>\n\n type Flow = Extract<v_0_0_0.SecurityScheme, { type: 'oauth2' }>['flow']\n\n /** Specifically handle each oauth2 flow */\n const migrateFlow = (flow: Flow): Oauth2['flow'] => {\n const base = {\n refreshUrl: flow.refreshUrl || '',\n selectedScopes: flow.selectedScopes || [],\n scopes: flow.scopes || {},\n } as const\n\n if (flow.type === 'implicit') {\n return {\n ...flow,\n ...base,\n 'type': 'implicit',\n 'x-scalar-redirect-uri': ('redirectUri' in flow ? flow.redirectUri : '') || '',\n }\n }\n if (flow.type === 'password') {\n return {\n ...flow,\n ...base,\n tokenUrl: flow.tokenUrl || '',\n }\n }\n if (flow.type === 'clientCredentials') {\n return {\n ...flow,\n ...base,\n tokenUrl: flow.tokenUrl || '',\n }\n }\n\n return {\n ...flow,\n ...base,\n 'x-usePkce': 'no',\n 'x-scalar-redirect-uri': ('redirectUri' in flow ? flow.redirectUri : '') || '',\n 'authorizationUrl': flow.authorizationUrl || '',\n 'tokenUrl': flow.tokenUrl || '',\n }\n }\n\n /** Generate a nameKey based on the type of oauth */\n const getNameKey = (scheme: v_0_0_0.SecurityScheme) => {\n switch (scheme?.type) {\n case 'apiKey':\n return `${capitalize(scheme.in)}`\n case 'http': {\n return `${capitalize(scheme.scheme)} Authentication`\n }\n case 'oauth2':\n return camelToTitleWords(scheme.flow.type)\n case 'openIdConnect':\n return 'Open ID Connect'\n default:\n return 'None'\n }\n }\n\n // Security Schemes\n const securitySchemes = Object.values(oldData.securitySchemes ?? {}).reduce<v_2_1_0.DataRecord['securitySchemes']>(\n (prev, s) => {\n prev[s.uid] =\n s.type === 'oauth2'\n ? ({\n ...s,\n 'nameKey': getNameKey(s),\n 'x-scalar-client-id': s.clientId || '',\n 'flow': migrateFlow(s.flow),\n } satisfies Oauth2)\n : ({ ...s, nameKey: getNameKey(s) } satisfies Exclude<v_2_1_0.SecurityScheme, { type: 'oauth2' }>)\n return prev\n },\n {},\n )\n\n // Servers\n const servers = Object.values(oldData.servers ?? {}).reduce<v_2_1_0.DataRecord['servers']>((prev, s) => {\n prev[s.uid] = {\n ...s,\n variables: s.variables ?? {},\n }\n return prev\n }, {})\n\n // Tags\n const tags = Object.values(oldData.folders ?? {}).reduce<v_2_1_0.DataRecord['tags']>((prev, f) => {\n prev[f.uid] = {\n 'type': 'tag',\n 'uid': f.uid,\n 'name': f.name || 'unknownTag',\n 'description': f.description,\n 'children': f.childUids || [],\n 'x-scalar-children': [],\n }\n return prev\n }, {})\n\n // Workspaces\n const workspaces = Object.values(oldData.workspaces ?? {}).reduce<v_2_1_0.DataRecord['workspaces']>((prev, w) => {\n prev[w.uid] = {\n ...w,\n description: w.description ?? 'Basic Scalar Workspace',\n cookies: w.cookieUids || [],\n collections: w.collectionUids || [],\n environments: w.environmentUids || [],\n }\n return prev\n }, {})\n\n return {\n collections,\n cookies,\n environments,\n requestExamples,\n requests,\n securitySchemes,\n servers,\n tags,\n workspaces,\n } satisfies v_2_1_0.DataRecord\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["securitySchemes"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.generated.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { v_2_1_0 } from '../../migrations/v-2.1.0/types.generated.
|
|
2
|
-
import type { v_2_2_0 } from './types.generated.
|
|
1
|
+
import type { v_2_1_0 } from '../../migrations/v-2.1.0/types.generated.js';
|
|
2
|
+
import type { v_2_2_0 } from './types.generated.js';
|
|
3
3
|
/** V-2.1.0 to V-2.2.0 migration */
|
|
4
4
|
export declare const migrate_v_2_2_0: (data: v_2_1_0.DataRecord) => v_2_2_0.DataRecord;
|
|
5
5
|
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/migrations/v-2.2.0/migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/migrations/v-2.2.0/migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AAEnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAkGhD,mCAAmC;AACnC,eAAO,MAAM,eAAe,SAAU,OAAO,CAAC,UAAU,KAAG,OAAO,CAAC,UA6BlE,CAAA"}
|