@api-client/core 0.19.10 → 0.19.12

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 (466) hide show
  1. package/LICENSE.md +9 -63
  2. package/bin/test.ts +1 -12
  3. package/build/src/browser.d.ts +3 -16
  4. package/build/src/browser.d.ts.map +1 -1
  5. package/build/src/browser.js +2 -17
  6. package/build/src/browser.js.map +1 -1
  7. package/build/src/events/EventTypes.d.ts +0 -6
  8. package/build/src/events/EventTypes.d.ts.map +1 -1
  9. package/build/src/events/EventTypes.js +0 -2
  10. package/build/src/events/EventTypes.js.map +1 -1
  11. package/build/src/events/Events.d.ts +0 -2
  12. package/build/src/events/Events.d.ts.map +1 -1
  13. package/build/src/events/Events.js +0 -2
  14. package/build/src/events/Events.js.map +1 -1
  15. package/build/src/index.d.ts +3 -16
  16. package/build/src/index.d.ts.map +1 -1
  17. package/build/src/index.js +2 -17
  18. package/build/src/index.js.map +1 -1
  19. package/build/src/modeling/ApiValidation.d.ts +26 -0
  20. package/build/src/modeling/ApiValidation.d.ts.map +1 -0
  21. package/build/src/modeling/ApiValidation.js +73 -0
  22. package/build/src/modeling/ApiValidation.js.map +1 -0
  23. package/build/src/modeling/Bindings.d.ts +3 -3
  24. package/build/src/modeling/Bindings.d.ts.map +1 -1
  25. package/build/src/modeling/Bindings.js.map +1 -1
  26. package/build/src/modeling/DomainAssociation.d.ts +5 -5
  27. package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
  28. package/build/src/modeling/DomainAssociation.js.map +1 -1
  29. package/build/src/modeling/DomainEntity.d.ts +2 -3
  30. package/build/src/modeling/DomainEntity.d.ts.map +1 -1
  31. package/build/src/modeling/DomainEntity.js +1 -1
  32. package/build/src/modeling/DomainEntity.js.map +1 -1
  33. package/build/src/modeling/DomainProperty.d.ts +2 -3
  34. package/build/src/modeling/DomainProperty.d.ts.map +1 -1
  35. package/build/src/modeling/DomainProperty.js +1 -1
  36. package/build/src/modeling/DomainProperty.js.map +1 -1
  37. package/build/src/modeling/DomainValidation.d.ts +10 -4
  38. package/build/src/modeling/DomainValidation.d.ts.map +1 -1
  39. package/build/src/modeling/DomainValidation.js +55 -72
  40. package/build/src/modeling/DomainValidation.js.map +1 -1
  41. package/build/src/modeling/ai/types.d.ts +2 -2
  42. package/build/src/modeling/ai/types.d.ts.map +1 -1
  43. package/build/src/modeling/ai/types.js.map +1 -1
  44. package/build/src/{amf → modeling/amf}/DataValueGenerator.d.ts +1 -1
  45. package/build/src/modeling/amf/DataValueGenerator.d.ts.map +1 -0
  46. package/build/src/{amf → modeling/amf}/DataValueGenerator.js +2 -3
  47. package/build/src/modeling/amf/DataValueGenerator.js.map +1 -0
  48. package/build/src/modeling/amf/ShapeGenerator.d.ts +20 -20
  49. package/build/src/modeling/amf/ShapeGenerator.d.ts.map +1 -1
  50. package/build/src/modeling/amf/ShapeGenerator.js +16 -18
  51. package/build/src/modeling/amf/ShapeGenerator.js.map +1 -1
  52. package/build/src/modeling/amf/core_types.d.ts +9 -0
  53. package/build/src/modeling/amf/core_types.d.ts.map +1 -0
  54. package/build/src/modeling/amf/core_types.js +45 -0
  55. package/build/src/modeling/amf/core_types.js.map +1 -0
  56. package/build/src/modeling/validation/api_model_rules.d.ts +1 -2
  57. package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -1
  58. package/build/src/modeling/validation/api_model_rules.js +0 -26
  59. package/build/src/modeling/validation/api_model_rules.js.map +1 -1
  60. package/build/src/modeling/validation/association_validation.d.ts +4 -4
  61. package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
  62. package/build/src/modeling/validation/association_validation.js.map +1 -1
  63. package/build/src/modeling/validation/entity_validation.d.ts +6 -6
  64. package/build/src/modeling/validation/entity_validation.d.ts.map +1 -1
  65. package/build/src/modeling/validation/entity_validation.js.map +1 -1
  66. package/build/src/modeling/validation/property_validation.d.ts +3 -3
  67. package/build/src/modeling/validation/property_validation.d.ts.map +1 -1
  68. package/build/src/modeling/validation/property_validation.js.map +1 -1
  69. package/build/src/modeling/validation/rules.d.ts +2 -2
  70. package/build/src/modeling/validation/rules.d.ts.map +1 -1
  71. package/build/src/modeling/validation/rules.js.map +1 -1
  72. package/build/src/modeling/validation/semantic_validation.d.ts +2 -2
  73. package/build/src/modeling/validation/semantic_validation.d.ts.map +1 -1
  74. package/build/src/modeling/validation/semantic_validation.js.map +1 -1
  75. package/build/src/models/http-flows/LegacyTranslator.js +1 -1
  76. package/build/src/models/http-flows/LegacyTranslator.js.map +1 -1
  77. package/build/src/runtime/http-runner/HttpFlows.js +1 -1
  78. package/build/src/runtime/http-runner/HttpFlows.js.map +1 -1
  79. package/build/tsconfig.tsbuildinfo +1 -1
  80. package/eslint.config.js +0 -1
  81. package/package.json +11 -14
  82. package/src/events/EventTypes.ts +0 -2
  83. package/src/events/Events.ts +0 -2
  84. package/src/modeling/ApiValidation.ts +86 -0
  85. package/src/modeling/Bindings.ts +3 -3
  86. package/src/modeling/DomainAssociation.ts +5 -5
  87. package/src/modeling/DomainEntity.ts +3 -4
  88. package/src/modeling/DomainProperty.ts +3 -4
  89. package/src/modeling/DomainValidation.ts +57 -74
  90. package/src/modeling/ai/types.ts +2 -2
  91. package/src/{amf → modeling/amf}/DataValueGenerator.ts +3 -4
  92. package/src/modeling/amf/ShapeGenerator.ts +45 -61
  93. package/src/modeling/amf/core_types.ts +47 -0
  94. package/src/modeling/validation/api_model_rules.ts +1 -31
  95. package/src/modeling/validation/association_validation.ts +6 -6
  96. package/src/modeling/validation/entity_validation.ts +11 -11
  97. package/src/modeling/validation/property_validation.ts +4 -4
  98. package/src/modeling/validation/rules.ts +6 -3
  99. package/src/modeling/validation/semantic_validation.ts +11 -11
  100. package/src/models/http-flows/LegacyTranslator.ts +1 -1
  101. package/src/runtime/http-runner/HttpFlows.ts +1 -1
  102. package/tests/unit/{amf → modeling/amf}/data_value_generator.spec.ts +2 -2
  103. package/tests/unit/modeling/amf/shape_generator.spec.ts +146 -167
  104. package/tests/unit/modeling/domain_asociation.spec.ts +13 -13
  105. package/tests/unit/modeling/domain_validation.spec.ts +7 -13
  106. package/tests/unit/modeling/validation/api_model_rules.spec.ts +11 -9
  107. package/tests/unit/runtime/runners/http_assertion_runner.spec.ts +1 -1
  108. package/tests/unit/runtime/runners/http_flow_runner.spec.ts +1 -1
  109. package/tests/unit/runtime/runners/project_runner.spec.ts +1 -1
  110. package/tests/unit/runtime/runners/request_runner.spec.ts +1 -1
  111. package/tests/unit/runtime/runners/serial_runner.spec.ts +1 -1
  112. package/build/src/amf/AmfMixin.d.ts +0 -396
  113. package/build/src/amf/AmfMixin.d.ts.map +0 -1
  114. package/build/src/amf/AmfMixin.js +0 -1138
  115. package/build/src/amf/AmfMixin.js.map +0 -1
  116. package/build/src/amf/AmfSerializer.d.ts +0 -137
  117. package/build/src/amf/AmfSerializer.d.ts.map +0 -1
  118. package/build/src/amf/AmfSerializer.js +0 -1947
  119. package/build/src/amf/AmfSerializer.js.map +0 -1
  120. package/build/src/amf/AmfTypes.d.ts +0 -25
  121. package/build/src/amf/AmfTypes.d.ts.map +0 -1
  122. package/build/src/amf/AmfTypes.js +0 -143
  123. package/build/src/amf/AmfTypes.js.map +0 -1
  124. package/build/src/amf/ApiExampleGenerator.d.ts +0 -40
  125. package/build/src/amf/ApiExampleGenerator.d.ts.map +0 -1
  126. package/build/src/amf/ApiExampleGenerator.js +0 -112
  127. package/build/src/amf/ApiExampleGenerator.js.map +0 -1
  128. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +0 -68
  129. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts.map +0 -1
  130. package/build/src/amf/ApiMonacoSchemaGenerator.js +0 -248
  131. package/build/src/amf/ApiMonacoSchemaGenerator.js.map +0 -1
  132. package/build/src/amf/ApiSchemaGenerator.d.ts +0 -56
  133. package/build/src/amf/ApiSchemaGenerator.d.ts.map +0 -1
  134. package/build/src/amf/ApiSchemaGenerator.js +0 -94
  135. package/build/src/amf/ApiSchemaGenerator.js.map +0 -1
  136. package/build/src/amf/ApiSchemaValues.d.ts +0 -111
  137. package/build/src/amf/ApiSchemaValues.d.ts.map +0 -1
  138. package/build/src/amf/ApiSchemaValues.js +0 -463
  139. package/build/src/amf/ApiSchemaValues.js.map +0 -1
  140. package/build/src/amf/DataValueGenerator.d.ts.map +0 -1
  141. package/build/src/amf/DataValueGenerator.js.map +0 -1
  142. package/build/src/amf/Parsing.d.ts +0 -48
  143. package/build/src/amf/Parsing.d.ts.map +0 -1
  144. package/build/src/amf/Parsing.js +0 -2
  145. package/build/src/amf/Parsing.js.map +0 -1
  146. package/build/src/amf/Utils.d.ts +0 -37
  147. package/build/src/amf/Utils.d.ts.map +0 -1
  148. package/build/src/amf/Utils.js +0 -169
  149. package/build/src/amf/Utils.js.map +0 -1
  150. package/build/src/amf/data-node/DataNodeBase.d.ts +0 -34
  151. package/build/src/amf/data-node/DataNodeBase.d.ts.map +0 -1
  152. package/build/src/amf/data-node/DataNodeBase.js +0 -77
  153. package/build/src/amf/data-node/DataNodeBase.js.map +0 -1
  154. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +0 -15
  155. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts.map +0 -1
  156. package/build/src/amf/data-node/JsonDataNodeGenerator.js +0 -23
  157. package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +0 -1
  158. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +0 -14
  159. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts.map +0 -1
  160. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +0 -48
  161. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +0 -1
  162. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +0 -22
  163. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts.map +0 -1
  164. package/build/src/amf/data-node/XmlDataNodeGenerator.js +0 -34
  165. package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +0 -1
  166. package/build/src/amf/definitions/Amf.d.ts +0 -363
  167. package/build/src/amf/definitions/Amf.d.ts.map +0 -1
  168. package/build/src/amf/definitions/Amf.js +0 -3
  169. package/build/src/amf/definitions/Amf.js.map +0 -1
  170. package/build/src/amf/definitions/Api.d.ts +0 -383
  171. package/build/src/amf/definitions/Api.d.ts.map +0 -1
  172. package/build/src/amf/definitions/Api.js +0 -2
  173. package/build/src/amf/definitions/Api.js.map +0 -1
  174. package/build/src/amf/definitions/Base.d.ts +0 -12
  175. package/build/src/amf/definitions/Base.d.ts.map +0 -1
  176. package/build/src/amf/definitions/Base.js +0 -2
  177. package/build/src/amf/definitions/Base.js.map +0 -1
  178. package/build/src/amf/definitions/Namespace.d.ts +0 -327
  179. package/build/src/amf/definitions/Namespace.d.ts.map +0 -1
  180. package/build/src/amf/definitions/Namespace.js +0 -346
  181. package/build/src/amf/definitions/Namespace.js.map +0 -1
  182. package/build/src/amf/definitions/Shapes.d.ts +0 -312
  183. package/build/src/amf/definitions/Shapes.d.ts.map +0 -1
  184. package/build/src/amf/definitions/Shapes.js +0 -87
  185. package/build/src/amf/definitions/Shapes.js.map +0 -1
  186. package/build/src/amf/models/AmfDataNode.d.ts +0 -67
  187. package/build/src/amf/models/AmfDataNode.d.ts.map +0 -1
  188. package/build/src/amf/models/AmfDataNode.js +0 -192
  189. package/build/src/amf/models/AmfDataNode.js.map +0 -1
  190. package/build/src/amf/shape/ShapeBase.d.ts +0 -74
  191. package/build/src/amf/shape/ShapeBase.d.ts.map +0 -1
  192. package/build/src/amf/shape/ShapeBase.js +0 -93
  193. package/build/src/amf/shape/ShapeBase.js.map +0 -1
  194. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +0 -47
  195. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts.map +0 -1
  196. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +0 -420
  197. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +0 -1
  198. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +0 -85
  199. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts.map +0 -1
  200. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +0 -852
  201. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +0 -1
  202. package/build/src/events/amf/AmfEventTypes.d.ts +0 -7
  203. package/build/src/events/amf/AmfEventTypes.d.ts.map +0 -1
  204. package/build/src/events/amf/AmfEventTypes.js +0 -7
  205. package/build/src/events/amf/AmfEventTypes.js.map +0 -1
  206. package/build/src/events/amf/AmfEvents.d.ts +0 -34
  207. package/build/src/events/amf/AmfEvents.d.ts.map +0 -1
  208. package/build/src/events/amf/AmfEvents.js +0 -63
  209. package/build/src/events/amf/AmfEvents.js.map +0 -1
  210. package/build/src/mocking/RandExp.d.ts +0 -55
  211. package/build/src/mocking/RandExp.d.ts.map +0 -1
  212. package/build/src/mocking/RandExp.js +0 -302
  213. package/build/src/mocking/RandExp.js.map +0 -1
  214. package/build/src/mocking/lib/ret.d.ts +0 -16
  215. package/build/src/mocking/lib/ret.d.ts.map +0 -1
  216. package/build/src/mocking/lib/ret.js +0 -284
  217. package/build/src/mocking/lib/ret.js.map +0 -1
  218. package/data/apis/APIC-187/APIC-187.raml +0 -21
  219. package/data/apis/APIC-187/dataType.raml +0 -132
  220. package/data/apis/APIC-187/example.raml +0 -84
  221. package/data/apis/APIC-188/APIC-188.raml +0 -21
  222. package/data/apis/APIC-188/dataType.raml +0 -132
  223. package/data/apis/APIC-188/example.raml +0 -84
  224. package/data/apis/APIC-233/APIC-233.raml +0 -15
  225. package/data/apis/APIC-391/APIC-391.raml +0 -44
  226. package/data/apis/APIC-391/examples/post-body-request-example.raml +0 -7
  227. package/data/apis/APIC-483/APIC-483.raml +0 -16
  228. package/data/apis/APIC-483/example/list-of-bank-succ.json +0 -32
  229. package/data/apis/APIC-483/schema/response-retrieve-list-bank.json +0 -68
  230. package/data/apis/APIC-487/APIC-487.raml +0 -36
  231. package/data/apis/APIC-655/APIC-655.raml +0 -44
  232. package/data/apis/APIC-655/delivery.json +0 -12
  233. package/data/apis/APIC-689/APIC-689.raml +0 -20
  234. package/data/apis/APIC-690/APIC-690.raml +0 -17
  235. package/data/apis/APIC-690/datatypes/Address.raml +0 -10
  236. package/data/apis/APIC-690/datatypes/Customer.raml +0 -17
  237. package/data/apis/APIC-690/examples/CustomerExample2.raml +0 -17
  238. package/data/apis/APIC-690/examples/CustomersExample.raml +0 -34
  239. package/data/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json +0 -1383
  240. package/data/apis/SE-10469/SE-10469.raml +0 -11
  241. package/data/apis/SE-13092/Examples/PersonExample.raml +0 -7
  242. package/data/apis/SE-13092/SE-13092.raml +0 -37
  243. package/data/apis/SE-13092/datatypes/Address.raml +0 -5
  244. package/data/apis/SE-13092/datatypes/InlineType.raml +0 -5
  245. package/data/apis/SE-13092/datatypes/Person.raml +0 -15
  246. package/data/apis/SE-22063/SE-22063.raml +0 -14
  247. package/data/apis/SE-22063/stock.raml +0 -41
  248. package/data/apis/amf-helper-api/amf-helper-api.raml +0 -1024
  249. package/data/apis/amf-helper-api/examples/comment-example.json +0 -42
  250. package/data/apis/amf-helper-api/examples/commentCreateRequest-example.json +0 -7
  251. package/data/apis/amf-helper-api/examples/commentList-example.json +0 -48
  252. package/data/apis/amf-helper-api/examples/person.json +0 -14
  253. package/data/apis/amf-helper-api/examples/person.raml +0 -13
  254. package/data/apis/amf-helper-api/examples/person.xml +0 -14
  255. package/data/apis/amf-helper-api/libraries/comment-lib.raml +0 -143
  256. package/data/apis/amf-helper-api/library.raml +0 -7
  257. package/data/apis/amf-helper-api/schemas/person.json +0 -104
  258. package/data/apis/amf-helper-api/schemas/person.xsd +0 -26
  259. package/data/apis/amf-helper-api/traits/file.raml +0 -33
  260. package/data/apis/amf-helper-api/traits/pagination.raml +0 -80
  261. package/data/apis/amf-helper-api/traits/results.raml +0 -19
  262. package/data/apis/amf-helper-api/traits/visibility.raml +0 -14
  263. package/data/apis/amf-helper-api/types/app-person.raml +0 -101
  264. package/data/apis/amf-helper-api/types/dimensions.raml +0 -24
  265. package/data/apis/amf-helper-api/types/external-type.raml +0 -7
  266. package/data/apis/amf-helper-api/types/image.raml +0 -23
  267. package/data/apis/amf-helper-api/types/product.raml +0 -52
  268. package/data/apis/amf-helper-api/types/resource.raml +0 -11
  269. package/data/apis/amf-helper-api/types/standard-request.raml +0 -50
  270. package/data/apis/amf-helper-api/types/user.raml +0 -37
  271. package/data/apis/arc-demo-api/arc-demo-api.raml +0 -468
  272. package/data/apis/arc-demo-api/examples/e400.xml +0 -4
  273. package/data/apis/arc-demo-api/examples/e401.xml +0 -4
  274. package/data/apis/arc-demo-api/examples/e404.xml +0 -4
  275. package/data/apis/arc-demo-api/examples/image.xml +0 -5
  276. package/data/apis/arc-demo-api/examples/messages-example.json +0 -22
  277. package/data/apis/arc-demo-api/examples/messages-sent-example.json +0 -15
  278. package/data/apis/arc-demo-api/examples/person.json +0 -14
  279. package/data/apis/arc-demo-api/examples/person.url.encoded +0 -1
  280. package/data/apis/arc-demo-api/examples/person.xml +0 -14
  281. package/data/apis/arc-demo-api/examples/product.xml +0 -9
  282. package/data/apis/arc-demo-api/library.raml +0 -36
  283. package/data/apis/arc-demo-api/resourceTypes/app-person.raml +0 -49
  284. package/data/apis/arc-demo-api/resourceTypes/example-types.raml +0 -45
  285. package/data/apis/arc-demo-api/resourceTypes/image.raml +0 -23
  286. package/data/apis/arc-demo-api/resourceTypes/message-sent-type.raml +0 -23
  287. package/data/apis/arc-demo-api/resourceTypes/message-type.raml +0 -33
  288. package/data/apis/arc-demo-api/resourceTypes/product.raml +0 -52
  289. package/data/apis/arc-demo-api/resourceTypes/resource.raml +0 -11
  290. package/data/apis/arc-demo-api/schemas/error-response.xsd +0 -11
  291. package/data/apis/arc-demo-api/schemas/image.xsd +0 -11
  292. package/data/apis/arc-demo-api/schemas/person.json +0 -104
  293. package/data/apis/arc-demo-api/schemas/person.xsd +0 -26
  294. package/data/apis/arc-demo-api/schemas/product.xsd +0 -17
  295. package/data/apis/arc-demo-api/securitySchemes/basic.raml +0 -5
  296. package/data/apis/arc-demo-api/securitySchemes/oauth_2_0.raml +0 -29
  297. package/data/apis/arc-demo-api/securitySchemes/x-custom.raml +0 -26
  298. package/data/apis/arc-demo-api/traits/adminable.raml +0 -23
  299. package/data/apis/arc-demo-api/traits/pagination.raml +0 -83
  300. package/data/apis/arc-demo-api/traits/rate-limited.raml +0 -9
  301. package/data/apis/async-api/async-api.yaml +0 -96
  302. package/data/apis/example-generator-api/contact-email-example.raml +0 -6
  303. package/data/apis/example-generator-api/contact-example.raml +0 -5
  304. package/data/apis/example-generator-api/contact-fax-example.raml +0 -5
  305. package/data/apis/example-generator-api/contact-website-example.raml +0 -2
  306. package/data/apis/example-generator-api/example-1.raml +0 -6
  307. package/data/apis/example-generator-api/example-2.raml +0 -9
  308. package/data/apis/example-generator-api/example-3.raml +0 -4
  309. package/data/apis/example-generator-api/example-4.raml +0 -2
  310. package/data/apis/example-generator-api/example-5.raml +0 -4
  311. package/data/apis/example-generator-api/example-6.raml +0 -2
  312. package/data/apis/example-generator-api/example-7.raml +0 -5
  313. package/data/apis/example-generator-api/example-generator-api.raml +0 -423
  314. package/data/apis/example-generator-api/example.json +0 -14
  315. package/data/apis/example-generator-api/example.xml +0 -15
  316. package/data/apis/example-generator-api/example.xsd +0 -26
  317. package/data/apis/example-generator-api/examples/employee.raml +0 -7
  318. package/data/apis/example-generator-api/examples/employees.raml +0 -7
  319. package/data/apis/example-generator-api/linked-named-example.raml +0 -21
  320. package/data/apis/example-generator-api/named-example-with-link.raml +0 -5
  321. package/data/apis/example-generator-api/named-example.raml +0 -9
  322. package/data/apis/example-generator-api/user-json-example.raml +0 -17
  323. package/data/apis/example-generator-api/user-raml-example.raml +0 -37
  324. package/data/apis/example-generator-api/user.json +0 -8
  325. package/data/apis/example-generator-api/user.raml +0 -18
  326. package/data/apis/example-generator-api/users-json-example.raml +0 -17
  327. package/data/apis/example-generator-api/users-raml-example.raml +0 -32
  328. package/data/apis/example-generator-api/users.json +0 -8
  329. package/data/apis/expanded-api/expanded-api.raml +0 -8
  330. package/data/apis/flattened-api/flattened-api.raml +0 -8
  331. package/data/apis/multiple-servers/multiple-servers.yaml +0 -112
  332. package/data/apis/oas-3-api/oas-3-api.yaml +0 -356
  333. package/data/apis/oas-date/oas-date.yaml +0 -28
  334. package/data/apis/oas-types/oas-types.yaml +0 -159
  335. package/data/apis/oas-unions/oas-unions.yaml +0 -75
  336. package/data/apis/petstore/petstore.yaml +0 -954
  337. package/data/apis/raml-date/raml-date.raml +0 -28
  338. package/data/apis/recursive/recursive.raml +0 -14
  339. package/data/apis/schema-api/examples/person.json +0 -14
  340. package/data/apis/schema-api/examples/person.raml +0 -14
  341. package/data/apis/schema-api/examples/person.url.encoded +0 -1
  342. package/data/apis/schema-api/examples/person.xml +0 -14
  343. package/data/apis/schema-api/library/demo-types.raml +0 -43
  344. package/data/apis/schema-api/schema-api.raml +0 -656
  345. package/data/apis/schema-api/schemas/person.json +0 -104
  346. package/data/apis/schema-api/schemas/person.xsd +0 -26
  347. package/data/apis/schema-api/types/DemoPerson.raml +0 -67
  348. package/data/apis/secured-api/oauth-2-custom-settings.raml +0 -143
  349. package/data/apis/secured-api/oauth2-header-delivery.raml +0 -13
  350. package/data/apis/secured-api/oauth2-no-delivery.raml +0 -8
  351. package/data/apis/secured-api/oauth2-no-grants.raml +0 -12
  352. package/data/apis/secured-api/oauth2-pkce.raml +0 -13
  353. package/data/apis/secured-api/oauth2-query-delivery.raml +0 -13
  354. package/data/apis/secured-api/oauth_1_0.raml +0 -8
  355. package/data/apis/secured-api/oauth_1_0_no-settings.raml +0 -3
  356. package/data/apis/secured-api/oauth_1_0_no-signature.raml +0 -7
  357. package/data/apis/secured-api/oauth_1_0_signature.raml +0 -8
  358. package/data/apis/secured-api/passthrough-querystring.raml +0 -16
  359. package/data/apis/secured-api/passthrough.raml +0 -24
  360. package/data/apis/secured-api/secured-api.raml +0 -231
  361. package/data/apis/secured-api/x-custom.raml +0 -33
  362. package/data/apis/secured-api/x-other.raml +0 -29
  363. package/data/apis/secured-api/x-query-string.raml +0 -16
  364. package/data/apis/tracked-examples/datatypes/employee.raml +0 -5
  365. package/data/apis/tracked-examples/examples/employee.raml +0 -4
  366. package/data/apis/tracked-examples/examples/employees.raml +0 -8
  367. package/data/apis/tracked-examples/tracked-to-linked.raml +0 -28
  368. package/data/model.js +0 -129
  369. package/data/models/APIC-187.json +0 -11416
  370. package/data/models/APIC-188.json +0 -11416
  371. package/data/models/APIC-233.json +0 -539
  372. package/data/models/APIC-391.json +0 -1903
  373. package/data/models/APIC-483.json +0 -3110
  374. package/data/models/APIC-487.json +0 -1225
  375. package/data/models/APIC-655.json +0 -3145
  376. package/data/models/APIC-689.json +0 -797
  377. package/data/models/APIC-690.json +0 -5992
  378. package/data/models/SE-10469.json +0 -22898
  379. package/data/models/SE-13092.json +0 -2769
  380. package/data/models/SE-22063.json +0 -2314
  381. package/data/models/amf-helper-api.json +0 -84457
  382. package/data/models/arc-demo-api.json +0 -52041
  383. package/data/models/async-api.json +0 -3227
  384. package/data/models/example-generator-api.json +0 -45209
  385. package/data/models/expanded-api.json +0 -251
  386. package/data/models/flattened-api.json +0 -251
  387. package/data/models/multiple-servers.json +0 -2769
  388. package/data/models/oas-3-api.json +0 -10590
  389. package/data/models/oas-date.json +0 -637
  390. package/data/models/oas-types.json +0 -5352
  391. package/data/models/oas-unions.json +0 -1935
  392. package/data/models/petstore.json +0 -27712
  393. package/data/models/raml-date.json +0 -1114
  394. package/data/models/recursive.json +0 -610
  395. package/data/models/schema-api.json +0 -35527
  396. package/data/models/secured-api.json +0 -21071
  397. package/data/models/tracked-to-linked.json +0 -1914
  398. package/src/amf/AmfMixin.ts +0 -1726
  399. package/src/amf/AmfSerializer.ts +0 -2358
  400. package/src/amf/AmfTypes.ts +0 -147
  401. package/src/amf/ApiExampleGenerator.ts +0 -122
  402. package/src/amf/ApiMonacoSchemaGenerator.ts +0 -332
  403. package/src/amf/ApiSchemaGenerator.ts +0 -115
  404. package/src/amf/ApiSchemaValues.ts +0 -509
  405. package/src/amf/Parsing.ts +0 -50
  406. package/src/amf/Utils.ts +0 -172
  407. package/src/amf/data-node/DataNodeBase.ts +0 -83
  408. package/src/amf/data-node/JsonDataNodeGenerator.ts +0 -24
  409. package/src/amf/data-node/README.md +0 -3
  410. package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +0 -49
  411. package/src/amf/data-node/XmlDataNodeGenerator.ts +0 -46
  412. package/src/amf/definitions/Amf.ts +0 -440
  413. package/src/amf/definitions/Api.ts +0 -445
  414. package/src/amf/definitions/Base.ts +0 -13
  415. package/src/amf/definitions/Namespace.ts +0 -357
  416. package/src/amf/definitions/Shapes.ts +0 -438
  417. package/src/amf/models/AmfDataNode.ts +0 -210
  418. package/src/amf/shape/README.md +0 -4
  419. package/src/amf/shape/ShapeBase.ts +0 -174
  420. package/src/amf/shape/ShapeJsonSchemaGenerator.ts +0 -457
  421. package/src/amf/shape/ShapeXmlSchemaGenerator.ts +0 -933
  422. package/src/events/amf/AmfEventTypes.ts +0 -6
  423. package/src/events/amf/AmfEvents.ts +0 -78
  424. package/src/mocking/RandExp.ts +0 -335
  425. package/src/mocking/lib/ret.ts +0 -279
  426. package/tests/unit/amf/APIC-187.spec.ts +0 -41
  427. package/tests/unit/amf/APIC-188.spec.ts +0 -30
  428. package/tests/unit/amf/APIC-233.spec.ts +0 -32
  429. package/tests/unit/amf/APIC-391.spec.ts +0 -39
  430. package/tests/unit/amf/APIC-487.spec.ts +0 -44
  431. package/tests/unit/amf/APIC-655.spec.ts +0 -41
  432. package/tests/unit/amf/APIC-689.spec.ts +0 -28
  433. package/tests/unit/amf/APIC-690.spec.ts +0 -93
  434. package/tests/unit/amf/AmfLoader.ts +0 -538
  435. package/tests/unit/amf/AmfMixin.spec.ts +0 -1707
  436. package/tests/unit/amf/ApiExampleGenerator.spec.ts +0 -250
  437. package/tests/unit/amf/ApiMonacoSchemaGenerator.spec.ts +0 -183
  438. package/tests/unit/amf/ApiSchemaValues.spec.ts +0 -602
  439. package/tests/unit/amf/Namepsace.spec.ts +0 -494
  440. package/tests/unit/amf/SE-10469.spec.ts +0 -35
  441. package/tests/unit/amf/SE-13092.spec.ts +0 -64
  442. package/tests/unit/amf/SE-22063.spec.ts +0 -45
  443. package/tests/unit/amf/raml-examples.spec.ts +0 -43
  444. package/tests/unit/amf/schema_gen_array.spec.ts +0 -199
  445. package/tests/unit/amf/schema_gen_oas.spec.ts +0 -140
  446. package/tests/unit/amf/schema_gen_object.spec.ts +0 -279
  447. package/tests/unit/amf/schema_gen_scalar.spec.ts +0 -143
  448. package/tests/unit/amf/schema_gen_union.spec.ts +0 -401
  449. package/tests/unit/amf/schema_gen_unknown.spec.ts +0 -42
  450. package/tests/unit/amf/schema_gen_xml.spec.ts +0 -726
  451. package/tests/unit/amf/serializer/APIC-483.spec.ts +0 -36
  452. package/tests/unit/amf/serializer/Anotations.spec.ts +0 -50
  453. package/tests/unit/amf/serializer/Api.spec.ts +0 -210
  454. package/tests/unit/amf/serializer/Documentation.spec.ts +0 -52
  455. package/tests/unit/amf/serializer/Endpoints.spec.ts +0 -172
  456. package/tests/unit/amf/serializer/Operations.spec.ts +0 -330
  457. package/tests/unit/amf/serializer/Parameters.spec.ts +0 -149
  458. package/tests/unit/amf/serializer/PayloadExamples.spec.ts +0 -152
  459. package/tests/unit/amf/serializer/Security.spec.ts +0 -626
  460. package/tests/unit/amf/serializer/Server.spec.ts +0 -78
  461. package/tests/unit/amf/serializer/Shapes.spec.ts +0 -304
  462. package/tests/unit/amf/serializer/SourceMaps.spec.ts +0 -52
  463. package/tests/unit/amf/shapes/ShapeXmlSchemaGenerator.spec.ts +0 -28
  464. package/tests/unit/amf/tracked-to-linked.spec.ts +0 -90
  465. package/tests/unit/amf/xml-data-processing.spec.ts +0 -217
  466. package/tests/unit/events/amf.spec.ts +0 -151
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmfSerializer.js","sourceRoot":"","sources":["../../../src/amf/AmfSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import { AmfMixin, findAmfType, getArrayItems } from './AmfMixin.js'\nimport {\n IAmfAnyShape,\n IAmfApi,\n IAmfArrayNode,\n IAmfArrayShape,\n IAmfAsyncApi,\n IAmfCreativeWork,\n IAmfDataArrangeShape,\n IAmfDataNode,\n IAmfDocumentSourceMaps,\n IAmfDomainElement,\n IAmfEndPoint,\n IAmfExample,\n IAmfFileShape,\n IAmfLicense,\n IAmfNodeShape,\n IAmfObjectNode,\n IAmfOperation,\n IAmfOrganization,\n IAmfParameter,\n IAmfPropertyShape,\n IAmfRecursiveShape,\n IAmfScalarNode,\n IAmfScalarShape,\n IAmfSchemaShape,\n IAmfSecurityRequirement,\n IAmfServer,\n IAmfShape,\n IAmfSynthesizedField,\n IAmfTupleShape,\n IAmfUnionShape,\n IAmfWebApi,\n IAmfXMLSerializer,\n IAmfPayload,\n IAmfTag,\n IAmfCallback,\n IAmfRequest,\n IAmfResponse,\n IAmfTemplatedLink,\n IAmfIriTemplateMapping,\n IAmfParametrizedSecurityScheme,\n IAmfSecurityScheme,\n IAmfSettings,\n IAmfOAuth1Settings,\n IAmfOAuth2Settings,\n IAmfApiKeySettings,\n IAmfHttpSettings,\n IAmfOpenIdConnectSettings,\n IAmfOAuth2Flow,\n IAmfScope,\n IAmfParametrizedDeclaration,\n IAmfParametrizedTrait,\n IAmfParametrizedResourceType,\n IAmfVariableValue,\n IAmfAbstractDeclaration,\n} from './definitions/Amf.js'\nimport {\n IApiAbstractDeclaration,\n IApiAsync,\n IApiBase,\n IApiCallback,\n IApiDocumentation,\n IApiDocumentSourceMaps,\n IApiEndPoint,\n IApiEndPointWithOperationsListItem,\n IApiIriTemplateMapping,\n IApiLicense,\n IApiOperation,\n IApiOperationListItem,\n IApiOrganization,\n IApiParameter,\n IApiParametrizedDeclaration,\n IApiParametrizedResourceType,\n IApiParametrizedSecurityScheme,\n IApiParametrizedTrait,\n IApiPayload,\n IApiRequest,\n IApiResponse,\n IApiSecurityApiKeySettings,\n IApiSecurityHttpSettings,\n IApiSecurityOAuth1Settings,\n IApiSecurityOAuth2Flow,\n IApiSecurityOAuth2Settings,\n IApiSecurityOpenIdConnectSettings,\n IApiSecurityRequirement,\n IApiSecurityScheme,\n IApiSecuritySchemeListItem,\n IApiSecurityScope,\n IApiSecuritySettings,\n IApiSecuritySettingsUnion,\n IApiServer,\n IApiSummary,\n IApiSynthesizedField,\n IApiTag,\n IApiTemplatedLink,\n IApiVariableValue,\n IApiWeb,\n IShapeProcessingOptions,\n} from './definitions/Api.js'\nimport { IApiCustomDomainProperty } from './definitions/Base.js'\nimport { AmfNamespace as ns } from './definitions/Namespace.js'\nimport {\n IApiAnyShape,\n IApiArrayNode,\n IApiArrayShape,\n IApiDataArrangeShape,\n IApiDataExample,\n IApiDataNode,\n IApiDataNodeUnion,\n IApiFileShape,\n IApiNodeShape,\n IApiObjectNode,\n IApiPropertyShape,\n IApiRecursiveShape,\n IApiScalarNode,\n IApiScalarShape,\n IApiSchemaShape,\n IApiShape,\n IShapeUnion,\n IApiTupleShape,\n IApiUnionShape,\n IApiXmlSerializer,\n} from './definitions/Shapes.js'\n\n/**\n * A class that takes AMF's ld+json model and outputs JavaScript interface of it.\n */\nexport class AmfSerializer extends AmfMixin(Object) {\n /**\n * @param graph Optional AMF generated graph model.\n */\n constructor(graph?: IAmfDomainElement) {\n super()\n if (graph) {\n this.amf = graph\n }\n }\n\n /**\n * @param types The list of graph object types. When not defined it returns an empty array.\n * @returns The expanded types.\n */\n readTypes(types: string[], context?: Record<string, string>): string[] {\n let target = types\n if (typeof target === 'string') {\n target = [target]\n }\n if (!Array.isArray(target)) {\n return []\n }\n return target.map((type) => this._expandKey(type, context))\n }\n\n /**\n * @param object The API to serialize.\n * @returns API summary, without complex objects.\n */\n apiSummary(object: IAmfApi): IApiSummary {\n const context = object['@context']\n const result: IApiSummary = {\n id: object['@id'],\n types: this.readTypes(object['@type'], context),\n customDomainProperties: this.customDomainProperties(object, context),\n sourceMaps: this.sourceMap(object),\n schemes: [],\n accepts: [],\n contentType: [],\n documentations: [],\n tags: [],\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, context)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, context)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const version = this._getValue(object, ns.aml.vocabularies.core.version, context)\n if (version && typeof version === 'string') {\n result.version = version\n }\n const termsOfService = this._getValue(object, ns.aml.vocabularies.core.termsOfService, context)\n if (termsOfService && typeof termsOfService === 'string') {\n result.termsOfService = termsOfService\n }\n const accepts = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.accepts, context) as keyof IAmfApi\n ] as unknown[]\n if (Array.isArray(accepts) && accepts.length) {\n result.accepts = this._getValueArray(object, ns.aml.vocabularies.apiContract.accepts, context) as string[]\n }\n const contentType = object[this._getAmfKey(ns.aml.vocabularies.apiContract.contentType, context) as keyof IAmfApi]\n if (Array.isArray(contentType) && contentType.length) {\n result.contentType = this._getValueArray(object, ns.aml.vocabularies.apiContract.contentType, context) as string[]\n }\n const schemes = object[this._getAmfKey(ns.aml.vocabularies.apiContract.scheme, context) as keyof IAmfApi]\n if (Array.isArray(schemes) && schemes.length) {\n result.schemes = this._getValueArray(object, ns.aml.vocabularies.apiContract.scheme, context) as string[]\n }\n let provider = object[this._getAmfKey(ns.aml.vocabularies.core.provider, context) as keyof IAmfApi] as\n | IAmfOrganization[]\n | IAmfOrganization\n if (Array.isArray(provider)) {\n ;[provider] = provider\n }\n if (provider) {\n result.provider = this.provider(provider)\n }\n let license = object[this._getAmfKey(ns.aml.vocabularies.core.license, context) as keyof IAmfApi] as\n | IAmfLicense\n | IAmfLicense[]\n if (Array.isArray(license)) {\n ;[license] = license\n }\n if (license) {\n result.license = this.license(license)\n }\n const tags = object[this._getAmfKey(ns.aml.vocabularies.apiContract.tag, context) as keyof IAmfApi] as\n | IAmfTag[]\n | undefined\n if (Array.isArray(tags) && tags.length) {\n result.tags = tags.map((t) => this.tag(t))\n }\n const docs = object[this._getAmfKey(ns.aml.vocabularies.core.documentation, context) as keyof IAmfApi] as\n | IAmfCreativeWork[]\n | undefined\n if (Array.isArray(docs) && docs.length) {\n result.documentations = docs.map((d) => this.documentation(d))\n }\n return result\n }\n\n api(object: IAmfApi, context?: Record<string, string>): IApiBase {\n const objectContext = context || object['@context']\n const result = this.apiSummary(object) as IApiBase\n result.endPoints = []\n result.servers = []\n result.security = []\n\n const endPoints = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.endpoint, objectContext) as keyof IAmfApi\n ] as IAmfEndPoint[] | undefined\n if (Array.isArray(endPoints) && endPoints.length) {\n result.endPoints = endPoints.map((e) => this.endPoint(e, objectContext))\n }\n const servers = object[this._getAmfKey(ns.aml.vocabularies.apiContract.server, objectContext) as keyof IAmfApi] as\n | IAmfServer\n | IAmfServer[]\n | undefined\n if (Array.isArray(servers) && servers.length) {\n result.servers = servers.map((s) => this.server(s, objectContext))\n }\n const security = object[this._getAmfKey(ns.aml.vocabularies.security.security, objectContext) as keyof IAmfApi] as\n | IAmfSecurityRequirement[]\n | undefined\n if (Array.isArray(security) && security.length) {\n result.security = security.map((s) => this.securityRequirement(s, objectContext))\n }\n return result\n }\n\n webApi(object: IAmfWebApi, context?: Record<string, string>): IApiWeb {\n return this.api(object, context)\n }\n\n asyncApi(object: IAmfAsyncApi, context?: Record<string, string>): IApiAsync {\n return this.api(object, context)\n }\n\n provider(object: IAmfOrganization, context?: Record<string, string>): IApiOrganization {\n const objectContext = context || object['@context']\n const result: IApiOrganization = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const url = this._getLinkValue(object, ns.aml.vocabularies.core.url, objectContext)\n if (url && typeof url === 'string') {\n result.url = url\n }\n const email = this._getValue(object, ns.aml.vocabularies.core.email, objectContext)\n if (email && typeof email === 'string') {\n result.email = email\n }\n return result\n }\n\n license(object: IAmfLicense, context?: Record<string, string>): IApiLicense {\n const objectContext = context || object['@context']\n const result: IApiLicense = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const url = this._getLinkValue(object, ns.aml.vocabularies.core.url, objectContext)\n if (url && typeof url === 'string') {\n result.url = url\n }\n return result\n }\n\n /**\n * @param object The AMF Server to serialize.\n * @returns Serialized Server\n */\n server(object: IAmfServer, context?: Record<string, string>): IApiServer {\n const objectContext = context || object['@context']\n\n const url = (this._getValue(object, ns.aml.vocabularies.core.urlTemplate, objectContext) as string) || ''\n const result: IApiServer = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n url,\n variables: [],\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const variables = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.variable, objectContext) as keyof IAmfServer\n ] as IAmfParameter[]\n if (Array.isArray(variables) && variables.length) {\n result.variables = variables.map((p) => this.parameter(p, objectContext))\n }\n const protocol = this._getValue(object, ns.aml.vocabularies.apiContract.protocol, objectContext) as string\n const protocolVersion = this._getValue(\n object,\n ns.aml.vocabularies.apiContract.protocolVersion,\n objectContext\n ) as string\n if (protocol) {\n result.protocol = protocol\n }\n if (protocolVersion) {\n result.protocolVersion = protocolVersion\n }\n const security = object[\n this._getAmfKey(ns.aml.vocabularies.security.security, objectContext) as keyof IAmfServer\n ] as IAmfSecurityRequirement[]\n if (Array.isArray(security) && security.length) {\n result.security = security.map((p) => this.securityRequirement(p, objectContext))\n }\n return result\n }\n\n /**\n * @param object The Parameter to serialize.\n * @returns Serialized Parameter\n */\n parameter(object: IAmfParameter, context?: Record<string, string>): IApiParameter {\n const objectContext = context || object['@context']\n const result: IApiParameter = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n payloads: [],\n examples: [],\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const paramName = this._getValue(object, ns.aml.vocabularies.apiContract.paramName, objectContext)\n if (paramName && typeof paramName === 'string') {\n result.paramName = paramName\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const required = this._getValue(object, ns.aml.vocabularies.apiContract.required, objectContext)\n if (typeof required === 'boolean') {\n result.required = required\n }\n const allowEmptyValue = this._getValue(object, ns.aml.vocabularies.apiContract.allowEmptyValue, objectContext)\n if (typeof allowEmptyValue === 'boolean') {\n result.allowEmptyValue = allowEmptyValue\n }\n const deprecated = this._getValue(object, ns.aml.vocabularies.document.deprecated, objectContext)\n if (typeof deprecated === 'boolean') {\n result.deprecated = deprecated\n }\n const explode = this._getValue(object, ns.aml.vocabularies.apiContract.explode, objectContext)\n if (typeof explode === 'boolean') {\n result.explode = explode\n }\n const allowReserved = this._getValue(object, ns.aml.vocabularies.apiContract.allowReserved, objectContext)\n if (typeof allowReserved === 'boolean') {\n result.allowReserved = allowReserved\n }\n const style = this._getValue(object, ns.aml.vocabularies.apiContract.style, objectContext)\n if (style && typeof style === 'string') {\n result.style = style\n }\n const binding = this._getValue(object, ns.aml.vocabularies.apiContract.binding, objectContext)\n if (binding && typeof binding === 'string') {\n result.binding = binding\n }\n const schemas = object[\n this._getAmfKey(ns.aml.vocabularies.shapes.schema, objectContext) as keyof IAmfParameter\n ] as IAmfShape[]\n if (Array.isArray(schemas) && schemas.length) {\n const [schema] = schemas\n result.schema = this.unknownShape(\n schema,\n {\n trackedId: object['@id'],\n },\n objectContext\n )\n }\n const payloads = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.payload, objectContext) as keyof IAmfParameter\n ] as IAmfPayload[]\n if (Array.isArray(payloads) && payloads.length) {\n result.payloads = payloads.map((p) => this.payload(p, objectContext))\n }\n const examples = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.examples, objectContext) as keyof IAmfParameter\n ] as IAmfParameter[]\n if (Array.isArray(examples) && examples.length) {\n result.examples = examples.map((e) => this.example(e, objectContext))\n }\n return result\n }\n\n unknownShape(object: IAmfShape, options?: IShapeProcessingOptions, context?: Record<string, string>): IShapeUnion {\n const objectContext = context || object['@context']\n const types = this.readTypes(object['@type'], objectContext)\n\n if (types.includes(ns.aml.vocabularies.shapes.ScalarShape)) {\n return this.scalarShape(object as IAmfScalarShape, options, objectContext)\n }\n if (types.includes(ns.w3.shacl.NodeShape)) {\n return this.nodeShape(object as IAmfNodeShape, options, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.shapes.UnionShape)) {\n return this.unionShape(object as IAmfUnionShape, options, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.shapes.FileShape)) {\n return this.fileShape(object as IAmfFileShape, options, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.shapes.SchemaShape)) {\n return this.schemaShape(object as IAmfSchemaShape, options, objectContext)\n }\n // this must be before the ArrayShape\n if (types.includes(ns.aml.vocabularies.shapes.TupleShape)) {\n return this.tupleShape(object as IAmfTupleShape, options, objectContext)\n }\n if (\n types.includes(ns.aml.vocabularies.shapes.ArrayShape) ||\n types.includes(ns.aml.vocabularies.shapes.MatrixShape)\n ) {\n return this.arrayShape(object as IAmfArrayShape, options, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.shapes.RecursiveShape)) {\n return this.recursiveShape(object as IAmfRecursiveShape, objectContext)\n }\n // recursiveShape\n return this.anyShape(object as IAmfAnyShape, options, objectContext)\n }\n\n isLink(object: IAmfDomainElement, context?: Record<string, string>): boolean {\n const objectContext = context || object['@context']\n return !!this._getLinkValue(object, ns.aml.vocabularies.document.linkTarget, objectContext)\n }\n\n getLinkTarget<T extends IAmfDomainElement>(object: T, context?: Record<string, string>): T | undefined {\n const objectContext = context || object['@context']\n const id = this._getLinkValue(object, ns.aml.vocabularies.document.linkTarget, objectContext)\n if (!id) {\n return undefined\n }\n return this[findAmfType](id, objectContext) as T | undefined\n }\n\n shape(object: IAmfShape, context?: Record<string, string>): IApiShape {\n const objectContext = context || object['@context']\n this._resolve(object)\n let linkLabel: string | undefined\n let target = object\n if (this.isLink(target)) {\n linkLabel = this._getValue(target, ns.aml.vocabularies.document.linkLabel, objectContext) as string\n const id = this._getLinkValue(target, ns.aml.vocabularies.document.linkTarget, objectContext)\n const value = this[findAmfType](id, objectContext) as IAmfShape | undefined\n if (value) {\n target = value\n }\n }\n const result: IApiShape = {\n id: target['@id'],\n types: this.readTypes(object['@type'], objectContext),\n values: [],\n inherits: [],\n or: [],\n and: [],\n xone: [],\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n if (linkLabel) {\n result.linkLabel = linkLabel\n }\n\n const name = this._getValue(target, ns.w3.shacl.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const displayName = this._getValue(target, ns.aml.vocabularies.core.displayName, objectContext)\n if (displayName && typeof displayName === 'string') {\n result.displayName = displayName\n } else {\n const coreName = this._getValue(target, ns.aml.vocabularies.core.name, objectContext)\n if (coreName && typeof coreName === 'string') {\n result.displayName = coreName\n }\n }\n const description = this._getValue(target, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const defaultValueStr = this._getValue(target, ns.w3.shacl.defaultValueStr, objectContext)\n if (defaultValueStr && typeof defaultValueStr === 'string') {\n result.defaultValueStr = defaultValueStr\n }\n const deprecated = this._getValue(target, ns.aml.vocabularies.shapes.deprecated, objectContext)\n if (typeof deprecated === 'boolean') {\n result.deprecated = deprecated\n }\n const readOnly = this._getValue(target, ns.aml.vocabularies.shapes.readOnly, objectContext)\n if (typeof readOnly === 'boolean') {\n result.readOnly = readOnly\n }\n const writeOnly = this._getValue(target, ns.aml.vocabularies.shapes.writeOnly, objectContext)\n if (typeof writeOnly === 'boolean') {\n result.writeOnly = writeOnly\n }\n const defValue = target[this._getAmfKey(ns.w3.shacl.defaultValue, objectContext) as keyof IAmfShape]\n if (Array.isArray(defValue) && defValue.length) {\n result.defaultValue = this.unknownDataNode(defValue[0] as IAmfDataNode, objectContext)\n }\n // @TODO:\n // if (Array.isArray(inherits) && inherits.length) {\n // result.inherits = inherits.map((item) => this.unknownShape(item));\n // }\n const orKey = this._getAmfKey(ns.w3.shacl.or, objectContext) as keyof IAmfShape\n const orGroup = target[orKey] as IAmfShape[]\n if (Array.isArray(orGroup) && orGroup.length) {\n result.or = orGroup.map((item) => this.unknownShape(item, undefined, objectContext))\n }\n const andKey = this._getAmfKey(ns.w3.shacl.and, objectContext) as keyof IAmfShape\n const andGroup = target[andKey] as IAmfShape[]\n if (Array.isArray(andGroup) && andGroup.length) {\n result.and = andGroup.map((item) => this.unknownShape(item, undefined, objectContext))\n }\n const xoneKey = this._getAmfKey(ns.w3.shacl.xone, objectContext) as keyof IAmfShape\n const xone = target[xoneKey] as IAmfShape[]\n if (Array.isArray(xone) && xone.length) {\n result.xone = xone.map((item) => this.unknownShape(item, undefined, objectContext))\n }\n\n const valuesList = target[this._getAmfKey(ns.w3.shacl.in, objectContext) as keyof IAmfShape]\n if (Array.isArray(valuesList) && valuesList.length) {\n const [values] = valuesList\n const prefix = ns.w3.rdfSchema.key\n const prefixCompact = this._getAmfKey(prefix, objectContext) as string\n Object.keys(values).forEach((key) => {\n if (key.startsWith(prefix) || key.startsWith(prefixCompact)) {\n let value = (values as unknown as Record<string, IAmfDataNode>)[key]\n if (Array.isArray(value)) {\n ;[value] = value\n }\n const processed = this.unknownDataNode(value, objectContext)\n if (processed) {\n result.values.push(processed)\n }\n }\n })\n }\n const notKey = this._getAmfKey(ns.w3.shacl.not, objectContext) as keyof IAmfShape\n let not = target[notKey] as IAmfShape | undefined\n if (not) {\n if (Array.isArray(not)) {\n ;[not] = not\n }\n result.not = this.unknownShape(not as IAmfShape, undefined, objectContext)\n }\n return result\n }\n\n anyShape(\n object: IAmfAnyShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiAnyShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.shape(target, objectContext) as IApiAnyShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext) as IAmfShape | undefined\n if (value) {\n target = value\n }\n }\n result.examples = []\n const examples = target[\n this._getAmfKey(ns.aml.vocabularies.apiContract.examples, objectContext) as keyof IAmfAnyShape\n ] as IAmfExample[]\n\n if (Array.isArray(examples) && examples.length) {\n if (options.trackedId) {\n const filtered = this.filterTrackedExamples(examples, options.trackedId, objectContext)\n result.examples = filtered.map((item) => this.example(item, objectContext))\n } else {\n const filtered = this.filterNonTrackedExamples(examples, objectContext)\n result.examples = filtered.map((item) => this.example(item, objectContext))\n }\n }\n const docs = target[\n this._getAmfKey(ns.aml.vocabularies.core.documentation, objectContext) as keyof IAmfAnyShape\n ] as IAmfCreativeWork[] | undefined\n if (Array.isArray(docs) && docs.length) {\n const [documentation] = docs\n result.documentation = this.documentation(documentation, objectContext)\n }\n const xml = target[\n this._getAmfKey(ns.aml.vocabularies.shapes.xmlSerialization, objectContext) as keyof IAmfAnyShape\n ] as IAmfXMLSerializer[] | undefined\n if (Array.isArray(xml) && xml.length) {\n result.xmlSerialization = this.xmlSerializer(xml[0] as IAmfXMLSerializer, objectContext)\n }\n return result\n }\n\n /**\n * Filters examples that should be rendered for a payload identified by `trackedId`.\n *\n * This function is copied from old `api-example-generator/ExampleGenerator`.\n */\n filterTrackedExamples(examples: IAmfExample[], trackedId: string, context?: Record<string, string>): IAmfExample[] {\n const { docSourceMaps } = ns.aml.vocabularies\n const sourceKey = this._getAmfKey(docSourceMaps.sources, context) as keyof IAmfExample\n const trackedKey = this._getAmfKey(docSourceMaps.trackedElement, context) as keyof IAmfDocumentSourceMaps\n const longId = trackedId.indexOf('amf') === -1 ? `amf://id${trackedId}` : trackedId\n return examples.filter((item) => {\n let example = item\n if (Array.isArray(example)) {\n ;[example] = example\n }\n let sm = example[sourceKey] as IAmfDocumentSourceMaps[] | IAmfDocumentSourceMaps | undefined\n if (!sm) {\n return true\n }\n if (Array.isArray(sm)) {\n ;[sm] = sm\n }\n let tracked = sm[trackedKey] as IAmfSynthesizedField[] | IAmfSynthesizedField | undefined\n if (!tracked) {\n return true\n }\n if (Array.isArray(tracked)) {\n ;[tracked] = tracked\n }\n const { value } = this.synthesizedField(tracked, context)\n if (!value) {\n return true\n }\n const ids = value.split(',')\n if (ids.indexOf(longId) !== -1 || ids.indexOf(trackedId) !== -1) {\n return true\n }\n return false\n })\n }\n\n /**\n * Kind of the opposite of the `filterTrackedExamples`. It gathers examples that only have been\n * defined for the parent Shape (ed in the type declaration). It filters out all examples\n * defined in a payload.\n */\n filterNonTrackedExamples(examples: IAmfExample[], context?: Record<string, string>): IAmfExample[] {\n const { docSourceMaps } = ns.aml.vocabularies\n const sourceKey = this._getAmfKey(docSourceMaps.sources, context) as keyof IAmfExample\n const trackedKey = this._getAmfKey(docSourceMaps.trackedElement, context) as keyof IAmfDocumentSourceMaps\n return examples.filter((item) => {\n let example = item\n if (Array.isArray(example)) {\n ;[example] = example\n }\n let sm = example[sourceKey] as IAmfDocumentSourceMaps[] | IAmfDocumentSourceMaps | undefined\n if (!sm) {\n return true\n }\n if (Array.isArray(sm)) {\n ;[sm] = sm\n }\n let tracked = sm[trackedKey] as IAmfSynthesizedField[] | IAmfSynthesizedField | undefined\n if (!tracked) {\n return true\n }\n if (Array.isArray(tracked)) {\n ;[tracked] = tracked\n }\n const { value } = this.synthesizedField(tracked, context)\n if (!value) {\n return true\n }\n return false\n })\n }\n\n scalarShape(\n object: IAmfScalarShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiScalarShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.anyShape(target, options, objectContext) as IApiScalarShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext) as IAmfScalarShape | undefined\n if (value) {\n target = value\n }\n }\n\n const pattern = this._getValue(target, ns.w3.shacl.pattern, objectContext)\n if (pattern && typeof pattern === 'string') {\n result.pattern = pattern\n }\n const dataType = this._getLinkValue(target, ns.w3.shacl.datatype, objectContext)\n if (dataType && typeof dataType === 'string') {\n result.dataType = dataType\n }\n const format = this._getValue(target, ns.aml.vocabularies.shapes.format, objectContext)\n if (format && typeof format === 'string') {\n result.format = format\n }\n const multipleOf = this._getValue(target, ns.aml.vocabularies.shapes.multipleOf, objectContext)\n if (typeof multipleOf === 'number') {\n result.multipleOf = multipleOf\n }\n const minInclusive = this._getValue(target, ns.w3.shacl.minInclusive, objectContext)\n if (typeof minInclusive === 'number') {\n result.minimum = minInclusive\n result.exclusiveMinimum = false\n }\n const maxInclusive = this._getValue(target, ns.w3.shacl.maxInclusive, objectContext)\n if (typeof maxInclusive === 'number') {\n result.maximum = maxInclusive\n result.exclusiveMaximum = false\n }\n const minLength = this._getValue(target, ns.w3.shacl.minLength, objectContext)\n if (typeof minLength === 'number') {\n result.minLength = minLength\n }\n const maxLength = this._getValue(target, ns.w3.shacl.maxLength, objectContext)\n if (typeof maxLength === 'number') {\n result.maxLength = maxLength\n }\n return result\n }\n\n nodeShape(\n object: IAmfNodeShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiNodeShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.anyShape(target, options, objectContext) as IApiNodeShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n\n const discriminator = this._getValue(target, ns.aml.vocabularies.shapes.discriminator, objectContext)\n if (discriminator && typeof discriminator === 'string') {\n result.discriminator = discriminator\n }\n const discriminatorValue = this._getValue(target, ns.aml.vocabularies.shapes.discriminatorValue, objectContext)\n if (discriminatorValue && typeof discriminatorValue === 'string') {\n result.discriminatorValue = discriminatorValue\n }\n const closed = this._getValue(target, ns.w3.shacl.closed, objectContext)\n if (typeof closed === 'boolean') {\n result.closed = closed\n }\n\n result.customShapeProperties = []\n result.customShapePropertyDefinitions = []\n result.dependencies = []\n // todo: not sure what the keys are.\n // if (!minProperties.isNull) {\n // result.minProperties = minProperties.value();\n // }\n // if (!maxProperties.isNull) {\n // result.maxProperties = maxProperties.value();\n // }\n // if (Array.isArray(customShapeProperties) && customShapeProperties.length) {\n // result.customShapeProperties = customShapeProperties.map((item) => item.id);\n // } else {\n // result.customShapeProperties = [];\n // }\n // if (Array.isArray(customShapePropertyDefinitions) && customShapePropertyDefinitions.length) {\n // result.customShapePropertyDefinitions = customShapePropertyDefinitions.map((item) => item.id);\n // } else {\n // result.customShapePropertyDefinitions = [];\n // }\n const properties = target[\n this._getAmfKey(ns.w3.shacl.property, objectContext) as keyof IAmfNodeShape\n ] as IAmfPropertyShape[]\n if (Array.isArray(properties) && properties.length) {\n result.properties = properties.map((item) => this.propertyShape(item, objectContext))\n } else {\n result.properties = []\n }\n // if (Array.isArray(dependencies) && dependencies.length) {\n // result.dependencies = dependencies.map((item) => item.id);\n // } else {\n // result.dependencies = [];\n // }\n return result\n }\n\n propertyShape(object: IAmfPropertyShape, context?: Record<string, string>): IApiPropertyShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.shape(target, objectContext) as IApiPropertyShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n\n const path = this._getLinkValue(target, ns.w3.shacl.path, objectContext)\n if (path && typeof path === 'string') {\n result.path = path\n }\n const minCount = this._getValue(target, ns.w3.shacl.minCount, objectContext)\n if (typeof minCount === 'number') {\n result.minCount = minCount\n }\n const maxCount = this._getValue(target, ns.w3.shacl.maxCount, objectContext)\n if (typeof maxCount === 'number') {\n result.maxCount = maxCount\n }\n // if (!patternName.isNullOrEmpty) {\n // result.patternName = patternName.value();\n // }\n\n const ranges = target[\n this._getAmfKey(ns.aml.vocabularies.shapes.range, objectContext) as keyof IAmfPropertyShape\n ] as IAmfShape[]\n if (Array.isArray(ranges) && ranges.length) {\n const [range] = ranges\n result.range = this.unknownShape(range, undefined, objectContext)\n }\n return result\n }\n\n unionShape(\n object: IAmfUnionShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiUnionShape {\n const objectContext = context || object['@context']\n const anyOf = object[\n this._getAmfKey(ns.aml.vocabularies.shapes.anyOf, objectContext) as keyof IAmfUnionShape\n ] as IAmfShape[]\n const result = this.anyShape(object, options, objectContext) as IApiUnionShape\n if (Array.isArray(anyOf) && anyOf.length) {\n const opt = { ...options, trackedId: undefined }\n result.anyOf = anyOf.map((shape) => this.unknownShape(shape, opt, objectContext))\n } else {\n result.anyOf = []\n }\n return result\n }\n\n fileShape(\n object: IAmfFileShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiFileShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.anyShape(target, options, objectContext) as IApiFileShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n\n const pattern = this._getValue(target, ns.w3.shacl.pattern, objectContext)\n if (pattern && typeof pattern === 'string') {\n result.pattern = pattern\n }\n const fileTypes = this._getValueArray(target, ns.aml.vocabularies.shapes.fileType, objectContext) as\n | string[]\n | undefined\n if (Array.isArray(fileTypes) && fileTypes.length) {\n result.fileTypes = fileTypes\n }\n const minLength = this._getValue(target, ns.w3.shacl.minLength, objectContext)\n if (typeof minLength === 'number') {\n result.minLength = minLength\n }\n const maxLength = this._getValue(target, ns.w3.shacl.maxLength, objectContext)\n if (typeof maxLength === 'number') {\n result.maxLength = maxLength\n }\n const minInclusive = this._getValue(target, ns.w3.shacl.minInclusive, objectContext)\n if (typeof minInclusive === 'number') {\n result.minimum = minInclusive\n result.exclusiveMinimum = false\n }\n const maxInclusive = this._getValue(target, ns.w3.shacl.maxInclusive, objectContext)\n if (typeof maxInclusive === 'number') {\n result.maximum = maxInclusive\n result.exclusiveMaximum = false\n }\n const format = this._getValue(target, ns.aml.vocabularies.shapes.format, objectContext)\n if (format && typeof format === 'string') {\n result.format = format\n }\n const multipleOf = this._getValue(target, ns.aml.vocabularies.shapes.multipleOf, objectContext)\n if (typeof multipleOf === 'number') {\n result.multipleOf = multipleOf\n }\n return result\n }\n\n schemaShape(\n object: IAmfSchemaShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiSchemaShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.anyShape(target, options, objectContext) as IApiSchemaShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n\n const mediaType = this._getValue(target, ns.aml.vocabularies.core.mediaType, objectContext)\n if (mediaType && typeof mediaType === 'string') {\n result.mediaType = mediaType\n }\n const raw = this._getValue(target, ns.aml.vocabularies.document.raw, objectContext)\n if (raw && typeof raw === 'string') {\n result.raw = raw\n }\n return result\n }\n\n recursiveShape(object: IAmfRecursiveShape, context?: Record<string, string>): IApiRecursiveShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.shape(target, objectContext) as IApiRecursiveShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n\n const fp = this._getLinkValue(object, ns.aml.vocabularies.shapes.fixPoint, objectContext)\n if (fp && typeof fp === 'string') {\n result.fixPoint = fp\n }\n return result\n }\n\n dataArrangeShape(\n object: IAmfDataArrangeShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiDataArrangeShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.anyShape(target, options, objectContext) as IApiDataArrangeShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n //\n // const { minItems, maxItems, uniqueItems } = object;\n // if (!minItems.isNull) {\n // result.minItems = minItems.value();\n // }\n // if (!maxItems.isNull) {\n // result.maxItems = maxItems.value();\n // }\n // if (!uniqueItems.isNull) {\n // result.uniqueItems = uniqueItems.value();\n // }\n return result\n }\n\n arrayShape(\n object: IAmfArrayShape,\n options: IShapeProcessingOptions = {},\n context?: Record<string, string>\n ): IApiArrayShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.dataArrangeShape(target, options, objectContext) as IApiArrayShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n\n const items = target[this._getAmfKey(ns.aml.vocabularies.shapes.items, objectContext) as keyof IAmfArrayShape] as\n | IAmfShape[]\n | undefined\n if (Array.isArray(items) && items.length) {\n const [item] = items\n result.items = this.unknownShape(item, undefined, objectContext)\n }\n return result\n }\n\n tupleShape(\n object: IAmfTupleShape,\n options?: IShapeProcessingOptions,\n context?: Record<string, string>\n ): IApiTupleShape {\n const objectContext = context || object['@context']\n let target = object\n const result = this.dataArrangeShape(target, options, objectContext) as IApiTupleShape\n if (this.isLink(target)) {\n const value = this.getLinkTarget(target, objectContext)\n if (value) {\n target = value\n }\n }\n const items = target[this._getAmfKey(ns.aml.vocabularies.shapes.items, objectContext) as keyof IAmfTupleShape] as\n | IAmfShape[]\n | undefined\n const prefix = this._getAmfKey(ns.w3.rdfSchema.key, objectContext) as string\n if (Array.isArray(items) && items.length) {\n result.items = []\n items.forEach((item) => {\n if (Array.isArray(item)) {\n ;[item] = item\n }\n Object.keys(item)\n .filter((k) => k.startsWith(prefix))\n .forEach((key) => {\n let shape = (item as unknown as Record<string, IAmfShape | IAmfShape[] | undefined>)[\n key as keyof IAmfShape\n ] as IAmfShape\n if (Array.isArray(shape)) {\n ;[shape] = shape\n }\n const value = this.unknownShape(shape, undefined, objectContext)\n result.items.push(value)\n })\n })\n } else {\n result.items = []\n }\n return result\n }\n\n /**\n * @param object The CreativeWork to serialize.\n * @returns Serialized CreativeWork\n */\n documentation(object: IAmfCreativeWork, context?: Record<string, string>): IApiDocumentation {\n const objectContext = context || object['@context']\n const result: IApiDocumentation = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n const url = this._getLinkValue(object, ns.aml.vocabularies.core.url, objectContext)\n if (url && typeof url === 'string') {\n result.url = url\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const title = this._getValue(object, ns.aml.vocabularies.core.title, objectContext)\n if (title && typeof title === 'string') {\n result.title = title\n }\n return result\n }\n\n /**\n * @param object The Example to serialize.\n * @returns Serialized Example\n */\n example(object: IAmfExample, context?: Record<string, string>): IApiDataExample {\n const objectContext = context || object['@context']\n this._resolve(object)\n const result: IApiDataExample = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n strict: false,\n }\n\n const strict = this._getValue(object, ns.aml.vocabularies.document.strict, objectContext)\n if (typeof strict === 'boolean') {\n result.strict = strict\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const displayName = this._getValue(object, ns.aml.vocabularies.core.displayName, objectContext)\n if (displayName && typeof displayName === 'string') {\n result.displayName = displayName\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const raw = this._getValue(object, ns.aml.vocabularies.document.raw, objectContext)\n if (raw && typeof raw === 'string') {\n result.value = raw\n }\n const location = this._getValue(object, ns.aml.vocabularies.document.location, objectContext)\n if (location && typeof location === 'string') {\n result.location = location\n }\n // if (!mediaType.isNullOrEmpty) {\n // result.mediaType = mediaType.value();\n // }\n const structuredValue = object[\n this._getAmfKey(ns.aml.vocabularies.document.structuredValue, objectContext) as keyof IAmfExample\n ] as IAmfDataNode[] | undefined\n if (Array.isArray(structuredValue) && structuredValue.length) {\n const [value] = structuredValue\n result.structuredValue = this.unknownDataNode(value, objectContext)\n }\n return result\n }\n\n xmlSerializer(object: IAmfXMLSerializer, context?: Record<string, string>): IApiXmlSerializer {\n const objectContext = context || object['@context']\n const result: IApiXmlSerializer = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const xmlAttribute = this._getValue(object, ns.aml.vocabularies.shapes.xmlAttribute, objectContext)\n if (typeof xmlAttribute === 'boolean') {\n result.attribute = xmlAttribute\n }\n const wrapped = this._getValue(object, ns.aml.vocabularies.shapes.xmlWrapped, objectContext)\n if (typeof wrapped === 'boolean') {\n result.wrapped = wrapped\n }\n const name = this._getValue(object, ns.aml.vocabularies.shapes.xmlName, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const xmlNs = this._getValue(object, ns.aml.vocabularies.shapes.xmlNamespace, objectContext)\n if (xmlNs && typeof xmlNs === 'string') {\n result.namespace = xmlNs\n }\n const xmlPrefix = this._getValue(object, ns.aml.vocabularies.shapes.xmlPrefix, objectContext)\n if (xmlPrefix && typeof xmlPrefix === 'string') {\n result.prefix = xmlPrefix\n }\n return result\n }\n\n unknownDataNode(object: IAmfDataNode, context?: Record<string, string>): IApiDataNodeUnion | undefined {\n const types = this.readTypes(object['@type'], context)\n\n if (types.includes(ns.aml.vocabularies.data.Scalar)) {\n return this.scalarNode(object as IAmfScalarNode, context)\n }\n if (types.includes(ns.aml.vocabularies.data.Object)) {\n return this.objectNode(object as IAmfObjectNode, context)\n }\n if (types.includes(ns.aml.vocabularies.data.Array)) {\n return this.arrayNode(object as IAmfArrayNode, context)\n }\n return undefined\n }\n\n dataNode(object: IAmfDataNode, context?: Record<string, string>): IApiDataNode {\n const result: IApiDataNode = {\n id: object['@id'],\n types: this.readTypes(object['@type'], context),\n customDomainProperties: this.customDomainProperties(object, context),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, context)\n if (name && typeof name === 'string') {\n result.name = name\n }\n return result\n }\n\n scalarNode(object: IAmfScalarNode, context?: Record<string, string>): IApiScalarNode {\n const objectContext = context || object['@context']\n const result = this.dataNode(object, context) as IApiScalarNode\n\n const value = this._getValue(object, ns.aml.vocabularies.data.value, objectContext)\n if (value && typeof value === 'string') {\n result.value = value\n }\n const dataType = this._getLinkValue(object, ns.w3.shacl.datatype, objectContext)\n if (dataType && typeof dataType === 'string') {\n result.dataType = dataType\n }\n return result\n }\n\n objectNode(object: IAmfObjectNode, context?: Record<string, string>): IApiObjectNode {\n const objectContext = context || object['@context']\n const result = this.dataNode(object, context) as IApiObjectNode\n result.properties = {}\n const prefix = ns.aml.vocabularies.data.key\n const prefixCompact = `${this._getAmfKey(prefix, objectContext)}:`\n Object.keys(object).forEach((key) => {\n if (key.startsWith(prefix) || key.startsWith(prefixCompact)) {\n let value = object[key as keyof IAmfObjectNode] as IAmfDataNode | undefined\n if (Array.isArray(value)) {\n ;[value] = value\n }\n const name = key.replace(prefix, '').replace(prefixCompact, '')\n const nodeValue = this.unknownDataNode(value as IAmfDataNode, context)\n if (nodeValue) {\n result.properties[name] = nodeValue\n }\n }\n })\n return result\n }\n\n arrayNode(object: IAmfArrayNode, context?: Record<string, string>): IApiArrayNode {\n const objectContext = context || object['@context']\n const result = this.dataNode(object, objectContext) as IApiArrayNode\n result.members = []\n const members = this._computePropertyArray(object, ns.w3.rdfSchema.member) as IAmfDataNode[]\n if (Array.isArray(members) && members.length) {\n members.forEach((n) => {\n const item = this.unknownDataNode(n)\n if (item) {\n result.members.push(item)\n }\n })\n }\n return result\n }\n\n /**\n * Adds the custom domain properties to the currently processed property, a.k.a annotations.\n * @returns The list of custom domain properties.\n */\n customDomainProperties(object: IAmfDomainElement, context?: Record<string, string>): IApiCustomDomainProperty[] {\n const result: IApiCustomDomainProperty[] = []\n const objectContext = context || object['@context']\n const ids = this._getLinkValues(object, ns.aml.vocabularies.document.customDomainProperties, objectContext)\n if (Array.isArray(ids) && ids.length) {\n ids.forEach((id) => {\n const key = `amf://id${id}`\n let value = (object[id as keyof IAmfDomainElement] || object[key as keyof IAmfDomainElement]) as\n | IAmfDomainElement[]\n | IAmfDomainElement\n | undefined\n if (!value) {\n return\n }\n if (Array.isArray(value)) {\n ;[value] = value\n }\n const extension = this.unknownDataNode(value, objectContext)\n const name = this._getValue(value, ns.aml.vocabularies.core.extensionName, objectContext) as string | undefined\n if (!name || !extension) {\n return\n }\n const cdp: IApiCustomDomainProperty = {\n id: key,\n name,\n extension,\n }\n result.push(cdp)\n })\n }\n return result\n }\n\n endPoint(object: IAmfEndPoint, context?: Record<string, string>): IApiEndPoint {\n const objectContext = context || object['@context']\n const result: IApiEndPoint = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object),\n path: '',\n operations: [],\n parameters: [],\n payloads: [],\n servers: [],\n security: [],\n extends: [],\n }\n\n const path = this._getValue(object, ns.aml.vocabularies.apiContract.path, objectContext)\n if (path && typeof path === 'string') {\n result.path = path\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const summary = this._getValue(object, ns.aml.vocabularies.core.summary, objectContext)\n if (summary && typeof summary === 'string') {\n result.summary = summary\n }\n const operations = this[getArrayItems](object, ns.aml.vocabularies.apiContract.supportedOperation, objectContext)\n if (Array.isArray(operations) && operations.length) {\n result.operations = operations.map((i) => this.operation(i as IAmfOperation, objectContext))\n }\n const parameters = this[getArrayItems](object, ns.aml.vocabularies.apiContract.parameter, objectContext)\n if (Array.isArray(parameters) && parameters.length) {\n result.parameters = parameters.map((i) => this.parameter(i, objectContext))\n }\n const payloads = this[getArrayItems](object, ns.aml.vocabularies.apiContract.payload, objectContext)\n if (Array.isArray(payloads) && payloads.length) {\n result.payloads = payloads.map((i) => this.payload(/** @type IAmfPayload */ i as IAmfPayload, objectContext))\n }\n const servers = this[getArrayItems](object, ns.aml.vocabularies.apiContract.server, objectContext)\n if (Array.isArray(servers) && servers.length) {\n result.servers = servers.map((i) => this.server(i, objectContext))\n }\n const security = this[getArrayItems](object, ns.aml.vocabularies.security.security, objectContext)\n if (Array.isArray(security) && security.length) {\n result.security = security.map((i) => this.securityRequirement(i, objectContext))\n }\n const extensions = this[getArrayItems](object, ns.aml.vocabularies.document.extends, objectContext)\n if (Array.isArray(extensions) && extensions.length) {\n result.extends = []\n extensions.forEach((ex) => {\n let extension = ex\n if (Array.isArray(extension)) {\n ;[extension] = extension\n }\n if (this._hasType(extension, ns.aml.vocabularies.apiContract.ParametrizedResourceType, objectContext)) {\n result.extends.push(this.parametrizedResourceType(extension, objectContext))\n } else if (this._hasType(extension, ns.aml.vocabularies.apiContract.ParametrizedTrait, objectContext)) {\n result.extends.push(this.parametrizedTrait(extension, objectContext))\n }\n })\n }\n return result\n }\n\n operation(object: IAmfOperation, context?: Record<string, string>): IApiOperation {\n const objectContext = context || object['@context']\n const result: IApiOperation = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object),\n method: '',\n deprecated: false,\n callbacks: [],\n responses: [],\n servers: [],\n security: [],\n accepts: [],\n schemes: [],\n contentType: [],\n tags: [],\n extends: [],\n }\n\n const method = this._getValue(object, ns.aml.vocabularies.apiContract.method, objectContext)\n if (method && typeof method === 'string') {\n result.method = method\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const summary = this._getValue(object, ns.aml.vocabularies.apiContract.guiSummary, objectContext)\n if (summary && typeof summary === 'string') {\n result.summary = summary\n }\n const deprecated = this._getValue(object, ns.aml.vocabularies.core.deprecated, objectContext)\n if (typeof deprecated === 'boolean') {\n result.deprecated = deprecated\n }\n const operationId = this._getValue(object, ns.aml.vocabularies.apiContract.operationId, objectContext)\n if (operationId && typeof operationId === 'string') {\n result.operationId = operationId\n }\n const accepts = this._getValueArray(object, ns.aml.vocabularies.apiContract.accepts, objectContext) as string[]\n if (Array.isArray(accepts)) {\n result.accepts = accepts\n }\n const schemes = this._getValueArray(object, ns.aml.vocabularies.apiContract.scheme, objectContext) as string[]\n if (Array.isArray(schemes)) {\n result.schemes = schemes\n }\n const contentType = this._getValueArray(\n object,\n ns.aml.vocabularies.apiContract.contentType,\n objectContext\n ) as string[]\n if (Array.isArray(contentType)) {\n result.contentType = contentType\n }\n\n let expects = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.expects, objectContext) as keyof IAmfOperation\n ] as IAmfRequest[] | IAmfRequest | undefined\n if (expects) {\n if (Array.isArray(expects)) {\n ;[expects] = expects\n }\n result.request = this.request(expects, objectContext)\n }\n let documentation = object[\n this._getAmfKey(ns.aml.vocabularies.core.documentation, objectContext) as keyof IAmfOperation\n ] as IAmfCreativeWork[] | IAmfCreativeWork | undefined\n if (documentation) {\n if (Array.isArray(documentation)) {\n ;[documentation] = documentation\n }\n result.documentation = this.documentation(documentation, objectContext)\n }\n const responses = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.returns, objectContext) as keyof IAmfOperation\n ] as IAmfResponse[] | undefined\n if (Array.isArray(responses)) {\n result.responses = responses.map((r) => this.response(r, objectContext))\n }\n const callbacks = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.callback, objectContext) as keyof IAmfOperation\n ] as IAmfCallback[] | undefined\n if (Array.isArray(callbacks)) {\n result.callbacks = callbacks.map((c) => this.callback(c, objectContext))\n }\n const servers = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.server, objectContext) as keyof IAmfOperation\n ] as IAmfServer[] | undefined\n if (Array.isArray(servers)) {\n result.servers = servers.map((s) => this.server(s))\n }\n const security = object[\n this._getAmfKey(ns.aml.vocabularies.security.security, objectContext) as keyof IAmfOperation\n ] as IAmfSecurityRequirement[] | undefined\n if (Array.isArray(security)) {\n result.security = security.map((s) => this.securityRequirement(s, objectContext))\n }\n const tags = object[this._getAmfKey(ns.aml.vocabularies.apiContract.tag, objectContext) as keyof IAmfOperation] as\n | IAmfTag[]\n | undefined\n if (Array.isArray(tags) && tags.length) {\n result.tags = tags.map((s) => this.tag(s, objectContext))\n }\n const traits = object[\n this._getAmfKey(ns.aml.vocabularies.document.extends, objectContext) as keyof IAmfOperation\n ] as IAmfParametrizedTrait[] | undefined\n if (Array.isArray(traits) && traits.length) {\n result.extends = traits.map((t) => this.parametrizedTrait(t, objectContext))\n }\n return result\n }\n\n tag(object: IAmfTag, context?: Record<string, string>): IApiTag {\n const objectContext = context || object['@context']\n const result: IApiTag = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object),\n name: '',\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n return result\n }\n\n callback(object: IAmfCallback, context?: Record<string, string>): IApiCallback {\n const objectContext = context || object['@context']\n const result: IApiCallback = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const expression = this._getValue(object, ns.aml.vocabularies.apiContract.expression, objectContext)\n if (expression && typeof expression === 'string') {\n result.expression = expression\n }\n let endpoint = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.endpoint, objectContext) as keyof IAmfCallback\n ] as IAmfEndPoint[] | IAmfEndPoint | undefined\n if (endpoint) {\n if (Array.isArray(endpoint)) {\n ;[endpoint] = endpoint\n }\n result.endpoint = this.endPoint(endpoint, objectContext)\n }\n return result\n }\n\n request(object: IAmfRequest, context?: Record<string, string>): IApiRequest {\n const objectContext = context || object['@context']\n const result: IApiRequest = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object),\n required: false,\n headers: [],\n queryParameters: [],\n payloads: [],\n uriParameters: [],\n cookieParameters: [],\n }\n\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const required = this._getValue(object, ns.aml.vocabularies.apiContract.required, objectContext)\n if (required && typeof required === 'boolean') {\n result.required = required\n }\n let queryString = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.queryString, objectContext) as keyof IAmfRequest\n ] as IAmfShape[] | IAmfShape | undefined\n if (queryString) {\n if (Array.isArray(queryString)) {\n ;[queryString] = queryString\n }\n result.queryString = this.unknownShape(queryString, undefined, objectContext)\n }\n const headers = this[getArrayItems](object, ns.aml.vocabularies.apiContract.header, objectContext)\n if (Array.isArray(headers) && headers.length) {\n result.headers = headers.map((p) => this.parameter(p, objectContext))\n }\n const queryParameters = this[getArrayItems](object, ns.aml.vocabularies.apiContract.parameter, objectContext)\n if (Array.isArray(queryParameters) && queryParameters.length) {\n result.queryParameters = queryParameters.map((p) => this.parameter(p, objectContext))\n }\n const uriParameters = this[getArrayItems](object, ns.aml.vocabularies.apiContract.uriParameter, objectContext)\n if (Array.isArray(uriParameters) && uriParameters.length) {\n result.uriParameters = uriParameters.map((p) => this.parameter(p, objectContext))\n }\n const cookieParameters = this[getArrayItems](object, ns.aml.vocabularies.apiContract.cookieParameter, objectContext)\n if (Array.isArray(cookieParameters) && cookieParameters.length) {\n result.cookieParameters = cookieParameters.map((p) => this.parameter(p, objectContext))\n }\n const payloads = this[getArrayItems](object, ns.aml.vocabularies.apiContract.payload, objectContext) as\n | IAmfPayload[]\n | undefined\n if (Array.isArray(payloads) && payloads.length) {\n result.payloads = payloads.map((p) => this.payload(p, objectContext))\n }\n return result\n }\n\n response(object: IAmfResponse, context?: Record<string, string>): IApiResponse {\n const objectContext = context || object['@context']\n const result: IApiResponse = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n headers: [],\n payloads: [],\n examples: [],\n links: [],\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const statusCode = this._getValue(object, ns.aml.vocabularies.apiContract.statusCode, objectContext)\n if (statusCode && typeof statusCode === 'string') {\n result.statusCode = statusCode\n }\n const headers = this[getArrayItems](object, ns.aml.vocabularies.apiContract.header, objectContext)\n if (Array.isArray(headers) && headers.length) {\n result.headers = headers.map((p) => this.parameter(p, objectContext))\n }\n const payloads = this[getArrayItems](object, ns.aml.vocabularies.apiContract.payload, objectContext) as\n | IAmfPayload[]\n | undefined\n if (Array.isArray(payloads) && payloads.length) {\n result.payloads = payloads.map((p) => this.payload(p, objectContext))\n }\n const examples = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.examples, objectContext) as keyof IAmfResponse\n ] as IAmfExample[] | undefined\n if (Array.isArray(examples) && examples.length) {\n result.examples = examples.map((e) => this.example(e, objectContext))\n }\n const links = object[this._getAmfKey(ns.aml.vocabularies.apiContract.link, objectContext) as keyof IAmfResponse] as\n | IAmfTemplatedLink[]\n | undefined\n if (Array.isArray(links) && links.length) {\n result.links = links.map((p) => this.templatedLink(p, objectContext))\n }\n return result\n }\n\n payload(object: IAmfPayload, context?: Record<string, string>): IApiPayload {\n const objectContext = context || object['@context']\n const result: IApiPayload = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n examples: [],\n // encoding: [],\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const mediaType = this._getValue(object, ns.aml.vocabularies.core.mediaType, objectContext)\n if (mediaType && typeof mediaType === 'string') {\n result.mediaType = mediaType\n }\n let schema = object[this._getAmfKey(ns.aml.vocabularies.shapes.schema, objectContext) as keyof IAmfPayload] as\n | IAmfShape\n | IAmfShape[]\n | undefined\n if (schema) {\n if (Array.isArray(schema)) {\n ;[schema] = schema\n }\n result.schema = this.unknownShape(\n schema,\n {\n trackedId: result.id,\n },\n objectContext\n )\n }\n const examples = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.examples, objectContext) as keyof IAmfPayload\n ] as IAmfExample[] | undefined\n if (Array.isArray(examples) && examples.length) {\n result.examples = examples.map((e) => this.example(e, objectContext))\n }\n // if (Array.isArray(encoding) && encoding.length) {\n // result.encoding = encoding.map((p) => p.id);\n // }\n return result\n }\n\n templatedLink(object: IAmfTemplatedLink, context?: Record<string, string>): IApiTemplatedLink {\n const objectContext = context || object['@context']\n const result: IApiTemplatedLink = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n mapping: [],\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const operationId = this._getValue(object, ns.aml.vocabularies.apiContract.operationId, objectContext)\n if (operationId && typeof operationId === 'string') {\n result.operationId = operationId\n }\n let server = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.server, objectContext) as keyof IAmfTemplatedLink\n ] as IAmfServer[] | IAmfServer | undefined\n if (server) {\n if (Array.isArray(server)) {\n ;[server] = server\n }\n result.server = this.server(server, objectContext)\n }\n let mapping = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.mapping, objectContext) as keyof IAmfTemplatedLink\n ] as IAmfIriTemplateMapping[] | undefined\n if (mapping) {\n if (mapping && !Array.isArray(mapping)) {\n mapping = [mapping]\n }\n if (mapping) {\n result.mapping = mapping.map((item) => this.iriTemplateMapping(item, objectContext))\n }\n }\n // if (!template.isNullOrEmpty) {\n // result.template = template.value();\n // }\n // if (!requestBody.isNullOrEmpty) {\n // result.requestBody = requestBody.value();\n // }\n return result\n }\n\n iriTemplateMapping(object: IAmfIriTemplateMapping, context?: Record<string, string>): IApiIriTemplateMapping {\n const objectContext = context || object['@context']\n const result: IApiIriTemplateMapping = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const templateVariable = this._getValue(object, ns.aml.vocabularies.apiContract.templateVariable, objectContext)\n if (templateVariable && typeof templateVariable === 'string') {\n result.templateVariable = templateVariable\n }\n const linkExpression = this._getValue(object, ns.aml.vocabularies.apiContract.linkExpression, objectContext)\n if (linkExpression && typeof linkExpression === 'string') {\n result.linkExpression = linkExpression\n }\n return result\n }\n\n parametrizedSecurityScheme(\n object: IAmfParametrizedSecurityScheme,\n context?: Record<string, string>\n ): IApiParametrizedSecurityScheme {\n const objectContext = context || object['@context']\n const result: IApiParametrizedSecurityScheme = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n let scheme = object[\n this._getAmfKey(ns.aml.vocabularies.security.scheme, objectContext) as keyof IAmfParametrizedSecurityScheme\n ] as IAmfSecurityScheme | IAmfSecurityScheme[] | undefined\n if (scheme) {\n if (Array.isArray(scheme)) {\n ;[scheme] = scheme\n }\n result.scheme = this.securityScheme(scheme, objectContext)\n }\n let settings = object[\n this._getAmfKey(ns.aml.vocabularies.security.settings, objectContext) as keyof IAmfParametrizedSecurityScheme\n ] as IAmfSettings | IAmfSettings[] | undefined\n if (settings) {\n if (Array.isArray(settings)) {\n ;[settings] = settings\n }\n result.settings = this.securitySettings(settings, objectContext)\n }\n return result\n }\n\n securitySchemeListItem(object: IAmfSecurityScheme, context?: Record<string, string>): IApiSecuritySchemeListItem {\n const objectContext = context || object['@context']\n\n const result: IApiSecuritySchemeListItem = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n type: '',\n }\n\n const type = this._getValue(object, ns.aml.vocabularies.security.type, objectContext)\n if (type && typeof type === 'string') {\n result.type = type\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const displayName = this._getValue(object, ns.aml.vocabularies.core.displayName, objectContext)\n if (displayName && typeof displayName === 'string') {\n result.displayName = displayName\n }\n return result\n }\n\n securityScheme(object: IAmfSecurityScheme, context?: Record<string, string>): IApiSecurityScheme {\n const objectContext = context || object['@context']\n const result: IApiSecurityScheme = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n headers: [],\n queryParameters: [],\n responses: [],\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const displayName = this._getValue(object, ns.aml.vocabularies.core.displayName, objectContext)\n if (displayName && typeof displayName === 'string') {\n result.displayName = displayName\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const type = this._getValue(object, ns.aml.vocabularies.security.type, objectContext)\n if (type && typeof type === 'string') {\n result.type = type\n }\n let settings = object[\n this._getAmfKey(ns.aml.vocabularies.security.settings, objectContext) as keyof IAmfSecurityScheme\n ] as IAmfSettings[] | IAmfSettings | undefined\n if (settings) {\n if (Array.isArray(settings)) {\n ;[settings] = settings\n }\n result.settings = this.securitySettings(settings, objectContext)\n }\n let queryString = object[\n this._getAmfKey(ns.aml.vocabularies.apiContract.queryString, objectContext) as keyof IAmfSecurityScheme\n ] as IAmfShape[] | IAmfShape | undefined\n if (queryString) {\n if (Array.isArray(queryString)) {\n ;[queryString] = queryString\n }\n result.queryString = this.unknownShape(queryString, undefined, objectContext)\n }\n const headers = this[getArrayItems](object, ns.aml.vocabularies.apiContract.header, objectContext)\n if (Array.isArray(headers) && headers.length) {\n result.headers = headers.map((p) => this.parameter(p, objectContext))\n }\n const queryParameters = this[getArrayItems](object, ns.aml.vocabularies.apiContract.parameter, objectContext)\n if (Array.isArray(queryParameters) && queryParameters.length) {\n result.queryParameters = queryParameters.map((p) => this.parameter(p, objectContext))\n }\n const responses = this[getArrayItems](object, ns.aml.vocabularies.apiContract.response, objectContext) as\n | IAmfResponse[]\n | undefined\n if (Array.isArray(responses) && responses.length) {\n result.responses = responses.map((p) => this.response(p, objectContext))\n }\n return result\n }\n\n securityRequirement(object: IAmfSecurityRequirement, context?: Record<string, string>): IApiSecurityRequirement {\n const objectContext = context || object['@context']\n const result: IApiSecurityRequirement = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n schemes: [],\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const schemes = object[\n this._getAmfKey(ns.aml.vocabularies.security.schemes, objectContext) as keyof IAmfSecurityRequirement\n ] as IAmfParametrizedSecurityScheme[] | undefined\n if (Array.isArray(schemes) && schemes.length) {\n result.schemes = schemes.map((p) => this.parametrizedSecurityScheme(p, objectContext))\n }\n return result\n }\n\n securitySettings(object: IAmfSettings, context?: Record<string, string>): IApiSecuritySettingsUnion {\n const objectContext = context || object['@context']\n const types = this.readTypes(object['@type'], objectContext)\n if (types.includes(ns.aml.vocabularies.security.OAuth1Settings)) {\n return this.oAuth1Settings(object as IAmfOAuth1Settings, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.security.OAuth2Settings)) {\n return this.oAuth2Settings(object as IAmfOAuth2Settings, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.security.ApiKeySettings)) {\n return this.apiKeySettings(object as IAmfApiKeySettings, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.security.HttpSettings)) {\n return this.httpSettings(object as IAmfHttpSettings, objectContext)\n }\n if (types.includes(ns.aml.vocabularies.security.OpenIdConnectSettings)) {\n return this.openIdConnectSettings(object as IAmfOpenIdConnectSettings, objectContext)\n }\n return this.settings(object, objectContext)\n }\n\n /**\n * @param {IAmfSettings} object\n * @param context\n * @returns {IApiSecuritySettings}\n */\n settings(object: IAmfSettings, context?: Record<string, string>): IApiSecuritySettings {\n const objectContext = context || object['@context']\n const result: IApiSecuritySettings = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n // if (additionalProperties && additionalProperties.id) {\n // result.additionalProperties = this.unknownDataNode(additionalProperties);\n // }\n return result\n }\n\n oAuth1Settings(object: IAmfOAuth1Settings, context?: Record<string, string>): IApiSecurityOAuth1Settings {\n const objectContext = context || object['@context']\n const result = this.settings(object, objectContext) as IApiSecurityOAuth1Settings\n\n const authorizationUri = this._getValue(object, ns.aml.vocabularies.security.authorizationUri, objectContext)\n if (authorizationUri && typeof authorizationUri === 'string') {\n result.authorizationUri = authorizationUri\n }\n const requestTokenUri = this._getValue(object, ns.aml.vocabularies.security.requestTokenUri, objectContext)\n if (requestTokenUri && typeof requestTokenUri === 'string') {\n result.requestTokenUri = requestTokenUri\n }\n const tokenCredentialsUri = this._getValue(object, ns.aml.vocabularies.security.tokenCredentialsUri, objectContext)\n if (tokenCredentialsUri && typeof tokenCredentialsUri === 'string') {\n result.tokenCredentialsUri = tokenCredentialsUri\n }\n const signatures = this._getValueArray(object, ns.aml.vocabularies.security.signature, objectContext) as string[]\n if (Array.isArray(signatures) && signatures.length) {\n result.signatures = signatures\n } else {\n result.signatures = []\n }\n return result\n }\n\n oAuth2Settings(object: IAmfOAuth2Settings, context?: Record<string, string>): IApiSecurityOAuth2Settings {\n const objectContext = context || object['@context']\n const result = this.settings(object, objectContext) as IApiSecurityOAuth2Settings\n\n const grants = this._getValueArray(\n object,\n ns.aml.vocabularies.security.authorizationGrant,\n objectContext\n ) as string[]\n if (Array.isArray(grants) && grants.length) {\n result.authorizationGrants = grants\n } else {\n result.authorizationGrants = []\n }\n const flows = object[\n this._getAmfKey(ns.aml.vocabularies.security.flows, objectContext) as keyof IAmfOAuth2Settings\n ] as IAmfOAuth2Flow[] | undefined\n if (Array.isArray(flows) && flows.length) {\n result.flows = flows.map((p) => this.oAuth2Flow(p, objectContext))\n } else {\n result.flows = []\n }\n return result\n }\n\n oAuth2Flow(object: IAmfOAuth2Flow, context?: Record<string, string>): IApiSecurityOAuth2Flow {\n const objectContext = context || object['@context']\n const result: IApiSecurityOAuth2Flow = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n scopes: [],\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const authorizationUri = this._getValue(object, ns.aml.vocabularies.security.authorizationUri, objectContext)\n if (authorizationUri && typeof authorizationUri === 'string') {\n result.authorizationUri = authorizationUri\n }\n const accessTokenUri = this._getValue(object, ns.aml.vocabularies.security.accessTokenUri, objectContext)\n if (accessTokenUri && typeof accessTokenUri === 'string') {\n result.accessTokenUri = accessTokenUri\n }\n const flow = this._getValue(object, ns.aml.vocabularies.security.flow, objectContext)\n if (flow && typeof flow === 'string') {\n result.flow = flow\n }\n const refreshUri = this._getValue(object, ns.aml.vocabularies.security.refreshUri, objectContext)\n if (refreshUri && typeof refreshUri === 'string') {\n result.refreshUri = refreshUri\n }\n const scopes = object[\n this._getAmfKey(ns.aml.vocabularies.security.scope, objectContext) as keyof IAmfOAuth2Flow\n ] as IAmfScope[] | undefined\n if (Array.isArray(scopes) && scopes.length) {\n result.scopes = scopes.map((p) => this.scope(p, objectContext))\n }\n return result\n }\n\n scope(object: IAmfScope, context?: Record<string, string>): IApiSecurityScope {\n const objectContext = context || object['@context']\n const result: IApiSecurityScope = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n return result\n }\n\n apiKeySettings(object: IAmfApiKeySettings, context?: Record<string, string>): IApiSecurityApiKeySettings {\n const objectContext = context || object['@context']\n const result = this.settings(object, objectContext) as IApiSecurityApiKeySettings\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const inParam = this._getValue(object, ns.aml.vocabularies.security.in, objectContext)\n if (inParam && typeof inParam === 'string') {\n result.in = inParam\n }\n return result\n }\n\n httpSettings(object: IAmfHttpSettings, context?: Record<string, string>): IApiSecurityHttpSettings {\n const objectContext = context || object['@context']\n const result = this.settings(object, objectContext) as IApiSecurityHttpSettings\n\n const scheme = this._getValue(object, ns.aml.vocabularies.security.scheme, objectContext)\n if (scheme && typeof scheme === 'string') {\n result.scheme = scheme\n }\n const bearerFormat = this._getValue(object, ns.aml.vocabularies.security.bearerFormat, objectContext)\n if (bearerFormat && typeof bearerFormat === 'string') {\n result.bearerFormat = bearerFormat\n }\n return result\n }\n\n openIdConnectSettings(\n object: IAmfOpenIdConnectSettings,\n context?: Record<string, string>\n ): IApiSecurityOpenIdConnectSettings {\n const objectContext = context || object['@context']\n const result = this.settings(object, objectContext) as IApiSecurityOpenIdConnectSettings\n\n const url = this._getValue(object, ns.aml.vocabularies.security.openIdConnectUrl, objectContext)\n if (url && typeof url === 'string') {\n result.url = url\n }\n return result\n }\n\n /**\n * Serializes source maps, when available.\n */\n sourceMap(object: IAmfDocumentSourceMaps, context?: Record<string, string>): IApiDocumentSourceMaps | undefined {\n const objectContext = context || object['@context']\n let sm = object[\n this._getAmfKey(ns.aml.vocabularies.docSourceMaps.sources, objectContext) as keyof IAmfDocumentSourceMaps\n ] as IAmfDocumentSourceMaps[] | IAmfDocumentSourceMaps | undefined\n if (!sm) {\n return undefined\n }\n if (Array.isArray(sm)) {\n ;[sm] = sm\n }\n const result: IApiDocumentSourceMaps = {\n id: sm['@id'],\n types: this.readTypes(sm['@type']),\n }\n const synthesizedField = sm[\n this._getAmfKey(ns.aml.vocabularies.docSourceMaps.synthesizedField, objectContext) as keyof IAmfDocumentSourceMaps\n ] as IAmfSynthesizedField[] | undefined\n if (Array.isArray(synthesizedField) && synthesizedField.length) {\n result.synthesizedField = synthesizedField.map((i) => this.synthesizedField(i, objectContext))\n }\n const lexical = sm[\n this._getAmfKey(ns.aml.vocabularies.docSourceMaps.lexical, objectContext) as keyof IAmfDocumentSourceMaps\n ] as IAmfSynthesizedField[] | undefined\n if (Array.isArray(lexical) && lexical.length) {\n result.lexical = lexical.map((i) => this.synthesizedField(i, objectContext))\n }\n const trackedElement = sm[\n this._getAmfKey(ns.aml.vocabularies.docSourceMaps.trackedElement, objectContext) as keyof IAmfDocumentSourceMaps\n ] as IAmfSynthesizedField[] | undefined\n if (Array.isArray(trackedElement) && trackedElement.length) {\n result.trackedElement = this.synthesizedField(trackedElement[0], objectContext)\n }\n const autoName = sm[\n this._getAmfKey(\n ns.aml.vocabularies.docSourceMaps.autoGeneratedName,\n objectContext\n ) as keyof IAmfDocumentSourceMaps\n ] as IAmfSynthesizedField[] | undefined\n if (Array.isArray(autoName) && autoName.length) {\n result.autoGeneratedName = autoName.map((i) => this.synthesizedField(i, objectContext))\n }\n const jsonSchema = sm[\n this._getAmfKey(ns.aml.vocabularies.docSourceMaps.parsedJsonSchema, objectContext) as keyof IAmfDocumentSourceMaps\n ] as IAmfSynthesizedField[] | undefined\n if (Array.isArray(jsonSchema) && jsonSchema.length) {\n result.parsedJsonSchema = this.synthesizedField(jsonSchema[0], objectContext)\n }\n const declaredElement = sm[\n this._getAmfKey(ns.aml.vocabularies.docSourceMaps.declaredElement, objectContext) as keyof IAmfDocumentSourceMaps\n ] as IAmfSynthesizedField[] | undefined\n if (Array.isArray(declaredElement) && declaredElement.length) {\n result.declaredElement = this.synthesizedField(declaredElement[0], objectContext)\n }\n return result\n }\n\n synthesizedField(object: IAmfSynthesizedField, context?: Record<string, string>): IApiSynthesizedField {\n // compact model\n if (typeof object === 'string') {\n return {\n id: 'synthesizedField/generated',\n value: object,\n } as IApiSynthesizedField\n }\n const result: IApiSynthesizedField = {\n id: object['@id'],\n value: '',\n }\n const element = this._getValue(object as IAmfDomainElement, ns.aml.vocabularies.docSourceMaps.element, context) as\n | string\n | undefined\n if (typeof element === 'string') {\n result.element = element\n }\n const value = this._getValue(object as IAmfDomainElement, ns.aml.vocabularies.docSourceMaps.value, context) as\n | string\n | undefined\n if (typeof value === 'string') {\n result.value = value\n }\n return result\n }\n\n parametrizedDeclaration(\n object: IAmfParametrizedDeclaration,\n context?: Record<string, string>\n ): IApiParametrizedDeclaration {\n const objectContext = context || object['@context']\n const result: IApiParametrizedDeclaration = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n variables: [],\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n }\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext)\n if (name && typeof name === 'string') {\n result.name = name\n }\n const variables = object[\n this._getAmfKey(ns.aml.vocabularies.document.variable, objectContext) as keyof IAmfParametrizedDeclaration\n ] as IAmfVariableValue[] | undefined\n if (Array.isArray(variables)) {\n variables.forEach((item) => {\n result.variables.push(this.variableValue(item, objectContext))\n })\n }\n const targets = object[\n this._getAmfKey(ns.aml.vocabularies.document.target, objectContext) as keyof IAmfParametrizedDeclaration\n ] as IAmfAbstractDeclaration[] | undefined\n if (Array.isArray(targets) && targets.length) {\n const [target] = targets\n result.target = this.abstractDeclaration(target, objectContext)\n }\n return result\n }\n\n parametrizedTrait(object: IAmfParametrizedTrait, context?: Record<string, string>): IApiParametrizedTrait {\n const objectContext = context || object['@context']\n const result = this.parametrizedDeclaration(object, objectContext) as IApiParametrizedTrait\n return result\n }\n\n parametrizedResourceType(\n object: IAmfParametrizedResourceType,\n context?: Record<string, string>\n ): IApiParametrizedResourceType {\n const objectContext = context || object['@context']\n const result = this.parametrizedDeclaration(object, objectContext) as IApiParametrizedResourceType\n return result\n }\n\n variableValue(object: IAmfVariableValue, context?: Record<string, string>): IApiVariableValue {\n const objectContext = context || object['@context']\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext) as string\n const result: IApiVariableValue = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n name,\n }\n const values = object[\n this._getAmfKey(ns.aml.vocabularies.document.value, objectContext) as keyof IAmfVariableValue\n ] as IAmfDataNode[] | undefined\n if (Array.isArray(values)) {\n const [item] = values\n result.value = this.unknownDataNode(item, objectContext)\n }\n return result\n }\n\n abstractDeclaration(object: IAmfAbstractDeclaration, context?: Record<string, string>): IApiAbstractDeclaration {\n const objectContext = context || object['@context']\n\n const name = this._getValue(object, ns.aml.vocabularies.core.name, objectContext) as string\n const result: IApiAbstractDeclaration = {\n id: object['@id'],\n types: this.readTypes(object['@type'], objectContext),\n customDomainProperties: this.customDomainProperties(object, objectContext),\n sourceMaps: this.sourceMap(object, objectContext),\n name,\n variables: [],\n }\n const variables = this._getValueArray(object, ns.aml.vocabularies.document.variable, objectContext) as string[]\n if (Array.isArray(variables)) {\n result.variables = variables\n }\n const description = this._getValue(object, ns.aml.vocabularies.core.description, objectContext)\n if (description && typeof description === 'string') {\n result.description = description\n }\n const dataNode = object[\n this._getAmfKey(ns.aml.vocabularies.document.dataNode, objectContext) as keyof IAmfAbstractDeclaration\n ] as IAmfDataNode[] | undefined\n if (Array.isArray(dataNode)) {\n const [item] = dataNode\n result.dataNode = this.unknownDataNode(item, objectContext)\n }\n return result\n }\n\n /**\n * @param object The EndPoint to serialize as a list item.\n * @returns Serialized EndPoint as a list item.\n */\n endPointWithOperationsListItem(\n object: IAmfEndPoint,\n context?: Record<string, string>\n ): IApiEndPointWithOperationsListItem {\n const path = this._getValue(object, ns.aml.vocabularies.apiContract.path, context) as string\n const result: IApiEndPointWithOperationsListItem = {\n id: object['@id'],\n path,\n operations: [],\n }\n const operations = this[getArrayItems](object, ns.aml.vocabularies.apiContract.supportedOperation, context) as\n | IAmfOperation[]\n | undefined\n if (Array.isArray(operations) && operations.length) {\n result.operations = operations.map((i) => this.operationListItem(i, context))\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, context)\n if (name && typeof name === 'string') {\n result.name = name\n }\n return result\n }\n\n /**\n * @param object The Operation to serialize as a list item.\n * @param context A context to use. If not set, it looks for the context of the passed model\n * @returns Serialized Operation as a list item.\n */\n operationListItem(object: IAmfOperation, context?: Record<string, string>): IApiOperationListItem {\n const result: IApiOperationListItem = {\n id: object['@id'],\n method: '',\n }\n\n const method = this._getValue(object, ns.aml.vocabularies.apiContract.method, context)\n if (method && typeof method === 'string') {\n result.method = method\n }\n const name = this._getValue(object, ns.aml.vocabularies.core.name, context)\n if (name && typeof name === 'string') {\n result.name = name\n }\n return result\n }\n}\n"]}
@@ -1,25 +0,0 @@
1
- import { type DomainPropertyType } from '../modeling/DataFormat.js';
2
- import { PropertyWebBindings } from '../modeling/Bindings.js';
3
- export declare const IAmfScalarTypes: string[];
4
- export declare const IAmfArrayTypes: string[];
5
- export declare const IAmfNodeTypes: string[];
6
- export declare const IAmfPropertyTypes: string[];
7
- export declare const IAmfNilTypes: string[];
8
- export declare const IAmfUnionTypes: string[];
9
- export declare const IAmfFileTypes: string[];
10
- export declare const IAmfAnyTypes: string[];
11
- export declare const IAmfSchemaTypes: string[];
12
- export declare const IAmfTupleTypes: string[];
13
- export declare const IAmfRecursiveTypes: string[];
14
- export declare const IAmfXmlSerializationTypes: string[];
15
- export declare const IAmfScalarNodeTypes: string[];
16
- export declare const IAmfArrayNodeTypes: string[];
17
- export declare const IAmfObjectNodeTypes: string[];
18
- export declare const IAmfExampleTypes: string[];
19
- /**
20
- * Translates the DomainProperty type to an AMF data type.
21
- * @param type The property data type
22
- * @returns AMF shape dataType
23
- */
24
- export declare function modelTypeToAmfDataType(type: DomainPropertyType, bindings?: PropertyWebBindings): string;
25
- //# sourceMappingURL=AmfTypes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AmfTypes.d.ts","sourceRoot":"","sources":["../../../src/amf/AmfTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAG7D,eAAO,MAAM,eAAe,UAM3B,CAAA;AACD,eAAO,MAAM,cAAc,UAM1B,CAAA;AACD,eAAO,MAAM,aAAa,UAMzB,CAAA;AACD,eAAO,MAAM,iBAAiB,UAK7B,CAAA;AACD,eAAO,MAAM,YAAY,UAKxB,CAAA;AACD,eAAO,MAAM,cAAc,UAM1B,CAAA;AACD,eAAO,MAAM,aAAa,UAMzB,CAAA;AACD,eAAO,MAAM,YAAY,UAKxB,CAAA;AACD,eAAO,MAAM,eAAe,UAM3B,CAAA;AACD,eAAO,MAAM,cAAc,UAO1B,CAAA;AACD,eAAO,MAAM,kBAAkB,UAK9B,CAAA;AACD,eAAO,MAAM,yBAAyB,UAGrC,CAAA;AAED,eAAO,MAAM,mBAAmB,UAI/B,CAAA;AACD,eAAO,MAAM,kBAAkB,UAK9B,CAAA;AACD,eAAO,MAAM,mBAAmB,UAI/B,CAAA;AACD,eAAO,MAAM,gBAAgB,UAG5B,CAAA;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAqCvG"}
@@ -1,143 +0,0 @@
1
- import { AmfNamespace } from './definitions/Namespace.js';
2
- export const IAmfScalarTypes = [
3
- AmfNamespace.aml.vocabularies.shapes.ScalarShape,
4
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
5
- AmfNamespace.w3.shacl.Shape,
6
- AmfNamespace.aml.vocabularies.shapes.Shape,
7
- AmfNamespace.aml.vocabularies.document.DomainElement,
8
- ];
9
- export const IAmfArrayTypes = [
10
- AmfNamespace.aml.vocabularies.shapes.ArrayShape,
11
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
12
- AmfNamespace.w3.shacl.Shape,
13
- AmfNamespace.aml.vocabularies.shapes.Shape,
14
- AmfNamespace.aml.vocabularies.document.DomainElement,
15
- ];
16
- export const IAmfNodeTypes = [
17
- AmfNamespace.w3.shacl.NodeShape,
18
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
19
- AmfNamespace.w3.shacl.Shape,
20
- AmfNamespace.aml.vocabularies.shapes.Shape,
21
- AmfNamespace.aml.vocabularies.document.DomainElement,
22
- ];
23
- export const IAmfPropertyTypes = [
24
- AmfNamespace.w3.shacl.PropertyShape,
25
- AmfNamespace.w3.shacl.Shape,
26
- AmfNamespace.aml.vocabularies.shapes.Shape,
27
- AmfNamespace.aml.vocabularies.document.DomainElement,
28
- ];
29
- export const IAmfNilTypes = [
30
- AmfNamespace.aml.vocabularies.shapes.NilShape,
31
- AmfNamespace.w3.shacl.Shape,
32
- AmfNamespace.aml.vocabularies.shapes.Shape,
33
- AmfNamespace.aml.vocabularies.document.DomainElement,
34
- ];
35
- export const IAmfUnionTypes = [
36
- AmfNamespace.aml.vocabularies.shapes.UnionShape,
37
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
38
- AmfNamespace.w3.shacl.Shape,
39
- AmfNamespace.aml.vocabularies.shapes.Shape,
40
- AmfNamespace.aml.vocabularies.document.DomainElement,
41
- ];
42
- export const IAmfFileTypes = [
43
- AmfNamespace.aml.vocabularies.shapes.FileShape,
44
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
45
- AmfNamespace.w3.shacl.Shape,
46
- AmfNamespace.aml.vocabularies.shapes.Shape,
47
- AmfNamespace.aml.vocabularies.document.DomainElement,
48
- ];
49
- export const IAmfAnyTypes = [
50
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
51
- AmfNamespace.w3.shacl.Shape,
52
- AmfNamespace.aml.vocabularies.shapes.Shape,
53
- AmfNamespace.aml.vocabularies.document.DomainElement,
54
- ];
55
- export const IAmfSchemaTypes = [
56
- AmfNamespace.aml.vocabularies.shapes.SchemaShape,
57
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
58
- AmfNamespace.w3.shacl.Shape,
59
- AmfNamespace.aml.vocabularies.shapes.Shape,
60
- AmfNamespace.aml.vocabularies.document.DomainElement,
61
- ];
62
- export const IAmfTupleTypes = [
63
- AmfNamespace.aml.vocabularies.shapes.TupleShape,
64
- AmfNamespace.aml.vocabularies.shapes.ArrayShape,
65
- AmfNamespace.aml.vocabularies.shapes.AnyShape,
66
- AmfNamespace.w3.shacl.Shape,
67
- AmfNamespace.aml.vocabularies.shapes.Shape,
68
- AmfNamespace.aml.vocabularies.document.DomainElement,
69
- ];
70
- export const IAmfRecursiveTypes = [
71
- AmfNamespace.aml.vocabularies.shapes.RecursiveShape,
72
- AmfNamespace.w3.shacl.Shape,
73
- AmfNamespace.aml.vocabularies.shapes.Shape,
74
- AmfNamespace.aml.vocabularies.document.DomainElement,
75
- ];
76
- export const IAmfXmlSerializationTypes = [
77
- AmfNamespace.aml.vocabularies.shapes.XMLSerializer,
78
- AmfNamespace.aml.vocabularies.document.DomainElement,
79
- ];
80
- export const IAmfScalarNodeTypes = [
81
- AmfNamespace.aml.vocabularies.data.Scalar,
82
- AmfNamespace.aml.vocabularies.data.Node,
83
- AmfNamespace.aml.vocabularies.document.DomainElement,
84
- ];
85
- export const IAmfArrayNodeTypes = [
86
- AmfNamespace.aml.vocabularies.data.Array,
87
- AmfNamespace.w3.rdfSchema.Seq,
88
- AmfNamespace.aml.vocabularies.data.Node,
89
- AmfNamespace.aml.vocabularies.document.DomainElement,
90
- ];
91
- export const IAmfObjectNodeTypes = [
92
- AmfNamespace.aml.vocabularies.data.Object,
93
- AmfNamespace.aml.vocabularies.data.Node,
94
- AmfNamespace.aml.vocabularies.document.DomainElement,
95
- ];
96
- export const IAmfExampleTypes = [
97
- AmfNamespace.aml.vocabularies.apiContract.Example,
98
- AmfNamespace.aml.vocabularies.document.DomainElement,
99
- ];
100
- /**
101
- * Translates the DomainProperty type to an AMF data type.
102
- * @param type The property data type
103
- * @returns AMF shape dataType
104
- */
105
- export function modelTypeToAmfDataType(type, bindings) {
106
- if (type === 'number') {
107
- if (bindings?.format === 'int32' || bindings?.format === 'int64') {
108
- return AmfNamespace.w3.xmlSchema.integer;
109
- }
110
- return AmfNamespace.w3.xmlSchema.number;
111
- }
112
- if (type === 'boolean') {
113
- return AmfNamespace.aml.vocabularies.shapes.boolean;
114
- }
115
- if (type === 'date') {
116
- return AmfNamespace.w3.xmlSchema.date;
117
- }
118
- if (type === 'datetime') {
119
- return AmfNamespace.w3.xmlSchema.dateTime;
120
- }
121
- if (type === 'time') {
122
- return AmfNamespace.aml.vocabularies.shapes.dateTimeOnly;
123
- }
124
- if (type === 'binary' && bindings && bindings.format === 'base64') {
125
- return AmfNamespace.w3.xmlSchema.base64Binary;
126
- }
127
- return AmfNamespace.w3.xmlSchema.string;
128
- // switch (type) {
129
- // // case 'nil':
130
- // // return AmfNamespace.aml.vocabularies.shapes.nil
131
- // // case 'any':
132
- // // return AmfNamespace.aml.vocabularies.shapes.AnyShape
133
- // default:
134
- // if (type === 'binary' && bindings && bindings.format === 'base64') {
135
- // return AmfNamespace.w3.xmlSchema.base64Binary
136
- // }
137
- // // if (bindings && bindings.format === 'binary') {
138
- // // return AmfNamespace.w3.xmlSchema.base64Binary
139
- // // }
140
- // return AmfNamespace.w3.xmlSchema.string
141
- // }
142
- }
143
- //# sourceMappingURL=AmfTypes.js.map