@api-client/core 0.19.9 → 0.19.11

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 (523) hide show
  1. package/LICENSE.md +9 -63
  2. package/Testing.md +1 -1
  3. package/bin/test.ts +1 -12
  4. package/build/src/browser.d.ts +0 -15
  5. package/build/src/browser.d.ts.map +1 -1
  6. package/build/src/browser.js +0 -17
  7. package/build/src/browser.js.map +1 -1
  8. package/build/src/decorators/observed.d.ts.map +1 -1
  9. package/build/src/decorators/observed.js +91 -0
  10. package/build/src/decorators/observed.js.map +1 -1
  11. package/build/src/events/EventTypes.d.ts +0 -6
  12. package/build/src/events/EventTypes.d.ts.map +1 -1
  13. package/build/src/events/EventTypes.js +0 -2
  14. package/build/src/events/EventTypes.js.map +1 -1
  15. package/build/src/events/Events.d.ts +0 -2
  16. package/build/src/events/Events.d.ts.map +1 -1
  17. package/build/src/events/Events.js +0 -2
  18. package/build/src/events/Events.js.map +1 -1
  19. package/build/src/index.d.ts +0 -15
  20. package/build/src/index.d.ts.map +1 -1
  21. package/build/src/index.js +0 -17
  22. package/build/src/index.js.map +1 -1
  23. package/build/src/modeling/ApiModel.d.ts +21 -7
  24. package/build/src/modeling/ApiModel.d.ts.map +1 -1
  25. package/build/src/modeling/ApiModel.js +70 -29
  26. package/build/src/modeling/ApiModel.js.map +1 -1
  27. package/build/src/modeling/Bindings.d.ts +3 -3
  28. package/build/src/modeling/Bindings.d.ts.map +1 -1
  29. package/build/src/modeling/Bindings.js.map +1 -1
  30. package/build/src/modeling/DomainAssociation.d.ts +5 -5
  31. package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
  32. package/build/src/modeling/DomainAssociation.js.map +1 -1
  33. package/build/src/modeling/DomainEntity.d.ts +2 -3
  34. package/build/src/modeling/DomainEntity.d.ts.map +1 -1
  35. package/build/src/modeling/DomainEntity.js +1 -1
  36. package/build/src/modeling/DomainEntity.js.map +1 -1
  37. package/build/src/modeling/DomainProperty.d.ts +2 -3
  38. package/build/src/modeling/DomainProperty.d.ts.map +1 -1
  39. package/build/src/modeling/DomainProperty.js +1 -1
  40. package/build/src/modeling/DomainProperty.js.map +1 -1
  41. package/build/src/modeling/DomainValidation.d.ts +1 -1
  42. package/build/src/modeling/DomainValidation.d.ts.map +1 -1
  43. package/build/src/modeling/DomainValidation.js.map +1 -1
  44. package/build/src/modeling/ExposedEntity.d.ts +14 -0
  45. package/build/src/modeling/ExposedEntity.d.ts.map +1 -1
  46. package/build/src/modeling/ExposedEntity.js +59 -6
  47. package/build/src/modeling/ExposedEntity.js.map +1 -1
  48. package/build/src/modeling/actions/Action.d.ts +11 -1
  49. package/build/src/modeling/actions/Action.d.ts.map +1 -1
  50. package/build/src/modeling/actions/Action.js +21 -3
  51. package/build/src/modeling/actions/Action.js.map +1 -1
  52. package/build/src/modeling/actions/CreateAction.d.ts +2 -1
  53. package/build/src/modeling/actions/CreateAction.d.ts.map +1 -1
  54. package/build/src/modeling/actions/CreateAction.js +2 -2
  55. package/build/src/modeling/actions/CreateAction.js.map +1 -1
  56. package/build/src/modeling/actions/DeleteAction.d.ts +2 -1
  57. package/build/src/modeling/actions/DeleteAction.d.ts.map +1 -1
  58. package/build/src/modeling/actions/DeleteAction.js +2 -2
  59. package/build/src/modeling/actions/DeleteAction.js.map +1 -1
  60. package/build/src/modeling/actions/ListAction.d.ts +2 -1
  61. package/build/src/modeling/actions/ListAction.d.ts.map +1 -1
  62. package/build/src/modeling/actions/ListAction.js +2 -2
  63. package/build/src/modeling/actions/ListAction.js.map +1 -1
  64. package/build/src/modeling/actions/ReadAction.d.ts +2 -1
  65. package/build/src/modeling/actions/ReadAction.d.ts.map +1 -1
  66. package/build/src/modeling/actions/ReadAction.js +2 -2
  67. package/build/src/modeling/actions/ReadAction.js.map +1 -1
  68. package/build/src/modeling/actions/SearchAction.d.ts +2 -1
  69. package/build/src/modeling/actions/SearchAction.d.ts.map +1 -1
  70. package/build/src/modeling/actions/SearchAction.js +2 -2
  71. package/build/src/modeling/actions/SearchAction.js.map +1 -1
  72. package/build/src/modeling/actions/UpdateAction.d.ts +2 -1
  73. package/build/src/modeling/actions/UpdateAction.d.ts.map +1 -1
  74. package/build/src/modeling/actions/UpdateAction.js +2 -2
  75. package/build/src/modeling/actions/UpdateAction.js.map +1 -1
  76. package/build/src/modeling/actions/index.d.ts +2 -1
  77. package/build/src/modeling/actions/index.d.ts.map +1 -1
  78. package/build/src/modeling/actions/index.js +7 -7
  79. package/build/src/modeling/actions/index.js.map +1 -1
  80. package/build/src/modeling/ai/types.d.ts +2 -2
  81. package/build/src/modeling/ai/types.d.ts.map +1 -1
  82. package/build/src/modeling/ai/types.js.map +1 -1
  83. package/build/src/{amf → modeling/amf}/DataValueGenerator.d.ts +1 -1
  84. package/build/src/modeling/amf/DataValueGenerator.d.ts.map +1 -0
  85. package/build/src/{amf → modeling/amf}/DataValueGenerator.js +2 -3
  86. package/build/src/modeling/amf/DataValueGenerator.js.map +1 -0
  87. package/build/src/modeling/amf/ShapeGenerator.d.ts +20 -20
  88. package/build/src/modeling/amf/ShapeGenerator.d.ts.map +1 -1
  89. package/build/src/modeling/amf/ShapeGenerator.js +16 -18
  90. package/build/src/modeling/amf/ShapeGenerator.js.map +1 -1
  91. package/build/src/modeling/amf/core_types.d.ts +9 -0
  92. package/build/src/modeling/amf/core_types.d.ts.map +1 -0
  93. package/build/src/modeling/amf/core_types.js +45 -0
  94. package/build/src/modeling/amf/core_types.js.map +1 -0
  95. package/build/src/modeling/index.d.ts +1 -0
  96. package/build/src/modeling/index.d.ts.map +1 -1
  97. package/build/src/modeling/index.js +1 -0
  98. package/build/src/modeling/index.js.map +1 -1
  99. package/build/src/modeling/types.d.ts +67 -0
  100. package/build/src/modeling/types.d.ts.map +1 -1
  101. package/build/src/modeling/types.js.map +1 -1
  102. package/build/src/modeling/validation/api_model_rules.d.ts +15 -0
  103. package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -0
  104. package/build/src/modeling/validation/api_model_rules.js +599 -0
  105. package/build/src/modeling/validation/api_model_rules.js.map +1 -0
  106. package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
  107. package/build/src/modeling/validation/association_validation.js +1 -3
  108. package/build/src/modeling/validation/association_validation.js.map +1 -1
  109. package/build/src/models/http-flows/LegacyTranslator.js +1 -1
  110. package/build/src/models/http-flows/LegacyTranslator.js.map +1 -1
  111. package/build/src/runtime/http-runner/HttpFlows.js +1 -1
  112. package/build/src/runtime/http-runner/HttpFlows.js.map +1 -1
  113. package/build/tsconfig.tsbuildinfo +1 -1
  114. package/eslint.config.js +0 -2
  115. package/package.json +27 -135
  116. package/src/decorators/observed.ts +91 -0
  117. package/src/events/EventTypes.ts +0 -2
  118. package/src/events/Events.ts +0 -2
  119. package/src/modeling/ApiModel.ts +73 -33
  120. package/src/modeling/Bindings.ts +3 -3
  121. package/src/modeling/DomainAssociation.ts +5 -5
  122. package/src/modeling/DomainEntity.ts +3 -4
  123. package/src/modeling/DomainProperty.ts +3 -4
  124. package/src/modeling/DomainValidation.ts +1 -1
  125. package/src/modeling/ExposedEntity.ts +63 -9
  126. package/src/modeling/actions/Action.ts +25 -2
  127. package/src/modeling/actions/CreateAction.ts +3 -2
  128. package/src/modeling/actions/DeleteAction.ts +3 -2
  129. package/src/modeling/actions/ListAction.ts +3 -2
  130. package/src/modeling/actions/ReadAction.ts +3 -2
  131. package/src/modeling/actions/SearchAction.ts +3 -2
  132. package/src/modeling/actions/UpdateAction.ts +3 -2
  133. package/src/modeling/ai/types.ts +2 -2
  134. package/src/{amf → modeling/amf}/DataValueGenerator.ts +3 -4
  135. package/src/modeling/amf/ShapeGenerator.ts +45 -61
  136. package/src/modeling/amf/core_types.ts +47 -0
  137. package/src/modeling/types.ts +70 -0
  138. package/src/modeling/validation/api_model_rules.ts +640 -0
  139. package/src/modeling/validation/api_model_validation_rules.md +58 -0
  140. package/src/modeling/validation/association_validation.ts +1 -3
  141. package/src/models/http-flows/LegacyTranslator.ts +1 -1
  142. package/src/runtime/http-runner/HttpFlows.ts +1 -1
  143. package/tests/unit/modeling/actions/Action.spec.ts +40 -8
  144. package/tests/unit/modeling/actions/CreateAction.spec.ts +5 -5
  145. package/tests/unit/modeling/actions/DeleteAction.spec.ts +6 -6
  146. package/tests/unit/modeling/actions/ListAction.spec.ts +7 -7
  147. package/tests/unit/modeling/actions/ReadAction.spec.ts +6 -6
  148. package/tests/unit/modeling/actions/SearchAction.spec.ts +6 -6
  149. package/tests/unit/modeling/actions/UpdateAction.spec.ts +6 -6
  150. package/tests/unit/{amf → modeling/amf}/data_value_generator.spec.ts +2 -2
  151. package/tests/unit/modeling/amf/shape_generator.spec.ts +146 -167
  152. package/tests/unit/modeling/api_model.spec.ts +190 -13
  153. package/tests/unit/modeling/api_model_expose_entity.spec.ts +43 -19
  154. package/tests/unit/modeling/api_model_remove_entity.spec.ts +6 -6
  155. package/tests/unit/modeling/domain_asociation.spec.ts +13 -13
  156. package/tests/unit/modeling/exposed_entity.spec.ts +123 -3
  157. package/tests/unit/modeling/exposed_entity_actions.spec.ts +41 -18
  158. package/tests/unit/modeling/exposed_entity_setter_validation.spec.ts +1 -1
  159. package/tests/unit/modeling/rules/restoring_rules.spec.ts +9 -5
  160. package/tests/unit/modeling/validation/api_model_rules.spec.ts +324 -0
  161. package/tests/unit/runtime/runners/http_assertion_runner.spec.ts +1 -1
  162. package/tests/unit/runtime/runners/http_flow_runner.spec.ts +1 -1
  163. package/tests/unit/runtime/runners/project_runner.spec.ts +1 -1
  164. package/tests/unit/runtime/runners/request_runner.spec.ts +1 -1
  165. package/tests/unit/runtime/runners/serial_runner.spec.ts +1 -1
  166. package/tsconfig.browser.json +1 -1
  167. package/tsconfig.node.json +1 -1
  168. package/bin/test-web.ts +0 -6
  169. package/build/src/amf/AmfMixin.d.ts +0 -396
  170. package/build/src/amf/AmfMixin.d.ts.map +0 -1
  171. package/build/src/amf/AmfMixin.js +0 -1138
  172. package/build/src/amf/AmfMixin.js.map +0 -1
  173. package/build/src/amf/AmfSerializer.d.ts +0 -137
  174. package/build/src/amf/AmfSerializer.d.ts.map +0 -1
  175. package/build/src/amf/AmfSerializer.js +0 -1947
  176. package/build/src/amf/AmfSerializer.js.map +0 -1
  177. package/build/src/amf/AmfTypes.d.ts +0 -25
  178. package/build/src/amf/AmfTypes.d.ts.map +0 -1
  179. package/build/src/amf/AmfTypes.js +0 -143
  180. package/build/src/amf/AmfTypes.js.map +0 -1
  181. package/build/src/amf/ApiExampleGenerator.d.ts +0 -40
  182. package/build/src/amf/ApiExampleGenerator.d.ts.map +0 -1
  183. package/build/src/amf/ApiExampleGenerator.js +0 -112
  184. package/build/src/amf/ApiExampleGenerator.js.map +0 -1
  185. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +0 -68
  186. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts.map +0 -1
  187. package/build/src/amf/ApiMonacoSchemaGenerator.js +0 -248
  188. package/build/src/amf/ApiMonacoSchemaGenerator.js.map +0 -1
  189. package/build/src/amf/ApiSchemaGenerator.d.ts +0 -56
  190. package/build/src/amf/ApiSchemaGenerator.d.ts.map +0 -1
  191. package/build/src/amf/ApiSchemaGenerator.js +0 -94
  192. package/build/src/amf/ApiSchemaGenerator.js.map +0 -1
  193. package/build/src/amf/ApiSchemaValues.d.ts +0 -111
  194. package/build/src/amf/ApiSchemaValues.d.ts.map +0 -1
  195. package/build/src/amf/ApiSchemaValues.js +0 -463
  196. package/build/src/amf/ApiSchemaValues.js.map +0 -1
  197. package/build/src/amf/DataValueGenerator.d.ts.map +0 -1
  198. package/build/src/amf/DataValueGenerator.js.map +0 -1
  199. package/build/src/amf/Parsing.d.ts +0 -48
  200. package/build/src/amf/Parsing.d.ts.map +0 -1
  201. package/build/src/amf/Parsing.js +0 -2
  202. package/build/src/amf/Parsing.js.map +0 -1
  203. package/build/src/amf/Utils.d.ts +0 -37
  204. package/build/src/amf/Utils.d.ts.map +0 -1
  205. package/build/src/amf/Utils.js +0 -169
  206. package/build/src/amf/Utils.js.map +0 -1
  207. package/build/src/amf/data-node/DataNodeBase.d.ts +0 -34
  208. package/build/src/amf/data-node/DataNodeBase.d.ts.map +0 -1
  209. package/build/src/amf/data-node/DataNodeBase.js +0 -77
  210. package/build/src/amf/data-node/DataNodeBase.js.map +0 -1
  211. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +0 -15
  212. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts.map +0 -1
  213. package/build/src/amf/data-node/JsonDataNodeGenerator.js +0 -23
  214. package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +0 -1
  215. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +0 -14
  216. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts.map +0 -1
  217. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +0 -48
  218. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +0 -1
  219. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +0 -22
  220. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts.map +0 -1
  221. package/build/src/amf/data-node/XmlDataNodeGenerator.js +0 -34
  222. package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +0 -1
  223. package/build/src/amf/definitions/Amf.d.ts +0 -363
  224. package/build/src/amf/definitions/Amf.d.ts.map +0 -1
  225. package/build/src/amf/definitions/Amf.js +0 -3
  226. package/build/src/amf/definitions/Amf.js.map +0 -1
  227. package/build/src/amf/definitions/Api.d.ts +0 -383
  228. package/build/src/amf/definitions/Api.d.ts.map +0 -1
  229. package/build/src/amf/definitions/Api.js +0 -2
  230. package/build/src/amf/definitions/Api.js.map +0 -1
  231. package/build/src/amf/definitions/Base.d.ts +0 -12
  232. package/build/src/amf/definitions/Base.d.ts.map +0 -1
  233. package/build/src/amf/definitions/Base.js +0 -2
  234. package/build/src/amf/definitions/Base.js.map +0 -1
  235. package/build/src/amf/definitions/Namespace.d.ts +0 -327
  236. package/build/src/amf/definitions/Namespace.d.ts.map +0 -1
  237. package/build/src/amf/definitions/Namespace.js +0 -346
  238. package/build/src/amf/definitions/Namespace.js.map +0 -1
  239. package/build/src/amf/definitions/Shapes.d.ts +0 -312
  240. package/build/src/amf/definitions/Shapes.d.ts.map +0 -1
  241. package/build/src/amf/definitions/Shapes.js +0 -87
  242. package/build/src/amf/definitions/Shapes.js.map +0 -1
  243. package/build/src/amf/models/AmfDataNode.d.ts +0 -67
  244. package/build/src/amf/models/AmfDataNode.d.ts.map +0 -1
  245. package/build/src/amf/models/AmfDataNode.js +0 -192
  246. package/build/src/amf/models/AmfDataNode.js.map +0 -1
  247. package/build/src/amf/shape/ShapeBase.d.ts +0 -74
  248. package/build/src/amf/shape/ShapeBase.d.ts.map +0 -1
  249. package/build/src/amf/shape/ShapeBase.js +0 -93
  250. package/build/src/amf/shape/ShapeBase.js.map +0 -1
  251. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +0 -47
  252. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts.map +0 -1
  253. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +0 -420
  254. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +0 -1
  255. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +0 -85
  256. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts.map +0 -1
  257. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +0 -852
  258. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +0 -1
  259. package/build/src/events/amf/AmfEventTypes.d.ts +0 -7
  260. package/build/src/events/amf/AmfEventTypes.d.ts.map +0 -1
  261. package/build/src/events/amf/AmfEventTypes.js +0 -7
  262. package/build/src/events/amf/AmfEventTypes.js.map +0 -1
  263. package/build/src/events/amf/AmfEvents.d.ts +0 -34
  264. package/build/src/events/amf/AmfEvents.d.ts.map +0 -1
  265. package/build/src/events/amf/AmfEvents.js +0 -63
  266. package/build/src/events/amf/AmfEvents.js.map +0 -1
  267. package/build/src/mocking/RandExp.d.ts +0 -55
  268. package/build/src/mocking/RandExp.d.ts.map +0 -1
  269. package/build/src/mocking/RandExp.js +0 -302
  270. package/build/src/mocking/RandExp.js.map +0 -1
  271. package/build/src/mocking/lib/ret.d.ts +0 -16
  272. package/build/src/mocking/lib/ret.d.ts.map +0 -1
  273. package/build/src/mocking/lib/ret.js +0 -284
  274. package/build/src/mocking/lib/ret.js.map +0 -1
  275. package/data/apis/APIC-187/APIC-187.raml +0 -21
  276. package/data/apis/APIC-187/dataType.raml +0 -132
  277. package/data/apis/APIC-187/example.raml +0 -84
  278. package/data/apis/APIC-188/APIC-188.raml +0 -21
  279. package/data/apis/APIC-188/dataType.raml +0 -132
  280. package/data/apis/APIC-188/example.raml +0 -84
  281. package/data/apis/APIC-233/APIC-233.raml +0 -15
  282. package/data/apis/APIC-391/APIC-391.raml +0 -44
  283. package/data/apis/APIC-391/examples/post-body-request-example.raml +0 -7
  284. package/data/apis/APIC-483/APIC-483.raml +0 -16
  285. package/data/apis/APIC-483/example/list-of-bank-succ.json +0 -32
  286. package/data/apis/APIC-483/schema/response-retrieve-list-bank.json +0 -68
  287. package/data/apis/APIC-487/APIC-487.raml +0 -36
  288. package/data/apis/APIC-655/APIC-655.raml +0 -44
  289. package/data/apis/APIC-655/delivery.json +0 -12
  290. package/data/apis/APIC-689/APIC-689.raml +0 -20
  291. package/data/apis/APIC-690/APIC-690.raml +0 -17
  292. package/data/apis/APIC-690/datatypes/Address.raml +0 -10
  293. package/data/apis/APIC-690/datatypes/Customer.raml +0 -17
  294. package/data/apis/APIC-690/examples/CustomerExample2.raml +0 -17
  295. package/data/apis/APIC-690/examples/CustomersExample.raml +0 -34
  296. package/data/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json +0 -1383
  297. package/data/apis/SE-10469/SE-10469.raml +0 -11
  298. package/data/apis/SE-13092/Examples/PersonExample.raml +0 -7
  299. package/data/apis/SE-13092/SE-13092.raml +0 -37
  300. package/data/apis/SE-13092/datatypes/Address.raml +0 -5
  301. package/data/apis/SE-13092/datatypes/InlineType.raml +0 -5
  302. package/data/apis/SE-13092/datatypes/Person.raml +0 -15
  303. package/data/apis/SE-22063/SE-22063.raml +0 -14
  304. package/data/apis/SE-22063/stock.raml +0 -41
  305. package/data/apis/amf-helper-api/amf-helper-api.raml +0 -1024
  306. package/data/apis/amf-helper-api/examples/comment-example.json +0 -42
  307. package/data/apis/amf-helper-api/examples/commentCreateRequest-example.json +0 -7
  308. package/data/apis/amf-helper-api/examples/commentList-example.json +0 -48
  309. package/data/apis/amf-helper-api/examples/person.json +0 -14
  310. package/data/apis/amf-helper-api/examples/person.raml +0 -13
  311. package/data/apis/amf-helper-api/examples/person.xml +0 -14
  312. package/data/apis/amf-helper-api/libraries/comment-lib.raml +0 -143
  313. package/data/apis/amf-helper-api/library.raml +0 -7
  314. package/data/apis/amf-helper-api/schemas/person.json +0 -104
  315. package/data/apis/amf-helper-api/schemas/person.xsd +0 -26
  316. package/data/apis/amf-helper-api/traits/file.raml +0 -33
  317. package/data/apis/amf-helper-api/traits/pagination.raml +0 -80
  318. package/data/apis/amf-helper-api/traits/results.raml +0 -19
  319. package/data/apis/amf-helper-api/traits/visibility.raml +0 -14
  320. package/data/apis/amf-helper-api/types/app-person.raml +0 -101
  321. package/data/apis/amf-helper-api/types/dimensions.raml +0 -24
  322. package/data/apis/amf-helper-api/types/external-type.raml +0 -7
  323. package/data/apis/amf-helper-api/types/image.raml +0 -23
  324. package/data/apis/amf-helper-api/types/product.raml +0 -52
  325. package/data/apis/amf-helper-api/types/resource.raml +0 -11
  326. package/data/apis/amf-helper-api/types/standard-request.raml +0 -50
  327. package/data/apis/amf-helper-api/types/user.raml +0 -37
  328. package/data/apis/arc-demo-api/arc-demo-api.raml +0 -468
  329. package/data/apis/arc-demo-api/examples/e400.xml +0 -4
  330. package/data/apis/arc-demo-api/examples/e401.xml +0 -4
  331. package/data/apis/arc-demo-api/examples/e404.xml +0 -4
  332. package/data/apis/arc-demo-api/examples/image.xml +0 -5
  333. package/data/apis/arc-demo-api/examples/messages-example.json +0 -22
  334. package/data/apis/arc-demo-api/examples/messages-sent-example.json +0 -15
  335. package/data/apis/arc-demo-api/examples/person.json +0 -14
  336. package/data/apis/arc-demo-api/examples/person.url.encoded +0 -1
  337. package/data/apis/arc-demo-api/examples/person.xml +0 -14
  338. package/data/apis/arc-demo-api/examples/product.xml +0 -9
  339. package/data/apis/arc-demo-api/library.raml +0 -36
  340. package/data/apis/arc-demo-api/resourceTypes/app-person.raml +0 -49
  341. package/data/apis/arc-demo-api/resourceTypes/example-types.raml +0 -45
  342. package/data/apis/arc-demo-api/resourceTypes/image.raml +0 -23
  343. package/data/apis/arc-demo-api/resourceTypes/message-sent-type.raml +0 -23
  344. package/data/apis/arc-demo-api/resourceTypes/message-type.raml +0 -33
  345. package/data/apis/arc-demo-api/resourceTypes/product.raml +0 -52
  346. package/data/apis/arc-demo-api/resourceTypes/resource.raml +0 -11
  347. package/data/apis/arc-demo-api/schemas/error-response.xsd +0 -11
  348. package/data/apis/arc-demo-api/schemas/image.xsd +0 -11
  349. package/data/apis/arc-demo-api/schemas/person.json +0 -104
  350. package/data/apis/arc-demo-api/schemas/person.xsd +0 -26
  351. package/data/apis/arc-demo-api/schemas/product.xsd +0 -17
  352. package/data/apis/arc-demo-api/securitySchemes/basic.raml +0 -5
  353. package/data/apis/arc-demo-api/securitySchemes/oauth_2_0.raml +0 -29
  354. package/data/apis/arc-demo-api/securitySchemes/x-custom.raml +0 -26
  355. package/data/apis/arc-demo-api/traits/adminable.raml +0 -23
  356. package/data/apis/arc-demo-api/traits/pagination.raml +0 -83
  357. package/data/apis/arc-demo-api/traits/rate-limited.raml +0 -9
  358. package/data/apis/async-api/async-api.yaml +0 -96
  359. package/data/apis/example-generator-api/contact-email-example.raml +0 -6
  360. package/data/apis/example-generator-api/contact-example.raml +0 -5
  361. package/data/apis/example-generator-api/contact-fax-example.raml +0 -5
  362. package/data/apis/example-generator-api/contact-website-example.raml +0 -2
  363. package/data/apis/example-generator-api/example-1.raml +0 -6
  364. package/data/apis/example-generator-api/example-2.raml +0 -9
  365. package/data/apis/example-generator-api/example-3.raml +0 -4
  366. package/data/apis/example-generator-api/example-4.raml +0 -2
  367. package/data/apis/example-generator-api/example-5.raml +0 -4
  368. package/data/apis/example-generator-api/example-6.raml +0 -2
  369. package/data/apis/example-generator-api/example-7.raml +0 -5
  370. package/data/apis/example-generator-api/example-generator-api.raml +0 -423
  371. package/data/apis/example-generator-api/example.json +0 -14
  372. package/data/apis/example-generator-api/example.xml +0 -15
  373. package/data/apis/example-generator-api/example.xsd +0 -26
  374. package/data/apis/example-generator-api/examples/employee.raml +0 -7
  375. package/data/apis/example-generator-api/examples/employees.raml +0 -7
  376. package/data/apis/example-generator-api/linked-named-example.raml +0 -21
  377. package/data/apis/example-generator-api/named-example-with-link.raml +0 -5
  378. package/data/apis/example-generator-api/named-example.raml +0 -9
  379. package/data/apis/example-generator-api/user-json-example.raml +0 -17
  380. package/data/apis/example-generator-api/user-raml-example.raml +0 -37
  381. package/data/apis/example-generator-api/user.json +0 -8
  382. package/data/apis/example-generator-api/user.raml +0 -18
  383. package/data/apis/example-generator-api/users-json-example.raml +0 -17
  384. package/data/apis/example-generator-api/users-raml-example.raml +0 -32
  385. package/data/apis/example-generator-api/users.json +0 -8
  386. package/data/apis/expanded-api/expanded-api.raml +0 -8
  387. package/data/apis/flattened-api/flattened-api.raml +0 -8
  388. package/data/apis/multiple-servers/multiple-servers.yaml +0 -112
  389. package/data/apis/oas-3-api/oas-3-api.yaml +0 -356
  390. package/data/apis/oas-date/oas-date.yaml +0 -28
  391. package/data/apis/oas-types/oas-types.yaml +0 -159
  392. package/data/apis/oas-unions/oas-unions.yaml +0 -75
  393. package/data/apis/petstore/petstore.yaml +0 -954
  394. package/data/apis/raml-date/raml-date.raml +0 -28
  395. package/data/apis/recursive/recursive.raml +0 -14
  396. package/data/apis/schema-api/examples/person.json +0 -14
  397. package/data/apis/schema-api/examples/person.raml +0 -14
  398. package/data/apis/schema-api/examples/person.url.encoded +0 -1
  399. package/data/apis/schema-api/examples/person.xml +0 -14
  400. package/data/apis/schema-api/library/demo-types.raml +0 -43
  401. package/data/apis/schema-api/schema-api.raml +0 -656
  402. package/data/apis/schema-api/schemas/person.json +0 -104
  403. package/data/apis/schema-api/schemas/person.xsd +0 -26
  404. package/data/apis/schema-api/types/DemoPerson.raml +0 -67
  405. package/data/apis/secured-api/oauth-2-custom-settings.raml +0 -143
  406. package/data/apis/secured-api/oauth2-header-delivery.raml +0 -13
  407. package/data/apis/secured-api/oauth2-no-delivery.raml +0 -8
  408. package/data/apis/secured-api/oauth2-no-grants.raml +0 -12
  409. package/data/apis/secured-api/oauth2-pkce.raml +0 -13
  410. package/data/apis/secured-api/oauth2-query-delivery.raml +0 -13
  411. package/data/apis/secured-api/oauth_1_0.raml +0 -8
  412. package/data/apis/secured-api/oauth_1_0_no-settings.raml +0 -3
  413. package/data/apis/secured-api/oauth_1_0_no-signature.raml +0 -7
  414. package/data/apis/secured-api/oauth_1_0_signature.raml +0 -8
  415. package/data/apis/secured-api/passthrough-querystring.raml +0 -16
  416. package/data/apis/secured-api/passthrough.raml +0 -24
  417. package/data/apis/secured-api/secured-api.raml +0 -231
  418. package/data/apis/secured-api/x-custom.raml +0 -33
  419. package/data/apis/secured-api/x-other.raml +0 -29
  420. package/data/apis/secured-api/x-query-string.raml +0 -16
  421. package/data/apis/tracked-examples/datatypes/employee.raml +0 -5
  422. package/data/apis/tracked-examples/examples/employee.raml +0 -4
  423. package/data/apis/tracked-examples/examples/employees.raml +0 -8
  424. package/data/apis/tracked-examples/tracked-to-linked.raml +0 -28
  425. package/data/model.js +0 -129
  426. package/data/models/APIC-187.json +0 -11416
  427. package/data/models/APIC-188.json +0 -11416
  428. package/data/models/APIC-233.json +0 -539
  429. package/data/models/APIC-391.json +0 -1903
  430. package/data/models/APIC-483.json +0 -3110
  431. package/data/models/APIC-487.json +0 -1225
  432. package/data/models/APIC-655.json +0 -3145
  433. package/data/models/APIC-689.json +0 -797
  434. package/data/models/APIC-690.json +0 -5992
  435. package/data/models/SE-10469.json +0 -22898
  436. package/data/models/SE-13092.json +0 -2769
  437. package/data/models/SE-22063.json +0 -2314
  438. package/data/models/amf-helper-api.json +0 -84457
  439. package/data/models/arc-demo-api.json +0 -52041
  440. package/data/models/async-api.json +0 -3227
  441. package/data/models/example-generator-api.json +0 -45209
  442. package/data/models/expanded-api.json +0 -251
  443. package/data/models/flattened-api.json +0 -251
  444. package/data/models/multiple-servers.json +0 -2769
  445. package/data/models/oas-3-api.json +0 -10590
  446. package/data/models/oas-date.json +0 -637
  447. package/data/models/oas-types.json +0 -5352
  448. package/data/models/oas-unions.json +0 -1935
  449. package/data/models/petstore.json +0 -27712
  450. package/data/models/raml-date.json +0 -1114
  451. package/data/models/recursive.json +0 -610
  452. package/data/models/schema-api.json +0 -35527
  453. package/data/models/secured-api.json +0 -21071
  454. package/data/models/tracked-to-linked.json +0 -1914
  455. package/src/amf/AmfMixin.ts +0 -1726
  456. package/src/amf/AmfSerializer.ts +0 -2358
  457. package/src/amf/AmfTypes.ts +0 -147
  458. package/src/amf/ApiExampleGenerator.ts +0 -122
  459. package/src/amf/ApiMonacoSchemaGenerator.ts +0 -332
  460. package/src/amf/ApiSchemaGenerator.ts +0 -115
  461. package/src/amf/ApiSchemaValues.ts +0 -509
  462. package/src/amf/Parsing.ts +0 -50
  463. package/src/amf/Utils.ts +0 -172
  464. package/src/amf/data-node/DataNodeBase.ts +0 -83
  465. package/src/amf/data-node/JsonDataNodeGenerator.ts +0 -24
  466. package/src/amf/data-node/README.md +0 -3
  467. package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +0 -49
  468. package/src/amf/data-node/XmlDataNodeGenerator.ts +0 -46
  469. package/src/amf/definitions/Amf.ts +0 -440
  470. package/src/amf/definitions/Api.ts +0 -445
  471. package/src/amf/definitions/Base.ts +0 -13
  472. package/src/amf/definitions/Namespace.ts +0 -357
  473. package/src/amf/definitions/Shapes.ts +0 -438
  474. package/src/amf/models/AmfDataNode.ts +0 -210
  475. package/src/amf/shape/README.md +0 -4
  476. package/src/amf/shape/ShapeBase.ts +0 -174
  477. package/src/amf/shape/ShapeJsonSchemaGenerator.ts +0 -457
  478. package/src/amf/shape/ShapeXmlSchemaGenerator.ts +0 -933
  479. package/src/events/amf/AmfEventTypes.ts +0 -6
  480. package/src/events/amf/AmfEvents.ts +0 -78
  481. package/src/mocking/RandExp.ts +0 -335
  482. package/src/mocking/lib/ret.ts +0 -279
  483. package/tests/unit/amf/APIC-187.spec.ts +0 -41
  484. package/tests/unit/amf/APIC-188.spec.ts +0 -30
  485. package/tests/unit/amf/APIC-233.spec.ts +0 -32
  486. package/tests/unit/amf/APIC-391.spec.ts +0 -39
  487. package/tests/unit/amf/APIC-487.spec.ts +0 -44
  488. package/tests/unit/amf/APIC-655.spec.ts +0 -41
  489. package/tests/unit/amf/APIC-689.spec.ts +0 -28
  490. package/tests/unit/amf/APIC-690.spec.ts +0 -93
  491. package/tests/unit/amf/AmfLoader.ts +0 -538
  492. package/tests/unit/amf/AmfMixin.spec.ts +0 -1707
  493. package/tests/unit/amf/ApiExampleGenerator.spec.ts +0 -250
  494. package/tests/unit/amf/ApiMonacoSchemaGenerator.spec.ts +0 -183
  495. package/tests/unit/amf/ApiSchemaValues.spec.ts +0 -602
  496. package/tests/unit/amf/Namepsace.spec.ts +0 -494
  497. package/tests/unit/amf/SE-10469.spec.ts +0 -35
  498. package/tests/unit/amf/SE-13092.spec.ts +0 -64
  499. package/tests/unit/amf/SE-22063.spec.ts +0 -45
  500. package/tests/unit/amf/raml-examples.spec.ts +0 -43
  501. package/tests/unit/amf/schema_gen_array.spec.ts +0 -199
  502. package/tests/unit/amf/schema_gen_oas.spec.ts +0 -140
  503. package/tests/unit/amf/schema_gen_object.spec.ts +0 -279
  504. package/tests/unit/amf/schema_gen_scalar.spec.ts +0 -143
  505. package/tests/unit/amf/schema_gen_union.spec.ts +0 -401
  506. package/tests/unit/amf/schema_gen_unknown.spec.ts +0 -42
  507. package/tests/unit/amf/schema_gen_xml.spec.ts +0 -726
  508. package/tests/unit/amf/serializer/APIC-483.spec.ts +0 -36
  509. package/tests/unit/amf/serializer/Anotations.spec.ts +0 -50
  510. package/tests/unit/amf/serializer/Api.spec.ts +0 -210
  511. package/tests/unit/amf/serializer/Documentation.spec.ts +0 -52
  512. package/tests/unit/amf/serializer/Endpoints.spec.ts +0 -172
  513. package/tests/unit/amf/serializer/Operations.spec.ts +0 -330
  514. package/tests/unit/amf/serializer/Parameters.spec.ts +0 -149
  515. package/tests/unit/amf/serializer/PayloadExamples.spec.ts +0 -152
  516. package/tests/unit/amf/serializer/Security.spec.ts +0 -626
  517. package/tests/unit/amf/serializer/Server.spec.ts +0 -78
  518. package/tests/unit/amf/serializer/Shapes.spec.ts +0 -304
  519. package/tests/unit/amf/serializer/SourceMaps.spec.ts +0 -52
  520. package/tests/unit/amf/shapes/ShapeXmlSchemaGenerator.spec.ts +0 -28
  521. package/tests/unit/amf/tracked-to-linked.spec.ts +0 -90
  522. package/tests/unit/amf/xml-data-processing.spec.ts +0 -217
  523. package/tests/unit/events/amf.spec.ts +0 -151
@@ -1,330 +0,0 @@
1
- import { test } from '@japa/runner'
2
- import { AmfLoader } from '../AmfLoader.js'
3
- import { AmfSerializer } from '../../../../src/amf/AmfSerializer.js'
4
- import type { IAmfDocument } from '../../../../src/amf/definitions/Amf.js'
5
- import type { IApiScalarNode } from '../../../../src/amf/definitions/Shapes.js'
6
- import { AmfNamespace } from '../../../../src/amf/definitions/Namespace.js'
7
-
8
- const loader = new AmfLoader()
9
-
10
- test.group('OAS operations', (group) => {
11
- let api: IAmfDocument
12
- let serializer: AmfSerializer
13
- group.setup(async () => {
14
- api = await loader.getGraph('petstore')
15
- serializer = new AmfSerializer()
16
- serializer.amf = api
17
- })
18
-
19
- test('returns an operation', ({ assert }) => {
20
- const shape = loader.lookupOperation(api, '/pet', 'post')
21
- const result = serializer.operation(shape)
22
- assert.typeOf(result, 'object', 'has the result')
23
- assert.equal(result.id, shape['@id'], 'has the id')
24
- assert.include(result.types, AmfNamespace.aml.vocabularies.apiContract.Operation, 'has the type')
25
- assert.equal(result.method, 'post', 'has the method')
26
- assert.equal(result.name, 'addPet', 'has the name')
27
- assert.equal(result.description, 'Add a new pet to the store', 'has the description')
28
- assert.equal(result.summary, 'Add a new pet to the store', 'has the summary')
29
- assert.equal(result.operationId, 'addPet', 'has the operationId')
30
- assert.isTrue(result.deprecated, 'is deprecated')
31
- assert.deepEqual(result.customDomainProperties, [], 'has no customDomainProperties')
32
- assert.deepEqual(result.callbacks, [], 'has no callbacks')
33
- assert.deepEqual(result.accepts, [], 'has no accepts')
34
- assert.deepEqual(result.schemes, [], 'has no schemes')
35
- assert.deepEqual(result.contentType, [], 'has no contentType')
36
- assert.typeOf(result.sourceMaps, 'object', 'has source maps')
37
- })
38
-
39
- test('adds the responses', ({ assert }) => {
40
- const shape = loader.lookupOperation(api, '/pet', 'post')
41
- const result = serializer.operation(shape)
42
- const { responses } = result
43
- assert.typeOf(responses, 'array', 'has the responses')
44
- assert.lengthOf(responses, 2, 'has all responses')
45
- const [success] = responses
46
- assert.equal(success.statusCode, '200', 'has response definition')
47
- })
48
-
49
- test('adds the request', ({ assert }) => {
50
- const shape = loader.lookupOperation(api, '/pet', 'post')
51
- const result = serializer.operation(shape)
52
- const { request } = result
53
- assert.typeOf(request, 'object', 'has the request')
54
- assert.include(request!.types, AmfNamespace.aml.vocabularies.apiContract.Request, 'has the type')
55
- assert.typeOf(request!.payloads, 'array', 'has the payloads')
56
- assert.isNotEmpty(request!.payloads, 'the payloads is set')
57
- })
58
-
59
- test('adds the response', ({ assert }) => {
60
- const shape = loader.lookupOperation(api, '/pet', 'post')
61
- const result = serializer.operation(shape)
62
- const { responses } = result
63
- assert.typeOf(responses, 'array', 'has the responses')
64
- assert.lengthOf(responses, 2, 'has all responses')
65
- const [r] = responses
66
- assert.typeOf(r, 'object', 'response is an object')
67
- assert.include(r.types, AmfNamespace.aml.vocabularies.apiContract.Response, 'response has the type')
68
- assert.typeOf(r.payloads, 'array', 'has the payloads')
69
- assert.isNotEmpty(r.payloads, 'the payloads is set')
70
- assert.equal(r.name, '200', 'response has the name')
71
- assert.equal(r.statusCode, '200', 'response has the statusCode')
72
- assert.equal(r.description, 'Successful operation', 'response has the description')
73
- })
74
-
75
- test('adds the cookie parameters', ({ assert }) => {
76
- const shape = loader.lookupOperation(api, '/pet/{petId}', 'post')
77
- const result = serializer.operation(shape)
78
- const { request } = result
79
- assert.typeOf(request!.cookieParameters, 'array', 'has the payloads')
80
- assert.isNotEmpty(request!.cookieParameters, 'the payloads is set')
81
- })
82
-
83
- test('adds the query parameters', ({ assert }) => {
84
- const shape = loader.lookupOperation(api, '/pet/{petId}', 'post')
85
- const result = serializer.operation(shape)
86
- const { request } = result
87
- assert.typeOf(request!.queryParameters, 'array', 'has the payloads')
88
- assert.isNotEmpty(request!.queryParameters, 'the payloads is set')
89
- })
90
-
91
- test('adds the URI parameters', ({ assert }) => {
92
- const shape = loader.lookupOperation(api, '/pet/{petId}', 'post')
93
- const result = serializer.operation(shape)
94
- const { request } = result
95
- assert.typeOf(request!.uriParameters, 'array', 'has the payloads')
96
- assert.isNotEmpty(request!.uriParameters, 'the payloads is set')
97
- })
98
-
99
- test('adds the tags', ({ assert }) => {
100
- const shape = loader.lookupOperation(api, '/pet', 'post')
101
- const result = serializer.operation(shape)
102
- const { tags } = result
103
- assert.typeOf(tags, 'array', 'has the tags')
104
- assert.lengthOf(tags, 1, 'has a single tag')
105
- const [tag] = tags
106
- assert.typeOf(tag, 'object', 'has a tag')
107
- assert.equal(tag.name, 'pet', 'tag has name')
108
- assert.include(tag.types, AmfNamespace.aml.vocabularies.apiContract.Tag, 'tag has Tag type')
109
- })
110
-
111
- test('adds the links info', ({ assert }) => {
112
- const shape = loader.lookupOperation(api, '/user', 'post')
113
- const result = serializer.operation(shape)
114
- const { responses } = result
115
- const [response] = responses
116
- const { links } = response
117
- assert.typeOf(links, 'array', 'has the links')
118
- assert.isNotEmpty(links, 'the links is set')
119
- const [l1, l2] = links
120
- assert.include(l1.types, AmfNamespace.aml.vocabularies.apiContract.TemplatedLink, 'l1 has the type')
121
- assert.include(l2.types, AmfNamespace.aml.vocabularies.apiContract.TemplatedLink, 'l2 has the type')
122
- assert.equal(l1.name, 'GetUserByUserName', 'l1 has the name')
123
- assert.equal(l2.name, 'GetUserByRef', 'l2 has the name')
124
- assert.equal(l1.operationId, 'getUserByName', 'l1 has the name')
125
- assert.typeOf(l1.description, 'string', 'l1 has the description')
126
- assert.typeOf(l2.description, 'string', 'l2 has the description')
127
- assert.typeOf(l1.mapping, 'array', 'l1 has the mapping')
128
- assert.typeOf(l2.mapping, 'array', 'l2 has the mapping')
129
- const { mapping } = l1
130
- const [mappingItem] = mapping
131
- assert.include(
132
- mappingItem.types,
133
- AmfNamespace.aml.vocabularies.apiContract.IriTemplateMapping,
134
- 'mapping has the type'
135
- )
136
- assert.equal(mappingItem.templateVariable, 'username', 'mapping has the templateVariable')
137
- assert.equal(mappingItem.linkExpression, '$request.body#/username', 'mapping has the linkExpression')
138
- })
139
- })
140
-
141
- test.group('OAS properties', (group) => {
142
- let api: IAmfDocument
143
- let serializer: AmfSerializer
144
- group.setup(async () => {
145
- api = await loader.getGraph('oas-3-api')
146
- serializer = new AmfSerializer()
147
- serializer.amf = api
148
- })
149
-
150
- test('processes callbacks', ({ assert }) => {
151
- const shape = loader.lookupOperation(api, '/subscribe', 'post')
152
- const result = serializer.operation(shape)
153
- const { callbacks } = result
154
- assert.typeOf(callbacks, 'array', 'has callbacks')
155
- assert.lengthOf(callbacks, 1, 'has single callback')
156
- const [callback] = callbacks
157
- assert.include(callback.types, AmfNamespace.aml.vocabularies.apiContract.Callback, 'has the type')
158
- assert.deepEqual(callback.customDomainProperties, [], 'has the customDomainProperties')
159
- assert.typeOf(callback.sourceMaps, 'object', 'has the sourceMaps')
160
- assert.equal(callback.name, 'myEvent', 'has the name')
161
- assert.equal(callback.expression, '{$request.body#/callbackUrl}', 'has the expression')
162
- assert.typeOf(callback.endpoint, 'object', 'has the endpoint')
163
- const { endpoint } = callback
164
- assert.equal(endpoint!.path, '/{$request.body#/callbackUrl}', 'endpoint has path')
165
- assert.typeOf(endpoint!.operations, 'array', 'endpoint has operations')
166
- assert.lengthOf(endpoint!.operations, 1, 'endpoint has single operation')
167
- })
168
-
169
- test('processes OAS properties', ({ assert }) => {
170
- const shape = loader.lookupOperation(api, '/oas-properties', 'post')
171
- const result = serializer.operation(shape)
172
-
173
- assert.isTrue(result.deprecated, 'has deprecated')
174
- assert.lengthOf(result.servers, 4, 'has servers')
175
- assert.equal(result.operationId, 'myId', 'has operationId')
176
- assert.typeOf(result.documentation, 'object', 'has documentation')
177
- const { documentation } = result
178
- assert.equal(documentation!.url, 'https://docs.com', 'has documentation.url')
179
- assert.equal(documentation!.description, 'A doc', 'has documentation.description')
180
- const { request } = result
181
- assert.typeOf(request, 'object', 'has request')
182
- assert.isFalse(request!.required, 'has request.required')
183
- const { tags } = result
184
- assert.lengthOf(tags, 2, 'has tags')
185
- const [tag] = tags
186
- assert.typeOf(tag, 'object', 'has a tag')
187
- assert.include(tag.types, AmfNamespace.aml.vocabularies.apiContract.Tag, 'tag has the type')
188
- assert.equal(tag.name, 'pets', 'tag has the name')
189
- })
190
- })
191
-
192
- test.group('RAML operations / base tests', (group) => {
193
- let api: IAmfDocument
194
- let serializer: AmfSerializer
195
- group.setup(async () => {
196
- api = await loader.getGraph('amf-helper-api')
197
- serializer = new AmfSerializer()
198
- serializer.amf = api
199
- })
200
-
201
- test('returns an operation', ({ assert }) => {
202
- const shape = loader.lookupOperation(api, '/files', 'get')
203
- const result = serializer.operation(shape)
204
- assert.typeOf(result, 'object', 'has the result')
205
- assert.equal(result.id, shape['@id'], 'has the id')
206
- assert.include(result.types, AmfNamespace.aml.vocabularies.apiContract.Operation, 'has the type')
207
- assert.equal(result.method, 'get', 'has the method')
208
- assert.equal(result.name, 'list', 'has the name')
209
- assert.typeOf(result.description, 'string', 'has the description')
210
- assert.isFalse(result.deprecated, 'is not deprecated')
211
- assert.deepEqual(result.customDomainProperties, [], 'has no customDomainProperties')
212
- assert.deepEqual(result.callbacks, [], 'has no callbacks')
213
- assert.deepEqual(result.responses, [], 'has no responses')
214
- assert.deepEqual(result.servers, [], 'has no servers')
215
- assert.deepEqual(result.accepts, [], 'has no accepts')
216
- assert.deepEqual(result.schemes, [], 'has no schemes')
217
- assert.deepEqual(result.contentType, [], 'has no contentType')
218
- assert.typeOf(result.sourceMaps, 'object', 'has source maps')
219
- })
220
-
221
- test('adds the security info', ({ assert }) => {
222
- const shape = loader.lookupOperation(api, '/files', 'get')
223
- const result = serializer.operation(shape)
224
- const { security } = result
225
- assert.typeOf(security, 'array', 'has the security')
226
- assert.lengthOf(security, 1, 'has the defined security')
227
- assert.include(security[0].types, AmfNamespace.aml.vocabularies.security.SecurityRequirement, 'has the type')
228
- assert.typeOf(security[0].schemes, 'array', 'has the schemes')
229
- assert.typeOf(security[0].schemes[0], 'object', 'has the security scheme')
230
- assert.deepEqual(security[0].customDomainProperties, [], 'has no customDomainProperties')
231
- })
232
-
233
- test('adds the annotations info', ({ assert }) => {
234
- const shape = loader.lookupOperation(api, '/files', 'post')
235
- const result = serializer.operation(shape)
236
- const { customDomainProperties } = result
237
- assert.typeOf(customDomainProperties, 'array', 'has the security')
238
- assert.lengthOf(customDomainProperties, 1, 'has the defined security')
239
- const [cdp] = customDomainProperties
240
- assert.equal(cdp.name, 'deprecated', 'has the name')
241
- const typed = cdp.extension as IApiScalarNode
242
- assert.include(typed.types, AmfNamespace.aml.vocabularies.data.Scalar, 'has the type')
243
- assert.equal(typed.value, 'This operation is deprecated and will be removed.', 'has the value')
244
- assert.equal(typed.dataType, AmfNamespace.w3.xmlSchema.string, 'has the dataType')
245
- })
246
-
247
- test('adds the request with payloads', ({ assert }) => {
248
- const shape = loader.lookupOperation(api, '/files/{fileId}/comments', 'post')
249
- const result = serializer.operation(shape)
250
- const { request } = result
251
- assert.typeOf(request, 'object', 'has the request')
252
- assert.include(request!.types, AmfNamespace.aml.vocabularies.apiContract.Request, 'has the type')
253
- assert.typeOf(request!.payloads, 'array', 'has the payloads')
254
- assert.isNotEmpty(request!.payloads, 'the payloads is set')
255
- })
256
-
257
- test('adds the request with query parameters', ({ assert }) => {
258
- const shape = loader.lookupOperation(api, '/files/{fileId}/comments', 'get')
259
- const result = serializer.operation(shape)
260
- const { request } = result
261
- assert.typeOf(request, 'object', 'has the request')
262
- assert.include(request!.types, AmfNamespace.aml.vocabularies.apiContract.Request, 'has the type')
263
- assert.typeOf(request!.queryParameters, 'array', 'has the queryParameters')
264
- assert.isNotEmpty(request!.queryParameters, 'the queryParameters is set')
265
- })
266
-
267
- test('adds the annotations', ({ assert }) => {
268
- const shape = loader.lookupOperation(api, '/files', 'post')
269
- const result = serializer.operation(shape)
270
- const { customDomainProperties } = result
271
- assert.typeOf(customDomainProperties, 'array', 'has the customDomainProperties')
272
- const [cdp] = customDomainProperties
273
- assert.typeOf(cdp, 'object', 'has the property')
274
- assert.include(cdp.extension.types, AmfNamespace.aml.vocabularies.data.Scalar, 'has the type')
275
- assert.equal(cdp.name, 'deprecated', 'has the extensionName')
276
- })
277
-
278
- test('adds query parameters from a trait', ({ assert }) => {
279
- const shape = loader.lookupOperation(api, '/files/{fileId}/comments', 'get')
280
- const result = serializer.operation(shape)
281
- const { request } = result
282
- const mr = request!.queryParameters.find((p) => p.name === 'maxResults')
283
- assert.typeOf(mr, 'object', 'has a queryParameters')
284
- })
285
- })
286
-
287
- test.group('Traits', (group) => {
288
- let api: IAmfDocument
289
- let serializer: AmfSerializer
290
- group.setup(async () => {
291
- api = await loader.getGraph('arc-demo-api')
292
- serializer = new AmfSerializer()
293
- serializer.amf = api
294
- })
295
-
296
- test('adds the traits into the operation', ({ assert }) => {
297
- const shape = loader.lookupOperation(api, '/people', 'get')
298
- const result = serializer.operation(shape)
299
- assert.typeOf(result, 'object', 'has the result')
300
- const { extends: extensions } = result
301
- assert.typeOf(extensions, 'array', 'has traits array')
302
- assert.lengthOf(extensions, 1, 'has the defined trait')
303
- const [trait] = extensions
304
- assert.equal(trait.name, 'Paginated', 'has the trait name')
305
- })
306
-
307
- test('serializes the variables in a trait', ({ assert }) => {
308
- const shape = loader.lookupOperation(api, '/people', 'get')
309
- const result = serializer.operation(shape)
310
- const { extends: extensions } = result
311
- const [trait] = extensions
312
- const { variables } = trait
313
- assert.typeOf(variables, 'array', 'has traits array')
314
- assert.lengthOf(variables, 1, 'has all variables')
315
- })
316
-
317
- test('serializes the target', ({ assert }) => {
318
- const shape = loader.lookupOperation(api, '/people', 'get')
319
- const result = serializer.operation(shape)
320
- const { extends: extensions } = result
321
- const [trait] = extensions
322
- const { target } = trait
323
- assert.typeOf(target, 'object', 'has the target')
324
- const { name, variables, dataNode } = target!
325
- assert.equal(name, 'Paginated', 'has the trait name')
326
- assert.typeOf(variables, 'array', 'has traits array')
327
- assert.lengthOf(variables, 2, 'has all variables')
328
- assert.typeOf(dataNode, 'object', 'has the dataNode')
329
- })
330
- })
@@ -1,149 +0,0 @@
1
- import { test } from '@japa/runner'
2
- import { AmfLoader } from '../AmfLoader.js'
3
- import { AmfSerializer } from '../../../../src/amf/AmfSerializer.js'
4
- import type { IAmfDocument, IAmfScalarShape } from '../../../../src/amf/definitions/Amf.js'
5
- import type { IApiScalarNode } from '../../../../src/amf/definitions/Shapes.js'
6
- import { AmfNamespace } from '../../../../src/amf/definitions/Namespace.js'
7
-
8
- const loader = new AmfLoader()
9
- test.group('RAML parameters', (group) => {
10
- let api: IAmfDocument
11
- let serializer: AmfSerializer
12
- group.setup(async () => {
13
- api = await loader.getGraph('amf-helper-api')
14
- serializer = new AmfSerializer()
15
- serializer.amf = api
16
- })
17
-
18
- test('has the name and the paramName', ({ assert }) => {
19
- const op = loader.lookupOperation(api, '/parameters', 'get')
20
- const ex = serializer._computeExpects(op)!
21
- const headers = loader.readHeaders(ex)!
22
- const result = serializer.parameter(headers[0]) // Accept
23
- assert.equal(result.name, 'Accept', 'has the name')
24
- assert.equal(result.paramName, 'Accept', 'has the paramName')
25
- })
26
-
27
- test('has the description', ({ assert }) => {
28
- const op = loader.lookupOperation(api, '/parameters', 'get')
29
- const ex = serializer._computeExpects(op)!
30
- const headers = loader.readHeaders(ex)!
31
- const result = serializer.parameter(headers[0]) // Accept
32
- assert.equal(result.description, "Selects the response's media type, when supported.", 'has the name')
33
- })
34
-
35
- test('has the required', ({ assert }) => {
36
- const op = loader.lookupOperation(api, '/parameters', 'get')
37
- const ex = serializer._computeExpects(op)!
38
- const headers = loader.readHeaders(ex)!
39
- const header = headers[1] // x-required
40
- const result = serializer.parameter(header)
41
- assert.isTrue(result.required)
42
- })
43
-
44
- test('has the binding', ({ assert }) => {
45
- const op = loader.lookupOperation(api, '/parameters', 'get')
46
- const ex = serializer._computeExpects(op)!
47
- const headers = loader.readHeaders(ex)!
48
- const header = headers[1] // x-required
49
- const result = serializer.parameter(header)
50
- assert.equal(result.binding, 'header')
51
- })
52
-
53
- test('has the example', ({ assert }) => {
54
- const op = loader.lookupOperation(api, '/parameters', 'get')
55
- const ex = serializer._computeExpects(op)!
56
- const headers = loader.readHeaders(ex)!
57
- const header = headers[3] // If-Modified-Since
58
- const result = serializer.parameter(header)
59
- // the example is passed to the schema.
60
- assert.deepEqual(result.examples, [])
61
- })
62
-
63
- test('has the examples', ({ assert }) => {
64
- const op = loader.lookupOperation(api, '/parameters', 'get')
65
- const ex = serializer._computeExpects(op)!
66
- const qp = loader.readQueryParameters(ex)!
67
- const param = qp[3] // combo
68
- const result = serializer.parameter(param)
69
- // the example is passed to the schema.
70
- assert.deepEqual(result.examples, [])
71
- })
72
- })
73
-
74
- test.group('OAS parameters', (group) => {
75
- let api: IAmfDocument
76
- let serializer: AmfSerializer
77
- group.setup(async () => {
78
- api = await loader.getGraph('petstore')
79
- serializer = new AmfSerializer()
80
- serializer.amf = api
81
- })
82
-
83
- test('has the OAS properties', ({ assert }) => {
84
- const op = loader.lookupOperation(api, '/pet/{petId}', 'post')
85
- const ex = serializer._computeExpects(op)!
86
- const params = loader.readQueryParameters(ex)!
87
- const param = params.find(
88
- (p) => serializer._getValue(p, AmfNamespace.aml.vocabularies.apiContract.paramName) === 'name'
89
- )!
90
- const result = serializer.parameter(param)
91
- assert.isFalse(result.required, 'is not required')
92
- assert.isTrue(result.deprecated, 'is deprecated')
93
- assert.isTrue(result.allowEmptyValue, 'is allowEmptyValue')
94
- assert.isTrue(result.explode, 'is explode')
95
- assert.isTrue(result.allowReserved, 'is allowReserved')
96
- assert.equal(result.style, 'form', 'has style')
97
- })
98
-
99
- test('has the content property', ({ assert }) => {
100
- const op = loader.lookupOperation(api, '/pet/{petId}', 'post')
101
- const ex = serializer._computeExpects(op)!
102
- const params = loader.readQueryParameters(ex)!
103
- const param = params.find(
104
- (p) => serializer._getValue(p, AmfNamespace.aml.vocabularies.apiContract.paramName) === 'filter'
105
- )!
106
- const result = serializer.parameter(param)
107
- const [p] = result.payloads
108
- assert.include(p.types, AmfNamespace.aml.vocabularies.apiContract.Payload, 'has the type')
109
- assert.deepEqual(p.customDomainProperties, [], 'has empty customDomainProperties')
110
- assert.deepEqual(p.examples, [], 'has empty examples')
111
- assert.equal(p.mediaType, 'application/json', 'has mediaType')
112
- assert.typeOf(p.schema, 'object', 'has schema')
113
- })
114
-
115
- test('has the examples property', ({ assert }) => {
116
- // it seems that AMF moves examples from parameter into the schema.
117
- // This copies examples from the schema to the top level parameter so we can test it.
118
- // Possibly this happens during the resolution phase.
119
- const op = loader.lookupOperation(api, '/pet/findByStatus', 'get')
120
- const ex = serializer._computeExpects(op)!
121
- const params = loader.readQueryParameters(ex)!
122
- const param = params.find(
123
- (p) => serializer._getValue(p, AmfNamespace.aml.vocabularies.apiContract.paramName) === 'status'
124
- )!
125
- // @ts-expect-error Used in testing
126
- const schema = param[serializer._getAmfKey(AmfNamespace.aml.vocabularies.shapes.schema)][0] as IAmfScalarShape
127
- const key = serializer._getAmfKey(AmfNamespace.aml.vocabularies.apiContract.examples)
128
- // @ts-expect-error Used in testing
129
- const info = schema[key]
130
- // @ts-expect-error Used in testing
131
- param[key] = info
132
- const result = serializer.parameter(param)
133
- const { examples } = result
134
- assert.typeOf(examples, 'array', 'has examples')
135
- assert.lengthOf(examples, 1, 'has a single example')
136
- const [example] = examples
137
- assert.equal(example.id, info[0]['@id'], 'has the id')
138
- assert.include(example.types, AmfNamespace.aml.vocabularies.apiContract.Example, 'has the type')
139
- assert.deepEqual(example.customDomainProperties, [], 'has empty customDomainProperties')
140
- assert.isTrue(example.strict, 'has strict')
141
- assert.equal(example.value, 'pending', 'has the value')
142
- const { structuredValue } = example
143
- assert.typeOf(structuredValue, 'object', 'has the structuredValue')
144
- assert.equal(structuredValue!.name, 'scalar_1', 'has the name')
145
- const typed = structuredValue as IApiScalarNode
146
- assert.equal(typed.value, 'pending', 'has the value')
147
- assert.equal(typed.dataType, AmfNamespace.w3.xmlSchema.string, 'has the dataType')
148
- })
149
- })
@@ -1,152 +0,0 @@
1
- // As part of the optimisation the examples may be referenced in a link
2
- // shared between different payloads. These test are looking for the
3
- // right example for the right payload.
4
-
5
- import { test } from '@japa/runner'
6
- import { AmfLoader } from '../AmfLoader.js'
7
- import { AmfSerializer } from '../../../../src/amf/AmfSerializer.js'
8
- import type { IAmfDocument } from '../../../../src/amf/definitions/Amf.js'
9
- import { IApiNodeShape } from '../../../../src/amf/definitions/Shapes.js'
10
-
11
- test.group('Payload examples', (group) => {
12
- const loader = new AmfLoader()
13
- const jsonMime = 'application/json'
14
- const xmlMime = 'application/xml'
15
-
16
- let api: IAmfDocument
17
- let serializer: AmfSerializer
18
- group.setup(async () => {
19
- api = await loader.getGraph('amf-helper-api')
20
- serializer = new AmfSerializer(api)
21
- })
22
-
23
- test('returns a RAML example for the JSON mime', async ({ assert }) => {
24
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'get', jsonMime)
25
- const result = serializer.payload(shape)
26
-
27
- const { examples } = result.schema as IApiNodeShape
28
-
29
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
30
- const [ex1, ex2] = examples
31
-
32
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
33
- assert.include(ex2.value, 'id: "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (raml)')
34
-
35
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
36
- })
37
-
38
- test('returns a RAML example for the XML mime', async ({ assert }) => {
39
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'get', xmlMime)
40
- const result = serializer.payload(shape)
41
-
42
- const { examples } = result.schema as IApiNodeShape
43
-
44
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
45
- const [ex1, ex2] = examples
46
-
47
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
48
- assert.include(ex2.value, 'id: "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (raml)')
49
-
50
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
51
- })
52
-
53
- test('returns a JSON example for the JSON mime', async ({ assert }) => {
54
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'put', jsonMime)
55
- const result = serializer.payload(shape)
56
-
57
- const { examples } = result.schema as IApiNodeShape
58
-
59
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
60
- const [ex1, ex2] = examples
61
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
62
- assert.include(ex2.value, '"id": "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (json)')
63
-
64
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
65
- })
66
-
67
- test('returns a XML example for the XML mime', async ({ assert }) => {
68
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'put', xmlMime)
69
- const result = serializer.payload(shape)
70
-
71
- const { examples } = result.schema as IApiNodeShape
72
-
73
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
74
- const [ex1, ex2] = examples
75
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
76
- assert.include(
77
- ex2.value,
78
- '<id>Qawer63J73HJ6khjswuqyq62382jG21s</id>',
79
- 'example #2 is payload defined example (xml)'
80
- )
81
-
82
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
83
- })
84
-
85
- test('reuses the same JSON example for the JSON mime', async ({ assert }) => {
86
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'post', jsonMime)
87
- const result = serializer.payload(shape)
88
-
89
- const { examples } = result.schema as IApiNodeShape
90
-
91
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
92
- const [ex1, ex2] = examples
93
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
94
- assert.include(ex2.value, '"id": "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (json)')
95
-
96
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
97
- })
98
-
99
- test('reuses the same XML example for the XML mime', async ({ assert }) => {
100
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'post', xmlMime)
101
- const result = serializer.payload(shape)
102
-
103
- const { examples } = result.schema as IApiNodeShape
104
-
105
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
106
- const [ex1, ex2] = examples
107
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
108
- assert.include(
109
- ex2.value,
110
- '<id>Qawer63J73HJ6khjswuqyq62382jG21s</id>',
111
- 'example #2 is payload defined example (xml)'
112
- )
113
-
114
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
115
- })
116
-
117
- test('works when a single mime is used', async ({ assert }) => {
118
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'delete', jsonMime)
119
- const result = serializer.payload(shape)
120
-
121
- const { examples } = result.schema as IApiNodeShape
122
-
123
- assert.lengthOf(examples, 2, 'has both examples from the type and the payload')
124
- const [ex1, ex2] = examples
125
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
126
- assert.include(ex2.value, '"id": "R34fg663H9KW9MMSKISI"', 'example #2 is payload defined example (json)')
127
-
128
- assert.include(ex2.sourceMaps!.trackedElement!.value, shape['@id'], 'example #2 has tracked value')
129
- })
130
-
131
- test('serializes type only example when no payload example', async ({ assert }) => {
132
- const shape = loader.lookupRequestPayload(api, '/body-tracking', 'patch', jsonMime)
133
- const result = serializer.payload(shape)
134
-
135
- const { examples } = result.schema as IApiNodeShape
136
-
137
- assert.lengthOf(examples, 1, 'has only the type example')
138
- const [ex1] = examples
139
- assert.include(ex1.value, 'id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"', 'example #1 is type defined example')
140
- })
141
-
142
- test('adds example without tracking information', async ({ assert }) => {
143
- const shape = loader.lookupRequestPayload(api, '/not-shared', 'post', jsonMime)
144
- const result = serializer.payload(shape)
145
-
146
- const { examples } = result.schema as IApiNodeShape
147
-
148
- assert.lengthOf(examples, 1, 'has only the payload example')
149
- const [ex1] = examples
150
- assert.include(ex1.value, 'id: 1234567890', 'example #1 is type defined example')
151
- })
152
- })