@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
@@ -13,7 +13,7 @@ import {
13
13
  } from '../../../src/index.js'
14
14
  import { AllowPublicAccessRule } from '../../../src/modeling/rules/AllowPublic.js'
15
15
  import { RateLimitingConfiguration } from '../../../src/modeling/rules/RateLimitingConfiguration.js'
16
- import { Action } from '../../../src/modeling/index.js'
16
+ import { ReadActionSchema } from '../../../src/modeling/index.js'
17
17
 
18
18
  test.group('ApiModel.createSchema()', () => {
19
19
  test('creates a schema with default values', ({ assert }) => {
@@ -97,7 +97,7 @@ test.group('ApiModel.constructor()', () => {
97
97
  assert.typeOf(model.key, 'string')
98
98
  assert.isNotEmpty(model.key)
99
99
  assert.equal(model.info.name, 'Unnamed API')
100
- assert.deepEqual(model.exposes, [])
100
+ assert.equal(model.exposes.size, 0)
101
101
  assert.isUndefined(model.user)
102
102
  assert.isUndefined(model.authentication)
103
103
  assert.isUndefined(model.authorization)
@@ -140,8 +140,8 @@ test.group('ApiModel.constructor()', () => {
140
140
 
141
141
  assert.equal(model.key, 'test-api')
142
142
  assert.equal(model.info.name, 'Test API')
143
- assert.lengthOf(model.exposes, 1, 'should have one exposed entity')
144
- assert.equal(model.exposes[0].key, 'entity1', 'exposed entity should have correct key')
143
+ assert.equal(model.exposes.size, 1, 'should have one exposed entity')
144
+ assert.equal(Array.from(model.exposes.values())[0]!.entity.key, 'entity1', 'exposed entity should have correct key')
145
145
  assert.deepEqual(model.user, { key: 'user-entity' })
146
146
  assert.deepEqual(model.dependencyList, [{ key: 'domain1', version: '1.0.0' }])
147
147
  assert.deepEqual(model.authentication, { strategy: 'UsernamePassword' })
@@ -216,7 +216,7 @@ test.group('ApiModel.constructor()', () => {
216
216
  notified = true
217
217
  })
218
218
 
219
- model.exposes[0].actions[0].kind = 'write'
219
+ Array.from(model.exposes.values())[0]!.actions[0]!.kind = 'write'
220
220
  await Promise.resolve()
221
221
  assert.isTrue(notified)
222
222
  }).tags(['@modeling', '@api', '@observed'])
@@ -290,20 +290,22 @@ test.group('ApiModel.toJSON()', () => {
290
290
 
291
291
  test('actions are immutable', ({ assert }) => {
292
292
  const model = new ApiModel()
293
- const action = new Action({ kind: 'read' })
293
+ const action: ReadActionSchema = {
294
+ kind: 'read',
295
+ }
294
296
  const entityKey = 'get-entity'
295
297
  const exposed: ExposedEntitySchema = {
296
298
  key: entityKey,
297
- actions: [action.toJSON()],
299
+ actions: [action],
298
300
  hasCollection: true,
299
301
  kind: ExposedEntityKind,
300
302
  resourcePath: '/',
301
303
  entity: { key: entityKey },
302
304
  }
303
- model.exposes.push(new ExposedEntity(model, exposed))
305
+ model.exposes.set(exposed.key, new ExposedEntity(model, exposed))
304
306
  const json = model.toJSON()
305
- json.exposes[0].actions[0].kind = 'write'
306
- assert.equal(model.exposes[0].actions[0].kind, 'read')
307
+ json.exposes![0]!.actions![0]!.kind = 'write'
308
+ assert.equal(Array.from(model.exposes.values())[0]!.actions[0]!.kind, 'read')
307
309
  }).tags(['@modeling', '@api', '@serialization'])
308
310
  })
309
311
 
@@ -319,15 +321,190 @@ test.group('ApiModel.getExposedEntity()', () => {
319
321
  resourcePath: '/',
320
322
  entity: { key: entityKey },
321
323
  }
322
- model.exposes.push(new ExposedEntity(model, exposed))
324
+ model.exposes.set(exposed.key, new ExposedEntity(model, exposed))
323
325
 
324
- const retrievedEntity = model.getExposedEntity({ key: entityKey })
326
+ const retrievedEntity = model.exposes.get(entityKey)
325
327
  assert.deepEqual(retrievedEntity?.toJSON(), exposed)
326
328
  }).tags(['@modeling', '@api'])
327
329
 
328
330
  test('returns undefined if entity is not exposed', ({ assert }) => {
329
331
  const model = new ApiModel()
330
- const retrievedEntity = model.getExposedEntity({ key: 'non-exposed-entity' })
332
+ const retrievedEntity = model.exposes.get('non-exposed-entity')
331
333
  assert.isUndefined(retrievedEntity)
332
334
  }).tags(['@modeling', '@api'])
333
335
  })
336
+
337
+ test.group('ApiModel.findResourcePathCollision()', () => {
338
+ test('returns the entity if resource path collides', ({ assert }) => {
339
+ const model = new ApiModel()
340
+ model.exposes.set(
341
+ 'ent1',
342
+ new ExposedEntity(model, {
343
+ key: 'ent1',
344
+ kind: ExposedEntityKind,
345
+ resourcePath: '/test',
346
+ isRoot: true,
347
+ hasCollection: false,
348
+ actions: [],
349
+ entity: { key: 'domain1' },
350
+ })
351
+ )
352
+
353
+ const collision = model.findResourcePathCollision('/test')
354
+ assert.isDefined(collision)
355
+ assert.equal(collision?.key, 'ent1')
356
+ }).tags(['@modeling', '@api'])
357
+
358
+ test('returns undefined if no collision', ({ assert }) => {
359
+ const model = new ApiModel()
360
+ model.exposes.set(
361
+ 'ent1',
362
+ new ExposedEntity(model, {
363
+ key: 'ent1',
364
+ kind: ExposedEntityKind,
365
+ resourcePath: '/test',
366
+ isRoot: true,
367
+ hasCollection: false,
368
+ actions: [],
369
+ entity: { key: 'domain1' },
370
+ })
371
+ )
372
+
373
+ assert.isUndefined(model.findResourcePathCollision('/other'))
374
+ }).tags(['@modeling', '@api'])
375
+
376
+ test('ignores the entity with the ignore key', ({ assert }) => {
377
+ const model = new ApiModel()
378
+ model.exposes.set(
379
+ 'ent1',
380
+ new ExposedEntity(model, {
381
+ key: 'ent1',
382
+ kind: ExposedEntityKind,
383
+ resourcePath: '/test',
384
+ isRoot: true,
385
+ hasCollection: false,
386
+ actions: [],
387
+ entity: { key: 'domain1' },
388
+ })
389
+ )
390
+
391
+ assert.isUndefined(model.findResourcePathCollision('/test', 'ent1'))
392
+ }).tags(['@modeling', '@api'])
393
+
394
+ test('ignores non-root entities', ({ assert }) => {
395
+ const model = new ApiModel()
396
+ model.exposes.set(
397
+ 'ent1',
398
+ new ExposedEntity(model, {
399
+ key: 'ent1',
400
+ kind: ExposedEntityKind,
401
+ resourcePath: '/test',
402
+ isRoot: false,
403
+ hasCollection: false,
404
+ actions: [],
405
+ entity: { key: 'domain1' },
406
+ })
407
+ )
408
+
409
+ assert.isUndefined(model.findResourcePathCollision('/test'))
410
+ }).tags(['@modeling', '@api'])
411
+ })
412
+
413
+ test.group('ApiModel.findCollectionPathCollision()', () => {
414
+ test('returns the entity if collection path collides', ({ assert }) => {
415
+ const model = new ApiModel()
416
+ model.exposes.set(
417
+ 'ent1',
418
+ new ExposedEntity(model, {
419
+ key: 'ent1',
420
+ kind: ExposedEntityKind,
421
+ collectionPath: '/tests',
422
+ resourcePath: '/tests/{id}',
423
+ isRoot: true,
424
+ hasCollection: true,
425
+ actions: [],
426
+ entity: { key: 'domain1' },
427
+ })
428
+ )
429
+
430
+ const collision = model.findCollectionPathCollision('/tests')
431
+ assert.isDefined(collision)
432
+ assert.equal(collision?.key, 'ent1')
433
+ }).tags(['@modeling', '@api'])
434
+
435
+ test('returns undefined if no collision', ({ assert }) => {
436
+ const model = new ApiModel()
437
+ model.exposes.set(
438
+ 'ent1',
439
+ new ExposedEntity(model, {
440
+ key: 'ent1',
441
+ kind: ExposedEntityKind,
442
+ collectionPath: '/tests',
443
+ resourcePath: '/tests/{id}',
444
+ isRoot: true,
445
+ hasCollection: true,
446
+ actions: [],
447
+ entity: { key: 'domain1' },
448
+ })
449
+ )
450
+
451
+ assert.isUndefined(model.findCollectionPathCollision('/other'))
452
+ }).tags(['@modeling', '@api'])
453
+
454
+ test('ignores the entity with the ignore key', ({ assert }) => {
455
+ const model = new ApiModel()
456
+ model.exposes.set(
457
+ 'ent1',
458
+ new ExposedEntity(model, {
459
+ key: 'ent1',
460
+ kind: ExposedEntityKind,
461
+ collectionPath: '/tests',
462
+ resourcePath: '/tests/{id}',
463
+ isRoot: true,
464
+ hasCollection: true,
465
+ actions: [],
466
+ entity: { key: 'domain1' },
467
+ })
468
+ )
469
+
470
+ assert.isUndefined(model.findCollectionPathCollision('/tests', 'ent1'))
471
+ }).tags(['@modeling', '@api'])
472
+
473
+ test('ignores non-root entities', ({ assert }) => {
474
+ const model = new ApiModel()
475
+ model.exposes.set(
476
+ 'ent1',
477
+ new ExposedEntity(model, {
478
+ key: 'ent1',
479
+ kind: ExposedEntityKind,
480
+ collectionPath: '/tests',
481
+ resourcePath: '/tests/{id}',
482
+ isRoot: false,
483
+ hasCollection: true,
484
+ actions: [],
485
+ entity: { key: 'domain1' },
486
+ })
487
+ )
488
+
489
+ assert.isUndefined(model.findCollectionPathCollision('/tests'))
490
+ }).tags(['@modeling', '@api'])
491
+
492
+ test('ignores entities without collections', ({ assert }) => {
493
+ const model = new ApiModel()
494
+ model.exposes.set(
495
+ 'ent1',
496
+ new ExposedEntity(model, {
497
+ key: 'ent1',
498
+ kind: ExposedEntityKind,
499
+ resourcePath: '/tests',
500
+ collectionPath: '/tests',
501
+ isRoot: true,
502
+ hasCollection: false,
503
+ actions: [],
504
+ entity: { key: 'domain1' },
505
+ })
506
+ )
507
+
508
+ assert.isUndefined(model.findCollectionPathCollision('/tests'))
509
+ }).tags(['@modeling', '@api'])
510
+ })
@@ -1,5 +1,23 @@
1
1
  import { test } from '@japa/runner'
2
- import { ApiModel, DataDomain } from '../../../src/index.js'
2
+ import { ApiModel, DataDomain, type ExposedEntity } from '../../../src/index.js'
3
+
4
+ function findRootExposedEntity(model: ApiModel, entityKey: string) {
5
+ for (const e of model.exposes.values()) {
6
+ if (e.isRoot && e.entity.key === entityKey) {
7
+ return e
8
+ }
9
+ }
10
+ return undefined
11
+ }
12
+
13
+ function findNonRootExposedEntity(model: ApiModel, entityKey: string) {
14
+ for (const e of model.exposes.values()) {
15
+ if (!e.isRoot && e.entity.key === entityKey) {
16
+ return e
17
+ }
18
+ }
19
+ return undefined
20
+ }
3
21
 
4
22
  test.group('ApiModel.exposeEntity()', () => {
5
23
  test('exposes a new entity', ({ assert }) => {
@@ -28,7 +46,7 @@ test.group('ApiModel.exposeEntity()', () => {
28
46
  const retrievedExposedEntity = model.exposeEntity({ key: e1.key })
29
47
 
30
48
  assert.deepEqual(retrievedExposedEntity.toJSON(), initialExposedEntity.toJSON())
31
- assert.lengthOf(model.exposes, 1)
49
+ assert.equal(model.exposes.size, 1)
32
50
  }).tags(['@modeling', '@api'])
33
51
 
34
52
  test('notifies change when a new entity is exposed', async ({ assert }) => {
@@ -77,7 +95,7 @@ test.group('ApiModel.exposeEntity()', () => {
77
95
  model.attachDataDomain(domain)
78
96
  const exposedA = model.exposeEntity({ key: eA.key }, { followAssociations: true })
79
97
  // Find nested exposure for B
80
- const nestedB = model.exposes.find((e) => !e.isRoot && e.entity.key === eB.key)
98
+ const nestedB = findNonRootExposedEntity(model, eB.key)
81
99
  assert.isDefined(nestedB)
82
100
  assert.deepEqual(nestedB?.parent?.key, exposedA.key)
83
101
  assert.strictEqual(nestedB?.collectionPath, '/entitybs')
@@ -96,15 +114,21 @@ test.group('ApiModel.exposeEntity()', () => {
96
114
  model.attachDataDomain(domain)
97
115
  model.exposeEntity({ key: eA.key }, { followAssociations: true, maxDepth: 4 })
98
116
 
99
- assert.lengthOf(model.exposes, 2, 'has only 2 exposures')
117
+ assert.equal(model.exposes.size, 2, 'has only 2 exposures')
100
118
  // Should expose A (root), B (nested under A), but not infinitely nest
101
- const exposedA = model.exposes.find((e) => e.isRoot && e.entity.key === eA.key)
102
- const nestedB = model.exposes.find((e) => !e.isRoot && e.entity.key === eB.key)
119
+ const exposedA = findRootExposedEntity(model, eA.key)
120
+ const nestedB = findNonRootExposedEntity(model, eB.key)
103
121
  // There should be only one nested exposure for B under A
104
122
  assert.isDefined(exposedA)
105
123
  assert.isDefined(nestedB)
106
124
  // There should NOT be a nested exposure for A under B
107
- const circularA = model.exposes.find((e) => !e.isRoot && e.entity.key === eA.key && e.parent?.key === nestedB?.key)
125
+ let circularA: ExposedEntity | undefined
126
+ for (const e of model.exposes.values()) {
127
+ if (!e.isRoot && e.entity.key === eA.key && e.parent?.key === nestedB?.key) {
128
+ circularA = e
129
+ break
130
+ }
131
+ }
108
132
  assert.isUndefined(circularA)
109
133
  })
110
134
 
@@ -119,8 +143,8 @@ test.group('ApiModel.exposeEntity()', () => {
119
143
  model.attachDataDomain(domain)
120
144
  model.exposeEntity({ key: eA.key }, { followAssociations: true })
121
145
  // Should only expose A as root, not as nested
122
- const exposedA = model.exposes.find((e) => e.isRoot && e.entity.key === eA.key)
123
- const nestedA = model.exposes.find((e) => !e.isRoot && e.entity.key === eA.key)
146
+ const exposedA = findRootExposedEntity(model, eA.key)
147
+ const nestedA = findNonRootExposedEntity(model, eA.key)
124
148
  assert.isDefined(exposedA)
125
149
  assert.isUndefined(nestedA)
126
150
  })
@@ -137,11 +161,11 @@ test.group('ApiModel.exposeEntity()', () => {
137
161
  const model = new ApiModel()
138
162
  model.attachDataDomain(domain)
139
163
  model.exposeEntity({ key: eA.key }, { followAssociations: true })
140
- const nestedB = model.exposes.find((e) => !e.isRoot && e.entity.key === eB.key)
141
- const nestedC = model.exposes.find((e) => !e.isRoot && e.entity.key === eC.key)
164
+ const nestedB = findNonRootExposedEntity(model, eB.key)
165
+ const nestedC = findNonRootExposedEntity(model, eC.key)
142
166
  assert.isDefined(nestedB)
143
167
  assert.isDefined(nestedC)
144
- assert.deepEqual(nestedB?.parent?.key, model.exposes.find((e) => e.isRoot && e.entity.key === eA.key)?.key)
168
+ assert.deepEqual(nestedB?.parent?.key, findRootExposedEntity(model, eA.key)?.key)
145
169
  assert.deepEqual(nestedC?.parent?.key, nestedB?.key)
146
170
  })
147
171
 
@@ -157,12 +181,12 @@ test.group('ApiModel.exposeEntity()', () => {
157
181
  const model = new ApiModel()
158
182
  model.attachDataDomain(domain)
159
183
  model.exposeEntity({ key: eA.key }, { followAssociations: true })
160
- const nestedB = model.exposes.find((e) => !e.isRoot && e.entity.key === eB.key)
161
- const nestedC = model.exposes.find((e) => !e.isRoot && e.entity.key === eC.key)
184
+ const nestedB = findNonRootExposedEntity(model, eB.key)
185
+ const nestedC = findNonRootExposedEntity(model, eC.key)
162
186
  assert.isDefined(nestedB)
163
187
  assert.isDefined(nestedC)
164
- assert.deepEqual(nestedB?.parent?.key, model.exposes.find((e) => e.isRoot && e.entity.key === eA.key)?.key)
165
- assert.deepEqual(nestedC?.parent?.key, model.exposes.find((e) => e.isRoot && e.entity.key === eA.key)?.key)
188
+ assert.deepEqual(nestedB?.parent?.key, findRootExposedEntity(model, eA.key)?.key)
189
+ assert.deepEqual(nestedC?.parent?.key, findRootExposedEntity(model, eA.key)?.key)
166
190
  })
167
191
 
168
192
  test('respects maxDepth option (A -> B -> C -> D, maxDepth=2)', ({ assert }) => {
@@ -179,9 +203,9 @@ test.group('ApiModel.exposeEntity()', () => {
179
203
  const model = new ApiModel()
180
204
  model.attachDataDomain(domain)
181
205
  model.exposeEntity({ key: eA.key }, { followAssociations: true, maxDepth: 2 })
182
- const nestedB = model.exposes.find((e) => !e.isRoot && e.entity.key === eB.key)
183
- const nestedC = model.exposes.find((e) => !e.isRoot && e.entity.key === eC.key)
184
- const nestedD = model.exposes.find((e) => !e.isRoot && e.entity.key === eD.key)
206
+ const nestedB = findNonRootExposedEntity(model, eB.key)
207
+ const nestedC = findNonRootExposedEntity(model, eC.key)
208
+ const nestedD = findNonRootExposedEntity(model, eD.key)
185
209
  assert.isDefined(nestedB)
186
210
  assert.isDefined(nestedC)
187
211
  assert.isUndefined(nestedD)
@@ -10,10 +10,10 @@ test.group('ApiModel.removeEntity()', () => {
10
10
  const model = new ApiModel()
11
11
  model.attachDataDomain(domain)
12
12
  const exposure = model.exposeEntity({ key: e1.key })
13
- assert.lengthOf(model.exposes, 1)
13
+ assert.equal(model.exposes.size, 1)
14
14
 
15
15
  model.removeExposedEntity(exposure.key)
16
- assert.lengthOf(model.exposes, 0)
16
+ assert.equal(model.exposes.size, 0)
17
17
  }).tags(['@modeling', '@api'])
18
18
 
19
19
  test('removes an entity and its nested children', ({ assert }) => {
@@ -28,13 +28,13 @@ test.group('ApiModel.removeEntity()', () => {
28
28
  model.attachDataDomain(domain)
29
29
  const rootExposure = model.exposeEntity({ key: eA.key }, { followAssociations: true })
30
30
  // Ensure nested exposure for B was created
31
- const nestedB = model.exposes.find((e) => !e.isRoot && e.entity.key === eB.key)
31
+ const nestedB = Array.from(model.exposes.values()).find((e) => !e.isRoot && e.entity.key === eB.key)
32
32
  assert.isDefined(nestedB)
33
- assert.isAbove(model.exposes.length, 1)
33
+ assert.isAbove(model.exposes.size, 1)
34
34
 
35
35
  // Remove root exposure for A and expect children to be removed as well
36
36
  model.removeExposedEntity(rootExposure.key)
37
- assert.lengthOf(model.exposes, 0)
37
+ assert.equal(model.exposes.size, 0)
38
38
  }).tags(['@modeling', '@api'])
39
39
 
40
40
  test('throws error if entity does not exist', ({ assert }) => {
@@ -50,7 +50,7 @@ test.group('ApiModel.removeEntity()', () => {
50
50
  () => model.removeExposedEntity('non-existing-key'),
51
51
  'Exposed entity with key "non-existing-key" not found.'
52
52
  )
53
- assert.lengthOf(model.exposes, 1, 'exposes count should remain unchanged')
53
+ assert.equal(model.exposes.size, 1, 'exposes count should remain unchanged')
54
54
  }).tags(['@modeling', '@api'])
55
55
 
56
56
  test('notifies change when an entity is removed', async ({ assert }) => {
@@ -1,7 +1,6 @@
1
1
  import { test } from '@japa/runner'
2
2
  import {
3
3
  DomainAssociation,
4
- AmfShapes,
5
4
  DomainAssociationKind,
6
5
  Thing,
7
6
  AssociationBinding,
@@ -10,6 +9,7 @@ import {
10
9
  SemanticType,
11
10
  type OnDeleteRule,
12
11
  } from '../../../src/index.js'
12
+ import { Shapes } from '@api-client/amf-core'
13
13
 
14
14
  test.group('DomainAssociation.createSchema()', () => {
15
15
  test('creates a valid schema with default values', ({ assert }) => {
@@ -58,7 +58,7 @@ test.group('DomainAssociation.createSchema()', () => {
58
58
  })
59
59
 
60
60
  test('creates a schema with provided schema', ({ assert }) => {
61
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
61
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
62
62
  const schema = DomainAssociation.createSchema({ schema: schemaDefinition })
63
63
  assert.deepEqual(schema.schema, schemaDefinition)
64
64
  })
@@ -88,7 +88,7 @@ test.group('DomainAssociation.createSchema()', () => {
88
88
  test('creates a schema with all properties', ({ assert }) => {
89
89
  const key = 'test-key'
90
90
  const info = { name: 'Test Association', description: 'Test description' }
91
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
91
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
92
92
  const multiple = true
93
93
  const required = true
94
94
  const bindings: AssociationBinding[] = [{ type: 'web', schema: { hidden: false } }]
@@ -144,7 +144,7 @@ test.group('DomainAssociation.createSchema()', () => {
144
144
  })
145
145
 
146
146
  test('creates a schema with cloned schema', ({ assert }) => {
147
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
147
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
148
148
  const schema = DomainAssociation.createSchema({ schema: schemaDefinition })
149
149
  assert.deepEqual(schema.schema, schemaDefinition)
150
150
  assert.notStrictEqual(schema.schema, schemaDefinition)
@@ -212,7 +212,7 @@ test.group('DomainAssociation.constructor()', () => {
212
212
  test('creates an instance with provided schema', ({ assert }) => {
213
213
  const dataDomain = new DataDomain()
214
214
  const parentKey = 'test-parent'
215
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
215
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
216
216
  const association = new DomainAssociation(dataDomain, parentKey, { schema: schemaDefinition })
217
217
  assert.deepEqual(association.schema, schemaDefinition)
218
218
  })
@@ -252,7 +252,7 @@ test.group('DomainAssociation.constructor()', () => {
252
252
  const parentKey = 'test-parent'
253
253
  const key = 'test-key'
254
254
  const info = { name: 'Test Association', description: 'Test description' }
255
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
255
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
256
256
  const multiple = true
257
257
  const required = true
258
258
  const bindings: AssociationBinding[] = [{ type: 'web', schema: { hidden: false } }]
@@ -316,7 +316,7 @@ test.group('DomainAssociation.constructor()', () => {
316
316
  test('creates an instance with cloned schema', ({ assert }) => {
317
317
  const dataDomain = new DataDomain()
318
318
  const parentKey = 'test-parent'
319
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
319
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
320
320
  const association = new DomainAssociation(dataDomain, parentKey, { schema: schemaDefinition })
321
321
  assert.deepEqual(association.schema, schemaDefinition)
322
322
  assert.notStrictEqual(association.schema, schemaDefinition)
@@ -390,7 +390,7 @@ test.group('DomainAssociation.toJSON()', () => {
390
390
  test('returns a JSON representation with provided schema', ({ assert }) => {
391
391
  const dataDomain = new DataDomain()
392
392
  const parentKey = 'test-parent'
393
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
393
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
394
394
  const association = new DomainAssociation(dataDomain, parentKey, { schema: schemaDefinition })
395
395
  const json = association.toJSON()
396
396
  assert.deepEqual(json.schema, schemaDefinition)
@@ -438,7 +438,7 @@ test.group('DomainAssociation.toJSON()', () => {
438
438
  const parentKey = 'test-parent'
439
439
  const key = 'test-key'
440
440
  const info = { name: 'Test Association', description: 'Test description' }
441
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
441
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
442
442
  const multiple = true
443
443
  const required = true
444
444
  const bindings: AssociationBinding[] = [{ type: 'web', schema: { hidden: false } }]
@@ -527,7 +527,7 @@ test.group('DomainAssociation.toJSON()', () => {
527
527
  test('returns a JSON representation with cloned schema', ({ assert }) => {
528
528
  const dataDomain = new DataDomain()
529
529
  const parentKey = 'test-parent'
530
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
530
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
531
531
  const association = new DomainAssociation(dataDomain, parentKey, { schema: schemaDefinition })
532
532
  const json = association.toJSON()
533
533
  assert.deepEqual(json.schema, schemaDefinition)
@@ -538,7 +538,7 @@ test.group('DomainAssociation.toJSON()', () => {
538
538
  const dataDomain = new DataDomain()
539
539
  const parentKey = 'test-parent'
540
540
  const association = new DomainAssociation(dataDomain, parentKey)
541
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
541
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
542
542
  association.schema = schemaDefinition
543
543
  const json = association.toJSON()
544
544
  assert.deepEqual(json.schema, schemaDefinition)
@@ -672,7 +672,7 @@ test.group('DomainAssociation.ensureSchema()', () => {
672
672
 
673
673
  test('returns the existing schema object if it exists', ({ assert }) => {
674
674
  const dataDomain = new DataDomain()
675
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
675
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
676
676
  const association = new DomainAssociation(dataDomain, 'test-parent', { schema: schemaDefinition })
677
677
  const originalSchema = association.schema
678
678
  const schema = association.ensureSchema()
@@ -682,7 +682,7 @@ test.group('DomainAssociation.ensureSchema()', () => {
682
682
 
683
683
  test('does not modify the existing schema object', ({ assert }) => {
684
684
  const dataDomain = new DataDomain()
685
- const schemaDefinition: AmfShapes.IApiAssociationShape = { linked: false }
685
+ const schemaDefinition: Shapes.IApiAssociationShape = { linked: false }
686
686
  const association = new DomainAssociation(dataDomain, 'test-parent', { schema: schemaDefinition })
687
687
  const originalSchema = association.schema
688
688
  association.ensureSchema()