4.5.0 • Published 9 days ago

@tak-ps/etl v4.5.0

Weekly downloads
-
License
ISC
Repository
github
Last release
9 days ago

The ETL Server is designed to manage and run Lambda Container Images that perform various ETL functions to convert data into formats that are more easily ingestible via TAK.

The ETL server can run runtimes of any language but helper functions are primarily written in NodeJS. This library serves as both a usable base for removing much of the boilerplate to interacting with the TAK ETL service, as well as serving as a (hopefully) straightforward and readable example for how services in other languages could be written

API

The ETL Base Class is designed to be extended by classes performing ETL functions.

The following is an example of as simple an ETL service as possible that shows how this extension is performed.

import ETL, { Event, handler as internal } from '@tak-ps/etl';

export default class Task extends ETL {
    // The UI is dynamically generated based on the JSON Schema that the Lambda provides in the schema method.

    schema(type) {
        if (type === 'schema:intput) {
            return {
                type: 'object',
                required: ['Password'],
                properties: {
                    'Password': {
                        type: 'string',
                        description: 'The password for the service'
                    },
                }
            }
        } else if (type === 'schema:output') {
            return {
                type: 'object',
                required: ['CallSign'],
                properties: {
                    'CallSign': {
                        type: 'string',
                        description: 'The CallSign of the returned point'
                    },
                }
            }
        }
    }

    async control(): Promise<void> {
        // Provided function to obtain all environment config as defined by a user in the UI
        const layer = await this.fetchLayer();

        // The Layer object contains all the properties as defined by the Get Layer API
        const environment = layer.environent;

        // Provided submit function to submit geospatial features to be converted to CoT
        // See format overview: https://github.com/tak-ps/node-cot#geojson-spec
        await this.submit({
            "type": "FeatureCollection",
            "features": [{
                "type": "Feature",
                "properties": {
                    callsign: environment.CallSign
                },
                "geometry": {
                    "type": "Point",
                    "coordinates": [1.0, 2.0]
                }
            }]
        });
    }
}

// Optionally allow CLI calls
await local(new Task(), import.meta.url);
export async function handler(event: Event = {}) {
    return await internal(new Task(), event);
}

API

The API documentation is generated automatically by any commit to the main branch.

Documentation for the API can be found at dfpc-coe.github.io/etl-base

4.5.0

9 days ago

4.4.0

14 days ago

4.3.6

16 days ago

4.3.5

16 days ago

4.3.4

16 days ago

4.3.2

19 days ago

4.3.3

19 days ago

4.3.1

22 days ago

4.3.0

22 days ago

4.2.2

23 days ago

4.2.1

23 days ago

4.1.2

23 days ago

4.2.0

23 days ago

4.1.1

23 days ago

4.0.0

27 days ago

3.1.0

1 month ago

3.0.1

3 months ago

3.0.0

3 months ago

1.5.0

9 months ago

2.0.2

7 months ago

2.1.0

6 months ago

2.0.1

9 months ago

2.0.0

9 months ago

1.4.3

11 months ago

1.4.2

11 months ago

1.4.1

12 months ago

1.4.0

12 months ago

1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.2.1

1 year ago

1.1.2

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago