@asyncapi/react-component 1.0.0-next.48 → 1.0.0-next.49

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 (127) hide show
  1. package/browser/index.js +32 -27
  2. package/browser/index.js.LICENSE.txt +88 -0
  3. package/browser/standalone/index.js +32 -51
  4. package/browser/standalone/index.js.LICENSE.txt +112 -0
  5. package/browser/standalone/without-parser.js +14 -41
  6. package/browser/standalone/without-parser.js.LICENSE.txt +110 -0
  7. package/browser/without-parser.js +14 -12
  8. package/browser/without-parser.js.LICENSE.txt +86 -0
  9. package/lib/cjs/components/Schema.js +40 -57
  10. package/lib/cjs/components/Schema.js.map +1 -1
  11. package/lib/cjs/components/Tag.js.map +1 -1
  12. package/lib/cjs/components/Tags.js.map +1 -1
  13. package/lib/cjs/containers/AsyncApi/AsyncApi.js.map +1 -1
  14. package/lib/cjs/containers/AsyncApi/Layout.js.map +1 -1
  15. package/lib/cjs/containers/AsyncApi/Standalone.js.map +1 -1
  16. package/lib/cjs/containers/Info/Info.js +6 -6
  17. package/lib/cjs/containers/Info/Info.js.map +1 -1
  18. package/lib/cjs/containers/Messages/Message.js +3 -3
  19. package/lib/cjs/containers/Messages/Message.js.map +1 -1
  20. package/lib/cjs/containers/Messages/MessageExample.js.map +1 -1
  21. package/lib/cjs/containers/Messages/Messages.js +1 -1
  22. package/lib/cjs/containers/Messages/Messages.js.map +1 -1
  23. package/lib/cjs/containers/Operations/Operation.js +9 -7
  24. package/lib/cjs/containers/Operations/Operation.js.map +1 -1
  25. package/lib/cjs/containers/Operations/Operations.js +10 -10
  26. package/lib/cjs/containers/Operations/Operations.js.map +1 -1
  27. package/lib/cjs/containers/Schemas/Schema.js.map +1 -1
  28. package/lib/cjs/containers/Schemas/Schemas.js +1 -1
  29. package/lib/cjs/containers/Schemas/Schemas.js.map +1 -1
  30. package/lib/cjs/containers/Servers/Security.js +44 -32
  31. package/lib/cjs/containers/Servers/Security.js.map +1 -1
  32. package/lib/cjs/containers/Servers/Server.js +2 -2
  33. package/lib/cjs/containers/Servers/Server.js.map +1 -1
  34. package/lib/cjs/containers/Sidebar/Sidebar.js +42 -31
  35. package/lib/cjs/containers/Sidebar/Sidebar.js.map +1 -1
  36. package/lib/cjs/contexts/useSpec.js.map +1 -1
  37. package/lib/cjs/helpers/message.js +16 -14
  38. package/lib/cjs/helpers/message.js.map +1 -1
  39. package/lib/cjs/helpers/parser.js +14 -17
  40. package/lib/cjs/helpers/parser.js.map +1 -1
  41. package/lib/cjs/helpers/schema.js +18 -24
  42. package/lib/cjs/helpers/schema.js.map +1 -1
  43. package/lib/cjs/helpers/server.js.map +1 -1
  44. package/lib/cjs/helpers/specification.js +21 -26
  45. package/lib/cjs/helpers/specification.js.map +1 -1
  46. package/lib/cjs/types.js.map +1 -1
  47. package/lib/esm/components/Schema.js +40 -57
  48. package/lib/esm/components/Schema.js.map +1 -1
  49. package/lib/esm/components/Tag.js.map +1 -1
  50. package/lib/esm/components/Tags.js.map +1 -1
  51. package/lib/esm/containers/AsyncApi/AsyncApi.js.map +1 -1
  52. package/lib/esm/containers/AsyncApi/Layout.js.map +1 -1
  53. package/lib/esm/containers/AsyncApi/Standalone.js.map +1 -1
  54. package/lib/esm/containers/Info/Info.js +6 -6
  55. package/lib/esm/containers/Info/Info.js.map +1 -1
  56. package/lib/esm/containers/Messages/Message.js +3 -3
  57. package/lib/esm/containers/Messages/Message.js.map +1 -1
  58. package/lib/esm/containers/Messages/MessageExample.js.map +1 -1
  59. package/lib/esm/containers/Messages/Messages.js +1 -1
  60. package/lib/esm/containers/Messages/Messages.js.map +1 -1
  61. package/lib/esm/containers/Operations/Operation.js +9 -7
  62. package/lib/esm/containers/Operations/Operation.js.map +1 -1
  63. package/lib/esm/containers/Operations/Operations.js +10 -10
  64. package/lib/esm/containers/Operations/Operations.js.map +1 -1
  65. package/lib/esm/containers/Schemas/Schema.js.map +1 -1
  66. package/lib/esm/containers/Schemas/Schemas.js +1 -1
  67. package/lib/esm/containers/Schemas/Schemas.js.map +1 -1
  68. package/lib/esm/containers/Servers/Security.js +44 -32
  69. package/lib/esm/containers/Servers/Security.js.map +1 -1
  70. package/lib/esm/containers/Servers/Server.js +2 -2
  71. package/lib/esm/containers/Servers/Server.js.map +1 -1
  72. package/lib/esm/containers/Sidebar/Sidebar.js +42 -31
  73. package/lib/esm/containers/Sidebar/Sidebar.js.map +1 -1
  74. package/lib/esm/contexts/useSpec.js.map +1 -1
  75. package/lib/esm/helpers/message.js +16 -14
  76. package/lib/esm/helpers/message.js.map +1 -1
  77. package/lib/esm/helpers/parser.js +15 -15
  78. package/lib/esm/helpers/parser.js.map +1 -1
  79. package/lib/esm/helpers/schema.js +14 -17
  80. package/lib/esm/helpers/schema.js.map +1 -1
  81. package/lib/esm/helpers/server.js.map +1 -1
  82. package/lib/esm/helpers/specification.js +21 -23
  83. package/lib/esm/helpers/specification.js.map +1 -1
  84. package/lib/esm/types.js.map +1 -1
  85. package/lib/types/components/Schema.d.ts +2 -2
  86. package/lib/types/components/Schema.d.ts.map +1 -1
  87. package/lib/types/components/Tag.d.ts +2 -2
  88. package/lib/types/components/Tag.d.ts.map +1 -1
  89. package/lib/types/components/Tags.d.ts +2 -2
  90. package/lib/types/components/Tags.d.ts.map +1 -1
  91. package/lib/types/containers/AsyncApi/AsyncApi.d.ts +2 -2
  92. package/lib/types/containers/AsyncApi/AsyncApi.d.ts.map +1 -1
  93. package/lib/types/containers/AsyncApi/Layout.d.ts +2 -2
  94. package/lib/types/containers/AsyncApi/Layout.d.ts.map +1 -1
  95. package/lib/types/containers/AsyncApi/Standalone.d.ts +2 -2
  96. package/lib/types/containers/AsyncApi/Standalone.d.ts.map +1 -1
  97. package/lib/types/containers/Info/Info.d.ts.map +1 -1
  98. package/lib/types/containers/Messages/Message.d.ts +2 -2
  99. package/lib/types/containers/Messages/Message.d.ts.map +1 -1
  100. package/lib/types/containers/Messages/MessageExample.d.ts +3 -3
  101. package/lib/types/containers/Messages/MessageExample.d.ts.map +1 -1
  102. package/lib/types/containers/Messages/Messages.d.ts.map +1 -1
  103. package/lib/types/containers/Operations/Operation.d.ts +3 -3
  104. package/lib/types/containers/Operations/Operation.d.ts.map +1 -1
  105. package/lib/types/containers/Operations/Operations.d.ts.map +1 -1
  106. package/lib/types/containers/Schemas/Schema.d.ts +2 -2
  107. package/lib/types/containers/Schemas/Schema.d.ts.map +1 -1
  108. package/lib/types/containers/Schemas/Schemas.d.ts.map +1 -1
  109. package/lib/types/containers/Servers/Security.d.ts +2 -2
  110. package/lib/types/containers/Servers/Security.d.ts.map +1 -1
  111. package/lib/types/containers/Servers/Server.d.ts +2 -2
  112. package/lib/types/containers/Servers/Server.d.ts.map +1 -1
  113. package/lib/types/containers/Sidebar/Sidebar.d.ts.map +1 -1
  114. package/lib/types/contexts/useSpec.d.ts +3 -3
  115. package/lib/types/contexts/useSpec.d.ts.map +1 -1
  116. package/lib/types/helpers/message.d.ts +3 -3
  117. package/lib/types/helpers/message.d.ts.map +1 -1
  118. package/lib/types/helpers/parser.d.ts.map +1 -1
  119. package/lib/types/helpers/schema.d.ts +8 -9
  120. package/lib/types/helpers/schema.d.ts.map +1 -1
  121. package/lib/types/helpers/server.d.ts +2 -2
  122. package/lib/types/helpers/server.d.ts.map +1 -1
  123. package/lib/types/helpers/specification.d.ts +5 -5
  124. package/lib/types/helpers/specification.d.ts.map +1 -1
  125. package/lib/types/types.d.ts +4 -4
  126. package/lib/types/types.d.ts.map +1 -1
  127. package/package.json +12 -11
@@ -26,17 +26,18 @@ var MessageHelpers = (function () {
26
26
  return schema;
27
27
  };
28
28
  MessageHelpers.getPayloadExamples = function (msg) {
29
- var examples = msg.examples();
30
- if (Array.isArray(examples) && examples.some(function (e) { return e.payload; })) {
29
+ var _a;
30
+ var examples = msg.examples().all();
31
+ if (examples.some(function (e) { return e.hasPayload(); })) {
31
32
  var messageExamples = examples
32
33
  .flatMap(function (e) {
33
- if (!e.payload) {
34
+ if (!e.payload()) {
34
35
  return;
35
36
  }
36
37
  return {
37
- name: e.name,
38
- summary: e.summary,
39
- example: e.payload,
38
+ name: e.name(),
39
+ summary: e.summary(),
40
+ example: e.payload(),
40
41
  };
41
42
  })
42
43
  .filter(Boolean);
@@ -46,22 +47,23 @@ var MessageHelpers = (function () {
46
47
  }
47
48
  var payload = msg.payload();
48
49
  if (payload && payload.examples()) {
49
- return payload.examples().map(function (example) { return ({ example: example }); });
50
+ return (_a = payload.examples()) === null || _a === void 0 ? void 0 : _a.map(function (example) { return ({ example: example }); });
50
51
  }
51
52
  return;
52
53
  };
53
54
  MessageHelpers.getHeadersExamples = function (msg) {
54
- var examples = msg.examples();
55
- if (Array.isArray(examples) && examples.some(function (e) { return e.headers; })) {
55
+ var _a;
56
+ var examples = msg.examples().all();
57
+ if (examples.some(function (e) { return e.hasHeaders(); })) {
56
58
  var messageExamples = examples
57
59
  .flatMap(function (e) {
58
- if (!e.headers) {
60
+ if (!e.hasHeaders()) {
59
61
  return;
60
62
  }
61
63
  return {
62
- name: e.name,
63
- summary: e.summary,
64
- example: e.headers,
64
+ name: e.name(),
65
+ summary: e.summary(),
66
+ example: e.headers(),
65
67
  };
66
68
  })
67
69
  .filter(Boolean);
@@ -71,7 +73,7 @@ var MessageHelpers = (function () {
71
73
  }
72
74
  var headers = msg.headers();
73
75
  if (headers && headers.examples()) {
74
- return headers.examples().map(function (example) { return ({ example: example }); });
76
+ return (_a = headers.examples()) === null || _a === void 0 ? void 0 : _a.map(function (example) { return ({ example: example }); });
75
77
  }
76
78
  return;
77
79
  };
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/helpers/message.ts"],"names":[],"mappings":"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","sourcesContent":["import { Message } from '@asyncapi/parser';\n// @ts-ignore\nimport { sample } from 'openapi-sampler';\n\nimport { MessageExample } from '../types';\n\nexport class MessageHelpers {\n static generateExample(schema: any, options: any = {}) {\n try {\n return this.sanitizeExample(sample(schema, options)) || '';\n } catch (e) {\n return '';\n }\n }\n\n static sanitizeExample(schema: any): any {\n if (typeof schema === 'object' && schema && !Array.isArray(schema)) {\n return Object.entries(schema).reduce((obj, [propertyName, property]) => {\n if (\n !propertyName.startsWith('x-parser-') &&\n !propertyName.startsWith('x-schema-private-')\n ) {\n obj[propertyName] = this.sanitizeExample(property);\n }\n return obj;\n }, {});\n }\n return schema;\n }\n\n static getPayloadExamples(msg: Message): MessageExample[] | undefined {\n const examples = msg.examples();\n if (Array.isArray(examples) && examples.some(e => e.payload)) {\n const messageExamples = examples\n .flatMap(e => {\n if (!e.payload) {\n return;\n }\n return {\n name: e.name,\n summary: e.summary,\n example: e.payload,\n };\n })\n .filter(Boolean) as MessageExample[];\n\n if (messageExamples.length > 0) {\n return messageExamples;\n }\n }\n\n const payload = msg.payload();\n if (payload && payload.examples()) {\n return payload.examples().map(example => ({ example }));\n }\n\n return;\n }\n\n static getHeadersExamples(msg: Message): MessageExample[] | undefined {\n const examples = msg.examples();\n if (Array.isArray(examples) && examples.some(e => e.headers)) {\n const messageExamples = examples\n .flatMap(e => {\n if (!e.headers) {\n return;\n }\n return {\n name: e.name,\n summary: e.summary,\n example: e.headers,\n };\n })\n .filter(Boolean) as MessageExample[];\n\n if (messageExamples.length > 0) {\n return messageExamples;\n }\n }\n\n const headers = msg.headers();\n if (headers && headers.examples()) {\n return headers.examples().map(example => ({ example }));\n }\n\n return;\n }\n}\n"]}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/helpers/message.ts"],"names":[],"mappings":"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","sourcesContent":["import { MessageInterface } from '@asyncapi/parser';\n// @ts-ignore\nimport { sample } from 'openapi-sampler';\n\nimport { MessageExample } from '../types';\n\nexport class MessageHelpers {\n static generateExample(schema: any, options: any = {}) {\n try {\n return this.sanitizeExample(sample(schema, options)) || '';\n } catch (e) {\n return '';\n }\n }\n\n static sanitizeExample(schema: any): any {\n if (typeof schema === 'object' && schema && !Array.isArray(schema)) {\n return Object.entries(schema).reduce((obj, [propertyName, property]) => {\n if (\n !propertyName.startsWith('x-parser-') &&\n !propertyName.startsWith('x-schema-private-')\n ) {\n obj[propertyName] = this.sanitizeExample(property);\n }\n return obj;\n }, {});\n }\n return schema;\n }\n\n static getPayloadExamples(\n msg: MessageInterface,\n ): MessageExample[] | undefined {\n const examples = msg.examples().all();\n\n if (examples.some(e => e.hasPayload())) {\n const messageExamples = examples\n .flatMap(e => {\n if (!e.payload()) {\n return;\n }\n return {\n name: e.name(),\n summary: e.summary(),\n example: e.payload(),\n };\n })\n .filter(Boolean) as MessageExample[];\n\n if (messageExamples.length > 0) {\n return messageExamples;\n }\n }\n\n const payload = msg.payload();\n if (payload && payload.examples()) {\n return payload.examples()?.map(example => ({ example }));\n }\n\n return;\n }\n\n static getHeadersExamples(\n msg: MessageInterface,\n ): MessageExample[] | undefined {\n const examples = msg.examples().all();\n if (examples.some(e => e.hasHeaders())) {\n const messageExamples = examples\n .flatMap(e => {\n if (!e.hasHeaders()) {\n return;\n }\n return {\n name: e.name(),\n summary: e.summary(),\n example: e.headers(),\n };\n })\n .filter(Boolean) as MessageExample[];\n\n if (messageExamples.length > 0) {\n return messageExamples;\n }\n }\n\n const headers = msg.headers();\n if (headers && headers.examples()) {\n return headers.examples()?.map(example => ({ example }));\n }\n\n return;\n }\n}\n"]}
@@ -34,28 +34,27 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
34
34
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
35
  }
36
36
  };
37
- import { parse, parseFromUrl, registerSchemaParser } from '@asyncapi/parser';
38
- import openapiSchemaParser from '@asyncapi/openapi-schema-parser';
39
- import avroSchemaParser from '@asyncapi/avro-schema-parser';
40
- import protoSchemaParser from '@asyncapi/protobuf-schema-parser';
37
+ import { Parser as AsyncapiParser, fromURL } from '@asyncapi/parser';
38
+ import { OpenAPISchemaParser } from '@asyncapi/openapi-schema-parser';
39
+ import { AvroSchemaParser } from '@asyncapi/avro-schema-parser';
41
40
  import { VALIDATION_ERRORS_TYPE } from '../constants';
42
- registerSchemaParser(openapiSchemaParser);
43
- registerSchemaParser(avroSchemaParser);
44
- registerSchemaParser(protoSchemaParser);
41
+ var asyncapiParser = new AsyncapiParser();
42
+ asyncapiParser.registerSchemaParser(OpenAPISchemaParser());
43
+ asyncapiParser.registerSchemaParser(AvroSchemaParser());
45
44
  var Parser = (function () {
46
45
  function Parser() {
47
46
  }
48
47
  Parser.parse = function (content, parserOptions) {
49
48
  return __awaiter(this, void 0, void 0, function () {
50
- var asyncapi, err_1;
49
+ var document_1, err_1;
51
50
  return __generator(this, function (_a) {
52
51
  switch (_a.label) {
53
52
  case 0:
54
53
  _a.trys.push([0, 2, , 3]);
55
- return [4, parse(content, parserOptions)];
54
+ return [4, asyncapiParser.parse(content, parserOptions)];
56
55
  case 1:
57
- asyncapi = _a.sent();
58
- return [2, { asyncapi: asyncapi }];
56
+ document_1 = (_a.sent()).document;
57
+ return [2, { asyncapi: document_1 }];
59
58
  case 2:
60
59
  err_1 = _a.sent();
61
60
  return [2, this.handleError(err_1)];
@@ -66,15 +65,16 @@ var Parser = (function () {
66
65
  };
67
66
  Parser.parseFromUrl = function (arg, parserOptions) {
68
67
  return __awaiter(this, void 0, void 0, function () {
69
- var asyncapi, err_2;
68
+ var fromResult, document_2, err_2;
70
69
  return __generator(this, function (_a) {
71
70
  switch (_a.label) {
72
71
  case 0:
73
72
  _a.trys.push([0, 2, , 3]);
74
- return [4, parseFromUrl(arg.url, arg.requestOptions, parserOptions)];
73
+ fromResult = fromURL(asyncapiParser, arg.url, arg.requestOptions);
74
+ return [4, fromResult.parse(parserOptions)];
75
75
  case 1:
76
- asyncapi = _a.sent();
77
- return [2, { asyncapi: asyncapi }];
76
+ document_2 = (_a.sent()).document;
77
+ return [2, { asyncapi: document_2 }];
78
78
  case 2:
79
79
  err_2 = _a.sent();
80
80
  return [2, this.handleError(err_2)];
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/helpers/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,mBAAmB,MAAM,iCAAiC,CAAC;AAElE,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAE5D,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AAIjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;AAC1C,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACvC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAExC;IAAA;IAqCA,CAAC;IApCc,YAAK,GAAlB,UACE,OAAqB,EACrB,aAAmB;;;;;;;wBAGA,WAAM,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,EAAA;;wBAA9C,QAAQ,GAAG,SAAmC;wBACpD,WAAO,EAAE,QAAQ,UAAA,EAAE,EAAC;;;wBAEpB,WAAO,IAAI,CAAC,WAAW,CAAC,KAAkB,CAAC,EAAC;;;;;KAE/C;IAEY,mBAAY,GAAzB,UACE,GAA4B,EAC5B,aAAmB;;;;;;;wBAGA,WAAM,YAAY,CACjC,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,cAAc,EAClB,aAAa,CACd,EAAA;;wBAJK,QAAQ,GAAG,SAIhB;wBACD,WAAO,EAAE,QAAQ,UAAA,EAAE,EAAC;;;wBAEpB,WAAO,IAAI,CAAC,WAAW,CAAC,KAAkB,CAAC,EAAC;;;;;KAE/C;IAEc,kBAAW,GAAG,UAAC,GAAgB;QAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE;YACvC,OAAO;gBACL,KAAK,EAAE,GAAG;aACX,CAAC;SACH;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxB,CAAC,CAAC;IACJ,aAAC;CAAA,AArCD,IAqCC;SArCY,MAAM","sourcesContent":["import { parse, parseFromUrl, registerSchemaParser } from '@asyncapi/parser';\n// @ts-ignore\nimport openapiSchemaParser from '@asyncapi/openapi-schema-parser';\n// @ts-ignore\nimport avroSchemaParser from '@asyncapi/avro-schema-parser';\n// @ts-ignore\nimport protoSchemaParser from '@asyncapi/protobuf-schema-parser';\n\nimport { ErrorObject, ParserReturn, FetchingSchemaInterface } from '../types';\n\nimport { VALIDATION_ERRORS_TYPE } from '../constants';\n\nregisterSchemaParser(openapiSchemaParser);\nregisterSchemaParser(avroSchemaParser);\nregisterSchemaParser(protoSchemaParser);\n\nexport class Parser {\n static async parse(\n content: string | any,\n parserOptions?: any,\n ): Promise<ParserReturn> {\n try {\n const asyncapi = await parse(content, parserOptions);\n return { asyncapi };\n } catch (err) {\n return this.handleError(err as ErrorObject);\n }\n }\n\n static async parseFromUrl(\n arg: FetchingSchemaInterface,\n parserOptions?: any,\n ): Promise<ParserReturn> {\n try {\n const asyncapi = await parseFromUrl(\n arg.url,\n arg.requestOptions,\n parserOptions,\n );\n return { asyncapi };\n } catch (err) {\n return this.handleError(err as ErrorObject);\n }\n }\n\n private static handleError = (err: ErrorObject): ParserReturn => {\n if (err.type === VALIDATION_ERRORS_TYPE) {\n return {\n error: err,\n };\n }\n return { error: err };\n };\n}\n"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/helpers/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,IAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC5C,cAAc,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC3D,cAAc,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAIxD;IAAA;IAkCA,CAAC;IAjCc,YAAK,GAAlB,UACE,OAAqB,EACrB,aAAmB;;;;;;;wBAGI,WAAM,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,EAAA;;wBAA/D,aAAa,CAAA,SAAkD,CAAA,SAAvD;wBAChB,WAAO,EAAE,QAAQ,EAAE,UAAQ,EAAE,EAAC;;;wBAE9B,WAAO,IAAI,CAAC,WAAW,CAAC,KAAkB,CAAC,EAAC;;;;;KAE/C;IAEY,mBAAY,GAAzB,UACE,GAA4B,EAC5B,aAAmB;;;;;;;wBAGX,UAAU,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;wBACnD,WAAM,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAAA;;wBAAlD,aAAa,CAAA,SAAqC,CAAA,SAA1C;wBAChB,WAAO,EAAE,QAAQ,EAAE,UAAQ,EAAE,EAAC;;;wBAE9B,WAAO,IAAI,CAAC,WAAW,CAAC,KAAkB,CAAC,EAAC;;;;;KAE/C;IAEc,kBAAW,GAAG,UAAC,GAAgB;QAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE;YACvC,OAAO;gBACL,KAAK,EAAE,GAAG;aACX,CAAC;SACH;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxB,CAAC,CAAC;IACJ,aAAC;CAAA,AAlCD,IAkCC;SAlCY,MAAM","sourcesContent":["import { Parser as AsyncapiParser, fromURL } from '@asyncapi/parser';\nimport { OpenAPISchemaParser } from '@asyncapi/openapi-schema-parser';\nimport { AvroSchemaParser } from '@asyncapi/avro-schema-parser';\n// @ts-ignore\nimport protoSchemaParser from '@asyncapi/protobuf-schema-parser';\n\nimport { ErrorObject, ParserReturn, FetchingSchemaInterface } from '../types';\n\nimport { VALIDATION_ERRORS_TYPE } from '../constants';\n\nconst asyncapiParser = new AsyncapiParser();\nasyncapiParser.registerSchemaParser(OpenAPISchemaParser());\nasyncapiParser.registerSchemaParser(AvroSchemaParser());\n// Waiting for schema parser to be upgraded\n// asyncapiParser.registerSchemaParser(protoSchemaParser);\n\nexport class Parser {\n static async parse(\n content: string | any,\n parserOptions?: any,\n ): Promise<ParserReturn> {\n try {\n const { document } = await asyncapiParser.parse(content, parserOptions);\n return { asyncapi: document };\n } catch (err) {\n return this.handleError(err as ErrorObject);\n }\n }\n\n static async parseFromUrl(\n arg: FetchingSchemaInterface,\n parserOptions?: any,\n ): Promise<ParserReturn> {\n try {\n const fromResult = fromURL(asyncapiParser, arg.url, arg.requestOptions);\n const { document } = await fromResult.parse(parserOptions);\n return { asyncapi: document };\n } catch (err) {\n return this.handleError(err as ErrorObject);\n }\n }\n\n private static handleError = (err: ErrorObject): ParserReturn => {\n if (err.type === VALIDATION_ERRORS_TYPE) {\n return {\n error: err,\n };\n }\n return { error: err };\n };\n}\n"]}
@@ -1,4 +1,4 @@
1
- import SchemaClass from '@asyncapi/parser/lib/models/schema';
1
+ import { SchemaV2 as SchemaClass, } from '@asyncapi/parser';
2
2
  export var SchemaCustomTypes;
3
3
  (function (SchemaCustomTypes) {
4
4
  SchemaCustomTypes["ANY"] = "any";
@@ -127,7 +127,7 @@ var SchemaHelpers = (function () {
127
127
  if (schema.oneOf() ||
128
128
  schema.anyOf() ||
129
129
  schema.allOf() ||
130
- Object.keys(schema.properties()).length ||
130
+ Object.keys(schema.properties() || {}).length > 0 ||
131
131
  schema.items() ||
132
132
  schema.not() ||
133
133
  schema.if() ||
@@ -156,7 +156,6 @@ var SchemaHelpers = (function () {
156
156
  }, {}),
157
157
  required: Object.keys(urlVariables)
158
158
  },
159
- _a[this.extRenderType] = false,
160
159
  _a[this.extRenderAdditionalInfo] = false,
161
160
  _a);
162
161
  return new SchemaClass(json);
@@ -180,7 +179,6 @@ var SchemaHelpers = (function () {
180
179
  }, {}),
181
180
  required: Object.keys(parameters)
182
181
  },
183
- _a[this.extRenderType] = false,
184
182
  _a[this.extRenderAdditionalInfo] = false,
185
183
  _a);
186
184
  return new SchemaClass(json);
@@ -193,14 +191,17 @@ var SchemaHelpers = (function () {
193
191
  if (!value || typeof value.extensions !== 'function') {
194
192
  return;
195
193
  }
196
- return Object.entries(value.extensions() || {}).reduce(function (obj, _a) {
197
- var extName = _a[0], ext = _a[1];
198
- if (!extName.startsWith('x-parser-') &&
199
- !extName.startsWith('x-schema-private-')) {
200
- obj[extName] = ext;
194
+ var extensions = value.extensions();
195
+ var filteredExtensions = {};
196
+ for (var _i = 0, _a = Object.values(extensions.all()); _i < _a.length; _i++) {
197
+ var ext = _a[_i];
198
+ var extType = ext;
199
+ if (!extType.id().startsWith('x-parser-') &&
200
+ !extType.id().startsWith('x-schema-private-')) {
201
+ filteredExtensions[extType.id()] = extType.value();
201
202
  }
202
- return obj;
203
- }, {});
203
+ }
204
+ return filteredExtensions;
204
205
  };
205
206
  SchemaHelpers.getDependentRequired = function (propertyName, schema) {
206
207
  var dependentRequired = [];
@@ -240,7 +241,6 @@ var SchemaHelpers = (function () {
240
241
  return obj;
241
242
  }, {})
242
243
  },
243
- _a[this.extRenderType] = false,
244
244
  _a[this.extRenderAdditionalInfo] = false,
245
245
  _a);
246
246
  return new SchemaClass(json);
@@ -265,8 +265,8 @@ var SchemaHelpers = (function () {
265
265
  var _this = this;
266
266
  var types = items.map(function (item) { return _this.toSchemaType(item); }).join(', ');
267
267
  var additionalItems = schema.additionalItems();
268
- if (additionalItems === undefined || additionalItems.json()) {
269
- var additionalType = additionalItems === undefined || additionalItems.json() === true
268
+ if (additionalItems !== undefined && additionalItems !== false) {
269
+ var additionalType = additionalItems === true
270
270
  ? SchemaCustomTypes.ANY
271
271
  : this.toSchemaType(additionalItems);
272
272
  return "tuple<".concat(types ||
@@ -403,7 +403,6 @@ var SchemaHelpers = (function () {
403
403
  type: 'array',
404
404
  items: value.map(function (v) { return _this.jsonFieldToSchema(v); })
405
405
  },
406
- _c[this.extRenderType] = false,
407
406
  _c[this.extRenderAdditionalInfo] = false,
408
407
  _c;
409
408
  }
@@ -415,7 +414,6 @@ var SchemaHelpers = (function () {
415
414
  return obj;
416
415
  }, {})
417
416
  },
418
- _d[this.extRenderType] = false,
419
417
  _d[this.extRenderAdditionalInfo] = false,
420
418
  _d;
421
419
  };
@@ -429,7 +427,6 @@ var SchemaHelpers = (function () {
429
427
  }
430
428
  return false;
431
429
  };
432
- SchemaHelpers.extRenderType = 'x-schema-private-render-type';
433
430
  SchemaHelpers.extRenderAdditionalInfo = 'x-schema-private-render-additional-info';
434
431
  SchemaHelpers.extRawValue = 'x-schema-private-raw-value';
435
432
  SchemaHelpers.extParameterLocation = 'x-schema-private-parameter-location';
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/helpers/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChannelParameter, ServerVariable, Schema } from '@asyncapi/parser';\n// @ts-ignore\nimport SchemaClass from '@asyncapi/parser/lib/models/schema';\n\nexport enum SchemaCustomTypes {\n // for `true` and `{}` schemas\n ANY = 'any',\n // for schemas without `type` keyword\n RESTRICTED_ANY = 'restricted any',\n // for `false` and `{ not: {}, ... }` schemas\n NEVER = 'never',\n // for types that we cannot infer\n UNKNOWN = 'unknown',\n}\n\nconst jsonSchemaTypes = [\n 'string',\n 'number',\n 'integer',\n 'boolean',\n 'array',\n 'object',\n 'null',\n];\nconst jsonSchemaKeywordTypes: Record<string, string> = {\n // string\n maxLength: 'string',\n minLength: 'string',\n pattern: 'string',\n contentMediaType: 'string',\n contentEncoding: 'string',\n // number\n multipleOf: 'number',\n maximum: 'number',\n exclusiveMaximum: 'number',\n minimum: 'number',\n exclusiveMinimum: 'number',\n // array\n items: 'array',\n maxItems: 'array',\n minItems: 'array',\n uniqueItems: 'array',\n contains: 'array',\n additionalItems: 'array',\n // object\n maxProperties: 'object',\n minProperties: 'object',\n required: 'object',\n properties: 'object',\n patternProperties: 'object',\n propertyNames: 'object',\n dependencies: 'object',\n additionalProperties: 'object',\n};\nconst jsonSchemaKeywords = Object.keys(jsonSchemaKeywordTypes);\n\nexport class SchemaHelpers {\n static extRenderType = 'x-schema-private-render-type';\n static extRenderAdditionalInfo = 'x-schema-private-render-additional-info';\n static extRawValue = 'x-schema-private-raw-value';\n static extParameterLocation = 'x-schema-private-parameter-location';\n\n static toSchemaType(schema: Schema): string {\n if (!schema || typeof schema.json !== 'function') {\n return SchemaCustomTypes.UNKNOWN;\n }\n if (schema.isBooleanSchema()) {\n if (schema.json() === true) {\n return SchemaCustomTypes.ANY;\n } else {\n return SchemaCustomTypes.NEVER;\n }\n }\n // handle case with `{}` schemas\n if (Object.keys(schema.json()).length === 0) {\n return SchemaCustomTypes.ANY;\n }\n // handle case with `{ not: {}, ... }` schemas\n const not = schema.not();\n if (not && this.inferType(not) === SchemaCustomTypes.ANY) {\n return SchemaCustomTypes.NEVER;\n }\n\n let type = this.inferType(schema);\n if (Array.isArray(type)) {\n return type.map(t => this.toType(t, schema)).join(' | ');\n }\n type = this.toType(type, schema);\n const combinedType = this.toCombinedType(schema);\n\n if (type && combinedType) {\n return `${type} ${combinedType}`;\n }\n if (combinedType) {\n return combinedType;\n }\n return type;\n }\n\n static prettifyValue(value: any, strict = true): string {\n const typeOf = typeof value;\n if (typeOf === 'string') {\n return strict ? `\"${value}\"` : value;\n }\n if (typeOf === 'number' || typeOf === 'bigint' || typeOf === 'boolean') {\n return `${value}`;\n }\n if (Array.isArray(value)) {\n return `[${value.toString()}]`;\n }\n return JSON.stringify(value);\n }\n\n static humanizeConstraints(schema: Schema): string[] {\n const constraints: string[] = [];\n\n // related to number/integer\n const numberRange = this.humanizeNumberRangeConstraint(\n schema.minimum(),\n schema.exclusiveMinimum(),\n schema.maximum(),\n schema.exclusiveMaximum(),\n );\n if (numberRange !== undefined) {\n constraints.push(numberRange);\n }\n const multipleOfConstraint = this.humanizeMultipleOfConstraint(\n schema.multipleOf(),\n );\n if (multipleOfConstraint !== undefined) {\n constraints.push(multipleOfConstraint);\n }\n\n // related to string\n const stringRange = this.humanizeRangeConstraint(\n 'characters',\n schema.minLength(),\n schema.maxLength(),\n );\n if (stringRange !== undefined) {\n constraints.push(stringRange);\n }\n\n // related to array\n const hasUniqueItems = schema.uniqueItems();\n const arrayRange = this.humanizeRangeConstraint(\n hasUniqueItems ? 'unique items' : 'items',\n schema.minItems(),\n schema.maxItems(),\n );\n if (arrayRange !== undefined) {\n constraints.push(arrayRange);\n }\n\n // related to object\n const objectRange = this.humanizeRangeConstraint(\n 'properties',\n schema.minProperties(),\n schema.maxProperties(),\n );\n if (objectRange !== undefined) {\n constraints.push(objectRange);\n }\n\n return constraints;\n }\n\n static isExpandable(schema: Schema): boolean {\n let type = this.inferType(schema);\n type = Array.isArray(type) ? type : [type];\n if (type.includes('object') || type.includes('array')) {\n return true;\n }\n\n if (\n schema.oneOf() ||\n schema.anyOf() ||\n schema.allOf() ||\n Object.keys(schema.properties()).length ||\n schema.items() ||\n schema.not() ||\n schema.if() ||\n schema.then() ||\n schema.else()\n ) {\n return true;\n }\n\n const customExtensions = this.getCustomExtensions(schema);\n if (customExtensions && Object.keys(customExtensions).length) {\n return true;\n }\n\n return false;\n }\n\n static serverVariablesToSchema(\n urlVariables?: Record<string, ServerVariable>,\n ): Schema | undefined {\n if (!urlVariables || !Object.keys(urlVariables).length) {\n return undefined;\n }\n\n const json = {\n type: 'object',\n properties: Object.entries(urlVariables).reduce(\n (obj, [variableName, variable]) => {\n obj[variableName] = Object.assign({}, variable.json() || {});\n obj[variableName].type = 'string';\n return obj;\n },\n {},\n ),\n required: Object.keys(urlVariables),\n [this.extRenderType]: false,\n [this.extRenderAdditionalInfo]: false,\n };\n return new SchemaClass(json);\n }\n\n static parametersToSchema(\n parameters?: Record<string, ChannelParameter>,\n ): Schema | undefined {\n if (!parameters || !Object.keys(parameters).length) {\n return undefined;\n }\n\n const json = {\n type: 'object',\n properties: Object.entries(parameters).reduce(\n (obj, [paramaterName, parameter]) => {\n const parameterSchema = parameter.schema();\n obj[paramaterName] = Object.assign(\n {},\n parameterSchema ? parameterSchema.json() : {},\n );\n obj[paramaterName].description =\n parameter.description() || obj[paramaterName].description;\n obj[paramaterName][this.extParameterLocation] = parameter.location();\n return obj;\n },\n {},\n ),\n required: Object.keys(parameters),\n [this.extRenderType]: false,\n [this.extRenderAdditionalInfo]: false,\n };\n return new SchemaClass(json);\n }\n\n static jsonToSchema(value: any): any {\n const json = this.jsonFieldToSchema(value);\n return new SchemaClass(json);\n }\n\n /**\n * Retrieves from given value all custom extensions (value with key started by `x-`).\n * However, it skips those private extensions that begin with `x-parser-` and `x-schema-private-`.\n *\n * @param value\n */\n static getCustomExtensions(value: any) {\n if (!value || typeof value.extensions !== 'function') {\n return;\n }\n return Object.entries(value.extensions() || {}).reduce(\n (obj, [extName, ext]) => {\n if (\n !extName.startsWith('x-parser-') &&\n !extName.startsWith('x-schema-private-')\n ) {\n obj[extName] = ext;\n }\n return obj;\n },\n {},\n );\n }\n\n /**\n * Retrieves from given schema all dependent required requires by given propertyName from `dependencies` object.\n *\n * @param propertyName\n * @param schema\n */\n static getDependentRequired(\n propertyName: string,\n schema: Schema,\n ): string[] | undefined {\n const dependentRequired: string[] = [];\n const dependencies = schema.dependencies();\n if (!dependencies) {\n return;\n }\n\n for (const [prop, array] of Object.entries(dependencies)) {\n if (Array.isArray(array) && array.includes(propertyName)) {\n dependentRequired.push(prop);\n }\n }\n return dependentRequired.length ? dependentRequired : undefined;\n }\n\n /**\n * Retrieves from given schema all dependent schemas from `dependencies` object.\n *\n * @param schema\n */\n static getDependentSchemas(schema: Schema): Schema | undefined {\n const dependencies = schema.dependencies();\n if (!dependencies) {\n return;\n }\n\n const records: Record<string, Schema> = {};\n for (const [prop, propSchema] of Object.entries(dependencies)) {\n if (typeof propSchema === 'object' && !Array.isArray(propSchema)) {\n records[prop] = propSchema;\n }\n }\n if (!Object.keys(records).length) {\n return undefined;\n }\n\n const json = {\n type: 'object',\n properties: Object.entries(records).reduce(\n (obj, [propertyName, propertySchema]) => {\n obj[propertyName] = Object.assign({}, propertySchema.json());\n return obj;\n },\n {},\n ),\n [this.extRenderType]: false,\n [this.extRenderAdditionalInfo]: false,\n };\n return new SchemaClass(json);\n }\n\n private static toType(type: string, schema: Schema): string {\n if (schema.isCircular()) {\n return type;\n }\n if (type === 'array') {\n const items = schema.items();\n if (Array.isArray(items)) {\n return this.toItemsType(items, schema);\n }\n if (!items) {\n return `array<${SchemaCustomTypes.ANY}>`;\n }\n return `array<${this.toSchemaType(items) || SchemaCustomTypes.UNKNOWN}>`;\n }\n return type;\n }\n\n private static toItemsType(items: Schema[], schema: Schema): string {\n const types = items.map(item => this.toSchemaType(item)).join(', ');\n const additionalItems = schema.additionalItems() as any;\n if (additionalItems === undefined || additionalItems.json()) {\n const additionalType =\n additionalItems === undefined || additionalItems.json() === true\n ? SchemaCustomTypes.ANY\n : this.toSchemaType(additionalItems);\n return `tuple<${types ||\n SchemaCustomTypes.UNKNOWN}, ...optional<${additionalType}>>`;\n }\n return `tuple<${types || SchemaCustomTypes.UNKNOWN}>`;\n }\n\n private static toCombinedType(schema: Schema): string | undefined {\n const oneOf = schema.oneOf();\n if (oneOf) {\n return 'oneOf';\n }\n if (schema.anyOf()) {\n return 'anyOf';\n }\n if (schema.allOf()) {\n return 'allOf';\n }\n return;\n }\n\n private static inferType(schema: Schema): string[] | string {\n let types = schema.type();\n\n if (types !== undefined) {\n if (Array.isArray(types)) {\n // if types have `integer` and `number` types, `integer` is unnecessary\n if (types.includes('integer') && types.includes('number')) {\n types = types.filter(t => t !== 'integer');\n }\n return types.length === 1 ? types[0] : types;\n }\n return types;\n }\n\n const constValue = schema.const();\n if (constValue !== undefined) {\n return typeof constValue;\n }\n const enumValue = schema.enum();\n if (Array.isArray(enumValue) && enumValue.length) {\n const inferredType = Array.from(new Set(enumValue.map(e => typeof e)));\n return inferredType.length === 1 ? inferredType[0] : inferredType;\n }\n\n const schemaKeys = Object.keys(schema.json() || {}) || [];\n const hasInferredTypes = jsonSchemaKeywords.some(key =>\n schemaKeys.includes(key),\n );\n if (hasInferredTypes === true) {\n return SchemaCustomTypes.RESTRICTED_ANY;\n }\n if (this.toCombinedType(schema)) {\n return '';\n }\n return SchemaCustomTypes.ANY;\n }\n\n private static humanizeNumberRangeConstraint(\n min: number | undefined,\n exclusiveMin: number | undefined,\n max: number | undefined,\n exclusiveMax: number | undefined,\n ): string | undefined {\n const hasExclusiveMin = exclusiveMin !== undefined;\n const hasMin = min !== undefined || hasExclusiveMin;\n const hasExclusiveMax = exclusiveMax !== undefined;\n const hasMax = max !== undefined || hasExclusiveMax;\n\n let numberRange;\n if (hasMin && hasMax) {\n numberRange = hasExclusiveMin ? '( ' : '[ ';\n numberRange += hasExclusiveMin ? exclusiveMin : min;\n numberRange += ' .. ';\n numberRange += hasExclusiveMax ? exclusiveMax : max;\n numberRange += hasExclusiveMax ? ' )' : ' ]';\n } else if (hasMin) {\n numberRange = hasExclusiveMin ? '> ' : '>= ';\n numberRange += hasExclusiveMin ? exclusiveMin : min;\n } else if (hasMax) {\n numberRange = hasExclusiveMax ? '< ' : '<= ';\n numberRange += hasExclusiveMax ? exclusiveMax : max;\n }\n return numberRange;\n }\n\n private static humanizeMultipleOfConstraint(\n multipleOf: number | undefined,\n ): string | undefined {\n if (multipleOf === undefined) {\n return;\n }\n const strigifiedMultipleOf = multipleOf.toString(10);\n if (!/^0\\.0*1$/.test(strigifiedMultipleOf)) {\n return `multiple of ${strigifiedMultipleOf}`;\n }\n return `decimal places <= ${strigifiedMultipleOf.split('.')[1].length}`;\n }\n\n private static humanizeRangeConstraint(\n description: string,\n min: number | undefined,\n max: number | undefined,\n ): string | undefined {\n let stringRange;\n if (min !== undefined && max !== undefined) {\n if (min === max) {\n stringRange = `${min} ${description}`;\n } else {\n stringRange = `[ ${min} .. ${max} ] ${description}`;\n }\n } else if (max !== undefined) {\n stringRange = `<= ${max} ${description}`;\n } else if (min !== undefined) {\n if (min === 1) {\n stringRange = 'non-empty';\n } else {\n stringRange = `>= ${min} ${description}`;\n }\n }\n return stringRange;\n }\n\n private static jsonFieldToSchema(value: any): any {\n if (value === undefined || value === null) {\n return {\n type: 'string',\n const: '',\n [this.extRawValue]: true,\n };\n }\n if (typeof value !== 'object') {\n const str =\n typeof value.toString === 'function' ? value.toString() : value;\n return {\n type: 'string',\n const: str,\n [this.extRawValue]: true,\n };\n }\n if (this.isJSONSchema(value)) {\n return value;\n }\n if (Array.isArray(value)) {\n return {\n type: 'array',\n items: value.map(v => this.jsonFieldToSchema(v)),\n [this.extRenderType]: false,\n [this.extRenderAdditionalInfo]: false,\n };\n }\n return {\n type: 'object',\n properties: Object.entries(value).reduce((obj, [k, v]) => {\n obj[k] = this.jsonFieldToSchema(v);\n return obj;\n }, {}),\n [this.extRenderType]: false,\n [this.extRenderAdditionalInfo]: false,\n };\n }\n\n private static isJSONSchema(value: any): boolean {\n if (\n value &&\n typeof value === 'object' &&\n (jsonSchemaTypes.includes(value.type) ||\n (Array.isArray(value.type) &&\n value.type.some((t: string) => !jsonSchemaTypes.includes(t))))\n ) {\n return true;\n }\n return false;\n }\n}\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/helpers/schema.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SchemaInterface,\n ChannelParametersInterface,\n ServerVariablesInterface,\n SchemaV2 as SchemaClass,\n ExtensionInterface,\n ExtensionsInterface,\n} from '@asyncapi/parser';\n\nexport enum SchemaCustomTypes {\n // for `true` and `{}` schemas\n ANY = 'any',\n // for schemas without `type` keyword\n RESTRICTED_ANY = 'restricted any',\n // for `false` and `{ not: {}, ... }` schemas\n NEVER = 'never',\n // for types that we cannot infer\n UNKNOWN = 'unknown',\n}\n\nconst jsonSchemaTypes = [\n 'string',\n 'number',\n 'integer',\n 'boolean',\n 'array',\n 'object',\n 'null',\n];\nconst jsonSchemaKeywordTypes: Record<string, string> = {\n // string\n maxLength: 'string',\n minLength: 'string',\n pattern: 'string',\n contentMediaType: 'string',\n contentEncoding: 'string',\n // number\n multipleOf: 'number',\n maximum: 'number',\n exclusiveMaximum: 'number',\n minimum: 'number',\n exclusiveMinimum: 'number',\n // array\n items: 'array',\n maxItems: 'array',\n minItems: 'array',\n uniqueItems: 'array',\n contains: 'array',\n additionalItems: 'array',\n // object\n maxProperties: 'object',\n minProperties: 'object',\n required: 'object',\n properties: 'object',\n patternProperties: 'object',\n propertyNames: 'object',\n dependencies: 'object',\n additionalProperties: 'object',\n};\nconst jsonSchemaKeywords = Object.keys(jsonSchemaKeywordTypes);\n\nexport class SchemaHelpers {\n static extRenderAdditionalInfo = 'x-schema-private-render-additional-info';\n static extRawValue = 'x-schema-private-raw-value';\n static extParameterLocation = 'x-schema-private-parameter-location';\n\n static toSchemaType(schema: SchemaInterface): string {\n if (!schema || typeof schema.json !== 'function') {\n return SchemaCustomTypes.UNKNOWN;\n }\n if (schema.isBooleanSchema()) {\n if (schema.json() === true) {\n return SchemaCustomTypes.ANY;\n } else {\n return SchemaCustomTypes.NEVER;\n }\n }\n // handle case with `{}` schemas\n if (Object.keys(schema.json()).length === 0) {\n return SchemaCustomTypes.ANY;\n }\n // handle case with `{ not: {}, ... }` schemas\n const not = schema.not();\n if (not && this.inferType(not) === SchemaCustomTypes.ANY) {\n return SchemaCustomTypes.NEVER;\n }\n\n let type = this.inferType(schema);\n if (Array.isArray(type)) {\n return type.map(t => this.toType(t, schema)).join(' | ');\n }\n type = this.toType(type, schema);\n const combinedType = this.toCombinedType(schema);\n\n if (type && combinedType) {\n return `${type} ${combinedType}`;\n }\n if (combinedType) {\n return combinedType;\n }\n return type;\n }\n\n static prettifyValue(value: any, strict = true): string {\n const typeOf = typeof value;\n if (typeOf === 'string') {\n return strict ? `\"${value}\"` : value;\n }\n if (typeOf === 'number' || typeOf === 'bigint' || typeOf === 'boolean') {\n return `${value}`;\n }\n if (Array.isArray(value)) {\n return `[${value.toString()}]`;\n }\n return JSON.stringify(value);\n }\n\n static humanizeConstraints(schema: SchemaInterface): string[] {\n const constraints: string[] = [];\n\n // related to number/integer\n const numberRange = this.humanizeNumberRangeConstraint(\n schema.minimum(),\n schema.exclusiveMinimum(),\n schema.maximum(),\n schema.exclusiveMaximum(),\n );\n if (numberRange !== undefined) {\n constraints.push(numberRange);\n }\n const multipleOfConstraint = this.humanizeMultipleOfConstraint(\n schema.multipleOf(),\n );\n if (multipleOfConstraint !== undefined) {\n constraints.push(multipleOfConstraint);\n }\n\n // related to string\n const stringRange = this.humanizeRangeConstraint(\n 'characters',\n schema.minLength(),\n schema.maxLength(),\n );\n if (stringRange !== undefined) {\n constraints.push(stringRange);\n }\n\n // related to array\n const hasUniqueItems = schema.uniqueItems();\n const arrayRange = this.humanizeRangeConstraint(\n hasUniqueItems ? 'unique items' : 'items',\n schema.minItems(),\n schema.maxItems(),\n );\n if (arrayRange !== undefined) {\n constraints.push(arrayRange);\n }\n\n // related to object\n const objectRange = this.humanizeRangeConstraint(\n 'properties',\n schema.minProperties(),\n schema.maxProperties(),\n );\n if (objectRange !== undefined) {\n constraints.push(objectRange);\n }\n\n return constraints;\n }\n\n static isExpandable(schema: SchemaInterface): boolean {\n let type = this.inferType(schema);\n type = Array.isArray(type) ? type : [type];\n if (type.includes('object') || type.includes('array')) {\n return true;\n }\n\n if (\n schema.oneOf() ||\n schema.anyOf() ||\n schema.allOf() ||\n Object.keys(schema.properties() || {}).length > 0 ||\n schema.items() ||\n schema.not() ||\n schema.if() ||\n schema.then() ||\n schema.else()\n ) {\n return true;\n }\n\n const customExtensions = this.getCustomExtensions(schema);\n if (customExtensions && Object.keys(customExtensions).length) {\n return true;\n }\n\n return false;\n }\n\n static serverVariablesToSchema(\n urlVariables?: ServerVariablesInterface,\n ): SchemaInterface | undefined {\n if (!urlVariables || !Object.keys(urlVariables).length) {\n return undefined;\n }\n\n const json = {\n type: 'object',\n properties: Object.entries(urlVariables).reduce(\n (obj, [variableName, variable]) => {\n obj[variableName] = Object.assign({}, variable.json() || {});\n obj[variableName].type = 'string';\n return obj;\n },\n {},\n ),\n required: Object.keys(urlVariables),\n [this.extRenderAdditionalInfo]: false,\n };\n return new SchemaClass(json as any);\n }\n\n static parametersToSchema(\n parameters?: ChannelParametersInterface,\n ): SchemaInterface | undefined {\n if (!parameters || !Object.keys(parameters).length) {\n return undefined;\n }\n\n const json = {\n type: 'object',\n properties: Object.entries(parameters).reduce(\n (obj, [paramaterName, parameter]) => {\n const parameterSchema = parameter.schema();\n obj[paramaterName] = Object.assign(\n {},\n parameterSchema ? parameterSchema.json() : {},\n );\n obj[paramaterName].description =\n parameter.description() || obj[paramaterName].description;\n obj[paramaterName][this.extParameterLocation] = parameter.location();\n return obj;\n },\n {},\n ),\n required: Object.keys(parameters),\n [this.extRenderAdditionalInfo]: false,\n };\n return new SchemaClass(json as any);\n }\n\n static jsonToSchema(value: any): any {\n const json = this.jsonFieldToSchema(value);\n return new SchemaClass(json);\n }\n\n /**\n * Retrieves from given value all custom extensions (value with key started by `x-`).\n * However, it skips those private extensions that begin with `x-parser-` and `x-schema-private-`.\n *\n * @param value\n */\n static getCustomExtensions(value: any) {\n if (!value || typeof value.extensions !== 'function') {\n return;\n }\n const extensions = value.extensions() as ExtensionsInterface;\n const filteredExtensions = {};\n for (const ext of Object.values(extensions.all())) {\n const extType = ext as ExtensionInterface;\n if (\n !extType.id().startsWith('x-parser-') &&\n !extType.id().startsWith('x-schema-private-')\n ) {\n filteredExtensions[extType.id()] = extType.value();\n }\n }\n return filteredExtensions;\n }\n\n /**\n * Retrieves from given schema all dependent required requires by given propertyName from `dependencies` object.\n *\n * @param propertyName\n * @param schema\n */\n static getDependentRequired(\n propertyName: string,\n schema: SchemaInterface,\n ): string[] | undefined {\n const dependentRequired: string[] = [];\n const dependencies = schema.dependencies();\n if (!dependencies) {\n return;\n }\n\n for (const [prop, array] of Object.entries(dependencies)) {\n if (Array.isArray(array) && array.includes(propertyName)) {\n dependentRequired.push(prop);\n }\n }\n return dependentRequired.length ? dependentRequired : undefined;\n }\n\n /**\n * Retrieves from given schema all dependent schemas from `dependencies` object.\n *\n * @param schema\n */\n static getDependentSchemas(\n schema: SchemaInterface,\n ): SchemaInterface | undefined {\n const dependencies = schema.dependencies();\n if (!dependencies) {\n return;\n }\n\n const records: Record<string, SchemaInterface> = {};\n for (const [prop, propSchema] of Object.entries(dependencies)) {\n if (typeof propSchema === 'object' && !Array.isArray(propSchema)) {\n records[prop] = propSchema;\n }\n }\n if (!Object.keys(records).length) {\n return undefined;\n }\n\n const json = {\n type: 'object',\n properties: Object.entries(records).reduce(\n (obj, [propertyName, propertySchema]) => {\n obj[propertyName] = Object.assign({}, propertySchema.json());\n return obj;\n },\n {},\n ),\n [this.extRenderAdditionalInfo]: false,\n };\n return new SchemaClass(json as any);\n }\n\n private static toType(type: string, schema: SchemaInterface): string {\n if (schema.isCircular()) {\n return type;\n }\n if (type === 'array') {\n const items = schema.items();\n if (Array.isArray(items)) {\n return this.toItemsType(items, schema);\n }\n if (!items) {\n return `array<${SchemaCustomTypes.ANY}>`;\n }\n return `array<${this.toSchemaType(items) || SchemaCustomTypes.UNKNOWN}>`;\n }\n return type;\n }\n\n private static toItemsType(\n items: SchemaInterface[],\n schema: SchemaInterface,\n ): string {\n const types = items.map(item => this.toSchemaType(item)).join(', ');\n const additionalItems = schema.additionalItems();\n if (additionalItems !== undefined && additionalItems !== false) {\n const additionalType =\n additionalItems === true\n ? SchemaCustomTypes.ANY\n : this.toSchemaType(additionalItems);\n return `tuple<${types ||\n SchemaCustomTypes.UNKNOWN}, ...optional<${additionalType}>>`;\n }\n return `tuple<${types || SchemaCustomTypes.UNKNOWN}>`;\n }\n\n private static toCombinedType(schema: SchemaInterface): string | undefined {\n const oneOf = schema.oneOf();\n if (oneOf) {\n return 'oneOf';\n }\n if (schema.anyOf()) {\n return 'anyOf';\n }\n if (schema.allOf()) {\n return 'allOf';\n }\n return;\n }\n\n private static inferType(schema: SchemaInterface): string[] | string {\n let types = schema.type();\n\n if (types !== undefined) {\n if (Array.isArray(types)) {\n // if types have `integer` and `number` types, `integer` is unnecessary\n if (types.includes('integer') && types.includes('number')) {\n types = types.filter(t => t !== 'integer');\n }\n return types.length === 1 ? types[0] : types;\n }\n return types;\n }\n\n const constValue = schema.const();\n if (constValue !== undefined) {\n return typeof constValue;\n }\n const enumValue = schema.enum();\n if (Array.isArray(enumValue) && enumValue.length) {\n const inferredType = Array.from(new Set(enumValue.map(e => typeof e)));\n return inferredType.length === 1 ? inferredType[0] : inferredType;\n }\n\n const schemaKeys = Object.keys(schema.json() || {}) || [];\n const hasInferredTypes = jsonSchemaKeywords.some(key =>\n schemaKeys.includes(key),\n );\n if (hasInferredTypes === true) {\n return SchemaCustomTypes.RESTRICTED_ANY;\n }\n if (this.toCombinedType(schema)) {\n return '';\n }\n return SchemaCustomTypes.ANY;\n }\n\n private static humanizeNumberRangeConstraint(\n min: number | undefined,\n exclusiveMin: number | undefined,\n max: number | undefined,\n exclusiveMax: number | undefined,\n ): string | undefined {\n const hasExclusiveMin = exclusiveMin !== undefined;\n const hasMin = min !== undefined || hasExclusiveMin;\n const hasExclusiveMax = exclusiveMax !== undefined;\n const hasMax = max !== undefined || hasExclusiveMax;\n\n let numberRange;\n if (hasMin && hasMax) {\n numberRange = hasExclusiveMin ? '( ' : '[ ';\n numberRange += hasExclusiveMin ? exclusiveMin : min;\n numberRange += ' .. ';\n numberRange += hasExclusiveMax ? exclusiveMax : max;\n numberRange += hasExclusiveMax ? ' )' : ' ]';\n } else if (hasMin) {\n numberRange = hasExclusiveMin ? '> ' : '>= ';\n numberRange += hasExclusiveMin ? exclusiveMin : min;\n } else if (hasMax) {\n numberRange = hasExclusiveMax ? '< ' : '<= ';\n numberRange += hasExclusiveMax ? exclusiveMax : max;\n }\n return numberRange;\n }\n\n private static humanizeMultipleOfConstraint(\n multipleOf: number | undefined,\n ): string | undefined {\n if (multipleOf === undefined) {\n return;\n }\n const strigifiedMultipleOf = multipleOf.toString(10);\n if (!/^0\\.0*1$/.test(strigifiedMultipleOf)) {\n return `multiple of ${strigifiedMultipleOf}`;\n }\n return `decimal places <= ${strigifiedMultipleOf.split('.')[1].length}`;\n }\n\n private static humanizeRangeConstraint(\n description: string,\n min: number | undefined,\n max: number | undefined,\n ): string | undefined {\n let stringRange;\n if (min !== undefined && max !== undefined) {\n if (min === max) {\n stringRange = `${min} ${description}`;\n } else {\n stringRange = `[ ${min} .. ${max} ] ${description}`;\n }\n } else if (max !== undefined) {\n stringRange = `<= ${max} ${description}`;\n } else if (min !== undefined) {\n if (min === 1) {\n stringRange = 'non-empty';\n } else {\n stringRange = `>= ${min} ${description}`;\n }\n }\n return stringRange;\n }\n\n private static jsonFieldToSchema(value: any): any {\n if (value === undefined || value === null) {\n return {\n type: 'string',\n const: '',\n [this.extRawValue]: true,\n };\n }\n if (typeof value !== 'object') {\n const str =\n typeof value.toString === 'function' ? value.toString() : value;\n return {\n type: 'string',\n const: str,\n [this.extRawValue]: true,\n };\n }\n if (this.isJSONSchema(value)) {\n return value;\n }\n if (Array.isArray(value)) {\n return {\n type: 'array',\n items: value.map(v => this.jsonFieldToSchema(v)),\n [this.extRenderAdditionalInfo]: false,\n };\n }\n return {\n type: 'object',\n properties: Object.entries(value).reduce((obj, [k, v]) => {\n obj[k] = this.jsonFieldToSchema(v);\n return obj;\n }, {}),\n [this.extRenderAdditionalInfo]: false,\n };\n }\n\n private static isJSONSchema(value: any): boolean {\n if (\n value &&\n typeof value === 'object' &&\n (jsonSchemaTypes.includes(value.type) ||\n (Array.isArray(value.type) &&\n value.type.some((t: string) => !jsonSchemaTypes.includes(t))))\n ) {\n return true;\n }\n return false;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/helpers/server.ts"],"names":[],"mappings":"AAEA;IAAA;IA2FA,CAAC;IA1FQ,0BAAY,GAAnB,UAAoB,KAAa;QAC/B,QAAQ,KAAK,EAAE;YACb,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,eAAe;gBAClB,OAAO,SAAS,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,cAAc;gBACjB,OAAO,eAAe,CAAC;YACzB,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC;YACjB,KAAK,qBAAqB;gBACxB,OAAO,sBAAsB,CAAC;YAChC,KAAK,sBAAsB;gBACzB,OAAO,uBAAuB,CAAC;YACjC,KAAK,YAAY;gBACf,OAAO,cAAc,CAAC;YACxB,KAAK,aAAa;gBAChB,OAAO,aAAa,CAAC;YACvB,KAAK,aAAa;gBAChB,OAAO,aAAa,CAAC;YACvB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC;IAEM,sBAAQ,GAAf,UAAgB,KAAa;QAC3B,QAAQ,KAAK,EAAE;YACb,KAAK,UAAU;gBACb,OAAO,UAAU,CAAC;YACpB,KAAK,UAAU;gBACb,OAAO,UAAU,CAAC;YACpB,KAAK,mBAAmB;gBACtB,OAAO,oBAAoB,CAAC;YAC9B,KAAK,mBAAmB;gBACtB,OAAO,oBAAoB,CAAC;YAC9B;gBACE,OAAO,UAAU,CAAC;SACrB;IACH,CAAC;IAEM,8BAAgB,GAAvB,UACE,QAAgB,EAChB,cAAqC;QAErC,IAAI,gBAAgB,CAAC;QACrB,IAAI,aAAa,CAAC;QAClB,IAAI,QAAQ,KAAK,OAAO,EAAE;YACxB,IAAI,cAAc,EAAE;gBAClB,gBAAgB,GAAG,gBAAgB,CAAC;aACrC;iBAAM;gBACL,gBAAgB,GAAG,WAAW,CAAC;aAChC;SACF;aAAM;YACL,IAAI,cAAc,EAAE;gBAClB,gBAAgB,GAAG,UAAU,CAAC;aAC/B;iBAAM;gBACL,gBAAgB,GAAG,KAAK,CAAC;aAC1B;SACF;QACD,IAAI,cAAc,EAAE;YAClB,QAAQ,cAAc,CAAC,IAAI,EAAE,EAAE;gBAC7B,KAAK,OAAO;oBACV,aAAa,GAAG,OAAO,CAAC;oBACxB,MAAM;gBACR,KAAK,aAAa;oBAChB,aAAa,GAAG,eAAe,CAAC;oBAChC,MAAM;gBACR,KAAK,aAAa;oBAChB,aAAa,GAAG,eAAe,CAAC;oBAChC,MAAM;gBACR,KAAK,QAAQ;oBACX,aAAa,GAAG,aAAa,CAAC;oBAC9B,MAAM;gBACR,KAAK,QAAQ;oBACX,aAAa,GAAG,QAAQ,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,gBAAgB,GAAG,KAAK,CAAC;oBACzB,MAAM;aACT;SACF;QAED,OAAO,EAAE,gBAAgB,kBAAA,EAAE,aAAa,eAAA,EAAE,CAAC;IAC7C,CAAC;IACH,oBAAC;AAAD,CAAC,AA3FD,IA2FC","sourcesContent":["import { SecurityScheme } from '@asyncapi/parser';\n\nexport class ServerHelpers {\n static securityType(value: string) {\n switch (value) {\n case 'apiKey':\n return 'API key';\n case 'oauth2':\n return 'OAuth2';\n case 'openIdConnect':\n return 'Open ID';\n case 'http':\n return 'HTTP';\n case 'userPassword':\n return 'User/Password';\n case 'X509':\n return 'X509:';\n case 'symmetricEncryption':\n return 'Symmetric Encription';\n case 'asymmetricEncryption':\n return 'Asymmetric Encription';\n case 'httpApiKey':\n return 'HTTP API key';\n case 'scramSha256':\n return 'ScramSha256';\n case 'scramSha512':\n return 'ScramSha512';\n case 'gssapi':\n return 'GSSAPI';\n default:\n return 'API key';\n }\n }\n\n static flowName(value: string) {\n switch (value) {\n case 'implicit':\n return 'Implicit';\n case 'password':\n return 'Password';\n case 'clientCredentials':\n return 'Client credentials';\n case 'authorizationCode':\n return 'Authorization Code';\n default:\n return 'Implicit';\n }\n }\n\n static getKafkaSecurity(\n protocol: string,\n securitySchema: SecurityScheme | null,\n ) {\n let securityProtocol;\n let saslMechanism;\n if (protocol === 'kafka') {\n if (securitySchema) {\n securityProtocol = 'SASL_PLAINTEXT';\n } else {\n securityProtocol = 'PLAINTEXT';\n }\n } else {\n if (securitySchema) {\n securityProtocol = 'SASL_SSL';\n } else {\n securityProtocol = 'SSL';\n }\n }\n if (securitySchema) {\n switch (securitySchema.type()) {\n case 'plain':\n saslMechanism = 'PLAIN';\n break;\n case 'scramSha256':\n saslMechanism = 'SCRAM-SHA-256';\n break;\n case 'scramSha512':\n saslMechanism = 'SCRAM-SHA-512';\n break;\n case 'oauth2':\n saslMechanism = 'OAUTHBEARER';\n break;\n case 'gssapi':\n saslMechanism = 'GSSAPI';\n break;\n case 'X509':\n securityProtocol = 'SSL';\n break;\n }\n }\n\n return { securityProtocol, saslMechanism };\n }\n}\n"]}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/helpers/server.ts"],"names":[],"mappings":"AAEA;IAAA;IA2FA,CAAC;IA1FQ,0BAAY,GAAnB,UAAoB,KAAa;QAC/B,QAAQ,KAAK,EAAE;YACb,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB,KAAK,eAAe;gBAClB,OAAO,SAAS,CAAC;YACnB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAC;YAChB,KAAK,cAAc;gBACjB,OAAO,eAAe,CAAC;YACzB,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC;YACjB,KAAK,qBAAqB;gBACxB,OAAO,sBAAsB,CAAC;YAChC,KAAK,sBAAsB;gBACzB,OAAO,uBAAuB,CAAC;YACjC,KAAK,YAAY;gBACf,OAAO,cAAc,CAAC;YACxB,KAAK,aAAa;gBAChB,OAAO,aAAa,CAAC;YACvB,KAAK,aAAa;gBAChB,OAAO,aAAa,CAAC;YACvB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAC;YAClB;gBACE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC;IAEM,sBAAQ,GAAf,UAAgB,KAAa;QAC3B,QAAQ,KAAK,EAAE;YACb,KAAK,UAAU;gBACb,OAAO,UAAU,CAAC;YACpB,KAAK,UAAU;gBACb,OAAO,UAAU,CAAC;YACpB,KAAK,mBAAmB;gBACtB,OAAO,oBAAoB,CAAC;YAC9B,KAAK,mBAAmB;gBACtB,OAAO,oBAAoB,CAAC;YAC9B;gBACE,OAAO,UAAU,CAAC;SACrB;IACH,CAAC;IAEM,8BAAgB,GAAvB,UACE,QAAgB,EAChB,cAA8C;QAE9C,IAAI,gBAAgB,CAAC;QACrB,IAAI,aAAa,CAAC;QAClB,IAAI,QAAQ,KAAK,OAAO,EAAE;YACxB,IAAI,cAAc,EAAE;gBAClB,gBAAgB,GAAG,gBAAgB,CAAC;aACrC;iBAAM;gBACL,gBAAgB,GAAG,WAAW,CAAC;aAChC;SACF;aAAM;YACL,IAAI,cAAc,EAAE;gBAClB,gBAAgB,GAAG,UAAU,CAAC;aAC/B;iBAAM;gBACL,gBAAgB,GAAG,KAAK,CAAC;aAC1B;SACF;QACD,IAAI,cAAc,EAAE;YAClB,QAAQ,cAAc,CAAC,IAAI,EAAE,EAAE;gBAC7B,KAAK,OAAO;oBACV,aAAa,GAAG,OAAO,CAAC;oBACxB,MAAM;gBACR,KAAK,aAAa;oBAChB,aAAa,GAAG,eAAe,CAAC;oBAChC,MAAM;gBACR,KAAK,aAAa;oBAChB,aAAa,GAAG,eAAe,CAAC;oBAChC,MAAM;gBACR,KAAK,QAAQ;oBACX,aAAa,GAAG,aAAa,CAAC;oBAC9B,MAAM;gBACR,KAAK,QAAQ;oBACX,aAAa,GAAG,QAAQ,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,gBAAgB,GAAG,KAAK,CAAC;oBACzB,MAAM;aACT;SACF;QAED,OAAO,EAAE,gBAAgB,kBAAA,EAAE,aAAa,eAAA,EAAE,CAAC;IAC7C,CAAC;IACH,oBAAC;AAAD,CAAC,AA3FD,IA2FC","sourcesContent":["import { SecuritySchemeInterface } from '@asyncapi/parser';\n\nexport class ServerHelpers {\n static securityType(value: string) {\n switch (value) {\n case 'apiKey':\n return 'API key';\n case 'oauth2':\n return 'OAuth2';\n case 'openIdConnect':\n return 'Open ID';\n case 'http':\n return 'HTTP';\n case 'userPassword':\n return 'User/Password';\n case 'X509':\n return 'X509:';\n case 'symmetricEncryption':\n return 'Symmetric Encription';\n case 'asymmetricEncryption':\n return 'Asymmetric Encription';\n case 'httpApiKey':\n return 'HTTP API key';\n case 'scramSha256':\n return 'ScramSha256';\n case 'scramSha512':\n return 'ScramSha512';\n case 'gssapi':\n return 'GSSAPI';\n default:\n return 'API key';\n }\n }\n\n static flowName(value: string) {\n switch (value) {\n case 'implicit':\n return 'Implicit';\n case 'password':\n return 'Password';\n case 'clientCredentials':\n return 'Client credentials';\n case 'authorizationCode':\n return 'Authorization Code';\n default:\n return 'Implicit';\n }\n }\n\n static getKafkaSecurity(\n protocol: string,\n securitySchema: SecuritySchemeInterface | null,\n ) {\n let securityProtocol;\n let saslMechanism;\n if (protocol === 'kafka') {\n if (securitySchema) {\n securityProtocol = 'SASL_PLAINTEXT';\n } else {\n securityProtocol = 'PLAINTEXT';\n }\n } else {\n if (securitySchema) {\n securityProtocol = 'SASL_SSL';\n } else {\n securityProtocol = 'SSL';\n }\n }\n if (securitySchema) {\n switch (securitySchema.type()) {\n case 'plain':\n saslMechanism = 'PLAIN';\n break;\n case 'scramSha256':\n saslMechanism = 'SCRAM-SHA-256';\n break;\n case 'scramSha512':\n saslMechanism = 'SCRAM-SHA-512';\n break;\n case 'oauth2':\n saslMechanism = 'OAUTHBEARER';\n break;\n case 'gssapi':\n saslMechanism = 'GSSAPI';\n break;\n case 'X509':\n securityProtocol = 'SSL';\n break;\n }\n }\n\n return { securityProtocol, saslMechanism };\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
- import AsyncAPIDocumentModel from '@asyncapi/parser/lib/models/asyncapi';
1
+ import { isAsyncAPIDocument, isOldAsyncAPIDocument, toAsyncAPIDocument, unstringify, } from '@asyncapi/parser';
2
+ import { isStringifiedDocument } from '@asyncapi/parser/cjs/document';
2
3
  var SpecificationHelpers = (function () {
3
4
  function SpecificationHelpers() {
4
5
  }
@@ -6,13 +7,12 @@ var SpecificationHelpers = (function () {
6
7
  if (!schema) {
7
8
  return undefined;
8
9
  }
9
- if (schema.constructor && schema.constructor.name === 'AsyncAPIDocument') {
10
+ if (isAsyncAPIDocument(schema)) {
10
11
  return schema;
11
12
  }
12
- if (typeof schema.version === 'function' &&
13
- schema._json &&
14
- schema._json.asyncapi) {
15
- return schema;
13
+ if (isOldAsyncAPIDocument(schema)) {
14
+ var parsedJSON = schema.json();
15
+ return toAsyncAPIDocument(parsedJSON);
16
16
  }
17
17
  if (typeof schema === 'string') {
18
18
  try {
@@ -22,13 +22,10 @@ var SpecificationHelpers = (function () {
22
22
  return undefined;
23
23
  }
24
24
  }
25
- if (typeof schema === 'object' && schema['x-parser-spec-parsed'] === true) {
26
- if (schema['x-parser-spec-stringified'] === true) {
27
- return AsyncAPIDocumentModel.parse(schema);
28
- }
29
- return new AsyncAPIDocumentModel(schema);
25
+ if (isStringifiedDocument(schema)) {
26
+ return unstringify(schema);
30
27
  }
31
- return undefined;
28
+ return toAsyncAPIDocument(schema);
32
29
  };
33
30
  SpecificationHelpers.containTags = function (schema, tags) {
34
31
  var tagsToCheck = typeof schema.tags === 'function' ? schema.tags() : undefined;
@@ -42,15 +39,13 @@ var SpecificationHelpers = (function () {
42
39
  };
43
40
  SpecificationHelpers.operationsTags = function (spec) {
44
41
  var tags = new Map();
45
- Object.entries(spec.channels()).forEach(function (_a) {
46
- var _ = _a[0], channel = _a[1];
47
- var publish = channel.publish();
48
- if (publish && publish.hasTags()) {
49
- publish.tags().forEach(function (tag) { return tags.set(tag.name(), tag); });
50
- }
51
- var subscribe = channel.subscribe();
52
- if (subscribe && subscribe.hasTags()) {
53
- subscribe.tags().forEach(function (tag) { return tags.set(tag.name(), tag); });
42
+ Object.entries(spec.operations().all()).forEach(function (_a) {
43
+ var _ = _a[0], operation = _a[1];
44
+ if ((operation === null || operation === void 0 ? void 0 : operation.tags().length) > 0) {
45
+ operation
46
+ .tags()
47
+ .all()
48
+ .forEach(function (tag) { return tags.set(tag.name(), tag); });
54
49
  }
55
50
  });
56
51
  return Array.from(tags.values());
@@ -59,8 +54,11 @@ var SpecificationHelpers = (function () {
59
54
  var tags = {};
60
55
  Object.entries(spec.servers()).forEach(function (_a) {
61
56
  var _ = _a[0], server = _a[1];
62
- if (server.hasTags()) {
63
- server.tags().forEach(function (tag) {
57
+ if (server.tags().length > 0) {
58
+ server
59
+ .tags()
60
+ .all()
61
+ .forEach(function (tag) {
64
62
  if (tags[tag.name()]) {
65
63
  tags[tag.name()] = [tags[tag.name()], _];
66
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"specification.js","sourceRoot":"","sources":["../../../src/helpers/specification.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncAPIDocument, Tag } from '@asyncapi/parser';\n// @ts-ignore\nimport AsyncAPIDocumentModel from '@asyncapi/parser/lib/models/asyncapi';\n\nexport class SpecificationHelpers {\n /**\n * Returns parsed AsyncAPI specification.\n */\n static retrieveParsedSpec(schema: any): AsyncAPIDocument | undefined {\n if (!schema) {\n return undefined;\n }\n\n // check if schema is an instance of AsyncAPIDocument (model from AsyncAPI Parser)\n if (schema.constructor && schema.constructor.name === 'AsyncAPIDocument') {\n return schema as AsyncAPIDocument;\n }\n\n // then check if schema is an instance of AsyncAPIDocument (model from AsyncAPI Parser)\n // this check is used for security in case of code mangling (unification)\n if (\n typeof schema.version === 'function' &&\n schema._json &&\n schema._json.asyncapi\n ) {\n return schema as AsyncAPIDocument;\n }\n\n // check if input is a string and try parse it\n if (typeof schema === 'string') {\n try {\n schema = JSON.parse(schema);\n } catch (e) {\n return undefined;\n }\n }\n\n // at the end check if schema is a parsed JS object (as output from AsyncAPI Parser)\n if (typeof schema === 'object' && schema['x-parser-spec-parsed'] === true) {\n // if schema is stringified by `AsyncAPIDocument.stringify` function\n if (schema['x-parser-spec-stringified'] === true) {\n return AsyncAPIDocumentModel.parse(schema);\n }\n return new AsyncAPIDocumentModel(schema);\n }\n\n return undefined;\n }\n\n /**\n * Check if given schema have one of the specified tags.\n */\n static containTags(schema: any, tags: Tag | Tag[]): boolean {\n const tagsToCheck =\n typeof schema.tags === 'function' ? schema.tags() : undefined;\n if (tagsToCheck === undefined || !Array.isArray(tagsToCheck)) {\n return false;\n }\n tags = Array.isArray(tags) ? tags : [tags];\n return tagsToCheck.some((tag: Tag) =>\n (tags as Tag[]).some(t => t.name() === tag.name()),\n );\n }\n\n /**\n * Return all tags from operations\n */\n static operationsTags(spec: AsyncAPIDocument) {\n const tags = new Map<string, Tag>();\n Object.entries(spec.channels()).forEach(([_, channel]) => {\n const publish = channel.publish();\n if (publish && publish.hasTags()) {\n publish.tags().forEach(tag => tags.set(tag.name(), tag));\n }\n const subscribe = channel.subscribe();\n if (subscribe && subscribe.hasTags()) {\n subscribe.tags().forEach(tag => tags.set(tag.name(), tag));\n }\n });\n return Array.from(tags.values());\n }\n\n /**\n * Return all tags from servers\n */\n static serversTags(spec: AsyncAPIDocument) {\n const tags = {} as { string: string[] };\n Object.entries(spec.servers()).forEach(([_, server]) => {\n if (server.hasTags()) {\n server.tags().forEach(tag => {\n if (tags[tag.name()]) {\n tags[tag.name()] = [tags[tag.name()], _];\n } else {\n tags[tag.name()] = _;\n }\n });\n }\n });\n return tags;\n }\n}\n"]}
1
+ {"version":3,"file":"specification.js","sourceRoot":"","sources":["../../../src/helpers/specification.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AsyncAPIDocumentInterface,\n TagInterface,\n isAsyncAPIDocument,\n isOldAsyncAPIDocument,\n toAsyncAPIDocument,\n unstringify,\n} from '@asyncapi/parser';\nimport { isStringifiedDocument } from '@asyncapi/parser/cjs/document';\n\nexport class SpecificationHelpers {\n /**\n * Returns parsed AsyncAPI specification.\n */\n static retrieveParsedSpec(\n schema: any,\n ): AsyncAPIDocumentInterface | undefined {\n if (!schema) {\n return undefined;\n }\n\n if (isAsyncAPIDocument(schema)) {\n return schema;\n }\n\n if (isOldAsyncAPIDocument(schema)) {\n // Is from old parser\n const parsedJSON = schema.json();\n return toAsyncAPIDocument(parsedJSON);\n }\n\n // check if input is a string and try parse it\n if (typeof schema === 'string') {\n try {\n schema = JSON.parse(schema);\n } catch (e) {\n return undefined;\n }\n }\n\n // at the end check if schema is a parsed JS object (as output from AsyncAPI Parser)\n if (isStringifiedDocument(schema)) {\n return unstringify(schema);\n }\n\n return toAsyncAPIDocument(schema);\n }\n\n /**\n * Check if given schema have one of the specified tags.\n */\n static containTags(\n schema: any,\n tags: TagInterface | TagInterface[],\n ): boolean {\n const tagsToCheck =\n typeof schema.tags === 'function' ? schema.tags() : undefined;\n if (tagsToCheck === undefined || !Array.isArray(tagsToCheck)) {\n return false;\n }\n tags = Array.isArray(tags) ? tags : [tags];\n return tagsToCheck.some((tag: TagInterface) =>\n (tags as TagInterface[]).some(t => t.name() === tag.name()),\n );\n }\n\n /**\n * Return all tags from operations\n */\n static operationsTags(spec: AsyncAPIDocumentInterface) {\n const tags = new Map<string, TagInterface>();\n Object.entries(spec.operations().all()).forEach(([_, operation]) => {\n if (operation?.tags().length > 0) {\n operation\n .tags()\n .all()\n .forEach(tag => tags.set(tag.name(), tag));\n }\n });\n return Array.from(tags.values());\n }\n\n /**\n * Return all tags from servers\n */\n static serversTags(spec: AsyncAPIDocumentInterface) {\n const tags = {} as { string: string[] };\n Object.entries(spec.servers()).forEach(([_, server]) => {\n if (server.tags().length > 0) {\n server\n .tags()\n .all()\n .forEach(tag => {\n if (tags[tag.name()]) {\n tags[tag.name()] = [tags[tag.name()], _];\n } else {\n tags[tag.name()] = _;\n }\n });\n }\n });\n return tags;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,yBAAyB,CACvC,MAAmB;IAEnB,OAAQ,MAAkC,CAAC,GAAG,KAAK,SAAS,CAAC;AAC/D,CAAC;AAYD,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;AACzB,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB","sourcesContent":["import { AsyncAPIDocument } from '@asyncapi/parser';\n\nexport type PropsSchema =\n | string\n | FetchingSchemaInterface\n | AsyncAPIDocument\n | object;\n\nexport type NullableAsyncApi = AsyncAPIDocument | null;\n\nexport interface AsyncApiState {\n validatedSchema: NullableAsyncApi;\n error?: ErrorObject;\n}\n\nexport function isFetchingSchemaInterface(\n schema: PropsSchema,\n): schema is FetchingSchemaInterface {\n return (schema as FetchingSchemaInterface).url !== undefined;\n}\n\nexport interface FetchingSchemaInterface {\n url: string;\n requestOptions?: RequestInit;\n}\n\nexport interface ParserReturn {\n asyncapi?: AsyncAPIDocument;\n error?: ErrorObject;\n}\n\nexport enum PayloadType {\n PUBLISH = 'publish',\n SUBSCRIBE = 'subscribe',\n}\n\nexport interface MessageExample {\n name?: string;\n summary?: string;\n example: any;\n}\n\nexport interface ValidationError {\n title: string;\n location: {\n jsonPointer: string;\n startLine: number;\n startColumn: number;\n startOffset: number;\n endLine: number;\n endColumn: number;\n endOffset: number;\n };\n}\n\nexport interface ErrorObject {\n type: string;\n title: string;\n detail?: string;\n parsedJSON?: any;\n validationErrors?: ValidationError[];\n location?: {\n startLine: number;\n startColumn: number;\n startOffset: number;\n };\n refs?: Array<{\n title: string;\n jsonPointer: string;\n startLine: number;\n startColumn: number;\n startOffset: number;\n endLine: number;\n endColumn: number;\n endOffset: number;\n }>;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,yBAAyB,CACvC,MAAmB;IAEnB,OAAQ,MAAkC,CAAC,GAAG,KAAK,SAAS,CAAC;AAC/D,CAAC;AAYD,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;AACzB,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB","sourcesContent":["import { AsyncAPIDocumentInterface } from '@asyncapi/parser';\n\nexport type PropsSchema =\n | string\n | FetchingSchemaInterface\n | AsyncAPIDocumentInterface\n | object;\n\nexport type NullableAsyncApi = AsyncAPIDocumentInterface | null;\n\nexport interface AsyncApiState {\n validatedSchema: NullableAsyncApi;\n error?: ErrorObject;\n}\n\nexport function isFetchingSchemaInterface(\n schema: PropsSchema,\n): schema is FetchingSchemaInterface {\n return (schema as FetchingSchemaInterface).url !== undefined;\n}\n\nexport interface FetchingSchemaInterface {\n url: string;\n requestOptions?: RequestInit;\n}\n\nexport interface ParserReturn {\n asyncapi?: AsyncAPIDocumentInterface;\n error?: ErrorObject;\n}\n\nexport enum PayloadType {\n PUBLISH = 'publish',\n SUBSCRIBE = 'subscribe',\n}\n\nexport interface MessageExample {\n name?: string;\n summary?: string;\n example: any;\n}\n\nexport interface ValidationError {\n title: string;\n location: {\n jsonPointer: string;\n startLine: number;\n startColumn: number;\n startOffset: number;\n endLine: number;\n endColumn: number;\n endOffset: number;\n };\n}\n\nexport interface ErrorObject {\n type: string;\n title: string;\n detail?: string;\n parsedJSON?: any;\n validationErrors?: ValidationError[];\n location?: {\n startLine: number;\n startColumn: number;\n startOffset: number;\n };\n refs?: Array<{\n title: string;\n jsonPointer: string;\n startLine: number;\n startColumn: number;\n startOffset: number;\n endLine: number;\n endColumn: number;\n endOffset: number;\n }>;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { Schema as SchemaType } from '@asyncapi/parser';
2
+ import { SchemaInterface } from '@asyncapi/parser';
3
3
  interface Props {
4
4
  schemaName?: React.ReactNode;
5
- schema?: SchemaType;
5
+ schema?: SchemaInterface;
6
6
  required?: boolean;
7
7
  isPatternProperty?: boolean;
8
8
  isProperty?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/components/Schema.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKxD,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAqWjD,CAAC"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../../src/components/Schema.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKnD,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAOD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAsUjD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { Tag as TagType } from '@asyncapi/parser';
2
+ import { TagInterface } from '@asyncapi/parser';
3
3
  interface Props {
4
- tag: TagType;
4
+ tag: TagInterface;
5
5
  }
6
6
  export declare const Tag: React.FunctionComponent<Props>;
7
7
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/components/Tag.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlD,UAAU,KAAK;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAED,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAsB9C,CAAC"}
1
+ {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../src/components/Tag.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,UAAU,KAAK;IACb,GAAG,EAAE,YAAY,CAAC;CACnB;AAED,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAsB9C,CAAC"}