Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
*
* 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)
* 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)
* 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)
*
* 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)
*
* 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
)
}
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()),
* 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)
*
* 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)
*
* 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)
* 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)