Create init call arguments

@inner
@param {Object} declarationPath the declaration statement path to process
@param {Object} config the config property value info defined in module
@param {Object} opts the transformation options
@param {Object} t the babel type definition
@return {Array}
function createInitCallArgs(declarationPath, config, opts, t) {
    let {isPage, isComponent, isApp, getInitOptions} = opts;
    let callArgs = [declarationPath.node];
    let initOptions;
    if (opts.tplRefs) {
        initOptions = {refs: opts.tplRefs};
    }

    let extraInitOpts = getInitOptions && getInitOptions(
        config, {isPage, isComponent, isApp}
    );
    if (extraInitOpts) {
        initOptions || (initOptions = {});
        Object.assign(initOptions, extraInitOpts);
    }

    if (initOptions) {
        // insert the `ref` information defined in template to the constructor
        callArgs.push(
            createSimpleObjectExpression(
                initOptions, t
            )
        );
    }

    return callArgs;
}