why I can't combine streams using xstream in cyclejs?

449 Views Asked by At

I'm being trying unsuccesfully to combine to streams into one, and show the text in a h1.

But not being able to make it work:

this is my code:

function main(sources) {
  // single streams
  let letter$ = xs.of({text: 'abcd'}); 
  let number$ = xs.of({text: '123456'});

  //try to combine them into one
  const combined$ = 
    xs.combine( letter$, number$ ).
      map( ( [ letter, number ] ) => {
        return { text: letter.text + ' ' + number.text };
      });

  //updates the virtual dom with the reponse
  const vdom$ = combined$
    .map(o => o.text) 
    .startWith('Loading...')
    .map(text =>
      div('.container', [
        h1(text)
      ])
    );


  return {
    DOM: vdom$
  };
}

It shows error saying:

index.js:6 TypeError: f is not a function
at invoke (core.js:36)
at CombineListener._n (core.js:72)
at Stream._n (core.js:886)
at FromArrayProducer._start (core.js:142)
at Stream._add (core.js:959)
at CombineProducer._start (core.js:118)
at Stream._add (core.js:959)
at MapOperator._start (core.js:681)
at Stream._add (core.js:959)
at StartWithOperator._start (core.js:786)

being trying to understand why but no luck so far.

1

There are 1 best solutions below

0
On BEST ANSWER

My problem was using the dependencies specified in the package.json of the examples in the CycleJS repo.

Those dependencies are outdated:

https://github.com/cyclejs/cyclejs/blob/master/examples/http-search-github/package.json

"dependencies": {
   "@cycle/xstream-run": "1.1.0",
   "@cycle/dom": "10.0.0-rc20",
   "@cycle/http": "9.0.0-rc3",
   "xstream": "2.4.x"
}

and the dependencies to date are:

"@cycle/dom": "^12.1.0",
"@cycle/http": "^10.1.0",
"@cycle/xstream-run": "^3.0.4",
"xstream": "^5.3.6"

rule of thumb check for the latest stable dependencies.

thanks @bloodyKnuckles, and everybody in the CycleJS gitter.