@scalar/workspace-store 0.28.1 → 0.28.3

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.
Files changed (102) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/client.d.ts +10 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +42 -2
  5. package/dist/client.js.map +2 -2
  6. package/dist/entities/auth/index.d.ts +75 -0
  7. package/dist/entities/auth/index.d.ts.map +1 -0
  8. package/dist/entities/auth/index.js +89 -0
  9. package/dist/entities/auth/index.js.map +7 -0
  10. package/dist/entities/auth/schema.d.ts +7318 -0
  11. package/dist/entities/auth/schema.d.ts.map +1 -0
  12. package/dist/entities/auth/schema.js +74 -0
  13. package/dist/entities/auth/schema.js.map +7 -0
  14. package/dist/entities/history/index.d.ts +93 -0
  15. package/dist/entities/history/index.d.ts.map +1 -0
  16. package/dist/entities/history/index.js +62 -0
  17. package/dist/entities/history/index.js.map +7 -0
  18. package/dist/entities/history/schema.d.ts +234 -0
  19. package/dist/entities/history/schema.d.ts.map +1 -0
  20. package/dist/{schemas/extensions/operation/x-scalar-history.js → entities/history/schema.js} +5 -6
  21. package/dist/{schemas/extensions/operation/x-scalar-history.js.map → entities/history/schema.js.map} +3 -3
  22. package/dist/events/definitions/auth.d.ts +14 -0
  23. package/dist/events/definitions/auth.d.ts.map +1 -1
  24. package/dist/mutators/auth.d.ts +10 -17
  25. package/dist/mutators/auth.d.ts.map +1 -1
  26. package/dist/mutators/auth.js +87 -57
  27. package/dist/mutators/auth.js.map +2 -2
  28. package/dist/mutators/index.d.ts +4 -12
  29. package/dist/mutators/index.d.ts.map +1 -1
  30. package/dist/mutators/index.js +1 -1
  31. package/dist/mutators/index.js.map +2 -2
  32. package/dist/mutators/operation.d.ts +2 -2
  33. package/dist/mutators/operation.d.ts.map +1 -1
  34. package/dist/mutators/operation.js +9 -16
  35. package/dist/mutators/operation.js.map +2 -2
  36. package/dist/mutators/server.d.ts.map +1 -1
  37. package/dist/mutators/server.js +0 -3
  38. package/dist/mutators/server.js.map +2 -2
  39. package/dist/persistence/index.d.ts +16 -3
  40. package/dist/persistence/index.d.ts.map +1 -1
  41. package/dist/persistence/index.js +47 -3
  42. package/dist/persistence/index.js.map +2 -2
  43. package/dist/plugins/bundler/index.d.ts +7 -0
  44. package/dist/plugins/bundler/index.d.ts.map +1 -1
  45. package/dist/plugins/bundler/index.js +17 -0
  46. package/dist/plugins/bundler/index.js.map +2 -2
  47. package/dist/plugins/client/persistence.d.ts.map +1 -1
  48. package/dist/plugins/client/persistence.js +12 -0
  49. package/dist/plugins/client/persistence.js.map +2 -2
  50. package/dist/resolve.d.ts +9 -0
  51. package/dist/resolve.d.ts.map +1 -0
  52. package/dist/resolve.js +28 -0
  53. package/dist/resolve.js.map +7 -0
  54. package/dist/schemas/extensions/security/index.d.ts +2 -0
  55. package/dist/schemas/extensions/security/index.d.ts.map +1 -0
  56. package/dist/schemas/extensions/security/index.js +1 -0
  57. package/dist/schemas/extensions/security/index.js.map +7 -0
  58. package/dist/schemas/inmemory-workspace.d.ts +2952 -149
  59. package/dist/schemas/inmemory-workspace.d.ts.map +1 -1
  60. package/dist/schemas/inmemory-workspace.js +5 -1
  61. package/dist/schemas/inmemory-workspace.js.map +2 -2
  62. package/dist/schemas/reference-config/index.d.ts +35 -149
  63. package/dist/schemas/reference-config/index.d.ts.map +1 -1
  64. package/dist/schemas/reference-config/settings.d.ts +35 -149
  65. package/dist/schemas/reference-config/settings.d.ts.map +1 -1
  66. package/dist/schemas/v3.1/strict/oauth-flow.d.ts +5 -35
  67. package/dist/schemas/v3.1/strict/oauth-flow.d.ts.map +1 -1
  68. package/dist/schemas/v3.1/strict/oauth-flow.js +1 -16
  69. package/dist/schemas/v3.1/strict/oauth-flow.js.map +2 -2
  70. package/dist/schemas/v3.1/strict/oauthflows.d.ts +0 -29
  71. package/dist/schemas/v3.1/strict/oauthflows.d.ts.map +1 -1
  72. package/dist/schemas/v3.1/strict/openapi-document.d.ts +1245 -6744
  73. package/dist/schemas/v3.1/strict/openapi-document.d.ts.map +1 -1
  74. package/dist/schemas/v3.1/strict/openapi-document.js +2 -10
  75. package/dist/schemas/v3.1/strict/openapi-document.js.map +2 -2
  76. package/dist/schemas/v3.1/strict/operation.d.ts +1 -70
  77. package/dist/schemas/v3.1/strict/operation.d.ts.map +1 -1
  78. package/dist/schemas/v3.1/strict/operation.js +1 -7
  79. package/dist/schemas/v3.1/strict/operation.js.map +2 -2
  80. package/dist/schemas/v3.1/strict/ref-definitions.d.ts +0 -1
  81. package/dist/schemas/v3.1/strict/ref-definitions.d.ts.map +1 -1
  82. package/dist/schemas/v3.1/strict/ref-definitions.js +1 -3
  83. package/dist/schemas/v3.1/strict/ref-definitions.js.map +2 -2
  84. package/dist/schemas/v3.1/strict/schema.d.ts +50 -46
  85. package/dist/schemas/v3.1/strict/schema.d.ts.map +1 -1
  86. package/dist/schemas/v3.1/strict/schema.js +5 -2
  87. package/dist/schemas/v3.1/strict/schema.js.map +2 -2
  88. package/dist/schemas/v3.1/strict/security-scheme.d.ts +3 -11
  89. package/dist/schemas/v3.1/strict/security-scheme.d.ts.map +1 -1
  90. package/dist/schemas/v3.1/strict/security-scheme.js +0 -7
  91. package/dist/schemas/v3.1/strict/security-scheme.js.map +2 -2
  92. package/dist/schemas/workspace.d.ts +245 -1043
  93. package/dist/schemas/workspace.d.ts.map +1 -1
  94. package/dist/workspace-plugin.d.ts +8 -0
  95. package/dist/workspace-plugin.d.ts.map +1 -1
  96. package/package.json +26 -6
  97. package/dist/schemas/extensions/operation/x-scalar-history.d.ts +0 -217
  98. package/dist/schemas/extensions/operation/x-scalar-history.d.ts.map +0 -1
  99. package/dist/schemas/extensions/security/x-scalar-selected-security.d.ts +0 -17
  100. package/dist/schemas/extensions/security/x-scalar-selected-security.d.ts.map +0 -1
  101. package/dist/schemas/extensions/security/x-scalar-selected-security.js +0 -14
  102. package/dist/schemas/extensions/security/x-scalar-selected-security.js.map +0 -7
@@ -0,0 +1,89 @@
1
+ import { preventPollution } from "@scalar/helpers/object/prevent-pollution";
2
+ import { reactive } from "vue";
3
+ import {
4
+ DocumentAuthSchema,
5
+ SecretsAuthUnionSchema
6
+ } from "../../entities/auth/schema.js";
7
+ import { createDetectChangesProxy } from "../../helpers/detect-changes-proxy.js";
8
+ import { safeAssign } from "../../helpers/general.js";
9
+ import { unpackProxyObject } from "../../helpers/unpack-proxy.js";
10
+ import { coerceValue } from "../../schemas/typebox-coerce.js";
11
+ import {
12
+ AuthSchema,
13
+ SecretsAuthSchema
14
+ } from "./schema.js";
15
+ const createAuthStore = ({ hooks } = {}) => {
16
+ const auth = reactive(
17
+ createDetectChangesProxy(
18
+ {},
19
+ {
20
+ hooks: {
21
+ onAfterChange: (path) => {
22
+ if (path.length < 1) {
23
+ return;
24
+ }
25
+ const [documentName] = path;
26
+ if (typeof documentName !== "string") {
27
+ return;
28
+ }
29
+ hooks?.onAuthChange?.(documentName);
30
+ }
31
+ }
32
+ }
33
+ )
34
+ );
35
+ const getAuthSecrets = (documentName, schemeName) => {
36
+ return auth[documentName]?.secrets?.[schemeName];
37
+ };
38
+ const setAuthSecrets = (documentName, schemeName, data) => {
39
+ auth[documentName] ||= { secrets: {}, selected: { document: void 0, path: void 0 } };
40
+ auth[documentName].secrets[schemeName] = coerceValue(SecretsAuthUnionSchema, data);
41
+ };
42
+ const getAuthSelectedSchemas = (payload) => {
43
+ if (payload.type === "document") {
44
+ return auth[payload.documentName]?.selected?.document;
45
+ }
46
+ return auth[payload.documentName]?.selected?.path?.[payload.path]?.[payload.method];
47
+ };
48
+ const setAuthSelectedSchemas = (payload, selectedSchemes) => {
49
+ auth[payload.documentName] ||= {
50
+ secrets: {},
51
+ selected: { document: void 0, path: void 0 }
52
+ };
53
+ const documentAuth = auth[payload.documentName];
54
+ if (payload.type === "document") {
55
+ documentAuth.selected.document = selectedSchemes;
56
+ } else {
57
+ preventPollution(payload.path);
58
+ preventPollution(payload.method);
59
+ documentAuth.selected.path ||= {};
60
+ documentAuth.selected.path[payload.path] ||= {};
61
+ const pathAuth = documentAuth.selected.path[payload.path];
62
+ pathAuth[payload.method] = selectedSchemes;
63
+ }
64
+ };
65
+ const clearDocumentAuth = (documentName) => {
66
+ delete auth[documentName];
67
+ };
68
+ const load = (data) => {
69
+ safeAssign(auth, coerceValue(DocumentAuthSchema, data));
70
+ };
71
+ const exportAuth = () => {
72
+ return unpackProxyObject(auth);
73
+ };
74
+ return {
75
+ getAuthSecrets,
76
+ setAuthSecrets,
77
+ getAuthSelectedSchemas,
78
+ setAuthSelectedSchemas,
79
+ clearDocumentAuth,
80
+ load,
81
+ export: exportAuth
82
+ };
83
+ };
84
+ export {
85
+ AuthSchema,
86
+ SecretsAuthSchema,
87
+ createAuthStore
88
+ };
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/entities/auth/index.ts"],
4
+ "sourcesContent": ["import { preventPollution } from '@scalar/helpers/object/prevent-pollution'\nimport { reactive } from 'vue'\n\nimport {\n type DocumentAuth,\n DocumentAuthSchema,\n type SecretsAuthUnion,\n SecretsAuthUnionSchema,\n type SelectedSecurity,\n} from '@/entities/auth/schema'\nimport { createDetectChangesProxy } from '@/helpers/detect-changes-proxy'\nimport { safeAssign } from '@/helpers/general'\nimport { unpackProxyObject } from '@/helpers/unpack-proxy'\nimport { coerceValue } from '@/schemas/typebox-coerce'\n\nexport type {\n Auth,\n SecretsApiKey,\n SecretsAuth,\n SecretsAuthUnion,\n SecretsHttp,\n SecretsOAuth,\n SecretsOAuthFlows,\n SelectedSecurity,\n} from './schema'\nexport {\n AuthSchema,\n SecretsAuthSchema,\n} from './schema'\n\n/**\n * Interface for the AuthStore used to manage authentication secrets and selection state.\n */\nexport type AuthStore = {\n /**\n * Retrieves the authentication secrets for a given document and security scheme.\n * @param documentName - Name/id of the OpenAPI document.\n * @param schemeName - Name of the security scheme.\n * @returns The authentication secrets, or undefined if not found.\n */\n getAuthSecrets: (documentName: string, schemeName: string) => SecretsAuthUnion | undefined\n\n /**\n * Retrieves the selected schemas for a given document or path.\n * @param payload - The payload to get the selected schemas for.\n * @returns The selected schemas, or undefined if not found.\n */\n getAuthSelectedSchemas: (\n payload:\n | { type: 'document'; documentName: string }\n | { type: 'operation'; documentName: string; path: string; method: string },\n ) => SelectedSecurity | undefined\n\n /**\n * Sets the selected schemas for a given document or path.\n * @param payload - The payload to set the selected schemas for.\n * @param selectedSchemes - The selected schemas to set.\n */\n setAuthSelectedSchemas: (\n payload:\n | { type: 'document'; documentName: string }\n | { type: 'operation'; documentName: string; path: string; method: string },\n selectedSchemes: SelectedSecurity,\n ) => void\n /**\n * Sets the authentication secrets for a given document and security scheme.\n * @param documentName - Name/id of the OpenAPI document.\n * @param schemeName - Name of the security scheme.\n * @param auth - The secret/auth object to set.\n */\n setAuthSecrets: (documentName: string, schemeName: string, auth: SecretsAuthUnion) => void\n\n /**\n * Removes the authentication data for a given document.\n * @param documentName - Name/id of the OpenAPI document.\n */\n clearDocumentAuth: (documentName: string) => void\n\n /**\n * Loads authentication data into the store, replacing existing state.\n * @param data - A DocumentAuth object.\n */\n load: (data: DocumentAuth) => void\n\n /**\n * Exports the current authentication state as a plain (non-proxy) DocumentAuth object.\n * @returns The authentication state.\n */\n export: () => DocumentAuth\n}\n\ntype CreateAuthStoreOptions = {\n hooks?: {\n onAuthChange?: (documentName: string) => void\n }\n}\n\n/**\n * Factory function to create a new AuthStore instance.\n */\nexport const createAuthStore = ({ hooks }: CreateAuthStoreOptions = {}): AuthStore => {\n // Vue reactive object to hold all authentication state\n const auth = reactive<DocumentAuth>(\n createDetectChangesProxy(\n {},\n {\n hooks: {\n onAfterChange: (path) => {\n if (path.length < 1) {\n return\n }\n const [documentName] = path\n if (typeof documentName !== 'string') {\n return\n }\n hooks?.onAuthChange?.(documentName)\n },\n },\n },\n ),\n )\n\n const getAuthSecrets: AuthStore['getAuthSecrets'] = (documentName, schemeName) => {\n return auth[documentName]?.secrets?.[schemeName]\n }\n\n const setAuthSecrets: AuthStore['setAuthSecrets'] = (documentName, schemeName, data) => {\n auth[documentName] ||= { secrets: {}, selected: { document: undefined, path: undefined } }\n auth[documentName].secrets[schemeName] = coerceValue(SecretsAuthUnionSchema, data)\n }\n\n const getAuthSelectedSchemas: AuthStore['getAuthSelectedSchemas'] = (payload) => {\n if (payload.type === 'document') {\n return auth[payload.documentName]?.selected?.document\n }\n return auth[payload.documentName]?.selected?.path?.[payload.path]?.[payload.method]\n }\n\n const setAuthSelectedSchemas: AuthStore['setAuthSelectedSchemas'] = (payload, selectedSchemes) => {\n auth[payload.documentName] ||= {\n secrets: {},\n selected: { document: undefined, path: undefined },\n }\n\n // TypeScript needs a non-null assertion here since we just ensured it exists\n const documentAuth = auth[payload.documentName]!\n\n if (payload.type === 'document') {\n documentAuth.selected.document = selectedSchemes\n } else {\n // Prevent assigning dangerous keys to the path items object\n preventPollution(payload.path)\n preventPollution(payload.method)\n\n documentAuth.selected.path ||= {}\n documentAuth.selected.path[payload.path] ||= {}\n const pathAuth = documentAuth.selected.path[payload.path]!\n pathAuth[payload.method] = selectedSchemes\n }\n }\n\n const clearDocumentAuth: AuthStore['clearDocumentAuth'] = (documentName) => {\n delete auth[documentName]\n }\n\n const load: AuthStore['load'] = (data) => {\n safeAssign(auth, coerceValue(DocumentAuthSchema, data))\n }\n\n const exportAuth: AuthStore['export'] = () => {\n return unpackProxyObject(auth)\n }\n\n return {\n getAuthSecrets,\n setAuthSecrets,\n getAuthSelectedSchemas,\n setAuthSelectedSchemas,\n clearDocumentAuth,\n load,\n export: exportAuth,\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB;AAAA,EAEE;AAAA,EAEA;AAAA,OAEK;AACP,SAAS,gCAAgC;AACzC,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;AAY5B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAwEA,MAAM,kBAAkB,CAAC,EAAE,MAAM,IAA4B,CAAC,MAAiB;AAEpF,QAAM,OAAO;AAAA,IACX;AAAA,MACE,CAAC;AAAA,MACD;AAAA,QACE,OAAO;AAAA,UACL,eAAe,CAAC,SAAS;AACvB,gBAAI,KAAK,SAAS,GAAG;AACnB;AAAA,YACF;AACA,kBAAM,CAAC,YAAY,IAAI;AACvB,gBAAI,OAAO,iBAAiB,UAAU;AACpC;AAAA,YACF;AACA,mBAAO,eAAe,YAAY;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAA8C,CAAC,cAAc,eAAe;AAChF,WAAO,KAAK,YAAY,GAAG,UAAU,UAAU;AAAA,EACjD;AAEA,QAAM,iBAA8C,CAAC,cAAc,YAAY,SAAS;AACtF,SAAK,YAAY,MAAM,EAAE,SAAS,CAAC,GAAG,UAAU,EAAE,UAAU,QAAW,MAAM,OAAU,EAAE;AACzF,SAAK,YAAY,EAAE,QAAQ,UAAU,IAAI,YAAY,wBAAwB,IAAI;AAAA,EACnF;AAEA,QAAM,yBAA8D,CAAC,YAAY;AAC/E,QAAI,QAAQ,SAAS,YAAY;AAC/B,aAAO,KAAK,QAAQ,YAAY,GAAG,UAAU;AAAA,IAC/C;AACA,WAAO,KAAK,QAAQ,YAAY,GAAG,UAAU,OAAO,QAAQ,IAAI,IAAI,QAAQ,MAAM;AAAA,EACpF;AAEA,QAAM,yBAA8D,CAAC,SAAS,oBAAoB;AAChG,SAAK,QAAQ,YAAY,MAAM;AAAA,MAC7B,SAAS,CAAC;AAAA,MACV,UAAU,EAAE,UAAU,QAAW,MAAM,OAAU;AAAA,IACnD;AAGA,UAAM,eAAe,KAAK,QAAQ,YAAY;AAE9C,QAAI,QAAQ,SAAS,YAAY;AAC/B,mBAAa,SAAS,WAAW;AAAA,IACnC,OAAO;AAEL,uBAAiB,QAAQ,IAAI;AAC7B,uBAAiB,QAAQ,MAAM;AAE/B,mBAAa,SAAS,SAAS,CAAC;AAChC,mBAAa,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC;AAC9C,YAAM,WAAW,aAAa,SAAS,KAAK,QAAQ,IAAI;AACxD,eAAS,QAAQ,MAAM,IAAI;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,oBAAoD,CAAC,iBAAiB;AAC1E,WAAO,KAAK,YAAY;AAAA,EAC1B;AAEA,QAAM,OAA0B,CAAC,SAAS;AACxC,eAAW,MAAM,YAAY,oBAAoB,IAAI,CAAC;AAAA,EACxD;AAEA,QAAM,aAAkC,MAAM;AAC5C,WAAO,kBAAkB,IAAI;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV;AACF;",
6
+ "names": []
7
+ }