NewIntegrations Node SDK
v1.14.0
Minor Changes
- 77bc5ee:
safeFetch'stimeoutMsnow also bounds the answer's body, as a limit on how long it may go silent (IN-36). Up to the headers it is one budget per attempt, shared by the lookup and every redirect hop instead of starting again at each hop. Once the headers are in, each read of the body may waittimeoutMsfor the next chunk: an answer that starts and then stalls ends asNodeError('TIMEOUT')in whatever reads it —readArrayBuffer,readText,readJsonOrTextor the response's owntext()/json()— and its connection is closed; until now it held the step until the run was cancelled. A download that keeps arriving is not cut off, however long it takes in total. A cancellation during the answer still ends it as the cancellation. The responsesafeFetchreturns is now a copy of the runtime's, with the same status, headers andurl.timeoutConfigField's description says what the setting covers to the workflow author. - f608870: New exports for a connection
safeFetchdoes not make (PO-698).guardedLookup(port, options)is a socket lookup, shaped likenet.LookupFunction, that judges every address a name resolves to by the rulesafeFetchconnects under: one private or reserved answer refuses the name withBLOCKED_ADDRESS, an address on the run's allow-list passes for its port, the refusal is logged for the operator, and an approved name answers every address so a socket can fall back from one to the next. The caller may choose the refusal's words (refusal), refuse listed addresses for a client a VPN route cannot carry (unroutable) and name the log line's noun (noun).guardRelaxedForLocalDev()is theRVNXX_SSRF_ALLOW_PRIVATEswitch as every part of the guard reads it, announced once per process.safeFetch's own dispatcher now runs on the same judgement; what it refuses and how it says so are unchanged. The switch's one-time warning now reads "allowing private/loopback targets for web requests and connections" instead of "fetch targets". - e965f51:
rvnxx-nodes manifestnow stops when a node carries a name the registry would refuse on upload, before it writesdist/manifest.json(PO-744). That covers the slug, the version, a port's name,sourceFromConfigand fallback name, and a setting's key,dependsOn,showIfkey andcredentialType, nested settings included. Each refused value is printed with its node, the field's path and the pattern; until now such a package built, tested and previewed green and failed only on upload with a422. A port callednotFoundis the usual case: a setting may be camelCase, a port name must be kebab-case (not-found). This is an error rather than a warning, because the registry already refuses these names: none of the 364 nodes in the 25 node packages, checked against their local builds, trips it. The check is exported asnodeManifestProblems, and the four patterns asSLUG_PATTERN,NAMESPACED_SLUG_PATTERN,SEMVER_PATTERNandCONFIG_KEY_PATTERN, in the registry schema's own text.