@noodleseed/one 0.92.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/deploy.js +1 -1
  2. package/dist/deploy.js.map +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/platform-support.js +2 -2
  8. package/dist/platform-support.js.map +1 -1
  9. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.d.ts.map +1 -1
  10. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js +8 -0
  11. package/node_modules/@noodle-borg/agent-kit/dist/curated/error-fixes.js.map +1 -1
  12. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +3 -3
  13. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  14. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  15. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +9 -0
  16. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  17. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts.map +1 -1
  18. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +8 -0
  19. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
  20. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts.map +1 -1
  21. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js +24 -1
  22. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js.map +1 -1
  23. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js +30 -22
  24. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js.map +1 -1
  25. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts.map +1 -1
  26. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +15 -0
  27. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js.map +1 -1
  28. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.d.ts +13 -0
  29. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.d.ts.map +1 -0
  30. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.js +13 -0
  31. package/node_modules/@noodle-borg/agent-kit/dist/plugin-platform-support.js.map +1 -0
  32. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.d.ts +2 -0
  33. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.d.ts.map +1 -0
  34. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js +171 -0
  35. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-auth-ref.js.map +1 -0
  36. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.d.ts.map +1 -1
  37. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js +3 -97
  38. package/node_modules/@noodle-borg/agent-kit/dist/skill-authoring-refs.js.map +1 -1
  39. package/node_modules/@noodle-borg/agent-kit/package.json +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,435 @@
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
+ // Set by `extractHostname` (a module-scope flag, read synchronously by
8
+ // `parseImpl` right after the call — same pattern as the reused RESULT object).
9
+ // `true` ONLY when extraction validated the returned host inline (a confirmed-
10
+ // valid, "simple" authority) so `parseImpl` can skip the separate
11
+ // `isValidHostname` pass. `false` in every other case (validation disabled, a
12
+ // complex authority — userinfo/port/brackets/trailing-dot/control — an invalid
13
+ // host, or a non-main return path); `parseImpl` then validates as usual. The
14
+ // fast path can only ever SKIP a redundant scan for hosts already known valid,
15
+ // never accept an invalid one.
16
+ export let extractedHostnameValidated = false;
17
+ /**
18
+ * True if char `code` is a valid hostname character. This is the per-char half
19
+ * of `is-valid.ts`'s `isValidAscii` (a-z, 0-9, > U+007F) PLUS three additions:
20
+ * A-Z (the host is lowercased before validation, so uppercase ≡ a valid
21
+ * lowercase letter) and '-' / '_' (valid inside a label). KEEP IN SYNC with
22
+ * `is-valid.ts`: these rules are deliberately duplicated to validate during
23
+ * extraction, so any change to the accepted character set there must be
24
+ * mirrored here (and vice-versa).
25
+ */
26
+ function isValidHostnameChar(code) {
27
+ return ((code >= 97 && code <= 122) || // a-z
28
+ (code >= 48 && code <= 57) || // 0-9
29
+ code > 127 || // non-ASCII (accepted, not punycode-checked)
30
+ (code >= 65 && code <= 90) || // A-Z (becomes valid once lowercased)
31
+ code === 45 || // '-'
32
+ code === 95 // '_'
33
+ );
34
+ }
35
+ /**
36
+ * Classify scheme `url.slice(schemeStart, colonIndex)` as a WHATWG special
37
+ * scheme without allocating a substring (case-insensitive via `| 32`).
38
+ * Special schemes: ftp, file, http, https, ws, wss
39
+ * (https://url.spec.whatwg.org/#special-scheme).
40
+ *
41
+ * @returns 0 = not special, 1 = special, 2 = file (its host sits only between
42
+ * "//" and the next slash).
43
+ */
44
+ function getSpecialScheme(url, schemeStart, colonIndex) {
45
+ const length = colonIndex - schemeStart;
46
+ const c0 = url.charCodeAt(schemeStart) | 32;
47
+ if (length === 2) {
48
+ return c0 === 119 && (url.charCodeAt(schemeStart + 1) | 32) === 115 ? 1 : 0; // ws
49
+ }
50
+ else if (length === 3) {
51
+ const c1 = url.charCodeAt(schemeStart + 1) | 32;
52
+ const c2 = url.charCodeAt(schemeStart + 2) | 32;
53
+ if (c0 === 119 && c1 === 115 && c2 === 115)
54
+ return 1; // wss
55
+ if (c0 === 102 && c1 === 116 && c2 === 112)
56
+ return 1; // ftp
57
+ return 0;
58
+ }
59
+ else if (length === 4) {
60
+ const c1 = url.charCodeAt(schemeStart + 1) | 32;
61
+ const c2 = url.charCodeAt(schemeStart + 2) | 32;
62
+ const c3 = url.charCodeAt(schemeStart + 3) | 32;
63
+ if (c0 === 104 && c1 === 116 && c2 === 116 && c3 === 112)
64
+ return 1; // http
65
+ if (c0 === 102 && c1 === 105 && c2 === 108 && c3 === 101)
66
+ return 2; // file
67
+ return 0;
68
+ }
69
+ else if (length === 5) {
70
+ return c0 === 104 &&
71
+ (url.charCodeAt(schemeStart + 1) | 32) === 116 &&
72
+ (url.charCodeAt(schemeStart + 2) | 32) === 116 &&
73
+ (url.charCodeAt(schemeStart + 3) | 32) === 112 &&
74
+ (url.charCodeAt(schemeStart + 4) | 32) === 115
75
+ ? 1
76
+ : 0; // https
77
+ }
78
+ return 0;
79
+ }
80
+ /**
81
+ * Extract a hostname from `url`, matching a WHATWG URL parser's host-boundary
82
+ * behaviour (https://url.spec.whatwg.org/#concept-basic-url-parser) for tldts'
83
+ * scope. It deliberately does NOT normalise the host (no IDNA/punycode or IPv4
84
+ * canonicalisation; IPv6 brackets are stripped, not compressed), strips trailing
85
+ * dots, and stays lenient where a strict parser rejects (bare host:port,
86
+ * out-of-range port, user@host) — all documented deviations.
87
+ *
88
+ * @param urlIsValidHostname - when true, `url` is already a valid hostname and is
89
+ * returned by the same reference (factory.ts skips re-validation on that
90
+ * identity), keeping the common path allocation-free.
91
+ * @param validate - when true, validate the host inline during the authority
92
+ * scan and publish the verdict via `extractedHostnameValidated` so `parseImpl`
93
+ * can skip the redundant `isValidHostname` pass for simple authorities.
94
+ */
95
+ export default function extractHostname(url, urlIsValidHostname, validate = false) {
96
+ let start = 0;
97
+ let end = url.length;
98
+ let hasUpper = false;
99
+ let isSpecial = false;
100
+ extractedHostnameValidated = false;
101
+ if (!urlIsValidHostname) {
102
+ // Data URLs never carry a host (and may be huge — short-circuit them).
103
+ if (url.startsWith('data:')) {
104
+ return null;
105
+ }
106
+ // WHATWG step 1: trim leading/trailing C0 control or space (<= U+0020).
107
+ // Tab/newline elsewhere are handled lazily below.
108
+ while (start < url.length && url.charCodeAt(start) <= 32) {
109
+ start += 1;
110
+ }
111
+ while (end > start + 1 && url.charCodeAt(end - 1) <= 32) {
112
+ end -= 1;
113
+ }
114
+ if (url.charCodeAt(start) === 47 /* '/' */ &&
115
+ url.charCodeAt(start + 1) === 47 /* '/' */) {
116
+ // Scheme-relative reference ("//host/path").
117
+ start += 2;
118
+ }
119
+ else {
120
+ const indexOfProtocol = url.indexOf(':/', start);
121
+ if (indexOfProtocol !== -1) {
122
+ // "scheme://…". Classify the scheme, then position `start` at the host.
123
+ const special = getSpecialScheme(url, start, indexOfProtocol);
124
+ if (special === 1) {
125
+ // Special scheme: skip the run of '/' and '\' after it
126
+ // (special-authority-(ignore-)slashes states; '\' acts as '/').
127
+ isSpecial = true;
128
+ start = indexOfProtocol + 2;
129
+ while (url.charCodeAt(start) === 47 /* '/' */ ||
130
+ url.charCodeAt(start) === 92 /* '\' */) {
131
+ start += 1;
132
+ }
133
+ }
134
+ else if (special === 2) {
135
+ // file: the host is only what sits between "//" and the next slash, so
136
+ // "file://h/x" => "h" but "file:///x" / "file:/x" => no host.
137
+ isSpecial = true;
138
+ start = indexOfProtocol + 1;
139
+ let slashes = 0;
140
+ while ((url.charCodeAt(start) === 47 || url.charCodeAt(start) === 92) &&
141
+ slashes < 2) {
142
+ start += 1;
143
+ slashes += 1;
144
+ }
145
+ if (slashes < 2) {
146
+ return null;
147
+ }
148
+ }
149
+ else {
150
+ // Unknown scheme: validate the WHATWG scheme grammar [A-Za-z0-9+.-];
151
+ // a control char means it was split by a tab/newline (strip + re-parse).
152
+ for (let i = start; i < indexOfProtocol; i += 1) {
153
+ const code = url.charCodeAt(i) | 32;
154
+ if (!(((code >= 97 && code <= 122) || // [a, z]
155
+ (code >= 48 && code <= 57) || // [0, 9]
156
+ code === 46 || // '.'
157
+ code === 45 || // '-'
158
+ code === 43) // '+'
159
+ )) {
160
+ const raw = url.charCodeAt(i);
161
+ if (raw === 9 || raw === 10 || raw === 13) {
162
+ return extractHostname(url.replace(CONTROL_CHARS, ''), urlIsValidHostname, validate);
163
+ }
164
+ return null;
165
+ }
166
+ }
167
+ // A non-special scheme has an authority only after "//" (else it is an
168
+ // opaque path with no host). `indexOf(':/')` already gave the first '/'.
169
+ if (url.charCodeAt(indexOfProtocol + 2) === 47 /* '/' */) {
170
+ start = indexOfProtocol + 3;
171
+ }
172
+ else {
173
+ return null;
174
+ }
175
+ }
176
+ }
177
+ else if (url.charCodeAt(start) !== 91 /* '[' */) {
178
+ // Cold path: no scheme "://", and not a bare IPv6 literal (whose first
179
+ // ':' would otherwise look like a scheme separator; "[…]" falls through
180
+ // to the ipv6 handling below). May be a bare host, a host:port, a
181
+ // user@host, a slash-less special scheme ("https:host"), or an opaque
182
+ // URI ("mailto:", "tel:", "urn:…").
183
+ let indexOfColon = -1;
184
+ for (let i = start; i < end; i += 1) {
185
+ const code = url.charCodeAt(i);
186
+ if (code === 9 || code === 10 || code === 13) {
187
+ return extractHostname(url.replace(CONTROL_CHARS, ''), urlIsValidHostname, validate);
188
+ }
189
+ if (code === 58 /* ':' */) {
190
+ indexOfColon = i;
191
+ break;
192
+ }
193
+ if (code === 47 || code === 92 || code === 63 || code === 35) {
194
+ break;
195
+ }
196
+ }
197
+ if (indexOfColon !== -1) {
198
+ // An '@' before the next delimiter => the ':' is userinfo, not a
199
+ // scheme ("user:pass@host", "mailto:a@b"): keep the whole authority.
200
+ let hasIdentifier = false;
201
+ for (let i = indexOfColon + 1; i < end; i += 1) {
202
+ const code = url.charCodeAt(i);
203
+ if (code === 47 || code === 92 || code === 63 || code === 35) {
204
+ break;
205
+ }
206
+ if (code === 64 /* '@' */) {
207
+ hasIdentifier = true;
208
+ break;
209
+ }
210
+ }
211
+ if (!hasIdentifier) {
212
+ // All-digits after ':' => a bare "host:port" (tldts accepts
213
+ // hostnames too); keep `start` and let the port handling trim it.
214
+ let allDigits = true;
215
+ let i = indexOfColon + 1;
216
+ for (; i < end; i += 1) {
217
+ const code = url.charCodeAt(i);
218
+ if (code === 47 || code === 92 || code === 63 || code === 35) {
219
+ break;
220
+ }
221
+ if (code < 48 /* '0' */ || code > 57 /* '9' */) {
222
+ allDigits = false;
223
+ break;
224
+ }
225
+ }
226
+ if (i === indexOfColon + 1) {
227
+ allDigits = false; // nothing after ':' => not a port
228
+ }
229
+ if (!allDigits) {
230
+ const special = getSpecialScheme(url, start, indexOfColon);
231
+ if (special === 0) {
232
+ // No "://" anywhere on the cold path and not a special scheme.
233
+ // A second ':' before the host's end marks a bare, unbracketed
234
+ // IPv6 literal ("2a01:e35::1"): fall through and let the host
235
+ // loop + isIp classify it. Without one this is an opaque path
236
+ // with no host ("mailto:x", "foo:bar").
237
+ let isBareIpv6 = false;
238
+ for (let j = indexOfColon + 1; j < end; j += 1) {
239
+ const code = url.charCodeAt(j);
240
+ if (code === 47 ||
241
+ code === 92 ||
242
+ code === 63 ||
243
+ code === 35) {
244
+ break;
245
+ }
246
+ if (code === 58 /* ':' */) {
247
+ isBareIpv6 = true;
248
+ break;
249
+ }
250
+ }
251
+ if (!isBareIpv6) {
252
+ return null;
253
+ }
254
+ }
255
+ else {
256
+ isSpecial = true;
257
+ start = indexOfColon + 1;
258
+ if (special === 2) {
259
+ // file (e.g. "file:\\host"): host only between "//" and next slash.
260
+ let slashes = 0;
261
+ while ((url.charCodeAt(start) === 47 ||
262
+ url.charCodeAt(start) === 92) &&
263
+ slashes < 2) {
264
+ start += 1;
265
+ slashes += 1;
266
+ }
267
+ if (slashes < 2) {
268
+ return null;
269
+ }
270
+ }
271
+ else {
272
+ while (url.charCodeAt(start) === 47 ||
273
+ url.charCodeAt(start) === 92) {
274
+ start += 1;
275
+ }
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ }
283
+ // Find the host's end: first '/', '?' or '#' (and '\' for special URLs,
284
+ // which WHATWG treats like '/'). Track the last '@', ']' and ':' for
285
+ // userinfo, ipv6 and port, plus the first ':' of the host (reset at each
286
+ // '@') to tell a bare IPv6 (>= 2 colons) from a host:port (exactly one);
287
+ // flag uppercase and a stray tab/newline. The loop is split on `code < 64`
288
+ // so common host characters take fewer comparisons.
289
+ //
290
+ // When `validate`, also accumulate `is-valid.ts`'s checks over the scanned
291
+ // run so a simple authority's host can be validated in this single pass.
292
+ // `vValid` only stays meaningful for a "simple" authority (no userinfo, port,
293
+ // brackets, control or trailing dot); those cases clear it / are rejected by
294
+ // the guard below, falling back to `isValidHostname`.
295
+ let indexOfIdentifier = -1;
296
+ let indexOfClosingBracket = -1;
297
+ let indexOfPort = -1;
298
+ let indexOfFirstColon = -1;
299
+ let hasControl = false;
300
+ let vValid = validate; // seeded true when validating; cleared on the first invalid char
301
+ let vLastDot = start - 1; // mirrors is-valid.ts `lastDotIndex = -1` at host start
302
+ let vLastCode = -1;
303
+ if (validate && start < end) {
304
+ // First-char rule: must be a valid host char, '.', or '_' (NOT '-').
305
+ const c0 = url.charCodeAt(start);
306
+ if (!(
307
+ /*@__INLINE__*/ (isValidHostnameChar(c0) ||
308
+ c0 === 46 /* '.' */ ||
309
+ c0 === 95 /* '_' */)) ||
310
+ c0 === 45 /* '-' (isValidHostnameChar allows it mid-label, not first) */) {
311
+ vValid = false;
312
+ }
313
+ }
314
+ for (let i = start; i < end; i += 1) {
315
+ const code = url.charCodeAt(i);
316
+ if (code < 64) {
317
+ if (code === 47 || code === 35 || code === 63) {
318
+ end = i;
319
+ break;
320
+ }
321
+ else if (code === 58 /* ':' */) {
322
+ if (indexOfFirstColon === -1) {
323
+ indexOfFirstColon = i;
324
+ }
325
+ indexOfPort = i;
326
+ }
327
+ else if (code === 9 || code === 10 || code === 13) {
328
+ hasControl = true;
329
+ }
330
+ else if (validate) {
331
+ if (code === 46 /* '.' */) {
332
+ if (i - vLastDot > 64 || vLastCode === 46 || vLastCode === 45) {
333
+ vValid = false;
334
+ }
335
+ vLastDot = i;
336
+ }
337
+ else if (code < 48 || code > 57) {
338
+ // < 64 and not a delimiter/dot/digit => only '-' (45) is a valid
339
+ // host char here; everything else (space, %, !, etc.) is invalid.
340
+ // A '-' must also not START a label (the byte right after a '.') —
341
+ // mirrors is-valid.ts; the first label is covered by the first-char
342
+ // rule above. (RFC 1034 §3.5 / RFC 1035 §2.3.1 LDH.)
343
+ if (code !== 45 || vLastCode === 46 /* label-leading '-' */) {
344
+ vValid = false;
345
+ }
346
+ }
347
+ }
348
+ }
349
+ else if (isSpecial && code === 92 /* '\' */) {
350
+ end = i;
351
+ break;
352
+ }
353
+ else if (code === 64 /* '@' */) {
354
+ indexOfIdentifier = i;
355
+ indexOfFirstColon = -1; // colons before '@' are userinfo, not the host
356
+ }
357
+ else if (code === 93 /* ']' */) {
358
+ indexOfClosingBracket = i;
359
+ }
360
+ else if (code >= 65 && code <= 90) {
361
+ hasUpper = true;
362
+ }
363
+ else if (validate && !( /*@__INLINE__*/isValidHostnameChar(code))) {
364
+ // >= 64, not '@'/']'/upper: valid only if a-z, '_', or non-ASCII.
365
+ vValid = false;
366
+ }
367
+ if (validate) {
368
+ vLastCode = code;
369
+ }
370
+ }
371
+ // A tab/newline inside the authority: strip everything and re-parse (rare).
372
+ if (hasControl) {
373
+ return extractHostname(url.replace(CONTROL_CHARS, ''), urlIsValidHostname, validate);
374
+ }
375
+ // Skip userinfo. '>= start' so an empty userinfo ("http://@host") works too.
376
+ if (indexOfIdentifier !== -1 &&
377
+ indexOfIdentifier >= start &&
378
+ indexOfIdentifier < end) {
379
+ start = indexOfIdentifier + 1;
380
+ }
381
+ if (url.charCodeAt(start) === 91 /* '[' */) {
382
+ // ipv6 address: return what is between the brackets, or null if unclosed.
383
+ if (indexOfClosingBracket !== -1) {
384
+ return url.slice(start + 1, indexOfClosingBracket).toLowerCase();
385
+ }
386
+ return null;
387
+ }
388
+ else if (indexOfPort !== -1 &&
389
+ indexOfPort > start &&
390
+ indexOfPort < end &&
391
+ // A host:port has exactly one ':' in the host (so its first ':' is its
392
+ // last); a bare, unbracketed IPv6 literal ("2a01:e35::1") has >= 2, so
393
+ // its first ':' precedes the last. Only the former has a ':port' to trim.
394
+ indexOfFirstColon === indexOfPort) {
395
+ end = indexOfPort; // trim ':port'
396
+ }
397
+ // Empty authority ("http://", "file:///path", "//"); only reachable here via
398
+ // extraction — a bare valid hostname never lands here.
399
+ if (start >= end) {
400
+ return null;
401
+ }
402
+ // Publish the inline-validation verdict — but only for a "simple" authority,
403
+ // where the scanned run equals the final host: no userinfo skip, no port
404
+ // trim, no brackets, no trailing dot (trimmed below), and length within RFC
405
+ // limits. Anything else leaves it `false` so `parseImpl` re-validates.
406
+ //
407
+ // Every clause below is load-bearing for CORRECTNESS, not just speed: the
408
+ // loop accumulates `vValid` over the whole scanned run (it does not stop at
409
+ // ':' or '@', so any port/userinfo bytes are included), so the verdict is
410
+ // only sound when that run equals the final host. Do not drop a clause as
411
+ // "redundant" — e.g. without `indexOfPort === -1`, `host:8080` would be
412
+ // wrongly accepted.
413
+ if (validate &&
414
+ vValid &&
415
+ indexOfIdentifier === -1 &&
416
+ indexOfPort === -1 &&
417
+ indexOfClosingBracket === -1 &&
418
+ url.charCodeAt(end - 1) !== 46 /* no trailing dot */ &&
419
+ end - start <= 255 && // total length
420
+ end - vLastDot - 1 <= 63 && // last label length
421
+ vLastCode !== 45 /* last char not '-' */) {
422
+ extractedHostnameValidated = true;
423
+ }
424
+ }
425
+ // Trim trailing dots
426
+ while (end > start + 1 && url.charCodeAt(end - 1) === 46 /* '.' */) {
427
+ end -= 1;
428
+ }
429
+ const hostname = start !== 0 || end !== url.length ? url.slice(start, end) : url;
430
+ if (hasUpper) {
431
+ return hostname.toLowerCase();
432
+ }
433
+ return hostname;
434
+ }
435
+ //# sourceMappingURL=extract-hostname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-hostname.js","sourceRoot":"","sources":["../../../src/extract-hostname.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Implement a factory allowing to plug different implementations of suffix
3
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
4
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
5
+ */
6
+ import getDomain from './domain';
7
+ import getDomainWithoutSuffix from './domain-without-suffix';
8
+ import extractHostname, { extractedHostnameValidated, } from './extract-hostname';
9
+ import isIp from './is-ip';
10
+ import isSpecialUse from './is-special-use';
11
+ import isValidHostname from './is-valid';
12
+ import { setDefaults } from './options';
13
+ import getSubdomain from './subdomain';
14
+ export function getEmptyResult() {
15
+ return {
16
+ domain: null,
17
+ domainWithoutSuffix: null,
18
+ hostname: null,
19
+ isIcann: null,
20
+ isIp: null,
21
+ isPrivate: null,
22
+ isSpecialUse: null,
23
+ publicSuffix: null,
24
+ subdomain: null,
25
+ };
26
+ }
27
+ export function resetResult(result) {
28
+ result.domain = null;
29
+ result.domainWithoutSuffix = null;
30
+ result.hostname = null;
31
+ result.isIcann = null;
32
+ result.isIp = null;
33
+ result.isPrivate = null;
34
+ result.isSpecialUse = null;
35
+ result.publicSuffix = null;
36
+ result.subdomain = null;
37
+ }
38
+ export function parseImpl(url, step, suffixLookup, partialOptions, result) {
39
+ const options = /*@__INLINE__*/ setDefaults(partialOptions);
40
+ // Very fast approximate check to make sure `url` is a string. This is needed
41
+ // because the library will not necessarily be used in a typed setup and
42
+ // values of arbitrary types might be given as argument.
43
+ if (typeof url !== 'string') {
44
+ return result;
45
+ }
46
+ // Extract hostname from `url` only if needed. This can be made optional
47
+ // using `options.extractHostname`. This option will typically be used
48
+ // whenever we are sure the inputs to `parse` are already hostnames and not
49
+ // arbitrary URLs.
50
+ //
51
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
52
+ // as input. If only hostnames are expected then `extractHostname` can be
53
+ // set to `false` to speed-up parsing. If only URLs are expected then
54
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
55
+ // and will not change the behavior of the library.
56
+ // Whether `url` itself was already a valid hostname (only computed on the
57
+ // mixedInputs path). Lets us skip the post-extraction validation below when
58
+ // extractHostname returned `url` unchanged (same reference).
59
+ let urlIsValid = false;
60
+ if (!options.extractHostname) {
61
+ result.hostname = url;
62
+ }
63
+ else if (options.mixedInputs) {
64
+ urlIsValid = isValidHostname(url);
65
+ result.hostname = extractHostname(url, urlIsValid, options.validateHostname);
66
+ }
67
+ else {
68
+ result.hostname = extractHostname(url, false, options.validateHostname);
69
+ }
70
+ // Check if `hostname` is a valid ip address
71
+ if (options.detectIp && result.hostname !== null) {
72
+ result.isIp = isIp(result.hostname);
73
+ if (result.isIp) {
74
+ return result;
75
+ }
76
+ }
77
+ // Perform hostname validation if enabled. If hostname is not valid, no need to
78
+ // go further as there will be no valid domain or sub-domain. This validation
79
+ // is applied before any early returns to ensure consistent behavior across
80
+ // all API methods including getHostname().
81
+ if (options.validateHostname &&
82
+ options.extractHostname &&
83
+ result.hostname !== null &&
84
+ // Skip the re-scan when `url` was already validated and extractHostname
85
+ // returned it unchanged (same reference => identical string, still valid).
86
+ !(urlIsValid && result.hostname === url) &&
87
+ // Skip the re-scan when extractHostname already validated the host inline
88
+ // (a confirmed-valid simple authority — see extract-hostname.ts).
89
+ !extractedHostnameValidated &&
90
+ !isValidHostname(result.hostname)) {
91
+ result.hostname = null;
92
+ return result;
93
+ }
94
+ if (step === 0 /* FLAG.HOSTNAME */ || result.hostname === null) {
95
+ return result;
96
+ }
97
+ // Flag special-use domains, only when opted in (`detectSpecialUse`) and only
98
+ // for the full `parse()` result (FLAG.ALL). Computed here, before the
99
+ // public-suffix/domain early-returns below, so single-label names like
100
+ // `localhost` (which have no registrable domain) are still flagged.
101
+ if (step === 5 /* FLAG.ALL */ && options.detectSpecialUse) {
102
+ result.isSpecialUse = isSpecialUse(result.hostname);
103
+ }
104
+ // Extract public suffix
105
+ suffixLookup(result.hostname, options, result);
106
+ if (step === 2 /* FLAG.PUBLIC_SUFFIX */ || result.publicSuffix === null) {
107
+ return result;
108
+ }
109
+ // Extract domain
110
+ result.domain = getDomain(result.publicSuffix, result.hostname, options);
111
+ if (step === 3 /* FLAG.DOMAIN */ || result.domain === null) {
112
+ return result;
113
+ }
114
+ // Extract subdomain
115
+ result.subdomain = getSubdomain(result.hostname, result.domain);
116
+ if (step === 4 /* FLAG.SUB_DOMAIN */) {
117
+ return result;
118
+ }
119
+ // Extract domain without suffix
120
+ result.domainWithoutSuffix = getDomainWithoutSuffix(result.domain, result.publicSuffix);
121
+ return result;
122
+ }
123
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Check if a hostname is an IP. You should be aware that this only works
3
+ * because `hostname` is already garanteed to be a valid hostname!
4
+ */
5
+ function isProbablyIpv4(hostname) {
6
+ // Cannot be shorted than 1.1.1.1
7
+ if (hostname.length < 7) {
8
+ return false;
9
+ }
10
+ // Cannot be longer than: 255.255.255.255
11
+ if (hostname.length > 15) {
12
+ return false;
13
+ }
14
+ let numberOfDots = 0;
15
+ for (let i = 0; i < hostname.length; i += 1) {
16
+ const code = hostname.charCodeAt(i);
17
+ if (code === 46 /* '.' */) {
18
+ numberOfDots += 1;
19
+ }
20
+ else if (code < 48 /* '0' */ || code > 57 /* '9' */) {
21
+ return false;
22
+ }
23
+ }
24
+ return (numberOfDots === 3 &&
25
+ hostname.charCodeAt(0) !== 46 /* '.' */ &&
26
+ hostname.charCodeAt(hostname.length - 1) !== 46 /* '.' */);
27
+ }
28
+ /**
29
+ * Similar to isProbablyIpv4.
30
+ */
31
+ function isProbablyIpv6(hostname) {
32
+ if (hostname.length < 3) {
33
+ return false;
34
+ }
35
+ let start = hostname.startsWith('[') ? 1 : 0;
36
+ let end = hostname.length;
37
+ if (hostname[end - 1] === ']') {
38
+ end -= 1;
39
+ }
40
+ // We only consider the maximum size of a normal IPV6. Note that this will
41
+ // fail on so-called "IPv4 mapped IPv6 addresses" but this is a corner-case
42
+ // and a proper validation library should be used for these.
43
+ if (end - start > 39) {
44
+ return false;
45
+ }
46
+ let hasColon = false;
47
+ for (; start < end; start += 1) {
48
+ const code = hostname.charCodeAt(start);
49
+ if (code === 58 /* ':' */) {
50
+ hasColon = true;
51
+ }
52
+ else if (!(((code >= 48 && code <= 57) || // 0-9
53
+ (code >= 97 && code <= 102) || // a-f
54
+ (code >= 65 && code <= 70)) // A-F (RFC 4291 §2.2: an IPv6 hextet is hex digits only)
55
+ )) {
56
+ return false;
57
+ }
58
+ }
59
+ return hasColon;
60
+ }
61
+ /**
62
+ * Check if `hostname` is *probably* a valid ip addr (either ipv6 or ipv4).
63
+ * This *will not* work on any string. We need `hostname` to be a valid
64
+ * hostname.
65
+ */
66
+ export default function isIp(hostname) {
67
+ return isProbablyIpv6(hostname) || isProbablyIpv4(hostname);
68
+ }
69
+ //# sourceMappingURL=is-ip.js.map