src/cordova/plugin/plugin_spec_parser.js
function PluginSpec (raw, scope, id, version) {
    /** @member {String|null} The npm scope of the plugin spec or null if it does not have one */
    this.scope = scope || null;

    /** @member {String|null} The id of the plugin or the raw plugin spec if it is not an npm package */
    this.id = id || raw;

    /** @member {String|null} The specified version of the plugin or null if no version was specified */
    this.version = version || null;

    /** @member {String|null} The npm package of the plugin (with scope) or null if this is not a spec for an npm package */
    this.package = (scope ? scope + id : id) || null;
}
function PluginSpec (raw, scope, id, version) {
    /** @member {String|null} The npm scope of the plugin spec or null if it does not have one */
    this.scope = scope || null;

    /** @member {String|null} The id of the plugin or the raw plugin spec if it is not an npm package */
    this.id = id || raw;

    /** @member {String|null} The specified version of the plugin or null if no version was specified */
    this.version = version || null;

    /** @member {String|null} The npm package of the plugin (with scope) or null if this is not a spec for an npm package */
    this.package = (scope ? scope + id : id) || null;
}
Represents a parsed specification for a plugin
@class
@param {String} raw      The raw specification (i.e. provided by the user)
@param {String} scope    The scope of the package if this is an npm package
@param {String} id       The id of the package if this is an npm package
@param {String} version  The version specified for the package if this is an npm package