text:
[Social Network Trends] request data meet error

Extension
https://www.raycast.com/koinzhang/social-network-trends
Description

Error:
N: request to https://tenapi.cn/resou/ failed, reason: certificate has expired

ClientRequest.<anonymous>:search-trends-of-social-network-menu-bar.js:12:19836

---
 9: `,f,`\r
10: `)),s.push(`--${o}--`),new n(s,{type:"multipart/form-data; boundary="+o})}var _t,Va,Qa,Wo,Za,Do,Xr,Fe,Ie,lr=yt(()=>{gt();Kr();({toStringTag:_t,iterator:Va,hasInstance:Qa}=Symbol),Wo=Math.random,Za="append,set,get,getAll,delete,keys,values,entries,forEach,constructor".split(","),Do=(i,n,o)=>(i+="",/^(Blob|File)$/.test(n&&n[_t])?[(o=o!==void 0?o+"":n[_t]=="File"?n.name:"blob",i),n.name!==o||n[_t]=="blob"?new Je([n],o,n):n]:[i,n+""]),Xr=(i,n)=>(n?i:i.replace(/\r?\n|\r/g,`\r
11: `)).replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22"),Fe=(i,n,o)=>{if(n.length<o)throw new TypeError(`Failed to execute '${i}' on 'FormData': ${o} arguments required, but only ${n.length} present.`)},Ie=class{#e=[];constructor(...n){if(n.length)throw new TypeError("Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.")}get[_t](){return"FormData"}[Va](){return this.entries()}static[Qa](n){return n&&typeof n=="object"&&n[_t]==="FormData"&&!Za.some(o=>typeof n[o]!="function")}append(...n){Fe("append",arguments,2),this.#e.push(Do(...n))}delete(n){Fe("delete",arguments,1),n+="",this.#e=this.#e.filter(([o])=>o!==n)}get(n){Fe("get",arguments,1),n+="";for(var o=this.#e,s=o.length,l=0;l<s;l++)if(o[l][0]===n)return o[l][1];return null}getAll(n,o){return Fe("getAll",arguments,1),o=[],n+="",this.#e.forEach(s=>s[0]===n&&o.push(s[1])),o}has(n){return Fe("has",arguments,1),n+="",this.#e.some(o=>o[0]===n)}forEach(n,o){Fe("forEach",arguments,1);for(var[s,l]of this)n.call(o,l,s,this)}set(...n){Fe("set",arguments,2);var o=[],s=!0;n=Do(...n),this.#e.forEach(l=>{l[0]===n[0]?s&&(s=!o.push(n)):o.push(l)}),s&&o.push(n),this.#e=o}*entries(){yield*this.#e}*keys(){for(var[n]of this)yield n}*values(){for(var[,n]of this)yield n}}});var Lo=Qr((Ds,zo)=>{if(!globalThis.DOMException)try{let{MessageChannel:i}=require("worker_threads"),n=new i().port1,o=new ArrayBuffer;n.postMessage(o,[o,o])}catch(i){i.constructor.name==="DOMException"&&(globalThis.DOMException=i.constructor)}zo.exports=globalThis.DOMException});var wt,Mo,Ga,fr,tn=yt(()=>{wt=require("node:fs"),Mo=Ae(Lo(),1);Kr();gt();({stat:Ga}=wt.promises),fr=class{#e;#t;constructor(n){this.#e=n.path,this.#t=n.start,this.size=n.size,this.lastModified=n.lastModified,this.originalSize=n.originalSize===void 0?n.size:n.originalSize}slice(n,o){return new fr({path:this.#e,lastModified:this.lastModified,originalSize:this.originalSize,size:o-n,start:this.#t+n})}async*stream(){let{mtimeMs:n,size:o}=await Ga(this.#e);if(n>this.lastModified||this.originalSize!==o)throw new Mo.default("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.","NotReadableError");yield*(0,wt.createReadStream)(this.#e,{start:this.#t,end:this.#t+this.size-1})}get[Symbol.toStringTag](){return"Blob"}}});var Uo={};To(Uo,{toFormData:()=>ns});function rs(i){let n=i.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!n)return;let o=n[2]||n[3]||"",s=o.slice(o.lastIndexOf("\\")+1);return s=s.replace(/%22/g,'"'),s=s.replace(/&#(\d{4});/g,(l,f)=>String.fromCharCode(f)),s}async function ns(i,n){if(!/multipart/i.test(n))throw new TypeError("Failed to fetch");let o=n.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!o)throw new TypeError("no or bad content-type header, no multipart boundary");let s=new rn(o[1]||o[2]),l,f,h,S,g,p,A=[],R=new Ie,_=W=>{h+=k.decode(W,{stream:!0})},b=W=>{A.push(W)},m=()=>{let W=new Je(A,p,{type:g});R.append(S,W)},O=()=>{R.append(S,h)},k=new TextDecoder("utf-8");k.decode(),s.onPartBegin=function(){s.onPartData=_,s.onPartEnd=O,l="",f="",h="",S="",g="",p=null,A.length=0},s.onHeaderField=function(W){l+=k.decode(W,{stream:!0})},s.onHeaderValue=function(W){f+=k.decode(W,{stream:!0})},s.onHeaderEnd=function(){if(f+=k.decode(),l=l.toLowerCase(),l==="content-disposition"){let W=f.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);W&&(S=W[2]||W[3]||""),p=rs(f),p&&(s.onPartData=b,s.onPartEnd=m)}else l==="content-type"&&(g=f);f="",l=""};for await(let W of i)s.write(W);return s.end(),R}var ae,F,$o,Pe,dr,cr,Ja,Rt,Ka,Xa,es,ts,ze,rn,jo=yt(()=>{tn();lr();ae=0,F={START_BOUNDARY:ae++,HEADER_FIELD_START:ae++,HEADER_FIELD:ae++,HEADER_VALUE_START:ae++,HEADER_VALUE:ae++,HEADER_VALUE_ALMOST_DONE:ae++,HEADERS_ALMOST_DONE:ae++,PART_DATA_START:ae++,PART_DATA:ae++,END:ae++},$o=1,Pe={PART_BOUNDARY:$o,LAST_BOUNDARY:$o*=2},dr=10,cr=13,Ja=32,Rt=45,Ka=58,Xa=97,es=122,ts=i=>i|32,ze=()=>{},rn=class{constructor(n){this.index=0,this.flags=0,this.onHeaderEnd=ze,this.onHeaderField=ze,this.onHeadersEnd=ze,this.onHeaderValue=ze,this.onPartBegin=ze,this.onPartData=ze,this.onPartEnd=ze,this.boundaryChars={},n=`\r
12: --`+n;let o=new Uint8Array(n.length);for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s),this.boundaryChars[o[s]]=!0;this.boundary=o,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=F.START_BOUNDARY}write(n){let o=0,s=n.length,l=this.index,{lookbehind:f,boundary:h,boundaryChars:S,index:g,state:p,flags:A}=this,R=this.boundary.length,_=R-1,b=n.length,m,O,k=P=>{this[P+"Mark"]=o},W=P=>{delete this[P+"Mark"]},I=(P,L,D,ge)=>{(L===void 0||L!==D)&&this[P](ge&&ge.subarray(L,D))},x=(P,L)=>{let D=P+"Mark";D in this&&(L?(I(P,this[D],o,n),delete this[D]):(I(P,this[D],n.length,n),this[D]=0))};for(o=0;o<s;o++)switch(m=n[o],p){case F.START_BOUNDARY:if(g===h.length-2){if(m===Rt)A|=Pe.LAST_BOUNDARY;else if(m!==cr)return;g++;break}else if(g-1===h.length-2){if(A&Pe.LAST_BOUNDARY&&m===Rt)p=F.END,A=0;else if(!(A&Pe.LAST_BOUNDARY)&&m===dr)g=0,I("onPartBegin"),p=F.HEADER_FIELD_START;else return;break}m!==h[g+2]&&(g=-2),m===h[g+2]&&g++;break;case F.HEADER_FIELD_START:p=F.HEADER_FIELD,k("onHeaderField"),g=0;case F.HEADER_FIELD:if(m===cr){W("onHeaderField"),p=F.HEADERS_ALMOST_DONE;break}if(g++,m===Rt)break;if(m===Ka){if(g===1)return;x("onHeaderField",!0),p=F.HEADER_VALUE_START;break}if(O=ts(m),O<Xa||O>es)return;break;case F.HEADER_VALUE_START:if(m===Ja)break;k("onHeaderValue"),p=F.HEADER_VALUE;case F.HEADER_VALUE:m===cr&&(x("onHeaderValue",!0),I("onHeaderEnd"),p=F.HEADER_VALUE_ALMOST_DONE);break;case F.HEADER_VALUE_ALMOST_DONE:if(m!==dr)return;p=F.HEADER_FIELD_START;break;case F.HEADERS_ALMOST_DONE:if(m!==dr)return;I("onHeadersEnd"),p=F.PART_DATA_START;break;case F.PART_DATA_START:p=F.PART_DATA,k("onPartData");case F.PART_DATA:if(l=g,g===0){for(o+=_;o<b&&!(n[o]in S);)o+=R;o-=_,m=n[o]}if(g<h.length)h[g]===m?(g===0&&x("onPartData",!0),g++):g=0;else if(g===h.length)g++,m===cr?A|=Pe.PART_BOUNDARY:m===Rt?A|=Pe.LAST_BOUNDARY:g=0;else if(g-1===h.length)if(A&Pe.PART_BOUNDARY){if(g=0,m===dr){A&=~Pe.PART_BOUNDARY,I("onPartEnd"),I("onPartBegin"),p=F.HEADER_FIELD_START;break}}else A&Pe.LAST_BOUNDARY&&m===Rt?(I("onPartEnd"),p=F.END,A=0):g=0;if(g>0)f[g-1]=m;else if(l>0){let P=new Uint8Array(f.buffer,f.byteOffset,f.byteLength);I("onPartData",0,l,P),l=0,k("onPartData"),o--}break;case F.END:break;default:throw new Error(`Unexpected state entered: ${p}`)}x("onHeaderField"),x("onHeaderValue"),x("onPartData"),this.index=g,this.state=p,this.flags=A}end(){if(this.state===F.HEADER_FIELD_START&&this.index===0||this.state===F.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==F.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}});var ds={};To(ds,{default:()=>di});module.exports=ja(ds);var z=require("@raycast/api");var Zr=require("@raycast/api"),ms=Zr.LocalStorage.Values;var ir=["list-icon/1.png","list-icon/2.png","list-icon/3.png","list-icon/4.png","list-icon/5.png","list-icon/6.png","list-icon/7.png","list-icon/8.png","list-icon/9.png","list-icon/10.png"],ar=["list-icon/1@dark.png","list-icon/2@dark.png","list-icon/3@dark.png","list-icon/4@dark.png","list-icon/5@dark.png","list-icon/6@dark.png","list-icon/7@dark.png","list-icon/8@dark.png","list-icon/9@dark.png","list-icon/10@dark.png"];var Be=require("react");var ni=Ae(require("node:http"),1),oi=Ae(require("node:https"),1),Le=Ae(require("node:zlib"),1),J=Ae(require("node:stream"),1),Ct=require("node:buffer");function xa(i){if(!/^data:/i.test(i))throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');i=i.replace(/\r?\n/g,"");let n=i.indexOf(",");if(n===-1||n<=4)throw new TypeError("malformed data: URI");let o=i.substring(5,n).split(";"),s="",l=!1,f=o[0]||"text/plain",h=f;for(let A=1;A<o.length;A++)o[A]==="base64"?l=!0:(h+=`;${o[A]}`,o[A].indexOf("charset=")===0&&(s=o[A].substring(8)));!o[0]&&!s.length&&(h+=";charset=US-ASCII",s="US-ASCII");let S=l?"base64":"ascii",g=unescape(i.substring(n+1)),p=Buffer.from(g,S);return p.type=f,p.typeFull=h,p.charset=s,p}var Co=xa;var X=Ae(require("node:stream"),1),be=require("node:util"),G=require("node:buffer");gt();lr();var pe=class extends Error{constructor(n,o){super(n),Error.captureStackTrace(this,this.constructor),this.type=o}get name(){return this.constructor.name}get[Symbol.toStringTag](){return this.constructor.name}};var N=class extends pe{constructor(n,o,s){super(n,o),s&&(this.code=this.errno=s.code,this.erroredSysCall=s.syscall)}};var ur=Symbol.toStringTag,en=i=>typeof i=="object"&&typeof i.append=="function"&&typeof i.delete=="function"&&typeof i.get=="function"&&typeof i.getAll=="function"&&typeof i.has=="function"&&typeof i.set=="function"&&typeof i.sort=="function"&&i[ur]==="URLSearchParams",St=i=>i&&typeof i=="object"&&typeof i.arrayBuffer=="function"&&typeof i.type=="string"&&typeof i.stream=="function"&&typeof i.constructor=="function"&&/^(Blob|File)$/.test(i[ur]),qo=i=>typeof i=="object"&&(i[ur]==="AbortSignal"||i[ur]==="EventTarget"),Fo=(i,n)=>{let o=new URL(n).hostname,s=new URL(i).hostname;return o===s||o.endsWith(`.${s}`)},Io=(i,n)=>{let o=new URL(n).protocol,s=new URL(i).protocol;return o===s};var os=(0,be.promisify)(X.default.pipeline),Y=Symbol("Body internals"),se=class{constructor(n,{size:o=0}={}){let s=null;n===null?n=null:en(n)?n=G.Buffer.from(n.toString()):St(n)||G.Buffer.isBuffer(n)||(be.types.isAnyArrayBuffer(n)?n=G.Buffer.from(n):ArrayBuffer.isView(n)?n=G.Buffer.from(n.buffer,n.byteOffset,n.byteLength):n instanceof X.default||(n instanceof Ie?(n=Oo(n),s=n.type.split("=")[1]):n=G.Buffer.from(String(n))));let l=n;G.Buffer.isBuffer(n)?l=X.default.Readable.from(n):St(n)&&(l=X.default.Readable.from(n.stream())),this[Y]={body:n,stream:l,boundary:s,disturbed:!1,error:null},this.size=o,n instanceof X.default&&n.on("error",f=>{let h=f instanceof pe?f:new N(`Invalid response body while trying to fetch ${this.url}: ${f.message}`,"system",f);this[Y].error=h})}get body(){return this[Y].stream}get bodyUsed(){return this[Y].disturbed}async arrayBuffer(){let{buffer:n,byteOffset:o,byteLength:s}=await nn(this);return n.slice(o,o+s)}async formData(){let n=this.headers.get("content-type");if(n.startsWith("application/x-www-form-urlencoded")){let s=new Ie,l=new URLSearchParams(await this.text());for(let[f,h]of l)s.append(f,h);return s}let{toFormData:o}=await Promise.resolve().then(()=>(jo(),Uo));return o(this.body,n)}async blob(){let n=this.headers&&this.headers.get("content-type")||this[Y].body&&this[Y].body.type||"",o=await this.arrayBuffer();return new me([o],{type:n})}async json(){let n=await this.text();return JSON.parse(n)}async text(){let n=await nn(this);return new TextDecoder().decode(n)}buffer(){return nn(this)}};se.prototype.buffer=(0,be.deprecate)(se.prototype.buffer,"Please use 'response.arrayBuffer()' instead of 'response.buffer()'","node-fetch#buffer");Object.defineProperties(se.prototype,{body:{enumerable:!0},bodyUsed:{enumerable:!0},arrayBuffer:{enumerable:!0},blob:{enumerable:!0},json:{enumerable:!0},text:{enumerable:!0},data:{get:(0,be.deprecate)(()=>{},"data doesn't exist, use json(), text(), arrayBuffer(), or body instead","https://github.com/node-fetch/node-fetch/issues/1000 (response)")}});async function nn(i){if(i[Y].disturbed)throw new TypeError(`body used already for: ${i.url}`);if(i[Y].disturbed=!0,i[Y].error)throw i[Y].error;let{body:n}=i;if(n===null)return G.Buffer.alloc(0);if(!(n instanceof X.default))return G.Buffer.alloc(0);let o=[],s=0;try{for await(let l of n){if(i.size>0&&s+l.length>i.size){let f=new N(`content size at ${i.url} over limit: ${i.size}`,"max-size");throw n.destroy(f),f}s+=l.length,o.push(l)}}catch(l){throw l instanceof pe?l:new N(`Invalid response body while trying to fetch ${i.url}: ${l.message}`,"system",l)}if(n.readableEnded===!0||n._readableState.ended===!0)try{return o.every(l=>typeof l=="string")?G.Buffer.from(o.join("")):G.Buffer.concat(o,s)}catch(l){throw new N(`Could not create Buffer from response body for ${i.url}: ${l.message}`,"system",l)}else throw new N(`Premature close of server response while trying to fetch ${i.url}`)}var Ke=(i,n)=>{let o,s,{body:l}=i[Y];if(i.bodyUsed)throw new Error("cannot clone body after it is used");return l instanceof X.default&&typeof l.getBoundary!="function"&&(o=new X.PassThrough({highWaterMark:n}),s=new X.PassThrough({highWaterMark:n}),l.pipe(o),l.pipe(s),i[Y].stream=o,l=s),l},is=(0,be.deprecate)(i=>i.getBoundary(),"form-data doesn't follow the spec and requires special treatment. Use alternative package","https://github.com/node-fetch/node-fetch/issues/1167"),hr=(i,n)=>i===null?null:typeof i=="string"?"text/plain;charset=UTF-8":en(i)?"application/x-www-form-urlencoded;charset=UTF-8":St(i)?i.type||null:G.Buffer.isBuffer(i)||be.types.isAnyArrayBuffer(i)||ArrayBuffer.isView(i)?null:i instanceof Ie?`multipart/form-data; boundary=${n[Y].boundary}`:i&&typeof i.getBoundary=="function"?`multipart/form-data;boundary=${is(i)}`:i instanceof X.default?null:"text/plain;charset=UTF-8",xo=i=>{let{body:n}=i[Y];return n===null?0:St(n)?n.size:G.Buffer.isBuffer(n)?n.length:n&&typeof n.getLengthSync=="function"&&n.hasKnownLength&&n.hasKnownLength()?n.getLengthSync():null},Ho=async(i,{body:n})=>{n===null?i.end():await os(n,i)};var on=require("node:util"),Tt=Ae(require("node:http"),1),mr=typeof Tt.default.validateHeaderName=="function"?Tt.default.validateHeaderName:i=>{if(!/^[\^`\-\w!#$%&'*+.|~]+$/.test(i)){let n=new TypeError(`Header name must be a valid HTTP token [${i}]`);throw Object.defineProperty(n,"code",{value:"ERR_INVALID_HTTP_TOKEN"}),n}},an=typeof Tt.default.validateHeaderValue=="function"?Tt.default.validateHeaderValue:(i,n)=>{if(/[^\t\u0020-\u007E\u0080-\u00FF]/.test(n)){let o=new TypeError(`Invalid character in header content ["${i}"]`);throw Object.defineProperty(o,"code",{value:"ERR_INVALID_CHAR"}),o}},V=class extends URLSearchParams{constructor(n){let o=[];if(n instanceof V){let s=n.raw();for(let[l,f]of Object.entries(s))o.push(...f.map(h=>[l,h]))}else if(n!=null)if(typeof n=="object"&&!on.types.isBoxedPrimitive(n)){let s=n[Symbol.iterator];if(s==null)o.push(...Object.entries(n));else{if(typeof s!="function")throw new TypeError("Header pairs must be iterable");o=[...n].map(l=>{if(typeof l!="object"||on.types.isBoxedPrimitive(l))throw new TypeError("Each header pair must be an iterable object");return[...l]}).map(l=>{if(l.length!==2)throw new TypeError("Each header pair must be a name/value tuple");return[...l]})}}else throw new TypeError("Failed to construct 'Headers': The provided value is not of type '(sequence<sequence<ByteString>> or record<ByteString, ByteString>)");return o=o.length>0?o.map(([s,l])=>(mr(s),an(s,String(l)),[String(s).toLowerCase(),String(l)])):void 0,super(o),new Proxy(this,{get(s,l,f){switch(l){case"append":case"set":return(h,S)=>(mr(h),an(h,String(S)),URLSearchParams.prototype[l].call(s,String(h).toLowerCase(),String(S)));case"delete":case"has":case"getAll":return h=>(mr(h),URLSearchParams.prototype[l].call(s,String(h).toLowerCase()));case"keys":return()=>(s.sort(),new Set(URLSearchParams.prototype.keys.call(s)).keys());default:return Reflect.get(s,l,f)}}})}get[Symbol.toStringTag](){return this.constructor.name}toString(){return Object.prototype.toString.call(this)}get(n){let o=this.getAll(n);if(o.length===0)return null;let s=o.join(", ");return/^content-encoding$/i.test(n)&&(s=s.toLowerCase()),s}forEach(n,o=void 0){for(let s of this.keys())Reflect.apply(n,o,[this.get(s),s,this])}*values(){for(let n of this.keys())yield this.get(n)}*entries(){for(let n of this.keys())yield[n,this.get(n)]}[Symbol.iterator](){return this.entries()}raw(){return[...this.keys()].reduce((n,o)=>(n[o]=this.getAll(o),n),{})}[Symbol.for("nodejs.util.inspect.custom")](){return[...this.keys()].reduce((n,o)=>{let s=this.getAll(o);return o==="host"?n[o]=s[0]:n[o]=s.length>1?s:s[0],n},{})}};Object.defineProperties(V.prototype,["get","entries","forEach","values"].reduce((i,n)=>(i[n]={enumerable:!0},i),{}));function No(i=[]){return new V(i.reduce((n,o,s,l)=>(s%2===0&&n.push(l.slice(s,s+2)),n),[]).filter(([n,o])=>{try{return mr(n),an(n,String(o)),!0}catch{return!1}}))}var as=new Set([301,302,303,307,308]),pr=i=>as.has(i);var oe=Symbol("Response internals"),U=class extends se{constructor(n=null,o={}){super(n,o);let s=o.status!=null?o.status:200,l=new V(o.headers);if(n!==null&&!l.has("Content-Type")){let f=hr(n,this);f&&l.append("Content-Type",f)}this[oe]={type:"default",url:o.url,status:s,statusText:o.statusText||"",headers:l,counter:o.counter,highWaterMark:o.highWaterMark}}get type(){return this[oe].type}get url(){return this[oe].url||""}get status(){return this[oe].status}get ok(){return this[oe].status>=200&&this[oe].status<300}get redirected(){return this[oe].counter>0}get statusText(){return this[oe].statusText}get headers(){return this[oe].headers}get highWaterMark(){return this[oe].highWaterMark}clone(){return new U(Ke(this,this.highWaterMark),{type:this.type,url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected,size:this.size,highWaterMark:this.highWaterMark})}static redirect(n,o=302){if(!pr(o))throw new RangeError('Failed to execute "redirect" on "response": Invalid status code');return new U(null,{headers:{location:new URL(n).toString()},status:o})}static error(){let n=new U(null,{status:0,statusText:""});return n[oe].type="error",n}get[Symbol.toStringTag](){return"Response"}};Object.defineProperties(U.prototype,{type:{enumerable:!0},url:{enumerable:!0},status:{enumerable:!0},ok:{enumerable:!0},redirected:{enumerable:!0},statusText:{enumerable:!0},headers:{enumerable:!0},clone:{enumerable:!0}});var ei=require("node:url"),ti=require("node:util");var Yo=i=>{if(i.search)return i.search;let n=i.href.length-1,o=i.hash||(i.href[n]==="#"?"#":"");return i.href[n-o.length]==="?"?"?":""};var Qo=require("node:net");function Vo(i,n=!1){return i==null||(i=new URL(i),/^(about|blob|data):$/.test(i.protocol))?"no-referrer":(i.username="",i.password="",i.hash="",n&&(i.pathname="",i.search=""),i)}var Zo=new Set(["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"]),Go="strict-origin-when-cross-origin";function Jo(i){if(!Zo.has(i))throw new TypeError(`Invalid referrerPolicy: ${i}`);return i}function ss(i){if(/^(http|ws)s:$/.test(i.protocol))return!0;let n=i.host.replace(/(^\[)|(]$)/g,""),o=(0,Qo.isIP)(n);return o===4&&/^127\./.test(n)||o===6&&/^(((0+:){7})|(::(0+:){0,6}))0*1$/.test(n)?!0:i.host==="localhost"||i.host.endsWith(".localhost")?!1:i.protocol==="file:"}function Xe(i){return/^about:(blank|srcdoc)$/.test(i)||i.protocol==="data:"||/^(blob|filesystem):$/.test(i.protocol)?!0:ss(i)}function Ko(i,{referrerURLCallback:n,referrerOriginCallback:o}={}){if(i.referrer==="no-referrer"||i.referrerPolicy==="")return null;let s=i.referrerPolicy;if(i.referrer==="about:client")return"no-referrer";let l=i.referrer,f=Vo(l),h=Vo(l,!0);f.toString().length>4096&&(f=h),n&&(f=n(f)),o&&(h=o(h));let S=new URL(i.url);switch(s){case"no-referrer":return"no-referrer";case"origin":return h;case"unsafe-url":return f;case"strict-origin":return Xe(f)&&!Xe(S)?"no-referrer":h.toString();case"strict-origin-when-cross-origin":return f.origin===S.origin?f:Xe(f)&&!Xe(S)?"no-referrer":h;case"same-origin":return f.origin===S.origin?f:"no-referrer";case"origin-when-cross-origin":return f.origin===S.origin?f:h;case"no-referrer-when-downgrade":return Xe(f)&&!Xe(S)?"no-referrer":f;default:throw new TypeError(`Invalid referrerPolicy: ${s}`)}}function Xo(i){let n=(i.get("referrer-policy")||"").split(/[,\s]+/),o="";for(let s of n)s&&Zo.has(s)&&(o=s);return o}var $=Symbol("Request internals"),Et=i=>typeof i=="object"&&typeof i[$]=="object",ls=(0,ti.deprecate)(()=>{},".data is not a valid RequestInit property, use .body instead","https://github.com/node-fetch/node-fetch/issues/1000 (request)"),ye=class extends se{constructor(n,o={}){let s;if(Et(n)?s=new URL(n.url):(s=new URL(n),n={}),s.username!==""||s.password!=="")throw new TypeError(`${s} is an url with embedded credentials.`);let l=o.method||n.method||"GET";if(/^(delete|get|head|options|post|put)$/i.test(l)&&(l=l.toUpperCase()),!Et(o)&&"data"in o&&ls(),(o.body!=null||Et(n)&&n.body!==null)&&(l==="GET"||l==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body");let f=o.body?o.body:Et(n)&&n.body!==null?Ke(n):null;super(f,{size:o.size||n.size||0});let h=new V(o.headers||n.headers||{});if(f!==null&&!h.has("Content-Type")){let p=hr(f,this);p&&h.set("Content-Type",p)}let S=Et(n)?n.signal:null;if("signal"in o&&(S=o.signal),S!=null&&!qo(S))throw new TypeError("Expected signal to be an instanceof AbortSignal or EventTarget");let g=o.referrer==null?n.referrer:o.referrer;if(g==="")g="no-referrer";else if(g){let p=new URL(g);g=/^about:(\/\/)?client$/.test(p)?"client":p}else g=void 0;this[$]={method:l,redirect:o.redirect||n.redirect||"follow",headers:h,parsedURL:s,signal:S,referrer:g},this.follow=o.follow===void 0?n.follow===void 0?20:n.follow:o.follow,this.compress=o.compress===void 0?n.compress===void 0?!0:n.compress:o.compress,this.counter=o.counter||n.counter||0,this.agent=o.agent||n.agent,this.highWaterMark=o.highWaterMark||n.highWaterMark||16384,this.insecureHTTPParser=o.insecureHTTPParser||n.insecureHTTPParser||!1,this.referrerPolicy=o.referrerPolicy||n.referrerPolicy||""}get method(){return this[$].method}get url(){return(0,ei.format)(this[$].parsedURL)}get headers(){return this[$].headers}get redirect(){return this[$].redirect}get signal(){return this[$].signal}get referrer(){if(this[$].referrer==="no-referrer")return"";if(this[$].referrer==="client")return"about:client";if(this[$].referrer)return this[$].referrer.toString()}get referrerPolicy(){return this[$].referrerPolicy}set referrerPolicy(n){this[$].referrerPolicy=Jo(n)}clone(){return new ye(this)}get[Symbol.toStringTag](){return"Request"}};Object.defineProperties(ye.prototype,{method:{enumerable:!0},url:{enumerable:!0},headers:{enumerable:!0},redirect:{enumerable:!0},clone:{enumerable:!0},signal:{enumerable:!0},referrer:{enumerable:!0},referrerPolicy:{enumerable:!0}});var ri=i=>{let{parsedURL:n}=i[$],o=new V(i[$].headers);o.has("Accept")||o.set("Accept","*/*");let s=null;if(i.body===null&&/^(post|put)$/i.test(i.method)&&(s="0"),i.body!==null){let S=xo(i);typeof S=="number"&&!Number.isNaN(S)&&(s=String(S))}s&&o.set("Content-Length",s),i.referrerPolicy===""&&(i.referrerPolicy=Go),i.referrer&&i.referrer!=="no-referrer"?i[$].referrer=Ko(i):i[$].referrer="no-referrer",i[$].referrer instanceof URL&&o.set("Referer",i.referrer),o.has("User-Agent")||o.set("User-Agent","node-fetch"),i.compress&&!o.has("Accept-Encoding")&&o.set("Accept-Encoding","gzip, deflate, br");let{agent:l}=i;typeof l=="function"&&(l=l(n)),!o.has("Connection")&&!l&&o.set("Connection","close");let f=Yo(n),h={path:n.pathname+f,method:i.method,headers:o[Symbol.for("nodejs.util.inspect.custom")](),insecureHTTPParser:i.insecureHTTPParser,agent:l};return{parsedURL:n,options:h}};var et=class extends pe{constructor(n,o="aborted"){super(n,o)}};lr();tn();var us=new Set(["data:","http:","https:"]);async function tt(i,n){return new Promise((o,s)=>{let l=new ye(i,n),{parsedURL:f,options:h}=ri(l);if(!us.has(f.protocol))throw new TypeError(`node-fetch cannot load ${i}. URL scheme "${f.protocol.replace(/:$/,"")}" is not supported.`);if(f.protocol==="data:"){let m=Co(l.url),O=new U(m,{headers:{"Content-Type":m.typeFull}});o(O);return}let S=(f.protocol==="https:"?oi.default:ni.default).request,{signal:g}=l,p=null,A=()=>{let m=new et("The operation was aborted.");s(m),l.body&&l.body instanceof J.default.Readable&&l.body.destroy(m),!(!p||!p.body)&&p.body.emit("error",m)};if(g&&g.aborted){A();return}let R=()=>{A(),b()},_=S(f.toString(),h);g&&g.addEventListener("abort",R);let b=()=>{_.abort(),g&&g.removeEventListener("abort",R)};_.on("error",m=>{s(new N(`request to ${l.url} failed, reason: ${m.message}`,"system",m)),b()}),fs(_,m=>{p&&p.body&&p.body.destroy(m)}),process.version<"v14"&&_.on("socket",m=>{let O;m.prependListener("end",()=>{O=m._eventsCount}),m.prependListener("close",k=>{if(p&&O<m._eventsCount&&!k){let W=new Error("Premature close");W.code="ERR_STREAM_PREMATURE_CLOSE",p.body.emit("error",W)}})}),_.on("response",m=>{_.setTimeout(0);let O=No(m.rawHeaders);if(pr(m.statusCode)){let P=O.get("Location"),L=null;try{L=P===null?null:new URL(P,l.url)}catch{if(l.redirect!=="manual"){s(new N(`uri requested responds with an invalid redirect URL: ${P}`,"invalid-redirect")),b();return}}switch(l.redirect){case"error":s(new N(`uri requested responds with a redirect, redirect mode is set to error: ${l.url}`,"no-redirect")),b();return;case"manual":break;case"follow":{if(L===null)break;if(l.counter>=l.follow){s(new N(`maximum redirect reached at: ${l.url}`,"max-redirect")),b();return}let D={headers:new V(l.headers),follow:l.follow,counter:l.counter+1,agent:l.agent,compress:l.compress,method:l.method,body:Ke(l),signal:l.signal,size:l.size,referrer:l.referrer,referrerPolicy:l.referrerPolicy};if(!Fo(l.url,L)||!Io(l.url,L))for(let Q of["authorization","www-authenticate","cookie","cookie2"])D.headers.delete(Q);if(m.statusCode!==303&&l.body&&n.body instanceof J.default.Readable){s(new N("Cannot follow redirect with body being a readable stream","unsupported-redirect")),b();return}(m.statusCode===303||(m.statusCode===301||m.statusCode===302)&&l.method==="POST")&&(D.method="GET",D.body=void 0,D.headers.delete("content-length"));let ge=Xo(O);ge&&(D.referrerPolicy=ge),o(tt(new ye(L,D))),b();return}default:return s(new TypeError(`Redirect option '${l.redirect}' is not a valid value of RequestRedirect`))}}g&&m.once("end",()=>{g.removeEventListener("abort",R)});let k=(0,J.pipeline)(m,new J.PassThrough,P=>{P&&s(P)});process.version<"v12.10"&&m.on("aborted",R);let W={url:l.url,status:m.statusCode,statusText:m.statusMessage,headers:O,size:l.size,counter:l.counter,highWaterMark:l.highWaterMark},I=O.get("Content-Encoding");if(!l.compress||l.method==="HEAD"||I===null||m.statusCode===204||m.statusCode===304){p=new U(k,W),o(p);return}let x={flush:Le.default.Z_SYNC_FLUSH,finishFlush:Le.default.Z_SYNC_FLUSH};if(I==="gzip"||I==="x-gzip"){k=(0,J.pipeline)(k,Le.default.createGunzip(x),P=>{P&&s(P)}),p=new U(k,W),o(p);return}if(I==="deflate"||I==="x-deflate"){let P=(0,J.pipeline)(m,new J.PassThrough,L=>{L&&s(L)});P.once("data",L=>{(L[0]&15)===8?k=(0,J.pipeline)(k,Le.default.createInflate(),D=>{D&&s(D)}):k=(0,J.pipeline)(k,Le.default.createInflateRaw(),D=>{D&&s(D)}),p=new U(k,W),o(p)}),P.once("end",()=>{p||(p=new U(k,W),o(p))});return}if(I==="br"){k=(0,J.pipeline)(k,Le.default.createBrotliDecompress(),P=>{P&&s(P)}),p=new U(k,W),o(p);return}p=new U(k,W),o(p)}),Ho(_,l).catch(s)})}function fs(i,n){let o=Ct.Buffer.from(`0\r
13: \r
14: `),s=!1,l=!1,f;i.on("response",h=>{let{headers:S}=h;s=S["transfer-encoding"]==="chunked"&&!S["content-length"]}),i.on("socket",h=>{let S=()=>{if(s&&!l){let p=new Error("Premature close");p.code="ERR_STREAM_PREMATURE_CLOSE",n(p)}},g=p=>{l=Ct.Buffer.compare(p.slice(-5),o)===0,!l&&f&&(l=Ct.Buffer.compare(f.slice(-3),o.slice(0,3))===0&&Ct.Buffer.compare(p.slice(-2),o.slice(3))===0),f=p};h.prependListener("close",S),h.on("data",g),i.on("close",()=>{h.removeListener("close",S),h.removeListener("data",g)})})}var ii="https://tenapi.cn/resou/",ai="https://tenapi.cn/zhihuresou/",si="https://tenapi.cn/douyinresou/",li="https://www.douyin.com/search/";var ui=require("@raycast/api"),fi=()=>{let[i,n]=(0,Be.useState)([]),[o,s]=(0,Be.useState)([]),[l,f]=(0,Be.useState)([]),h=(0,Be.useCallback)(async()=>{try{let S=new ui.Cache,g=S.get("WeiBo");typeof g=="string"&&n(JSON.parse(g));let p=S.get("ZhiHu");typeof p=="string"&&f(JSON.parse(p));let A=S.get("DouYin");typeof A=="string"&&s(JSON.parse(A)),tt(ii).then(R=>R.json()).then(R=>{let _=R.list.slice(0,10);S.set("WeiBo",JSON.stringify(_)),n(_)}),tt(ai).then(R=>R.json()).then(R=>{let _=R.list.slice(0,10);S.set("ZhiHu",JSON.stringify(_)),f(_)}),tt(si).then(R=>R.json()).then(R=>{let _=R.list.slice(0,10);S.set("DouYin",JSON.stringify(_)),s(_)})}catch(S){if(console.error(String(S)),S instanceof et)return}},[]);return(0,Be.useEffect)(()=>{h()},[h]),{weiBoTrends:i,zhiHuTrends:l,douYinTrends:o}};var le=require("react/jsx-runtime");function di(){let{weiBoTrends:i,zhiHuTrends:n,douYinTrends:o}=fi();return(0,le.jsxs)(z.MenuBarExtra,{isLoading:i.length===0&&n.length===0&&o.length===0,icon:{source:{light:"menu-bar-icon/trend-menu-bar.png",dark:"menu-bar-icon/trend-menu-bar@dark.png"}},children:[(0,le.jsx)(z.MenuBarExtra.Item,{title:"WeiBo",icon:{source:{light:"menu-bar-icon/trend-weibo.png",dark:"menu-bar-icon/trend-weibo@dark.png"}}}),i?.map((s,l)=>(0,le.jsx)(z.MenuBarExtra.Item,{icon:{source:{light:`${ir[l]}`,dark:`${ar[l]}`}},title:s.name+`    ${(s.hot/1e4).toFixed(1)}w`,onAction:async f=>{f.type=="left-click"?await(0,z.open)(s.url):await z.Clipboard.copy(s.name)}},l+s.url)),(0,le.jsx)(z.MenuBarExtra.Item,{title:"ZhiHu",icon:{source:{light:"menu-bar-icon/trend-zhihu.png",dark:"menu-bar-icon/trend-zhihu@dark.png"}}}),n?.map((s,l)=>(0,le.jsx)(z.MenuBarExtra.Item,{icon:{source:{light:`${ir[l]}`,dark:`${ar[l]}`}},title:s.query,onAction:async f=>{f.type=="left-click"?await(0,z.open)(s.url):await z.Clipboard.copy(s.name)}},l+s.url)),(0,le.jsx)(z.MenuBarExtra.Item,{title:"DouYin",icon:{source:{light:"menu-bar-icon/trend-douyin.png",dark:"menu-bar-icon/trend-douyin@dark.png"}}}),o?.map((s,l)=>(0,le.jsx)(z.MenuBarExtra.Item,{icon:{source:{light:`${ir[l]}`,dark:`${ar[l]}`}},title:s.name+`    ${(s.hot/1e4).toFixed(1)}w`,onAction:async f=>{f.type=="left-click"?await(0,z.open)(li+encodeURIComponent(s.name)):await z.Clipboard.copy(s.name)}},l+s.name)),(0,le.jsx)(z.MenuBarExtra.Separator,{}),(0,le.jsx)(z.MenuBarExtra.Item,{title:"Preferences",icon:z.Icon.Gear,onAction:()=>{(0,z.openCommandPreferences)().then()},shortcut:{modifiers:["cmd"],key:","}})]})}0&&(module.exports={});
15: /*! fetch-blob. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
---

ClientRequest.emit:node:events:513:28
ClientRequest.emit:node:domain:489:12
TLSSocket.socketErrorListener:node:_http_client:494:9

Steps To Reproduce
click menu bar icon can reproduce it.
Current Behaviour
No response
Expected Behaviour
No response

Hi @airingursb Thanks for the feedback, I submitted a PR #6664 to update

Add more trends options for social platforms （baidu, toutiao, toutiao news,bilibili）
Fix the problem of failing to get trends

Hi @airingursb The extension has been updated, so I'm closing this issue, if there are any other questions, feel free to give feedback
@raycastbot close this issue

authors: airingursb koinzhang


text:
Update rehooks extension

Description

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

I guess this PR now has the potential to be merged.

I'm just the assigned reviewer on this PR 🙂
When can you do it yourself?

I'm just the assigned reviewer on this PR 🙂
When can you do it yourself?

It's okay, I'm on the way to do it right now.

It's finally here 🙂

Hi 👋
Looks good to me, approved 🔥

Thank you sir ♥🫡

source: gharchive/pull-request

repo: raycast/extensions

license: MIT

license_type: permissive

license_source: github-api


text:
VSCode: Add extension commands

Description
Port of #4099
Add following commands
Commands
Search and trigger commands directly from Raycast. This command requires that the Raycast for VSCode extension is installed in VSCode. If not the user will get an action to do so.
VSCode has some internal API limitations and therefore not all command aliases can be shown. If this is the case the command ID will be shown instead.
User can also store the VSCode command as quicklink (using URL schemas in the background) which makes it accessible from the root menu of raycast.

Show Installed Extensions
Show locally installed extensions.

Install Extensions
Install Extension in VSCode.

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Thanks for the update @tonka3000, that's really awesome 🔥
@thomaspaulmann do you mind giving it a spin

Hey @tonka3000 I was about to test this, any reason why you closed? Thanks!

@tonka3000 thanks for your work on this and other extensions; I use the GitLab extension dozens of times every day.
I’m curious what announcements you refer to…I must’ve missed something

+1 to what @andrewminion-luminfire just said, first of all, thanks, and we respect your choice... but what exactly happened?

@eduwass I opened the PR again so that this work can be used, feel free to test it.

authors: andrewminion-luminfire eduwass pernielsentikaer tonka3000


text:
Update hacker-news extension

Description
Add functionality to summarize articles with OpenAI GPT-3.5 Turbo.
The OpenAI key is optional. If the user does not provide it, the summarize function will be unavailable.

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Seems like it doesn't work if you have Raycast AI, I didn't enter a OpenAI key and getting this

Seems like it doesn't work if you have Raycast AI, I didn't enter a OpenAI key and getting this

It should work now.

Still facing the same issue, I have Raycast AI and it still just gives me the error - it should work if I only had Raycast AI, right?

Collaborator

Hi, I'm checking the rayCast AI subscription with environment.canAccess(AI). I don't have a subscription, but in my case, I just debug it by changing it to a fixed value like 'true' and it works for me. So please check that branch is updated and could you check if environment.canAccess(AI) returns true in your case?
Thanks.

@pernielsentikaer  I just realized that PR wasn't up-to-date. I thought it was. I'm getting nothing new to publish, but actually, there is something to publish.
ready -  validate git repository ready -  getting fork ready -  preparing clone ready -  checking for new contributions error -  preparing extension seems like there is nothing new to publish

Please check it again
Hope this time will work :)

Hi @hakob8956! 👋
It works as expected now, but I think we can improve the user experience (UX). It feels wrong to have two hotkeys to retrieve the data, and it would also consume a lot of credits if it only summarizes the next item in the list.
Here's my suggestion: let's switch to a new markdown view where it performs its magic. This way, it will feel more like Raycast.
Do you need my assistance with this, or can you handle it on your own?

Hi @pern

Hi @hakob8956! 👋
It works as expected now, but I think we can improve the user experience (UX). It feels wrong to have two hotkeys to retrieve the data, and it would also consume a lot of credits if it only summarizes the next item in the list.
Here's my suggestion: let's switch to a new markdown view where it performs its magic. This way, it will feel more like Raycast.
Do you need my assistance with this, or can you handle it on your own?

Hi @pernielsentikaer , I would like to understand the concept of markdown view more. Will it no longer list items? What exactly do you mean by that? Could you give an example of a plugin or some mocks?

Sorry for the delay here @hakob8956 - Somehow I missed the notification regarding this PR
First opening the detail panel on an item and then running another command feels a bit heavy and is not a good UX, what would be is to push to a  pane with the data instead


text:
Add china-ip-address extension

Description

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Hello,
Firstly, I'd like to clarify that my plugin, "China IP Address", is
distinct from the two you've mentioned. They return different public IP
addresses, so there's a unique value to what my plugin offers. Let me delve
deeper into the reasons:
Due to the unique network environment in China, most Chinese internet users
don't possess a dedicated public IP address. In fact, many of us aren't
even aware of our public IP as we are primarily operating within an
internal network.
However, in certain scenarios, such as when accessing restricted databases
or APIs, it's crucial to identify our public IP. While the two plugins you
mentioned do provide this service, the manner in which my plugin operates
is distinct.
To accurately determine the public IP of a Chinese user, one must utilize
APIs provided by Chinese companies. This ensures you get the actual Chinese
public IP, not one from a proxy server.
The two plugins you referenced tend to return proxy IPs for Chinese users,
which isn't the genuine Chinese IP.
I understand that you might not fully grasp the difference between my
plugin and the others since you haven't lived in China. However, I assure
you, for Chinese users, my plugin holds tangible value and significance.
Thank you for your feedback. I hope that my plugin can serve and benefit
many more users in China.
Per Nielsen Tikær @.***> 于2023年10月10日周二 16:43写道：

@.**** commented on this pull request.
Hi 👋
Thanks for your contribution 🔥
How is this compared to https://www.raycast.com/koinzhang/ip-geolocation
and https://www.raycast.com/Kang/myip
Don't you see the same data?
—
Reply to this email directly, view it on GitHub
https://github.com/raycast/extensions/pull/8571#pullrequestreview-1666843121,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AF7XKP4VG4ARQ27TXBNSL63X6UDCLAVCNFSM6AAAAAA5HBFQVCVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTMNRWHA2DGMJSGE
.
You are receiving this because you authored the thread.Message ID:
@.***>

Thanks for the clarification @ErlichLiu 🔥

authors: ErlichLiu pernielsentikaer


text:
Update port-manager extension

Description

Improved menu bar commands
Removed the preference to use sudo for listing and killing processes
Added the "named ports" feature (special thanks to @Sheraff)
Made command names more concise

Screencast
https://github.com/raycast/extensions/assets/45899273/bc6c5a7e-4af1-431f-ad60-4c8d43132fcc

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

It seems like there is something with the isLoading prop in the menubar command, for some reason I can't debug it at the moment, can you take a stab? It's like its not unloading correctly @lucaschultz

@lucaschultz @pernielsentikaer Should I try and take a stab at it? I don't think I'll be able to commit to the repo but maybe I can find the issue and we can finally merge this?

@lucaschultz @pernielsentikaer Should I try and take a stab at it? I don't think I'll be able to commit to the repo but maybe I can find the issue and we can finally merge this?

@Sheraff, sorry, I'm a bit short on time at the moment. Thank you for your patience and for keeping the issue alive.

It seems like there is something with the isLoading prop in the menubar command, for some reason I can't debug it at the moment, can you take a stab? It's like its not unloading correctly @lucaschultz

@pernielsentikaer, I used to use a hack (1-second timeout) to give the processes enough time to load. This might have created a race condition. I refactored the process retrieval to use the useCachedPromise hook and am now utilizing the isLoading property of the hook. Does this solve the problem?

Much better 🙂

Is the prettier check preventing a release? It doesn't seem to have been updated in the store and there wasn't a slack notification

@pernielsentikaer can we do anything to get this released to the store?

@pernielsentikaer can we do anything to get this released to the store?

It actually got released today at some point.

I manually ran it @Sheraff 🙂

authors: Sheraff lucaschultz pernielsentikaer


text:
System Function descriptions don't show

Hovering over system functions like •Out doesn't show their description - it would be nice to have these as well.

@razetime Is there any update regarding this yet?

Sadly, it looks like @razetime passed away recently.

@sohang3112 probably nobody.

That is very sad news, I was wondering what that podcast title meant but hadn’t listened to it…
I have contributed to this repo a fair amount so I can try to maintain it, and look into this issue soon.

Starting to look into this. It will require scraping spec/system.md which should be easy. The regex '^\|\s*`(•\w+)`\s*\|\s*(.*)$' matches each system function name $1 and description $2. I will update gen_help_writer.lua to do that.
I think probably the way it should work is hovering directly on the bullet should still give the general bullet/system docs, but hovering anywhere in the word to the right of it should give the specific system function description.

I have implemented this in master. However, I don't have permission to publish the extension on the VS Code marketplace. I guess I'll probably have to publish my own copy of it. If I do that, I wonder if I should also use my fork of the repo and do further development there.

I don't have permission to publish the extension on the VS Code marketplace. I guess I'll probably have to publish my own copy of it.

@mk12 This VS Code issue for transferring ownership of extensions recommends deprecating the old extension so that VS Code will prompt users to install the new extension.

Unfortunately I can't deprecate the extension for the same reason that I can't re-publish it myself. But I've published a new extension and added a note to the description which should hopefully point people in the right direction:

This new BQN extension is 0.1.7 and includes the system function docs (the subject of this issue).
See #32 for more details.

Thanks @mk12

source: gharchive/issue

repo: razetime/bqn-vscode


text:
Updating Fork from original bridgecrewio/terragoat.

Updating Fork from original bridgecrewio/terragoat.

Updating Fork

repo: rbaccus/terragoat


text:
BUILD FAILED (FreeBSD 12.1-RELEASE using ruby-build 20191205)

I attempted to install ruby 2.6.5 with ruby-build on a 32-bit powerpc with freebsd and came across the following:
ruby-build.20191225171610.23660.log
root@machine:~ # rbenv install 2.6.5
Downloading ruby-2.6.5.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.5.tar.bz2
Installing ruby-2.6.5...

BUILD FAILED (FreeBSD 12.1-RELEASE using ruby-build 20191205)

Inspect or clean up the working tree at /tmp/ruby-build.20191225171610.23660.WmQdcU
Results logged to /tmp/ruby-build.20191225171610.23660.log

Last 10 log lines:
gmake[1]: Entering directory '/tmp/ruby-build.20191225171610.23660.WmQdcU/ruby-2.6.5'
gmake[2]: Entering directory '/tmp/ruby-build.20191225171610.23660.WmQdcU/ruby-2.6.5/ext/-test-/arith_seq/extract'
compiling extract.c
linking shared-object -test-/arith_seq/extract.so
../../../../libruby.so: file not recognized: File format not recognized
gmake[2]: *** [Makefile:267: ../../../../.ext/powerpc-freebsd12.1/-test-/arith_seq/extract.so] Error 1
gmake[2]: Leaving directory '/tmp/ruby-build.20191225171610.23660.WmQdcU/ruby-2.6.5/ext/-test-/arith_seq/extract'
gmake[1]: *** [exts.mk:91: ext/-test-/arith_seq/extract/all] Error 2
gmake[1]: Leaving directory '/tmp/ruby-build.20191225171610.23660.WmQdcU/ruby-2.6.5'
gmake: *** [uncommon.mk:286: build-ext] Error 2
root@machine:~ #

Same issue for me as well.

Repeatable here with ruby-build on 32-bit powerpc FreeBSD 12.1 for both 2.6.5 and 2.5.7.
(For what it's worth, I know this is not the correct venue for this extra bit of information, but the FreeBSD 12.1 "port" build of ruby 2.6 for 32-bit powerpc also fails, but in a different way: the bootstrap build of miniruby always segfaults under even the most trivial use cases.)

See also: https://svnweb.freebsd.org/changeset/ports/522532
It looks PowerPC requires GCC to build Ruby.

Repeatable for me on FreeBSD 12.1 AMD64, with Ruby 2.5.1 and Ruby 2.7.1.  My log stops abruptly at the following line, though:
ln -sf ../../../.ext/include/x86_64-freebsd12.1/rb_mjit_min_header-2.7.1.h include/ruby-2.7.0/x86_64-freebsd12.1/rb_mjit_min_header-2.7.1.h

authors: duncan-bayne goosnarrggh marvindanig metalefty tibikuera

repo: rbenv/ruby-build

license: mit

license_source: bigquery


text:
Add suppression for instance guards

Implementation for https://github.com/rbxts-flamework/core/pull/37
Not familiar with this codebase, but this doesn't seem like a breaking change, but please if this is not something that is wanted in Flamework, or I am doing it wrong, this PR can be disregarded.

Closed because of the Discord conversation: https://canary.discord.com/channels/476080952636997633/506983834877689856/925714118206451782

repo: rbxts-flamework/components


text:
submodules bad, let's not use them

As has been said on the lists, people don't like submodules, we can discuss and review solutions here if you'd like.

Initial testing indicates that we're going to need to figure out how to use multiple ansible-role-requirements.yml files.  The ansible-role-requirements.yml that we're using in /opt/rpc-openstack is overriding the file location that OSA is using.  Some how we need deploy.sh to use the file in /opt/rpc-openstack and OSA to use the file in /opt/rpc-openstack/openstack-ansible.  I think we could create a directory and place both of the files in there with multiple names, or merge the files, but I'm pretty sure the OSA file is appended to during the bootstrap stages.

The bootstrap-ansible.sh needs to be run earlier on in the deploy.sh script.
# bootstrap the AIO
if [[ "${DEPLOY_AIO}" == "yes" ]]; then
  # force the deployment of haproxy for an AIO
  export DEPLOY_HAPROXY="yes"
  if [[ ! -d /etc/openstack_deploy/ ]]; then
    ./scripts/bootstrap-ansible.sh
>>> PUT IT HERE >>>    ./scripts/bootstrap-aio.sh
    pushd ${RPCD_DIR}
      for filename in $(find etc/openstack_deploy/ -type f -iname '*.yml'); do
        if [[ ! -a "/${filename}" ]]; then

already done did it

This issue is now redundant. We have moved to ansible roles for the things that are actual ansible roles, and we continue to use a submodule for OSA as it is not an ansible role.

authors: d34dh0r53 mancdaz prometheanfire

repo: rcbops/rpc-openstack


text:
Redemption Organisation

The organisation and communication for the redemption process is worked in this doc.

Link to the trello board that I am working out of https://trello.com/b/iwZVCVGh

repo: rchain/Members


text:
[WINDOWS] Get tracing in the new messaging setup working under window…

…s again.
Windows does not support Domain sockets so for windows it should be possible to
define a port number on the loopback interface (127.0.0.1) as a domain socket alternative.
This pull request adds the possibility (if the port is not 0) to use a loopback IP socket
for communication in stead of a domain socket. This allwos the messaging concept to also
work on a windows platform.

@lukiwa it could be used on linux as well however it is not recommended as the domain sockets are faster. So hiding it behind a Preprocessor might reduce code size but also hides a potential feature.
I am a bit in the middle. See advantages for left and see advantages for right. So your opinion is decisive. Where do you want to go?
And agree will update the documentation of Doxygen :-)

Agree, maybe we can use this feature for something in the future. Personally, I would go for two constructors (or specific methods) - one for constructing domain socket (with argument basePath) and the second one with argument socketPort.
Optionally, if the code size is an issue, maybe just set the default value for socketPort arguments as 0?

authors: lukiwa pwielders

repo: rdkcentral/Thunder


text:
censorDataFix : Adding local copy of censorData

Description
Enter a detailed description of the PR here, including the nature and purpose of the changes.
JIRA Ticket
Include a link to the JIRA Ticket linked to this PR.
Issue-0000
Additional Info (Test steps / Steps to reproduce etc.)
Details on how to test the feature

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

authors: CLAassistant neeradanelxsi

repo: rdkcentral/firebolt-certification-app


text:
Add support for user groups

Invented new userId 'syntax'... "~" (notice that's a tilde, not a dash)

Method calls from one (full) userId should cause method responses only to that client/app using that userId

Events heading to one (full) userId should go to all userIds that have the same embedded groupName value

In events.mjs::sendEvent, instead of sending one message just for the given ws, look up all the ws's in the same group and send messages to each

Added some doc to docs/UsageWithinApps.md

Added new doc page, docs/UserGroups.md

Added a map from groupName to list of full userIds in userManagement.mjs to make it easy to find all full userIds in the same group as the group of a given full userId

Because the apps may send method calls and event listeners in any order, the message IDs might be different... so, changed the eventListenerMap data structure in events.mjs to be a map of maps, with the top-level map being full userId and the inner maps being what was there originally... a map from event name to message id

In index.mjs, added "123~A", "456-A", "789-A" so the QA team can use these out-of-the-box (e.g., use 123~A for the certification app and 456~A for the app under test).

To test, use any app (e.g., https://github.comcast.com/ottx/simple-firebolt-test-app suitably edited to have some event listener code which console.logs when it is called) and then run like this:
http://localhost:8081?mf=ws://localhost:9998/123-A
http://localhost:8082?mf=ws://localhost:9998/456-A
Note that the "core" user id values (123, 456) are different, which keeps method call mock overrides separate, but they are in the same "user group" (A).

repo: rdkcentral/mock-firebolt


text:
ipc monitor removed

Summary: Ipc monitor removed
Type: Feature
Test Plan: UT
Jira: RIALTO-164

https://jenkins.code.rdkcentral.com/job/github-triggered/33544/ started

https://jenkins.code.rdkcentral.com/job/build-component/71105/ started.

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/github-triggered/2010/ started

https://jenkinsrdkm.cmf.code.rdkcentral.com/job/build-component-platform/4206/ started.

Sanity tests for ['BCM Reference Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/9960/

Sanity tests for ['RPI3 Hybrid/MC'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/10008/

Sanity tests for ['RPI3 Refapp2'] added.
https://jenkinsrdkm.cmf.code.rdkcentral.com/job/test-components-flow/10007/

authors: rdkcmf-jenkins skywojciechowskim

repo: rdkcentral/rialto


text:
Cleanups and additional tests to improve test coverage

No actual new functionality here, this is just some code cleanup and additional testing to improve test coverage on the C++ side.
The new coverage with these changes is 94.4% on lines of code. The original coverage (after merging the fixes for #2814 and #2815, which I discovered while doing this exercise and which already helped things) was 90.4%. Not a huge improvement, but certainly a step forward.

@bp-kelley Thanks for catching those incorrectly added files. They're now gone.

@bp-kelley : ok to merge this?

repo: rdkit/rdkit


text:
RWMol should reset(), not release(), dp_delAtoms and dp_delBonds

Simple fix to use reset() instead of release()
Thanks to @rvianello for pointing this out.

thanks, I'm glad it helped.

authors: greglandrum rvianello


text:
Component Tree Horizontal View

We need to give scalability options to the user.
Our goal is to make the tree scale horizontally, but also make sure that the way it scales, the distance between the nodes, between the ancestors and the children, etc., are done in a nice way.
The user can have the option to interact with our interface with a button and automatically change the way the tree is visualised. We can have a first draft and keep working on it till we think it's good enough.

Fixed through pull request #55

repo: react-bratus/react-bratus


text:
Drop state is not updated when drop target props change

Describe the bug
The stress test example in the docs in the docs is intended to show that

React DnD keeps track of the changing props, and if a component receives the new props, React DnD recalculates the drag and drop state.

But this doesn't seem to be the case. In the example, the food dustbin is the only valid drop target for the 'Banana' drag item but when you start dragging 'Banana', the wrong drop targets are highlighted. The drop state seems to be stale after the props have changed.
Reproduction
The demo app below is identical to the example app in the docs, with the exception of some cosmetic restyling. It has four drop targets (dustbins) arranged in a 2x2 grid:

The quadrants of the grid are labelled 1 through 4.
The dustbins are rotated clockwise every 5 seconds.
There are 4 drag items: 'Red', 'Yellow', 'Green', 'Blue'. Each item may only be dropped into a dustbin of the same colour.

Live Reproduction
Steps to reproduce the behavior:

When the red dustbin is in quadrant 1, begin dragging 'Red'. You can see that the red dustbin is highlighted as a valid drop target.
Wait for the dustbins to rotate once. After the rotation, the blue dustbin is in quadrant 1 and is incorrectly highlighted as a valid drop target. It appears that the drop state was not updated after the dustbin's props changed from 'red' to 'blue'.
Drop 'Red' into the blue dustbin - this should not be allowed.

(The gif below goes through these steps.)
Expected behavior
When 'Red' is being dragged, only the red dustbin should be highlighted as a valid drop target on each rotation. The user should not be able to drop 'Red' into any other dustbin.
Screenshots

Desktop:

OS: Microsoft Windows 10 Pro
Browser: Firefox (v84), Chrome (v89)

I had a similiar case and I solved putting the props in the dependency array of useDrop/useDrag, like in a useEffect hook.
https://react-dnd.github.io/react-dnd/docs/api/use-drop#parameters
useDrop(() => ({
    canDrop: () => {
        const myCondition = props.param && otherStuff;
        return myCondition;
    }
}), [props.param]);

repo: react-dnd/react-dnd


text:
Error Raw Text “” must be wrapped in an explicit  component

I'm getting this error message when trying to input a year into the title prop
Error Raw Text “” must be wrapped in an explicit <text> component
http://stackoverflow.com/questions/42497037/react-native-error-raw-text-1997-must-be-wrapped-in-an-explicit-text-compone?noredirect=1#comment72144666_42497037
Stackoverflow is saying the error is in the <ListItem /> component which in that case there isn't much I can do since it's a component from this library. Anyone else have this issue?

@MaxwellGover What component is having this issue? Can you provide code sample so we can debug it.

The <ListItem /> component. In my renderRow function it gives me an error,
Error: Raw text "1997" must be wrapped in an explicit <text> component
Also says invalid prop type being passed to 'title'
import React, { PropTypes, Component } from 'react'
import { View, Text, ListView, StyleSheet } from 'react-native'
import { connect } from 'react-redux'
import { List, ListItem } from 'react-native-elements'
import NavigationBar from 'react-native-navbar'
import { storeUserYear, getSchedule } from '~/redux/modules/data'

class Year extends Component {
	static propTypes = {
		dispatch: PropTypes.func.isRequired,
		navigator: PropTypes.object.isRequired,
		userCarModel: PropTypes.object.isRequired
	}
	constructor (props) {
		super(props)
		this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2 })
		this.state = {
			dataSource: this.ds.cloneWithRows(this.props.userCarModel.years)
		}
	}
	renderRow = (year) => {
		return (
			<ListItem
				key={year.id}
				title={year.year}
				onPress={() => {
						this.props.dispatch(storeUserYear(year))
						this.props.dispatch(getSchedule(year.id))
						this.props.navigator.push({
							schedule: true
						})
					}
				}
				underlayColor='#eceeef'
			/>
		)
	}
	render () {
		console.log(this.props.userCarModel)
		return (
			<View style={{flex: 1}}>
				<NavigationBar
					title={{title: 'Year'}}
					tintColor='#fff'
					style={{borderColor: '#e80d2d'}}
				/>
				<View style={styles.helpTextContainer}>
					<Text style={{marginLeft: 10}}>
						Select the year of your vehicle
					</Text>
				</View>
				<List containerStyle={{flex: 1, marginTop: 0}}>
					<ListView
						renderRow={model => this.renderRow(model)}
						dataSource={this.state.dataSource}
					/>
				</List>
			</View>
		)
	}
}

function mapStateToProps ({data}) {
	return {
		userCarModel: data.userCarModel
	}
}

export default connect(mapStateToProps)(Year)

const styles = StyleSheet.create({
	helpTextContainer: {
		height: 30,
		backgroundColor: '#eceeef',
		justifyContent: 'center'
	}
})

@binoy14 Any updates on this issue?

@MaxwellGover I know the root cause of the issue and will fix in the next release. In the mean time any number can be passed in using this
title="${year.year}"  or title={<Text>{year.year}</Text>}
This won't be the case in future. Thanks for reporting

@binoy14 Ok cool. Thanks. Great library btw.

@MaxwellGover Thank you for reporting. The issue is in works. #207 is almost ready to get merged


text:
Tried to access a JS module before the React instance was fully set up

Describe your environment

react-native-localize version 1.1.0
react-native version 0.58.6
Target platform: Android
Device Samsung Galaxy S6
OS version Android 8.0
DevTools: Xcode version 1.32.3 Android Studio version 3.1.4
Android only: buildToolsVersion 28.0.3

How to repeat issue and example
Honestly, I dont know how exactly to repeat this issue since it happened in my production app and not in my test devices. But this is the stacktrace that i got from crashlytics maybe it can help solve the problem :
Caused by java.lang.RuntimeException: Tried to access a JS module before the React instance was fully set up. Calls to ReactContext#getJSModule should only happen once initialize() has been called on your native module.
       at com.facebook.react.bridge.ReactContext.getJSModule(ReactContext.java:98)
       at com.reactcommunity.rnlocalize.RNLocalizeModule.emitLocalizationDidChange(RNLocalizeModule.java:115)
       at com.reactcommunity.rnlocalize.RNLocalizeModule.onLocalizationDidChange(RNLocalizeModule.java:91)
       at com.reactcommunity.rnlocalize.RNLocalizeModule.access$000(RNLocalizeModule.java:35)
       at com.reactcommunity.rnlocalize.RNLocalizeModule$1.onReceive(RNLocalizeModule.java:59)
       at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52226(LoadedApk.java:1319)
       at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.$m$0(-.java:4)
       at android.app.-$Lambda$FilBqgnXJrN9Mgyks1XHeAxzSTk.run(-.java)
       at android.os.Handler.handleCallback(Handler.java:789)
       at android.os.Handler.dispatchMessage(Handler.java:98)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6944)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

And here is the only peace of code that i'm using that calls this library :
import { I18nManager } from "react-native";
import memoize from "lodash.memoize";
import i18n from "i18n-js";
import * as RNLocalize from "react-native-localize";
import en from './locales/en';
import fr from './locales/fr';

export const translate = memoize(
  (key, config) => i18n.t(key, config),
  (key, config) => (config ? key + JSON.stringify(config) : key),
);

export const getBestAvailableLanguage = memoize((locals) => {
  const bestAvailableLanguage = RNLocalize.findBestAvailableLanguage(Object.keys(locals))
  if (bestAvailableLanguage && bestAvailableLanguage.languageTag) {
    return bestAvailableLanguage.languageTag
  }
  return 'en'
});

translate.cache.clear();
getBestAvailableLanguage.cache.clear();

const fallback = { languageTag: "en", isRTL: false };

const { languageTag, isRTL } =
  RNLocalize.findBestAvailableLanguage(['en', 'fr']) || fallback;

I18nManager.forceRTL(isRTL);

i18n.missingBehaviour='guess';
i18n.locale = languageTag;
i18n.translations = {
  fr,
  en
};

Thank you for your help.
Solution
None

Hello @Boubaker93,
I might have found a solution, it needs more tests to reproduce the errors.

@zoontek
Nice Thanks dude 👍


text:
When can we expect to see a new version published to npm?

Ask your Question
Dear contributors, first of all thanks for your effort in maintaining this repo. My question is when can we expect to see a new version published to npm? The last release was 5 months ago and in my opinion there are some fixes worthy of a new release.

Ironically, I was thinking the same thing yesterday as I switched back to 1.1.3 from master as I'm about to release my own app and wanted a fixed version.
Which is just to say, I was using master successfully during development and at least for the "Share.open()" case with a data URL from rn-fetch-blob it was working great...

Hello @yamov,
Thanks for asking.
We've made few changes that would need some tests: https://github.com/react-native-community/react-native-share/compare/v1.1.3...master
After @mikehardy comment:

Which is just to say, I was using master successfully during development and at least for the "Share.open()" case with a data URL from rn-fetch-blob it was working great...

I guess we have less things to test.
If someone is using master branch in production, let me know if it is ok for a release.
Also there are known bugs and few opened PRs that we still need fix/merge.

@jgcmarins - there are always known bugs unfortunately, but joking aside it sounds like you have an idea in mind of what needs to get done for a 1.2.0 (my scan of the diff was that there were features but no breaking changes), maybe a milestone you could tag specific PRs and issues with? You're take on that would be really useful since you'll have a feel for everything. Then we could focus on getting a release quickly before the pressure+uncertainty build up too much

@mikehardy, thanks for the heads up.
I totally agree, but I am little busy this week. I'll try to take a look as soon as possible.
Another issue I'd like to address is React Native version.
Maybe it should be nice to have a release before we update React Native version.

@jgcmarins sounds good - I'm not personally in a rush though I as time between releases grow I have an equally growing anxiety if I'm in any way responsible for a release :-) (nothing special for this project, that's a general thing).
I would minimize any unnecessary change prior to 1.2.0 (assuming that's the right SemVer) so +1 waiting on react-native version, though I'll look at that separately and if it's trivial (I think it should be?) maybe it's fine to go

#481

Any update on this release? I'd love to pull in a released version to use the Instagram Stories share option.

Any update on this release? I'd love to pull in a released version to use the Instagram Stories share option.

I was talking with @jgcmarins about this sometime ago. For now, please use the master branch and if you find any errors make sure to open a issue

Guys, we're almost there 🔥

@jgcmarins is the new update almost ready 😍 ??

Finally we did It!!! 🎊🎊🎊🎊
https://twitter.com/jgcmarins/status/1132688044635643904?s=19

authors: MateusAndrade briavicenti jgcmarins karanpratapsingh mikehardy yamov


text:
Crash on Android after sharing to Google Drive

Steps to reproduce

Share to Google Drive using:

const result = await Share.open({
      message: "message",
      subject: "subject",
      title: "title"
    });

Wait for the callback
App crashes
Before the crash, I can see the result:

{
app: "com.google.android.apps.docs/com.google.android.apps.docs.shareitem.UploadMenuActivity",
message: "com.google.android.apps.docs/com.google.android.apps.docs.shareitem.UploadMenuActivity"
}

Error on logcat:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=16845, result=-1, data=Intent { dat=content://com.google.android.apps.docs.storage.legacy/enc=hwS2P-QLZXeplE6wliNceO9lduRF6MaJHht7KkEMtWX-olNpX0S5laUmKOPmMBE0NnnhjD_ZzRB0     LS-zLUFkB4eE8DPDjGNP01YlUizxqUo3xx8b3oenNLEPzQhPYToVt1Crhw==      launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } (has extras) }} to activity {br.com.test/br.com.test.MainActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.apps.docs.cello.data.CelloEntrySpec         at android.app.ActivityThread.deliverResults(ActivityThread.java:4520)         at android.app.ActivityThread.handleSendResult(ActivityThread.java:4563)         at android.app.ActivityThread.-wrap22(ActivityThread.java)         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1698)         at android.os.Handler.dispatchMessage(Handler.java:102)         at android.os.Looper.loop(Looper.java:154)         at android.app.ActivityThread.main(ActivityThread.java:6776)         at java.lang.reflect.Method.invoke(Native Method)         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)      Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.google.android.apps.docs.cello.data.CelloEntrySpec         at android.os.Parcel.readParcelableCreator(Parcel.java:2555)         at android.os.Parcel.readParcelable(Parcel.java:2481)         at android.os.Parcel.readValue(Parcel.java:2384)         at android.os.Parcel.readArrayMapInternal(Parcel.java:2737)         at android.os.BaseBundle.unparcel(BaseBundle.java:269)         at android.os.BaseBundle.getString(BaseBundle.java:992)         at android.content.Intent.getStringExtra(Intent.java:6749)         at com.facebook.internal.CallbackManagerImpl.isPurchaseIntent(CallbackManagerImpl.java:130)         at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:90)
Expected behaviour
Application should not crash
Actual behaviour
Application is crashing
Environment

React Native version: 0.59.8
React Native platform + platform version: Android (multiple versions)

react-native-share
Version: 1.2.1
Important
If I downgrade react-native-share version to 1.1.3, it works.

Interesting! From the class name, this looks like an example app. Could you share it on github so we can see/try?

actually, I changed the namespace to 'test' manually to paste it here. sorry :(

I see - maybe you could reproduce it here: https://github.com/react-native-community/react-native-share/blob/master/example/App.js#L93  ? The example should work, so if you can make it fail, we can reproduce it easily and hopefully fix

okay, I'll try that

@MateusAndrade the main difference, if I understand correctly, is the result handling code for android on share was altered so that results were actually obtained and passed on now.
It may be that the new code in there is not robust enough or has an error - that seems to be the case here but I haven't seen it myself.
As a quick bit of triage, if we had a clean reproduction, would be to wrap all that java code in a big try/catch and just log+eat the exception. My hypothesis is that it would result in an exception logged and behavior like 1.1.3.
I am not sure if it is related to #520

Have the same issue when trying to share a base64 pdf to google drive in android.
It's working at google drive in ios and others option in android.

I managed to solve this issue by passing the pdf file path to the url param from sharing options.
sharePDf = async (pdfPath) => {
//Be sure that  PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE is already granted
const shareOptions = {
    url: 'file://'+pdfPath,
    mimeType: 'application/pdf',
    title: 'Pdf test'
    };

Platform.OS === 'ios' ?
Share.open(shareOptions)
:
this.sharePDFWithAndroid(pdfPath, 'application/pdf');
}
My share function for android is :
sharePDFWithAndroid(pdfPath, type) {
const { fs, fetch, wrap } = RNFetchBlob;
RNFetchBlob.fs.readFile(pdfPath, 'base64').then(
base64Data => {
base64Data = data:${type};base64, + base64Data;
Share.open({ url: base64Data });
});
}
After a lot of research, I found out that only base64 data for pdf file can be shared using react-native-share. Is not possible to share using url with "file://...pdfPath....".
I hope that someone will find this helpfull.
This is also related to #520

Looking at some issues and a project that i worked recently, i found that sharing base64 on android is problematic with some applications.
Following what @bojanmitevski said, if its possible you can share the file path without getting a similar exception on Drive, and other applications.

Looking at some issues and a project that i worked recently, i found that sharing base64 on android is problematic with some applications.
Following what @bojanmitevski said, if its possible you can share the file path without getting a similar exception on Drive, and other applications.

Did you try it? According to my research, only base64 data can be used for URL params in share options to get a successful share of the file. Please let me know if you need any assistance.

Did you try it? According to my research, only base64 data can be used for URL params in share options to get a successful share of the file. Please let me know if you need any assistance.

Did you mean sharing a base64? When i was working on a daily project with rn-share i faced this problem. My workaround was to share the file relative path, wich worked without any problem.

Still having this issue with 2.0.0 version, any update?

Find a solution.
Modify below code in social/ShareIntent.java
Change
        activity.startActivityForResult(chooser, RNShareModule.SHARE_REQUEST_CODE);

To
        activity.startActivity(chooser);

@jeno5980515 awesome!
Do you mind helping us with the fix? I can help with code review.

I think it should use startActivity for ACTION_SEND instead of startActivityForResult.
However, it will not know the user cancel it or not. It means that failOnCancel will be useless.
It works for my use case, I'm not sure it also works for others?

authors: MateusAndrade bojanmitevski elliscarvalho jeno5980515 jgcmarins mikehardy


text:
SideMenu can be constructed with stale Device Screen dimensions

The width and height in the component state is constructed with the deviceScreen object that is instantiated outside of the component scope at the very start of app execution. If the device is ever rotated, subsequent instances of SideMenu will be constructed with the outdated screen dimensions. If something like react-native-orientation is used to force a different screen orientation than the app is launched with, every instance of SideMenu will be constructed with the wrong dimensions and only updated upon a layout change.
Additionally, deviceScreen is referred to several times in class methods for calculations. It seems as if these should use width and height from state instead.
#153 mentions this issue indirectly, but its conversation quickly deviated from it.

Closing for reasons mentioned in #324


text:
Is react-native-web supported?

This is a great question, I'm investigating at the moment, and it's not clear to me yet what route to take in having a sidebar/drawer.

It is supported

authors: iamnader jacquesdev tasawar-hussain


text:
How to convert my offline/localhost web app with WebSQL into react native webview for offline use

Hi, I made an offline/localhost application using html, css and javascript by using WebSQL as database. how do I CRUD using react native webview from my local file (inside android assets folder) just by using a javascript(myapp.js) file from my assets folder on react native. I use bootstrap modal form as input form and bootstrap table to fetch data from local database(webSQL).
What I use in my myapp.js file is as follows :
var db = openDatabase('wsdb', '1.0', 'Workspace', 2 * 1024 * 1024);
db.transaction(function(transaction){
 transaction.executeSql("CREATE TABLE IF NOT EXISTS workspace (" +
  "wid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," +
  "nmws TEXT NOT NULL, type TEXT NOT NULL," +
  "crws TEXT NOT NULL, type TEXT NOT NULL);");
});
function fnDbAdd(wsnm, wscr, mapcode) {
db.transaction(function(transaction){
transaction.executeSql(("INSERT INTO workspace (nmws, crws, map) VALUES (?, ?, ?);"),
 [wsnm, wscr, mapcode]);
};
thanks for helping me..

no body?


text:
npx pod-install ios 에러 나는 문제 확인해주세요

Version of kakao-login libraries
3.3.2
Version of react-native
0.64.1
Platforms you faced the error (IOS or Android or both?)
IOS
Expected behavior
Actual behavior
문서 보며 하고있는데 안됩니다... 일단 설정 하라는데로 다 하긴 했습니다.
_[!] CocoaPods could not find compatible versions for pod "kakao-login":
In Podfile:
kakao-login (from ../node_modules/@react-native-seoul/kakao-login)
Specs satisfying the kakao-login (from ../node_modules/@react-native-seoul/kakao-login) dependency were found, but they required a higher minimum deployment target._
npx pod-install ios 로 하면 해당 에러 납니다.
이거 때문인지
TypeError: null is not an object (evaluating 'RNKakaoLogins.getProfile')
이렇게 뜨네요..
Tested environment (Emulator? Real Device?)
ios 시뮬레이터 아이폰 12

ios platform target을 11이상으로 맞춰줘보실래요?

ios platform target을 11이상으로 맞춰줘보실래요?

맞춰도 동일 합니다 확인해보니 xcode에서 AppDelegate.m 에서 RNKakaoLogins.h 를 못찾네요..?
현재 xcode에서 작업한것은 아래와 같아요.

swiftbridge 헤더 파일 생성
info.plist에 readme 보면서 내용 넣기
ios platform target 11
AppDelegate.m에 readme에 있는 내용 추가
카카오 개발자 홈페이지에서 로그인 활성화
bundle identifier 를 카카오 개발자 홈페이지에 있는 것으로 변경

혹시 추가로 해야하는게 있나요?

rm -rf node_modules && yarn 을 해서 새로 설치한다음 해보시거나 그래도 안된다면 3.3.0 도 설치해보시고 결과를 알려주실 수 있을까요.

authors: hyochan kwangheum


text:
Run presentLocalNotification on the UI thread

Xcode requires presentLocalNotification to be run on the UI thread. This
commit wraps the call in an async block to dispatch on the UI thread.

thanks!

authors: kylekurz zxcpoiu

license: ISC


text:
Validation issues

I'm looking to add some validation to my form and whilst I can see that my validator is running (via breakpoints and logging), I'm getting no feedback to indicate any fields are invalid.
I've got an example running here https://codesandbox.io/s/sleepy-gauss-dmyjw4 which in theory should be marking all fields and groups as invalid however I dont get the any messages such as the one shown in https://react-querybuilder.js.org/demo#addRuleToNewGroups=false&autoSelectField=true&autoSelectOperator=true&debugMode=false&disabled=false&enableDragAndDrop=false&independentCombinators=false&justifiedLayout=false&listsAsArrays=false&parseNumbers=false&resetOnFieldChange=true&resetOnOperatorChange=false&showBranches=false&showCloneButtons=false&showCombinatorsBetweenRules=false&showLockButtons=false&showNotToggle=false&validateQuery=true
Does something else need to be done to get error messages displaying?
Thanks

@zeroed-tech I updated the "Code" tab of the demo to include a "Styles" section that displays the additional styles not included in react-querybuilder/dist/query-builder.scss (or .css), the styles specific to the demo.

Thanks for that. Going by that example, the error message to display is configured in the CSS file, is there a way to use the `reason' specified in the validation function instead?

Yes, but you would need to use a custom component. I can help with the code if you show me a mockup of what you want it to look like.

Thanks Jake, saying it needed to be a custom component was enough to get me on the right track

For eanyone else struggling with this, the following valueEditor should get you on the right track. This was written in a hurry so the forced casting should probably be replaced with something a bit more stable
const CustomValueEditor = (props: ValueEditorProps) => {
  if (props.type === "text") {
    return (
      <div className={props.className}>
        <TextField
          variant="outlined"
          type="text"
          fullWidth
          size="small"
          error={!(props.validation as ValidationResult).valid}
          helperText={
            !(props.validation as ValidationResult).valid &&
            (props.validation as ValidationResult).reasons?.join(" ")
          }
          className={standardClassnames.valueListItem}
          onChange={(e) => props.handleOnChange(e.target.value)}
        >
          props.value ?? ""
        </TextField>
      </div>
    );
  }

  return <ValueEditor {...props} />;
};

repo: react-querybuilder/react-querybuilder


text:
Fix subscriber being overwritten

@jhgg
Should fix #84
Here was the problem:

Subscriber object is created during the render phase and its index is assigned.
setState is called before the subscriber object is added to subscribers array (between render phase and useLayoutEffect).
subscribers array is made dense, changing the length of the array and indices of subscribers.
Subscriber object is added to subscribers array at wrong index, overwriting a valid subscriber.

I moved the code that makes subscribers a dense array into the "unmount" phase (return function of useLayoutEffect callback).

Thanks, intersting solution using Array.filter! 🙂

made a patch release

I think there might still be an issue with concurrent mode. A component can unmount between another component's render and useEffect. Here is an example. https://codesandbox.io/s/fervent-heisenberg-vtqiw (forked from React docs). Click the button, look at the console, and notice that HomePage unmount happens between ProfilePage render and ProfilePage effect. With respect to zustand, I think this can lead to the same clobbering behavior of compressing the array when there is a pending index.
My hunch is that we need to avoid compressing the array when there is a pending index, although tracking this is tricky with React Suspense.

@paulshen I think you're right. The problem with waiting on a pending index is a component can be called during the render phase but interrupted before React renders it in the DOM. We'd have an always-pending index and never be able to compress the subscribers array. I want to get away from doing anything during the render phase and only use useEffect for adding/removing subscribers.
Unfortunately, useEffect callbacks are called from child to parent. This means the subscribers array would not be ordered properly when we loop over it. We can loop over the array in reverse or add subscribers to the beginning of the array but that doesn't work after subscribers are added a second time:
Initial subscribers: [4th, 3rd, 2nd, 1st]
After adding new subscribers: [4th, 3rd, 2nd, 1st, 7th, 6th, 5th]

We could have two arrays for subscribers, one that is sorted and one for holding new ones:
sorted: [1st, 2nd, 3rd, 4th]
new: [7th, 6th, 5th]

Then we reverse iterate over the new array and add the values to the sorted one. I don't know how to detect when to do this. It has to be done after React flushes effects. Maybe a combination of useLayoutEffect and useEffect.

I don't know if there is a solution here (yet) 😞It feels like the root fix is having a useEffect variant that fires in parent -> child order (kinda like DOM event bubbling/capturing) but I'm guessing that's not on React's roadmap.
Redux has an interesting solve for its <Connect> component API using context to maintain render order (see Subscription) but it does not have a solve for its hooks API since hooks cannot render a context provider.

I don't expect a useEffect variant like that to ever exist but it would solve our issue.
It seems like the first useEffect callback is called after all useLayoutEffects callbacks are called. At least, this is the behavior for react-dom. I wonder if useLayoutEffect can be used to add subscribers to a newSubscribers array and then useEffect would check that array length and pop the items into a sortedSubscribers array.
When we want to call all subscribers, we would just call all sortedSubscribers in order then check newSubscribers length and call those subscribers in reverse.
The problem with this solution is it's dependent on the reconciler's behavior.

authors: JeremyRH drcmda paulshen

repo: react-spring/zustand


text:
Styles not getting applied.

I am trying to use react-toolbox with react-redux-starter-kit   (https://github.com/davezuko/react-redux-starter-kit)
When I try to render a button, the button gets rendered, but, there are no styles applied to it. My webpack config has the following in it.
I use an almost identical webpack config to the one shown here,  https://github.com/davezuko/react-redux-starter-kit/blob/master/build/webpack/_base.js
the following are the differences.
resolve : {
        extensions : ['', '.js', '.jsx','.scss'],
        alias      : config.get('utils_aliases')
},

AND
{
        test: /(\.scss|\.css)$/,
        loaders : ['style-loader','css-loader', 'postcss-loader','sass-loader']
},

Right now the button looks like this.

Maybe you're excluding node_modules? Please take this as an example to figure out what's wrong with your configuration

It took me a while to get my webpack config squared away; but I might have learned something; share the repo you are having a problem with?

Apparently there are common problems to configure webpack. Since this is an issue almost sure related to configuration I'm closing it to reduce noise.

Hi
I agree this is a config problem and not a defect, but it would be nice to know @ginshade if you find your problem/workaround, I am having the same problem here...

Hey, in react-redux-starter-kit, you can specify to load react-toolkit as a cssmodule.
Go to build/webpack.config.js and find (around line 161):
// Add any packge names here whose styles need to be treated as CSS modules.
// These paths will be combined into a single regex.
const PATHS_TO_TREAT_AS_CSS_MODULES = [
  // 'react-toolbox', (example)
]

'react-toolbox' is written as a example comment.
Change it to:
const PATHS_TO_TREAT_AS_CSS_MODULES = [
  'react-toolbox',
]

Is it working?

authors: Valentin-Seehausen ai10 ginshade javivelasco ziso

repo: react-toolbox/react-toolbox


text:
New feature: create the sme setting as footer, but located at the top of the grid.

Hello.
Can you realize the future like the footer, but located after column header below it?

This feature/issue has been tagged as one that will likely be fixed or improved in the next major release of React-Table. This release is expected to be completed in the next 6 - 8 months. Please see #1143 for more detail. If you believe this feature can be easily fixed, we invite you to fork the project, attempt the fix, and use it until the latest version is available. If the fix is simple enough, we will also consider it as a PR to the current version.

authors: Fornori tannerlinsley

repo: react-tools/react-table


text:
Separação do MOD11 da validação

Foi feita uma pequena correção nos labels dos testes para CPF que indicavam CNPJ.
O calculo do MOD11 foi desacoplado da validação e é reutilizado em CPF e CNPJ. A função de cálculo do MOD11 NÃO foi exposta, já que o objetivo é validar.
Uma discreta documentação foi adicionada às validações de CPF e CNPJ
Foi adicionada a rotina de validação de número repetido no CPF

Muito bom a parte da separação do MOD11, na parte de CPF's repetidos somente o 000.000.000-00 é inválido, de resto é considerado validos pelo governo, procurando o 888.888.888-88 tem dono, imagino que os outros tenham.
Os comentários são bem-vindos, sem problemas, só ajustar o coverage que caiu incríveis 0.05%.

Muito bom a parte da separação do MOD11, na parte de CPF's repetidos somente o 000.000.000-00 é inválido, de resto é considerado validos pelo governo, procurando o 888.888.888-88 tem dono, imagino que os outros tenham.
Os comentários são bem-vindos, sem problemas, só ajustar o coverage que caiu incríveis 0.05%.

Na verdade, os repetidos são inválidos. As empresas de cadastro, como o Serasa por exemplo, nem consideram estes CPFs ao realizarem uma consulta cadastral. Se foram atribuídos a alguém, posso afirmar com segurança que foram cancelados.
Com relação ao coverage, vou avaliar aqui como adicionar um teste que passe pela condição não contemplada.

Realmente, tem alguns que comentam que pode existir mas em documentos que achei agora da Secretária da Receita Federal já está desconsiderando.

Alterei o mínimo de descreased do coverage, só subir um commit pra rodar novamente o CI.
Tem alguns warning de variáveis não utilizadas mas é só detalhe, no build é ignorado

authors: AZagatti lleao

repo: reactivando/validations-br


text:
ReactiveCommand gives System.InvalidOperationException after binding

We will close your issue without comment if you delete or do not fill out the issue checklist and provide ALL the requested information. This repository's issues are reserved for feature requests and bug reports. For support questions, please ask on StackOverflow: https://stackoverflow.com/questions/tagged/reactiveui
Please delete this note before pressing the submit button
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
After binding the command to , for instance, a button. Click the button will cause System.InvalidOperationException indicating that object owns by another thread right after the callback returns.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem
in xaml:
<Button Command="{Binding MyCommand}"></Button>
in viewmodel:
public ReactiveCommand MyCommand { get; protected set; }
        public MainWindowViewModel()
        {
            MyCommand =ReactiveCommand.CreateFromTask(() =>
            {
                Console.WriteLine("foo"); //this works
                return Task.Run(() => {

                });
            });//cause exception right after return
        }

What is the expected behavior?
Works as any command. No exception.
What is the motivation / use case for changing the behavior?
Which versions of ReactiveUI, and which platform / OS are affected by this issue? Did this work in previous versions of ReativeUI? Please also test with the latest stable and development snapshot
In v8.3.1 with reactive 3.3.1 & .net 4.7.1 WPF project
Same codes work fine in v7.4
Other information (e.g. stacktraces, related issues, suggestions how to fix)

Why are you using Task.Run(...) why not use await ?

@phenomx2  That makes no different. I just want to give it a quick demo and the API does not require that to be async/await pattern.

Can you share a small repo with the bug ? please

check this repo

I can confirm this bug. Even empty command ReactiveCommand.Create(()=>{}) throws the exception.

ReactiveCommand without generic parameters should never be used. It's still there because of compatibility with ICommand. But when you define your property like this:
public ReactiveCommand<Unit, Unit> MyCommand { get; set;}

You'll see that it works. It's not clear at all though, and the docs use the wrong (old) syntax still sometimes. Everything always seems to work, until you start binding.

We probably should add a issue on the website project to upload the instances where this is wrong in the documentation I guess.

umm.In v7.4 it works fine though. Is it possible to make this to be a synax error so that it won't even pass the compiler?

Potentially, will investigate and see if I can make the change. Obviously will be breaking but will likely stop fairly subtle bugs like this one.

This happens 'cause ReactiveUI schedulers won't get properly initialized when one uses a XAML UI framework and don't have a platform-specific package installed. Shortly, ReactiveUI package should normally be installed into your .NET Standard assembly only. For other platforms use one of these packages: ReactiveUI.WPF, ReactiveUI.XamForms, ReactiveUI.WinForms or Avalonia.ReactiveUI. See Installation/NuGet-Packages for more info.

Reopening since using this as a tracker to remove the abstract ReactiveCommand class.

Fixed by #1836 where we removed the abstract base non-generic class.

authors: Fido789 Qonstrukt glennawatson goyzhang phenomx2 worldbeater

repo: reactiveui/ReactiveUI


text:
Translate Using TypeScript Page

Finally 😄
It take from me alt of time, I hope that it will be empty from errors and misunderstanding 😁❤

@mahmood601 Why did you close that?

@mahmood601 Why did you close that?

I don't know!
I'm beginner in using Github and git 😅

I don't have to close pull request and delete the branch, I have to send the changes on the same branch 🤦🏻♂

I saw you've already opened another pull request #526
Read this comment https://github.com/reactjs/ar.react.dev/pull/521#issuecomment-1686745528
It's like a cheat sheet of git

I saw you've already opened another pull request #526
Read this comment https://github.com/reactjs/ar.react.dev/pull/521#issuecomment-1686745528
It's like a cheat sheet of git

Thanks, I will read that sheet 😁


text:
printWasted - should I ignore connected component's wrapper?

When using the React Performance tools and specifically printWasted I'm unsure as to whether I should be paying attention to connected component's wrapper.
Whenever the state changes, all my connected component's wrappers re-render (as intended) and (unless the stateProps have changed) return the cached rendered component. So in this case render has run but there has been no DOM update. Therefore I think it should show up in printWasted but I should ignore it.
The only thing that makes me doubt this is that not all my connected component's wrappers are in the wasted table.

How much time is reported being spent there? If it’s a lot, it might mean your mapStateToProps is saving you from re-renders below but you do a lot of work in it, and maybe you could find a way to do less work there.

Many thanks for replying.
I'll investigate optimising mapStateToProps (unfortunately it just consists of some gets on immutable maps) but there are many instances of the component (200). However, from your reply, I'm presuming seeing a Connect(aComponent) in printWasted doesn't indicated a wasted render?
If I make a change to my store which has no effect on the current display (ie all components should return renderedElement early) and then printWasted, I don't see all my connected components which seems to contradict my presumption.

It’s hard to say without a specific example reproducing this. If you can create one and you believe ReactPerf is behaving in a wrong way please file a bug in React and I’ll take a look.

@gaearon I kept looking into this and discovered there are two reasons why I might be missing some printWasted entries:

some are being filtered out by DONT_CARE_THRESHOLD which you seem to have removed from React in this https://github.com/facebook/react/pull/6647/files#diff-f5e99eb03b46b76237d2e7632d018f91L16 (we're still using v15.0.2)

after updating to the latest React, some entries were still missing, this (I believe) is because of the way perf tools work (not sure if it is a bug). As suggested, I will close and have opened a bug on the react project: https://github.com/facebook/react/issues/7484

authors: foiseworth gaearon

repo: reactjs/react-redux


text:
Add Typescript definitions.

Having Typescript definitions in the repository itself saves users from having to download the definitions separately and changes to the main redux definitions can be more easily applied to the react-redux definitions.
I've taken the definitions from the DefinitelyTyped repository. The only change I made is the addition of the generic State type to the connect function so the State parameter of the mapStateToProps function can actually be typed instead of being of the 'any' type.
The rest of the definitions seem to be correct.

Any chance we can get testing for these, like we do on Redux? https://github.com/reactjs/redux/blob/master/test/typescript.spec.js

This typings provided doesn't fit to be bundled with package because the are global. You must convert it to be external module definitions (using import, export keywords, not using global namespace imports, etc)

this.props.dispatch is missing in connect() and connect(mapStateToProps) forms.

@timdorr Do the Typescript definitions have to take into account that the library can be used as an UMD module? Also, can I make use of the Typescript 2.0 features for the definitions?
@bbenezech I don't see what's missing. Could you explain more in depth?

@DaanDeMeyer Sorry, disregard.
I overlooked connect<TOwnProps, TStateProps, TDispatchProps>.
I can use TDispatchProps and inform my component that it has a dispatch prop.
Really sorry. Still trying to wrap my head with TS

Since I'm not using react-redux anymore I'm not going to be able to implement testing or maintain definitions for the project so I'm closing the pull request.

@codeandcats suggested I fork and re-request these additions. Before I start, I wonder what are the tasks that need to be performed? I don't mind opening a PR but I'd rather not just copy the code without adding anything myself, unless we are content with the state of this PR before it was closed.
@DaanDeMeyer raised some questions which I'd like to get answered before I begin.

@timdorr Do the Typescript definitions have to take into account that the library can be used as an UMD module? Also, can I make use of the Typescript 2.0 features for the definitions?
The rest of the definitions seem to be correct. Anything missing? Probably needs to be converted to external module though.
Do we have any typescript files that can be used to test this with typescript-definition-tester?

@timdorr bump
Also, imho it would be fine to target TypeScript 2 since it's backwards compatible with 1.x code so there's really no reason consumers shouldn't be using it now.

Since MS is pushing the whole @types namespacing on npm, I don't think we need to add them here. They exist on DT and that should be good enough.

@timdorr
Redux typings and flow typings are successfully maintained in-house, why not react-redux?
DT is a gigantic mess, noise there is overwhelming. It makes sense to have it maintained here, with PR merged by react-redux maintainers, unless you do want to reduce the load on the library's maintenance, which is very understandable.

It's more that our current set of maintainers don't use TS, so we don't have any ability to maintain those typings. If you want to see it here, I'm more than happy to accept a PR, but understand that we'll rely on the community to guide those typings. That's how we did the TS and Flow typings on Redux.
I can basically just read through comments and mash the appropriate button. I'm a typing dunce 😄

Since MS is pushing the whole @types namespacing on npm, I don't think we need to add them here

It is not true. @types repos is a fallback for libs that doesn't mantain typings in house. It also introduces compatibility issues.
In house typings still prefered way, because lives near source code and shares the same version.
Of course there is a cost for it too:

increased mantainance load
it affects semver: breaking change in typings would require major bump in whole package

But again it is much convinient for consumer to use lib with typings included:

no additional deps to install and mantain
typings always describe code that you use since it located at the same package
it usually have higher quality that 3rd parties

I think the optimal situation is to have Flow/TS typings collocated with the code, but have at least 1 project maintainer committed to keeping them updated in step with code changes.

Ok, let's try. Go easy on me #538

authors: DaanDeMeyer Guria Zalastax bbenezech codeandcats jimbolla timdorr


text:
The browser "back" button doesn't work

The browser "back" button doesn't work after clicking a fragment link (/page => /page#something).
URL changes back from /page#something to /page, but it has no effect on the scroll position.

To be precise, after navigating from /page#something1 to /page#something2 the back button works. But if you open /page and scroll down, then click a link that takes you to /page#something, the back button won't take you back.

can i work on this?

I am working on this!

Update: this still seems broken on the new react.dev site. It works sometimes but not all the time.

If you want to fix this, please just submit a PR, no need to ask to be assigned.

will try to work on this issue

@trevlee0212 go ahead, thanks for the help! Submit a PR when you have a working fix.

@pwbriggs PR submitted!

I noticed that this issue hasn't been addressed since February. I was able to reproduce the bug and would like to work on fixing it. Has it already been resolved?

Also, could you provide a video description?

@mannika763 my PR #6614 basically provided the solution for fixing the bug. Just waiting for it to get reviewed.