Sure, I know it wouldn't work at runtime, but it sounded like Harbs couldn't even get the compiler to accept window["process"] which it should.
So, it should be ok to write: if(typeof window !== "undefined") { theProcess = window["process"]; } else theProcess = global.process But is there really a process property in the browser? We could create or own single variable if we want. How often do libraries need stuff in window/global? Classes that need it should be able to use inject_html and run some JS that maps window to global or the other way around. HTH, -Alex On 7/5/17, 6:43 AM, "Josh Tynjala" <joshtynj...@gmail.com> wrote: >Node.js doesn't have a window variable, so window["process"] won't work. >They have a global variable instead. > >I remember reading that there is a proposal for ECMAScript to standardize >a >single variable that refers to window in the browser and global in >Node.js, >but that doesn't exist yet. > >- Josh > >On Tue, Jul 4, 2017 at 11:35 PM, Alex Harui <aha...@adobe.com.invalid> >wrote: > >> What class in Core needs this dependency? I think one drawback is that >> users of that class will need to add node.swc to their project >> dependencies. But I don't think every consumer of Core will need >>node.swc. >> >> But first, why didn't window["process"] work? In theory Falcon will let >> you access anything off of window. We could also add global if we want. >> Or maybe we should only allow global and have some bootstrap code that >> maps global to window? >> >> -Alex >> >> On 7/4/17, 2:09 PM, "Harbs" <harbs.li...@gmail.com> wrote: >> >> >Actually, I see that the Node typedefs has all the process declarations >> >in global.js. >> > >> >Is there an issue with adding a dependency in CoreJS to node.swc? >> > >> >Should a class that has this dependency go somewhere else? (I don’t >> >really see an issue with adding the dependency, but I’m throwing this >>out >> >in case I’m missing something.) >> > >> >Harbs >> > >> >> On Jul 5, 2017, at 12:00 AM, Harbs <harbs.li...@gmail.com> wrote: >> >> >> >> Looks like it. >> >> >> >> I see this in missing.js: >> >> >> >> /** >> >> * @export >> >> * This gets mapped to org.apache.flex.utils.Language.trace() by the >> >>compiler >> >> * @param {...} rest >> >> */ >> >> function trace(rest) {} >> >> >> >> /** >> >> * @type {!Console} >> >> * @const >> >> */ >> >> var console; >> >> >> >> >> >> I guess I can add another one like so: >> >> >> >> /** >> >> * @type {!Process} >> >> * @const >> >> */ >> >> var process; >> >> >> >> However, it seems like a drag to have to add a typedef every time a >> >>developer needs to check for the existence of a global that we did not >> >>think of. >> >> >> >>> On Jul 4, 2017, at 9:13 PM, Harbs <harbs.li...@gmail.com> wrote: >> >>> >> >>> Thanks. Here’s what I see: >> >>> >> >>> if(typeof window !== "undefined") >> >>> { >> >>> theConsole = window.console; >> >>> } >> >>> else if(typeof console !== "undefined") >> >>> { >> >>> theConsole = console; >> >>> } >> >>> >> >>> Did you define console in a typedef maybe? >> >>> >> >>> I’m thinking that Falcon should really allow undefined variables >>when >> >>>used with “typeof”. >> >>> >> >>> Truth be told, I really need to do something like one of these: >> >>> if(typeof (process) != 'undefined' && {}.toString.call(process) == >> >>>'[object process]’) >> >>> or: >> >>> if(typeof process != 'undefined' && process && >> >>>process.constructor.name == "process”) >> >>> >> >>> Of course every reference to process causes a compiler error. I >>wonder >> >>>if there’s some way to tell the compiler to accept it without >> >>>complaining… >> >>> >> >>>> On Jul 4, 2017, at 8:54 PM, Josh Tynjala <joshtynj...@gmail.com> >> >>>>wrote: >> >>>> >> >>>> I don't remember exactly what I did, but in order to get trace() >> >>>>working in >> >>>> Node.js, I had to figure out how to find the console object on >>window >> >>>> versus global. I feel like I remember using typeof, but maybe it >>was >> >>>> something else. Take a look at the implementation of >>Language.trace() >> >>>>to >> >>>> see what I did. >> >>>> >> >>>> - Josh >> >>>> >> >>>> On Jul 4, 2017 5:26 AM, "Harbs" <harbs.li...@gmail.com> wrote: >> >>>> >> >>>>> I’m trying to figure out how to solve this dilemma: >> >>>>> >> >>>>> Browsers attach global variables to window. >> >>>>> >> >>>>> Node.js attaches globals to global. >> >>>>> >> >>>>> I’m trying to check for the existence of a global called process. >>In >> >>>>>JS, >> >>>>> you’d generally do that by checking typeof process == ‘undefined’. >> >>>>>Falcon >> >>>>> does not allow you to do that and complains that process is an >> >>>>>undefined >> >>>>> property. In the browser you can use window[“process”] == >>undefined >> >>>>>and in >> >>>>> node you can (theoretically) use global[“process”] == undefined. I >> >>>>>can’t >> >>>>> think of a generic way to do this though. >> >>>>> >> >>>>> Thoughts? >> >>>>> Harbs >> >>> >> >> >> > >> >>