PageSourceSearch

https://dagur.co/assets/integrationSafety-CCG9-bzb.js

js dagur.co collected 2026-10-02 01:20:31 UTC 2,615 bytes, 1 lines download raw bytes

1var e=new Set([`int-github-issues`,`int-linear-issues`]);function t(e){let t=String(e||``).replace(/[^a-z0-9]/gi,``).toLowerCase();return t===`auth`||t===`authorization`||t===`apikey`||t===`key`||t.includes(`password`)||t.includes(`secret`)||t.includes(`credential`)||t.endsWith(`token`)||t===`bearer`}function n(e){try{let n=new URL(String(e||``));return![`http:`,`https:`].includes(n.protocol)||n.username||n.password?!1:[...n.searchParams.keys()].every(e=>!t(e)&&!/signature/i.test(e))}catch{return!1}}function r(e){if(Array.isArray(e))return e.map(e=>r(e));if(!e||typeof e!=`object`)return e;let i={};for(let[a,o]of Object.entries(e))t(a)||/^(?:headers|credentials)$/i.test(a)||/url$/i.test(a)&&typeof o==`string`&&!n(o)||(i[a]=r(o));return i}function i(e){return r(e&&typeof e==`object`?e:{})}function a(t){if(!t||typeof t!=`object`)return{state:t,changed:!1};let n=!1;function r(t){if(!t||typeof t!=`object`)return t;let r={...t};for(let[a,o]of Object.entries(t)){if(!o?.type?.startsWith(`int-`))continue;if(e.has(o.type)){delete r[a],n=!0;continue}let t=i(o.config);JSON.stringify(t)!==JSON.stringify(o.config||{})&&(r[a]={...o,config:t},n=!0)}return r}let a=t;if(Array.isArray(t.screens)){let e=t.screens.map(e=>{let t=r(e?.widgets);return t===e?.widgets?e:{...e,widgets:t}});n&&(a={...t,screens:e})}else if(t.widgets){let e=r(t.widgets);n&&(a={...t,widgets:e})}return{state:a,changed:n}}function o(e,t={}){return Array.isArray(e)?e.map(e=>o(e,t)):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,n])=>[e,o(n,t)])):typeof e==`string`?e.replace(/\{\{config\.([A-Za-z0-9_-]+)\}\}/g,(e,n)=>{let r=t[n];return r==null?``:String(r)}):e}function s(e){if(typeof e!=`string`)return e;try{let{state:t,changed:n}=a(JSON.parse(e));return n?JSON.stringify(t):e}catch{return e}}function c(e){if(!e||typeof e!=`object`)return null;let i=e.source||{},a=String(i.url||``),o=a.includes(`{{config.`)||n(a)?a:``,s=Array.isArray(e.settings)?e.settings.filter(e=>e&&e.type!==`password`&&!t(e.key)).map(e=>({key:String(e.key||``),label:String(e.label||e.key||`Setting`),type:/url/i.test(e.type||e.key||``)?`url`:`text`,required:!!e.required,placeholder:String(e.placeholder||``)})):[];return{id:String(e.id||``),name:String(e.name||`Integration`),icon:e.icon||`⟡`,description:String(e.description||`Public JSON data`),category:`Integrations`,defaultW:Number(e.defaultW)||300,defaultH:Number(e.defaultH)||320,template:e.template||`list`,source:{url:o,method:`GET`,path:i.path||null,refreshInterval:Number(i.refreshInterval)||120},fields:r(e.fields||{}),settings:s}}export{c as a,a as i,n,s as o,i as r,o as t};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.