@noodleseed/one 0.93.0 → 0.94.0

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 (439) hide show
  1. package/dist/bin.js +0 -0
  2. package/dist/deploy.js +1 -1
  3. package/dist/deploy.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/platform-support.js +2 -2
  9. package/dist/platform-support.js.map +1 -1
  10. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
  11. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +8 -0
  12. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  13. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +3 -3
  14. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  15. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  16. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +9 -0
  17. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  18. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts.map +1 -1
  19. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +8 -0
  20. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
  21. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts.map +1 -1
  22. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js +24 -1
  23. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js.map +1 -1
  24. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js +30 -22
  25. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js.map +1 -1
  26. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts.map +1 -1
  27. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +15 -0
  28. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js.map +1 -1
  29. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.d.ts +13 -0
  30. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.d.ts.map +1 -0
  31. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.js +13 -0
  32. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.js.map +1 -0
  33. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.d.ts +2 -0
  34. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.d.ts.map +1 -0
  35. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js +171 -0
  36. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js.map +1 -0
  37. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  38. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +3 -97
  39. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  40. package/node_modules/@noodle-borg/auth/dist/claims.d.ts +2 -0
  41. package/node_modules/@noodle-borg/auth/dist/claims.d.ts.map +1 -1
  42. package/node_modules/@noodle-borg/auth/dist/claims.js +15 -0
  43. package/node_modules/@noodle-borg/auth/dist/claims.js.map +1 -1
  44. package/node_modules/@noodle-borg/auth/dist/index.d.ts +2 -2
  45. package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -1
  46. package/node_modules/@noodle-borg/auth/dist/index.js +1 -1
  47. package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -1
  48. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +10 -1
  49. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
  50. package/node_modules/@noodle-borg/auth/dist/verify.js +9 -2
  51. package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
  52. package/node_modules/@noodle-borg/authoring/dist/connectors.d.ts +2 -2
  53. package/node_modules/@noodle-borg/authoring/dist/connectors.d.ts.map +1 -1
  54. package/node_modules/@noodle-borg/authoring/dist/connectors.js +4 -1
  55. package/node_modules/@noodle-borg/authoring/dist/connectors.js.map +1 -1
  56. package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts +13 -0
  57. package/node_modules/@noodle-borg/authoring/dist/customer-auth.d.ts.map +1 -1
  58. package/node_modules/@noodle-borg/authoring/dist/customer-auth.js +31 -2
  59. package/node_modules/@noodle-borg/authoring/dist/customer-auth.js.map +1 -1
  60. package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.d.ts +10 -0
  61. package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.d.ts.map +1 -0
  62. package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.js +18 -0
  63. package/node_modules/@noodle-borg/authoring/dist/customer-endpoint.js.map +1 -0
  64. package/node_modules/@noodle-borg/authoring/dist/index.d.ts +2 -1
  65. package/node_modules/@noodle-borg/authoring/dist/index.d.ts.map +1 -1
  66. package/node_modules/@noodle-borg/authoring/dist/index.js +1 -0
  67. package/node_modules/@noodle-borg/authoring/dist/index.js.map +1 -1
  68. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +1 -1
  69. package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
  70. package/node_modules/@noodle-borg/authoring/dist/server.js +1 -13
  71. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  72. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.d.ts +27 -0
  73. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.d.ts.map +1 -0
  74. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js +73 -0
  75. package/node_modules/@noodle-borg/compiler/dist/artifact/assemble.js.map +1 -0
  76. package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts +50 -0
  77. package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.d.ts.map +1 -0
  78. package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.js +119 -0
  79. package/node_modules/@noodle-borg/compiler/dist/artifact/catalog-emission.js.map +1 -0
  80. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +22 -1
  81. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
  82. package/node_modules/@noodle-borg/compiler/dist/artifact/types.js +5 -1
  83. package/node_modules/@noodle-borg/compiler/dist/artifact/types.js.map +1 -1
  84. package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js +1 -1
  85. package/node_modules/@noodle-borg/compiler/dist/catalog/in-memory.js.map +1 -1
  86. package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts +8 -0
  87. package/node_modules/@noodle-borg/compiler/dist/catalog/types.d.ts.map +1 -1
  88. package/node_modules/@noodle-borg/compiler/dist/catalog/types.js +0 -9
  89. package/node_modules/@noodle-borg/compiler/dist/catalog/types.js.map +1 -1
  90. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts +1 -11
  91. package/node_modules/@noodle-borg/compiler/dist/compile.d.ts.map +1 -1
  92. package/node_modules/@noodle-borg/compiler/dist/compile.js +29 -163
  93. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  94. package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts +2 -1
  95. package/node_modules/@noodle-borg/compiler/dist/context-compile.d.ts.map +1 -1
  96. package/node_modules/@noodle-borg/compiler/dist/context-compile.js +3 -1
  97. package/node_modules/@noodle-borg/compiler/dist/context-compile.js.map +1 -1
  98. package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.d.ts +34 -0
  99. package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.d.ts.map +1 -0
  100. package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.js +240 -0
  101. package/node_modules/@noodle-borg/compiler/dist/customer-endpoint.js.map +1 -0
  102. package/node_modules/@noodle-borg/compiler/dist/customer-routing.d.ts +24 -0
  103. package/node_modules/@noodle-borg/compiler/dist/customer-routing.d.ts.map +1 -0
  104. package/node_modules/@noodle-borg/compiler/dist/customer-routing.js +136 -0
  105. package/node_modules/@noodle-borg/compiler/dist/customer-routing.js.map +1 -0
  106. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts +1 -1
  107. package/node_modules/@noodle-borg/compiler/dist/errors.d.ts.map +1 -1
  108. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.d.ts +7 -3
  109. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.d.ts.map +1 -1
  110. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js +7 -1
  111. package/node_modules/@noodle-borg/compiler/dist/fulfilment-emit.js.map +1 -1
  112. package/node_modules/@noodle-borg/compiler/dist/index.d.ts +3 -2
  113. package/node_modules/@noodle-borg/compiler/dist/index.d.ts.map +1 -1
  114. package/node_modules/@noodle-borg/compiler/dist/index.js +1 -0
  115. package/node_modules/@noodle-borg/compiler/dist/index.js.map +1 -1
  116. package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.d.ts +110 -0
  117. package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.d.ts.map +1 -0
  118. package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.js +191 -0
  119. package/node_modules/@noodle-borg/compiler/dist/manifest/auth-schema.js.map +1 -0
  120. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +12 -0
  121. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  122. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +1 -73
  123. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  124. package/node_modules/@noodle-borg/compiler/package.json +1 -0
  125. package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts +1 -0
  126. package/node_modules/@noodle-borg/compute/dist/code-connector.d.ts.map +1 -1
  127. package/node_modules/@noodle-borg/compute/dist/code-connector.js.map +1 -1
  128. package/node_modules/@noodle-borg/connector-defs/dist/call-graph.d.ts.map +1 -1
  129. package/node_modules/@noodle-borg/connector-defs/dist/call-graph.js +6 -6
  130. package/node_modules/@noodle-borg/connector-defs/dist/call-graph.js.map +1 -1
  131. package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.d.ts +2 -0
  132. package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.d.ts.map +1 -1
  133. package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.js +12 -9
  134. package/node_modules/@noodle-borg/connector-defs/dist/compile-auth.js.map +1 -1
  135. package/node_modules/@noodle-borg/connector-defs/dist/compile-http.d.ts +14 -0
  136. package/node_modules/@noodle-borg/connector-defs/dist/compile-http.d.ts.map +1 -0
  137. package/node_modules/@noodle-borg/connector-defs/dist/compile-http.js +347 -0
  138. package/node_modules/@noodle-borg/connector-defs/dist/compile-http.js.map +1 -0
  139. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +4 -2
  140. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -1
  141. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +17 -333
  142. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
  143. package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.d.ts +11 -0
  144. package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.d.ts.map +1 -0
  145. package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.js +124 -0
  146. package/node_modules/@noodle-borg/connector-defs/dist/customer-routing.js.map +1 -0
  147. package/node_modules/@noodle-borg/connector-defs/dist/http-headers.d.ts +4 -0
  148. package/node_modules/@noodle-borg/connector-defs/dist/http-headers.d.ts.map +1 -0
  149. package/node_modules/@noodle-borg/connector-defs/dist/http-headers.js +52 -0
  150. package/node_modules/@noodle-borg/connector-defs/dist/http-headers.js.map +1 -0
  151. package/node_modules/@noodle-borg/connector-defs/dist/identity-key.d.ts +5 -0
  152. package/node_modules/@noodle-borg/connector-defs/dist/identity-key.d.ts.map +1 -0
  153. package/node_modules/@noodle-borg/connector-defs/dist/identity-key.js +9 -0
  154. package/node_modules/@noodle-borg/connector-defs/dist/identity-key.js.map +1 -0
  155. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +33 -3
  156. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -1
  157. package/node_modules/@noodle-borg/connector-defs/dist/schema.js +22 -3
  158. package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -1
  159. package/node_modules/@noodle-borg/connector-http/dist/customer-route.d.ts +17 -0
  160. package/node_modules/@noodle-borg/connector-http/dist/customer-route.d.ts.map +1 -0
  161. package/node_modules/@noodle-borg/connector-http/dist/customer-route.js +77 -0
  162. package/node_modules/@noodle-borg/connector-http/dist/customer-route.js.map +1 -0
  163. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +2 -2
  164. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
  165. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +64 -67
  166. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
  167. package/node_modules/@noodle-borg/connector-http/dist/http-response.d.ts.map +1 -1
  168. package/node_modules/@noodle-borg/connector-http/dist/http-response.js +23 -21
  169. package/node_modules/@noodle-borg/connector-http/dist/http-response.js.map +1 -1
  170. package/node_modules/@noodle-borg/connector-http/dist/ssrf.d.ts.map +1 -1
  171. package/node_modules/@noodle-borg/connector-http/dist/ssrf.js +17 -2
  172. package/node_modules/@noodle-borg/connector-http/dist/ssrf.js.map +1 -1
  173. package/node_modules/@noodle-borg/connector-http/dist/url-resolution.d.ts +4 -0
  174. package/node_modules/@noodle-borg/connector-http/dist/url-resolution.d.ts.map +1 -0
  175. package/node_modules/@noodle-borg/connector-http/dist/url-resolution.js +31 -0
  176. package/node_modules/@noodle-borg/connector-http/dist/url-resolution.js.map +1 -0
  177. package/node_modules/@noodle-borg/module/dist/contract.d.ts +14 -2
  178. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  179. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  180. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
  181. package/node_modules/@noodle-borg/protocol/dist/mapping.js +17 -0
  182. package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
  183. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +4 -0
  184. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  185. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +7 -1
  186. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  187. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts +24 -3
  188. package/node_modules/@noodle-borg/runtime/dist/broker/types.d.ts.map +1 -1
  189. package/node_modules/@noodle-borg/runtime/dist/broker/types.js +21 -0
  190. package/node_modules/@noodle-borg/runtime/dist/broker/types.js.map +1 -1
  191. package/node_modules/@noodle-borg/runtime/dist/confirmation.d.ts.map +1 -1
  192. package/node_modules/@noodle-borg/runtime/dist/confirmation.js +10 -0
  193. package/node_modules/@noodle-borg/runtime/dist/confirmation.js.map +1 -1
  194. package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.d.ts +8 -0
  195. package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.d.ts.map +1 -0
  196. package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.js +53 -0
  197. package/node_modules/@noodle-borg/runtime/dist/connector/failure-details.js.map +1 -0
  198. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts +7 -0
  199. package/node_modules/@noodle-borg/runtime/dist/connector/types.d.ts.map +1 -1
  200. package/node_modules/@noodle-borg/runtime/dist/connector/types.js +15 -0
  201. package/node_modules/@noodle-borg/runtime/dist/connector/types.js.map +1 -1
  202. package/node_modules/@noodle-borg/runtime/dist/customer-routing.d.ts +45 -0
  203. package/node_modules/@noodle-borg/runtime/dist/customer-routing.d.ts.map +1 -0
  204. package/node_modules/@noodle-borg/runtime/dist/customer-routing.js +135 -0
  205. package/node_modules/@noodle-borg/runtime/dist/customer-routing.js.map +1 -0
  206. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts +10 -49
  207. package/node_modules/@noodle-borg/runtime/dist/execute.d.ts.map +1 -1
  208. package/node_modules/@noodle-borg/runtime/dist/execute.js +14 -363
  209. package/node_modules/@noodle-borg/runtime/dist/execute.js.map +1 -1
  210. package/node_modules/@noodle-borg/runtime/dist/index.d.ts +4 -2
  211. package/node_modules/@noodle-borg/runtime/dist/index.d.ts.map +1 -1
  212. package/node_modules/@noodle-borg/runtime/dist/index.js +4 -2
  213. package/node_modules/@noodle-borg/runtime/dist/index.js.map +1 -1
  214. package/node_modules/@noodle-borg/runtime/dist/interactive.d.ts.map +1 -1
  215. package/node_modules/@noodle-borg/runtime/dist/interactive.js +7 -0
  216. package/node_modules/@noodle-borg/runtime/dist/interactive.js.map +1 -1
  217. package/node_modules/@noodle-borg/runtime/dist/operation-credential.d.ts +16 -0
  218. package/node_modules/@noodle-borg/runtime/dist/operation-credential.d.ts.map +1 -0
  219. package/node_modules/@noodle-borg/runtime/dist/operation-credential.js +58 -0
  220. package/node_modules/@noodle-borg/runtime/dist/operation-credential.js.map +1 -0
  221. package/node_modules/@noodle-borg/runtime/dist/operation-execution.d.ts +48 -0
  222. package/node_modules/@noodle-borg/runtime/dist/operation-execution.d.ts.map +1 -0
  223. package/node_modules/@noodle-borg/runtime/dist/operation-execution.js +328 -0
  224. package/node_modules/@noodle-borg/runtime/dist/operation-execution.js.map +1 -0
  225. package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.d.ts +3 -0
  226. package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.d.ts.map +1 -0
  227. package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.js +48 -0
  228. package/node_modules/@noodle-borg/runtime/dist/prepared-action-match.js.map +1 -0
  229. package/node_modules/@noodle-borg/runtime/dist/result.d.ts +1 -1
  230. package/node_modules/@noodle-borg/runtime/dist/result.d.ts.map +1 -1
  231. package/node_modules/@noodle-borg/runtime/dist/result.js.map +1 -1
  232. package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.d.ts +15 -0
  233. package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.d.ts.map +1 -0
  234. package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.js +163 -0
  235. package/node_modules/@noodle-borg/runtime/dist/routed-output-guard.js.map +1 -0
  236. package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.d.ts +8 -0
  237. package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.d.ts.map +1 -0
  238. package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.js +13 -0
  239. package/node_modules/@noodle-borg/service/dist/assistant-customer-issuer.js.map +1 -0
  240. package/node_modules/@noodle-borg/service/dist/assistant-interactive.d.ts.map +1 -1
  241. package/node_modules/@noodle-borg/service/dist/assistant-interactive.js +2 -1
  242. package/node_modules/@noodle-borg/service/dist/assistant-interactive.js.map +1 -1
  243. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.d.ts.map +1 -1
  244. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js +1 -1
  245. package/node_modules/@noodle-borg/service/dist/control-plane-auth-bootstrap.js.map +1 -1
  246. package/node_modules/@noodle-borg/service/dist/credential-binding-index.d.ts +2 -0
  247. package/node_modules/@noodle-borg/service/dist/credential-binding-index.d.ts.map +1 -1
  248. package/node_modules/@noodle-borg/service/dist/credential-binding-index.js +5 -1
  249. package/node_modules/@noodle-borg/service/dist/credential-binding-index.js.map +1 -1
  250. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.d.ts +47 -0
  251. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.d.ts.map +1 -0
  252. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.js +165 -0
  253. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-refresh.js.map +1 -0
  254. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.d.ts +18 -0
  255. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.d.ts.map +1 -0
  256. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.js +112 -0
  257. package/node_modules/@noodle-borg/service/dist/credential-broker-delegated-token-exchange.js.map +1 -0
  258. package/node_modules/@noodle-borg/service/dist/credential-broker.d.ts +6 -24
  259. package/node_modules/@noodle-borg/service/dist/credential-broker.d.ts.map +1 -1
  260. package/node_modules/@noodle-borg/service/dist/credential-broker.js +23 -271
  261. package/node_modules/@noodle-borg/service/dist/credential-broker.js.map +1 -1
  262. package/node_modules/@noodle-borg/service/dist/credential-probe-route.d.ts +20 -0
  263. package/node_modules/@noodle-borg/service/dist/credential-probe-route.d.ts.map +1 -0
  264. package/node_modules/@noodle-borg/service/dist/credential-probe-route.js +28 -0
  265. package/node_modules/@noodle-borg/service/dist/credential-probe-route.js.map +1 -0
  266. package/node_modules/@noodle-borg/service/dist/credential-probes.d.ts +3 -1
  267. package/node_modules/@noodle-borg/service/dist/credential-probes.d.ts.map +1 -1
  268. package/node_modules/@noodle-borg/service/dist/credential-probes.js +54 -13
  269. package/node_modules/@noodle-borg/service/dist/credential-probes.js.map +1 -1
  270. package/node_modules/@noodle-borg/service/dist/credential-route-guard.d.ts +9 -0
  271. package/node_modules/@noodle-borg/service/dist/credential-route-guard.d.ts.map +1 -0
  272. package/node_modules/@noodle-borg/service/dist/credential-route-guard.js +34 -0
  273. package/node_modules/@noodle-borg/service/dist/credential-route-guard.js.map +1 -0
  274. package/node_modules/@noodle-borg/service/dist/credential-route-key.d.ts +12 -0
  275. package/node_modules/@noodle-borg/service/dist/credential-route-key.d.ts.map +1 -0
  276. package/node_modules/@noodle-borg/service/dist/credential-route-key.js +17 -0
  277. package/node_modules/@noodle-borg/service/dist/credential-route-key.js.map +1 -0
  278. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
  279. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +72 -21
  280. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  281. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.d.ts +3 -1
  282. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.d.ts.map +1 -1
  283. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.js +24 -2
  284. package/node_modules/@noodle-borg/service/dist/delegated-token-exchange.js.map +1 -1
  285. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +6 -5
  286. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -1
  287. package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.d.ts.map +1 -1
  288. package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.js +4 -3
  289. package/node_modules/@noodle-borg/service/dist/external-credential-binding-broker.js.map +1 -1
  290. package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.d.ts +2 -1
  291. package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.d.ts.map +1 -1
  292. package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.js +23 -7
  293. package/node_modules/@noodle-borg/service/dist/google-workload-identity-probe.js.map +1 -1
  294. package/node_modules/@noodle-borg/service/dist/google-workload-identity.d.ts.map +1 -1
  295. package/node_modules/@noodle-borg/service/dist/google-workload-identity.js +6 -5
  296. package/node_modules/@noodle-borg/service/dist/google-workload-identity.js.map +1 -1
  297. package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.d.ts +18 -0
  298. package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.d.ts.map +1 -0
  299. package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.js +2 -0
  300. package/node_modules/@noodle-borg/service/dist/managed-config-broker-options.js.map +1 -0
  301. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.d.ts.map +1 -1
  302. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js +6 -5
  303. package/node_modules/@noodle-borg/service/dist/oauth/platform-principal-guard.js.map +1 -1
  304. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  305. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +10 -8
  306. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  307. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js +5 -5
  308. package/node_modules/@noodle-borg/service/dist/oauth/service-bootstrap.js.map +1 -1
  309. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.d.ts.map +1 -1
  310. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js +3 -2
  311. package/node_modules/@noodle-borg/service/dist/routes/assistant-agent.js.map +1 -1
  312. package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-resolution.d.ts.map +1 -1
  313. package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-resolution.js +2 -1
  314. package/node_modules/@noodle-borg/service/dist/routes/assistant-interaction-resolution.js.map +1 -1
  315. package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.d.ts.map +1 -1
  316. package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js +3 -2
  317. package/node_modules/@noodle-borg/service/dist/routes/assistant-interactions.js.map +1 -1
  318. package/node_modules/@noodle-borg/service/dist/routes/assistant.d.ts.map +1 -1
  319. package/node_modules/@noodle-borg/service/dist/routes/assistant.js +8 -7
  320. package/node_modules/@noodle-borg/service/dist/routes/assistant.js.map +1 -1
  321. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.d.ts.map +1 -1
  322. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js +6 -3
  323. package/node_modules/@noodle-borg/service/dist/routes/auth-doctor-live.js.map +1 -1
  324. package/node_modules/@noodle-borg/service/dist/store.d.ts +3 -1
  325. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  326. package/node_modules/@noodle-borg/transport-http/dist/handler.js +18 -2
  327. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  328. package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts +2 -0
  329. package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.d.ts.map +1 -1
  330. package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js +27 -9
  331. package/node_modules/@noodle-borg/transport-http/dist/identity-authorization.js.map +1 -1
  332. package/node_modules/tldts/LICENSE +13 -0
  333. package/node_modules/tldts/README.md +368 -0
  334. package/node_modules/tldts/bin/cli.js +21 -0
  335. package/node_modules/tldts/dist/cjs/index.js +1170 -0
  336. package/node_modules/tldts/dist/cjs/index.js.map +1 -0
  337. package/node_modules/tldts/dist/cjs/src/data/trie.js +12 -0
  338. package/node_modules/tldts/dist/cjs/src/data/trie.js.map +1 -0
  339. package/node_modules/tldts/dist/cjs/src/suffix-trie.js +170 -0
  340. package/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +1 -0
  341. package/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +1 -0
  342. package/node_modules/tldts/dist/es6/index.js +41 -0
  343. package/node_modules/tldts/dist/es6/index.js.map +1 -0
  344. package/node_modules/tldts/dist/es6/src/data/trie.js +9 -0
  345. package/node_modules/tldts/dist/es6/src/data/trie.js.map +1 -0
  346. package/node_modules/tldts/dist/es6/src/suffix-trie.js +167 -0
  347. package/node_modules/tldts/dist/es6/src/suffix-trie.js.map +1 -0
  348. package/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
  349. package/node_modules/tldts/dist/index.cjs.min.js +2 -0
  350. package/node_modules/tldts/dist/index.cjs.min.js.map +1 -0
  351. package/node_modules/tldts/dist/index.esm.min.js +2 -0
  352. package/node_modules/tldts/dist/index.esm.min.js.map +1 -0
  353. package/node_modules/tldts/dist/index.umd.min.js +2 -0
  354. package/node_modules/tldts/dist/index.umd.min.js.map +1 -0
  355. package/node_modules/tldts/dist/types/index.d.ts +8 -0
  356. package/node_modules/tldts/dist/types/src/data/trie.d.ts +7 -0
  357. package/node_modules/tldts/dist/types/src/suffix-trie.d.ts +5 -0
  358. package/node_modules/tldts/index.ts +74 -0
  359. package/node_modules/tldts/package.json +89 -0
  360. package/node_modules/tldts/src/data/trie.ts +8 -0
  361. package/node_modules/tldts/src/suffix-trie.ts +207 -0
  362. package/node_modules/tldts-core/LICENSE +13 -0
  363. package/node_modules/tldts-core/README.md +3 -0
  364. package/node_modules/tldts-core/dist/cjs/index.js +955 -0
  365. package/node_modules/tldts-core/dist/cjs/index.js.map +1 -0
  366. package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +15 -0
  367. package/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +1 -0
  368. package/node_modules/tldts-core/dist/cjs/src/domain.js +83 -0
  369. package/node_modules/tldts-core/dist/cjs/src/domain.js.map +1 -0
  370. package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +439 -0
  371. package/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +1 -0
  372. package/node_modules/tldts-core/dist/cjs/src/factory.js +128 -0
  373. package/node_modules/tldts-core/dist/cjs/src/factory.js.map +1 -0
  374. package/node_modules/tldts-core/dist/cjs/src/is-ip.js +72 -0
  375. package/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +1 -0
  376. package/node_modules/tldts-core/dist/cjs/src/is-special-use.js +65 -0
  377. package/node_modules/tldts-core/dist/cjs/src/is-special-use.js.map +1 -0
  378. package/node_modules/tldts-core/dist/cjs/src/is-valid.js +80 -0
  379. package/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +1 -0
  380. package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +69 -0
  381. package/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +1 -0
  382. package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +3 -0
  383. package/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +1 -0
  384. package/node_modules/tldts-core/dist/cjs/src/options.js +23 -0
  385. package/node_modules/tldts-core/dist/cjs/src/options.js.map +1 -0
  386. package/node_modules/tldts-core/dist/cjs/src/subdomain.js +14 -0
  387. package/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +1 -0
  388. package/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +1 -0
  389. package/node_modules/tldts-core/dist/es6/index.js +4 -0
  390. package/node_modules/tldts-core/dist/es6/index.js.map +1 -0
  391. package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +12 -0
  392. package/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +1 -0
  393. package/node_modules/tldts-core/dist/es6/src/domain.js +80 -0
  394. package/node_modules/tldts-core/dist/es6/src/domain.js.map +1 -0
  395. package/node_modules/tldts-core/dist/es6/src/extract-hostname.js +435 -0
  396. package/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +1 -0
  397. package/node_modules/tldts-core/dist/es6/src/factory.js +123 -0
  398. package/node_modules/tldts-core/dist/es6/src/factory.js.map +1 -0
  399. package/node_modules/tldts-core/dist/es6/src/is-ip.js +69 -0
  400. package/node_modules/tldts-core/dist/es6/src/is-ip.js.map +1 -0
  401. package/node_modules/tldts-core/dist/es6/src/is-special-use.js +62 -0
  402. package/node_modules/tldts-core/dist/es6/src/is-special-use.js.map +1 -0
  403. package/node_modules/tldts-core/dist/es6/src/is-valid.js +77 -0
  404. package/node_modules/tldts-core/dist/es6/src/is-valid.js.map +1 -0
  405. package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +66 -0
  406. package/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +1 -0
  407. package/node_modules/tldts-core/dist/es6/src/lookup/interface.js +2 -0
  408. package/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +1 -0
  409. package/node_modules/tldts-core/dist/es6/src/options.js +20 -0
  410. package/node_modules/tldts-core/dist/es6/src/options.js.map +1 -0
  411. package/node_modules/tldts-core/dist/es6/src/subdomain.js +11 -0
  412. package/node_modules/tldts-core/dist/es6/src/subdomain.js.map +1 -0
  413. package/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
  414. package/node_modules/tldts-core/dist/types/index.d.ts +4 -0
  415. package/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +6 -0
  416. package/node_modules/tldts-core/dist/types/src/domain.d.ts +5 -0
  417. package/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +17 -0
  418. package/node_modules/tldts-core/dist/types/src/factory.d.ts +29 -0
  419. package/node_modules/tldts-core/dist/types/src/is-ip.d.ts +6 -0
  420. package/node_modules/tldts-core/dist/types/src/is-special-use.d.ts +5 -0
  421. package/node_modules/tldts-core/dist/types/src/is-valid.d.ts +15 -0
  422. package/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +2 -0
  423. package/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +9 -0
  424. package/node_modules/tldts-core/dist/types/src/options.d.ts +11 -0
  425. package/node_modules/tldts-core/dist/types/src/subdomain.d.ts +4 -0
  426. package/node_modules/tldts-core/index.ts +10 -0
  427. package/node_modules/tldts-core/package.json +68 -0
  428. package/node_modules/tldts-core/src/domain-without-suffix.ts +14 -0
  429. package/node_modules/tldts-core/src/domain.ts +100 -0
  430. package/node_modules/tldts-core/src/extract-hostname.ts +480 -0
  431. package/node_modules/tldts-core/src/factory.ts +199 -0
  432. package/node_modules/tldts-core/src/is-ip.ts +87 -0
  433. package/node_modules/tldts-core/src/is-special-use.ts +65 -0
  434. package/node_modules/tldts-core/src/is-valid.ts +89 -0
  435. package/node_modules/tldts-core/src/lookup/fast-path.ts +80 -0
  436. package/node_modules/tldts-core/src/lookup/interface.ts +10 -0
  437. package/node_modules/tldts-core/src/options.ts +45 -0
  438. package/node_modules/tldts-core/src/subdomain.ts +11 -0
  439. package/package.json +3 -1
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Return the part of domain without suffix.
3
+ *
4
+ * Example: for domain 'foo.com', the result would be 'foo'.
5
+ */
6
+ export default function getDomainWithoutSuffix(
7
+ domain: string,
8
+ suffix: string,
9
+ ): string {
10
+ // Note: here `domain` and `suffix` cannot have the same length because in
11
+ // this case we set `domain` to `null` instead. It is thus safe to assume
12
+ // that `suffix` is shorter than `domain`.
13
+ return domain.slice(0, -suffix.length - 1);
14
+ }
@@ -0,0 +1,100 @@
1
+ import { IOptions } from './options';
2
+
3
+ /**
4
+ * Check if `vhost` is a valid suffix of `hostname` (top-domain)
5
+ *
6
+ * It means that `vhost` needs to be a suffix of `hostname` and we then need to
7
+ * make sure that: either they are equal, or the character preceding `vhost` in
8
+ * `hostname` is a '.' (it should not be a partial label).
9
+ *
10
+ * * hostname = 'not.evil.com' and vhost = 'vil.com' => not ok
11
+ * * hostname = 'not.evil.com' and vhost = 'evil.com' => ok
12
+ * * hostname = 'not.evil.com' and vhost = 'not.evil.com' => ok
13
+ */
14
+ function shareSameDomainSuffix(hostname: string, vhost: string): boolean {
15
+ if (hostname.endsWith(vhost)) {
16
+ return (
17
+ hostname.length === vhost.length ||
18
+ hostname[hostname.length - vhost.length - 1] === '.'
19
+ );
20
+ }
21
+
22
+ return false;
23
+ }
24
+
25
+ /**
26
+ * Given a hostname and its public suffix, extract the general domain.
27
+ */
28
+ function extractDomainWithSuffix(
29
+ hostname: string,
30
+ publicSuffix: string,
31
+ ): string {
32
+ // Locate the index of the last '.' in the part of the `hostname` preceding
33
+ // the public suffix.
34
+ //
35
+ // examples:
36
+ // 1. not.evil.co.uk => evil.co.uk
37
+ // ^ ^
38
+ // | | start of public suffix
39
+ // | index of the last dot
40
+ //
41
+ // 2. example.co.uk => example.co.uk
42
+ // ^ ^
43
+ // | | start of public suffix
44
+ // |
45
+ // | (-1) no dot found before the public suffix
46
+ const publicSuffixIndex = hostname.length - publicSuffix.length - 2;
47
+ const lastDotBeforeSuffixIndex = hostname.lastIndexOf('.', publicSuffixIndex);
48
+
49
+ // No '.' found, then `hostname` is the general domain (no sub-domain)
50
+ if (lastDotBeforeSuffixIndex === -1) {
51
+ return hostname;
52
+ }
53
+
54
+ // Extract the part between the last '.'
55
+ return hostname.slice(lastDotBeforeSuffixIndex + 1);
56
+ }
57
+
58
+ /**
59
+ * Detects the domain based on rules and upon and a host string
60
+ */
61
+ export default function getDomain(
62
+ suffix: string,
63
+ hostname: string,
64
+ options: IOptions,
65
+ ): string | null {
66
+ // Check if `hostname` ends with a member of `validHosts`.
67
+ if (options.validHosts !== null) {
68
+ const validHosts = options.validHosts;
69
+ for (const vhost of validHosts) {
70
+ if (/*@__INLINE__*/ shareSameDomainSuffix(hostname, vhost)) {
71
+ return vhost;
72
+ }
73
+ }
74
+ }
75
+
76
+ let numberOfLeadingDots = 0;
77
+ if (hostname.startsWith('.')) {
78
+ while (
79
+ numberOfLeadingDots < hostname.length &&
80
+ hostname[numberOfLeadingDots] === '.'
81
+ ) {
82
+ numberOfLeadingDots += 1;
83
+ }
84
+ }
85
+
86
+ // If `hostname` is a valid public suffix, then there is no domain to return.
87
+ // Since we already know that `getPublicSuffix` returns a suffix of `hostname`
88
+ // there is no need to perform a string comparison and we only compare the
89
+ // size.
90
+ if (suffix.length === hostname.length - numberOfLeadingDots) {
91
+ return null;
92
+ }
93
+
94
+ // To extract the general domain, we start by identifying the public suffix
95
+ // (if any), then consider the domain to be the public suffix with one added
96
+ // level of depth. (e.g.: if hostname is `not.evil.co.uk` and public suffix:
97
+ // `co.uk`, then we take one more level: `evil`, giving the final result:
98
+ // `evil.co.uk`).
99
+ return /*@__INLINE__*/ extractDomainWithSuffix(hostname, suffix);
100
+ }
@@ -0,0 +1,480 @@
1
+ /**
2
+ * Matches an ASCII tab (U+0009) or newline (U+000A / U+000D). The WHATWG URL
3
+ * parser strips these before parsing; we only allocate a cleaned copy (and
4
+ * re-parse) on the rare input that actually contains one.
5
+ */
6
+ const CONTROL_CHARS = /[\t\n\r]/g;
7
+
8
+ // Set by `extractHostname` (a module-scope flag, read synchronously by
9
+ // `parseImpl` right after the call — same pattern as the reused RESULT object).
10
+ // `true` ONLY when extraction validated the returned host inline (a confirmed-
11
+ // valid, "simple" authority) so `parseImpl` can skip the separate
12
+ // `isValidHostname` pass. `false` in every other case (validation disabled, a
13
+ // complex authority — userinfo/port/brackets/trailing-dot/control — an invalid
14
+ // host, or a non-main return path); `parseImpl` then validates as usual. The
15
+ // fast path can only ever SKIP a redundant scan for hosts already known valid,
16
+ // never accept an invalid one.
17
+ export let extractedHostnameValidated = false;
18
+
19
+ /**
20
+ * True if char `code` is a valid hostname character. This is the per-char half
21
+ * of `is-valid.ts`'s `isValidAscii` (a-z, 0-9, > U+007F) PLUS three additions:
22
+ * A-Z (the host is lowercased before validation, so uppercase ≡ a valid
23
+ * lowercase letter) and '-' / '_' (valid inside a label). KEEP IN SYNC with
24
+ * `is-valid.ts`: these rules are deliberately duplicated to validate during
25
+ * extraction, so any change to the accepted character set there must be
26
+ * mirrored here (and vice-versa).
27
+ */
28
+ function isValidHostnameChar(code: number): boolean {
29
+ return (
30
+ (code >= 97 && code <= 122) || // a-z
31
+ (code >= 48 && code <= 57) || // 0-9
32
+ code > 127 || // non-ASCII (accepted, not punycode-checked)
33
+ (code >= 65 && code <= 90) || // A-Z (becomes valid once lowercased)
34
+ code === 45 || // '-'
35
+ code === 95 // '_'
36
+ );
37
+ }
38
+
39
+ /**
40
+ * Classify scheme `url.slice(schemeStart, colonIndex)` as a WHATWG special
41
+ * scheme without allocating a substring (case-insensitive via `| 32`).
42
+ * Special schemes: ftp, file, http, https, ws, wss
43
+ * (https://url.spec.whatwg.org/#special-scheme).
44
+ *
45
+ * @returns 0 = not special, 1 = special, 2 = file (its host sits only between
46
+ * "//" and the next slash).
47
+ */
48
+ function getSpecialScheme(
49
+ url: string,
50
+ schemeStart: number,
51
+ colonIndex: number,
52
+ ): number {
53
+ const length = colonIndex - schemeStart;
54
+ const c0 = url.charCodeAt(schemeStart) | 32;
55
+ if (length === 2) {
56
+ return c0 === 119 && (url.charCodeAt(schemeStart + 1) | 32) === 115 ? 1 : 0; // ws
57
+ } else if (length === 3) {
58
+ const c1 = url.charCodeAt(schemeStart + 1) | 32;
59
+ const c2 = url.charCodeAt(schemeStart + 2) | 32;
60
+ if (c0 === 119 && c1 === 115 && c2 === 115) return 1; // wss
61
+ if (c0 === 102 && c1 === 116 && c2 === 112) return 1; // ftp
62
+ return 0;
63
+ } else if (length === 4) {
64
+ const c1 = url.charCodeAt(schemeStart + 1) | 32;
65
+ const c2 = url.charCodeAt(schemeStart + 2) | 32;
66
+ const c3 = url.charCodeAt(schemeStart + 3) | 32;
67
+ if (c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112) return 1; // http
68
+ if (c0 === 102 && c1 === 105 && c2 === 108 && c3 === 101) return 2; // file
69
+ return 0;
70
+ } else if (length === 5) {
71
+ return c0 === 104 &&
72
+ (url.charCodeAt(schemeStart + 1) | 32) === 116 &&
73
+ (url.charCodeAt(schemeStart + 2) | 32) === 116 &&
74
+ (url.charCodeAt(schemeStart + 3) | 32) === 112 &&
75
+ (url.charCodeAt(schemeStart + 4) | 32) === 115
76
+ ? 1
77
+ : 0; // https
78
+ }
79
+ return 0;
80
+ }
81
+
82
+ /**
83
+ * Extract a hostname from `url`, matching a WHATWG URL parser's host-boundary
84
+ * behaviour (https://url.spec.whatwg.org/#concept-basic-url-parser) for tldts'
85
+ * scope. It deliberately does NOT normalise the host (no IDNA/punycode or IPv4
86
+ * canonicalisation; IPv6 brackets are stripped, not compressed), strips trailing
87
+ * dots, and stays lenient where a strict parser rejects (bare host:port,
88
+ * out-of-range port, user@host) — all documented deviations.
89
+ *
90
+ * @param urlIsValidHostname - when true, `url` is already a valid hostname and is
91
+ * returned by the same reference (factory.ts skips re-validation on that
92
+ * identity), keeping the common path allocation-free.
93
+ * @param validate - when true, validate the host inline during the authority
94
+ * scan and publish the verdict via `extractedHostnameValidated` so `parseImpl`
95
+ * can skip the redundant `isValidHostname` pass for simple authorities.
96
+ */
97
+ export default function extractHostname(
98
+ url: string,
99
+ urlIsValidHostname: boolean,
100
+ validate = false,
101
+ ): string | null {
102
+ let start = 0;
103
+ let end: number = url.length;
104
+ let hasUpper = false;
105
+ let isSpecial = false;
106
+ extractedHostnameValidated = false;
107
+
108
+ if (!urlIsValidHostname) {
109
+ // Data URLs never carry a host (and may be huge — short-circuit them).
110
+ if (url.startsWith('data:')) {
111
+ return null;
112
+ }
113
+
114
+ // WHATWG step 1: trim leading/trailing C0 control or space (<= U+0020).
115
+ // Tab/newline elsewhere are handled lazily below.
116
+ while (start < url.length && url.charCodeAt(start) <= 32) {
117
+ start += 1;
118
+ }
119
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
120
+ end -= 1;
121
+ }
122
+
123
+ if (
124
+ url.charCodeAt(start) === 47 /* '/' */ &&
125
+ url.charCodeAt(start + 1) === 47 /* '/' */
126
+ ) {
127
+ // Scheme-relative reference ("//host/path").
128
+ start += 2;
129
+ } else {
130
+ const indexOfProtocol = url.indexOf(':/', start);
131
+ if (indexOfProtocol !== -1) {
132
+ // "scheme://…". Classify the scheme, then position `start` at the host.
133
+ const special = getSpecialScheme(url, start, indexOfProtocol);
134
+ if (special === 1) {
135
+ // Special scheme: skip the run of '/' and '\' after it
136
+ // (special-authority-(ignore-)slashes states; '\' acts as '/').
137
+ isSpecial = true;
138
+ start = indexOfProtocol + 2;
139
+ while (
140
+ url.charCodeAt(start) === 47 /* '/' */ ||
141
+ url.charCodeAt(start) === 92 /* '\' */
142
+ ) {
143
+ start += 1;
144
+ }
145
+ } else if (special === 2) {
146
+ // file: the host is only what sits between "//" and the next slash, so
147
+ // "file://h/x" => "h" but "file:///x" / "file:/x" => no host.
148
+ isSpecial = true;
149
+ start = indexOfProtocol + 1;
150
+ let slashes = 0;
151
+ while (
152
+ (url.charCodeAt(start) === 47 || url.charCodeAt(start) === 92) &&
153
+ slashes < 2
154
+ ) {
155
+ start += 1;
156
+ slashes += 1;
157
+ }
158
+ if (slashes < 2) {
159
+ return null;
160
+ }
161
+ } else {
162
+ // Unknown scheme: validate the WHATWG scheme grammar [A-Za-z0-9+.-];
163
+ // a control char means it was split by a tab/newline (strip + re-parse).
164
+ for (let i = start; i < indexOfProtocol; i += 1) {
165
+ const code = url.charCodeAt(i) | 32;
166
+ if (
167
+ !(
168
+ (
169
+ (code >= 97 && code <= 122) || // [a, z]
170
+ (code >= 48 && code <= 57) || // [0, 9]
171
+ code === 46 || // '.'
172
+ code === 45 || // '-'
173
+ code === 43
174
+ ) // '+'
175
+ )
176
+ ) {
177
+ const raw = url.charCodeAt(i);
178
+ if (raw === 9 || raw === 10 || raw === 13) {
179
+ return extractHostname(
180
+ url.replace(CONTROL_CHARS, ''),
181
+ urlIsValidHostname,
182
+ validate,
183
+ );
184
+ }
185
+ return null;
186
+ }
187
+ }
188
+ // A non-special scheme has an authority only after "//" (else it is an
189
+ // opaque path with no host). `indexOf(':/')` already gave the first '/'.
190
+ if (url.charCodeAt(indexOfProtocol + 2) === 47 /* '/' */) {
191
+ start = indexOfProtocol + 3;
192
+ } else {
193
+ return null;
194
+ }
195
+ }
196
+ } else if (url.charCodeAt(start) !== 91 /* '[' */) {
197
+ // Cold path: no scheme "://", and not a bare IPv6 literal (whose first
198
+ // ':' would otherwise look like a scheme separator; "[…]" falls through
199
+ // to the ipv6 handling below). May be a bare host, a host:port, a
200
+ // user@host, a slash-less special scheme ("https:host"), or an opaque
201
+ // URI ("mailto:", "tel:", "urn:…").
202
+ let indexOfColon = -1;
203
+ for (let i = start; i < end; i += 1) {
204
+ const code = url.charCodeAt(i);
205
+ if (code === 9 || code === 10 || code === 13) {
206
+ return extractHostname(
207
+ url.replace(CONTROL_CHARS, ''),
208
+ urlIsValidHostname,
209
+ validate,
210
+ );
211
+ }
212
+ if (code === 58 /* ':' */) {
213
+ indexOfColon = i;
214
+ break;
215
+ }
216
+ if (code === 47 || code === 92 || code === 63 || code === 35) {
217
+ break;
218
+ }
219
+ }
220
+
221
+ if (indexOfColon !== -1) {
222
+ // An '@' before the next delimiter => the ':' is userinfo, not a
223
+ // scheme ("user:pass@host", "mailto:a@b"): keep the whole authority.
224
+ let hasIdentifier = false;
225
+ for (let i = indexOfColon + 1; i < end; i += 1) {
226
+ const code = url.charCodeAt(i);
227
+ if (code === 47 || code === 92 || code === 63 || code === 35) {
228
+ break;
229
+ }
230
+ if (code === 64 /* '@' */) {
231
+ hasIdentifier = true;
232
+ break;
233
+ }
234
+ }
235
+
236
+ if (!hasIdentifier) {
237
+ // All-digits after ':' => a bare "host:port" (tldts accepts
238
+ // hostnames too); keep `start` and let the port handling trim it.
239
+ let allDigits = true;
240
+ let i = indexOfColon + 1;
241
+ for (; i < end; i += 1) {
242
+ const code = url.charCodeAt(i);
243
+ if (code === 47 || code === 92 || code === 63 || code === 35) {
244
+ break;
245
+ }
246
+ if (code < 48 /* '0' */ || code > 57 /* '9' */) {
247
+ allDigits = false;
248
+ break;
249
+ }
250
+ }
251
+ if (i === indexOfColon + 1) {
252
+ allDigits = false; // nothing after ':' => not a port
253
+ }
254
+
255
+ if (!allDigits) {
256
+ const special = getSpecialScheme(url, start, indexOfColon);
257
+ if (special === 0) {
258
+ // No "://" anywhere on the cold path and not a special scheme.
259
+ // A second ':' before the host's end marks a bare, unbracketed
260
+ // IPv6 literal ("2a01:e35::1"): fall through and let the host
261
+ // loop + isIp classify it. Without one this is an opaque path
262
+ // with no host ("mailto:x", "foo:bar").
263
+ let isBareIpv6 = false;
264
+ for (let j = indexOfColon + 1; j < end; j += 1) {
265
+ const code = url.charCodeAt(j);
266
+ if (
267
+ code === 47 ||
268
+ code === 92 ||
269
+ code === 63 ||
270
+ code === 35
271
+ ) {
272
+ break;
273
+ }
274
+ if (code === 58 /* ':' */) {
275
+ isBareIpv6 = true;
276
+ break;
277
+ }
278
+ }
279
+ if (!isBareIpv6) {
280
+ return null;
281
+ }
282
+ } else {
283
+ isSpecial = true;
284
+ start = indexOfColon + 1;
285
+ if (special === 2) {
286
+ // file (e.g. "file:\\host"): host only between "//" and next slash.
287
+ let slashes = 0;
288
+ while (
289
+ (url.charCodeAt(start) === 47 ||
290
+ url.charCodeAt(start) === 92) &&
291
+ slashes < 2
292
+ ) {
293
+ start += 1;
294
+ slashes += 1;
295
+ }
296
+ if (slashes < 2) {
297
+ return null;
298
+ }
299
+ } else {
300
+ while (
301
+ url.charCodeAt(start) === 47 ||
302
+ url.charCodeAt(start) === 92
303
+ ) {
304
+ start += 1;
305
+ }
306
+ }
307
+ }
308
+ }
309
+ }
310
+ }
311
+ }
312
+ }
313
+
314
+ // Find the host's end: first '/', '?' or '#' (and '\' for special URLs,
315
+ // which WHATWG treats like '/'). Track the last '@', ']' and ':' for
316
+ // userinfo, ipv6 and port, plus the first ':' of the host (reset at each
317
+ // '@') to tell a bare IPv6 (>= 2 colons) from a host:port (exactly one);
318
+ // flag uppercase and a stray tab/newline. The loop is split on `code < 64`
319
+ // so common host characters take fewer comparisons.
320
+ //
321
+ // When `validate`, also accumulate `is-valid.ts`'s checks over the scanned
322
+ // run so a simple authority's host can be validated in this single pass.
323
+ // `vValid` only stays meaningful for a "simple" authority (no userinfo, port,
324
+ // brackets, control or trailing dot); those cases clear it / are rejected by
325
+ // the guard below, falling back to `isValidHostname`.
326
+ let indexOfIdentifier = -1;
327
+ let indexOfClosingBracket = -1;
328
+ let indexOfPort = -1;
329
+ let indexOfFirstColon = -1;
330
+ let hasControl = false;
331
+ let vValid = validate; // seeded true when validating; cleared on the first invalid char
332
+ let vLastDot = start - 1; // mirrors is-valid.ts `lastDotIndex = -1` at host start
333
+ let vLastCode = -1;
334
+ if (validate && start < end) {
335
+ // First-char rule: must be a valid host char, '.', or '_' (NOT '-').
336
+ const c0 = url.charCodeAt(start);
337
+ if (
338
+ !(
339
+ /*@__INLINE__*/ (
340
+ isValidHostnameChar(c0) ||
341
+ c0 === 46 /* '.' */ ||
342
+ c0 === 95 /* '_' */
343
+ )
344
+ ) ||
345
+ c0 === 45 /* '-' (isValidHostnameChar allows it mid-label, not first) */
346
+ ) {
347
+ vValid = false;
348
+ }
349
+ }
350
+ for (let i = start; i < end; i += 1) {
351
+ const code: number = url.charCodeAt(i);
352
+ if (code < 64) {
353
+ if (code === 47 || code === 35 || code === 63) {
354
+ end = i;
355
+ break;
356
+ } else if (code === 58 /* ':' */) {
357
+ if (indexOfFirstColon === -1) {
358
+ indexOfFirstColon = i;
359
+ }
360
+ indexOfPort = i;
361
+ } else if (code === 9 || code === 10 || code === 13) {
362
+ hasControl = true;
363
+ } else if (validate) {
364
+ if (code === 46 /* '.' */) {
365
+ if (i - vLastDot > 64 || vLastCode === 46 || vLastCode === 45) {
366
+ vValid = false;
367
+ }
368
+ vLastDot = i;
369
+ } else if (code < 48 || code > 57) {
370
+ // < 64 and not a delimiter/dot/digit => only '-' (45) is a valid
371
+ // host char here; everything else (space, %, !, etc.) is invalid.
372
+ // A '-' must also not START a label (the byte right after a '.') —
373
+ // mirrors is-valid.ts; the first label is covered by the first-char
374
+ // rule above. (RFC 1034 §3.5 / RFC 1035 §2.3.1 LDH.)
375
+ if (code !== 45 || vLastCode === 46 /* label-leading '-' */) {
376
+ vValid = false;
377
+ }
378
+ }
379
+ }
380
+ } else if (isSpecial && code === 92 /* '\' */) {
381
+ end = i;
382
+ break;
383
+ } else if (code === 64 /* '@' */) {
384
+ indexOfIdentifier = i;
385
+ indexOfFirstColon = -1; // colons before '@' are userinfo, not the host
386
+ } else if (code === 93 /* ']' */) {
387
+ indexOfClosingBracket = i;
388
+ } else if (code >= 65 && code <= 90) {
389
+ hasUpper = true;
390
+ } else if (validate && !(/*@__INLINE__*/ isValidHostnameChar(code))) {
391
+ // >= 64, not '@'/']'/upper: valid only if a-z, '_', or non-ASCII.
392
+ vValid = false;
393
+ }
394
+ if (validate) {
395
+ vLastCode = code;
396
+ }
397
+ }
398
+
399
+ // A tab/newline inside the authority: strip everything and re-parse (rare).
400
+ if (hasControl) {
401
+ return extractHostname(
402
+ url.replace(CONTROL_CHARS, ''),
403
+ urlIsValidHostname,
404
+ validate,
405
+ );
406
+ }
407
+
408
+ // Skip userinfo. '>= start' so an empty userinfo ("http://@host") works too.
409
+ if (
410
+ indexOfIdentifier !== -1 &&
411
+ indexOfIdentifier >= start &&
412
+ indexOfIdentifier < end
413
+ ) {
414
+ start = indexOfIdentifier + 1;
415
+ }
416
+
417
+ if (url.charCodeAt(start) === 91 /* '[' */) {
418
+ // ipv6 address: return what is between the brackets, or null if unclosed.
419
+ if (indexOfClosingBracket !== -1) {
420
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
421
+ }
422
+ return null;
423
+ } else if (
424
+ indexOfPort !== -1 &&
425
+ indexOfPort > start &&
426
+ indexOfPort < end &&
427
+ // A host:port has exactly one ':' in the host (so its first ':' is its
428
+ // last); a bare, unbracketed IPv6 literal ("2a01:e35::1") has >= 2, so
429
+ // its first ':' precedes the last. Only the former has a ':port' to trim.
430
+ indexOfFirstColon === indexOfPort
431
+ ) {
432
+ end = indexOfPort; // trim ':port'
433
+ }
434
+
435
+ // Empty authority ("http://", "file:///path", "//"); only reachable here via
436
+ // extraction — a bare valid hostname never lands here.
437
+ if (start >= end) {
438
+ return null;
439
+ }
440
+
441
+ // Publish the inline-validation verdict — but only for a "simple" authority,
442
+ // where the scanned run equals the final host: no userinfo skip, no port
443
+ // trim, no brackets, no trailing dot (trimmed below), and length within RFC
444
+ // limits. Anything else leaves it `false` so `parseImpl` re-validates.
445
+ //
446
+ // Every clause below is load-bearing for CORRECTNESS, not just speed: the
447
+ // loop accumulates `vValid` over the whole scanned run (it does not stop at
448
+ // ':' or '@', so any port/userinfo bytes are included), so the verdict is
449
+ // only sound when that run equals the final host. Do not drop a clause as
450
+ // "redundant" — e.g. without `indexOfPort === -1`, `host:8080` would be
451
+ // wrongly accepted.
452
+ if (
453
+ validate &&
454
+ vValid &&
455
+ indexOfIdentifier === -1 &&
456
+ indexOfPort === -1 &&
457
+ indexOfClosingBracket === -1 &&
458
+ url.charCodeAt(end - 1) !== 46 /* no trailing dot */ &&
459
+ end - start <= 255 && // total length
460
+ end - vLastDot - 1 <= 63 && // last label length
461
+ vLastCode !== 45 /* last char not '-' */
462
+ ) {
463
+ extractedHostnameValidated = true;
464
+ }
465
+ }
466
+
467
+ // Trim trailing dots
468
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
469
+ end -= 1;
470
+ }
471
+
472
+ const hostname: string =
473
+ start !== 0 || end !== url.length ? url.slice(start, end) : url;
474
+
475
+ if (hasUpper) {
476
+ return hostname.toLowerCase();
477
+ }
478
+
479
+ return hostname;
480
+ }