@vamship/build-utils 1.6.1 → 2.0.0-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +40 -40
 - package/src/directory.js +20 -24
 - package/src/index.js +5 -17
 - package/src/project.js +160 -433
 - package/src/schema/project-definition.js +137 -0
 - package/src/task-builder.js +100 -0
 - package/src/task-builders/build-js-task-builder.js +57 -0
 - package/src/task-builders/build-task-builder.js +78 -0
 - package/src/task-builders/build-ts-task-builder.js +63 -0
 - package/src/task-builders/build-ui-task-builder.js +45 -0
 - package/src/task-builders/clean-task-builder.js +39 -0
 - package/src/task-builders/copy-files-task-builder.js +78 -0
 - package/src/task-builders/docs-js-task-builder.js +74 -0
 - package/src/task-builders/docs-task-builder.js +74 -0
 - package/src/task-builders/docs-ts-task-builder.js +52 -0
 - package/src/task-builders/format-task-builder.js +61 -0
 - package/src/task-builders/index.js +21 -17
 - package/src/task-builders/lint-fix-task-builder.js +61 -0
 - package/src/task-builders/lint-task-builder.js +56 -0
 - package/src/task-builders/not-supported-task-builder.js +48 -0
 - package/src/task-builders/package-aws-task-builder.js +105 -0
 - package/src/task-builders/package-container-task-builder.js +132 -0
 - package/src/task-builders/package-npm-task-builder.js +83 -0
 - package/src/task-builders/package-task-builder.js +101 -0
 - package/src/task-builders/publish-aws-task-builder.js +111 -0
 - package/src/task-builders/publish-container-task-builder.js +103 -0
 - package/src/task-builders/publish-npm-task-builder.js +60 -0
 - package/src/task-builders/publish-task-builder.js +98 -0
 - package/src/task-builders/test-task-builder.js +85 -0
 - package/src/task-builders/test-ui-task-builder.js +65 -0
 - package/src/task-builders/watch-task-builder.js +109 -0
 - package/src/task-factories/api-task-factory.js +67 -0
 - package/src/task-factories/aws-microservice-task-factory.js +53 -0
 - package/src/task-factories/cli-task-factory.js +68 -0
 - package/src/task-factories/container-task-factory.js +64 -0
 - package/src/task-factories/index.js +8 -0
 - package/src/task-factories/lib-task-factory.js +52 -0
 - package/src/task-factories/ui-task-factory.js +48 -0
 - package/src/task-factory.js +52 -0
 - package/src/utils/semver-utils.js +29 -0
 - package/src/utils/task-factory-utils.js +70 -0
 - package/src/task-builders/build/build-js.js +0 -66
 - package/src/task-builders/build/build-ts.js +0 -70
 - package/src/task-builders/build/build-types.js +0 -47
 - package/src/task-builders/build/build-ui.js +0 -67
 - package/src/task-builders/build/index.js +0 -60
 - package/src/task-builders/clean.js +0 -57
 - package/src/task-builders/docs/docs-js.js +0 -41
 - package/src/task-builders/docs/docs-ts.js +0 -40
 - package/src/task-builders/docs/index.js +0 -32
 - package/src/task-builders/format.js +0 -58
 - package/src/task-builders/lint.js +0 -56
 - package/src/task-builders/package/index.js +0 -50
 - package/src/task-builders/package/package-aws.js +0 -58
 - package/src/task-builders/package/package-docker.js +0 -128
 - package/src/task-builders/package/package-npm.js +0 -25
 - package/src/task-builders/package/package-types.js +0 -54
 - package/src/task-builders/package/utils.js +0 -50
 - package/src/task-builders/publish/index.js +0 -50
 - package/src/task-builders/publish/publish-aws.js +0 -62
 - package/src/task-builders/publish/publish-docker.js +0 -79
 - package/src/task-builders/publish/publish-npm.js +0 -36
 - package/src/task-builders/publish/publish-types.js +0 -36
 - package/src/task-builders/test/index.js +0 -39
 - package/src/task-builders/test/test-ui.js +0 -39
 - package/src/task-builders/test/test.js +0 -67
 
| 
         @@ -0,0 +1,137 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /**
         
     | 
| 
      
 2 
     | 
    
         
            +
             * Defines the JSON schema for a project definition.
         
     | 
| 
      
 3 
     | 
    
         
            +
             */
         
     | 
| 
      
 4 
     | 
    
         
            +
            export default {
         
     | 
| 
      
 5 
     | 
    
         
            +
                type: 'object',
         
     | 
| 
      
 6 
     | 
    
         
            +
                properties: {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 8 
     | 
    
         
            +
                     * Project name
         
     | 
| 
      
 9 
     | 
    
         
            +
                     */
         
     | 
| 
      
 10 
     | 
    
         
            +
                    name: { type: 'string', minLength: 1 },
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 13 
     | 
    
         
            +
                     * Project description
         
     | 
| 
      
 14 
     | 
    
         
            +
                     */
         
     | 
| 
      
 15 
     | 
    
         
            +
                    description: { type: 'string', minLength: 1 },
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 18 
     | 
    
         
            +
                     * Project version
         
     | 
| 
      
 19 
     | 
    
         
            +
                     */
         
     | 
| 
      
 20 
     | 
    
         
            +
                    version: { type: 'string', minLength: 1 },
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                    /**
         
     | 
| 
      
 23 
     | 
    
         
            +
                     * Metadata used to configure project builds.
         
     | 
| 
      
 24 
     | 
    
         
            +
                     */
         
     | 
| 
      
 25 
     | 
    
         
            +
                    buildMetadata: {
         
     | 
| 
      
 26 
     | 
    
         
            +
                        type: 'object',
         
     | 
| 
      
 27 
     | 
    
         
            +
                        properties: {
         
     | 
| 
      
 28 
     | 
    
         
            +
                            /**
         
     | 
| 
      
 29 
     | 
    
         
            +
                             * The project type - determines the build tasks that are
         
     | 
| 
      
 30 
     | 
    
         
            +
                             * generated.
         
     | 
| 
      
 31 
     | 
    
         
            +
                             */
         
     | 
| 
      
 32 
     | 
    
         
            +
                            type: {
         
     | 
| 
      
 33 
     | 
    
         
            +
                                enum: [
         
     | 
| 
      
 34 
     | 
    
         
            +
                                    'lib',
         
     | 
| 
      
 35 
     | 
    
         
            +
                                    'api',
         
     | 
| 
      
 36 
     | 
    
         
            +
                                    'cli',
         
     | 
| 
      
 37 
     | 
    
         
            +
                                    'ui',
         
     | 
| 
      
 38 
     | 
    
         
            +
                                    'container',
         
     | 
| 
      
 39 
     | 
    
         
            +
                                    'aws-microservice',
         
     | 
| 
      
 40 
     | 
    
         
            +
                                ],
         
     | 
| 
      
 41 
     | 
    
         
            +
                            },
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                            /**
         
     | 
| 
      
 44 
     | 
    
         
            +
                             * The programming language used for the project.
         
     | 
| 
      
 45 
     | 
    
         
            +
                             */
         
     | 
| 
      
 46 
     | 
    
         
            +
                            language: { enum: ['js', 'ts'] },
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                            /**
         
     | 
| 
      
 49 
     | 
    
         
            +
                             * AWS configuration - cloud formation stacks, etc.
         
     | 
| 
      
 50 
     | 
    
         
            +
                             */
         
     | 
| 
      
 51 
     | 
    
         
            +
                            aws: {
         
     | 
| 
      
 52 
     | 
    
         
            +
                                type: 'object',
         
     | 
| 
      
 53 
     | 
    
         
            +
                                properties: {
         
     | 
| 
      
 54 
     | 
    
         
            +
                                    stacks: {
         
     | 
| 
      
 55 
     | 
    
         
            +
                                        type: 'object',
         
     | 
| 
      
 56 
     | 
    
         
            +
                                        /**
         
     | 
| 
      
 57 
     | 
    
         
            +
                                         * Individual stack names.
         
     | 
| 
      
 58 
     | 
    
         
            +
                                         */
         
     | 
| 
      
 59 
     | 
    
         
            +
                                        patternProperties: {
         
     | 
| 
      
 60 
     | 
    
         
            +
                                            '^[a-zA-Z0-9-_]+$': {
         
     | 
| 
      
 61 
     | 
    
         
            +
                                                type: 'string',
         
     | 
| 
      
 62 
     | 
    
         
            +
                                                minLength: 1,
         
     | 
| 
      
 63 
     | 
    
         
            +
                                            },
         
     | 
| 
      
 64 
     | 
    
         
            +
                                        },
         
     | 
| 
      
 65 
     | 
    
         
            +
                                        additionalProperties: false,
         
     | 
| 
      
 66 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 67 
     | 
    
         
            +
                                },
         
     | 
| 
      
 68 
     | 
    
         
            +
                                additionalProperties: false,
         
     | 
| 
      
 69 
     | 
    
         
            +
                                required: ['stacks'],
         
     | 
| 
      
 70 
     | 
    
         
            +
                            },
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                            /**
         
     | 
| 
      
 73 
     | 
    
         
            +
                             * Container configuration - image builds, etc.
         
     | 
| 
      
 74 
     | 
    
         
            +
                             */
         
     | 
| 
      
 75 
     | 
    
         
            +
                            container: {
         
     | 
| 
      
 76 
     | 
    
         
            +
                                type: 'object',
         
     | 
| 
      
 77 
     | 
    
         
            +
                                /**
         
     | 
| 
      
 78 
     | 
    
         
            +
                                 * Container build configurations.
         
     | 
| 
      
 79 
     | 
    
         
            +
                                 */
         
     | 
| 
      
 80 
     | 
    
         
            +
                                patternProperties: {
         
     | 
| 
      
 81 
     | 
    
         
            +
                                    '^[a-zA-Z0-9-_]+$': {
         
     | 
| 
      
 82 
     | 
    
         
            +
                                        type: 'object',
         
     | 
| 
      
 83 
     | 
    
         
            +
                                        properties: {
         
     | 
| 
      
 84 
     | 
    
         
            +
                                            /**
         
     | 
| 
      
 85 
     | 
    
         
            +
                                             * Name of the repository that houses the
         
     | 
| 
      
 86 
     | 
    
         
            +
                                             * container image.
         
     | 
| 
      
 87 
     | 
    
         
            +
                                             */
         
     | 
| 
      
 88 
     | 
    
         
            +
                                            repo: { type: 'string', minLength: 1 },
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                                            /**
         
     | 
| 
      
 91 
     | 
    
         
            +
                                             * The file containing build instructions.
         
     | 
| 
      
 92 
     | 
    
         
            +
                                             */
         
     | 
| 
      
 93 
     | 
    
         
            +
                                            buildFile: { type: 'string', minLength: 1 },
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                                            /**
         
     | 
| 
      
 96 
     | 
    
         
            +
                                             * Collection of arguments passed to the
         
     | 
| 
      
 97 
     | 
    
         
            +
                                             * container build.
         
     | 
| 
      
 98 
     | 
    
         
            +
                                             */
         
     | 
| 
      
 99 
     | 
    
         
            +
                                            buildArgs: {
         
     | 
| 
      
 100 
     | 
    
         
            +
                                                type: 'object',
         
     | 
| 
      
 101 
     | 
    
         
            +
                                                /**
         
     | 
| 
      
 102 
     | 
    
         
            +
                                                 * Individual build arguments
         
     | 
| 
      
 103 
     | 
    
         
            +
                                                 */
         
     | 
| 
      
 104 
     | 
    
         
            +
                                                patternProperties: {
         
     | 
| 
      
 105 
     | 
    
         
            +
                                                    '^[a-zA-Z0-9-_]+$': {
         
     | 
| 
      
 106 
     | 
    
         
            +
                                                        type: 'string',
         
     | 
| 
      
 107 
     | 
    
         
            +
                                                        minLength: 1,
         
     | 
| 
      
 108 
     | 
    
         
            +
                                                    },
         
     | 
| 
      
 109 
     | 
    
         
            +
                                                },
         
     | 
| 
      
 110 
     | 
    
         
            +
                                                additionalProperties: false,
         
     | 
| 
      
 111 
     | 
    
         
            +
                                            },
         
     | 
| 
      
 112 
     | 
    
         
            +
                                        },
         
     | 
| 
      
 113 
     | 
    
         
            +
                                        required: ['repo'],
         
     | 
| 
      
 114 
     | 
    
         
            +
                                        additionalProperties: false,
         
     | 
| 
      
 115 
     | 
    
         
            +
                                    },
         
     | 
| 
      
 116 
     | 
    
         
            +
                                },
         
     | 
| 
      
 117 
     | 
    
         
            +
                                required: ['default'],
         
     | 
| 
      
 118 
     | 
    
         
            +
                                additionalProperties: false,
         
     | 
| 
      
 119 
     | 
    
         
            +
                            },
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                            /**
         
     | 
| 
      
 122 
     | 
    
         
            +
                             * Any environment variables that have to be defined for the
         
     | 
| 
      
 123 
     | 
    
         
            +
                             * build to succeed.
         
     | 
| 
      
 124 
     | 
    
         
            +
                             */
         
     | 
| 
      
 125 
     | 
    
         
            +
                            requiredEnv: { type: 'array' },
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                            /**
         
     | 
| 
      
 128 
     | 
    
         
            +
                             * Any static files that should be copied over during the build
         
     | 
| 
      
 129 
     | 
    
         
            +
                             * process without any compilation/modification.
         
     | 
| 
      
 130 
     | 
    
         
            +
                             */
         
     | 
| 
      
 131 
     | 
    
         
            +
                            staticFilePatterns: { type: 'array' },
         
     | 
| 
      
 132 
     | 
    
         
            +
                        },
         
     | 
| 
      
 133 
     | 
    
         
            +
                        required: ['type', 'language'],
         
     | 
| 
      
 134 
     | 
    
         
            +
                    },
         
     | 
| 
      
 135 
     | 
    
         
            +
                },
         
     | 
| 
      
 136 
     | 
    
         
            +
                required: ['name', 'description', 'version', 'buildMetadata'],
         
     | 
| 
      
 137 
     | 
    
         
            +
            };
         
     | 
| 
         @@ -0,0 +1,100 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import { Project } from './project.js';
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            /**
         
     | 
| 
      
 4 
     | 
    
         
            +
             * Represents a builder class that can construct a Gulp task. This abstract base
         
     | 
| 
      
 5 
     | 
    
         
            +
             * class must be extended by child classes that provide the required
         
     | 
| 
      
 6 
     | 
    
         
            +
             * implementation.
         
     | 
| 
      
 7 
     | 
    
         
            +
             */
         
     | 
| 
      
 8 
     | 
    
         
            +
            export default class TaskBuilder {
         
     | 
| 
      
 9 
     | 
    
         
            +
                /**
         
     | 
| 
      
 10 
     | 
    
         
            +
                 * Creates a task builder with the given name and description.
         
     | 
| 
      
 11 
     | 
    
         
            +
                 *
         
     | 
| 
      
 12 
     | 
    
         
            +
                 * @param {string} name The name of the task - this will be the name
         
     | 
| 
      
 13 
     | 
    
         
            +
                 * recognized by gulp, and must be unique.
         
     | 
| 
      
 14 
     | 
    
         
            +
                 * @param {string} description The description of the task - this will be
         
     | 
| 
      
 15 
     | 
    
         
            +
                 * the description shown by gulp.
         
     | 
| 
      
 16 
     | 
    
         
            +
                 */
         
     | 
| 
      
 17 
     | 
    
         
            +
                constructor(name, description) {
         
     | 
| 
      
 18 
     | 
    
         
            +
                    if (typeof name !== 'string' || name.length <= 0) {
         
     | 
| 
      
 19 
     | 
    
         
            +
                        throw new Error('Invalid name (arg #1)');
         
     | 
| 
      
 20 
     | 
    
         
            +
                    }
         
     | 
| 
      
 21 
     | 
    
         
            +
                    if (typeof description !== 'string' || description.length <= 0) {
         
     | 
| 
      
 22 
     | 
    
         
            +
                        throw new Error('Invalid description (arg #2)');
         
     | 
| 
      
 23 
     | 
    
         
            +
                    }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    this._name = name;
         
     | 
| 
      
 26 
     | 
    
         
            +
                    this._description = description;
         
     | 
| 
      
 27 
     | 
    
         
            +
                }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                /**
         
     | 
| 
      
 30 
     | 
    
         
            +
                 * Creates a new task - needs to be implemented by a child class.
         
     | 
| 
      
 31 
     | 
    
         
            +
                 *
         
     | 
| 
      
 32 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 33 
     | 
    
         
            +
                 * @param {Object} project The project for which the task will be created.
         
     | 
| 
      
 34 
     | 
    
         
            +
                 * @returns {Function} A gulp task
         
     | 
| 
      
 35 
     | 
    
         
            +
                 */
         
     | 
| 
      
 36 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    throw new Error('Not implemented - TaskBuilder._createTask()');
         
     | 
| 
      
 38 
     | 
    
         
            +
                }
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                /**
         
     | 
| 
      
 41 
     | 
    
         
            +
                 * Gets the name of the task.
         
     | 
| 
      
 42 
     | 
    
         
            +
                 *
         
     | 
| 
      
 43 
     | 
    
         
            +
                 * @returns {String} The task name.
         
     | 
| 
      
 44 
     | 
    
         
            +
                 */
         
     | 
| 
      
 45 
     | 
    
         
            +
                get name() {
         
     | 
| 
      
 46 
     | 
    
         
            +
                    return this._name;
         
     | 
| 
      
 47 
     | 
    
         
            +
                }
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                /**
         
     | 
| 
      
 50 
     | 
    
         
            +
                 * Gets the description of the task.
         
     | 
| 
      
 51 
     | 
    
         
            +
                 *
         
     | 
| 
      
 52 
     | 
    
         
            +
                 * @returns {String} The task description.
         
     | 
| 
      
 53 
     | 
    
         
            +
                 */
         
     | 
| 
      
 54 
     | 
    
         
            +
                get description() {
         
     | 
| 
      
 55 
     | 
    
         
            +
                    return this._description;
         
     | 
| 
      
 56 
     | 
    
         
            +
                }
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                /**
         
     | 
| 
      
 59 
     | 
    
         
            +
                 * Builds and returns a Gulp task.
         
     | 
| 
      
 60 
     | 
    
         
            +
                 *
         
     | 
| 
      
 61 
     | 
    
         
            +
                 * @param {Object} project The project for which the task will be created.
         
     | 
| 
      
 62 
     | 
    
         
            +
                 * @returns {Function} A gulp task
         
     | 
| 
      
 63 
     | 
    
         
            +
                 */
         
     | 
| 
      
 64 
     | 
    
         
            +
                buildTask(project) {
         
     | 
| 
      
 65 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 66 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 67 
     | 
    
         
            +
                    }
         
     | 
| 
      
 68 
     | 
    
         
            +
                    const task = this._createTask(project);
         
     | 
| 
      
 69 
     | 
    
         
            +
                    task.displayName = this._name;
         
     | 
| 
      
 70 
     | 
    
         
            +
                    task.description = this._description;
         
     | 
| 
      
 71 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 72 
     | 
    
         
            +
                }
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                /**
         
     | 
| 
      
 75 
     | 
    
         
            +
                 * Returns an array of paths that should be watched for changes when
         
     | 
| 
      
 76 
     | 
    
         
            +
                 * enabling watch (monitor and execute tasks). No watch tasks will be
         
     | 
| 
      
 77 
     | 
    
         
            +
                 * created if this method returns a falsy value or an empty array
         
     | 
| 
      
 78 
     | 
    
         
            +
                 *
         
     | 
| 
      
 79 
     | 
    
         
            +
                 * The default implementation returns an array that watches source files.
         
     | 
| 
      
 80 
     | 
    
         
            +
                 * This implementation can be overridden by child classes to provide
         
     | 
| 
      
 81 
     | 
    
         
            +
                 * specific paths for the task.
         
     | 
| 
      
 82 
     | 
    
         
            +
                 *
         
     | 
| 
      
 83 
     | 
    
         
            +
                 * @param {Object} project The project used to generate watch tasks.
         
     | 
| 
      
 84 
     | 
    
         
            +
                 * @returns {Array} An array of paths to watch.
         
     | 
| 
      
 85 
     | 
    
         
            +
                 */
         
     | 
| 
      
 86 
     | 
    
         
            +
                getWatchPaths(project) {
         
     | 
| 
      
 87 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 88 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 89 
     | 
    
         
            +
                    }
         
     | 
| 
      
 90 
     | 
    
         
            +
                    const dirs = ['src', 'test', 'infra'];
         
     | 
| 
      
 91 
     | 
    
         
            +
                    const exts = ['md', 'html', 'json', 'js', 'jsx', 'ts', 'tsx'];
         
     | 
| 
      
 92 
     | 
    
         
            +
                    return dirs
         
     | 
| 
      
 93 
     | 
    
         
            +
                        .map((dir) =>
         
     | 
| 
      
 94 
     | 
    
         
            +
                            exts.map((ext) =>
         
     | 
| 
      
 95 
     | 
    
         
            +
                                project.rootDir.getChild(dir).getAllFilesGlob(ext),
         
     | 
| 
      
 96 
     | 
    
         
            +
                            ),
         
     | 
| 
      
 97 
     | 
    
         
            +
                        )
         
     | 
| 
      
 98 
     | 
    
         
            +
                        .flat();
         
     | 
| 
      
 99 
     | 
    
         
            +
                }
         
     | 
| 
      
 100 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,57 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            'use strict';
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            import _gulp from 'gulp';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            /**
         
     | 
| 
      
 9 
     | 
    
         
            +
             * Builder that can be used to generate a gulp task to copy javascript files
         
     | 
| 
      
 10 
     | 
    
         
            +
             * from source to build directories.
         
     | 
| 
      
 11 
     | 
    
         
            +
             */
         
     | 
| 
      
 12 
     | 
    
         
            +
            export class BuildJsTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 13 
     | 
    
         
            +
                /**
         
     | 
| 
      
 14 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 15 
     | 
    
         
            +
                 */
         
     | 
| 
      
 16 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    super(
         
     | 
| 
      
 18 
     | 
    
         
            +
                        'build-js',
         
     | 
| 
      
 19 
     | 
    
         
            +
                        'Copies javascript files from source to destination directories',
         
     | 
| 
      
 20 
     | 
    
         
            +
                    );
         
     | 
| 
      
 21 
     | 
    
         
            +
                }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                /**
         
     | 
| 
      
 24 
     | 
    
         
            +
                 * Generates a gulp task to copy javascript files from source to build
         
     | 
| 
      
 25 
     | 
    
         
            +
                 * directories.
         
     | 
| 
      
 26 
     | 
    
         
            +
                 *
         
     | 
| 
      
 27 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 28 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 29 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 30 
     | 
    
         
            +
                 *
         
     | 
| 
      
 31 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 32 
     | 
    
         
            +
                 */
         
     | 
| 
      
 33 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 34 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 35 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 36 
     | 
    
         
            +
                    }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                    const { rootDir } = project;
         
     | 
| 
      
 39 
     | 
    
         
            +
                    const dirs = ['src', 'test', 'infra'];
         
     | 
| 
      
 40 
     | 
    
         
            +
                    const extensions = ['js'];
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                    const paths = dirs
         
     | 
| 
      
 43 
     | 
    
         
            +
                        .map((dir) => rootDir.getChild(dir))
         
     | 
| 
      
 44 
     | 
    
         
            +
                        .map((dir) => extensions.map((ext) => dir.getAllFilesGlob(ext)))
         
     | 
| 
      
 45 
     | 
    
         
            +
                        .reduce((result, arr) => result.concat(arr), []);
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    const task = () =>
         
     | 
| 
      
 48 
     | 
    
         
            +
                        _gulp
         
     | 
| 
      
 49 
     | 
    
         
            +
                            .src(paths, {
         
     | 
| 
      
 50 
     | 
    
         
            +
                                allowEmpty: true,
         
     | 
| 
      
 51 
     | 
    
         
            +
                                base: rootDir.globPath,
         
     | 
| 
      
 52 
     | 
    
         
            +
                            })
         
     | 
| 
      
 53 
     | 
    
         
            +
                            .pipe(_gulp.dest(rootDir.getChild('working').absolutePath));
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 56 
     | 
    
         
            +
                }
         
     | 
| 
      
 57 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,78 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            'use strict';
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            import _gulp from 'gulp';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { NotSupportedTaskBuilder } from './not-supported-task-builder.js';
         
     | 
| 
      
 7 
     | 
    
         
            +
            import { BuildJsTaskBuilder } from './build-js-task-builder.js';
         
     | 
| 
      
 8 
     | 
    
         
            +
            import { BuildTsTaskBuilder } from './build-ts-task-builder.js';
         
     | 
| 
      
 9 
     | 
    
         
            +
            import { BuildUiTaskBuilder } from './build-ui-task-builder.js';
         
     | 
| 
      
 10 
     | 
    
         
            +
            import { CopyFilesTaskBuilder } from './copy-files-task-builder.js';
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            /**
         
     | 
| 
      
 13 
     | 
    
         
            +
             * General purpose build task that configures sub tasks for build based on the
         
     | 
| 
      
 14 
     | 
    
         
            +
             * project.
         
     | 
| 
      
 15 
     | 
    
         
            +
             */
         
     | 
| 
      
 16 
     | 
    
         
            +
            export class BuildTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 17 
     | 
    
         
            +
                /**
         
     | 
| 
      
 18 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 19 
     | 
    
         
            +
                 */
         
     | 
| 
      
 20 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 21 
     | 
    
         
            +
                    super(
         
     | 
| 
      
 22 
     | 
    
         
            +
                        'build',
         
     | 
| 
      
 23 
     | 
    
         
            +
                        `Builds the project making it ready for execution/packaging`,
         
     | 
| 
      
 24 
     | 
    
         
            +
                    );
         
     | 
| 
      
 25 
     | 
    
         
            +
                }
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                /**
         
     | 
| 
      
 28 
     | 
    
         
            +
                 * Generates a gulp task to package a project for building a project.
         
     | 
| 
      
 29 
     | 
    
         
            +
                 *
         
     | 
| 
      
 30 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 31 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 32 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 33 
     | 
    
         
            +
                 *
         
     | 
| 
      
 34 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 35 
     | 
    
         
            +
                 */
         
     | 
| 
      
 36 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 38 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 39 
     | 
    
         
            +
                    }
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    const builders = this._getSubBuilders(project).map((builder) =>
         
     | 
| 
      
 42 
     | 
    
         
            +
                        builder.buildTask(project),
         
     | 
| 
      
 43 
     | 
    
         
            +
                    );
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                    const task = _gulp.series(builders);
         
     | 
| 
      
 46 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 47 
     | 
    
         
            +
                }
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                /**
         
     | 
| 
      
 50 
     | 
    
         
            +
                 * Returns a list of sub builders based on the project type and language.
         
     | 
| 
      
 51 
     | 
    
         
            +
                 * @private
         
     | 
| 
      
 52 
     | 
    
         
            +
                 */
         
     | 
| 
      
 53 
     | 
    
         
            +
                _getSubBuilders(project) {
         
     | 
| 
      
 54 
     | 
    
         
            +
                    const { type, language } = project;
         
     | 
| 
      
 55 
     | 
    
         
            +
                    if (type === 'ui') {
         
     | 
| 
      
 56 
     | 
    
         
            +
                        return [new BuildUiTaskBuilder(), new CopyFilesTaskBuilder()];
         
     | 
| 
      
 57 
     | 
    
         
            +
                    } else if (type === 'container') {
         
     | 
| 
      
 58 
     | 
    
         
            +
                        return [new NotSupportedTaskBuilder()];
         
     | 
| 
      
 59 
     | 
    
         
            +
                    } else if (language === 'ts') {
         
     | 
| 
      
 60 
     | 
    
         
            +
                        return [new BuildTsTaskBuilder(), new CopyFilesTaskBuilder()];
         
     | 
| 
      
 61 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 62 
     | 
    
         
            +
                        return [new BuildJsTaskBuilder(), new CopyFilesTaskBuilder()];
         
     | 
| 
      
 63 
     | 
    
         
            +
                    }
         
     | 
| 
      
 64 
     | 
    
         
            +
                }
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                /**
         
     | 
| 
      
 67 
     | 
    
         
            +
                 * @override
         
     | 
| 
      
 68 
     | 
    
         
            +
                 */
         
     | 
| 
      
 69 
     | 
    
         
            +
                getWatchPaths(project) {
         
     | 
| 
      
 70 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 71 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 72 
     | 
    
         
            +
                    }
         
     | 
| 
      
 73 
     | 
    
         
            +
                    const paths = this._getSubBuilders(project)
         
     | 
| 
      
 74 
     | 
    
         
            +
                        .map((builder) => builder.getWatchPaths(project))
         
     | 
| 
      
 75 
     | 
    
         
            +
                        .flat();
         
     | 
| 
      
 76 
     | 
    
         
            +
                    return [...new Set(paths)];
         
     | 
| 
      
 77 
     | 
    
         
            +
                }
         
     | 
| 
      
 78 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,63 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            'use strict';
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            import _gulp from 'gulp';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            import _typescript from 'gulp-typescript';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 7 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            /**
         
     | 
| 
      
 10 
     | 
    
         
            +
             * Builder that can be used to generate a gulp task to compile typescript files.
         
     | 
| 
      
 11 
     | 
    
         
            +
             */
         
     | 
| 
      
 12 
     | 
    
         
            +
            export class BuildTsTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 13 
     | 
    
         
            +
                /**
         
     | 
| 
      
 14 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 15 
     | 
    
         
            +
                 */
         
     | 
| 
      
 16 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    super(
         
     | 
| 
      
 18 
     | 
    
         
            +
                        'build-ts',
         
     | 
| 
      
 19 
     | 
    
         
            +
                        'Build typescript files and writes them to the build directory',
         
     | 
| 
      
 20 
     | 
    
         
            +
                    );
         
     | 
| 
      
 21 
     | 
    
         
            +
                }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                /**
         
     | 
| 
      
 24 
     | 
    
         
            +
                 * Generates a gulp task to build typescript files.
         
     | 
| 
      
 25 
     | 
    
         
            +
                 *
         
     | 
| 
      
 26 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 27 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 28 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 29 
     | 
    
         
            +
                 *
         
     | 
| 
      
 30 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 31 
     | 
    
         
            +
                 */
         
     | 
| 
      
 32 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 33 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 34 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 35 
     | 
    
         
            +
                    }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    const { rootDir } = project;
         
     | 
| 
      
 38 
     | 
    
         
            +
                    const dirs = ['src', 'test', 'infra'];
         
     | 
| 
      
 39 
     | 
    
         
            +
                    const extensions = ['ts'];
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    const paths = dirs
         
     | 
| 
      
 42 
     | 
    
         
            +
                        .map((dir) => rootDir.getChild(dir))
         
     | 
| 
      
 43 
     | 
    
         
            +
                        .map((dir) => extensions.map((ext) => dir.getAllFilesGlob(ext)))
         
     | 
| 
      
 44 
     | 
    
         
            +
                        .reduce((result, arr) => result.concat(arr), []);
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                    const task = () =>
         
     | 
| 
      
 47 
     | 
    
         
            +
                        _gulp
         
     | 
| 
      
 48 
     | 
    
         
            +
                            .src(paths, {
         
     | 
| 
      
 49 
     | 
    
         
            +
                                allowEmpty: true,
         
     | 
| 
      
 50 
     | 
    
         
            +
                                base: rootDir.globPath,
         
     | 
| 
      
 51 
     | 
    
         
            +
                            })
         
     | 
| 
      
 52 
     | 
    
         
            +
                            .pipe(_typescript.createProject('tsconfig.json')())
         
     | 
| 
      
 53 
     | 
    
         
            +
                            .on('error', (err) => {
         
     | 
| 
      
 54 
     | 
    
         
            +
                                /*
         
     | 
| 
      
 55 
     | 
    
         
            +
                                 * Do nothing. This handler prevents the gulp task from
         
     | 
| 
      
 56 
     | 
    
         
            +
                                 * crashing with an unhandled error.
         
     | 
| 
      
 57 
     | 
    
         
            +
                                 */
         
     | 
| 
      
 58 
     | 
    
         
            +
                            })
         
     | 
| 
      
 59 
     | 
    
         
            +
                            .pipe(_gulp.dest(rootDir.getChild('working').absolutePath));
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 62 
     | 
    
         
            +
                }
         
     | 
| 
      
 63 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            'use strict';
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 4 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 5 
     | 
    
         
            +
            import { execa as _execa } from 'execa';
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            /**
         
     | 
| 
      
 8 
     | 
    
         
            +
             * Builder that can be used to generate a gulp task to build a web UI project.
         
     | 
| 
      
 9 
     | 
    
         
            +
             */
         
     | 
| 
      
 10 
     | 
    
         
            +
            export class BuildUiTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 11 
     | 
    
         
            +
                /**
         
     | 
| 
      
 12 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 13 
     | 
    
         
            +
                 */
         
     | 
| 
      
 14 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 15 
     | 
    
         
            +
                    super('build-ui', 'Build web ui project');
         
     | 
| 
      
 16 
     | 
    
         
            +
                }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                /**
         
     | 
| 
      
 19 
     | 
    
         
            +
                 * Generates a gulp task to build a web UI project.
         
     | 
| 
      
 20 
     | 
    
         
            +
                 *
         
     | 
| 
      
 21 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 22 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 23 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 24 
     | 
    
         
            +
                 *
         
     | 
| 
      
 25 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 26 
     | 
    
         
            +
                 */
         
     | 
| 
      
 27 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 28 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 29 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 30 
     | 
    
         
            +
                    }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    const viteBin = project.rootDir.getFilePath('node_modules/.bin/vite');
         
     | 
| 
      
 33 
     | 
    
         
            +
                    const task = () =>
         
     | 
| 
      
 34 
     | 
    
         
            +
                        _execa(viteBin, ['build'], { stdio: 'inherit' }).then(
         
     | 
| 
      
 35 
     | 
    
         
            +
                            undefined,
         
     | 
| 
      
 36 
     | 
    
         
            +
                            (err) => {
         
     | 
| 
      
 37 
     | 
    
         
            +
                                /*
         
     | 
| 
      
 38 
     | 
    
         
            +
                                 * Do nothing. This handler prevents the gulp task from
         
     | 
| 
      
 39 
     | 
    
         
            +
                                 * crashing with an unhandled error.
         
     | 
| 
      
 40 
     | 
    
         
            +
                                 */
         
     | 
| 
      
 41 
     | 
    
         
            +
                            },
         
     | 
| 
      
 42 
     | 
    
         
            +
                        );
         
     | 
| 
      
 43 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 44 
     | 
    
         
            +
                }
         
     | 
| 
      
 45 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import _delete from 'delete';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            /**
         
     | 
| 
      
 6 
     | 
    
         
            +
             * Builder that can be used to generate a gulp task to clean temporary project
         
     | 
| 
      
 7 
     | 
    
         
            +
             * files.
         
     | 
| 
      
 8 
     | 
    
         
            +
             */
         
     | 
| 
      
 9 
     | 
    
         
            +
            export class CleanTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 10 
     | 
    
         
            +
                /**
         
     | 
| 
      
 11 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 12 
     | 
    
         
            +
                 */
         
     | 
| 
      
 13 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    super(
         
     | 
| 
      
 15 
     | 
    
         
            +
                        'clean',
         
     | 
| 
      
 16 
     | 
    
         
            +
                        'Cleans out working, distribution and temporary files and directories',
         
     | 
| 
      
 17 
     | 
    
         
            +
                    );
         
     | 
| 
      
 18 
     | 
    
         
            +
                }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                /**
         
     | 
| 
      
 21 
     | 
    
         
            +
                 * Generates a gulp task to clean up temporary project files.
         
     | 
| 
      
 22 
     | 
    
         
            +
                 *
         
     | 
| 
      
 23 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 24 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 25 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 26 
     | 
    
         
            +
                 *
         
     | 
| 
      
 27 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 28 
     | 
    
         
            +
                 */
         
     | 
| 
      
 29 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 30 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 31 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 32 
     | 
    
         
            +
                    }
         
     | 
| 
      
 33 
     | 
    
         
            +
                    const rootDir = project.rootDir;
         
     | 
| 
      
 34 
     | 
    
         
            +
                    const dirs = ['coverage', 'dist', 'working', '.tscache', 'cdk.out'];
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                    const paths = dirs.map((dir) => rootDir.getChild(dir).globPath);
         
     | 
| 
      
 37 
     | 
    
         
            +
                    return () => _delete(paths);
         
     | 
| 
      
 38 
     | 
    
         
            +
                }
         
     | 
| 
      
 39 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,78 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            'use strict';
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            import _gulp from 'gulp';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            /**
         
     | 
| 
      
 9 
     | 
    
         
            +
             * Builder that can be used to generate a gulp task to copy project files from
         
     | 
| 
      
 10 
     | 
    
         
            +
             * source to build directories.
         
     | 
| 
      
 11 
     | 
    
         
            +
             */
         
     | 
| 
      
 12 
     | 
    
         
            +
            export class CopyFilesTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 13 
     | 
    
         
            +
                /**
         
     | 
| 
      
 14 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 15 
     | 
    
         
            +
                 */
         
     | 
| 
      
 16 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    super(
         
     | 
| 
      
 18 
     | 
    
         
            +
                        'copy-files',
         
     | 
| 
      
 19 
     | 
    
         
            +
                        'Copies project files from source to build directories',
         
     | 
| 
      
 20 
     | 
    
         
            +
                    );
         
     | 
| 
      
 21 
     | 
    
         
            +
                }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                /**
         
     | 
| 
      
 24 
     | 
    
         
            +
                 * Generates a gulp task to copy common files from source to build
         
     | 
| 
      
 25 
     | 
    
         
            +
                 * directories.
         
     | 
| 
      
 26 
     | 
    
         
            +
                 *
         
     | 
| 
      
 27 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 28 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 29 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 30 
     | 
    
         
            +
                 *
         
     | 
| 
      
 31 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 32 
     | 
    
         
            +
                 */
         
     | 
| 
      
 33 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 34 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 35 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 36 
     | 
    
         
            +
                    }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                    const { rootDir } = project;
         
     | 
| 
      
 39 
     | 
    
         
            +
                    const dirs = ['src', 'test', 'infra'];
         
     | 
| 
      
 40 
     | 
    
         
            +
                    const extensions = ['json'].concat(project.getStaticFilePatterns());
         
     | 
| 
      
 41 
     | 
    
         
            +
                    const containerBuildFiles = project
         
     | 
| 
      
 42 
     | 
    
         
            +
                        .getContainerTargets()
         
     | 
| 
      
 43 
     | 
    
         
            +
                        .map(
         
     | 
| 
      
 44 
     | 
    
         
            +
                            (target) =>
         
     | 
| 
      
 45 
     | 
    
         
            +
                                project.getContainerDefinition(target).buildFile ||
         
     | 
| 
      
 46 
     | 
    
         
            +
                                'Dockerfile',
         
     | 
| 
      
 47 
     | 
    
         
            +
                        );
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                    const extras = [
         
     | 
| 
      
 50 
     | 
    
         
            +
                        project.configFileName,
         
     | 
| 
      
 51 
     | 
    
         
            +
                        'package-lock.json',
         
     | 
| 
      
 52 
     | 
    
         
            +
                        'package.json',
         
     | 
| 
      
 53 
     | 
    
         
            +
                        'LICENSE',
         
     | 
| 
      
 54 
     | 
    
         
            +
                        'README.md',
         
     | 
| 
      
 55 
     | 
    
         
            +
                        '_scripts/*',
         
     | 
| 
      
 56 
     | 
    
         
            +
                        'nginx.conf',
         
     | 
| 
      
 57 
     | 
    
         
            +
                        '.env',
         
     | 
| 
      
 58 
     | 
    
         
            +
                        '.npmignore',
         
     | 
| 
      
 59 
     | 
    
         
            +
                        '.npmrc',
         
     | 
| 
      
 60 
     | 
    
         
            +
                    ].concat(containerBuildFiles);
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                    const paths = dirs
         
     | 
| 
      
 63 
     | 
    
         
            +
                        .map((dir) => rootDir.getChild(dir))
         
     | 
| 
      
 64 
     | 
    
         
            +
                        .map((dir) => extensions.map((ext) => dir.getAllFilesGlob(ext)))
         
     | 
| 
      
 65 
     | 
    
         
            +
                        .reduce((result, arr) => result.concat(arr), [])
         
     | 
| 
      
 66 
     | 
    
         
            +
                        .concat(extras.map((item) => rootDir.getFileGlob(item)));
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                    const task = () =>
         
     | 
| 
      
 69 
     | 
    
         
            +
                        _gulp
         
     | 
| 
      
 70 
     | 
    
         
            +
                            .src(paths, {
         
     | 
| 
      
 71 
     | 
    
         
            +
                                allowEmpty: true,
         
     | 
| 
      
 72 
     | 
    
         
            +
                                base: rootDir.globPath,
         
     | 
| 
      
 73 
     | 
    
         
            +
                            })
         
     | 
| 
      
 74 
     | 
    
         
            +
                            .pipe(_gulp.dest(rootDir.getChild('working').absolutePath));
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 77 
     | 
    
         
            +
                }
         
     | 
| 
      
 78 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,74 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            import _path from 'path';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import _gulp from 'gulp';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import _gulpJsdoc from 'gulp-jsdoc3';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            import TaskBuilder from '../task-builder.js';
         
     | 
| 
      
 6 
     | 
    
         
            +
            import { Project } from '../project.js';
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            /**
         
     | 
| 
      
 9 
     | 
    
         
            +
             * Builder that can be used to generate a gulp task to generate documentation
         
     | 
| 
      
 10 
     | 
    
         
            +
             * from code comments in javascript files.
         
     | 
| 
      
 11 
     | 
    
         
            +
             */
         
     | 
| 
      
 12 
     | 
    
         
            +
            export class DocsJsTaskBuilder extends TaskBuilder {
         
     | 
| 
      
 13 
     | 
    
         
            +
                /**
         
     | 
| 
      
 14 
     | 
    
         
            +
                 * Creates a new task builder.
         
     | 
| 
      
 15 
     | 
    
         
            +
                 */
         
     | 
| 
      
 16 
     | 
    
         
            +
                constructor() {
         
     | 
| 
      
 17 
     | 
    
         
            +
                    super(
         
     | 
| 
      
 18 
     | 
    
         
            +
                        'docs-js',
         
     | 
| 
      
 19 
     | 
    
         
            +
                        'Generates documentation from code comments in javascript files',
         
     | 
| 
      
 20 
     | 
    
         
            +
                    );
         
     | 
| 
      
 21 
     | 
    
         
            +
                }
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                /**
         
     | 
| 
      
 24 
     | 
    
         
            +
                 * Generates a gulp task to generate documentation from code comments in
         
     | 
| 
      
 25 
     | 
    
         
            +
                 * source code.
         
     | 
| 
      
 26 
     | 
    
         
            +
                 *
         
     | 
| 
      
 27 
     | 
    
         
            +
                 * @protected
         
     | 
| 
      
 28 
     | 
    
         
            +
                 * @param {Object} project Reference to the project for which the task needs
         
     | 
| 
      
 29 
     | 
    
         
            +
                 * to be defined.
         
     | 
| 
      
 30 
     | 
    
         
            +
                 *
         
     | 
| 
      
 31 
     | 
    
         
            +
                 * @returns {Function} A gulp task.
         
     | 
| 
      
 32 
     | 
    
         
            +
                 */
         
     | 
| 
      
 33 
     | 
    
         
            +
                _createTask(project) {
         
     | 
| 
      
 34 
     | 
    
         
            +
                    if (!(project instanceof Project)) {
         
     | 
| 
      
 35 
     | 
    
         
            +
                        throw new Error('Invalid project (arg #1)');
         
     | 
| 
      
 36 
     | 
    
         
            +
                    }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                    const { rootDir, name, version } = project;
         
     | 
| 
      
 39 
     | 
    
         
            +
                    const docsDir = rootDir.getChild('docs');
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                    const dirs = ['src'];
         
     | 
| 
      
 42 
     | 
    
         
            +
                    const extensions = ['js'];
         
     | 
| 
      
 43 
     | 
    
         
            +
                    const options = {
         
     | 
| 
      
 44 
     | 
    
         
            +
                        opts: {
         
     | 
| 
      
 45 
     | 
    
         
            +
                            readme: rootDir.getFilePath('README.md'),
         
     | 
| 
      
 46 
     | 
    
         
            +
                            destination: docsDir.getFilePath(
         
     | 
| 
      
 47 
     | 
    
         
            +
                                `${name}${_path.sep}${version}`,
         
     | 
| 
      
 48 
     | 
    
         
            +
                            ),
         
     | 
| 
      
 49 
     | 
    
         
            +
                            template: _path.join('node_modules', 'docdash'),
         
     | 
| 
      
 50 
     | 
    
         
            +
                        },
         
     | 
| 
      
 51 
     | 
    
         
            +
                    };
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                    const paths = dirs
         
     | 
| 
      
 54 
     | 
    
         
            +
                        .map((dir) => project.rootDir.getChild(dir))
         
     | 
| 
      
 55 
     | 
    
         
            +
                        .map((dir) => extensions.map((ext) => dir.getAllFilesGlob(ext)))
         
     | 
| 
      
 56 
     | 
    
         
            +
                        .reduce((result, arr) => result.concat(arr), []);
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                    const task = () =>
         
     | 
| 
      
 59 
     | 
    
         
            +
                        _gulp
         
     | 
| 
      
 60 
     | 
    
         
            +
                            .src(paths, {
         
     | 
| 
      
 61 
     | 
    
         
            +
                                allowEmpty: true,
         
     | 
| 
      
 62 
     | 
    
         
            +
                                base: project.rootDir.globPath,
         
     | 
| 
      
 63 
     | 
    
         
            +
                            })
         
     | 
| 
      
 64 
     | 
    
         
            +
                            .pipe(_gulpJsdoc(options))
         
     | 
| 
      
 65 
     | 
    
         
            +
                            .on('error', (err) => {
         
     | 
| 
      
 66 
     | 
    
         
            +
                                /*
         
     | 
| 
      
 67 
     | 
    
         
            +
                                 * Do nothing. This handler prevents the gulp task from
         
     | 
| 
      
 68 
     | 
    
         
            +
                                 * crashing with an unhandled error.
         
     | 
| 
      
 69 
     | 
    
         
            +
                                 */
         
     | 
| 
      
 70 
     | 
    
         
            +
                                console.error(err);
         
     | 
| 
      
 71 
     | 
    
         
            +
                            });
         
     | 
| 
      
 72 
     | 
    
         
            +
                    return task;
         
     | 
| 
      
 73 
     | 
    
         
            +
                }
         
     | 
| 
      
 74 
     | 
    
         
            +
            }
         
     |