JavaScript Extension Development API for Oracle Visual Builder Cloud Service - Classic Applications

Source: extensions.dt/js/api/ExtensionManifestFormat.js

define([], function () {

    'use strict';

    /**
     * Defines the <b>format</b> of extension manifest.
     *
     * @AbcsExtension stable
     * @typedef extensions.dt/js/spi/ExtensionManager~ExtensionManifestFormat
     * @version 16.3.1
     * @property {string} id - The extension ID. Needs to be unique - so ideally w/ a namespace.
     * @property {string} displayName - Human readable name of the extension.
     * @property {string} description - Human readable description of the extension.
     * @property {string} type - Defines type of the extension. Types are defined in {@link extensions.dt/js/spi/ExtensionManager~ExtensionType ExtensionType} .
     * @property {string} package - The AMD modules package.
     * <p>All the AMD modules which makes the extension needs to use this package
     * to refer to each other. The designer is responsible for configuring
     * the requirejs packages appropriately in both DT and RT.</p>
     * <p>The package also needs to be unique</p>
     * @property {string} extensionManager - Path of an AMD module which returns object used to control the extension in design time.
     * The path must begin with the value of 'package' key.
     * <p>The returned object needs to "implement" (contain its methods) the {@link extensions.dt/js/spi/ExtensionManager} module.</p>
     * @property {string} runtime - Runtime section of the manifest.
     * @property {string} resources - Contains a list of resources which needs to be exported to the generated
     * application artefact (for runtime).
     * <p>Please note that these are resource files references (no module names)
     * so the paths needs to contain extensions even for javascript files.</p>
     * @property {string} dependencies - Contains an array of dependencies descriptions of the extension.
     *
     * @example <caption>An example manifest</caption>
     * {
     *  "id": "com.mycompany.myComponent",
     *  "displayName": "My Component",
     *  "description": "My First UI Custom Component",
     *  "type": "uicomponent",
     *  "package": "com.mycompany.myComponent",
     *  "extensionManager": "com.mycompany.myComponent/js/ExtensionManager",
     *  "runtime": {
     *     "resources": [
     *         "js/Constants.js",
     *         "js/Initialiser.js",
     *         "templates/blackbox.html",
     *         "images/oracle.gif"
     *     ]
     *  },
     *  "dependencies": [
     *     {
     *         sourceType: 'application',
     *         sourceId: 'myApplication-1.0',
     *         extensionId: 'com.mycomp.abcs.extensions.myTwitterBOP'
     *     }
     *  ]
     * }
     */
    function ExtensionManifestFormat() {
        AbcsLib.throwStaticClassError();
    }

    /**
     * The extension ID. Needs to be unique - so ideally w/ a namespace
     *
     * @type {String}
     *
     * @example <caption>An ID</caption>
     * com.mycompany.abcs.extensions.myGreatExt
     */
    ExtensionManifestFormat.id = 'id';

     /**
     * Human readable name of the extension.
     *
     * @version 16.3.1
     * @type {String}
     */
    ExtensionManifestFormat.displayName = 'displayName';

     /**
     * Human readable description of the extension.
     *
     * @type {String}
     */
    ExtensionManifestFormat.description = 'description';

    /**
     * Defines type of the extension. Types are defined in {@link extensions.dt/js/spi/ExtensionManager~ExtensionType ExtensionType}
     *
     * @type {String}
     */
    ExtensionManifestFormat.type = 'type';

    /**
     * The AMD modules package.
     *
     * <p>All the AMD modules which makes the extension needs to use this package
     * to refer to each other. The designer is responsible for configuring
     * the requirejs packages appropriately in both DT and RT.</p>
     *
     * <p>The package also needs to be unique</p>
     *
     * @type {String}
     *
     * @example <caption>A FQN package</caption>
     * com.mycompany.abcs.extensions.myGreatExt
     */
    ExtensionManifestFormat.package = 'package';

    /**
     * Path of the module used to control the extension in design time.
     *
     * The path must begin with the value of {@link extensions.dt/js/api/ExtensionManifestFormat.package ExtensionManifestFormat.package} key.
     *
     * <p>The module needs to implement (contain its methods) the {@link extensions.dt/js/spi/ExtensionManager} module.</p>
     *
     * @type {String}
     */
    ExtensionManifestFormat.extensionManager = 'extensionManager';

    /**
     * Path to an image representing the extension. Can be used for either a preview (especially
     * useful for Theme extensions) or an icon (e.g. a Twitter icon for a Twitter BOP) or does not
     * have to be specified at all.
     *
     * @type {String}
     */
    ExtensionManifestFormat.image = 'image';

    /**
     * Runtime section of the manifest.
     *
     * @type {String}
     */
    ExtensionManifestFormat.runtime = 'runtime';

    /**
     * Contains a list of resources which needs to be exported to the generated
     * application artefact (for runtime).
     *
     * <p>Please note that these are resource files references (no module names)
     * so the paths needs to contain extensions even for javascript files.</p>
     *
     * @type {String}
     */
    ExtensionManifestFormat.resources = 'resources';

    /**
     * Contains an array of dependencies descriptions of the extension.
     *
     * @type {String}
     */
    ExtensionManifestFormat.dependencies = 'dependencies';

    return ExtensionManifestFormat;

});