@api-client/core 0.19.10 → 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 (429) hide show
  1. package/LICENSE.md +9 -63
  2. package/bin/test.ts +1 -12
  3. package/build/src/browser.d.ts +0 -15
  4. package/build/src/browser.d.ts.map +1 -1
  5. package/build/src/browser.js +0 -17
  6. package/build/src/browser.js.map +1 -1
  7. package/build/src/events/EventTypes.d.ts +0 -6
  8. package/build/src/events/EventTypes.d.ts.map +1 -1
  9. package/build/src/events/EventTypes.js +0 -2
  10. package/build/src/events/EventTypes.js.map +1 -1
  11. package/build/src/events/Events.d.ts +0 -2
  12. package/build/src/events/Events.d.ts.map +1 -1
  13. package/build/src/events/Events.js +0 -2
  14. package/build/src/events/Events.js.map +1 -1
  15. package/build/src/index.d.ts +0 -15
  16. package/build/src/index.d.ts.map +1 -1
  17. package/build/src/index.js +0 -17
  18. package/build/src/index.js.map +1 -1
  19. package/build/src/modeling/Bindings.d.ts +3 -3
  20. package/build/src/modeling/Bindings.d.ts.map +1 -1
  21. package/build/src/modeling/Bindings.js.map +1 -1
  22. package/build/src/modeling/DomainAssociation.d.ts +5 -5
  23. package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
  24. package/build/src/modeling/DomainAssociation.js.map +1 -1
  25. package/build/src/modeling/DomainEntity.d.ts +2 -3
  26. package/build/src/modeling/DomainEntity.d.ts.map +1 -1
  27. package/build/src/modeling/DomainEntity.js +1 -1
  28. package/build/src/modeling/DomainEntity.js.map +1 -1
  29. package/build/src/modeling/DomainProperty.d.ts +2 -3
  30. package/build/src/modeling/DomainProperty.d.ts.map +1 -1
  31. package/build/src/modeling/DomainProperty.js +1 -1
  32. package/build/src/modeling/DomainProperty.js.map +1 -1
  33. package/build/src/modeling/ai/types.d.ts +2 -2
  34. package/build/src/modeling/ai/types.d.ts.map +1 -1
  35. package/build/src/modeling/ai/types.js.map +1 -1
  36. package/build/src/{amf → modeling/amf}/DataValueGenerator.d.ts +1 -1
  37. package/build/src/modeling/amf/DataValueGenerator.d.ts.map +1 -0
  38. package/build/src/{amf → modeling/amf}/DataValueGenerator.js +2 -3
  39. package/build/src/modeling/amf/DataValueGenerator.js.map +1 -0
  40. package/build/src/modeling/amf/ShapeGenerator.d.ts +20 -20
  41. package/build/src/modeling/amf/ShapeGenerator.d.ts.map +1 -1
  42. package/build/src/modeling/amf/ShapeGenerator.js +16 -18
  43. package/build/src/modeling/amf/ShapeGenerator.js.map +1 -1
  44. package/build/src/modeling/amf/core_types.d.ts +9 -0
  45. package/build/src/modeling/amf/core_types.d.ts.map +1 -0
  46. package/build/src/modeling/amf/core_types.js +45 -0
  47. package/build/src/modeling/amf/core_types.js.map +1 -0
  48. package/build/src/models/http-flows/LegacyTranslator.js +1 -1
  49. package/build/src/models/http-flows/LegacyTranslator.js.map +1 -1
  50. package/build/src/runtime/http-runner/HttpFlows.js +1 -1
  51. package/build/src/runtime/http-runner/HttpFlows.js.map +1 -1
  52. package/build/tsconfig.tsbuildinfo +1 -1
  53. package/eslint.config.js +0 -1
  54. package/package.json +11 -14
  55. package/src/events/EventTypes.ts +0 -2
  56. package/src/events/Events.ts +0 -2
  57. package/src/modeling/Bindings.ts +3 -3
  58. package/src/modeling/DomainAssociation.ts +5 -5
  59. package/src/modeling/DomainEntity.ts +3 -4
  60. package/src/modeling/DomainProperty.ts +3 -4
  61. package/src/modeling/ai/types.ts +2 -2
  62. package/src/{amf → modeling/amf}/DataValueGenerator.ts +3 -4
  63. package/src/modeling/amf/ShapeGenerator.ts +45 -61
  64. package/src/modeling/amf/core_types.ts +47 -0
  65. package/src/models/http-flows/LegacyTranslator.ts +1 -1
  66. package/src/runtime/http-runner/HttpFlows.ts +1 -1
  67. package/tests/unit/{amf → modeling/amf}/data_value_generator.spec.ts +2 -2
  68. package/tests/unit/modeling/amf/shape_generator.spec.ts +146 -167
  69. package/tests/unit/modeling/domain_asociation.spec.ts +13 -13
  70. package/tests/unit/runtime/runners/http_assertion_runner.spec.ts +1 -1
  71. package/tests/unit/runtime/runners/http_flow_runner.spec.ts +1 -1
  72. package/tests/unit/runtime/runners/project_runner.spec.ts +1 -1
  73. package/tests/unit/runtime/runners/request_runner.spec.ts +1 -1
  74. package/tests/unit/runtime/runners/serial_runner.spec.ts +1 -1
  75. package/build/src/amf/AmfMixin.d.ts +0 -396
  76. package/build/src/amf/AmfMixin.d.ts.map +0 -1
  77. package/build/src/amf/AmfMixin.js +0 -1138
  78. package/build/src/amf/AmfMixin.js.map +0 -1
  79. package/build/src/amf/AmfSerializer.d.ts +0 -137
  80. package/build/src/amf/AmfSerializer.d.ts.map +0 -1
  81. package/build/src/amf/AmfSerializer.js +0 -1947
  82. package/build/src/amf/AmfSerializer.js.map +0 -1
  83. package/build/src/amf/AmfTypes.d.ts +0 -25
  84. package/build/src/amf/AmfTypes.d.ts.map +0 -1
  85. package/build/src/amf/AmfTypes.js +0 -143
  86. package/build/src/amf/AmfTypes.js.map +0 -1
  87. package/build/src/amf/ApiExampleGenerator.d.ts +0 -40
  88. package/build/src/amf/ApiExampleGenerator.d.ts.map +0 -1
  89. package/build/src/amf/ApiExampleGenerator.js +0 -112
  90. package/build/src/amf/ApiExampleGenerator.js.map +0 -1
  91. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +0 -68
  92. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts.map +0 -1
  93. package/build/src/amf/ApiMonacoSchemaGenerator.js +0 -248
  94. package/build/src/amf/ApiMonacoSchemaGenerator.js.map +0 -1
  95. package/build/src/amf/ApiSchemaGenerator.d.ts +0 -56
  96. package/build/src/amf/ApiSchemaGenerator.d.ts.map +0 -1
  97. package/build/src/amf/ApiSchemaGenerator.js +0 -94
  98. package/build/src/amf/ApiSchemaGenerator.js.map +0 -1
  99. package/build/src/amf/ApiSchemaValues.d.ts +0 -111
  100. package/build/src/amf/ApiSchemaValues.d.ts.map +0 -1
  101. package/build/src/amf/ApiSchemaValues.js +0 -463
  102. package/build/src/amf/ApiSchemaValues.js.map +0 -1
  103. package/build/src/amf/DataValueGenerator.d.ts.map +0 -1
  104. package/build/src/amf/DataValueGenerator.js.map +0 -1
  105. package/build/src/amf/Parsing.d.ts +0 -48
  106. package/build/src/amf/Parsing.d.ts.map +0 -1
  107. package/build/src/amf/Parsing.js +0 -2
  108. package/build/src/amf/Parsing.js.map +0 -1
  109. package/build/src/amf/Utils.d.ts +0 -37
  110. package/build/src/amf/Utils.d.ts.map +0 -1
  111. package/build/src/amf/Utils.js +0 -169
  112. package/build/src/amf/Utils.js.map +0 -1
  113. package/build/src/amf/data-node/DataNodeBase.d.ts +0 -34
  114. package/build/src/amf/data-node/DataNodeBase.d.ts.map +0 -1
  115. package/build/src/amf/data-node/DataNodeBase.js +0 -77
  116. package/build/src/amf/data-node/DataNodeBase.js.map +0 -1
  117. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +0 -15
  118. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts.map +0 -1
  119. package/build/src/amf/data-node/JsonDataNodeGenerator.js +0 -23
  120. package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +0 -1
  121. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +0 -14
  122. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts.map +0 -1
  123. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +0 -48
  124. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +0 -1
  125. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +0 -22
  126. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts.map +0 -1
  127. package/build/src/amf/data-node/XmlDataNodeGenerator.js +0 -34
  128. package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +0 -1
  129. package/build/src/amf/definitions/Amf.d.ts +0 -363
  130. package/build/src/amf/definitions/Amf.d.ts.map +0 -1
  131. package/build/src/amf/definitions/Amf.js +0 -3
  132. package/build/src/amf/definitions/Amf.js.map +0 -1
  133. package/build/src/amf/definitions/Api.d.ts +0 -383
  134. package/build/src/amf/definitions/Api.d.ts.map +0 -1
  135. package/build/src/amf/definitions/Api.js +0 -2
  136. package/build/src/amf/definitions/Api.js.map +0 -1
  137. package/build/src/amf/definitions/Base.d.ts +0 -12
  138. package/build/src/amf/definitions/Base.d.ts.map +0 -1
  139. package/build/src/amf/definitions/Base.js +0 -2
  140. package/build/src/amf/definitions/Base.js.map +0 -1
  141. package/build/src/amf/definitions/Namespace.d.ts +0 -327
  142. package/build/src/amf/definitions/Namespace.d.ts.map +0 -1
  143. package/build/src/amf/definitions/Namespace.js +0 -346
  144. package/build/src/amf/definitions/Namespace.js.map +0 -1
  145. package/build/src/amf/definitions/Shapes.d.ts +0 -312
  146. package/build/src/amf/definitions/Shapes.d.ts.map +0 -1
  147. package/build/src/amf/definitions/Shapes.js +0 -87
  148. package/build/src/amf/definitions/Shapes.js.map +0 -1
  149. package/build/src/amf/models/AmfDataNode.d.ts +0 -67
  150. package/build/src/amf/models/AmfDataNode.d.ts.map +0 -1
  151. package/build/src/amf/models/AmfDataNode.js +0 -192
  152. package/build/src/amf/models/AmfDataNode.js.map +0 -1
  153. package/build/src/amf/shape/ShapeBase.d.ts +0 -74
  154. package/build/src/amf/shape/ShapeBase.d.ts.map +0 -1
  155. package/build/src/amf/shape/ShapeBase.js +0 -93
  156. package/build/src/amf/shape/ShapeBase.js.map +0 -1
  157. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +0 -47
  158. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts.map +0 -1
  159. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +0 -420
  160. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +0 -1
  161. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +0 -85
  162. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts.map +0 -1
  163. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +0 -852
  164. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +0 -1
  165. package/build/src/events/amf/AmfEventTypes.d.ts +0 -7
  166. package/build/src/events/amf/AmfEventTypes.d.ts.map +0 -1
  167. package/build/src/events/amf/AmfEventTypes.js +0 -7
  168. package/build/src/events/amf/AmfEventTypes.js.map +0 -1
  169. package/build/src/events/amf/AmfEvents.d.ts +0 -34
  170. package/build/src/events/amf/AmfEvents.d.ts.map +0 -1
  171. package/build/src/events/amf/AmfEvents.js +0 -63
  172. package/build/src/events/amf/AmfEvents.js.map +0 -1
  173. package/build/src/mocking/RandExp.d.ts +0 -55
  174. package/build/src/mocking/RandExp.d.ts.map +0 -1
  175. package/build/src/mocking/RandExp.js +0 -302
  176. package/build/src/mocking/RandExp.js.map +0 -1
  177. package/build/src/mocking/lib/ret.d.ts +0 -16
  178. package/build/src/mocking/lib/ret.d.ts.map +0 -1
  179. package/build/src/mocking/lib/ret.js +0 -284
  180. package/build/src/mocking/lib/ret.js.map +0 -1
  181. package/data/apis/APIC-187/APIC-187.raml +0 -21
  182. package/data/apis/APIC-187/dataType.raml +0 -132
  183. package/data/apis/APIC-187/example.raml +0 -84
  184. package/data/apis/APIC-188/APIC-188.raml +0 -21
  185. package/data/apis/APIC-188/dataType.raml +0 -132
  186. package/data/apis/APIC-188/example.raml +0 -84
  187. package/data/apis/APIC-233/APIC-233.raml +0 -15
  188. package/data/apis/APIC-391/APIC-391.raml +0 -44
  189. package/data/apis/APIC-391/examples/post-body-request-example.raml +0 -7
  190. package/data/apis/APIC-483/APIC-483.raml +0 -16
  191. package/data/apis/APIC-483/example/list-of-bank-succ.json +0 -32
  192. package/data/apis/APIC-483/schema/response-retrieve-list-bank.json +0 -68
  193. package/data/apis/APIC-487/APIC-487.raml +0 -36
  194. package/data/apis/APIC-655/APIC-655.raml +0 -44
  195. package/data/apis/APIC-655/delivery.json +0 -12
  196. package/data/apis/APIC-689/APIC-689.raml +0 -20
  197. package/data/apis/APIC-690/APIC-690.raml +0 -17
  198. package/data/apis/APIC-690/datatypes/Address.raml +0 -10
  199. package/data/apis/APIC-690/datatypes/Customer.raml +0 -17
  200. package/data/apis/APIC-690/examples/CustomerExample2.raml +0 -17
  201. package/data/apis/APIC-690/examples/CustomersExample.raml +0 -34
  202. package/data/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json +0 -1383
  203. package/data/apis/SE-10469/SE-10469.raml +0 -11
  204. package/data/apis/SE-13092/Examples/PersonExample.raml +0 -7
  205. package/data/apis/SE-13092/SE-13092.raml +0 -37
  206. package/data/apis/SE-13092/datatypes/Address.raml +0 -5
  207. package/data/apis/SE-13092/datatypes/InlineType.raml +0 -5
  208. package/data/apis/SE-13092/datatypes/Person.raml +0 -15
  209. package/data/apis/SE-22063/SE-22063.raml +0 -14
  210. package/data/apis/SE-22063/stock.raml +0 -41
  211. package/data/apis/amf-helper-api/amf-helper-api.raml +0 -1024
  212. package/data/apis/amf-helper-api/examples/comment-example.json +0 -42
  213. package/data/apis/amf-helper-api/examples/commentCreateRequest-example.json +0 -7
  214. package/data/apis/amf-helper-api/examples/commentList-example.json +0 -48
  215. package/data/apis/amf-helper-api/examples/person.json +0 -14
  216. package/data/apis/amf-helper-api/examples/person.raml +0 -13
  217. package/data/apis/amf-helper-api/examples/person.xml +0 -14
  218. package/data/apis/amf-helper-api/libraries/comment-lib.raml +0 -143
  219. package/data/apis/amf-helper-api/library.raml +0 -7
  220. package/data/apis/amf-helper-api/schemas/person.json +0 -104
  221. package/data/apis/amf-helper-api/schemas/person.xsd +0 -26
  222. package/data/apis/amf-helper-api/traits/file.raml +0 -33
  223. package/data/apis/amf-helper-api/traits/pagination.raml +0 -80
  224. package/data/apis/amf-helper-api/traits/results.raml +0 -19
  225. package/data/apis/amf-helper-api/traits/visibility.raml +0 -14
  226. package/data/apis/amf-helper-api/types/app-person.raml +0 -101
  227. package/data/apis/amf-helper-api/types/dimensions.raml +0 -24
  228. package/data/apis/amf-helper-api/types/external-type.raml +0 -7
  229. package/data/apis/amf-helper-api/types/image.raml +0 -23
  230. package/data/apis/amf-helper-api/types/product.raml +0 -52
  231. package/data/apis/amf-helper-api/types/resource.raml +0 -11
  232. package/data/apis/amf-helper-api/types/standard-request.raml +0 -50
  233. package/data/apis/amf-helper-api/types/user.raml +0 -37
  234. package/data/apis/arc-demo-api/arc-demo-api.raml +0 -468
  235. package/data/apis/arc-demo-api/examples/e400.xml +0 -4
  236. package/data/apis/arc-demo-api/examples/e401.xml +0 -4
  237. package/data/apis/arc-demo-api/examples/e404.xml +0 -4
  238. package/data/apis/arc-demo-api/examples/image.xml +0 -5
  239. package/data/apis/arc-demo-api/examples/messages-example.json +0 -22
  240. package/data/apis/arc-demo-api/examples/messages-sent-example.json +0 -15
  241. package/data/apis/arc-demo-api/examples/person.json +0 -14
  242. package/data/apis/arc-demo-api/examples/person.url.encoded +0 -1
  243. package/data/apis/arc-demo-api/examples/person.xml +0 -14
  244. package/data/apis/arc-demo-api/examples/product.xml +0 -9
  245. package/data/apis/arc-demo-api/library.raml +0 -36
  246. package/data/apis/arc-demo-api/resourceTypes/app-person.raml +0 -49
  247. package/data/apis/arc-demo-api/resourceTypes/example-types.raml +0 -45
  248. package/data/apis/arc-demo-api/resourceTypes/image.raml +0 -23
  249. package/data/apis/arc-demo-api/resourceTypes/message-sent-type.raml +0 -23
  250. package/data/apis/arc-demo-api/resourceTypes/message-type.raml +0 -33
  251. package/data/apis/arc-demo-api/resourceTypes/product.raml +0 -52
  252. package/data/apis/arc-demo-api/resourceTypes/resource.raml +0 -11
  253. package/data/apis/arc-demo-api/schemas/error-response.xsd +0 -11
  254. package/data/apis/arc-demo-api/schemas/image.xsd +0 -11
  255. package/data/apis/arc-demo-api/schemas/person.json +0 -104
  256. package/data/apis/arc-demo-api/schemas/person.xsd +0 -26
  257. package/data/apis/arc-demo-api/schemas/product.xsd +0 -17
  258. package/data/apis/arc-demo-api/securitySchemes/basic.raml +0 -5
  259. package/data/apis/arc-demo-api/securitySchemes/oauth_2_0.raml +0 -29
  260. package/data/apis/arc-demo-api/securitySchemes/x-custom.raml +0 -26
  261. package/data/apis/arc-demo-api/traits/adminable.raml +0 -23
  262. package/data/apis/arc-demo-api/traits/pagination.raml +0 -83
  263. package/data/apis/arc-demo-api/traits/rate-limited.raml +0 -9
  264. package/data/apis/async-api/async-api.yaml +0 -96
  265. package/data/apis/example-generator-api/contact-email-example.raml +0 -6
  266. package/data/apis/example-generator-api/contact-example.raml +0 -5
  267. package/data/apis/example-generator-api/contact-fax-example.raml +0 -5
  268. package/data/apis/example-generator-api/contact-website-example.raml +0 -2
  269. package/data/apis/example-generator-api/example-1.raml +0 -6
  270. package/data/apis/example-generator-api/example-2.raml +0 -9
  271. package/data/apis/example-generator-api/example-3.raml +0 -4
  272. package/data/apis/example-generator-api/example-4.raml +0 -2
  273. package/data/apis/example-generator-api/example-5.raml +0 -4
  274. package/data/apis/example-generator-api/example-6.raml +0 -2
  275. package/data/apis/example-generator-api/example-7.raml +0 -5
  276. package/data/apis/example-generator-api/example-generator-api.raml +0 -423
  277. package/data/apis/example-generator-api/example.json +0 -14
  278. package/data/apis/example-generator-api/example.xml +0 -15
  279. package/data/apis/example-generator-api/example.xsd +0 -26
  280. package/data/apis/example-generator-api/examples/employee.raml +0 -7
  281. package/data/apis/example-generator-api/examples/employees.raml +0 -7
  282. package/data/apis/example-generator-api/linked-named-example.raml +0 -21
  283. package/data/apis/example-generator-api/named-example-with-link.raml +0 -5
  284. package/data/apis/example-generator-api/named-example.raml +0 -9
  285. package/data/apis/example-generator-api/user-json-example.raml +0 -17
  286. package/data/apis/example-generator-api/user-raml-example.raml +0 -37
  287. package/data/apis/example-generator-api/user.json +0 -8
  288. package/data/apis/example-generator-api/user.raml +0 -18
  289. package/data/apis/example-generator-api/users-json-example.raml +0 -17
  290. package/data/apis/example-generator-api/users-raml-example.raml +0 -32
  291. package/data/apis/example-generator-api/users.json +0 -8
  292. package/data/apis/expanded-api/expanded-api.raml +0 -8
  293. package/data/apis/flattened-api/flattened-api.raml +0 -8
  294. package/data/apis/multiple-servers/multiple-servers.yaml +0 -112
  295. package/data/apis/oas-3-api/oas-3-api.yaml +0 -356
  296. package/data/apis/oas-date/oas-date.yaml +0 -28
  297. package/data/apis/oas-types/oas-types.yaml +0 -159
  298. package/data/apis/oas-unions/oas-unions.yaml +0 -75
  299. package/data/apis/petstore/petstore.yaml +0 -954
  300. package/data/apis/raml-date/raml-date.raml +0 -28
  301. package/data/apis/recursive/recursive.raml +0 -14
  302. package/data/apis/schema-api/examples/person.json +0 -14
  303. package/data/apis/schema-api/examples/person.raml +0 -14
  304. package/data/apis/schema-api/examples/person.url.encoded +0 -1
  305. package/data/apis/schema-api/examples/person.xml +0 -14
  306. package/data/apis/schema-api/library/demo-types.raml +0 -43
  307. package/data/apis/schema-api/schema-api.raml +0 -656
  308. package/data/apis/schema-api/schemas/person.json +0 -104
  309. package/data/apis/schema-api/schemas/person.xsd +0 -26
  310. package/data/apis/schema-api/types/DemoPerson.raml +0 -67
  311. package/data/apis/secured-api/oauth-2-custom-settings.raml +0 -143
  312. package/data/apis/secured-api/oauth2-header-delivery.raml +0 -13
  313. package/data/apis/secured-api/oauth2-no-delivery.raml +0 -8
  314. package/data/apis/secured-api/oauth2-no-grants.raml +0 -12
  315. package/data/apis/secured-api/oauth2-pkce.raml +0 -13
  316. package/data/apis/secured-api/oauth2-query-delivery.raml +0 -13
  317. package/data/apis/secured-api/oauth_1_0.raml +0 -8
  318. package/data/apis/secured-api/oauth_1_0_no-settings.raml +0 -3
  319. package/data/apis/secured-api/oauth_1_0_no-signature.raml +0 -7
  320. package/data/apis/secured-api/oauth_1_0_signature.raml +0 -8
  321. package/data/apis/secured-api/passthrough-querystring.raml +0 -16
  322. package/data/apis/secured-api/passthrough.raml +0 -24
  323. package/data/apis/secured-api/secured-api.raml +0 -231
  324. package/data/apis/secured-api/x-custom.raml +0 -33
  325. package/data/apis/secured-api/x-other.raml +0 -29
  326. package/data/apis/secured-api/x-query-string.raml +0 -16
  327. package/data/apis/tracked-examples/datatypes/employee.raml +0 -5
  328. package/data/apis/tracked-examples/examples/employee.raml +0 -4
  329. package/data/apis/tracked-examples/examples/employees.raml +0 -8
  330. package/data/apis/tracked-examples/tracked-to-linked.raml +0 -28
  331. package/data/model.js +0 -129
  332. package/data/models/APIC-187.json +0 -11416
  333. package/data/models/APIC-188.json +0 -11416
  334. package/data/models/APIC-233.json +0 -539
  335. package/data/models/APIC-391.json +0 -1903
  336. package/data/models/APIC-483.json +0 -3110
  337. package/data/models/APIC-487.json +0 -1225
  338. package/data/models/APIC-655.json +0 -3145
  339. package/data/models/APIC-689.json +0 -797
  340. package/data/models/APIC-690.json +0 -5992
  341. package/data/models/SE-10469.json +0 -22898
  342. package/data/models/SE-13092.json +0 -2769
  343. package/data/models/SE-22063.json +0 -2314
  344. package/data/models/amf-helper-api.json +0 -84457
  345. package/data/models/arc-demo-api.json +0 -52041
  346. package/data/models/async-api.json +0 -3227
  347. package/data/models/example-generator-api.json +0 -45209
  348. package/data/models/expanded-api.json +0 -251
  349. package/data/models/flattened-api.json +0 -251
  350. package/data/models/multiple-servers.json +0 -2769
  351. package/data/models/oas-3-api.json +0 -10590
  352. package/data/models/oas-date.json +0 -637
  353. package/data/models/oas-types.json +0 -5352
  354. package/data/models/oas-unions.json +0 -1935
  355. package/data/models/petstore.json +0 -27712
  356. package/data/models/raml-date.json +0 -1114
  357. package/data/models/recursive.json +0 -610
  358. package/data/models/schema-api.json +0 -35527
  359. package/data/models/secured-api.json +0 -21071
  360. package/data/models/tracked-to-linked.json +0 -1914
  361. package/src/amf/AmfMixin.ts +0 -1726
  362. package/src/amf/AmfSerializer.ts +0 -2358
  363. package/src/amf/AmfTypes.ts +0 -147
  364. package/src/amf/ApiExampleGenerator.ts +0 -122
  365. package/src/amf/ApiMonacoSchemaGenerator.ts +0 -332
  366. package/src/amf/ApiSchemaGenerator.ts +0 -115
  367. package/src/amf/ApiSchemaValues.ts +0 -509
  368. package/src/amf/Parsing.ts +0 -50
  369. package/src/amf/Utils.ts +0 -172
  370. package/src/amf/data-node/DataNodeBase.ts +0 -83
  371. package/src/amf/data-node/JsonDataNodeGenerator.ts +0 -24
  372. package/src/amf/data-node/README.md +0 -3
  373. package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +0 -49
  374. package/src/amf/data-node/XmlDataNodeGenerator.ts +0 -46
  375. package/src/amf/definitions/Amf.ts +0 -440
  376. package/src/amf/definitions/Api.ts +0 -445
  377. package/src/amf/definitions/Base.ts +0 -13
  378. package/src/amf/definitions/Namespace.ts +0 -357
  379. package/src/amf/definitions/Shapes.ts +0 -438
  380. package/src/amf/models/AmfDataNode.ts +0 -210
  381. package/src/amf/shape/README.md +0 -4
  382. package/src/amf/shape/ShapeBase.ts +0 -174
  383. package/src/amf/shape/ShapeJsonSchemaGenerator.ts +0 -457
  384. package/src/amf/shape/ShapeXmlSchemaGenerator.ts +0 -933
  385. package/src/events/amf/AmfEventTypes.ts +0 -6
  386. package/src/events/amf/AmfEvents.ts +0 -78
  387. package/src/mocking/RandExp.ts +0 -335
  388. package/src/mocking/lib/ret.ts +0 -279
  389. package/tests/unit/amf/APIC-187.spec.ts +0 -41
  390. package/tests/unit/amf/APIC-188.spec.ts +0 -30
  391. package/tests/unit/amf/APIC-233.spec.ts +0 -32
  392. package/tests/unit/amf/APIC-391.spec.ts +0 -39
  393. package/tests/unit/amf/APIC-487.spec.ts +0 -44
  394. package/tests/unit/amf/APIC-655.spec.ts +0 -41
  395. package/tests/unit/amf/APIC-689.spec.ts +0 -28
  396. package/tests/unit/amf/APIC-690.spec.ts +0 -93
  397. package/tests/unit/amf/AmfLoader.ts +0 -538
  398. package/tests/unit/amf/AmfMixin.spec.ts +0 -1707
  399. package/tests/unit/amf/ApiExampleGenerator.spec.ts +0 -250
  400. package/tests/unit/amf/ApiMonacoSchemaGenerator.spec.ts +0 -183
  401. package/tests/unit/amf/ApiSchemaValues.spec.ts +0 -602
  402. package/tests/unit/amf/Namepsace.spec.ts +0 -494
  403. package/tests/unit/amf/SE-10469.spec.ts +0 -35
  404. package/tests/unit/amf/SE-13092.spec.ts +0 -64
  405. package/tests/unit/amf/SE-22063.spec.ts +0 -45
  406. package/tests/unit/amf/raml-examples.spec.ts +0 -43
  407. package/tests/unit/amf/schema_gen_array.spec.ts +0 -199
  408. package/tests/unit/amf/schema_gen_oas.spec.ts +0 -140
  409. package/tests/unit/amf/schema_gen_object.spec.ts +0 -279
  410. package/tests/unit/amf/schema_gen_scalar.spec.ts +0 -143
  411. package/tests/unit/amf/schema_gen_union.spec.ts +0 -401
  412. package/tests/unit/amf/schema_gen_unknown.spec.ts +0 -42
  413. package/tests/unit/amf/schema_gen_xml.spec.ts +0 -726
  414. package/tests/unit/amf/serializer/APIC-483.spec.ts +0 -36
  415. package/tests/unit/amf/serializer/Anotations.spec.ts +0 -50
  416. package/tests/unit/amf/serializer/Api.spec.ts +0 -210
  417. package/tests/unit/amf/serializer/Documentation.spec.ts +0 -52
  418. package/tests/unit/amf/serializer/Endpoints.spec.ts +0 -172
  419. package/tests/unit/amf/serializer/Operations.spec.ts +0 -330
  420. package/tests/unit/amf/serializer/Parameters.spec.ts +0 -149
  421. package/tests/unit/amf/serializer/PayloadExamples.spec.ts +0 -152
  422. package/tests/unit/amf/serializer/Security.spec.ts +0 -626
  423. package/tests/unit/amf/serializer/Server.spec.ts +0 -78
  424. package/tests/unit/amf/serializer/Shapes.spec.ts +0 -304
  425. package/tests/unit/amf/serializer/SourceMaps.spec.ts +0 -52
  426. package/tests/unit/amf/shapes/ShapeXmlSchemaGenerator.spec.ts +0 -28
  427. package/tests/unit/amf/tracked-to-linked.spec.ts +0 -90
  428. package/tests/unit/amf/xml-data-processing.spec.ts +0 -217
  429. package/tests/unit/events/amf.spec.ts +0 -151
@@ -1,6 +0,0 @@
1
- export const AmfEventTypes = Object.freeze({
2
- processApiLink: 'amfprocessapilink',
3
- processBuffer: 'amfprocessbuffer',
4
- processApiFile: 'amfprocessapifile',
5
- selectApiMainFile: 'amfselectapimainfile',
6
- })
@@ -1,78 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-extraneous-class */
2
- import { IApiParseResult, IAmfServiceProcessingOptions } from '../../amf/Parsing.js'
3
- import { ContextEvent } from '../BaseEvents.js'
4
- import { AmfEventTypes } from './AmfEventTypes.js'
5
-
6
- export class AmfEvents {
7
- /**
8
- * Downloads the file and processes it as a zipped API project.
9
- *
10
- * @param url API remote location.
11
- * @param mainFile API main file. If not set the program will try to find the best match.
12
- * @param md5 When set it will test data integrity with the MD5 hash
13
- * @param packaging Default to `zip`.
14
- * @returns Promise resolved to the AMF json-ld model.
15
- */
16
- static async processApiLink(
17
- url: string,
18
- mainFile?: string,
19
- md5?: string,
20
- packaging?: string,
21
- target: EventTarget = globalThis
22
- ): Promise<IApiParseResult> {
23
- const e = new ContextEvent(AmfEventTypes.processApiLink, {
24
- url,
25
- mainFile,
26
- md5,
27
- packaging,
28
- })
29
- target.dispatchEvent(e)
30
- return e.detail.result as unknown as Promise<IApiParseResult>
31
- }
32
-
33
- /**
34
- * Parses API data to AMF model.
35
- * @param buffer Buffer created from API file.
36
- * @param opts Processing options
37
- * @returns Promise resolved to the AMF json-ld model
38
- */
39
- static async processBuffer(
40
- buffer: Buffer,
41
- opts?: IAmfServiceProcessingOptions,
42
- target: EventTarget = globalThis
43
- ): Promise<IApiParseResult> {
44
- const e = new ContextEvent(AmfEventTypes.processBuffer, {
45
- buffer,
46
- opts,
47
- })
48
- target.dispatchEvent(e)
49
- return e.detail.result as unknown as Promise<IApiParseResult>
50
- }
51
-
52
- /**
53
- * Processes file data.
54
- * If the blob is a type of `application/zip` it processes the file as a
55
- * zip file. Otherwise it processes it as a file.
56
- *
57
- * @param file File to process.
58
- * @returns Promise resolved to the AMF json-ld model
59
- */
60
- static async processApiFile(file: File | Blob, target: EventTarget = globalThis): Promise<IApiParseResult> {
61
- const e = new ContextEvent(AmfEventTypes.processApiFile, {
62
- file,
63
- })
64
- target.dispatchEvent(e)
65
- return e.detail.result as unknown as Promise<IApiParseResult>
66
- }
67
-
68
- /**
69
- * Informs the UI to select a single file from the list of API entry point candidates.
70
- */
71
- static async selectApiMainFile(candidates: string[], target: EventTarget = globalThis): Promise<string | undefined> {
72
- const e = new ContextEvent(AmfEventTypes.selectApiMainFile, {
73
- candidates,
74
- })
75
- target.dispatchEvent(e)
76
- return e.detail.result as Promise<string | undefined>
77
- }
78
- }
@@ -1,335 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /**
3
- * randexp v0.4.6
4
- * Create random strings that match a given regular expression.
5
- *
6
- * Copyright (C) 2017 by fent (https://github.com/fent)
7
- * MIT License
8
- */
9
-
10
- import { ret, Token, types } from './lib/ret.js'
11
-
12
- class DRange {
13
- low: number
14
- high: number
15
- length: number
16
-
17
- constructor(low: number, high: number) {
18
- this.low = low
19
- this.high = high
20
- this.length = 1 + high - low
21
- }
22
-
23
- overlaps(range: DRange): boolean {
24
- return !(this.high < range.low || this.low > range.high)
25
- }
26
-
27
- touches(range: DRange): boolean {
28
- return !(this.high + 1 < range.low || this.low - 1 > range.high)
29
- }
30
-
31
- add(range: DRange): DRange | null {
32
- if (this.touches(range)) {
33
- return new DRange(Math.min(this.low, range.low), Math.max(this.high, range.high))
34
- }
35
- return null
36
- }
37
-
38
- subtract(range: DRange): DRange[] {
39
- if (!this.overlaps(range)) {
40
- return [this.clone()]
41
- }
42
- if (range.low <= this.low && range.high >= this.high) {
43
- return []
44
- }
45
- if (range.low > this.low && range.high < this.high) {
46
- return [new DRange(this.low, range.low - 1), new DRange(range.high + 1, this.high)]
47
- }
48
- if (range.low <= this.low) {
49
- return [new DRange(range.high + 1, this.high)]
50
- }
51
- // if (range.high >= this.high)
52
- return [new DRange(this.low, range.low - 1)]
53
- }
54
-
55
- toString(): string {
56
- return this.low === this.high ? String(this.low) : `${this.low}-${this.high}`
57
- }
58
-
59
- clone(): DRange {
60
- return new DRange(this.low, this.high)
61
- }
62
- }
63
-
64
- class DiscontinuousRange {
65
- ranges: DRange[] = []
66
- length = 0
67
-
68
- constructor(low?: number | DiscontinuousRange, high?: number) {
69
- if (low !== undefined) {
70
- this.add(low, high)
71
- }
72
- }
73
-
74
- private _setLength(): void {
75
- this.length = this.ranges.reduce((sum, range) => sum + range.length, 0)
76
- }
77
-
78
- add(low: number | DiscontinuousRange | DRange, high?: number): this {
79
- const addRange = (range: DRange) => {
80
- const newRanges: DRange[] = []
81
- let i = 0
82
- while (i < this.ranges.length && !range.touches(this.ranges[i])) {
83
- newRanges.push(this.ranges[i].clone())
84
- i++
85
- }
86
- while (i < this.ranges.length && range.touches(this.ranges[i])) {
87
- range = range.add(this.ranges[i]) as DRange
88
- i++
89
- }
90
- newRanges.push(range)
91
- while (i < this.ranges.length) {
92
- newRanges.push(this.ranges[i].clone())
93
- i++
94
- }
95
- this.ranges = newRanges
96
- this._setLength()
97
- }
98
-
99
- if (low instanceof DiscontinuousRange) {
100
- low.ranges.forEach(addRange)
101
- } else if (low instanceof DRange) {
102
- addRange(low)
103
- } else {
104
- if (high === undefined) high = low
105
- addRange(new DRange(low, high))
106
- }
107
- return this
108
- }
109
-
110
- subtract(low: number | DiscontinuousRange | DRange, high?: number): this {
111
- const subtractRange = (range: DRange) => {
112
- const newRanges: DRange[] = []
113
- let i = 0
114
- while (i < this.ranges.length && !range.overlaps(this.ranges[i])) {
115
- newRanges.push(this.ranges[i].clone())
116
- i++
117
- }
118
- while (i < this.ranges.length && range.overlaps(this.ranges[i])) {
119
- newRanges.push(...this.ranges[i].subtract(range))
120
- i++
121
- }
122
- while (i < this.ranges.length) {
123
- newRanges.push(this.ranges[i].clone())
124
- i++
125
- }
126
- this.ranges = newRanges
127
- this._setLength()
128
- }
129
-
130
- if (low instanceof DiscontinuousRange) {
131
- low.ranges.forEach(subtractRange)
132
- } else if (low instanceof DRange) {
133
- subtractRange(low)
134
- } else {
135
- if (high === undefined) high = low
136
- subtractRange(new DRange(low, high))
137
- }
138
- return this
139
- }
140
-
141
- index(i: number): number | null {
142
- let j = 0
143
- while (j < this.ranges.length && this.ranges[j].length <= i) {
144
- i -= this.ranges[j].length
145
- j++
146
- }
147
- if (j >= this.ranges.length) {
148
- return null
149
- }
150
- return this.ranges[j].low + i
151
- }
152
-
153
- toString(): string {
154
- return `[ ${this.ranges.join(', ')} ]`
155
- }
156
-
157
- clone(): DiscontinuousRange {
158
- return new DiscontinuousRange(this)
159
- }
160
- }
161
-
162
- export interface RandExpOptions {
163
- max?: number
164
- defaultRange?: DiscontinuousRange
165
- randInt?: (min: number, max: number) => number
166
- }
167
-
168
- export class RandExp {
169
- max = 10 // Reduced from 100 to 10 for more reasonable string lengths
170
- defaultRange: DiscontinuousRange = new DiscontinuousRange(32, 126)
171
- randInt: (min: number, max: number) => number = (min, max) => {
172
- return min + Math.floor(Math.random() * (max - min + 1))
173
- }
174
-
175
- private tokens: Token
176
- private ignoreCase: boolean
177
- private multiline: boolean
178
-
179
- constructor(regexp: RegExp | string, flags?: string, options?: RandExpOptions) {
180
- this.defaultRange = this.defaultRange.clone()
181
-
182
- // Apply options if provided
183
- if (options) {
184
- if (typeof options.max === 'number') {
185
- this.max = options.max
186
- }
187
- if (options.defaultRange instanceof DiscontinuousRange) {
188
- this.defaultRange = options.defaultRange
189
- }
190
- if (typeof options.randInt === 'function') {
191
- this.randInt = options.randInt
192
- }
193
- }
194
-
195
- if (regexp instanceof RegExp) {
196
- this.ignoreCase = regexp.ignoreCase
197
- this.multiline = regexp.multiline
198
- this._setDefaults(regexp)
199
- regexp = regexp.source
200
- } else if (typeof regexp === 'string') {
201
- this.ignoreCase = flags?.includes('i') ?? false
202
- this.multiline = flags?.includes('m') ?? false
203
- } else {
204
- throw new Error('Expected a regexp or string')
205
- }
206
- this.tokens = ret(regexp)
207
- }
208
-
209
- private _setDefaults(regexp: any): void {
210
- if (typeof regexp.max === 'number') {
211
- this.max = regexp.max
212
- }
213
- if (regexp.defaultRange instanceof DiscontinuousRange) {
214
- this.defaultRange = regexp.defaultRange
215
- }
216
- if (typeof regexp.randInt === 'function') {
217
- this.randInt = regexp.randInt
218
- }
219
- }
220
-
221
- gen(): string {
222
- return this._gen(this.tokens, [])
223
- }
224
-
225
- private _gen(token: Token, groups: (string | null)[]): string {
226
- let stack, str, i, l
227
-
228
- switch (token.type) {
229
- case types.ROOT:
230
- case types.GROUP:
231
- if (token.followedBy || token.notFollowedBy) return ''
232
-
233
- if (token.remember && token.groupNumber === undefined) {
234
- token.groupNumber = groups.push(null) - 1
235
- }
236
-
237
- stack = token.options ? this._choice(token.options) : token.stack
238
- str = ''
239
- for (i = 0, l = stack.length; i < l; i++) {
240
- str += this._gen(stack[i], groups)
241
- }
242
-
243
- if (token.remember) {
244
- groups[token.groupNumber] = str
245
- }
246
- return str
247
-
248
- case types.POSITION:
249
- return ''
250
-
251
- case types.SET: {
252
- const set = this._processSet(token)
253
- if (!set.length) return ''
254
- return String.fromCharCode(this._choice(set) as number)
255
- }
256
- case types.REPETITION: {
257
- const n = this.randInt(token.min, token.max === Infinity ? token.min + this.max : token.max)
258
- str = ''
259
- for (i = 0; i < n; i++) {
260
- str += this._gen(token.value, groups)
261
- }
262
- return str
263
- }
264
- case types.REFERENCE:
265
- return groups[token.value - 1] || ''
266
-
267
- case types.CHAR: {
268
- const code = this.ignoreCase && this._coin() ? RandExp._toCaseInverse(token.value) : token.value
269
- return String.fromCharCode(code)
270
- }
271
- }
272
- return ''
273
- }
274
-
275
- private _processSet(token: Token): DiscontinuousRange {
276
- if (token.type === types.CHAR) {
277
- return new DiscontinuousRange(token.value)
278
- }
279
- if (token.type === types.RANGE) {
280
- return new DiscontinuousRange(token.from, token.to)
281
- }
282
-
283
- const dr = new DiscontinuousRange()
284
- for (const char of token.set) {
285
- const sub = this._processSet(char)
286
- dr.add(sub)
287
- if (this.ignoreCase) {
288
- for (let j = 0; j < sub.length; j++) {
289
- const charCode = sub.index(j) as number
290
- const otherCase = RandExp._toCaseInverse(charCode)
291
- if (charCode !== otherCase) {
292
- dr.add(otherCase)
293
- }
294
- }
295
- }
296
- }
297
-
298
- return token.not ? this.defaultRange.clone().subtract(dr) : dr
299
- }
300
-
301
- private static _toCaseInverse(code: number): number {
302
- if (code >= 97 && code <= 122) return code - 32
303
- if (code >= 65 && code <= 90) return code + 32
304
- return code
305
- }
306
-
307
- private _coin(): boolean {
308
- return this.randInt(0, 1) === 0
309
- }
310
-
311
- private _choice(choices: any[] | DiscontinuousRange): any {
312
- if (choices instanceof DiscontinuousRange) {
313
- return choices.index(this.randInt(0, choices.length - 1))
314
- }
315
- return choices[this.randInt(0, choices.length - 1)]
316
- }
317
-
318
- static randexp(regexp: RegExp | string, flags?: string, options?: RandExpOptions): string {
319
- let randexpInstance
320
- if ((regexp as any)._randexp === undefined) {
321
- randexpInstance = new RandExp(regexp, flags, options)
322
- ;(regexp as any)._randexp = randexpInstance
323
- } else {
324
- randexpInstance = (regexp as any)._randexp
325
- }
326
- randexpInstance._setDefaults(regexp)
327
- return randexpInstance.gen()
328
- }
329
-
330
- static sugar(): void {
331
- ;(RegExp.prototype as any).gen = function () {
332
- return RandExp.randexp(this)
333
- }
334
- }
335
- }
@@ -1,279 +0,0 @@
1
- // Regular Expression Tokenizer
2
- // https://github.com/fent/ret.js
3
-
4
- export enum types {
5
- ROOT = 0,
6
- GROUP = 1,
7
- POSITION = 2,
8
- SET = 3,
9
- RANGE = 4,
10
- REPETITION = 5,
11
- REFERENCE = 6,
12
- CHAR = 7,
13
- }
14
-
15
- export interface Token {
16
- type: types
17
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
- [key: string]: any
19
- }
20
- const wordBoundary = (): Token => ({ type: types.POSITION, value: 'b' })
21
- const nonWordBoundary = (): Token => ({ type: types.POSITION, value: 'B' })
22
- const begin = (): Token => ({ type: types.POSITION, value: '^' })
23
- const end = (): Token => ({ type: types.POSITION, value: '$' })
24
-
25
- const ints = (): Token[] => [{ type: types.RANGE, from: 48, to: 57 }]
26
- const words = (): Token[] => [
27
- { type: types.CHAR, value: 95 },
28
- { type: types.RANGE, from: 97, to: 122 },
29
- { type: types.RANGE, from: 65, to: 90 },
30
- ...ints(),
31
- ]
32
- const whitespace = (): Token[] => [
33
- { type: types.CHAR, value: 9 },
34
- { type: types.CHAR, value: 10 },
35
- { type: types.CHAR, value: 11 },
36
- { type: types.CHAR, value: 12 },
37
- { type: types.CHAR, value: 13 },
38
- { type: types.CHAR, value: 32 },
39
- { type: types.CHAR, value: 160 },
40
- { type: types.CHAR, value: 5760 },
41
- { type: types.CHAR, value: 6158 },
42
- { type: types.CHAR, value: 8192 },
43
- { type: types.CHAR, value: 8193 },
44
- { type: types.CHAR, value: 8194 },
45
- { type: types.CHAR, value: 8195 },
46
- { type: types.CHAR, value: 8196 },
47
- { type: types.CHAR, value: 8197 },
48
- { type: types.CHAR, value: 8198 },
49
- { type: types.CHAR, value: 8199 },
50
- { type: types.CHAR, value: 8200 },
51
- { type: types.CHAR, value: 8201 },
52
- { type: types.CHAR, value: 8202 },
53
- { type: types.CHAR, value: 8232 },
54
- { type: types.CHAR, value: 8233 },
55
- { type: types.CHAR, value: 8239 },
56
- { type: types.CHAR, value: 8287 },
57
- { type: types.CHAR, value: 12288 },
58
- { type: types.CHAR, value: 65279 },
59
- ]
60
- const notanychar = (): Token[] => [
61
- { type: types.CHAR, value: 10 },
62
- { type: types.CHAR, value: 13 },
63
- { type: types.CHAR, value: 8232 },
64
- { type: types.CHAR, value: 8233 },
65
- ]
66
-
67
- const words_ = (): Token => ({ type: types.SET, set: words(), not: false })
68
- const notWords = (): Token => ({ type: types.SET, set: words(), not: true })
69
- const ints_ = (): Token => ({ type: types.SET, set: ints(), not: false })
70
- const notInts = (): Token => ({ type: types.SET, set: ints(), not: true })
71
- const whitespace_ = (): Token => ({ type: types.SET, set: whitespace(), not: false })
72
- const notWhitespace = (): Token => ({ type: types.SET, set: whitespace(), not: true })
73
- const anyChar = (): Token => ({ type: types.SET, set: notanychar(), not: true })
74
-
75
- const specialChars: Record<string, number> = {
76
- '0': 0,
77
- 't': 9,
78
- 'n': 10,
79
- 'v': 11,
80
- 'f': 12,
81
- 'r': 13,
82
- }
83
-
84
- const strToChars = (str: string): string => {
85
- const chars = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z[\\\]^?])|([0tnvfr]))/g
86
- return str.replace(chars, (match, b, s, uh, xh, o, c, sp) => {
87
- if (s) return match
88
- const code = b
89
- ? 8
90
- : uh
91
- ? parseInt(uh, 16)
92
- : xh
93
- ? parseInt(xh, 16)
94
- : o
95
- ? parseInt(o, 8)
96
- : c
97
- ? '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?'.indexOf(c)
98
- : specialChars[sp]
99
- let ch = String.fromCharCode(code)
100
- if (/[[{}^$.|?*+()]/.test(ch)) {
101
- ch = `\\${ch}`
102
- }
103
- return ch
104
- })
105
- }
106
-
107
- const tokenizeClass = (str: string, regexpStr: string): [Token[], number] => {
108
- const tokens: Token[] = []
109
- const classTokens = /\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?(.)/g
110
- let match
111
- let char
112
- while ((match = classTokens.exec(str)) !== null) {
113
- if (match[1]) {
114
- tokens.push(words_())
115
- } else if (match[2]) {
116
- tokens.push(ints_())
117
- } else if (match[3]) {
118
- tokens.push(whitespace_())
119
- } else if (match[4]) {
120
- tokens.push(notWords())
121
- } else if (match[5]) {
122
- tokens.push(notInts())
123
- } else if (match[6]) {
124
- tokens.push(notWhitespace())
125
- } else if (match[7]) {
126
- tokens.push({
127
- type: types.RANGE,
128
- from: (match[8] || match[9]).charCodeAt(0),
129
- to: match[10].charCodeAt(0),
130
- })
131
- } else if ((char = match[12])) {
132
- tokens.push({ type: types.CHAR, value: char.charCodeAt(0) })
133
- } else {
134
- return [tokens, classTokens.lastIndex]
135
- }
136
- }
137
- throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: Unterminated character class`)
138
- }
139
-
140
- const error = (regexpStr: string, msg: string): never => {
141
- throw new SyntaxError(`Invalid regular expression: /${regexpStr}/: ${msg}`)
142
- }
143
-
144
- export const ret = (regexpStr: string): Token => {
145
- let i = 0
146
- const root: Token = { type: types.ROOT, stack: [] }
147
- let p: Token = root
148
- let stack: Token[] = root.stack
149
- const groupStack: Token[] = []
150
-
151
- const repeatErr = (i: number) => error(regexpStr, `Nothing to repeat at column ${i - 1}`)
152
- const chars = strToChars(regexpStr)
153
-
154
- while (i < chars.length) {
155
- let c = chars[i++]
156
- switch (c) {
157
- case '\\':
158
- c = chars[i++]
159
- switch (c) {
160
- case 'b':
161
- stack.push(wordBoundary())
162
- break
163
- case 'B':
164
- stack.push(nonWordBoundary())
165
- break
166
- case 'w':
167
- stack.push(words_())
168
- break
169
- case 'W':
170
- stack.push(notWords())
171
- break
172
- case 'd':
173
- stack.push(ints_())
174
- break
175
- case 'D':
176
- stack.push(notInts())
177
- break
178
- case 's':
179
- stack.push(whitespace_())
180
- break
181
- case 'S':
182
- stack.push(notWhitespace())
183
- break
184
- default:
185
- if (/\d/.test(c)) {
186
- stack.push({ type: types.REFERENCE, value: parseInt(c, 10) })
187
- } else {
188
- stack.push({ type: types.CHAR, value: c.charCodeAt(0) })
189
- }
190
- }
191
- break
192
- case '^':
193
- stack.push(begin())
194
- break
195
- case '$':
196
- stack.push(end())
197
- break
198
- case '[': {
199
- let not = false
200
- if (chars[i] === '^') {
201
- not = true
202
- i++
203
- }
204
- const [set, lastIndex] = tokenizeClass(chars.slice(i), regexpStr)
205
- i += lastIndex
206
- stack.push({ type: types.SET, set, not })
207
- break
208
- }
209
- case '.':
210
- stack.push(anyChar())
211
- break
212
- case '(': {
213
- const group: Token = { type: types.GROUP, stack: [], remember: true }
214
- if (chars[i] === '?') {
215
- c = chars[i + 1]
216
- i += 2
217
- if (c === '=') {
218
- group.followedBy = true
219
- } else if (c === '!') {
220
- group.notFollowedBy = true
221
- } else if (c !== ':') {
222
- error(regexpStr, `Invalid group, character '${c}' after '?' at column ${i - 1}`)
223
- }
224
- group.remember = false
225
- }
226
- stack.push(group)
227
- groupStack.push(p)
228
- p = group
229
- stack = group.stack
230
- break
231
- }
232
- case ')':
233
- if (groupStack.length === 0) error(regexpStr, `Unmatched ) at column ${i - 1}`)
234
- p = groupStack.pop() as Token
235
- stack = p.options ? p.options[p.options.length - 1] : p.stack
236
- break
237
- case '|':
238
- if (!p.options) {
239
- p.options = [p.stack]
240
- delete p.stack
241
- }
242
- {
243
- const newStack: Token[] = []
244
- p.options.push(newStack)
245
- stack = newStack
246
- }
247
- break
248
- case '{': {
249
- const repetition = /^(\d+)(,(\d+)?)?\}/.exec(chars.slice(i))
250
- if (repetition) {
251
- if (stack.length === 0) repeatErr(i)
252
- const min = parseInt(repetition[1], 10)
253
- const max = repetition[2] ? (repetition[3] ? parseInt(repetition[3], 10) : Infinity) : min
254
- i += repetition[0].length
255
- stack.push({ type: types.REPETITION, min, max, value: stack.pop() })
256
- } else {
257
- stack.push({ type: types.CHAR, value: 123 })
258
- }
259
- break
260
- }
261
- case '?':
262
- if (stack.length === 0) repeatErr(i)
263
- stack.push({ type: types.REPETITION, min: 0, max: 1, value: stack.pop() })
264
- break
265
- case '+':
266
- if (stack.length === 0) repeatErr(i)
267
- stack.push({ type: types.REPETITION, min: 1, max: Infinity, value: stack.pop() })
268
- break
269
- case '*':
270
- if (stack.length === 0) repeatErr(i)
271
- stack.push({ type: types.REPETITION, min: 0, max: Infinity, value: stack.pop() })
272
- break
273
- default:
274
- stack.push({ type: types.CHAR, value: c.charCodeAt(0) })
275
- }
276
- }
277
- if (groupStack.length !== 0) error(regexpStr, 'Unterminated group')
278
- return root
279
- }