@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
@@ -4,7 +4,8 @@ import { DomainElement, type DomainElementSchema } from './DomainElement.js'
4
4
  import { nanoid } from '../nanoid.js'
5
5
  import { type IThing, Thing } from '../models/Thing.js'
6
6
  import { observed, retargetChange, toRaw } from '../decorators/observed.js'
7
- import type { IShapeUnion } from '../amf/definitions/Shapes.js'
7
+ import type { Shapes, IShapeRenderOptions } from '@api-client/amf-core'
8
+ import { ApiSchemaGenerator } from '@api-client/amf-core'
8
9
  import { DomainProperty, type DomainPropertySchema } from './DomainProperty.js'
9
10
  import { RemovePropertyException } from '../exceptions/remove_property_exception.js'
10
11
  import { DomainAssociation, DomainAssociationSchema } from './DomainAssociation.js'
@@ -13,8 +14,6 @@ import type { DomainModel } from './DomainModel.js'
13
14
  import type { DomainNamespace } from './DomainNamespace.js'
14
15
  import { ValidationError } from '../exceptions/validation_error.js'
15
16
  import { ShapeGenerator } from './amf/ShapeGenerator.js'
16
- import type { IShapeRenderOptions } from '../amf/shape/ShapeBase.js'
17
- import { ApiSchemaGenerator } from '../amf/ApiSchemaGenerator.js'
18
17
  import { removeGraphNode } from './GraphUtils.js'
19
18
  import { DataSemantics, isEntitySemantic, type SemanticType, type AppliedDataSemantic } from './Semantics.js'
20
19
 
@@ -806,7 +805,7 @@ export class DomainEntity extends DomainElement {
806
805
  *
807
806
  * @returns AMF property shape definition.
808
807
  */
809
- toApiShape(): IShapeUnion {
808
+ toApiShape(): Shapes.IShapeUnion {
810
809
  const serializer = new ShapeGenerator()
811
810
  return serializer.entity(this)
812
811
  }
@@ -20,11 +20,10 @@ import { ShapeGenerator } from './amf/ShapeGenerator.js'
20
20
  import type { PropertyBinding, PropertyBindings, PropertyWebBindings } from './Bindings.js'
21
21
  import type { ModelValidationOptions } from '../models/types.js'
22
22
  import type { DomainEntity } from './DomainEntity.js'
23
- import type { IApiPropertyShape } from '../amf/definitions/Shapes.js'
23
+ import type { Shapes, IShapeRenderOptions } from '@api-client/amf-core'
24
+ import { ApiSchemaGenerator } from '@api-client/amf-core'
24
25
  import type { PropertySchema } from './types.js'
25
26
  import { DataSemantics, isPropertySemantic, type SemanticType, type AppliedDataSemantic } from './Semantics.js'
26
- import { ApiSchemaGenerator } from '../amf/ApiSchemaGenerator.js'
27
- import type { IShapeRenderOptions } from '../amf/shape/ShapeBase.js'
28
27
 
29
28
  export interface DomainPropertySchema extends DomainElementSchema {
30
29
  kind: typeof DomainPropertyKind
@@ -576,7 +575,7 @@ export class DomainProperty extends DomainElement {
576
575
  *
577
576
  * @returns AMF property shape definition.
578
577
  */
579
- toApiShape(): IApiPropertyShape {
578
+ toApiShape(): Shapes.IApiPropertyShape {
580
579
  const serializer = new ShapeGenerator()
581
580
  return serializer.property(this)
582
581
  }
@@ -1,6 +1,6 @@
1
1
  import { DataDomainKind } from '../models/kinds.js'
2
2
  import { DataDomain } from './DataDomain.js'
3
- import { DomainImpactReport } from './types.js'
3
+ import type { DomainImpactReport } from './types.js'
4
4
  import { AssociationValidation } from './validation/association_validation.js'
5
5
  import { EntityValidation } from './validation/entity_validation.js'
6
6
  import { PropertyValidation } from './validation/property_validation.js'
@@ -6,7 +6,7 @@ import { restoreAction } from './actions/index.js'
6
6
  import type { ApiModel } from './ApiModel.js'
7
7
  import { ensureLeadingSlash, joinPaths } from './helpers/endpointHelpers.js'
8
8
  import { AccessRule } from './rules/AccessRule.js'
9
- import { restoreAccessRule } from './rules/index.js'
9
+ import { type RateLimitRule, restoreAccessRule } from './rules/index.js'
10
10
  import { RateLimitingConfiguration } from './rules/RateLimitingConfiguration.js'
11
11
  import type { AssociationTarget, ExposeOptions, ExposeParentRef, ExposedEntitySchema } from './types.js'
12
12
 
@@ -98,7 +98,7 @@ export class ExposedEntity extends EventTarget {
98
98
  /**
99
99
  * Optional configuration for rate limiting for this exposure.
100
100
  */
101
- @observed({ deep: true }) accessor rateLimiting: RateLimitingConfiguration | undefined
101
+ @observed() accessor rateLimiting: RateLimitingConfiguration | undefined
102
102
 
103
103
  /**
104
104
  * When true, generation for this exposure hit configured limits
@@ -184,7 +184,7 @@ export class ExposedEntity extends EventTarget {
184
184
  this.isRoot = init.isRoot
185
185
  this.parent = init.parent
186
186
  this.exposeOptions = init.exposeOptions
187
- this.actions = init.actions ? init.actions.map((a) => restoreAction(a)) : []
187
+ this.actions = init.actions ? init.actions.map((a) => restoreAction(this, a)) : []
188
188
  this.accessRule = init.accessRule ? init.accessRule.map((ar) => restoreAccessRule(ar)) : []
189
189
  this.rateLimiting = init.rateLimiting ? new RateLimitingConfiguration(init.rateLimiting) : undefined
190
190
  this.truncated = init.truncated
@@ -259,9 +259,7 @@ export class ExposedEntity extends EventTarget {
259
259
 
260
260
  // Check for collision if this is a root entity
261
261
  if (this.isRoot) {
262
- const collision = this.api.exposes.find(
263
- (e) => e.isRoot && e.key !== this.key && e.collectionPath === normalizedCollection
264
- )
262
+ const collision = this.api.findCollectionPathCollision(normalizedCollection, this.key)
265
263
  if (collision) {
266
264
  throw new Error(`Collection path "${normalizedCollection}" is already in use by another root entity.`)
267
265
  }
@@ -328,7 +326,7 @@ export class ExposedEntity extends EventTarget {
328
326
  }
329
327
  // Check for collision if this is a root entity (singleton case)
330
328
  if (this.isRoot) {
331
- const collision = this.api.exposes.find((e) => e.isRoot && e.key !== this.key && e.resourcePath === cleaned)
329
+ const collision = this.api.findResourcePathCollision(cleaned, this.key)
332
330
  if (collision) {
333
331
  throw new Error(`Resource path "${cleaned}" is already in use by another root entity.`)
334
332
  }
@@ -350,7 +348,7 @@ export class ExposedEntity extends EventTarget {
350
348
  // Traverse parents, always joining with the parent's resource path
351
349
  let parentKey = this.parent?.key
352
350
  while (parentKey) {
353
- const parent = this.api.exposes.find((e) => e.key === parentKey)
351
+ const parent = this.api.exposes.get(parentKey)
354
352
  if (!parent) break
355
353
  const parentResource = ensureLeadingSlash(parent.resourcePath)
356
354
  absolute = joinPaths(parentResource, absolute)
@@ -372,7 +370,7 @@ export class ExposedEntity extends EventTarget {
372
370
  // Traverse parents, always joining with the parent's resource path
373
371
  let parentKey = this.parent?.key
374
372
  while (parentKey) {
375
- const parent = this.api.exposes.find((e) => e.key === parentKey)
373
+ const parent = this.api.exposes.get(parentKey)
376
374
  if (!parent) break
377
375
  const parentResource = ensureLeadingSlash(parent.resourcePath)
378
376
  absolute = joinPaths(parentResource, absolute)
@@ -380,4 +378,60 @@ export class ExposedEntity extends EventTarget {
380
378
  }
381
379
  return absolute
382
380
  }
381
+
382
+ /**
383
+ * Returns all access rules for this exposure, including the ones from all the parents up to the API.
384
+ */
385
+ getAllRules(): AccessRule[] {
386
+ const rules: AccessRule[] = []
387
+ this.api.accessRule.forEach((rule) => rules.push(rule))
388
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
389
+ let current: ExposedEntity | undefined = this
390
+ while (current) {
391
+ if (current.accessRule) {
392
+ rules.push(...current.accessRule)
393
+ }
394
+ current = current.parent ? this.api.exposes.get(current.parent.key) : undefined
395
+ }
396
+ return rules
397
+ }
398
+
399
+ /**
400
+ * Returns all rate limiters for this exposure, including the ones from all the parents up to the API.
401
+ */
402
+ getAllRateLimiters(): RateLimitingConfiguration[] {
403
+ const rateLimiters: RateLimitingConfiguration[] = []
404
+ if (this.api.rateLimiting) {
405
+ rateLimiters.push(this.api.rateLimiting)
406
+ }
407
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
408
+ let current: ExposedEntity | undefined = this
409
+ while (current) {
410
+ if (current.rateLimiting) {
411
+ rateLimiters.push(current.rateLimiting)
412
+ }
413
+ current = current.parent ? this.api.exposes.get(current.parent.key) : undefined
414
+ }
415
+ return rateLimiters
416
+ }
417
+
418
+ /**
419
+ * Returns all rate limiter rules for this exposure, including the ones from all the parents up to the API.
420
+ * Similar to the getAllRules() method, but it flattens the rate limiters into a single list of rules.
421
+ */
422
+ getAllRateLimiterRules(): RateLimitRule[] {
423
+ const rules: RateLimitRule[] = []
424
+ if (this.api.rateLimiting) {
425
+ rules.push(...this.api.rateLimiting.rules)
426
+ }
427
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
428
+ let current: ExposedEntity | undefined = this
429
+ while (current) {
430
+ if (current.rateLimiting) {
431
+ rules.push(...current.rateLimiting.rules)
432
+ }
433
+ current = current.parent ? this.api.exposes.get(current.parent.key) : undefined
434
+ }
435
+ return rules
436
+ }
383
437
  }
@@ -2,6 +2,7 @@ import { AccessRule, AccessRuleSchema } from '../rules/AccessRule.js'
2
2
  import { RateLimitingConfiguration, RateLimitingConfigurationSchema } from '../rules/RateLimitingConfiguration.js'
3
3
  import { observed } from '../../decorators/observed.js'
4
4
  import { restoreAccessRule } from '../rules/index.js'
5
+ import type { ExposedEntity } from '../ExposedEntity.js'
5
6
 
6
7
  /**
7
8
  * A base interface for common properties across all actions.
@@ -37,10 +38,13 @@ export interface ActionSchema {
37
38
  export class Action extends EventTarget implements ActionSchema {
38
39
  @observed() accessor kind: string
39
40
  @observed({ deep: true }) accessor accessRule: AccessRule[]
40
- @observed({ deep: true }) accessor rateLimiting: RateLimitingConfiguration | undefined
41
+ @observed() accessor rateLimiting: RateLimitingConfiguration | undefined
41
42
 
42
- constructor(state: Partial<ActionSchema> = {}) {
43
+ protected parent: ExposedEntity
44
+
45
+ constructor(parent: ExposedEntity, state: Partial<ActionSchema> = {}) {
43
46
  super()
47
+ this.parent = parent
44
48
  this.kind = state.kind || ''
45
49
  this.accessRule = state.accessRule ? state.accessRule.map((rule) => restoreAccessRule(rule)) : []
46
50
  this.rateLimiting = state.rateLimiting ? new RateLimitingConfiguration(state.rateLimiting) : undefined
@@ -62,4 +66,23 @@ export class Action extends EventTarget implements ActionSchema {
62
66
  }
63
67
  return result
64
68
  }
69
+
70
+ /**
71
+ * Returns all access rules for this action, including the ones from all the parents up to the API.
72
+ */
73
+ getAllRules(): AccessRule[] {
74
+ const rules: AccessRule[] = [...this.parent.getAllRules(), ...this.accessRule]
75
+ return rules
76
+ }
77
+
78
+ /**
79
+ * Returns all rate limiters for this action, including the ones from all the parents up to the API.
80
+ */
81
+ getAllRateLimiters(): RateLimitingConfiguration[] {
82
+ const rateLimiters = this.parent.getAllRateLimiters()
83
+ if (this.rateLimiting) {
84
+ rateLimiters.push(this.rateLimiting)
85
+ }
86
+ return rateLimiters
87
+ }
65
88
  }
@@ -1,5 +1,6 @@
1
1
  import { Action, type ActionSchema } from './Action.js'
2
2
  import { observed } from '../../decorators/observed.js'
3
+ import type { ExposedEntity } from '../ExposedEntity.js'
3
4
 
4
5
  /**
5
6
  * Enables adding a new resource to a collection.
@@ -16,8 +17,8 @@ export interface CreateActionSchema extends ActionSchema {
16
17
  export class CreateAction extends Action implements CreateActionSchema {
17
18
  @observed() override accessor kind: 'create'
18
19
 
19
- constructor(state: Partial<CreateActionSchema> = {}) {
20
- super(state)
20
+ constructor(parent: ExposedEntity, state: Partial<CreateActionSchema> = {}) {
21
+ super(parent, state)
21
22
  this.kind = 'create'
22
23
  }
23
24
 
@@ -1,5 +1,6 @@
1
1
  import { Action, type ActionSchema } from './Action.js'
2
2
  import { observed } from '../../decorators/observed.js'
3
+ import type { ExposedEntity } from '../ExposedEntity.js'
3
4
 
4
5
  export type DeleteStrategy = 'soft' | 'hard'
5
6
 
@@ -33,8 +34,8 @@ export class DeleteAction extends Action implements DeleteActionSchema {
33
34
  @observed() accessor strategy: DeleteStrategy
34
35
  @observed() accessor retentionPeriod: number
35
36
 
36
- constructor(state: Partial<DeleteActionSchema> = {}) {
37
- super(state)
37
+ constructor(parent: ExposedEntity, state: Partial<DeleteActionSchema> = {}) {
38
+ super(parent, state)
38
39
  this.kind = 'delete'
39
40
  this.strategy = state.strategy || 'soft'
40
41
  this.retentionPeriod = state.retentionPeriod ?? 30
@@ -1,6 +1,7 @@
1
1
  import type { PaginationStrategy } from '../types.js'
2
2
  import { Action, type ActionSchema } from './Action.js'
3
3
  import { observed, toRaw } from '../../decorators/observed.js'
4
+ import type { ExposedEntity } from '../ExposedEntity.js'
4
5
 
5
6
  /**
6
7
  * Enables retrieving a collection of resources.
@@ -35,8 +36,8 @@ export class ListAction extends Action implements ListActionSchema {
35
36
  @observed({ deep: true }) accessor filterableFields: string[] = []
36
37
  @observed({ deep: true }) accessor sortableFields: string[] = []
37
38
 
38
- constructor(state: Partial<ListActionSchema> = {}) {
39
- super(state)
39
+ constructor(parent: ExposedEntity, state: Partial<ListActionSchema> = {}) {
40
+ super(parent, state)
40
41
  this.kind = state.kind || 'list'
41
42
  this.pagination = state.pagination
42
43
  ? { ...state.pagination }
@@ -1,5 +1,6 @@
1
1
  import { Action, type ActionSchema } from './Action.js'
2
2
  import { observed } from '../../decorators/observed.js'
3
+ import type { ExposedEntity } from '../ExposedEntity.js'
3
4
 
4
5
  /**
5
6
  * Enables retrieving a single resource by its ID.
@@ -18,8 +19,8 @@ export interface ReadActionSchema extends ActionSchema {
18
19
  export class ReadAction extends Action implements ReadActionSchema {
19
20
  @observed() override accessor kind: 'read'
20
21
 
21
- constructor(state: Partial<ReadActionSchema> = {}) {
22
- super(state)
22
+ constructor(parent: ExposedEntity, state: Partial<ReadActionSchema> = {}) {
23
+ super(parent, state)
23
24
  this.kind = 'read'
24
25
  }
25
26
 
@@ -1,5 +1,6 @@
1
1
  import { Action, type ActionSchema } from './Action.js'
2
2
  import { observed, toRaw } from '../../decorators/observed.js'
3
+ import type { ExposedEntity } from '../ExposedEntity.js'
3
4
 
4
5
  /**
5
6
  * Enables keyword-based search across specified fields.
@@ -22,8 +23,8 @@ export class SearchAction extends Action implements SearchActionSchema {
22
23
  @observed() override accessor kind: 'search'
23
24
  @observed({ deep: true }) accessor fields: string[]
24
25
 
25
- constructor(state: Partial<SearchActionSchema> = {}) {
26
- super(state)
26
+ constructor(parent: ExposedEntity, state: Partial<SearchActionSchema> = {}) {
27
+ super(parent, state)
27
28
  this.kind = 'search'
28
29
  this.fields = state.fields ? [...state.fields] : []
29
30
  }
@@ -1,5 +1,6 @@
1
1
  import { Action, type ActionSchema } from './Action.js'
2
2
  import { observed, toRaw } from '../../decorators/observed.js'
3
+ import type { ExposedEntity } from '../ExposedEntity.js'
3
4
 
4
5
  /**
5
6
  * Enables modifying an existing resource.
@@ -25,8 +26,8 @@ export class UpdateAction extends Action implements UpdateActionSchema {
25
26
  @observed() override accessor kind: 'update'
26
27
  @observed({ deep: true }) accessor allowedMethods: ('PUT' | 'PATCH')[]
27
28
 
28
- constructor(state: Partial<UpdateActionSchema> = {}) {
29
- super(state)
29
+ constructor(parent: ExposedEntity, state: Partial<UpdateActionSchema> = {}) {
30
+ super(parent, state)
30
31
  this.kind = 'update'
31
32
  this.allowedMethods = state.allowedMethods ? [...state.allowedMethods] : ['PATCH']
32
33
  }
@@ -1,4 +1,4 @@
1
- import type { IApiAssociationShape } from '../../amf/definitions/Shapes.js'
1
+ import type { Shapes } from '@api-client/amf-core'
2
2
  import type { Exception } from '../../exceptions/exception.js'
3
3
  import type { AiSessionSchema } from '../../models/AiSession.js'
4
4
  import type { DomainPropertyType } from '../DataFormat.js'
@@ -150,7 +150,7 @@ export interface AiDomainAssociation {
150
150
  multiple?: boolean
151
151
  onDelete?: OnDeleteRule
152
152
  semantics?: AiDomainSemantic[]
153
- schema?: IApiAssociationShape
153
+ schema?: Shapes.IApiAssociationShape
154
154
  }
155
155
 
156
156
  /**
@@ -1,6 +1,5 @@
1
- import { nanoid } from '../nanoid.js'
2
- import uuidV4 from '../lib/uuid.js'
3
- import { DomainPropertyType } from '../modeling/DataFormat.js'
1
+ import { nanoid } from '../../nanoid.js'
2
+ import { DomainPropertyType } from '../DataFormat.js'
4
3
 
5
4
  export const noValue = Symbol('noValue')
6
5
 
@@ -56,7 +55,7 @@ export class DataValueGenerator {
56
55
  // TODO: we need more settings controlling the random string generation.
57
56
  return nanoid(8)
58
57
  case 'uuid-v4':
59
- return uuidV4()
58
+ return crypto.randomUUID()
60
59
  default:
61
60
  return noValue
62
61
  }
@@ -2,31 +2,9 @@ import { type AssociationBindings, type PropertyWebBindings } from '../Bindings.
2
2
  import type { DomainAssociation } from '../DomainAssociation.js'
3
3
  import type { DomainProperty } from '../DomainProperty.js'
4
4
  import type { DomainEntity } from '../DomainEntity.js'
5
- import { IAmfExampleTypes, modelTypeToAmfDataType } from '../../amf/AmfTypes.js'
6
- import { AmfNamespace } from '../../amf/definitions/Namespace.js'
7
- import {
8
- anyShape,
9
- arrayShape,
10
- fileShape,
11
- IApiAnyShape,
12
- IApiArrayShape,
13
- IApiDataExample,
14
- IApiFileShape,
15
- IApiNodeShape,
16
- IApiPropertyShape,
17
- IApiRecursiveShape,
18
- IApiScalarShape,
19
- IApiShape,
20
- IApiUnionShape,
21
- IShapeUnion,
22
- nodeShape,
23
- propertyShape,
24
- recursiveShape,
25
- scalarShape,
26
- unionShape,
27
- } from '../../amf/definitions/Shapes.js'
28
- import { AmfDataNode } from '../../amf/models/AmfDataNode.js'
29
- import { DataValueGenerator } from '../../amf/DataValueGenerator.js'
5
+ import { modelTypeToAmfDataType } from './core_types.js'
6
+ import { AmfNamespace, type Shapes, AmfDataNode, AmfTypes, ShapeHelpers } from '@api-client/amf-core'
7
+ import { DataValueGenerator } from './DataValueGenerator.js'
30
8
  import { nanoid } from '../../nanoid.js'
31
9
  import { DomainEntityKind, DomainPropertyKind } from '../../models/kinds.js'
32
10
  import type { PropertySchema } from '../types.js'
@@ -107,13 +85,13 @@ export class ShapeGenerator {
107
85
  * const amfShape = generator.entity(myDomainEntity);
108
86
  * ```
109
87
  */
110
- entity(input: DomainEntity, visited = new Set<string>()): IApiNodeShape | IApiRecursiveShape {
88
+ entity(input: DomainEntity, visited = new Set<string>()): Shapes.IApiNodeShape | Shapes.IApiRecursiveShape {
111
89
  if (visited.has(input.key)) {
112
90
  // create a recursive shape.
113
91
  return this.createRecursiveShape(input)
114
92
  }
115
93
  visited.add(input.key)
116
- const result = nodeShape(input.key)
94
+ const result = ShapeHelpers.nodeShape(input.key)
117
95
  result.id = input.key
118
96
  this.updateBaseProperties(input, result)
119
97
  result.properties = []
@@ -158,9 +136,9 @@ export class ShapeGenerator {
158
136
  * const amfShape = generator.property(myDomainProperty);
159
137
  * ```
160
138
  */
161
- property(input: DomainProperty): IApiPropertyShape {
139
+ property(input: DomainProperty): Shapes.IApiPropertyShape {
162
140
  const { required, key } = input
163
- const result = propertyShape(key)
141
+ const result = ShapeHelpers.propertyShape(key)
164
142
  result.path = `${AmfNamespace.aml.vocabularies.data.key}${input.info.name}`
165
143
  if (required) {
166
144
  result.minCount = 1
@@ -198,9 +176,9 @@ export class ShapeGenerator {
198
176
  * const amfShape = generator.associationProperty(myDomainAssociation);
199
177
  * ```
200
178
  */
201
- associationProperty(input: DomainAssociation, visited: Set<string> = new Set<string>()): IApiPropertyShape {
179
+ associationProperty(input: DomainAssociation, visited: Set<string> = new Set<string>()): Shapes.IApiPropertyShape {
202
180
  const { required, key } = input
203
- const result = propertyShape(key)
181
+ const result = ShapeHelpers.propertyShape(key)
204
182
  result.path = `${AmfNamespace.aml.vocabularies.data.key}${input.info.name}`
205
183
  if (required) {
206
184
  result.minCount = 1
@@ -219,7 +197,7 @@ export class ShapeGenerator {
219
197
  * recursive shape generation and avoids infinite loops. Defaults to a new empty `Set`.
220
198
  * @returns The range value for the PropertyShape.
221
199
  */
222
- associationShape(input: DomainAssociation, visited: Set<string> = new Set<string>()): IShapeUnion | undefined {
200
+ associationShape(input: DomainAssociation, visited: Set<string> = new Set<string>()): Shapes.IShapeUnion | undefined {
223
201
  const schema = input.schema
224
202
  if (schema && schema.linked) {
225
203
  return this.createLinkedShape(input)
@@ -235,7 +213,7 @@ export class ShapeGenerator {
235
213
  if (unionType === UNION_TYPE_NOT) {
236
214
  // Need to investigate more about "not" union type.
237
215
  // AMF supports it, but I am not sure how to handle it.
238
- const wrapper = anyShape(input.key)
216
+ const wrapper = ShapeHelpers.anyShape(input.key)
239
217
  wrapper.id = `not-shape-${input.key}`
240
218
  wrapper.not = items
241
219
  return wrapper
@@ -250,17 +228,20 @@ export class ShapeGenerator {
250
228
  * @param input The data association instance.
251
229
  * @returns An AMF API scalar shape with the link to the schema.
252
230
  */
253
- protected createLinkedShape(input: DomainAssociation): IApiScalarShape {
231
+ protected createLinkedShape(input: DomainAssociation): Shapes.IApiScalarShape {
254
232
  // This is a link to the schema. In an API that would be the id
255
233
  // of a resource to request the data from.
256
- const range = scalarShape(input.key)
234
+ const range = ShapeHelpers.scalarShape(input.key)
257
235
  range.id = `link-${input.key}`
258
236
  range.dataType = modelTypeToAmfDataType(DATA_TYPE_STRING)
259
237
  return range
260
238
  }
261
239
 
262
- protected createUnionShape(input: DomainAssociation, items: IShapeUnion[]): IApiUnionShape | IApiArrayShape {
263
- const range = unionShape(input.key)
240
+ protected createUnionShape(
241
+ input: DomainAssociation,
242
+ items: Shapes.IShapeUnion[]
243
+ ): Shapes.IApiUnionShape | Shapes.IApiArrayShape {
244
+ const range = ShapeHelpers.unionShape(input.key)
264
245
  this.updateBaseProperties(input, range)
265
246
  range.anyOf = []
266
247
  const unionType = (input.schema && input.schema.unionType) || UNION_TYPE_ANY_OF
@@ -291,8 +272,8 @@ export class ShapeGenerator {
291
272
  associationUnion(
292
273
  input: DomainAssociation,
293
274
  visited: Set<string> = new Set<string>()
294
- ): IShapeUnion | IShapeUnion[] | undefined {
295
- const result: IShapeUnion[] = []
275
+ ): Shapes.IShapeUnion | Shapes.IShapeUnion[] | undefined {
276
+ const result: Shapes.IShapeUnion[] = []
296
277
  for (const item of input.listTargets()) {
297
278
  result.push(this.entity(item, visited))
298
279
  }
@@ -312,7 +293,7 @@ export class ShapeGenerator {
312
293
  *
313
294
  * @param input
314
295
  */
315
- protected getRange(input: DomainProperty): IApiArrayShape | IApiFileShape | IApiScalarShape {
296
+ protected getRange(input: DomainProperty): Shapes.IApiArrayShape | Shapes.IApiFileShape | Shapes.IApiScalarShape {
316
297
  const bindings = input.readBinding('web') as PropertyWebBindings | undefined
317
298
  let schema: PropertySchema | undefined
318
299
  if (input.schema) {
@@ -339,7 +320,7 @@ export class ShapeGenerator {
339
320
  */
340
321
  protected setShapeSchema(
341
322
  input: DomainProperty,
342
- result: IApiAnyShape,
323
+ result: Shapes.IApiAnyShape,
343
324
  schema: PropertySchema,
344
325
  type: string,
345
326
  isArray?: boolean
@@ -374,8 +355,8 @@ export class ShapeGenerator {
374
355
  input: DomainProperty,
375
356
  schema?: PropertySchema,
376
357
  bindings?: PropertyWebBindings
377
- ): IApiArrayShape {
378
- const result = arrayShape(input.key)
358
+ ): Shapes.IApiArrayShape {
359
+ const result = ShapeHelpers.arrayShape(input.key)
379
360
  const { type } = input
380
361
  if (type === DATA_TYPE_BINARY) {
381
362
  // we do not pass schema to the range generator as we set schema's properties on the array shape.
@@ -384,7 +365,7 @@ export class ShapeGenerator {
384
365
  result.items = this.createScalarShape(input, undefined, bindings)
385
366
  }
386
367
  if (schema) {
387
- const type = (result.items as IApiScalarShape).dataType as string
368
+ const type = (result.items as Shapes.IApiScalarShape).dataType as string
388
369
  this.setShapeSchema(input, result, schema, type, input.multiple)
389
370
  }
390
371
  return result
@@ -394,8 +375,8 @@ export class ShapeGenerator {
394
375
  input: DomainProperty,
395
376
  schema?: PropertySchema,
396
377
  bindings?: PropertyWebBindings
397
- ): IApiScalarShape {
398
- const result = scalarShape(input.key)
378
+ ): Shapes.IApiScalarShape {
379
+ const result = ShapeHelpers.scalarShape(input.key)
399
380
  this.updateBaseProperties(input, result)
400
381
  this.setScalarCommonProperties(result, input, bindings)
401
382
  if (!result.dataType) {
@@ -407,14 +388,14 @@ export class ShapeGenerator {
407
388
  return result
408
389
  }
409
390
 
410
- protected createExamples(examples: string[], type: string): IApiDataExample[] {
411
- const result: IApiDataExample[] = []
391
+ protected createExamples(examples: string[], type: string): Shapes.IApiDataExample[] {
392
+ const result: Shapes.IApiDataExample[] = []
412
393
  for (const current of examples) {
413
- const item: IApiDataExample = {
394
+ const item: Shapes.IApiDataExample = {
414
395
  id: nanoid(),
415
396
  customDomainProperties: [],
416
397
  strict: true,
417
- types: IAmfExampleTypes,
398
+ types: [...AmfTypes.IAmfExampleTypes],
418
399
  structuredValue: AmfDataNode.scalar(current, type).toJSON(),
419
400
  }
420
401
  result.push(item)
@@ -422,12 +403,12 @@ export class ShapeGenerator {
422
403
  return result
423
404
  }
424
405
 
425
- protected createArrayExamples(examples: string[], type: string): IApiDataExample[] {
426
- const item: IApiDataExample = {
406
+ protected createArrayExamples(examples: string[], type: string): Shapes.IApiDataExample[] {
407
+ const item: Shapes.IApiDataExample = {
427
408
  id: nanoid(),
428
409
  customDomainProperties: [],
429
410
  strict: true,
430
- types: IAmfExampleTypes,
411
+ types: [...AmfTypes.IAmfExampleTypes],
431
412
  }
432
413
  const value = new AmfDataNode('array')
433
414
  for (const item of examples) {
@@ -438,8 +419,8 @@ export class ShapeGenerator {
438
419
  return [item]
439
420
  }
440
421
 
441
- protected createFileShape(input: DomainProperty, bindings?: PropertyWebBindings): IApiFileShape {
442
- const result = fileShape(input.key)
422
+ protected createFileShape(input: DomainProperty, bindings?: PropertyWebBindings): Shapes.IApiFileShape {
423
+ const result = ShapeHelpers.fileShape(input.key)
443
424
  this.updateBaseProperties(input, result)
444
425
  if (bindings) {
445
426
  if (Array.isArray(bindings.fileTypes)) {
@@ -454,7 +435,7 @@ export class ShapeGenerator {
454
435
  }
455
436
 
456
437
  protected setScalarCommonProperties(
457
- result: IApiFileShape | IApiScalarShape,
438
+ result: Shapes.IApiFileShape | Shapes.IApiScalarShape,
458
439
  input: DomainProperty,
459
440
  bindings?: PropertyWebBindings
460
441
  ): void {
@@ -521,7 +502,10 @@ export class ShapeGenerator {
521
502
  }
522
503
  }
523
504
 
524
- protected updateBaseProperties(input: DomainProperty | DomainAssociation | DomainEntity, target: IApiShape): void {
505
+ protected updateBaseProperties(
506
+ input: DomainProperty | DomainAssociation | DomainEntity,
507
+ target: Shapes.IApiShape
508
+ ): void {
525
509
  target.name = input.info.name
526
510
  target.displayName = input.info.displayName
527
511
  target.description = input.info.description
@@ -532,8 +516,8 @@ export class ShapeGenerator {
532
516
  }
533
517
  }
534
518
 
535
- protected createRecursiveShape(input: DomainEntity): IApiRecursiveShape {
536
- return recursiveShape(input.key, input.key)
519
+ protected createRecursiveShape(input: DomainEntity): Shapes.IApiRecursiveShape {
520
+ return ShapeHelpers.recursiveShape(input.key, input.key)
537
521
  }
538
522
 
539
523
  /**
@@ -544,8 +528,8 @@ export class ShapeGenerator {
544
528
  * @param shape The shape to wrap as an array.
545
529
  * @returns Array shape.
546
530
  */
547
- protected refactorShapeToArray(id: string, shape: IShapeUnion): IApiArrayShape {
548
- const result = arrayShape(id)
531
+ protected refactorShapeToArray(id: string, shape: Shapes.IShapeUnion): Shapes.IApiArrayShape {
532
+ const result = ShapeHelpers.arrayShape(id)
549
533
  result.items = shape
550
534
  return result
551
535
  }