@api-client/core 0.19.10 → 0.19.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/LICENSE.md +9 -63
  2. package/bin/test.ts +1 -12
  3. package/build/src/browser.d.ts +3 -16
  4. package/build/src/browser.d.ts.map +1 -1
  5. package/build/src/browser.js +2 -17
  6. package/build/src/browser.js.map +1 -1
  7. package/build/src/events/EventTypes.d.ts +0 -6
  8. package/build/src/events/EventTypes.d.ts.map +1 -1
  9. package/build/src/events/EventTypes.js +0 -2
  10. package/build/src/events/EventTypes.js.map +1 -1
  11. package/build/src/events/Events.d.ts +0 -2
  12. package/build/src/events/Events.d.ts.map +1 -1
  13. package/build/src/events/Events.js +0 -2
  14. package/build/src/events/Events.js.map +1 -1
  15. package/build/src/index.d.ts +3 -16
  16. package/build/src/index.d.ts.map +1 -1
  17. package/build/src/index.js +2 -17
  18. package/build/src/index.js.map +1 -1
  19. package/build/src/modeling/ApiValidation.d.ts +26 -0
  20. package/build/src/modeling/ApiValidation.d.ts.map +1 -0
  21. package/build/src/modeling/ApiValidation.js +73 -0
  22. package/build/src/modeling/ApiValidation.js.map +1 -0
  23. package/build/src/modeling/Bindings.d.ts +3 -3
  24. package/build/src/modeling/Bindings.d.ts.map +1 -1
  25. package/build/src/modeling/Bindings.js.map +1 -1
  26. package/build/src/modeling/DomainAssociation.d.ts +5 -5
  27. package/build/src/modeling/DomainAssociation.d.ts.map +1 -1
  28. package/build/src/modeling/DomainAssociation.js.map +1 -1
  29. package/build/src/modeling/DomainEntity.d.ts +2 -3
  30. package/build/src/modeling/DomainEntity.d.ts.map +1 -1
  31. package/build/src/modeling/DomainEntity.js +1 -1
  32. package/build/src/modeling/DomainEntity.js.map +1 -1
  33. package/build/src/modeling/DomainProperty.d.ts +2 -3
  34. package/build/src/modeling/DomainProperty.d.ts.map +1 -1
  35. package/build/src/modeling/DomainProperty.js +1 -1
  36. package/build/src/modeling/DomainProperty.js.map +1 -1
  37. package/build/src/modeling/DomainValidation.d.ts +10 -4
  38. package/build/src/modeling/DomainValidation.d.ts.map +1 -1
  39. package/build/src/modeling/DomainValidation.js +55 -72
  40. package/build/src/modeling/DomainValidation.js.map +1 -1
  41. package/build/src/modeling/ai/types.d.ts +2 -2
  42. package/build/src/modeling/ai/types.d.ts.map +1 -1
  43. package/build/src/modeling/ai/types.js.map +1 -1
  44. package/build/src/{amf → modeling/amf}/DataValueGenerator.d.ts +1 -1
  45. package/build/src/modeling/amf/DataValueGenerator.d.ts.map +1 -0
  46. package/build/src/{amf → modeling/amf}/DataValueGenerator.js +2 -3
  47. package/build/src/modeling/amf/DataValueGenerator.js.map +1 -0
  48. package/build/src/modeling/amf/ShapeGenerator.d.ts +20 -20
  49. package/build/src/modeling/amf/ShapeGenerator.d.ts.map +1 -1
  50. package/build/src/modeling/amf/ShapeGenerator.js +16 -18
  51. package/build/src/modeling/amf/ShapeGenerator.js.map +1 -1
  52. package/build/src/modeling/amf/core_types.d.ts +9 -0
  53. package/build/src/modeling/amf/core_types.d.ts.map +1 -0
  54. package/build/src/modeling/amf/core_types.js +45 -0
  55. package/build/src/modeling/amf/core_types.js.map +1 -0
  56. package/build/src/modeling/validation/api_model_rules.d.ts +1 -2
  57. package/build/src/modeling/validation/api_model_rules.d.ts.map +1 -1
  58. package/build/src/modeling/validation/api_model_rules.js +0 -26
  59. package/build/src/modeling/validation/api_model_rules.js.map +1 -1
  60. package/build/src/modeling/validation/association_validation.d.ts +4 -4
  61. package/build/src/modeling/validation/association_validation.d.ts.map +1 -1
  62. package/build/src/modeling/validation/association_validation.js.map +1 -1
  63. package/build/src/modeling/validation/entity_validation.d.ts +6 -6
  64. package/build/src/modeling/validation/entity_validation.d.ts.map +1 -1
  65. package/build/src/modeling/validation/entity_validation.js.map +1 -1
  66. package/build/src/modeling/validation/property_validation.d.ts +3 -3
  67. package/build/src/modeling/validation/property_validation.d.ts.map +1 -1
  68. package/build/src/modeling/validation/property_validation.js.map +1 -1
  69. package/build/src/modeling/validation/rules.d.ts +2 -2
  70. package/build/src/modeling/validation/rules.d.ts.map +1 -1
  71. package/build/src/modeling/validation/rules.js.map +1 -1
  72. package/build/src/modeling/validation/semantic_validation.d.ts +2 -2
  73. package/build/src/modeling/validation/semantic_validation.d.ts.map +1 -1
  74. package/build/src/modeling/validation/semantic_validation.js.map +1 -1
  75. package/build/src/models/http-flows/LegacyTranslator.js +1 -1
  76. package/build/src/models/http-flows/LegacyTranslator.js.map +1 -1
  77. package/build/src/runtime/http-runner/HttpFlows.js +1 -1
  78. package/build/src/runtime/http-runner/HttpFlows.js.map +1 -1
  79. package/build/tsconfig.tsbuildinfo +1 -1
  80. package/eslint.config.js +0 -1
  81. package/package.json +11 -14
  82. package/src/events/EventTypes.ts +0 -2
  83. package/src/events/Events.ts +0 -2
  84. package/src/modeling/ApiValidation.ts +86 -0
  85. package/src/modeling/Bindings.ts +3 -3
  86. package/src/modeling/DomainAssociation.ts +5 -5
  87. package/src/modeling/DomainEntity.ts +3 -4
  88. package/src/modeling/DomainProperty.ts +3 -4
  89. package/src/modeling/DomainValidation.ts +57 -74
  90. package/src/modeling/ai/types.ts +2 -2
  91. package/src/{amf → modeling/amf}/DataValueGenerator.ts +3 -4
  92. package/src/modeling/amf/ShapeGenerator.ts +45 -61
  93. package/src/modeling/amf/core_types.ts +47 -0
  94. package/src/modeling/validation/api_model_rules.ts +1 -31
  95. package/src/modeling/validation/association_validation.ts +6 -6
  96. package/src/modeling/validation/entity_validation.ts +11 -11
  97. package/src/modeling/validation/property_validation.ts +4 -4
  98. package/src/modeling/validation/rules.ts +6 -3
  99. package/src/modeling/validation/semantic_validation.ts +11 -11
  100. package/src/models/http-flows/LegacyTranslator.ts +1 -1
  101. package/src/runtime/http-runner/HttpFlows.ts +1 -1
  102. package/tests/unit/{amf → modeling/amf}/data_value_generator.spec.ts +2 -2
  103. package/tests/unit/modeling/amf/shape_generator.spec.ts +146 -167
  104. package/tests/unit/modeling/domain_asociation.spec.ts +13 -13
  105. package/tests/unit/modeling/domain_validation.spec.ts +7 -13
  106. package/tests/unit/modeling/validation/api_model_rules.spec.ts +11 -9
  107. package/tests/unit/runtime/runners/http_assertion_runner.spec.ts +1 -1
  108. package/tests/unit/runtime/runners/http_flow_runner.spec.ts +1 -1
  109. package/tests/unit/runtime/runners/project_runner.spec.ts +1 -1
  110. package/tests/unit/runtime/runners/request_runner.spec.ts +1 -1
  111. package/tests/unit/runtime/runners/serial_runner.spec.ts +1 -1
  112. package/build/src/amf/AmfMixin.d.ts +0 -396
  113. package/build/src/amf/AmfMixin.d.ts.map +0 -1
  114. package/build/src/amf/AmfMixin.js +0 -1138
  115. package/build/src/amf/AmfMixin.js.map +0 -1
  116. package/build/src/amf/AmfSerializer.d.ts +0 -137
  117. package/build/src/amf/AmfSerializer.d.ts.map +0 -1
  118. package/build/src/amf/AmfSerializer.js +0 -1947
  119. package/build/src/amf/AmfSerializer.js.map +0 -1
  120. package/build/src/amf/AmfTypes.d.ts +0 -25
  121. package/build/src/amf/AmfTypes.d.ts.map +0 -1
  122. package/build/src/amf/AmfTypes.js +0 -143
  123. package/build/src/amf/AmfTypes.js.map +0 -1
  124. package/build/src/amf/ApiExampleGenerator.d.ts +0 -40
  125. package/build/src/amf/ApiExampleGenerator.d.ts.map +0 -1
  126. package/build/src/amf/ApiExampleGenerator.js +0 -112
  127. package/build/src/amf/ApiExampleGenerator.js.map +0 -1
  128. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts +0 -68
  129. package/build/src/amf/ApiMonacoSchemaGenerator.d.ts.map +0 -1
  130. package/build/src/amf/ApiMonacoSchemaGenerator.js +0 -248
  131. package/build/src/amf/ApiMonacoSchemaGenerator.js.map +0 -1
  132. package/build/src/amf/ApiSchemaGenerator.d.ts +0 -56
  133. package/build/src/amf/ApiSchemaGenerator.d.ts.map +0 -1
  134. package/build/src/amf/ApiSchemaGenerator.js +0 -94
  135. package/build/src/amf/ApiSchemaGenerator.js.map +0 -1
  136. package/build/src/amf/ApiSchemaValues.d.ts +0 -111
  137. package/build/src/amf/ApiSchemaValues.d.ts.map +0 -1
  138. package/build/src/amf/ApiSchemaValues.js +0 -463
  139. package/build/src/amf/ApiSchemaValues.js.map +0 -1
  140. package/build/src/amf/DataValueGenerator.d.ts.map +0 -1
  141. package/build/src/amf/DataValueGenerator.js.map +0 -1
  142. package/build/src/amf/Parsing.d.ts +0 -48
  143. package/build/src/amf/Parsing.d.ts.map +0 -1
  144. package/build/src/amf/Parsing.js +0 -2
  145. package/build/src/amf/Parsing.js.map +0 -1
  146. package/build/src/amf/Utils.d.ts +0 -37
  147. package/build/src/amf/Utils.d.ts.map +0 -1
  148. package/build/src/amf/Utils.js +0 -169
  149. package/build/src/amf/Utils.js.map +0 -1
  150. package/build/src/amf/data-node/DataNodeBase.d.ts +0 -34
  151. package/build/src/amf/data-node/DataNodeBase.d.ts.map +0 -1
  152. package/build/src/amf/data-node/DataNodeBase.js +0 -77
  153. package/build/src/amf/data-node/DataNodeBase.js.map +0 -1
  154. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts +0 -15
  155. package/build/src/amf/data-node/JsonDataNodeGenerator.d.ts.map +0 -1
  156. package/build/src/amf/data-node/JsonDataNodeGenerator.js +0 -23
  157. package/build/src/amf/data-node/JsonDataNodeGenerator.js.map +0 -1
  158. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts +0 -14
  159. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.d.ts.map +0 -1
  160. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js +0 -48
  161. package/build/src/amf/data-node/UrlEncodedDataNodeGenerator.js.map +0 -1
  162. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts +0 -22
  163. package/build/src/amf/data-node/XmlDataNodeGenerator.d.ts.map +0 -1
  164. package/build/src/amf/data-node/XmlDataNodeGenerator.js +0 -34
  165. package/build/src/amf/data-node/XmlDataNodeGenerator.js.map +0 -1
  166. package/build/src/amf/definitions/Amf.d.ts +0 -363
  167. package/build/src/amf/definitions/Amf.d.ts.map +0 -1
  168. package/build/src/amf/definitions/Amf.js +0 -3
  169. package/build/src/amf/definitions/Amf.js.map +0 -1
  170. package/build/src/amf/definitions/Api.d.ts +0 -383
  171. package/build/src/amf/definitions/Api.d.ts.map +0 -1
  172. package/build/src/amf/definitions/Api.js +0 -2
  173. package/build/src/amf/definitions/Api.js.map +0 -1
  174. package/build/src/amf/definitions/Base.d.ts +0 -12
  175. package/build/src/amf/definitions/Base.d.ts.map +0 -1
  176. package/build/src/amf/definitions/Base.js +0 -2
  177. package/build/src/amf/definitions/Base.js.map +0 -1
  178. package/build/src/amf/definitions/Namespace.d.ts +0 -327
  179. package/build/src/amf/definitions/Namespace.d.ts.map +0 -1
  180. package/build/src/amf/definitions/Namespace.js +0 -346
  181. package/build/src/amf/definitions/Namespace.js.map +0 -1
  182. package/build/src/amf/definitions/Shapes.d.ts +0 -312
  183. package/build/src/amf/definitions/Shapes.d.ts.map +0 -1
  184. package/build/src/amf/definitions/Shapes.js +0 -87
  185. package/build/src/amf/definitions/Shapes.js.map +0 -1
  186. package/build/src/amf/models/AmfDataNode.d.ts +0 -67
  187. package/build/src/amf/models/AmfDataNode.d.ts.map +0 -1
  188. package/build/src/amf/models/AmfDataNode.js +0 -192
  189. package/build/src/amf/models/AmfDataNode.js.map +0 -1
  190. package/build/src/amf/shape/ShapeBase.d.ts +0 -74
  191. package/build/src/amf/shape/ShapeBase.d.ts.map +0 -1
  192. package/build/src/amf/shape/ShapeBase.js +0 -93
  193. package/build/src/amf/shape/ShapeBase.js.map +0 -1
  194. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts +0 -47
  195. package/build/src/amf/shape/ShapeJsonSchemaGenerator.d.ts.map +0 -1
  196. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js +0 -420
  197. package/build/src/amf/shape/ShapeJsonSchemaGenerator.js.map +0 -1
  198. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts +0 -85
  199. package/build/src/amf/shape/ShapeXmlSchemaGenerator.d.ts.map +0 -1
  200. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js +0 -852
  201. package/build/src/amf/shape/ShapeXmlSchemaGenerator.js.map +0 -1
  202. package/build/src/events/amf/AmfEventTypes.d.ts +0 -7
  203. package/build/src/events/amf/AmfEventTypes.d.ts.map +0 -1
  204. package/build/src/events/amf/AmfEventTypes.js +0 -7
  205. package/build/src/events/amf/AmfEventTypes.js.map +0 -1
  206. package/build/src/events/amf/AmfEvents.d.ts +0 -34
  207. package/build/src/events/amf/AmfEvents.d.ts.map +0 -1
  208. package/build/src/events/amf/AmfEvents.js +0 -63
  209. package/build/src/events/amf/AmfEvents.js.map +0 -1
  210. package/build/src/mocking/RandExp.d.ts +0 -55
  211. package/build/src/mocking/RandExp.d.ts.map +0 -1
  212. package/build/src/mocking/RandExp.js +0 -302
  213. package/build/src/mocking/RandExp.js.map +0 -1
  214. package/build/src/mocking/lib/ret.d.ts +0 -16
  215. package/build/src/mocking/lib/ret.d.ts.map +0 -1
  216. package/build/src/mocking/lib/ret.js +0 -284
  217. package/build/src/mocking/lib/ret.js.map +0 -1
  218. package/data/apis/APIC-187/APIC-187.raml +0 -21
  219. package/data/apis/APIC-187/dataType.raml +0 -132
  220. package/data/apis/APIC-187/example.raml +0 -84
  221. package/data/apis/APIC-188/APIC-188.raml +0 -21
  222. package/data/apis/APIC-188/dataType.raml +0 -132
  223. package/data/apis/APIC-188/example.raml +0 -84
  224. package/data/apis/APIC-233/APIC-233.raml +0 -15
  225. package/data/apis/APIC-391/APIC-391.raml +0 -44
  226. package/data/apis/APIC-391/examples/post-body-request-example.raml +0 -7
  227. package/data/apis/APIC-483/APIC-483.raml +0 -16
  228. package/data/apis/APIC-483/example/list-of-bank-succ.json +0 -32
  229. package/data/apis/APIC-483/schema/response-retrieve-list-bank.json +0 -68
  230. package/data/apis/APIC-487/APIC-487.raml +0 -36
  231. package/data/apis/APIC-655/APIC-655.raml +0 -44
  232. package/data/apis/APIC-655/delivery.json +0 -12
  233. package/data/apis/APIC-689/APIC-689.raml +0 -20
  234. package/data/apis/APIC-690/APIC-690.raml +0 -17
  235. package/data/apis/APIC-690/datatypes/Address.raml +0 -10
  236. package/data/apis/APIC-690/datatypes/Customer.raml +0 -17
  237. package/data/apis/APIC-690/examples/CustomerExample2.raml +0 -17
  238. package/data/apis/APIC-690/examples/CustomersExample.raml +0 -34
  239. package/data/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json +0 -1383
  240. package/data/apis/SE-10469/SE-10469.raml +0 -11
  241. package/data/apis/SE-13092/Examples/PersonExample.raml +0 -7
  242. package/data/apis/SE-13092/SE-13092.raml +0 -37
  243. package/data/apis/SE-13092/datatypes/Address.raml +0 -5
  244. package/data/apis/SE-13092/datatypes/InlineType.raml +0 -5
  245. package/data/apis/SE-13092/datatypes/Person.raml +0 -15
  246. package/data/apis/SE-22063/SE-22063.raml +0 -14
  247. package/data/apis/SE-22063/stock.raml +0 -41
  248. package/data/apis/amf-helper-api/amf-helper-api.raml +0 -1024
  249. package/data/apis/amf-helper-api/examples/comment-example.json +0 -42
  250. package/data/apis/amf-helper-api/examples/commentCreateRequest-example.json +0 -7
  251. package/data/apis/amf-helper-api/examples/commentList-example.json +0 -48
  252. package/data/apis/amf-helper-api/examples/person.json +0 -14
  253. package/data/apis/amf-helper-api/examples/person.raml +0 -13
  254. package/data/apis/amf-helper-api/examples/person.xml +0 -14
  255. package/data/apis/amf-helper-api/libraries/comment-lib.raml +0 -143
  256. package/data/apis/amf-helper-api/library.raml +0 -7
  257. package/data/apis/amf-helper-api/schemas/person.json +0 -104
  258. package/data/apis/amf-helper-api/schemas/person.xsd +0 -26
  259. package/data/apis/amf-helper-api/traits/file.raml +0 -33
  260. package/data/apis/amf-helper-api/traits/pagination.raml +0 -80
  261. package/data/apis/amf-helper-api/traits/results.raml +0 -19
  262. package/data/apis/amf-helper-api/traits/visibility.raml +0 -14
  263. package/data/apis/amf-helper-api/types/app-person.raml +0 -101
  264. package/data/apis/amf-helper-api/types/dimensions.raml +0 -24
  265. package/data/apis/amf-helper-api/types/external-type.raml +0 -7
  266. package/data/apis/amf-helper-api/types/image.raml +0 -23
  267. package/data/apis/amf-helper-api/types/product.raml +0 -52
  268. package/data/apis/amf-helper-api/types/resource.raml +0 -11
  269. package/data/apis/amf-helper-api/types/standard-request.raml +0 -50
  270. package/data/apis/amf-helper-api/types/user.raml +0 -37
  271. package/data/apis/arc-demo-api/arc-demo-api.raml +0 -468
  272. package/data/apis/arc-demo-api/examples/e400.xml +0 -4
  273. package/data/apis/arc-demo-api/examples/e401.xml +0 -4
  274. package/data/apis/arc-demo-api/examples/e404.xml +0 -4
  275. package/data/apis/arc-demo-api/examples/image.xml +0 -5
  276. package/data/apis/arc-demo-api/examples/messages-example.json +0 -22
  277. package/data/apis/arc-demo-api/examples/messages-sent-example.json +0 -15
  278. package/data/apis/arc-demo-api/examples/person.json +0 -14
  279. package/data/apis/arc-demo-api/examples/person.url.encoded +0 -1
  280. package/data/apis/arc-demo-api/examples/person.xml +0 -14
  281. package/data/apis/arc-demo-api/examples/product.xml +0 -9
  282. package/data/apis/arc-demo-api/library.raml +0 -36
  283. package/data/apis/arc-demo-api/resourceTypes/app-person.raml +0 -49
  284. package/data/apis/arc-demo-api/resourceTypes/example-types.raml +0 -45
  285. package/data/apis/arc-demo-api/resourceTypes/image.raml +0 -23
  286. package/data/apis/arc-demo-api/resourceTypes/message-sent-type.raml +0 -23
  287. package/data/apis/arc-demo-api/resourceTypes/message-type.raml +0 -33
  288. package/data/apis/arc-demo-api/resourceTypes/product.raml +0 -52
  289. package/data/apis/arc-demo-api/resourceTypes/resource.raml +0 -11
  290. package/data/apis/arc-demo-api/schemas/error-response.xsd +0 -11
  291. package/data/apis/arc-demo-api/schemas/image.xsd +0 -11
  292. package/data/apis/arc-demo-api/schemas/person.json +0 -104
  293. package/data/apis/arc-demo-api/schemas/person.xsd +0 -26
  294. package/data/apis/arc-demo-api/schemas/product.xsd +0 -17
  295. package/data/apis/arc-demo-api/securitySchemes/basic.raml +0 -5
  296. package/data/apis/arc-demo-api/securitySchemes/oauth_2_0.raml +0 -29
  297. package/data/apis/arc-demo-api/securitySchemes/x-custom.raml +0 -26
  298. package/data/apis/arc-demo-api/traits/adminable.raml +0 -23
  299. package/data/apis/arc-demo-api/traits/pagination.raml +0 -83
  300. package/data/apis/arc-demo-api/traits/rate-limited.raml +0 -9
  301. package/data/apis/async-api/async-api.yaml +0 -96
  302. package/data/apis/example-generator-api/contact-email-example.raml +0 -6
  303. package/data/apis/example-generator-api/contact-example.raml +0 -5
  304. package/data/apis/example-generator-api/contact-fax-example.raml +0 -5
  305. package/data/apis/example-generator-api/contact-website-example.raml +0 -2
  306. package/data/apis/example-generator-api/example-1.raml +0 -6
  307. package/data/apis/example-generator-api/example-2.raml +0 -9
  308. package/data/apis/example-generator-api/example-3.raml +0 -4
  309. package/data/apis/example-generator-api/example-4.raml +0 -2
  310. package/data/apis/example-generator-api/example-5.raml +0 -4
  311. package/data/apis/example-generator-api/example-6.raml +0 -2
  312. package/data/apis/example-generator-api/example-7.raml +0 -5
  313. package/data/apis/example-generator-api/example-generator-api.raml +0 -423
  314. package/data/apis/example-generator-api/example.json +0 -14
  315. package/data/apis/example-generator-api/example.xml +0 -15
  316. package/data/apis/example-generator-api/example.xsd +0 -26
  317. package/data/apis/example-generator-api/examples/employee.raml +0 -7
  318. package/data/apis/example-generator-api/examples/employees.raml +0 -7
  319. package/data/apis/example-generator-api/linked-named-example.raml +0 -21
  320. package/data/apis/example-generator-api/named-example-with-link.raml +0 -5
  321. package/data/apis/example-generator-api/named-example.raml +0 -9
  322. package/data/apis/example-generator-api/user-json-example.raml +0 -17
  323. package/data/apis/example-generator-api/user-raml-example.raml +0 -37
  324. package/data/apis/example-generator-api/user.json +0 -8
  325. package/data/apis/example-generator-api/user.raml +0 -18
  326. package/data/apis/example-generator-api/users-json-example.raml +0 -17
  327. package/data/apis/example-generator-api/users-raml-example.raml +0 -32
  328. package/data/apis/example-generator-api/users.json +0 -8
  329. package/data/apis/expanded-api/expanded-api.raml +0 -8
  330. package/data/apis/flattened-api/flattened-api.raml +0 -8
  331. package/data/apis/multiple-servers/multiple-servers.yaml +0 -112
  332. package/data/apis/oas-3-api/oas-3-api.yaml +0 -356
  333. package/data/apis/oas-date/oas-date.yaml +0 -28
  334. package/data/apis/oas-types/oas-types.yaml +0 -159
  335. package/data/apis/oas-unions/oas-unions.yaml +0 -75
  336. package/data/apis/petstore/petstore.yaml +0 -954
  337. package/data/apis/raml-date/raml-date.raml +0 -28
  338. package/data/apis/recursive/recursive.raml +0 -14
  339. package/data/apis/schema-api/examples/person.json +0 -14
  340. package/data/apis/schema-api/examples/person.raml +0 -14
  341. package/data/apis/schema-api/examples/person.url.encoded +0 -1
  342. package/data/apis/schema-api/examples/person.xml +0 -14
  343. package/data/apis/schema-api/library/demo-types.raml +0 -43
  344. package/data/apis/schema-api/schema-api.raml +0 -656
  345. package/data/apis/schema-api/schemas/person.json +0 -104
  346. package/data/apis/schema-api/schemas/person.xsd +0 -26
  347. package/data/apis/schema-api/types/DemoPerson.raml +0 -67
  348. package/data/apis/secured-api/oauth-2-custom-settings.raml +0 -143
  349. package/data/apis/secured-api/oauth2-header-delivery.raml +0 -13
  350. package/data/apis/secured-api/oauth2-no-delivery.raml +0 -8
  351. package/data/apis/secured-api/oauth2-no-grants.raml +0 -12
  352. package/data/apis/secured-api/oauth2-pkce.raml +0 -13
  353. package/data/apis/secured-api/oauth2-query-delivery.raml +0 -13
  354. package/data/apis/secured-api/oauth_1_0.raml +0 -8
  355. package/data/apis/secured-api/oauth_1_0_no-settings.raml +0 -3
  356. package/data/apis/secured-api/oauth_1_0_no-signature.raml +0 -7
  357. package/data/apis/secured-api/oauth_1_0_signature.raml +0 -8
  358. package/data/apis/secured-api/passthrough-querystring.raml +0 -16
  359. package/data/apis/secured-api/passthrough.raml +0 -24
  360. package/data/apis/secured-api/secured-api.raml +0 -231
  361. package/data/apis/secured-api/x-custom.raml +0 -33
  362. package/data/apis/secured-api/x-other.raml +0 -29
  363. package/data/apis/secured-api/x-query-string.raml +0 -16
  364. package/data/apis/tracked-examples/datatypes/employee.raml +0 -5
  365. package/data/apis/tracked-examples/examples/employee.raml +0 -4
  366. package/data/apis/tracked-examples/examples/employees.raml +0 -8
  367. package/data/apis/tracked-examples/tracked-to-linked.raml +0 -28
  368. package/data/model.js +0 -129
  369. package/data/models/APIC-187.json +0 -11416
  370. package/data/models/APIC-188.json +0 -11416
  371. package/data/models/APIC-233.json +0 -539
  372. package/data/models/APIC-391.json +0 -1903
  373. package/data/models/APIC-483.json +0 -3110
  374. package/data/models/APIC-487.json +0 -1225
  375. package/data/models/APIC-655.json +0 -3145
  376. package/data/models/APIC-689.json +0 -797
  377. package/data/models/APIC-690.json +0 -5992
  378. package/data/models/SE-10469.json +0 -22898
  379. package/data/models/SE-13092.json +0 -2769
  380. package/data/models/SE-22063.json +0 -2314
  381. package/data/models/amf-helper-api.json +0 -84457
  382. package/data/models/arc-demo-api.json +0 -52041
  383. package/data/models/async-api.json +0 -3227
  384. package/data/models/example-generator-api.json +0 -45209
  385. package/data/models/expanded-api.json +0 -251
  386. package/data/models/flattened-api.json +0 -251
  387. package/data/models/multiple-servers.json +0 -2769
  388. package/data/models/oas-3-api.json +0 -10590
  389. package/data/models/oas-date.json +0 -637
  390. package/data/models/oas-types.json +0 -5352
  391. package/data/models/oas-unions.json +0 -1935
  392. package/data/models/petstore.json +0 -27712
  393. package/data/models/raml-date.json +0 -1114
  394. package/data/models/recursive.json +0 -610
  395. package/data/models/schema-api.json +0 -35527
  396. package/data/models/secured-api.json +0 -21071
  397. package/data/models/tracked-to-linked.json +0 -1914
  398. package/src/amf/AmfMixin.ts +0 -1726
  399. package/src/amf/AmfSerializer.ts +0 -2358
  400. package/src/amf/AmfTypes.ts +0 -147
  401. package/src/amf/ApiExampleGenerator.ts +0 -122
  402. package/src/amf/ApiMonacoSchemaGenerator.ts +0 -332
  403. package/src/amf/ApiSchemaGenerator.ts +0 -115
  404. package/src/amf/ApiSchemaValues.ts +0 -509
  405. package/src/amf/Parsing.ts +0 -50
  406. package/src/amf/Utils.ts +0 -172
  407. package/src/amf/data-node/DataNodeBase.ts +0 -83
  408. package/src/amf/data-node/JsonDataNodeGenerator.ts +0 -24
  409. package/src/amf/data-node/README.md +0 -3
  410. package/src/amf/data-node/UrlEncodedDataNodeGenerator.ts +0 -49
  411. package/src/amf/data-node/XmlDataNodeGenerator.ts +0 -46
  412. package/src/amf/definitions/Amf.ts +0 -440
  413. package/src/amf/definitions/Api.ts +0 -445
  414. package/src/amf/definitions/Base.ts +0 -13
  415. package/src/amf/definitions/Namespace.ts +0 -357
  416. package/src/amf/definitions/Shapes.ts +0 -438
  417. package/src/amf/models/AmfDataNode.ts +0 -210
  418. package/src/amf/shape/README.md +0 -4
  419. package/src/amf/shape/ShapeBase.ts +0 -174
  420. package/src/amf/shape/ShapeJsonSchemaGenerator.ts +0 -457
  421. package/src/amf/shape/ShapeXmlSchemaGenerator.ts +0 -933
  422. package/src/events/amf/AmfEventTypes.ts +0 -6
  423. package/src/events/amf/AmfEvents.ts +0 -78
  424. package/src/mocking/RandExp.ts +0 -335
  425. package/src/mocking/lib/ret.ts +0 -279
  426. package/tests/unit/amf/APIC-187.spec.ts +0 -41
  427. package/tests/unit/amf/APIC-188.spec.ts +0 -30
  428. package/tests/unit/amf/APIC-233.spec.ts +0 -32
  429. package/tests/unit/amf/APIC-391.spec.ts +0 -39
  430. package/tests/unit/amf/APIC-487.spec.ts +0 -44
  431. package/tests/unit/amf/APIC-655.spec.ts +0 -41
  432. package/tests/unit/amf/APIC-689.spec.ts +0 -28
  433. package/tests/unit/amf/APIC-690.spec.ts +0 -93
  434. package/tests/unit/amf/AmfLoader.ts +0 -538
  435. package/tests/unit/amf/AmfMixin.spec.ts +0 -1707
  436. package/tests/unit/amf/ApiExampleGenerator.spec.ts +0 -250
  437. package/tests/unit/amf/ApiMonacoSchemaGenerator.spec.ts +0 -183
  438. package/tests/unit/amf/ApiSchemaValues.spec.ts +0 -602
  439. package/tests/unit/amf/Namepsace.spec.ts +0 -494
  440. package/tests/unit/amf/SE-10469.spec.ts +0 -35
  441. package/tests/unit/amf/SE-13092.spec.ts +0 -64
  442. package/tests/unit/amf/SE-22063.spec.ts +0 -45
  443. package/tests/unit/amf/raml-examples.spec.ts +0 -43
  444. package/tests/unit/amf/schema_gen_array.spec.ts +0 -199
  445. package/tests/unit/amf/schema_gen_oas.spec.ts +0 -140
  446. package/tests/unit/amf/schema_gen_object.spec.ts +0 -279
  447. package/tests/unit/amf/schema_gen_scalar.spec.ts +0 -143
  448. package/tests/unit/amf/schema_gen_union.spec.ts +0 -401
  449. package/tests/unit/amf/schema_gen_unknown.spec.ts +0 -42
  450. package/tests/unit/amf/schema_gen_xml.spec.ts +0 -726
  451. package/tests/unit/amf/serializer/APIC-483.spec.ts +0 -36
  452. package/tests/unit/amf/serializer/Anotations.spec.ts +0 -50
  453. package/tests/unit/amf/serializer/Api.spec.ts +0 -210
  454. package/tests/unit/amf/serializer/Documentation.spec.ts +0 -52
  455. package/tests/unit/amf/serializer/Endpoints.spec.ts +0 -172
  456. package/tests/unit/amf/serializer/Operations.spec.ts +0 -330
  457. package/tests/unit/amf/serializer/Parameters.spec.ts +0 -149
  458. package/tests/unit/amf/serializer/PayloadExamples.spec.ts +0 -152
  459. package/tests/unit/amf/serializer/Security.spec.ts +0 -626
  460. package/tests/unit/amf/serializer/Server.spec.ts +0 -78
  461. package/tests/unit/amf/serializer/Shapes.spec.ts +0 -304
  462. package/tests/unit/amf/serializer/SourceMaps.spec.ts +0 -52
  463. package/tests/unit/amf/shapes/ShapeXmlSchemaGenerator.spec.ts +0 -28
  464. package/tests/unit/amf/tracked-to-linked.spec.ts +0 -90
  465. package/tests/unit/amf/xml-data-processing.spec.ts +0 -217
  466. package/tests/unit/events/amf.spec.ts +0 -151
@@ -1,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
- }