How to use @ibm-functions/composer - 10 common examples

To help you get started, we’ve selected a few @ibm-functions/composer examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github ibm-functions / shell / tests / data / composer-source / composer6.js View on Github external
*
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict'

const composer = require('@ibm-functions/composer')

// build action composition
const app =  composer.retain(composer.sequence('TripleAndIncrement', 'DivideByTwo'))

// output action composition
console.log(JSON.stringify(app, null, 4))

// invoke action composition
const wsk = composer.openwhisk({ignore_certs:true})
function print(obj) { console.log(JSON.stringify(obj.response ? obj.response.result : obj, null, 4)) }
wsk.actions.invoke({ name: 'conductor', params: { $run: app, n: 3 }, blocking: true }).then(print, console.error)
github ibm-functions / shell / tests / data / composer-source / composer6.js View on Github external
* See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict'

const composer = require('@ibm-functions/composer')

// build action composition
const app =  composer.retain(composer.sequence('TripleAndIncrement', 'DivideByTwo'))

// output action composition
console.log(JSON.stringify(app, null, 4))

// invoke action composition
const wsk = composer.openwhisk({ignore_certs:true})
function print(obj) { console.log(JSON.stringify(obj.response ? obj.response.result : obj, null, 4)) }
wsk.actions.invoke({ name: 'conductor', params: { $run: app, n: 3 }, blocking: true }).then(print, console.error)
github ibm-functions / shell / tests / data / composer-source / composer5.js View on Github external
* See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict'

const composer = require('@ibm-functions/composer')

// build action composition
const app = composer.try('RandomError', /* catch */ args => ({ message: args.error + ' is caught' }))

// output action composition
console.log(JSON.stringify(app, null, 4))

// invoke action composition
const wsk = composer.openwhisk({ignore_certs:true})
function print(obj) { console.log(JSON.stringify(obj.response ? obj.response.result : obj, null, 4)) }
wsk.actions.invoke({ name: 'conductor', params: { $run: app, n: 3, $blocking: true }, blocking: true }).then(print, console.error)
github ibm-functions / shell / tests / data / composer-source / composer5.js View on Github external
*
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

'use strict'

const composer = require('@ibm-functions/composer')

// build action composition
const app = composer.try('RandomError', /* catch */ args => ({ message: args.error + ' is caught' }))

// output action composition
console.log(JSON.stringify(app, null, 4))

// invoke action composition
const wsk = composer.openwhisk({ignore_certs:true})
function print(obj) { console.log(JSON.stringify(obj.response ? obj.response.result : obj, null, 4)) }
wsk.actions.invoke({ name: 'conductor', params: { $run: app, n: 3, $blocking: true }, blocking: true }).then(print, console.error)
github ibm-functions / shell / tests / data / composer-source / path-rel-require / srijith.js View on Github external
*
 * Util class for Composer actions.
 *
 */

const composer = require('@ibm-functions/composer');
const composer_utils = require('./composer_utils');

// Actions
const authentication = require('./actions/authentication/index.js').main,
      configuration = require('./actions/configuration/index.js').main,
      options = require('./actions/options/index.js').main,
      post_processing = require('./actions/post_processing/index.js').main,
      start_session = require('./actions/start_session/index.js').main;

const app = composer.if(
  composer_utils.isOptionsCall,
  options,
  function(args) {
    let metrics_aggregator = composer_utils.MetricsAggregator();
    return composer_utils.TimeOutPromise(
      Promise.resolve(
        composer.sequence(
          composer_utils.addMetricAggregator(metrics_aggregator, authentication),
          composer_utils.addMetricAggregator(metrics_aggregator, configuration),
          composer_utils.addMetricAggregator(metrics_aggregator, start_session),
          composer_utils.addMetricAggregator(metrics_aggregator, post_processing)
        ),
        args.origin,
        metrics_aggregator,
        args.max_seconds * 1000
      )
github ibm-functions / shell / app / plugins / modules / composer / lib / create-from-source.js View on Github external
}

                        debug('res', typeof res, res)

                        if (typeof res === 'function') {
                            res = res()
                        }

                        if (isValidFSM(res)) {
                            return res

                        } else {
                            let err = ''
                            try {
                                // maybe the code did a console.log?
                                const maybe = openwhiskComposer.deserialize(JSON.parse(logMessage))
                                if (isValidFSM(maybe)) {
                                    return maybe
                                }
                            } catch (e) {
                                err = e
                            }

                            throw new Error(`Unable to compile your composition
${err}
${errorMessage}`)
                        }
                    } catch (err) {
                        const junkMatch = err.stack.match(/\s+at Object\.exports\.runInNewContext/)
                              || err.stack.match(/\s+at Object\.runInNewContext/)
                              || err.stack.match(/\s+at fs\.readFile/),
                              _message = err.message.indexOf('Invalid argument to compile') >= 0? 'Your source code did not produce a valid app.' : (!junkMatch ? e.stack : err.stack.substring(0, junkMatch.index).replace(/\s+.*create-from-source([^\n])*/g, '\n').replace(/(evalmachine.)/g, filename).replace(/\s+at createScript([^\n])*/g, '\n').trim()),
github apache / openwhisk-composer / samples / node-demo.js View on Github external
* You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// require the composer module
const composer = require('@ibm-functions/composer')

// define the composition
const composition = composer.if(
    composer.action('authenticate', { action: function ({ password }) { return { value: password === 'abc123' } } }),
    composer.action('success', { action: function () { return { message: 'success' } } }),
    composer.action('failure', { action: function () { return { message: 'failure' } } }))

// instantiate OpenWhisk client
const wsk = composer.util.openwhisk({ ignore_certs: true })

wsk.compositions.deploy({ name: 'demo', composition }) // deploy composition
    .then(() => wsk.actions.invoke({ name: 'demo', params: { password: 'abc123' }, blocking: true })) // invoke composition
    .then(({ response }) => console.log(JSON.stringify(response.result, null, 4)), console.error)
github apache / openwhisk-composer / samples / node-demo.js View on Github external
*
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// require the composer module
const composer = require('@ibm-functions/composer')

// define the composition
const composition = composer.if(
    composer.action('authenticate', { action: function ({ password }) { return { value: password === 'abc123' } } }),
    composer.action('success', { action: function () { return { message: 'success' } } }),
    composer.action('failure', { action: function () { return { message: 'failure' } } }))

// instantiate OpenWhisk client
const wsk = composer.util.openwhisk({ ignore_certs: true })

wsk.compositions.deploy({ name: 'demo', composition }) // deploy composition
    .then(() => wsk.actions.invoke({ name: 'demo', params: { password: 'abc123' }, blocking: true })) // invoke composition
    .then(({ response }) => console.log(JSON.stringify(response.result, null, 4)), console.error)
github apache / openwhisk-composer / samples / node-demo.js View on Github external
*
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// require the composer module
const composer = require('@ibm-functions/composer')

// define the composition
const composition = composer.if(
    composer.action('authenticate', { action: function ({ password }) { return { value: password === 'abc123' } } }),
    composer.action('success', { action: function () { return { message: 'success' } } }),
    composer.action('failure', { action: function () { return { message: 'failure' } } }))

// instantiate OpenWhisk client
const wsk = composer.util.openwhisk({ ignore_certs: true })

wsk.compositions.deploy({ name: 'demo', composition }) // deploy composition
    .then(() => wsk.actions.invoke({ name: 'demo', params: { password: 'abc123' }, blocking: true })) // invoke composition
    .then(({ response }) => console.log(JSON.stringify(response.result, null, 4)), console.error)
github apache / openwhisk-composer / samples / node-demo.js View on Github external
* http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// require the composer module
const composer = require('@ibm-functions/composer')

// define the composition
const composition = composer.if(
    composer.action('authenticate', { action: function ({ password }) { return { value: password === 'abc123' } } }),
    composer.action('success', { action: function () { return { message: 'success' } } }),
    composer.action('failure', { action: function () { return { message: 'failure' } } }))

// instantiate OpenWhisk client
const wsk = composer.util.openwhisk({ ignore_certs: true })

wsk.compositions.deploy({ name: 'demo', composition }) // deploy composition
    .then(() => wsk.actions.invoke({ name: 'demo', params: { password: 'abc123' }, blocking: true })) // invoke composition
    .then(({ response }) => console.log(JSON.stringify(response.result, null, 4)), console.error)