UNPKG

@keload/node-red-contrib-happy-http-client

Version:
10 lines (9 loc) 30.7 kB
<script type="text/html" data-template-name="happy-config"><div class="keload-node-red-contrib-happy-http-client"><div id="keload-node-red-contrib-happy-http-client-happy-config"><div class="dxp-template-form-row"><label for="node-config-input-name"><i class="fa fa-tag"></i><span data-i18n="happy-config.name;[title]happy-config.name" title="Name">Name</span></label><div class="content"><input type="text" id="node-config-input-name" data-i18n="[placeholder]happy-config.name-placeholder" placeholder=""></div></div><div><ul id="tabs"></ul></div><div class="mt-4" id="tabs-content-tabs"><div class="hidden" id="tab-endpoint"><div class="dxp-template-form-row"><label for="node-config-input-baseUrl"><i class="fa fa-globe"></i><span data-i18n="happy-config.baseUrl;[title]happy-config.baseUrl" title="Base URL">Base URL</span></label><div class="content"><input type="text" id="node-config-input-baseUrl" data-i18n="[placeholder]happy-config.baseUrl-placeholder" placeholder="Base URL"></div></div><div class="dxp-template-form-row"><label for="node-config-input-defaultArgsHeaders"><i class="fa fa-table"></i><span data-i18n="happy-config.defaultArgsHeaders;[title]happy-config.defaultArgsHeaders" title="Headers">Headers</span></label><div class="content"><input type="text" id="node-config-input-defaultArgsHeaders" data-i18n="[placeholder]happy-config.defaultArgsHeaders-placeholder" placeholder="Headers"><input type="hidden" id="node-config-input-defaultArgsHeadersType"><div class="hint max-w-[350px]">Defaults request headers (json)</div></div></div><div class="dxp-template-form-row"><label for="node-config-input-defaultArgsQueryParams"><i class="fa fa-table"></i><span data-i18n="happy-config.defaultArgsQueryParams;[title]happy-config.defaultArgsQueryParams" title="Params">Params</span></label><div class="content"><input type="text" id="node-config-input-defaultArgsQueryParams" data-i18n="[placeholder]happy-config.defaultArgsQueryParams-placeholder" placeholder="Params"><input type="hidden" id="node-config-input-defaultArgsQueryParamsType"><div class="hint max-w-[350px]">Defaults request query params (json)</div></div></div><div class="dxp-template-form-row"><label for="node-config-input-connectionKeepAlive"><span data-i18n="happy-config.connectionKeepAlive;[title]happy-config.connectionKeepAlive" title="Keep-Alive">Keep-Alive</span></label><div class="content"><input type="text" id="node-config-input-connectionKeepAlive" data-i18n="[placeholder]happy-config.connectionKeepAlive-placeholder" placeholder=""><input type="hidden" id="node-config-input-connectionKeepAliveType"><div class="hint max-w-[350px]">Must be a number in ms (0 is off)</div></div></div><div class="dxp-template-form-row"><label for="node-config-input-connectionTimeout"><span data-i18n="happy-config.connectionTimeout;[title]happy-config.connectionTimeout" title="Timeout">Timeout</span></label><div class="content"><input type="text" id="node-config-input-connectionTimeout" data-i18n="[placeholder]happy-config.connectionTimeout-placeholder" placeholder="Timeout"><input type="hidden" id="node-config-input-connectionTimeoutType"><div class="hint max-w-[350px]">Must be a number in ms</div></div></div></div><div class="hidden" id="tab-auth"><div class="dxp-template-form-row"><label for="node-config-input-requestAuthKind"><span data-i18n="happy-config.requestAuthKind;[title]happy-config.requestAuthKind" title="Type">Type</span></label><div class="content"><select id="node-config-input-requestAuthKind"></select></div></div><div class="auth-cred-container hidden"><div class="dxp-template-form-row"><label for="node-config-input-requestAuthUsername"><span data-i18n="happy-config.requestAuthUsername;[title]happy-config.requestAuthUsername" title="Username">Username</span></label><div class="content"><input type="text" id="node-config-input-requestAuthUsername" data-i18n="[placeholder]happy-config.requestAuthUsername-placeholder" placeholder=""><input type="hidden" id="node-config-input-requestAuthUsernameType"></div></div><div class="dxp-template-form-row"><label for="node-config-input-requestAuthPasswordSecret"><i class="fa fa-lock"></i><span data-i18n="happy-config.requestAuthPasswordSecret;[title]happy-config.requestAuthPasswordSecret" title="Password">Password</span></label><div class="content"><input type="password" id="node-config-input-requestAuthPasswordSecret" data-i18n="[placeholder]happy-config.requestAuthPasswordSecret-placeholder" placeholder=""></div></div></div><div class="flex items-center gap-4 mb-4"><span class="text-md font-semibold">Bearer Token</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-config-input-requestAuthBearerToken"><span data-i18n="happy-config.requestAuthBearerToken;[title]happy-config.requestAuthBearerToken" title="Bearer Token">Bearer Token</span></label><div class="content"><input type="text" id="node-config-input-requestAuthBearerToken" data-i18n="[placeholder]happy-config.requestAuthBearerToken-placeholder" placeholder="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."><input type="hidden" id="node-config-input-requestAuthBearerTokenType"></div></div></div><div class="hidden" id="tab-advanced"><div class="flex items-center gap-4 mb-4"><span class="text-md font-semibold">TLS</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-config-input-caRejectUnauthorized"><span data-i18n="happy-config.caRejectUnauthorized;[title]happy-config.caRejectUnauthorized" title="Reject">Reject</span></label><div class="content"><input type="text" id="node-config-input-caRejectUnauthorized" data-i18n="[placeholder]happy-config.caRejectUnauthorized-placeholder" placeholder="Reject Unauthorized"><input type="hidden" id="node-config-input-caRejectUnauthorizedType"><div class="hint max-w-[350px]">Verify server certificate</div></div></div></div></div></div></div></script><script type="text/html" data-template-name="happy-request"><div class="keload-node-red-contrib-happy-http-client"><div id="keload-node-red-contrib-happy-http-client-happy-request"><div class="dxp-template-form-row"><label for="node-input-name"><i class="fa fa-tag"></i><span data-i18n="happy-request.name;[title]happy-request.name" title="Name">Name</span></label><div class="content"><input type="text" id="node-input-name" data-i18n="[placeholder]happy-request.name-placeholder" placeholder=""></div></div><div class="dxp-template-form-row"><label for="node-input-clientInstance"><i class="fa fa-server"></i><span data-i18n="happy-request.clientInstance;[title]happy-request.clientInstance" title="Client">Client</span></label><div class="content force-w-full"><select id="node-input-clientInstance"></select><div class="hint max-w-[350px]">Client is not required</div></div></div><div class="dxp-template-form-row"><label for="node-input-endpoint"><span data-i18n="happy-request.endpoint;[title]happy-request.endpoint" title="Endpoint">Endpoint</span></label><div class="content"><input type="text" id="node-input-endpoint" data-i18n="[placeholder]happy-request.endpoint-placeholder" placeholder=""><input type="hidden" id="node-input-endpointType"><div class="hint max-w-[350px]">Endpoint or full URL without client</div></div></div><div class="dxp-template-form-row"><label for="node-input-method"><span data-i18n="happy-request.method;[title]happy-request.method" title="Method">Method</span></label><div class="content"><input type="text" id="node-input-method" data-i18n="[placeholder]happy-request.method-placeholder" placeholder=""><input type="hidden" id="node-input-methodType"></div></div><div><ul id="tabs-request-node"></ul></div><div class="mt-4" id="tabs-content-tabs-request-node"><div class="hidden" id="tab-request"><div class="dxp-template-form-row"><label for="node-input-defaultArgsHeaders"><i class="fa fa-table"></i><span data-i18n="happy-request.defaultArgsHeaders;[title]happy-request.defaultArgsHeaders" title="Headers">Headers</span></label><div class="content"><input type="text" id="node-input-defaultArgsHeaders" data-i18n="[placeholder]happy-request.defaultArgsHeaders-placeholder" placeholder="Headers"><input type="hidden" id="node-input-defaultArgsHeadersType"><div class="hint max-w-[350px]">Request headers (merge and override client) (json)</div></div></div><div class="dxp-template-form-row"><label for="node-input-defaultArgsQueryParams"><i class="fa fa-table"></i><span data-i18n="happy-request.defaultArgsQueryParams;[title]happy-request.defaultArgsQueryParams" title="Params">Params</span></label><div class="content"><input type="text" id="node-input-defaultArgsQueryParams" data-i18n="[placeholder]happy-request.defaultArgsQueryParams-placeholder" placeholder="Params"><input type="hidden" id="node-input-defaultArgsQueryParamsType"><div class="hint max-w-[350px]">Request query params (merge and override client) (json)</div></div></div><div class="dxp-template-form-row"><label for="node-input-body"><span data-i18n="happy-request.body;[title]happy-request.body" title="Body">Body</span></label><div class="content"><input type="text" id="node-input-body" data-i18n="[placeholder]happy-request.body-placeholder" placeholder="Body"><input type="hidden" id="node-input-bodyType"></div></div><div class="dxp-template-form-row"><label for="node-input-bodyContentType"><i class="fa fa-file-code-o"></i><span data-i18n="happy-request.bodyContentType;[title]happy-request.bodyContentType" title="Body Type">Body Type</span></label><div class="content"><select id="node-input-bodyContentType"></select><div class="hint max-w-[350px]">Body content type</div></div></div><div class="dxp-template-form-row"><label for="node-input-connectionKeepAlive"><span data-i18n="happy-request.connectionKeepAlive;[title]happy-request.connectionKeepAlive" title="Keep-Alive">Keep-Alive</span></label><div class="content"><input type="text" id="node-input-connectionKeepAlive" data-i18n="[placeholder]happy-request.connectionKeepAlive-placeholder" placeholder=""><input type="hidden" id="node-input-connectionKeepAliveType"><div class="hint max-w-[350px]">Must be a number in ms (0 is off)</div></div></div><div class="dxp-template-form-row"><label for="node-input-connectionTimeout"><span data-i18n="happy-request.connectionTimeout;[title]happy-request.connectionTimeout" title="Timeout">Timeout</span></label><div class="content"><input type="text" id="node-input-connectionTimeout" data-i18n="[placeholder]happy-request.connectionTimeout-placeholder" placeholder="Timeout"><input type="hidden" id="node-input-connectionTimeoutType"><div class="hint max-w-[350px]">Must be a number in ms</div></div></div></div><div class="hidden" id="tab-response"><div class="dxp-template-form-row"><label for="node-input-throwErrorOnError"><i class="fa fa-exclamation-circle"></i><span data-i18n="happy-request.throwErrorOnError;[title]happy-request.throwErrorOnError" title="Throw Error">Throw Error</span></label><div class="content"><div class="checkbox"><input type="checkbox" id="node-input-throwErrorOnError" checked="checked"><span class="italic">Throw error if HTTP response status code other than 2xx</span></div></div></div><div class="dxp-template-form-row"><label for="node-input-responseFormat"><i class="fa fa-share-square-o"></i><span data-i18n="happy-request.responseFormat;[title]happy-request.responseFormat" title="Format">Format</span></label><div class="content"><select id="node-input-responseFormat"></select><div class="hint max-w-[350px]">Response format</div></div></div><div class="flex items-center gap-4 mb-4"><span class="text-md font-semibold">Node outputs</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-input-splitBooleanOutputs"><i class="fa fa-map-signs"></i><span data-i18n="happy-request.splitBooleanOutputs;[title]happy-request.splitBooleanOutputs" title="Split out">Split out</span></label><div class="content"><div class="checkbox"><input type="checkbox" id="node-input-splitBooleanOutputs"><span class="italic">Split in two distinct outputs success/error</span></div></div></div></div><div class="hidden" id="tab-auth"><div class="dxp-template-form-row"><label for="node-input-requestAuthKind"><span data-i18n="happy-request.requestAuthKind;[title]happy-request.requestAuthKind" title="Type">Type</span></label><div class="content"><select id="node-input-requestAuthKind"></select></div></div><div class="auth-cred-container hidden"><div class="dxp-template-form-row"><label for="node-input-requestAuthUsername"><span data-i18n="happy-request.requestAuthUsername;[title]happy-request.requestAuthUsername" title="Username">Username</span></label><div class="content"><input type="text" id="node-input-requestAuthUsername" data-i18n="[placeholder]happy-request.requestAuthUsername-placeholder" placeholder=""><input type="hidden" id="node-input-requestAuthUsernameType"></div></div><div class="dxp-template-form-row"><label for="node-input-requestAuthPasswordSecret"><i class="fa fa-lock"></i><span data-i18n="happy-request.requestAuthPasswordSecret;[title]happy-request.requestAuthPasswordSecret" title="Password">Password</span></label><div class="content"><input type="password" id="node-input-requestAuthPasswordSecret" data-i18n="[placeholder]happy-request.requestAuthPasswordSecret-placeholder" placeholder=""></div></div></div><div class="flex items-center gap-4 mb-4"><span class="text-md font-semibold">Bearer Token</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-input-requestAuthBearerToken"><span data-i18n="happy-request.requestAuthBearerToken;[title]happy-request.requestAuthBearerToken" title="Bearer Token">Bearer Token</span></label><div class="content"><input type="text" id="node-input-requestAuthBearerToken" data-i18n="[placeholder]happy-request.requestAuthBearerToken-placeholder" placeholder="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."><input type="hidden" id="node-input-requestAuthBearerTokenType"></div></div></div><div class="hidden" id="tab-advanced"><div class="flex items-center gap-4 mb-4"><span class="text-md font-semibold">TLS</span><div class="flex-1 border-t border-gray-300"></div></div><div class="dxp-template-form-row"><label for="node-input-caRejectUnauthorized"><span data-i18n="happy-request.caRejectUnauthorized;[title]happy-request.caRejectUnauthorized" title="Reject">Reject</span></label><div class="content"><input type="text" id="node-input-caRejectUnauthorized" data-i18n="[placeholder]happy-request.caRejectUnauthorized-placeholder" placeholder="Reject Unauthorized"><input type="hidden" id="node-input-caRejectUnauthorizedType"><div class="hint max-w-[350px]">Verify server certificate</div></div></div></div></div></div></div></script> <style>.keload-node-red-contrib-happy-http-client{.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.\!block{display:block!important}.block{display:block}.flex{display:flex}.\!hidden{display:none!important}.hidden{display:none}.max-w-\[350px\]{max-width:350px}.flex-1{flex:1 1 0%}.items-center{align-items:center}.gap-4{gap:1rem}.border-t{border-top-width:1px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.\!font-bold{font-weight:700!important}.font-bold{font-weight:700}.font-semibold{font-weight:600}.italic{font-style:italic}.dxp-template-form-row{align-items:flex-start;display:flex;margin-bottom:1rem;label{flex:none;margin-right:1rem;overflow:hidden;padding-bottom:.375rem;padding-top:.375rem;position:relative;text-overflow:ellipsis;white-space:nowrap;width:100px}label{i{margin-right:.25rem}}.content{flex:1 1 0%}.content{.red-ui-typedInput-container,input,select,textarea{width:100%!important}.red-ui-typedInput-container{border:1px solid var(--red-ui-form-input-border-color);.red-ui-typedInput-type-select{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.red-ui-typedInput-type-select{.red-ui-typedInput-type-label{display:inline!important}.red-ui-typedInput-icon{margin-left:5px!important}}.red-ui-typedInput-option-trigger{.red-ui-typedInput-option-label{background-color:transparent!important;margin-top:.5rem!important}}}div.checkbox{margin-top:.35rem!important}div.checkbox{input[type=checkbox]{width:auto!important}}&.force-w-full{>div{width:100%!important}}}.hint{font-size:.875rem;line-height:1.25rem;margin-top:.25rem;--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.hint{&.hint-info{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}&.hint-danger{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}&.hint-success{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}&.hint-warning{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}}}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: } /* ! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}}</style> <script type="application/javascript">(()=>{var Z=Object.defineProperty;var N=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var q=(e,t,r)=>t in e?Z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,p=(e,t)=>{for(var r in t||(t={}))Q.call(t,r)&&q(e,r,t[r]);if(N)for(var r of N(t))W.call(t,r)&&q(e,r,t[r]);return e};function _(e){return Object.prototype.toString.call(e).slice(8,-1)}function h(e){if(_(e)!=="Object")return!1;let t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function S(e){return _(e)==="Symbol"}function R(e,t,r,n){let o={}.propertyIsEnumerable.call(n,t)?"enumerable":"nonenumerable";o==="enumerable"&&(e[t]=r),o==="nonenumerable"&&Object.defineProperty(e,t,{value:r,enumerable:!1,writable:!0,configurable:!0})}function P(e,t,r){if(!h(t))return t;let n={};if(h(e)){let c=Object.getOwnPropertyNames(e),u=Object.getOwnPropertySymbols(e);n=[...c,...u].reduce((a,l)=>{if(l==="__proto__")return a;let d=e[l];return(!S(l)&&!Object.getOwnPropertyNames(t).includes(l)||S(l)&&!Object.getOwnPropertySymbols(t).includes(l))&&R(a,l,d,e),a},{})}let o=Object.getOwnPropertyNames(t),s=Object.getOwnPropertySymbols(t);return[...o,...s].reduce((c,u)=>{if(u==="__proto__")return c;let a=t[u],l=h(e)?e[u]:void 0;return l!==void 0&&h(a)&&(a=P(l,a,r)),R(c,u,r?r(l,a,u):a,t),c},n)}function Y(e,...t){return t.reduce((r,n)=>P(r,n),e)}var G={};function T(e){return Y(G,e)}var J=e=>{if(!e||e.length===0)return"";let t=e.toLowerCase();return t.substring(0,1).toUpperCase()+t.substring(1,t.length)},x=(e,t)=>{var r;let n=(r=e==null?void 0:e.replace(/([A-Z])+/g,J).split(/(?=[A-Z])|[\.\-\s_]/).map(s=>s.toLowerCase()))==null?[]:r;if(n.length===0)return"";if(n.length===1)return n[0];let o=n.reduce((s,c)=>`${s}_${c.toLowerCase()}`);return(t==null?void 0:t.splitOnNumber)===!1?o:o.replace(/([A-Za-z]{1}[0-9]{1})/,s=>`${s[0]}_${s[1]}`)};function X(e){let t=e.startsWith("$"),r=e.startsWith("$$"),n=e.startsWith("#node-config-input")||e.startsWith("#node-input");return{isNodeIdShortcut:t,isNodeConfigIdShortcut:r,isFullSelector:n,value:t||r||n}}function f(e){let t=X(e);return t.isNodeConfigIdShortcut?`#node-config-input-${e.replace("$$","")}`:t.isNodeIdShortcut?`#node-input-${e.replace("$","")}`:e}function m(e,t,r){let n=f(e),o=t;r!=null&&r.emptyValue&&(o=[{value:"",text:r.emptyValue},...t]),$(n).empty().append(o.map(s=>$("<option>",{value:s.value,text:s.text,selected:s.value===(r==null?void 0:r.selected)})))}function j(e,t,r={additionalEvents:[]}){let n=(Array.isArray(e)?e:[e]).map(f).join(", "),o=["input",...r.additionalEvents];$(n).on(o.join(" "),()=>{t($(n).map(function(){return $(this).val()}).get())})}function b(e){let t=f(e);return $(t)}function F(e){let t=f(e);return document.querySelector(t).checked}function g(e){let t=`#tabs-content-${e.targetId}`,r=RED.tabs.create({id:e.targetId,onchange:n=>{$(t).children().addClass("hidden"),$(`#${n.id}`).removeClass("hidden")}});(e.tabsLabel||[]).forEach(n=>{r.addTab({id:`tab-${x(n)}`,label:n})}),r.activateTab(`tab-${x(e.initialTab)}`)}var L=e=>!!e&&e.constructor===Symbol;var H=e=>!!(e&&e.constructor&&e.call&&e.apply);var E=e=>{try{return Number(e)===e}catch(t){return!1}},U=e=>Object.prototype.toString.call(e)==="[object Date]";var v=e=>{if(e===!0||e===!1||e==null)return!0;if(E(e))return e===0;if(U(e))return isNaN(e.getTime());if(H(e)||L(e))return!1;let t=e.length;if(E(t))return t===0;let r=e.size;return E(r)?r===0:Object.keys(e).length===0};var k=e=>{if(!e||e.length===0)return"";let t=e.toLowerCase();return t.substring(0,1).toUpperCase()+t.substring(1,t.length)};var w=e=>e?e.split(/(?=[A-Z])|[\.\-\s_]/).map(t=>t.trim()).filter(t=>!!t).map(t=>k(t.toLowerCase())).join(" "):"";var I={INHERIT_CLIENT_TERM:"from_client"};var A={CONNECTION_TIMEOUT:5e3,CONNECTION_KEEP_ALIVE:4e3,CA_REJECT_UNAUTHORIZED:!0};function C(e={}){let{forConfig:t=!1,nameRequired:r=!1}=e,n=(o="")=>({value:t?o:I.INHERIT_CLIENT_TERM});return{name:{value:"",required:r},defaultArgsHeaders:{value:"",required:!1},defaultArgsHeadersType:{value:"",required:!1},defaultArgsQueryParams:{value:"",required:!1},defaultArgsQueryParamsType:{value:"",required:!1},connectionKeepAlive:{value:A.CONNECTION_KEEP_ALIVE,type:"num"},connectionKeepAliveType:p({},n("num")),connectionTimeout:{value:A.CONNECTION_TIMEOUT,type:"num"},connectionTimeoutType:p({},n("num")),caRejectUnauthorized:{value:A.CONNECTION_TIMEOUT,type:"bool"},caRejectUnauthorizedType:p({},n("bool")),requestAuthBearerToken:{value:"",type:"str"},requestAuthBearerTokenType:p({},n("str")),requestAuthKind:{value:"",type:"str"},requestAuthUsername:{value:"",type:"str"},requestAuthUsernameType:p({},n("str"))}}var ee=["jsonata","msg","flow","global","env"];function i(e){let{selector:t,withInherit:r=!0,withInheritLabel:n,defaultValue:o,valueType:s,withExtraTypes:c=!0,additionalTypesReadonly:u=[],opt:a={}}=e,{typedFieldSuffix:l="Type"}=a,d=[];if(v(u)||d.push(...u.map(y=>({value:y,label:y,hasValue:!1}))),r){let y=`Inherit from client ${n?` or ${n}`:""}`;d.push({value:I.INHERIT_CLIENT_TERM,label:y,hasValue:!1})}d.push(s),c&&d.push(...ee);let B=b(t).typedInput({types:d.filter(Boolean),typeField:f(`${t}${l}`)});o!==void 0&&B.typedInput("value",o)}function O(e,t,r=!1){let n=r?"$$":"$",o=["none","basic","digest"];r||o.unshift("from_client_or_none"),m(`${n}${e}`,o.map(s=>({text:w(s),value:s})),{selected:t}),i({valueType:"str",selector:`${n}requestAuthUsername`,withInherit:!r}),i({valueType:"str",selector:`${n}requestAuthPassword`,withInherit:!r}),j([`${n}${e}`],s=>{let[c,u]=s,a=["basic","digest"];a.includes(c)||a.includes(u)?b(".auth-cred-container").removeClass("hidden"):b(".auth-cred-container").addClass("hidden")},{additionalEvents:["change","keyup"]})}var te=T({category:"config",color:"#a6bbcf",defaults:p({baseUrl:{value:""}},C({nameRequired:!0,forConfig:!0})),credentials:{requestAuthPasswordSecret:{type:"text"}},inputs:1,outputs:1,icon:"font-awesome/fa-tower-broadcast",label:function(){return this.name||"HappyConfig"},oneditprepare:function(){["defaultArgsHeaders","defaultArgsQueryParams"].forEach(e=>{i({valueType:"json",selector:`$$${e}`,withInherit:!1})}),i({valueType:"num",selector:"$$connectionKeepAlive",withInherit:!1}),i({valueType:"str",selector:"$$requestAuthBearerToken",withInherit:!1}),i({valueType:"num",selector:"$$connectionTimeout",withInherit:!1}),i({valueType:"bool",selector:"$$caRejectUnauthorized",withInherit:!1}),O("requestAuthKind",this.requestAuthKind,!0),g({targetId:"tabs",initialTab:"Endpoint",tabsLabel:["Endpoint","Auth","Advanced"]})}}),D=te;var V=["GET","POST","PUT","DELETE","CONNECT","OPTIONS","TRACE","PATCH"],K=["json","text","html","buffer","stream"],z=[{label:"json",value:"application/json"},{label:"xml",value:"text/xml"},{label:"text",value:" text/plain"},{label:"sparql",value:"application/sparql-query"}];var re=T({category:"network",color:"#0593A2",defaults:p({clientInstance:{value:"",type:"happy-config",required:!1},endpoint:{value:""},endpointType:{value:"",required:!1},method:{value:"GET"},methodType:{value:"",required:!1},splitBooleanOutputs:{value:!1},throwErrorOnError:{value:!0},outputs:{value:1},body:{value:"payload",required:!1},bodyContentType:{value:"json",required:!1},bodyType:{value:"msg",required:!1},responseFormat:{value:"json"}},C({forConfig:!1})),credentials:{requestAuthPasswordSecret:{type:"text"}},inputs:1,outputs:1,paletteLabel:"Happy Request",icon:"font-awesome/fa-globe",outputLabels:function(e){return this.outputs>1?e===0?"Success":"Error":null},oneditsave:function(){this.outputs=F("$splitBooleanOutputs")?2:1},label:function(){return this.name||"HappyRequest"},oneditprepare:function(){g({targetId:"tabs-request-node",initialTab:"Request",tabsLabel:["Request","Response","Auth","Advanced"]}),i({valueType:"str",selector:"$endpoint",withInherit:!1}),["defaultArgsHeaders","defaultArgsQueryParams","body"].forEach(e=>{i({valueType:"json",selector:`$${e}`,withInherit:!1})}),i({valueType:"str",selector:"$method",withInherit:!1,additionalTypesReadonly:V}),O("requestAuthKind",this.requestAuthKind),i({valueType:"bool",selector:"$caRejectUnauthorized",withInheritLabel:"true",withInherit:!0}),i({valueType:"str",selector:"$requestAuthBearerToken",withInheritLabel:"none",withInherit:!0}),i({valueType:"num",selector:"$connectionKeepAlive",withInheritLabel:"4000ms",withInherit:!0,defaultValue:this.connectionKeepAlive}),i({valueType:"num",selector:"$connectionTimeout",withInheritLabel:"5000ms",withInherit:!0,defaultValue:this.connectionTimeout}),m("$responseFormat",K.map(e=>({value:e,text:e})),{selected:this.responseFormat}),m("$bodyContentType",z.map(e=>({value:e.value,text:e.label})),{selected:this.bodyContentType})}}),M=re;window.RED.nodes.registerType("happy-config",D);window.RED.nodes.registerType("happy-request",M);})();</script> <script type="text/markdown" data-help-name="happy-request"> A highly flexible and customizable Node-RED node designed to simplify your HTTP requests. Create and manage clients, parameterize everything, and handle errors effortlessly. 🛠️ </script>