diff --git a/.gitignore b/.gitignore index 233cb6d..bfd1449 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ var/ # Serverless directories .serverless +.dynamodb # pycache __pycache__ diff --git a/api/configs/configs.py b/api/configs/configs.py new file mode 100644 index 0000000..7d855ff --- /dev/null +++ b/api/configs/configs.py @@ -0,0 +1,248 @@ +import json +import jsonschema +from http import HTTPStatus +import boto3 + +from api.helpers import dynamodb_r +from api.helpers import DecimalEncoder +from api.helpers import json_dumps_ddb +from api.configs.validation_schemas import wema_config_schema +from api.configs.validation_schemas import platform_config_schema + +table = dynamodb_r.Table("WemaPlatformConfigs") + +###################################### +###### DynamoDB Table Design ######## +###################################### + +""" +TABLE STRUCTURE + +Store the data in the table: + +To store a WEMA config: +ConfigID: [wema_id] +ConfigType: WEMA +Config: {WEMA JSON} +To store a platform: + +To store a platform config: +ConfigID: [platform_id] +ConfigType: PLATFORM +Config: {Platform JSON} +WemaID: [Associated wema_id] (Store the associated wema_id as an attribute in the platform item) +""" + +""" +QUERY AND WRITE PATTERNS + +Get a WEMA: +Query by the partition key (ConfigID = [wema_id]) and sort key (ConfigType = WEMA). + +Get a WEMA and all its platforms: +Scan the table for items with the sort key ConfigType = PLATFORM and filter the results by the wema_id attribute. + +Get a platform and its associated WEMA: +Query the platform by the partition key (ConfigID = [platform_id]) and sort key (ConfigType = PLATFORM). +Get the associated WEMA by querying the partition key (ConfigID = [Associated wema_id]) and +sort key (ConfigType = WEMA). + +Write a WEMA: +Insert a new item with the partition key (ConfigID = [wema_id]), sort key (ConfigType = WEMA), and the +WEMA JSON as the Config attribute. + +Write a platform: +Insert a new item with the partition key (ConfigID = [platform_id]), sort key (ConfigType = PLATFORM), +the platform JSON as the Config attribute, and the associated wema_id. +""" + + +def filter_json(data, schema): + if 'properties' in schema: + filtered_data = {} + for key, subschema in schema['properties'].items(): + if key in data: + filtered_data[key] = filter_json(data[key], subschema) + return filtered_data + elif 'type' in schema and schema['type'] == 'array' and 'items' in schema: + return [filter_json(item, schema['items']) for item in data] + else: + return data + +##################################### +##### Query and Write Methods ##### +##################################### + +def get_wema(wema_id): + response = table.get_item( + Key={ + 'ConfigID': wema_id, + 'ConfigType': 'WEMA' + } + ) + return response.get('Item') + +def get_wema_and_all_platforms(wema_id): + response = table.scan( + FilterExpression="ConfigType = :platform AND WemaID = :wema_id", + ExpressionAttributeValues={ + ":platform": "PLATFORM", + ":wema_id": wema_id + } + ) + wema = get_wema(wema_id) + platforms_array = response.get('Items') + platforms_dict = {p["ConfigID"]: p["Config"] for p in platforms_array} + return wema, platforms_dict + +def get_platform_and_associated_wema(platform_id): + response = table.get_item( + Key={ + 'ConfigID': platform_id, + 'ConfigType': 'PLATFORM' + } + ) + platform = response.get('Item') + if platform: + wema_id = platform.get('WemaID') + wema = get_wema(wema_id) + return platform, wema + return None, None + +def write_wema(wema_id, wema_config): + table.put_item( + Item={ + 'ConfigID': wema_id, + 'ConfigType': 'WEMA', + 'Config': wema_config + } + ) + +def write_platform(platform_id, wema_id, platform_config): + table.put_item( + Item={ + 'ConfigID': platform_id, + 'ConfigType': 'PLATFORM', + 'WemaID': wema_id, + 'Config': platform_config + } + ) + +def get_all_wemas(): + response = table.scan( + FilterExpression="ConfigType = :wema", + ExpressionAttributeValues={ + ":wema": "WEMA" + } + ) + wemas = response.get('Items') + wemas_dict = {wema['ConfigID']: wema['Config'] for wema in wemas} + return wemas_dict + + +############################ +###### Handlers ########### +############################ + +def get_wema_handler(event, context): + wema_id = event['pathParameters']['wema_id'] + wema = get_wema(wema_id) + + if wema: + return { + 'statusCode': HTTPStatus.OK, + 'body': json.dumps(wema) + } + else: + return { + 'statusCode': HTTPStatus.NOT_FOUND, # 404 + 'body': 'WEMA not found' + } + +def get_wema_and_all_platforms_handler(event, context): + wema_id = event['pathParameters']['wema_id'] + wema, platforms = get_wema_and_all_platforms(wema_id) + + if wema: + return { + 'statusCode': HTTPStatus.OK, # 200 + 'body': json.dumps({ + 'wema': wema, + 'platforms': platforms + }) + } + else: + return { + 'statusCode': HTTPStatus.NOT_FOUND, # 404 + 'body': 'WEMA not found' + } + +def get_platform_and_associated_wema_handler(event, context): + platform_id = event['pathParameters']['platform_id'] + platform, wema = get_platform_and_associated_wema(platform_id) + + if platform: + return { + 'statusCode': HTTPStatus.OK, # 200 + 'body': json.dumps({ + 'platform': platform, + 'wema': wema + }) + } + else: + return { + 'statusCode': HTTPStatus.NOT_FOUND, # 404 + 'body': 'Platform not found' + } + +def write_wema_handler(event, context): + request_body = json.loads(event['body']) + wema_config = request_body['config'] + wema_id = request_body['wema_id'] + + # Validate the config against the JSON schema + try: + jsonschema.validate(wema_config, wema_config_schema) + except jsonschema.ValidationError as e: + return { + 'statusCode': HTTPStatus.BAD_REQUEST, # 400 + 'body': str(e) + } + + simple_wema_config = filter_json(wema_config, wema_config_schema) + write_wema(wema_id, json_dumps_ddb(wema_config)) + + return { + 'statusCode': HTTPStatus.CREATED, # 201 + 'body': 'WEMA created' + } + +def write_platform_handler(event, context): + request_body = json.loads(event['body']) + platform_id = request_body['platform_id'] + wema_id = request_body['wema_id'] + platform_config = request_body['config'] + + # Validate the config against the JSON schema + try: + jsonschema.validate(platform_config, platform_config_schema) + except jsonschema.ValidationError as e: + return { + 'statusCode': HTTPStatus.BAD_REQUEST, # 400 + 'body': str(e) + } + + write_platform(platform_id, wema_id, json_dumps_ddb(platform_config)) + + return { + 'statusCode': HTTPStatus.CREATED, # 201 + 'body': 'Platform created' + } + +def get_all_wemas_handler(event, context): + wemas = get_all_wemas() + + return { + 'statusCode': HTTPStatus.OK, # 200 + 'body': json.dumps(wemas) + } diff --git a/api/configs/sample_testing_configs/platform_eco1.json b/api/configs/sample_testing_configs/platform_eco1.json new file mode 100644 index 0000000..5a552ea --- /dev/null +++ b/api/configs/sample_testing_configs/platform_eco1.json @@ -0,0 +1,745 @@ +{ + "site": "eco1", + "admin_aliases": [ + "ANS", + "WER", + "KVH", + "TELOPS", + "TB", + "DH", + "KC" + ], + "admin_owner_commands_only": false, + "airport_code": "MEL: Melbourne Airport", + "alt_path": "C:/ptr/", + "archive_age": 2, + "archive_path": "C:/ptr/", + "automatic_detail_default": "Enclosure is initially set to Automatic mode.", + "auto_eve_bias_dark": false, + "auto_eve_sky_flat": true, + "auto_midnight_moonless_bias_dark": true, + "auto_morn_bias_dark": false, + "auto_morn_sky_flat": true, + "aux_archive_path": null, + "camera": { + "camera_1_1": { + "desc": "SBIG16803", + "detector": "KAF16803", + "driver": "CCDSoft2XAdaptor.ccdsoft5Camera", + "file_mode_path": "G:/000ptr_saf/archive/sq01/autosaves/", + "manufacturer": "On-Semi", + "name": "ec002c", + "parent": "telescope1", + "service_date": "20211111", + "settings": { + "areas_implemented": [ + "Full", + "4x4d", + "600%", + "500%", + "450%", + "300%", + "220%", + "150%", + "133%", + "Full", + "Sqr", + "71%", + "50%", + "35%", + "25%", + "12%" + ], + "bayer_pattern": null, + "bin_for_focus": false, + "bin_for_platesolve": true, + "bin_for_sep": true, + "bin_modes": [], + "CameraXSize": 4096, + "CameraYSize": 4096, + "cam_needs_NumXY_init": false, + "can_set_gain": true, + "can_subframe": true, + "cooler_on": true, + "corner_everlap": true, + "crop_preview": false, + "crop_preview_xleft": 1, + "crop_preview_xright": 1, + "crop_preview_ybottom": 1, + "crop_preview_ytop": 1, + "cycle_time": 12.5, + "darkslide_com": null, + "dark_exposure": 75, + "day_warm": true, + "day_warm_degrees": 8, + "default_area": "Full", + "default_rotation": 0, + "do_cosmics": false, + "drizzle_value_for_later_stacking": 0.5, + "east_offset": 0, + "flipx_fits": false, + "flipx_jpeg": false, + "flipy_fits": false, + "flipy_jpeg": false, + "focus_image_crop_height": 0, + "focus_image_crop_width": 0, + "fullwell_capacity": 65000, + "has_darkslide": false, + "has_screen": true, + "hold_flats_in_memory": true, + "interpolate_for_focus": false, + "interpolate_for_sep": false, + "is_cmos": false, + "is_color": false, + "is_osc": false, + "max_daytime_exposure": 0.0001, + "max_exposure": 3600, + "max_flat_exposure": 45, + "max_linearity": 65000, + "min_exposure": 0.2, + "min_flat_exposure": 3, + "min_subframe": [ + 128, + 128 + ], + "north_offset": 0, + "number_of_bias_to_collect": 10, + "number_of_bias_to_store": 128, + "number_of_dark_to_collect": 10, + "number_of_dark_to_store": 128, + "number_of_flat_to_collect": 10, + "number_of_flat_to_store": 63, + "osc_bayer": "RGGB", + "overscan_x": 24, + "overscan_y": 3, + "pix_scale": 0.637, + "platesolve_image_crop": 0, + "post_bias_available": true, + "pre_bias_available": false, + "rbi_delay": 0, + "readout_mode": "Normal", + "readout_seconds": 12.5, + "readout_speed": 0.08, + "read_mode": "Normal", + "reference_dark": [ + 0, + 0, + 0, + 0 + ], + "reference_gain": 1.27, + "reference_noise": 10, + "rotate180_fits": false, + "rotate180_jpeg": false, + "rotate270_fits": false, + "rotate270_jpeg": false, + "rotate90_fits": false, + "rotate90_jpeg": true, + "rotation": 0, + "saturate": 65000, + "screen_settings": { + "screen_saturation": 157, + "screen_x0": 8.683, + "screen_x1": 0.1258, + "screen_x2": -0.00009, + "screen_x3": 0.00000003, + "screen_x4": -0.000000000004 + }, + "sep_image_crop_height": 0, + "sep_image_crop_width": 0, + "shutter_type": "Electronic", + "smart_stack_exposure_time": 75, + "squash_on_x_axis": true, + "StartX": 1, + "StartY": 1, + "temp_setpoint": -20, + "transpose_fits": false, + "transpose_jpeg": false, + "x_active": 4096, + "x_bias_end": 4096, + "x_bias_line": true, + "x_bias_start": 4096, + "x_chip": 4096, + "x_field_deg": 1.3333, + "x_pixel": 9, + "x_start": 0, + "x_trim_offset": 0, + "x_width": 4096, + "y_active": 4096, + "y_bias_line": true, + "y_bias_send": 4096, + "y_bias_start": 4096, + "y_chip": 4096, + "y_field_deg": 1.0665, + "y_pixel": 9, + "y_start": 0, + "y_trim_offset": 0, + "y_width": 4096 + }, + "use_file_mode": false + } + }, + "check_time": 300, + "client_hostname": "ECO-0m40", + "client_path": "C:/ptr/", + "client_read_share_path": null, + "closest_distance_to_the_moon": 10, + "closest_distance_to_the_sun": 45, + "debug_duration_sec": 7200, + "debug_mode": true, + "debug_site_mode": false, + "defaults": { + "camera": "camera_1_1", + "enclosure": "enclosure1", + "filter_wheel": "filter_wheel1", + "focuser": "focuser1", + "mount": "mount1", + "observing_conditions": "observing_conditions1", + "rotator": "rotator1", + "screen": "screen1", + "selector":"selector1", + "sequencer": "sequencer1", + "telescope": "telescope1" + }, + "description": "Eltham College is an independent, non-denominational, co-educational day school situated in Research, an outer suburb north east of Melbourne.\n ", + "device_types": [ + "observing_conditions", + "enclosure", + "mount", + "telescope", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "dome_on_wema": false, + "elevation": 150, + "enclosure": { + "enclosure1": { + "controlled_by": "mount1", + "directly_connected": true, + "driver": "Dragonfly.Dome", + "enc_is_specific": false, + "has_lights": false, + "hostIP": null, + "is_dome": false, + "mode": "Automatic", + "name": "Dragonfly Roof", + "parent": "site", + "settings": { + "lights": [ + "Auto", + "White", + "Red", + "IR", + "Off" + ], + "roof_shutter": [ + "Auto", + "Open", + "Close", + "Lock Closed", + "Unlock" + ] + } + } + }, + "enclosure_check_period": 2, + "enc_types": [ + "enclosure" + ], + "events": { + "Astro Dark": 45022.89586711402, + "Civil Dawn": 45023.341259196866, + "Civil Dusk": 45022.85413346291, + "Clock & Auto Focus": 45022.87977839045, + "Close and Park": 45023.38029866722, + "Cool Down, Open": 45022.78177995324, + "day_directory": "20230408", + "End Astro Dark": 45023.299458634916, + "End Eve Bias Dark": 45022.819627175464, + "End Eve Sky Flats": 45022.867856333556, + "End Morn Bias Dark": 45023.45529866722, + "End Morn Sky Flats": 45023.37890977834, + "End Nightly Reset": 45023.49696533389, + "Eve Bias Dark": 45022.73629384213, + "Eve Sky Flats": 45022.82309939768, + "Middle of Night": 45023.09799652504, + "Moon Rise": 45023.899420661524, + "Moon Set": 45023.48571770579, + "Moon Transit": 45023.17714298711, + "Morn Bias Dark": 45023.38168755611, + "Morn Sky Flats": 45023.34139601401, + "Naut Dawn": 45023.320562680674, + "Naut Dusk": 45022.874800778, + "Nightly Reset": 45023.483076445, + "Observing Begins": 45022.88533394601, + "Observing Ends": 45023.31001065779, + "Ops Window Closes": 45023.37960422278, + "Ops Window Start": 45022.82309939768, + "Prior Moon Rise": 45022.876414921804, + "Prior Moon Set": 45022.43818144213, + "Prior Moon Transit": 45022.143659847694, + "Sun Rise": 45023.358076445, + "Sun Set": 45022.8373355088, + "use_by": 45023.524743111666 + }, + "eve_cool_down_open": -80, + "eve_sky_flat_sunset_offset": -20.5, + "filter_wheel": { + "filter_wheel1": { + "driver": "CCDSoft2XAdaptor.ccdsoft5Camera", + "dual_wheel": false, + "ip_string": null, + "name": "SBIG 8-position wheel", + "parent": "telescope1", + "service_date": "20180101", + "settings": { + "auto_color_options": [ + "manual", + "RGB", + "NB", + "RGBHA", + "RGBNB" + ], + "default_filter": "lum", + "filter_data": [ + [ + "lum", + [ + 0, + 0 + ], + 0, + 179, + [ + 1, + 72 + ], + "PhLum" + ], + [ + "ip", + [ + 1, + 1 + ], + 0, + 50, + [ + 1, + 119 + ], + "PhRed" + ], + [ + "v", + [ + 2, + 2 + ], + 0, + 16, + [ + 1, + 113 + ], + "PhGreen" + ], + [ + "pb", + [ + 3, + 3 + ], + 0, + 25, + [ + 0.8, + 97 + ], + "PhBlue" + ], + [ + "ha", + [ + 4, + 4 + ], + 0, + 2.634, + [ + 0.8, + 97 + ], + "PhBlue" + ], + [ + "s2", + [ + 5, + 5 + ], + 0, + 4.728, + [ + 5, + 200 + ], + "Halpha" + ], + [ + "o3", + [ + 6, + 6 + ], + 0, + 3.52, + [ + 4, + 200 + ], + "OIII" + ] + ], + "filter_screen_sort": [ + "s2", + "o3", + "ha", + "pb", + "pg", + "pr", + "lum" + ], + "filter_sky_sort": [ + "v", + "ip", + "lum", + "pb" + ], + "mono_Narrowband_colour_filters": [ + "ha", + "o3", + "s2" + ], + "mono_Narrowband_relative_weights": [ + 1, + 2, + 2.5 + ], + "mono_RGB_colour_filters": [ + "pb", + "v", + "ip" + ], + "mono_RGB_relative_weights": [ + 1.2, + 1, + 0.8 + ] + } + } + }, + "focuser": { + "focuser1": { + "backlash": 0, + "coef_0": 13500, + "coef_c": 0, + "coef_date": "20220914", + "com_port": "COM9", + "desc": "Planewave Focuser", + "driver": "ASCOM.PWI3.Focuser", + "has_dial_indicator": false, + "maximum": 18000, + "minimum": 0, + "name": "focuser", + "parent": "telescope1", + "reference": 13500, + "ref_temp": 6265, + "start_at_config_reference": true, + "step_size": 1, + "throw": 750, + "unit": "micron", + "unit_conversion": 1, + "use_focuser_temperature": true + } + }, + "focus_exposure_time": 10, + "focus_trigger": 5, + "host_wema_site_name": "ECO", + "keep_focus_images_on_disk": false, + "keep_reduced_on_disk": false, + "lamp_box": { + "lamp_box1": { + "desc": "None", + "driver": "None", + "name": "None", + "parent": "camera_1", + "spectrograph": "None", + "switches": "None" + } + }, + "latitude": -37.70097222, + "location": "Eltham, Victoria, Australia", + "location _pole_monitor": null, + "location_day_allsky": null, + "location_night_allsky": null, + "location_seeing_report": null, + "longitude": 145.1918056, + "lowest_requestable_altitude": -5, + "maximum_roof_opens_per_evening": 4, + "minimum_realistic_seeing": 1, + "mount": { + "mount1": { + "alignment": "Equatorial", + "default_zenith_avoid": 0, + "desc": "Paramount ME II", + "driver": "ASCOM.SoftwareBisque.Telescope", + "east_flip_dec_correction": 0, + "east_flip_ra_correction": 0, + "has_ascom_altaz": false, + "has_paddle": false, + "home_after_unpark": true, + "home_before_park": true, + "hostIP": "10.0.0.140", + "hostname": "ecocdkpier", + "lowest_acceptable_altitude": -5, + "name": "ecocdkpier", + "parent": "enclosure1", + "permissive_mount_reset": "yes", + "pointing_tel": "tel1", + "settings": { + "elevation_offset": 0, + "home_altitude": 70, + "home_azimuth": 160, + "home_park_altitude": 0, + "home_park_azimuth": 270, + "horizon": 15, + "horizon_detail": { + "180": 10, + "270": 10, + "360": 10, + " 90": 10, + "0.1": 10 + }, + "latitude_offset": 0, + "longitude_offset": 0, + "model": { + "CH": 0, + "DCEC": 0, + "DCES": 0, + "HCEC": 0, + "HCES": 0, + "ID": 0, + "IH": 0, + "MA": 0, + "ME": 0, + "NP": 0, + "TF": 0, + "TX": 0, + "WID": 0, + "WIH": 0 + }, + "model_on": true, + "rates_on": true, + "refraction_on": true + }, + "tel_id": "0m40", + "time_inactive_until_park": 3600, + "west_clutch_dec_correction": 0, + "west_clutch_ra_correction": 0 + } + }, + "mpc_code": "ZZ23", + "name": "Eltham College Observatory, 0m4f6.8", + "observatory_location": "eco", + "observatory_logo": null, + "observatory_url": "https://elthamcollege.vic.edu.au/", + "observing_check_period": 2, + "observing_conditions": { + "observing_conditions1": { + "driver": null, + "driver_2": null, + "driver_3": null, + "have_local_unihedron": false, + "name": "SRO File", + "ocn_has_unihedron": false, + "ocn_is_specific": false, + "parent": "site", + "share_path_name": "F:/ptr/", + "unihedron_port": 10, + "uni_driver": "ASCOM.SQM.serial.ObservingConditions" + } + }, + "obsid_allowed_to_open_roof": true, + "obsid_in_automatic_default": "Automatic", + "obsid_is_generic": true, + "obsid_is_specific": false, + "obsid_roof_control": true, + "obs_id": "eco1", + "only_scope_that_controls_the_roof": false, + "owner": [ + "google-oauth2|112401903840371673242" + ], + "owner_alias": [ + "WER", + "TELOPS" + ], + "periodic_focus_time": 0.5, + "period_of_time_to_wait_for_roof_to_open": 100, + "pointing_calibration_on_startup": false, + "pointing_exposure_time": 20, + "re-calibrate_on_solve": true, + "redis_ip": null, + "reference_ambient": 10, + "reference_pressure": 867.254, + "roof_open_safety_base_time": 15, + "rotator": { + "rotator1": { + "backlash": 0, + "com_port": false, + "desc": false, + "driver": null, + "maximum": 360, + "minimum": -180, + "name": "rotator", + "parent": "telescope1", + "step_size": 0.0001, + "unit": "degree" + } + }, + "save_raw_to_disk": false, + "save_to_alt_path": "no", + "screen": { + "screen1": { + "com_port": "COM10", + "desc": "No Screen", + "driver": null, + "minimum": 5, + "name": "screen", + "parent": "telescope1", + "saturate": 255 + } + }, + "selector": { + "selector1": { + "cameras": [ + "camera_1_1" + ], + "com_port": null, + "default": 0, + "desc": "Null Changer", + "driver": null, + "guiders": [ + null + ], + "instruments": [ + "Main_camera" + ], + "name": "None", + "parent": "telescope1", + "ports": 1, + "recover_script": null, + "shutdown_script": null, + "startup_script": null + } + }, + "send_files_at_end_of_night": "no", + "sequencer": { + "sequencer1": { + "desc": "Automation Control", + "driver": null, + "name": "Sequencer", + "parent": "site" + } + }, + "server": { + "server1": { + "name": null, + "redis": "(host=none, port=6379, db=0, decode_responses=True)", + "win_url": null + } + }, + "short_status_devices": [ + "observing_conditions", + "enclosure", + "mount", + "telescope", + "screen", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "site_id": "eco1", + "site_IPC_mechanism": null, + "solve_nth_image": 1, + "solve_timer": 5, + "stdev_fwhm": 0.5, + "telescope": { + "telescope1": { + "aperture": 432, + "camera_name": "camera1", + "collecting_area": 100000, + "configuration": { + "position1": [ + "darkslide1", + "filter_wheel1", + "camera1" + ] + }, + "desc": "CDK17", + "driver": null, + "filter_wheel_name": "filter_wheel1", + "focal_length": 2939, + "focuser_name": "focuser1", + "has_cover": false, + "has_dew_heater": true, + "has_fans": true, + "has_instrument_selector": false, + "instrument aliases": [ + "SBIG16803" + ], + "instrument names": [ + "camera1" + ], + "name": "Main OTA", + "obscuration": 23.7, + "parent": "mount1", + "ptrtel": "CDK17", + "rotator_name": "rotator1", + "screen_name": "screen1", + "selector_positions": 1, + "settings": { + "fans": [ + "Auto", + "High", + "Low", + "Off" + ], + "offset_collimation": 0, + "offset_declination": 0, + "offset_flexure": 0, + "west_flip_ca_offset": 0, + "west_flip_dec_offset": 0, + "west_flip_ha_offset": 0 + }, + "telescop": "eco1" + } + }, + "telescope_description": "n.a.", + "threshold_mount_update": 30, + "timezone": "AEST", + "TZ_database_name": "Australia/Melbourne", + "wema_hostname": [], + "wema_is_active": false, + "wema_types": [ + "observing_conditions1", + "enclosure1" + ], + "wema_write_share_path": null +} \ No newline at end of file diff --git a/api/configs/sample_testing_configs/platform_mrc1.json b/api/configs/sample_testing_configs/platform_mrc1.json new file mode 100644 index 0000000..5c5ba98 --- /dev/null +++ b/api/configs/sample_testing_configs/platform_mrc1.json @@ -0,0 +1,1082 @@ +{ + "site": "mrc1", + "admin_aliases": [ + "ANS", + "WER", + "TELOPS", + "TB", + "DH", + "KVH", + "KC" + ], + "admin_owner_commands_only": false, + "airport_code": "SBA", + "alt_path": "Q:/ptr/", + "archive_age": -99.9, + "archive_path": "Q:/ptr/", + "automatic_detail_default": "Enclosure is set to Automatic mode.", + "auto_eve_bias_dark": true, + "auto_eve_sky_flat": true, + "auto_midnight_moonless_bias_dark": false, + "auto_morn_bias_dark": true, + "auto_morn_sky_flat": true, + "aux_archive_path": null, + "camera": { + "camera_1_1": { + "desc": "QHY 600C Pro", + "detector": "Sony IMX455 Color", + "driver": "QHYCCD_Direct_Control", + "file_mode_path": "Q:/archive/sq01/maxim/", + "manufacturer": "QHY", + "name": "sq001cs", + "parent": "telescope1", + "settings": { + "areas_implemented": [ + "Big sq.", + "Full", + "Small sq.", + "70.7%", + "50%", + "35%", + "25%", + "18%" + ], + "area_sq_deg": 0.4318, + "bias_sec": [ + "[1:22, 1:6388]", + "[1:11, 1:3194]", + "[1:7, 1:2129]", + "[1:5, 1:1597]" + ], + "bin-desc": [ + "1x1", + "2x2", + "3x3", + "4x4" + ], + "bin_enable": [ + "1 1" + ], + "bin_for_focus": true, + "bin_for_platesolve": true, + "bin_for_sep": true, + "bin_modes": [ + [ + "Optimal", + 0.91 + ], + [ + "Fine", + 0.61 + ], + [ + "Coarse", + 1.2 + ], + [ + "Eng", + 0.3 + ] + ], + "calib_setpoints": [ + -20, + -20, + -20, + -20, + -20, + -20, + -20, + -20, + -20, + -20, + -20, + -20 + ], + "CameraXSize": 9600, + "CameraYSize": 6422, + "cam_needs_NumXY_init": true, + "can_set_gain": true, + "can_subframe": true, + "ccd_sec": "[1:9600, 1:6422]", + "coarse_bin": [ + 2, + 2 + ], + "cooler_on": true, + "corner_everlap": null, + "crop_preview": false, + "crop_preview_xleft": 2, + "crop_preview_xright": 2, + "crop_preview_ybottom": 2, + "crop_preview_ytop": 2, + "cycle_time": 0, + "darkslide_com": "COM15", + "dark_exposure": 180, + "data_sec": [ + "[25:9600, 1:6388]", + "[13:4800, 1:3194]", + "[9:3200, 1:2129]", + "[7:2400, 1:1597]" + ], + "day_warm": false, + "day_warm_degrees": 8, + "default_area": "Full", + "default_rotation": 0, + "det_sec": [ + "[25:9600, 1:6388]", + "[13:4800, 1:3194]", + "[9:3200, 1:2129]", + "[7:2400, 1:1597]" + ], + "det_size": "[1:9600, 1:6422]", + "direct_qhy_gain": 26, + "direct_qhy_offset": 60, + "direct_qhy_readout_mode": 3, + "direct_qhy_usb_speed": 60, + "do_cosmics": false, + "east_offset": 0, + "eng_bin": [ + 4, + 4 + ], + "fine_bin": [ + 1, + 1 + ], + "flat_count": 5, + "flipx_fits": false, + "flipx_jpeg": false, + "flipy_fits": false, + "flipy_jpeg": false, + "focus_image_crop_height": 0, + "focus_image_crop_width": 0, + "fullwell_capacity": 80000, + "has_chiller": true, + "has_darkslide": true, + "has_screen": true, + "hold_flats_in_memory": false, + "interpolate_for_focus": false, + "interpolate_for_sep": false, + "is_cmos": true, + "is_color": true, + "is_osc": true, + "max_daytime_exposure": 0.0001, + "max_exposure": 180, + "max_flat_exposure": 20, + "max_linearity": 60000, + "min_exposure": 0.0001, + "min_flat_exposure": 0.0001, + "min_subframe": [ + 128, + 128 + ], + "north_offset": 0, + "number_of_bias_to_collect": 63, + "number_of_bias_to_store": 128, + "number_of_dark_to_collect": 17, + "number_of_dark_to_store": 128, + "number_of_flat_to_collect": 5, + "number_of_flat_to_store": 128, + "optimal_bin": [ + 1, + 1 + ], + "osc_background_cut": 25, + "osc_bayer": "RGGB", + "osc_brightness_enhance": 1, + "osc_colour_enhance": 1.7, + "osc_contrast_enhance": 1.5, + "osc_saturation_enhance": 2.5, + "osc_sharpness_enhance": 1.5, + "overscan_x": 24, + "overscan_y": 34, + "pix_scale": 0.302597, + "platesolve_image_crop": 0, + "post_bias_available": true, + "pre_bias_available": false, + "rbi_delay": 0, + "readout_mode": "Normal", + "readout_seconds": 6, + "readout_speed": 50, + "read_mode": "Normal", + "reference_dark": 0.2, + "reference_gain": 1.3, + "reference_noise": 6, + "reference_offset": 611, + "rotate180_fits": false, + "rotate180_jpeg": false, + "rotate270_fits": false, + "rotate270_jpeg": false, + "rotate90_fits": false, + "rotate90_jpeg": false, + "rotation": 0, + "saturate": 65535, + "screen_settings": { + "screen_saturation": 157, + "screen_x0": 8.683, + "screen_x1": 0.1258, + "screen_x2": -0.00009, + "screen_x3": 0.00000003, + "screen_x4": -0.000000000004 + }, + "sep_image_crop_height": 0, + "sep_image_crop_width": 0, + "shutter_type": "Electronic", + "smart_stack_exposure_time": 30, + "square_detector": false, + "square_pixels": true, + "squash_on_x_axis": true, + "StartX": 1, + "StartY": 1, + "temp_setpoint": -5, + "transpose_fits": false, + "transpose_jpeg": false, + "trim_sec": [ + "[1:9576, 1:6388]", + "[1:4788, 1:3194]", + "[1:3192, 1:2129]", + "[1:2394, 1:1597]" + ], + "x_active": 9576, + "x_bias_end": null, + "x_bias_line": true, + "x_bias_start": 9577, + "x_chip": 9576, + "x_field_deg": 0.8042, + "x_pixel": 3.76, + "x_start": 0, + "x_trim_offset": 8, + "x_width": 9576, + "y_active": 6388, + "y_bias_line": true, + "y_bias_send": null, + "y_bias_start": 6389, + "y_chip": 6388, + "y_field_deg": 0.5369, + "y_pixel": 3.76, + "y_start": 0, + "y_trim_offset": 8, + "y_width": 6388 + }, + "use_file_mode": false + } + }, + "check_time": 300, + "client_hostname": "MRC-0m35", + "client_path": "Q:/ptr/", + "client_read_share_path": "Q:/ptr/", + "client_write_share_path": "Q:/ptr/", + "closest_distance_to_the_moon": 10, + "closest_distance_to_the_sun": 45, + "debug_duration_sec": 20000, + "debug_flag": true, + "debug_mode": true, + "debug_site_mode": true, + "defaults": { + "camera": "camera_1_1", + "enclosure": "enclosure1", + "filter_wheel": "filter_wheel1", + "focuser": "focuser1", + "mount": "mount1", + "observing_conditions": "observing_conditions1", + "rotator": "rotator1", + "screen": "screen1", + "selector": "selector1", + "sequencer": "sequencer1", + "telescope": "telescope1" + }, + "description": "\n Now is the time for all good persons\n to get out and vote early and often lest\n we lose charge of our democracy.\n ", + "device_types": [ + "observing_conditions", + "enclosure", + "mount", + "telescope", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "dome_on_wema": true, + "elevation": 317.75, + "enclosure": { + "enclosure1": { + "controlled_by": [ + "mnt1", + "mnt2" + ], + "cool_down": -65, + "directly_connected": false, + "driver": "ASCOM.SkyRoofHub.Dome", + "enc_is_specific": false, + "eve_bias_dark_dur": 2, + "eve_cooldown_offset": -0.99, + "eve_screen_flat_dur": 1, + "eve_sky_flat_offset": 0.5, + "has_lights": true, + "hostIP": "10.15.0.65", + "is_dome": false, + "mode": "Automatic", + "morning_close_offset": 0.41, + "morn_sky_flat_offset": 0.4, + "name": "Megawan", + "operations_begin": -1, + "operations_end": 0.42, + "parent": "site", + "recover_script": null, + "redis_ip": "10.15.0.109", + "settings": { + "lights": [ + "Auto", + "White", + "Red", + "IR", + "Off" + ], + "roof_shutter": [ + "Auto", + "Open", + "Close", + "Lock Closed", + "Unlock" + ] + }, + "shutdown_script": null, + "startup_script": null + } + }, + "enclosure_check_period": 5, + "enc_types": [ + "enclosure" + ], + "events": { + "Astro Dark": 45025.663476649184, + "Civil Dawn": 45026.04516812259, + "Civil Dusk": 45025.62099096982, + "Clock & Auto Focus": 45025.64704482708, + "Close and Park": 45026.083874672346, + "Cool Down, Open": 45025.569773191935, + "day_directory": "20230410", + "End Astro Dark": 45026.00270411158, + "End Eve Bias Dark": 45025.569773191935, + "End Eve Sky Flats": 45025.63477967164, + "End Morn Bias Dark": 45026.15887467234, + "End Morn Sky Flats": 45026.08248578346, + "End Nightly Reset": 45026.200541339014, + "Eve Bias Dark": 45025.4864398586, + "Eve Sky Flats": 45025.573245414154, + "Middle of Night": 45025.83324004898, + "Moon Rise": 45025.81620497049, + "Moon Set": 45026.22102315722, + "Moon Transit": 45026.019173750225, + "Morn Bias Dark": 45026.08526356123, + "Morn Sky Flats": 45026.04528005297, + "Naut Dawn": 45026.02444671963, + "Naut Dusk": 45025.64172411609, + "Nightly Reset": 45026.186652450124, + "Observing Begins": 45025.65260038264, + "Observing Ends": 45026.01357541561, + "Ops Window Closes": 45026.0831802279, + "Ops Window Start": 45025.573245414154, + "Prior Moon Rise": 45024.76927755058, + "Prior Moon Set": 45025.18378885949, + "Prior Moon Transit": 45024.977935964635, + "Sun Rise": 45026.061652450124, + "Sun Set": 45025.604495414154, + "use_by": 45026.22831911679 + }, + "eve_cool_down_open": -50, + "eve_sky_flat_sunset_offset": -45, + "filter_wheel": { + "filter_wheel1": { + "alias": "Dual filter wheel", + "desc": "FLI Centerline Custom Dual 50mm sq.", + "driver": "Maxim.CCDCamera", + "dual_wheel": true, + "ip_string": "", + "name": "RGGB", + "parent": "telescope1", + "settings": { + "auto_color_options": [ + "OSC" + ], + "default_filter": "w", + "filter_data": [ + [ + "air", + [ + 0, + 0 + ], + -1000, + 20, + [ + 2, + 17 + ], + "ai" + ], + [ + "dif", + [ + 4, + 0 + ], + 0, + 16, + [ + 2, + 17 + ], + "df" + ], + [ + "w", + [ + 2, + 0 + ], + 0, + 17.468, + [ + 2, + 17 + ], + "w " + ], + [ + "PL", + [ + 0, + 4 + ], + 0, + 16, + [ + 2, + 17 + ], + "PL" + ], + [ + "gp", + [ + 0, + 6 + ], + 0, + 14.87, + [ + 2, + 17 + ], + "gp" + ], + [ + "PB", + [ + 0, + 1 + ], + 0, + 10.25, + [ + 2, + 17 + ], + "PB" + ], + [ + "rp", + [ + 0, + 7 + ], + 0, + 3.853, + [ + 2, + 17 + ], + "rp" + ], + [ + "PG", + [ + 0, + 2 + ], + 0, + 11.048, + [ + 2, + 17 + ], + "PG" + ], + [ + "PR", + [ + 0, + 3 + ], + 0, + 1.336, + [ + 2, + 17 + ], + "PR" + ], + [ + "ip", + [ + 0, + 8 + ], + 0, + 4.741, + [ + 2, + 17 + ], + "ip" + ], + [ + "z", + [ + 5, + 0 + ], + 0, + 2.147, + [ + 2, + 17 + ], + "z" + ], + [ + "O3", + [ + 7, + 0 + ], + 0, + 1.151, + [ + 2, + 17 + ], + "03" + ], + [ + "up", + [ + 0, + 5 + ], + 0, + 1.506, + [ + 1, + 17 + ], + "up" + ], + [ + "N2", + [ + 3, + 0 + ], + 0, + 0.126, + [ + 2, + 17 + ], + "N2" + ], + [ + "CR", + [ + 1, + 0 + ], + 0, + 0.2, + [ + 2, + 17 + ], + "CR" + ], + [ + "S2", + [ + 8, + 0 + ], + 0, + 0.137, + [ + 2, + 17 + ], + "S2" + ], + [ + "HA", + [ + 6, + 0 + ], + 0, + 0.124, + [ + 2, + 17 + ], + "HA" + ], + [ + "focus", + [ + 2, + 0 + ], + 0, + 16, + [ + 2, + 17 + ], + "fo" + ], + [ + "dark", + [ + 8, + 5 + ], + 0, + 0, + [ + 2, + 17 + ], + "dk" + ] + ], + "filter_screen_sort": [ + "air", + "w", + "PL", + "gp", + "PB", + "rp", + "PG", + "PR", + "ip", + "O3", + "N2", + "CR", + "S2", + "HA" + ], + "filter_sky_sort": [ + "S2", + "N2", + "O3", + "HA", + "z", + "PR", + "PG", + "PB", + "gp", + "rp", + "ip", + "w", + "PL", + "focus", + "air" + ], + "mono_Narrowband_colour_filters": [ + "ha", + "o3", + "s2" + ], + "mono_Narrowband_relative_weights": [ + 1, + 2, + 2.5 + ], + "mono_RGB_colour_filters": [ + "pb", + "pg", + "pr" + ], + "mono_RGB_relative_weights": [ + 1.2, + 1, + 0.8 + ] + } + } + }, + "focuser": { + "focuser1": { + "backlash": 0, + "coef_0": 7355, + "coef_c": -8.583, + "coef_date": "20230220", + "desc": "Optec Gemini", + "driver": "ASCOM.OptecGemini.Focuser", + "has_dial_indicator": false, + "maximum": 12700, + "minimum": 0, + "name": "focuser", + "parent": "telescope1", + "reference": 7250, + "ref_temp": 10, + "start_at_config_reference": false, + "step_size": 1, + "throw": 250, + "unit": "micron", + "unit_conversion": 9.09090909091, + "use_focuser_temperature": true, + "use_local_temp": true, + "z_coef_date": "20221002", + "z_compression": 0 + } + }, + "focus_exposure_time": 10, + "focus_trigger": 0.75, + "host_wema_site_name": "MRC", + "keep_focus_images_on_disk": true, + "keep_reduced_on_disk": true, + "lamp_box": { + "lamp_box1": { + "desc": "None", + "driver": "None", + "name": "None", + "parent": "camera_1", + "spectrograph": "None", + "switches": "None" + } + }, + "latitude": 34.459375, + "location": "Near Santa Barbara CA, USA", + "location _pole_monitor": null, + "location_day_allsky": null, + "location_night_allsky": null, + "location_seeing_report": null, + "longitude": -119.681172, + "lowest_requestable_altitude": -5, + "maximum_roof_opens_per_evening": 4, + "minimum_realistic_seeing": 1, + "mount": { + "mount1": { + "alignment": "Alt-Az", + "default_zenith_avoid": 7, + "desc": "Planewave L500 AltAz", + "driver": "ASCOM.PWI4.Telescope", + "east_flip_dec_correction": 0, + "east_flip_ra_correction": 0, + "has_ascom_altaz": true, + "has_paddle": false, + "home_after_unpark": false, + "home_before_park": false, + "hostIP": "10.15.0.30", + "hostname": "eastpier", + "lowest_acceptable_altitude": -2, + "name": "eastpier", + "parent": "enclosure1", + "permissive_mount_reset": "yes", + "pointing_tel": "tel1", + "recover_script": null, + "Selector": { + "available": false + }, + "settings": { + "elevation_offset": 0, + "fixed_screen _altitude": 0.54, + "fixed_screen_azimuth": 167.25, + "home_altitude": 60, + "home_azimuth": 359, + "home_park_altitude": 0, + "home_park_azimuth": 180, + "horizon": 20, + "horizon_detail": { + "0": 32, + "30": 35, + "43": 28.6, + "59": 32.7, + "62": 28.6, + "65": 25.2, + "74": 22.6, + "82": 20, + "130": 12, + "150": 20, + "172": 28, + "191": 25, + "213": 20, + "235": 15.3, + "260": 11, + "272": 17, + "294": 16.5, + "303": 20.6, + "309": 27, + "315": 32, + "360": 32, + "101.5": 14, + "107.5": 12, + "298.5": 18.6, + "36.5": 39, + "95.5": 20 + }, + "latitude_offset": 0, + "longitude_offset": 0, + "model": { + "ACEC": 0, + "ACES": 0, + "AE": 0, + "AN": 0, + "CA": 0, + "CH": 0, + "DCEC": 0, + "DCES": 0, + "ECEC": 0, + "ECES": 0, + "HCEC": 0, + "HCES": 0, + "IA": 0, + "ID": 0, + "IE": 0, + "IH": 0, + "MA": 0, + "ME": 0, + "NP": 0, + "NPAE": 0, + "TF": 0, + "TX": 0, + "WD": 0, + "WH": 0 + }, + "model_on": true, + "rates_on": true, + "refraction_on": true + }, + "shutdown_script": null, + "startup_script": null, + "tel_id": "0m35", + "time_inactive_until_park": 3600, + "west_clutch_dec_correction": 0, + "west_clutch_ra_correction": 0 + } + }, + "mpc_code": "ZZ23", + "name": "Mountain Ranch Camp Observatory 0m35f7.2", + "observatory_location": "SBA", + "observatory_logo": null, + "observatory_url": "https://starz-r-us.sky/clearskies", + "observing_check_period": 5, + "observing_conditions": { + "observing_conditions1": { + "driver": "ASCOM.SkyAlert.ObservingConditions", + "driver_2": "ASCOM.SkyAlert.SafetyMonitor", + "driver_3": null, + "has_unihedron": false, + "have_local_unihedron": false, + "name": "Weather Station #1", + "ocn_has_unihedron": false, + "ocn_is_specific": false, + "parent": "site", + "redis_ip": "10.15.0.109", + "share_path_name": null, + "unihedron_port": 10, + "uni_driver": "ASCOM.SQM.serial.ObservingConditions" + } + }, + "obsid_allowed_to_open_roof": false, + "obsid_in_automatic_default": "Automatic", + "obsid_is_generic": false, + "obsid_is_specific": false, + "obsid_roof_control": false, + "obs_id": "mrc1", + "only_scope_that_controls_the_roof": false, + "owner": [ + "google-oauth2|112401903840371673242" + ], + "owner_alias": [ + "WER", + "TELOPS" + ], + "periodic_focus_time": 0.5, + "period_of_time_to_wait_for_roof_to_open": 50, + "plog_path": "Q:/ptr/mrc1/", + "pointing_calibration_on_startup": false, + "pointing_exposure_time": 20, + "re-calibrate_on_solve": true, + "redis_ip": "10.15.0.109", + "reference_ambient": 10, + "reference_pressure": 977.83, + "roof_open_safety_base_time": 15, + "rotator": { + "rotator1": { + "backlash": 0, + "com_port": null, + "desc": "Opetc Gemini", + "driver": "ASCOM.AltAzDS.Rotator", + "has_rotator": true, + "maximum": 360, + "minimum": -180, + "name": "rotator", + "parent": "telescope1", + "step_size": 0.0001, + "unit": "degree" + } + }, + "save_raw_to_disk": true, + "save_to_alt_path": "no", + "screen": { + "screen1": { + "com_port": "COM10", + "desc": "Optec Alnitak 24\"", + "driver": "COM13", + "minimum": 5, + "name": "screen", + "parent": "telescope1", + "saturate": 170 + } + }, + "selector": { + "selector1": { + "cameras": [ + "camera_1_1" + ], + "com_port": null, + "default": 0, + "desc": "Null Changer", + "driver": null, + "guiders": [ + null + ], + "instruments": [ + "Main_camera" + ], + "name": "None", + "parent": "telescope1", + "ports": 1, + "recover_script": null, + "shutdown_script": null, + "startup_script": null + } + }, + "send_files_at_end_of_night": "no", + "sequencer": { + "sequencer1": { + "desc": "Automation Control", + "driver": null, + "name": "Sequencer", + "parent": "site", + "recover_script": null, + "shutdown_script": null, + "startup_script": null + } + }, + "server": { + "server1": { + "name": "QNAP", + "recover_script": null, + "redis": "(host=10.15.0.15, port=6379, db=0, decode_responses=True)", + "shutdown_script": null, + "startup_script": null, + "win_url": "archive (\\10.15.0.82) (Q:)" + } + }, + "short_status_devices": [ + "mount", + "telescope", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "site_id": "mrc1", + "site_IPC_mechanism": "redis", + "solve_nth_image": 1, + "solve_timer": 0.05, + "stdev_fwhm": 0.5, + "telescope": { + "telescope1": { + "aperture": 356, + "camera_name": "camera_1_1", + "collecting_area": 76147, + "configuration": { + "position1": [ + "darkslide1", + "filter_wheel1", + "filter_wheel2", + "camera1" + ] + }, + "driver": "None", + "f-ratio": 7.2, + "filter_wheel_name": "filter_wheel1", + "focal_length": 2563, + "focuser_name": "focuser1", + "has_cover": false, + "has_fans": true, + "has_instrument_selector": false, + "instrument aliases": [ + "QHY600Mono" + ], + "instrument names": [ + "camera_1_1" + ], + "name": "Main OTA", + "obscuration": 23.5, + "parent": "mount1", + "ptrtel": "Planewave CDK 0.35m f7.2", + "recover_script": null, + "rotator_name": "rotator1", + "screen_name": "screen1", + "selector_positions": 1, + "settings": { + "fans": [ + "Auto", + "High", + "Low", + "Off" + ], + "offset_collimation": 0, + "offset_declination": 0, + "offset_flexure": 0, + "west_flip_ca_offset": 0, + "west_flip_dec_offset": 0, + "west_flip_ha_offset": 0 + }, + "shutdown_script": null, + "startup_script": null, + "telescop": "mrc1" + } + }, + "telescope_description": "0m35 f7.2 Planewave CDK", + "threshold_mount_update": 100, + "timezone": "PDT", + "time_offset": -7, + "TZ_database_name": "America/Los_Angeles", + "wema_hostname": "MRC-WMS-ENC", + "wema_is_active": true, + "wema_path": "Q:/ptr/", + "wema_types": [ + "observing_conditions", + "enclosure" + ], + "wema_write_share_path": "Q:/ptr/" + } \ No newline at end of file diff --git a/api/configs/sample_testing_configs/platform_mrc2.json b/api/configs/sample_testing_configs/platform_mrc2.json new file mode 100644 index 0000000..bf0bedf --- /dev/null +++ b/api/configs/sample_testing_configs/platform_mrc2.json @@ -0,0 +1,1093 @@ +{ + "site": "mrc2", + "admin_aliases": [ + "ANS", + "WER", + "TELOPS", + "TB", + "DH", + "KVH", + "KC" + ], + "admin_owner_commands_only": true, + "airport_code": "SBA", + "alt_path": "Q:/ptr/", + "archive_age": -99.9, + "archive_path": "Q:/ptr/", + "automatic_detail_default": "Enclosure is initially set to Automatic mode.", + "auto_eve_bias_dark": true, + "auto_eve_sky_flat": true, + "auto_midnight_moonless_bias_dark": false, + "auto_morn_bias_dark": true, + "auto_morn_sky_flat": true, + "camera": { + "camera_1_1": { + "desc": "QHY 600Pro Monochrome", + "detector": "Sony IMX455", + "driver": "QHYCCD_Direct_Control", + "file_mode_path": "Q:/000ptr_saf/archive/kf01/autosaves/", + "manufacturer": "QHY", + "name": "sq004ms", + "parent": "telescope1", + "service_date": "20230301", + "settings": { + "areas_implemented": [ + "600%", + "300%", + "220%", + "150%", + "Full", + "Sqr", + "71%", + "50%", + "35%", + "25%", + "12%" + ], + "bias_dark_bin_spec": [ + "1,1", + "2,2", + "3,3", + "4,4" + ], + "bias_sec": "[1:22, 1:6388], [1:11, 1:3194], [1:7, 1:2129], [1:5, 1:1597]", + "bin_enable": [ + "1,1", + "2,2", + "3,3", + "4,4" + ], + "bin_modes": [ + [ + 2, + 2, + 0.937 + ], + [ + 1, + 1, + 0.469 + ], + [ + 3, + 3, + 1.407 + ], + [ + 4, + 4, + 1.876 + ] + ], + "calib_setpoints": [ + 3, + 5, + 7 + ], + "cam_needs_NumXY_init": true, + "can_set_gain": false, + "can_subframe": true, + "ccd_sec": "[1:9600, 1:6422]", + "chiller_ref_temp": 16, + "cooler_on": true, + "cosmics_at_default": "no", + "cosmics_at_maximum": "yes", + "crop_preview": false, + "crop_preview_xleft": 1, + "crop_preview_xright": 1, + "crop_preview_ybottom": 1, + "crop_preview_ytop": 1, + "cycle_time": 0, + "dark_exposure": 180, + "dark_length": 900, + "data_sec": "[25:9600, 1:6388], [13:4800, 1:3194], [9:3200, 1:2129], [7:2400, 1:1597]", + "day_warm": false, + "day_warm_degrees": 8, + "default_area": "Full", + "default_rotation": 0, + "det_sec": "[25:9600, 1:6388], [13:4800, 1:3194], [9:3200, 1:2129], [7:2400, 1:1597]", + "det_size": "[1:9600, 1:6422]", + "direct_qhy_gain": 26, + "direct_qhy_offset": 60, + "direct_qhy_readout_mode": 3, + "direct_qhy_usb_speed": 60, + "do_cosmics": false, + "east_offset": 0, + "field_area_sq_amin": 1023, + "flat_bin_spec": [ + "1,1", + "2,2", + "3,3", + "4,4" + ], + "flat_count": 5, + "flipx_fits": false, + "flipx_jpeg": false, + "flipy_fits": false, + "flipy_jpeg": false, + "fullwell_capacity": 85000, + "has_chiller": true, + "has_darkslide": false, + "has_screen": true, + "is_cmos": false, + "is_osc": false, + "long_dark": 360, + "max_daytime_exposure": 10, + "max_exposure": 360, + "max_flat_exposure": 40, + "max_linearity": 55000, + "max_res_bin": [ + 1, + 1, + 0.469 + ], + "min_exposure": 0.001, + "min_flat_exposure": 0.01, + "min_subframe": [ + 128, + 128 + ], + "north_offset": 0, + "number_of_bias_to_collect": 63, + "number_of_bias_to_store": 127, + "number_of_dark_to_collect": 13, + "number_of_dark_to_store": 127, + "number_of_flat_to_collect": 7, + "number_of_flat_to_store": 127, + "optimal_bin": [ + 2, + 2, + 0.937 + ], + "osc_bayer": "RGGB", + "overscan_x": 0, + "overscan_y": 0, + "pix_scale": 0.198, + "post_bias_available": true, + "pre_bias_available": false, + "rbi_delay": 0, + "readout_mode": "Normal", + "readout_seconds": 0.6, + "readout_speed": 50, + "read_mode": "Normal", + "reference_dark": 2, + "reference_gain": 2.5, + "reference_noise": 4.3, + "ref_dark": 180, + "rotate180_fits": false, + "rotate180_jpeg": false, + "rotate270_fits": false, + "rotate270_jpeg": false, + "rotate90_fits": false, + "rotate90_jpeg": true, + "rotation": 0, + "saturate": 65000, + "screen_settings": { + "screen_saturation": 157, + "screen_x0": 8.683, + "screen_x1": 0.1258, + "screen_x2": -0.00009, + "screen_x3": 0.00000003, + "screen_x4": -0.000000000004 + }, + "shutter_compensation_available": true, + "shutter_type": "6-Blade", + "smart_stack_exposure_time": 30, + "square_detector": true, + "squash_on_x_axis": true, + "StartX": 1, + "StartY": 1, + "temp_setpoint": -5, + "transpose_fits": false, + "transpose_jpeg": false, + "trim_sec": "[1:9576, 1:6388], [1:4788, 1:3194], [1:3192, 1:2129], [1:2394, 1:1597]", + "x_active": 9576, + "x_bias_line": true, + "x_bias_start": 9577, + "x_chip": 9576, + "x_field_deg": 0.5331, + "x_pixel": 3.76, + "x_start": 24, + "x_trim_offset": 8, + "x_width": 9576, + "y_active": 6388, + "y_bias_line": true, + "y_bias_start": 6389, + "y_chip": 6388, + "y_field_deg": 0.5331, + "y_pixel": 3.76, + "y_start": 0, + "y_trim_offset": 8, + "y_width": 6388 + }, + "use_file_mode": false + } + }, + "check_time": 300, + "client_hostname": "mr2-0m60", + "client_path": "Q:/ptr/", + "client_read_share_path": "Q:/ptr/", + "client_write_share_path": "Q:/ptr/", + "closest_distance_to_the_moon": 10, + "closest_distance_to_the_sun": 45, + "debug_duration_sec": 1800, + "debug_mode": false, + "debug_site_mode": false, + "defaults": { + "camera": "camera_1_1", + "enclosure": "enclosure1", + "filter_wheel": "filter_wheel1", + "focuser": "focuser1", + "mount": "mount1", + "observing_conditions": "observing_conditions1", + "rotator": "rotator1", + "screen": "screen1", + "selector": "selector1", + "sequencer": "sequencer1", + "telescope": "telescope1" + }, + "description": "\n Now is the time for all good persons\n to get out and vote early and often lest\n we lose charge of our democracy.\n ", + "device_types": [ + "observing_conditions", + "enclosure", + "mount", + "telescope", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "dome_on_wema": true, + "elevation": 317.75, + "enclosure": { + "enclosure1": { + "controlled_by": [ + "mount1", + "mount2" + ], + "directly_connected": false, + "driver": "Windows_share", + "enc_is_specific": false, + "eve_bias_dark_dur": 2, + "eve_cooldown_offset": -0.99, + "eve_screen_flat_dur": 1, + "eve_sky_flat_offset": 0.5, + "has_lights": true, + "hostIP": "10.15.0.30", + "is_dome": false, + "mode": "Automatic", + "morning_close_offset": 0.41, + "morn_sky_flat_offset": 0.4, + "name": "Megawan", + "operations_begin": -1, + "operations_end": 0.42, + "parent": "site", + "settings": { + "lights": [ + "Auto", + "White", + "Red", + "IR", + "Off" + ], + "roof_shutter": [ + "Auto", + "Open", + "Close", + "Lock Closed", + "Unlock" + ] + } + } + }, + "enclosure_check_period": 2, + "enc_types": [ + "enclosure" + ], + "events": { + "Astro Dark": 45025.66330570668, + "Civil Dawn": 45026.045274299344, + "Civil Dusk": 45025.621456263376, + "Clock & Auto Focus": 45025.64990740741, + "Close and Park": 45026.08399609918, + "Cool Down, Open": 45025.56324863785, + "day_directory": "20230410", + "End Astro Dark": 45026.00287542023, + "End Eve Bias Dark": 45025.559776415634, + "End Eve Sky Flats": 45025.63527027681, + "End Morn Bias Dark": 45026.15899609918, + "End Morn Sky Flats": 45026.082607210294, + "End Nightly Reset": 45026.20066276585, + "Eve Bias Dark": 45025.4764430823, + "Eve Sky Flats": 45025.56324863785, + "Middle of Night": 45025.83323988202, + "Moon Rise": 45025.81599693183, + "Moon Set": 45026.221231469724, + "Moon Transit": 45026.019172629356, + "Morn Bias Dark": 45026.085384988066, + "Morn Sky Flats": 45026.04541225961, + "Naut Dawn": 45026.02457892628, + "Naut Dusk": 45025.64221472126, + "Nightly Reset": 45026.18677387696, + "Observing Begins": 45025.65546296297, + "Observing Ends": 45026.01372717325, + "Ops Window Closes": 45026.08330165473, + "Ops Window Start": 45025.56324863785, + "Prior Moon Rise": 45024.76909759284, + "Prior Moon Set": 45025.18397816479, + "Prior Moon Transit": 45024.977934893504, + "Sun Rise": 45026.06177387696, + "Sun Set": 45025.60491530452, + "use_by": 45026.22844054362 + }, + "eve_cool_down_open": -60, + "eve_sky_flat_sunset_offset": -60, + "filter_wheel": { + "filter_wheel1": { + "alias": "Dual filter wheel", + "desc": "Dual Apogee custom Dual 50mm sq.", + "driver": "Maxim.CCDcamera", + "dual_wheel": true, + "ip_string": "http://127.0.0.1", + "parent": "tel1", + "service_date": "20180101", + "settings": { + "auto_color_options": [ + "manual", + "RGB", + "NB", + "RGBHA", + "RGBNB" + ], + "default_filter": "w", + "filter_data": [ + [ + "air", + [ + 0, + 0 + ], + -1000, + 0.5, + [ + 2, + 17 + ], + "ai" + ], + [ + "Lum", + [ + 1, + 0 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "w " + ], + [ + "Red", + [ + 0, + 4 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "r " + ], + [ + "Green", + [ + 0, + 3 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "V " + ], + [ + "Blue", + [ + 0, + 1 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "B " + ], + [ + "w", + [ + 1, + 0 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "w " + ], + [ + "dif", + [ + 2, + 0 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "df" + ], + [ + "O3", + [ + 3, + 0 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "O3" + ], + [ + "HA", + [ + 4, + 0 + ], + 0, + 4, + [ + 2, + 17 + ], + "HA" + ], + [ + "N2", + [ + 5, + 5 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "S2" + ], + [ + "S2", + [ + 6, + 6 + ], + 0, + 0.735, + [ + 2, + 17 + ], + "N2" + ], + [ + "JB", + [ + 0, + 1 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "B " + ], + [ + "gp", + [ + 0, + 2 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "g " + ], + [ + "JV", + [ + 0, + 3 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "V " + ], + [ + "rp", + [ + 0, + 4 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "r " + ], + [ + "ip", + [ + 0, + 5 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "i " + ], + [ + "EXO", + [ + 0, + 6 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "EX" + ], + [ + "dif-JB", + [ + 2, + 1 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "Ha" + ], + [ + "dif-gp", + [ + 2, + 2 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "dg" + ], + [ + "dif-JV", + [ + 2, + 3 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "dV" + ], + [ + "dif-rp", + [ + 2, + 5 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "dr" + ], + [ + "dif-ip", + [ + 2, + 6 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "di" + ], + [ + "dif-exo", + [ + 2, + 0 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "dE" + ], + [ + "dark", + [ + 4, + 1 + ], + 0, + 0.5, + [ + 2, + 17 + ], + "dk" + ] + ], + "filter_screen_sort": [ + "0", + "1", + "2", + "10", + "7", + "6", + "18", + "12", + "11", + "13", + "8", + "3", + "14", + "15", + "4", + "16" + ], + "filter_sky_sort": [ + "S2", + "N2", + "O3", + "i", + "r", + "g", + "JV", + "JB", + "EXO", + "dif", + "w", + "air" + ], + "mono_Narrowband_colour_filters": [ + "ha", + "o3", + "s2" + ], + "mono_Narrowband_relative_weights": [ + 1, + 2, + 2.5 + ], + "mono_RGB_colour_filters": [ + "jb", + "jv", + "r" + ], + "mono_RGB_relative_weights": [ + 1.2, + 1, + 0.8 + ] + } + } + }, + "focuser": { + "focuser1": { + "backlash": 0, + "coef_0": 5870, + "coef_c": 0, + "coef_date": "20230305", + "desc": "Optec Gemini", + "driver": "ASCOM.OptecGemini.Focuser", + "has_dial_indicator": false, + "maximum": 12700, + "minimum": 0, + "name": "focuser", + "parent": "telescope1", + "reference": 5870, + "ref_temp": 10, + "start_at_config_reference": true, + "step_size": 1, + "throw": 400, + "unit": "steps", + "unit_conversion": 9.090909090909092, + "use_focuser_temperature": false, + "use_local_temp": false, + "z_coef_date": "20221002", + "z_compression": 0 + } + }, + "focus_exposure_time": 15, + "focus_trigger": 5, + "host_wema_site_name": "mrc", + "keep_focus_images_on_disk": true, + "keep_reduced_on_disk": true, + "lamp_box": { + "lamp_box1": { + "desc": "None", + "driver": "None", + "name": "None", + "parent": "camera_1", + "spectrograph": "None", + "switches": "None" + } + }, + "latitude": 34.34595969, + "location": "Santa Barbara, California, USA", + "longitude": -119.6811323955, + "lowest_requestable_altitude": -5, + "maximum_roof_opens_per_evening": 4, + "minimum_realistic_seeing": 1, + "mount": { + "mount1": { + "alignment": "Alt-Az", + "default_zenith_avoid": 7, + "desc": "Planewave L600 AltAz", + "driver": "ASCOM.PWI4.Telescope", + "east_flip_dec_correction": 0, + "east_flip_ra_correction": 0, + "has_ascom_altaz": true, + "has_paddle": false, + "home_after_unpark": false, + "home_altitude": 0, + "home_azimuth": 210, + "home_before_park": false, + "hostIP": "10.15.0.40", + "hostname": "westpier", + "lowest_acceptable_altitude": -5, + "name": "westpier", + "parent": "enclosure1", + "permissive_mount_reset": "yes", + "pointing_tel": "tel1", + "Selector": { + "available": false + }, + "settings": { + "elevation_offset": 0.5, + "fixed_screen _altitude": 0.54, + "home_park_altitude": 0, + "home_park_azimuth": 195, + "horizon": 15, + "horizon_detail": { + "0": 32, + "30": 35, + "43": 28.6, + "59": 32.7, + "62": 28.6, + "65": 25.2, + "74": 22.6, + "82": 20, + "130": 12, + "150": 20, + "172": 28, + "191": 25, + "213": 20, + "235": 15.3, + "260": 11, + "272": 17, + "294": 16.5, + "303": 20.6, + "309": 27, + "315": 32, + "360": 32, + "101.5": 14, + "107.5": 12, + "298.5": 18.6, + "36.5": 39, + "95.5": 20 + }, + "latitude_offset": 0.025, + "longitude_offset": 0.25, + "model": { + "ACEC": 0, + "ACES": 0, + "AE": 0, + "AN": 0, + "CA": 0, + "CH": 0, + "DCEC": 0, + "DCES": 0, + "ECEC": 0, + "ECES": 0, + "HCEC": 0, + "HCES": 0, + "IA": 0, + "ID": 0, + "IE": 0, + "IH": 0, + "MA": 0, + "ME": 0, + "NP": 0, + "NPAE": 0, + "TF": 0, + "TX": 0, + "WD": 0, + "WH": 0 + }, + "model_on": true, + "rates_on": true, + "refraction_on": true + }, + "tel_id": "0m35", + "time_inactive_until_park": 3600, + "west_clutch_dec_correction": 0, + "west_clutch_ra_correction": 0 + } + }, + "mpc_code": "ZZ23", + "name": "Mountain Ranch Camp Observatory 0m6f6.8", + "observatory_location": "mrc", + "observatory_url": "https://starz-r-us.sky/clearskies", + "observing_check_period": 2, + "observing_conditions": { + "observing_conditions1": { + "driver": "Windows.Share", + "have_local_unihedron": false, + "name": "SRO File", + "ocn_has_unihedron": false, + "ocn_is_specific": true, + "parent": "site", + "share_path_name": "F:/ptr/", + "unihedron_port": 10, + "uni_driver": "ASCOM.SQM.serial.ObservingConditions" + } + }, + "obsid_allowed_to_open_roof": false, + "obsid_in_automatic_default": "Automatic", + "obsid_is_generic": false, + "obsid_is_specific": false, + "obsid_roof_control": false, + "obs_id": "mrc2", + "only_scope_that_controls_the_roof": false, + "owner": [ + "google-oauth2|112401903840371673242" + ], + "owner_alias": [ + "WER", + "TELOPS" + ], + "periodic_focus_time": 0.5, + "period_of_time_to_wait_for_roof_to_open": 50, + "pointing_calibration_on_startup": false, + "re-calibrate_on_solve": true, + "redis_ip": "10.15.0.109", + "reference_ambient": 15, + "reference_pressure": 977.83, + "roof_open_safety_base_time": 15, + "rotator": { + "rotator1": { + "backlash": 0, + "com_port": "COM9", + "desc": "Opetc Gemini", + "driver": "ASCOM.AltAzDS.Rotator", + "maximum": 360, + "minimum": -180, + "name": "rotator", + "parent": "telescope1", + "recover_script": "None", + "shutdown_script": "None", + "startup_script": "None", + "step_size": 0.0001, + "unit": "degree" + } + }, + "save_raw_to_disk": true, + "save_to_alt_path": "no", + "screen": { + "screen1": { + "desc": "Optec Alnitak 30\"", + "driver": "COM6", + "minimum": 5, + "name": "screen", + "parent": "telescope1", + "saturate": 170 + } + }, + "selector": { + "selector1": { + "cameras": [ + "camera_1_1", + "camera_1_2", + "camera_1_4" + ], + "com_port": "COM31", + "default": 0, + "desc": "Optec Perseus", + "driver": "ASCOM.PerseusServer.Switch", + "guiders": [ + "ag_1_2", + "ag_1_4" + ], + "instruments": [ + "Main_camera", + "eShell_spect", + "Planet_camera", + "UVEX_spect" + ], + "name": "Selector", + "parent": "telescope1", + "ports": 4 + } + }, + "send_files_at_end_of_night": "no", + "sequencer": { + "sequencer1": { + "desc": "Automation Control", + "name": "Sequencer", + "parent": "site" + } + }, + "server": { + "server1": { + "name": "QNAP", + "redis": "(host=10.15.0.15, port=6379, db=0, decode_responses=true)", + "win_url": "archive (\\10.15.0.82) (Q:)" + } + }, + "short_status_devices": [ + "mount", + "telescope", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "site_id": "mrc2", + "site_IPC_mechanism": "redis", + "site_path": "Q:/", + "solve_nth_image": 10, + "solve_timer": 5, + "stdev_fwhm": 1, + "telescope": { + "telescope1": { + "aperture": 610, + "camera_name": "camera_1_1", + "collecting_area": 128039, + "configuration": { + "position1": [ + "darkslide1", + "filter_wheel1", + "filter_wheel2", + "camera1" + ] + }, + "desc": "Planewave CDK 600 F6.8", + "f-ratio": 6.8, + "filter_wheel_name": "filter_wheel1", + "focal_length": 3962, + "focuser_name": "focuser1", + "has_cover": true, + "has_dew_heater": true, + "has_fans": true, + "has_instrument_selector": false, + "instrument aliases": [ + "QHY600Mono" + ], + "instrument names": [ + "camera_1_1" + ], + "name": "Main OTA", + "obscuration": 47, + "parent": "mount2", + "ptrtel": "mrc2", + "rotator_name": "rotator1", + "screen_name": "screen1", + "selector_positions": 1, + "settings": { + "fans": [ + "Auto", + "High", + "Low", + "Off" + ], + "offset_collimation": 0, + "offset_declination": 0, + "offset_flexure": 0, + "west_flip_ca_offset": 0, + "west_flip_dec_offset": 0, + "west_flip_ha_offset": 0 + }, + "telescop": "mrc2", + "tel_has_unihedron": false + } + }, + "telescope_description": "0m61 f6.8 Planewave CDK", + "threshold_mount_update": 10, + "timezone": "PDT", + "time_offset": -7, + "TZ_database_name": "America/Los_Angeles", + "wema_hostname": "MRC-WMS-ENC", + "wema_is_active": true, + "wema_path": "Q:/ptr/", + "wema_types": [ + "observing_conditions", + "enclosure" + ], + "wema_write_share_path": "Q:/ptr/" +} \ No newline at end of file diff --git a/api/configs/sample_testing_configs/platform_simplevalid.json b/api/configs/sample_testing_configs/platform_simplevalid.json new file mode 100644 index 0000000..d6f7c7b --- /dev/null +++ b/api/configs/sample_testing_configs/platform_simplevalid.json @@ -0,0 +1,190 @@ +{ + "site": "mrc1", + "site_id": "mrc1", + "obs_id": "mrc1", + "name": "Mountain Ranch Camp Observatory 0m35f7.2", + "TZ_database_name": "America/Los_Angeles", + "telescope_description": "0m35 f7.2 Planewave CDK", + "defaults": { + "camera": "camera_1_1", + "filter_wheel": "filter_wheel1", + "focuser": "focuser1", + "mount": "mount1", + "rotator": "rotator1", + "screen": "screen1", + "selector": "selector1", + "sequencer": "sequencer1", + "telescope": "telescope1" + }, + "device_types": [ + "mount", + "telescope", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "camera": { + "camera_1_1": { + "desc": "QHY 600C Pro", + "name": "sq001cs", + "parent": "telescope1", + "settings": { + "areas_implemented": [ + "Big sq.", + "Full", + "Small sq.", + "50%", + "35%", + "25%", + "18%" + ], + "area_sq_deg": 0.4318, + "bin-desc": [ + "1x1", + "2x2", + "3x3", + "4x4" + ], + "bin_enable": [ + "1 1" + ], + "bin_modes": [ + [ + "Optimal", + 0.91 + ], + [ + "Fine", + 0.61 + ], + [ + "Coarse", + 1.2 + ] + ], + "CameraXSize": 9600, + "CameraYSize": 6422, + "can_set_gain": true, + "can_subframe": true, + "dark_exposure": 180, + "default_area": "Full", + "fullwell_capacity": 80000, + "has_darkslide": true, + "has_screen": true, + "is_cmos": true, + "is_color": true, + "is_osc": true, + "max_daytime_exposure": 0.0001, + "max_exposure": 180, + "max_flat_exposure": 20, + "max_linearity": 60000, + "min_exposure": 0.0001, + "min_flat_exposure": 3, + "min_subframe": [ + 128, + 128 + ], + "number_of_bias_to_collect": 63, + "number_of_dark_to_collect": 17, + "number_of_flat_to_collect": 5, + "pix_scale": 0.302597, + "saturate": 65535 + } + } + }, + "filter_wheel": { + "filter_wheel1": { + "name": "Dual filter wheel", + "desc": "FLI Centerline Custom Dual 50mm sq.", + "settings": { + "default_filter": "w", + "filter_data": [ + [ + "air", + [ + 0, + 0 + ], + -1000, + 20, + [ + 2, + 17 + ], + "ai" + ] + ] + } + } + }, + "focuser": { + "focuser1": { + "name": "focuser", + "maximum": 12700, + "minimum": 0, + "step_size": 1, + "unit": "micron" + } + }, + "mount": { + "mount1": { + "name": "eastpier", + "alignment": "Alt-Az", + "pointing_tel": "tel1" + } + }, + "rotator": { + "rotator1": { + "name": "rotator", + "maximum": 360, + "minimum": -180, + "step_size": 0.0001, + "unit": "degree" + } + }, + "screen": { + "screen1": { + "name": "screen", + "minimum": 5, + "saturate": 170 + } + }, + "selector": { + "selector1": { + "name": "None", + "cameras": [ + "camera_1_1" + ], + "guiders": [ + null + ], + "instruments": [ + "Main_camera" + ] + } + }, + "sequencer": { + "sequencer1": { + "name": "Sequencer" + } + }, + "telescope": { + "telescope1": { + "name": "Main OTA", + "camera_name": "camera_1_1", + "filter_wheel_name": "filterwheel1", + "focuser_name": "focuser1", + "rotator_name": "rotator1", + "screen_name": "screen1", + "aperture": 356, + "f-ratio": 7.2, + "focal_length": 2563, + "has_cover": false, + "has_fans": true, + "has_instrument_selector": false + } + } +} diff --git a/api/configs/sample_testing_configs/wema_mrc.json b/api/configs/sample_testing_configs/wema_mrc.json new file mode 100644 index 0000000..c6a51f5 --- /dev/null +++ b/api/configs/sample_testing_configs/wema_mrc.json @@ -0,0 +1,248 @@ +{ + "site_id": "mrc", + "admin_aliases": [ + "ANS", + "WER", + "TELOPS", + "TB", + "DH", + "KVH", + "KC" + ], + "admin_owner_commands_only": false, + "alt_path": "Q:/ptr/", + "archive_age": -99.9, + "archive_path": "Q:/ptr/", + "automatic_detail_default": "Enclosures are set to Automatic mode.", + "auto_eve_bias_dark": true, + "auto_eve_sky_flat": true, + "auto_midnight_moonless_bias_dark": false, + "auto_morn_bias_dark": true, + "auto_morn_sky_flat": true, + "aux_archive_path": null, + "check_time": 300, + "client_hostname": "MRC-0m35", + "client_path": "Q:/ptr/", + "client_read_share_path": "Q:/ptr/", + "client_write_share_path": "Q:/ptr/", + "closest_distance_to_the_moon": 10, + "closest_distance_to_the_sun": 45, + "defaults": { + "camera": "camera_1_1", + "enclosure": "enclosure1", + "filter_wheel": "filter_wheel1", + "focuser": "focuser1", + "mount": "mount1", + "observing_conditions": "observing_conditions1", + "rotator": "rotator1", + "screen": "screen1", + "selector": null, + "sequencer": "sequencer1", + "telescope": "telescope1" + }, + "device_types": [ + "observing_conditions", + "enclosure", + "mount", + "telescope", + "screen", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "enclosure": { + "enclosure1": { + "controlled_by": [ + "mnt1", + "mnt2" + ], + "cool_down": -65, + "driver": "ASCOM.SkyRoofHub.Dome", + "enclosure_is_custom": false, + "enclosure_is_directly_connected": true, + "enc_is_specific": false, + "eve_bias_dark_dur": 2, + "eve_cooldown_offset": -0.99, + "eve_screen_flat_dur": 1, + "eve_sky_flat_offset": 0.5, + "has_lights": true, + "hostIP": "10.15.0.42", + "is_dome": false, + "mode": "Automatic", + "morning_close_offset": 0.41, + "morn_sky_flat_offset": 0.4, + "name": "Megawan", + "operations_begin": -1, + "operations_end": 0.42, + "parent": "site", + "recover_script": null, + "redis_ip": "10.15.0.109", + "settings": { + "lights": [ + "Auto", + "White", + "Red", + "IR", + "Off" + ], + "roof_shutter": [ + "Auto", + "Open", + "Close", + "Lock Closed", + "Unlock" + ] + }, + "shutdown_script": null, + "startup_script": null, + "wema_allowed_to_open_roof": true + } + }, + "enclosure_check_period": 5, + "enclosure_id": [ + "enc1", + "enc1", + "enc2", + "enc3", + "enc4" + ], + "enclosure_type": [ + "clam", + "clam", + "clam", + "dome", + "covr" + ], + "enc_types": [ + "enclosure" + ], + "events": { + "Astro Dark": 45025.6634766474, + "Civil Dawn": 45026.04516812259, + "Civil Dusk": 45025.62099096807, + "Clock & Auto Focus": 45025.64704482566, + "Close and Park": 45026.083874672346, + "Cool Down, Open": 45025.55935652492, + "day_directory": "20230410", + "End Astro Dark": 45026.00270411158, + "End Eve Bias Dark": 45025.55935652493, + "End Eve Sky Flats": 45025.63477967058, + "End Morn Bias Dark": 45026.15887467234, + "End Morn Sky Flats": 45026.08248578346, + "End Nightly Reset": 45026.200541339014, + "Eve Bias Dark": 45025.47602319159, + "Eve Sky Flats": 45025.56282874715, + "Middle of Night": 45025.83324004898, + "Moon Rise": 45025.81620497058, + "Moon Set": 45026.22102315722, + "Moon Transit": 45026.019173750225, + "Morn Bias Dark": 45026.08526356123, + "Morn Sky Flats": 45026.04528005297, + "Naut Dawn": 45026.02444671963, + "Naut Dusk": 45025.64172411503, + "Nightly Reset": 45026.186652450124, + "Observing Begins": 45025.65260038122, + "Observing Ends": 45026.01357541561, + "Ops Window Closes": 45026.0831802279, + "Ops Window Start": 45025.56282874715, + "Prior Moon Rise": 45024.76927755058, + "Prior Moon Set": 45025.183788859365, + "Prior Moon Transit": 45024.97793596463, + "Sun Rise": 45026.061652450124, + "Sun Set": 45025.60449541381, + "use_by": 45026.22831911679 + }, + "eve_cool_down_open": -65, + "eve_sky_flat_sunset_offset": -60, + "keep_focus_images_on_disk": true, + "keep_reduced_on_disk": true, + "location _pole_monitor": null, + "location_day_allsky": null, + "location_night_allsky": null, + "location_seeing_report": null, + "lowest_requestable_altitude": -5, + "maximum_roof_opens_per_evening": 4, + "minimum_realistic_seeing": 1, + "observatory_id": [ + "mrc1", + "mrc2", + "mrc3", + "mcr4", + "mrc5" + ], + "observatory_logo": null, + "observatory_url": "https://starz-r-us.sky/clearskies", + "observing_check_period": 5, + "observing_conditions": { + "observing_conditions1": { + "driver": "ASCOM.SkyAlert.ObservingConditions", + "driver_2": "ASCOM.SkyAlert.SafetyMonitor", + "driver_3": null, + "name": "Weather Station #1", + "ocn_has_unihedron": false, + "ocn_is_specific": false, + "parent": "site", + "share_path_name": null, + "unihedron_port": 10, + "uni_driver": "ASCOM.SQM.serial.ObservingConditions" + } + }, + "only_scope_that_controls_the_roof": false, + "owner": [ + "google-oauth2|112401903840371673242" + ], + "owner_alias": [ + "WER", + "TELOPS" + ], + "period_of_time_to_wait_for_roof_to_open": 50, + "plog_path": "Q:/ptr/mrc1/", + "roof_open_safety_base_time": 15, + "save_raw_to_disk": true, + "save_to_alt_path": "no", + "send_files_at_end_of_night": "no", + "short_status_devices": [ + "mount", + "telescope", + "screen", + "rotator", + "focuser", + "selector", + "filter_wheel", + "camera", + "sequencer" + ], + "site_airport_code": "SBA", + "site_debug_duration_sec": 1800, + "site_debug_flag": false, + "site_dedication": "Behold the glory of Python and ASCOM!", + "site_description": "Mountain Ranch Camp Observatory", + "site_elevation": 317.75, + "site_has_specific_code": false, + "site_in_automatic_default": "Automatic", + "site_IPC_mechanism": "redis", + "site_latitude": 34.459375, + "site_location": "Near Santa Barbara, CA. USA", + "site_longitude": -119.681172, + "site_mpc_code": "NONE", + "site_redis_ip": "10.15.0.109", + "site_reference_ambient": 10, + "site_reference_pressure": 977.83, + "site_timezone": "PDT", + "site_time_offset": -7, + "site_wema_hostname": "MRC-WEMA", + "site_wema_is_a_process": false, + "TZ_database_name": "America/Los_Angeles", + "wema_allowed_to_open_roof": true, + "wema_hostname": "MRC-WEMA", + "wema_path": "Q:/ptr/", + "wema_roof_control": true, + "wema_types": [ + "observing_conditions", + "enclosure" + ], + "wema_write_share_path": "Q:/ptr/" +} \ No newline at end of file diff --git a/api/configs/sample_testing_configs/wema_simplevalid.json b/api/configs/sample_testing_configs/wema_simplevalid.json new file mode 100644 index 0000000..6d5fe12 --- /dev/null +++ b/api/configs/sample_testing_configs/wema_simplevalid.json @@ -0,0 +1,80 @@ +{ + "site_id": "mrco", + "site_description": "Mountain Ranch Camp Observatory", + "site_location": "Near Santa Barbara CA, USA", + "site_latitude": 34.459375, + "site_longitude": -119.681172, + "site_elevation": 317.75, + "TZ_database_name": "America/Los_Angeles", + "defaults": { + "enclosure": "enclosure1", + "observing_conditions": "observing_conditions1" + }, + "device_types": [ + "observing_conditions", + "enclosure" + ], + "enclosure": { + "enclosure1": { + "is_dome": false, + "mode": "Automatic", + "name": "Megawan", + "settings": { + "lights": [ + "Auto", + "White", + "Red", + "IR", + "Off" + ], + "roof_shutter": [ + "Auto", + "Open", + "Close", + "Lock Closed", + "Unlock" + ] + } + } + }, + "observing_conditions": { + "observing_conditions1": { + "name": "Weather Station #1" + } + }, + "events": { + "Astro Dark": 45012.65480418904, + "Civil Dawn": 45013.05766663141, + "Civil Dusk": 45012.61366586982, + "Clock & Auto Focus": 45012.63877557352, + "Close and Park": 45013.096067875755, + "Cool Down, Open": 45012.55233088672, + "End Astro Dark": 45013.016561503275, + "End Eve Bias Dark": 45012.55233088673, + "End Eve Sky Flats": 45012.62691362467, + "End Morn Bias Dark": 45013.17106787575, + "End Morn Sky Flats": 45013.09467898687, + "End Nightly Reset": 45013.21273454242, + "Eve Bias Dark": 45012.46899755339, + "Eve Sky Flats": 45012.555803108946, + "Middle of Night": 45012.83583619491, + "Moon Rise": 45012.26683165318, + "Moon Set": 45012.91281496513, + "Moon Transit": 45012.59008859649, + "Morn Bias Dark": 45013.09745676464, + "Morn Sky Flats": 45013.058325687125, + "Naut Dawn": 45013.03749235379, + "Naut Dusk": 45012.633858069115, + "Nightly Reset": 45013.19884565353, + "Observing Begins": 45012.64433112908, + "Observing Ends": 45013.02702692853, + "Ops Window Closes": 45013.09537343131, + "Ops Window Start": 45012.555803108946, + "Prior Moon Rise": 45011.23270894043, + "Prior Moon Set": 45011.876449511365, + "Prior Moon Transit": 45011.5535746374, + "Sun Rise": 45013.07384565353, + "Sun Set": 45012.59746977561, + "use_by": 45013.2405123202 + } +} \ No newline at end of file diff --git a/api/configs/validation_schemas.py b/api/configs/validation_schemas.py new file mode 100644 index 0000000..cfb7965 --- /dev/null +++ b/api/configs/validation_schemas.py @@ -0,0 +1,462 @@ +wema_config_schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "site_id": {"type": "string"}, + "site_description": {"type": "string"}, + "site_location": {"type": "string"}, + "site_latitude": {"type": "number"}, + "site_longitude": {"type": "number"}, + "site_elevation": {"type": "number"}, + "TZ_database_name": {"type": "string"}, + "defaults": { + "type": "object", + "properties": { + "enclosure": {"type": "string"}, + "observing_conditions": {"type": "string"} + }, + "required": ["enclosure", "observing_conditions"] + }, + "device_types": {"type": "array"}, + "observing_conditions": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"} + }, + "required": ["name"] + } + }, + "enclosure": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "is_dome": { + "type": "boolean" + }, + "mode": { + "type": "string", + }, + "name": { + "type": "string" + }, + "settings": { + "type": "object", + "properties": { + "lights": { + "type": "array", + "items": { + "type": "string", + }, + "uniqueItems": True + }, + "roof_shutter": { + "type": "array", + "items": { + "type": "string", + }, + "uniqueItems": True + } + }, + "required": ["lights", "roof_shutter"] + } + }, + "required": ["is_dome", "mode", "name", "settings"] + } + }, + "events": { + "type": "object", + "properties": { + "Astro Dark": {"type": "number"}, + "Civil Dawn": {"type": "number"}, + "Civil Dusk": {"type": "number"}, + "Clock & Auto Focus": {"type": "number"}, + "Close and Park": {"type": "number"}, + "Cool Down, Open": {"type": "number"}, + "End Astro Dark": {"type": "number"}, + "End Eve Bias Dark": {"type": "number"}, + "End Eve Sky Flats": {"type": "number"}, + "End Morn Bias Dark": {"type": "number"}, + "End Morn Sky Flats": {"type": "number"}, + "End Nightly Reset": {"type": "number"}, + "Eve Bias Dark": {"type": "number"}, + "Eve Sky Flats": {"type": "number"}, + "Middle of Night": {"type": "number"}, + "Moon Rise": {"type": "number"}, + "Moon Set": {"type": "number"}, + "Moon Transit": {"type": "number"}, + "Morn Bias Dark": {"type": "number"}, + "Morn Sky Flats": {"type": "number"}, + "Naut Dawn": {"type": "number"}, + "Naut Dusk": {"type": "number"}, + "Nightly Reset": {"type": "number"}, + "Observing Begins": {"type": "number"}, + "Observing Ends": {"type": "number"}, + "Ops Window Closes": {"type": "number"}, + "Ops Window Start": {"type": "number"}, + "Prior Moon Rise": {"type": "number"}, + "Prior Moon Set": {"type": "number"}, + "Prior Moon Transit": {"type": "number"}, + "Sun Rise": {"type": "number"}, + "Sun Set": {"type": "number"}, + "use_by": {"type": "number"} + }, + "required": [ + "Astro Dark", + "Civil Dawn", + "Civil Dusk", + "Clock & Auto Focus", + "Close and Park", + "Cool Down, Open", + "End Astro Dark", + "End Eve Bias Dark", + "End Eve Sky Flats", + "End Morn Bias Dark", + "End Morn Sky Flats", + "End Nightly Reset", + "Eve Bias Dark", + "Eve Sky Flats", + "Middle of Night", + "Moon Rise", + "Moon Set", + "Moon Transit", + "Morn Bias Dark", + "Morn Sky Flats", + "Naut Dawn", + "Naut Dusk", + "Nightly Reset", + "Observing Begins", + "Observing Ends", + "Ops Window Closes", + "Ops Window Start", + "Prior Moon Rise", + "Prior Moon Set", + "Prior Moon Transit", + "Sun Rise", + "Sun Set", + "use_by" + ] + }, + }, + "required": [ + "defaults", + "device_types", + "enclosure", + "events", + "site_elevation", + "site_id", + "site_latitude", + "site_location", + "site_longitude", + "site_description", + "observing_conditions", + "TZ_database_name", + ] +} + +platform_config_schema = { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "site": {"type": "string"}, + "site_id": {"type": "string"}, + "obs_id": {"type": "string"}, + "name": {"type": "string"}, + "TZ_database_name": {"type": "string"}, + "telescope_description": {"type": "string"}, + "defaults": { + "type": "object", + "additionalProperties": {"type": "string"}, + "required": [ + "camera", + "filter_wheel", + "focuser", + "mount", + "rotator", + "screen", + "telescope" + ] + }, + "device_types": { + "type": "array", + "items": {"type": "string"} + }, + "camera": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "desc": {"type": "string"}, + "name": {"type": "string"}, + "parent": {"type": "string"}, + "settings": { + "type": "object", + "properties": { + "areas_implemented": { + "type": "array", + "items": {"type": "string"} + }, + "area_sq_deg": {"type": "number"}, + "bin-desc": { + "type": "array", + "items": {"type": "string"} + }, + "bin_modes": { "type": "array"}, + "CameraXSize": {"type": "integer"}, + "CameraYSize": {"type": "integer"}, + "can_set_gain": {"type": "boolean"}, + "can_subframe": {"type": "boolean"}, + "dark_exposure": {"type": "integer"}, + "default_area": {"type": "string"}, + "fullwell_capacity": {"type": "integer"}, + "has_chiller": {"type": "boolean"}, + "has_darkslide": {"type": "boolean"}, + "has_screen": {"type": "boolean"}, + "is_cmos": {"type": "boolean"}, + "is_color": {"type": "boolean"}, + "is_osc": {"type": "boolean"}, + "max_daytime_exposure": {"type": "number"}, + "max_exposure": {"type": "integer"}, + "max_linearity": {"type": "integer"}, + "min_exposure": {"type": "number"}, + "min_subframe": { + "type": "array", + "items": {"type": "integer"} + }, + "number_of_bias_to_collect": {"type": "integer"}, + "number_of_dark_to_collect": {"type": "integer"}, + "number_of_flat_to_collect": {"type": "integer"}, + "pix_scale": {"type": "number"}, + "saturate": {"type": "integer"} + }, + "required": [ + "areas_implemented", + "bin_modes", + "can_set_gain", + "can_subframe", + "dark_exposure", + "default_area", + "has_darkslide", + "has_screen", + "is_cmos", + "is_osc", + "max_daytime_exposure", + "max_exposure", + "max_linearity", + "min_exposure", + "min_flat_exposure", + "min_subframe", + "number_of_bias_to_collect", + "number_of_dark_to_collect", + "number_of_flat_to_collect", + "pix_scale", + "saturate" + ] + } + }, + "required": ["desc", "name", "parent", "settings"] + } + }, + "filter_wheel": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "desc": {"type": "string"}, + "settings": { + "type": "object", + "properties": { + "default_filter": {"type": "string"}, + "filter_data": { + "type": "array", + "items": { + "type": "array", + "items": [ + {"type": "string"}, + { + "type": "array", + "items": {"type": "number"} + }, + {"type": "number"}, + {"type": "number"}, + { + "type": "array", + "items": {"type": "number"} + }, + {"type": "string"} + ] + } + } + }, + "required": [ + "default_filter", + "filter_data" + ] + } + }, + "required": [ + "settings" + ] + } + }, + "focuser": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "maximum": {"type": "integer"}, + "minimum": {"type": "integer"}, + "step_size": {"type": "integer"}, + "unit": {"type": "string"} + }, + "required": [ + "name", + "maximum", + "minimum", + "step_size", + "unit" + ] + } + }, + "mount": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "alignment": {"type": "string"}, + "pointing_tel": {"type": "string"} + }, + "required": [ + "name", + "alignment", + "pointing_tel" + ] + } + }, + "rotator": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "minimum": {"type": "number"}, + "maximum": {"type": "number"}, + "step_size": {"type": "number"}, + "unit": {"type": "string"} + }, + "required": [ + "name", + "minimum", + "maximum", + "step_size", + "unit"] + } + }, + "screen": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "minimum": {"type": "integer"}, + "saturate": {"type": "integer"} + }, + "required": [ + "name", + "minimum", + "saturate" + ] + } + }, + "selector": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "cameras": { + "type": "array", + "items": {"type": ["null", "string"]} + }, + "guiders": { + "type": "array", + "items": {"type": ["null", "string"]} + }, + "instruments": { + "type": "array", + "items": {"type": ["null", "string"]} + }, + }, + "required": [ + "name", + "cameras", + "guiders", + "instruments", + ] + } + }, + "sequencer": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + }, + "required": ["name"] + } + }, + "telescope": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "name": {"type": "string"}, + "aperture": {"type": "integer"}, + "camera_name": {"type": "string"}, + "filter_wheel_name": {"type": "string"}, + "focuser_name": {"type": "string"}, + "rotator_name": {"type": "string"}, + "screen_name": {"type": "string"}, + "f-ratio": {"type": "number"}, + "focal_length": {"type": "integer"}, + "has_cover": {"type": "boolean"}, + "has_fans": {"type": "boolean"}, + "has_instrument_selector": {"type": "boolean"}, + "selector_positions": {"type": "integer"}, + }, + "required": [ + "name", + "camera_name", + "filter_wheel_name", + "rotator_name", + "focuser_name", + "screen_name", + "has_cover", + "has_fans", + "has_instrument_selector", + ] + } + }, + }, + "required": [ + "site", + "site_id", + "obs_id", + "name", + "TZ_database_name", + "telescope_description", + "defaults", + "device_types", + "camera", + "filter_wheel", + "focuser", + "mount", + "screen", + "telescope", + ] +} diff --git a/api/helpers.py b/api/helpers.py index cea43db..90d161e 100644 --- a/api/helpers.py +++ b/api/helpers.py @@ -31,6 +31,8 @@ def default(self, o): return int(o) return super(DecimalEncoder, self).default(o) +def json_dumps_ddb(o): + return json.dumps(o, cls=DecimalEncoder) def http_response(status_code, body): """Returns a given HTTP status code.""" diff --git a/api/tests/unit/test_configs.py b/api/tests/unit/test_configs.py new file mode 100644 index 0000000..ae729e5 --- /dev/null +++ b/api/tests/unit/test_configs.py @@ -0,0 +1,291 @@ +import json +import pytest +from pytest_mock import MockerFixture +from http import HTTPStatus +from api.configs.configs import get_wema +from api.configs.configs import get_wema_and_all_platforms +from api.configs.configs import get_platform_and_associated_wema +from api.configs.configs import write_wema +from api.configs.configs import write_platform +from api.configs.configs import get_all_wemas +from api.configs.configs import get_wema_handler +from api.configs.configs import get_wema_and_all_platforms_handler +from api.configs.configs import get_platform_and_associated_wema_handler +from api.configs.configs import write_wema_handler +from api.configs.configs import write_platform_handler +from api.configs.configs import get_all_wemas_handler + +from api.helpers import json_dumps_ddb + +# Sample data for testing +wema_id = "WEMA123" +platform_id = "PLATFORM123" + +good_wema_config_path = "api/configs/sample_testing_configs/wema_simplevalid.json" +with open(good_wema_config_path, "r") as file: + wema_config_good = json.load(file) + +good_platform_config_path = "api/configs/sample_testing_configs/platform_simplevalid.json" +with open(good_platform_config_path, "r") as file: + platform_config_good = json.load(file) + +wema_config_bad = {"wema_key": "wema_val"} +platform_config_bad = {"platform_key": "platform_val"} + +wema_post_request_body_good_config = { + "wema_id": wema_id, + "config": wema_config_good +} +wema_post_request_body_bad_config = { + "wema_id": wema_id, + "config": wema_config_bad +} +platform_post_request_body_good = { + "platform_id": platform_id, + "wema_id": wema_id, + "config": platform_config_good +} +platform_post_request_body_bad = { + "platform_id": platform_id, + "wema_id": wema_id, + "config": platform_config_bad +} + +wema_dynamodb_json = {"ConfigID": wema_id, "ConfigType": "WEMA", "Config": wema_config_good} +platform_dynamodb_json = {"ConfigID": platform_id, "WemaID": wema_id, "ConfigType": "PLATFORM", "Config": platform_config_good} + + +@pytest.fixture +def mock_table(mocker: MockerFixture): + return mocker.patch("api.configs.configs.table") + +def test_get_wema(mock_table): + mock_table.get_item.return_value = {"Item": wema_dynamodb_json} + + result = get_wema(wema_id) + assert result == wema_dynamodb_json + + mock_table.get_item.assert_called_once_with(Key={"ConfigID": wema_id, "ConfigType": "WEMA"}) + + +### Test DynamoDB Methods ### + +def test_get_wema_and_all_platforms(mock_table): + mock_table.get_item.return_value = {"Item": wema_dynamodb_json} + mock_table.scan.return_value = {"Items": [platform_dynamodb_json]} + + wema, platforms = get_wema_and_all_platforms(wema_id) + assert wema == wema_dynamodb_json + assert platforms == {platform_dynamodb_json["ConfigID"]: platform_dynamodb_json["Config"]} + + mock_table.scan.assert_called_once_with( + FilterExpression="ConfigType = :platform AND WemaID = :wema_id", + ExpressionAttributeValues={":platform": "PLATFORM", ":wema_id": wema_id}, + ) + +def test_get_platform_and_associated_wema(mock_table, mocker: MockerFixture): + mock_table.get_item.side_effect = [{"Item": platform_dynamodb_json}, {"Item": wema_dynamodb_json}] + + platform, wema = get_platform_and_associated_wema(platform_id) + assert platform == platform_dynamodb_json + assert wema == wema_dynamodb_json + + mock_table.get_item.assert_has_calls([ + mocker.call(Key={"ConfigID": platform_id, "ConfigType": "PLATFORM"}), + mocker.call(Key={"ConfigID": wema_id, "ConfigType": "WEMA"}), + ]) + +def test_write_wema(mock_table): + write_wema(wema_id, wema_config_good) + + mock_table.put_item.assert_called_once_with( + Item={"ConfigID": wema_id, "ConfigType": "WEMA", "Config": wema_config_good}, + ) + +def test_write_platform(mock_table): + write_platform(platform_id, wema_id, platform_config_good) + + mock_table.put_item.assert_called_once_with( + Item={"ConfigID": platform_id, "ConfigType": "PLATFORM", "WemaID": wema_id, "Config": platform_config_good}, + ) + +def test_get_all_wemas(mock_table): + mock_table.scan.return_value = {"Items": [wema_dynamodb_json]} + + result = get_all_wemas() + assert result == {wema_id: wema_dynamodb_json["Config"]} + + mock_table.scan.assert_called_once_with( + FilterExpression="ConfigType = :wema", + ExpressionAttributeValues={":wema": "WEMA"}, + ) + + +### Test Handler Methods ### + +def test_get_wema_handler(mocker): + mocked_get_wema = mocker.patch("api.configs.configs.get_wema", return_value=wema_dynamodb_json) + event = {"pathParameters": {"wema_id": wema_id}} + context = {} + + response = get_wema_handler(event, context) + assert response == {"statusCode": HTTPStatus.OK, "body": json.dumps(wema_dynamodb_json)} + + mocked_get_wema.assert_called_once_with(wema_id) + +def test_get_wema_and_all_platforms_handler(mocker): + sample_response = (wema_dynamodb_json, {platform_dynamodb_json["ConfigID"]: platform_dynamodb_json["Config"]}) + mocked_get_wema_and_all_platforms = mocker.patch("api.configs.configs.get_wema_and_all_platforms", return_value=sample_response) + event = {"pathParameters": {"wema_id": wema_id}} + context = {} + + response = get_wema_and_all_platforms_handler(event, context) + assert response == {"statusCode": HTTPStatus.OK, "body": json.dumps({"wema": wema_dynamodb_json, "platforms": {platform_dynamodb_json["ConfigID"]: platform_dynamodb_json["Config"]}})} + + mocked_get_wema_and_all_platforms.assert_called_once_with(wema_id) + +def test_get_platform_and_associated_wema_handler(mocker): + mocked_get_platform_and_associated_wema = mocker.patch("api.configs.configs.get_platform_and_associated_wema", return_value=(platform_dynamodb_json, wema_dynamodb_json)) + event = {"pathParameters": {"platform_id": platform_id}} + context = {} + + response = get_platform_and_associated_wema_handler(event, context) + assert response == {"statusCode": HTTPStatus.OK, "body": json.dumps({"platform": platform_dynamodb_json, "wema": wema_dynamodb_json})} + + mocked_get_platform_and_associated_wema.assert_called_once_with(platform_id) + +def test_write_wema_handler_good_config(mocker): + mocked_write_wema = mocker.patch("api.configs.configs.write_wema") + event = {"body": json.dumps(wema_post_request_body_good_config)} + context = {} + + response = write_wema_handler(event, context) + assert response == {"statusCode": HTTPStatus.CREATED, "body": "WEMA created"} + + serialized_config = json_dumps_ddb(wema_config_good) + mocked_write_wema.assert_called_once_with(wema_id, serialized_config) + +def test_write_wema_handler_mrc(mocker): + mocked_write_wema = mocker.patch("api.configs.configs.write_wema") + + # get the mrc config to test + config_path = "api/configs/sample_testing_configs/wema_mrc.json" + with open(config_path, "r") as file: + config = json.load(file) + wema_id = "mrc" + event = {"body": json.dumps({ + "wema_id": wema_id, + "config": config + })} + context = {} + + response = write_wema_handler(event, context) + assert response == {"statusCode": HTTPStatus.CREATED, "body": "WEMA created"} + serialized_config = json_dumps_ddb(config) + mocked_write_wema.assert_called_once_with(wema_id, serialized_config) + +def test_write_wema_handler_bad_config(mocker): + mocked_write_wema = mocker.patch("api.configs.configs.write_wema") + event = {"body": json.dumps(wema_post_request_body_bad_config)} + context = {} + + response = write_wema_handler(event, context) + assert response["statusCode"] == HTTPStatus.BAD_REQUEST + assert "is a required property" in response["body"] + + mocked_write_wema.assert_not_called() + +def test_write_platform_handler_good_config(mocker): + mocked_write_platform = mocker.patch("api.configs.configs.write_platform") + event = {"body": json.dumps(platform_post_request_body_good)} + context = {} + + response = write_platform_handler(event, context) + assert response == {"statusCode": HTTPStatus.CREATED, "body": "Platform created"} + + serialized_config = json_dumps_ddb(platform_config_good) + mocked_write_platform.assert_called_once_with(platform_id, wema_id, serialized_config) + +def test_write_platform_handler_mrc1(mocker): + mocked_write_platform = mocker.patch("api.configs.configs.write_platform") + + # get the mrc1 config to test + config_path = "api/configs/sample_testing_configs/platform_mrc1.json" + with open(config_path, "r") as file: + config = json.load(file) + wema_id = "mrc" + platform_id = "mrc1" + event = {"body": json.dumps({ + "wema_id": wema_id, + "platform_id": platform_id, + "config": config + })} + context = {} + + response = write_platform_handler(event, context) + assert response == {"statusCode": HTTPStatus.CREATED, "body": "Platform created"} + serialized_config = json_dumps_ddb(config) + mocked_write_platform.assert_called_once_with(platform_id, wema_id, serialized_config) + +def test_write_platform_handler_mrc2(mocker): + mocked_write_platform = mocker.patch("api.configs.configs.write_platform") + + # get the mrc2 config to test + config_path = "api/configs/sample_testing_configs/platform_mrc2.json" + with open(config_path, "r") as file: + config = json.load(file) + wema_id = "mrc" + platform_id = "mrc2" + event = {"body": json.dumps({ + "wema_id": wema_id, + "platform_id": platform_id, + "config": config + })} + context = {} + + response = write_platform_handler(event, context) + assert response == {"statusCode": HTTPStatus.CREATED, "body": "Platform created"} + serialized_config = json_dumps_ddb(config) + mocked_write_platform.assert_called_once_with(platform_id, wema_id, serialized_config) + +def test_write_platform_handler_eco1(mocker): + mocked_write_platform = mocker.patch("api.configs.configs.write_platform") + + # get the eco1 config to test + config_path = "api/configs/sample_testing_configs/platform_eco1.json" + with open(config_path, "r") as file: + config = json.load(file) + wema_id = "eco" + platform_id = "eco1" + event = {"body": json.dumps({ + "wema_id": wema_id, + "platform_id": platform_id, + "config": config + })} + context = {} + + response = write_platform_handler(event, context) + assert response == {"statusCode": HTTPStatus.CREATED, "body": "Platform created"} + serialized_config = json_dumps_ddb(config) + mocked_write_platform.assert_called_once_with(platform_id, wema_id, serialized_config) + +def test_write_platform_handler_bad_config(mocker): + mocked_write_platform = mocker.patch("api.configs.configs.write_platform") + event = {"body": json.dumps(platform_post_request_body_bad)} + context = {} + + response = write_platform_handler(event, context) + assert response["statusCode"] == HTTPStatus.BAD_REQUEST + assert "is a required property" in response["body"] + + mocked_write_platform.assert_not_called() + +def test_get_all_wemas_handler(mocker): + mocked_get_all_wemas = mocker.patch("api.configs.configs.get_all_wemas", return_value={wema_id: wema_dynamodb_json["Config"]}) + event = {} + context = {} + + response = get_all_wemas_handler(event, context) + assert response == {"statusCode": HTTPStatus.OK, "body": json.dumps({wema_id: wema_dynamodb_json["Config"]})} + + mocked_get_all_wemas.assert_called_once() diff --git a/package-lock.json b/package-lock.json index 2b2025b..da9a352 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ }, "devDependencies": { "serverless-dotenv-plugin": "^4.0.1", + "serverless-dynamodb-local": "^0.2.40", "serverless-offline": "^8.8.1", "serverless-prune-plugin": "^2.0.1", "serverless-python-requirements": "^6.0.0" @@ -147,9 +148,9 @@ } }, "node_modules/@hapi/hapi": { - "version": "20.2.2", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.2.2.tgz", - "integrity": "sha512-crhU6TIKt7QsksWLYctDBAXogk9PYAm7UzdpETyuBHC2pCa6/+B5NykiOVLG/3FCIgHo/raPVtan8bYtByHORQ==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.3.0.tgz", + "integrity": "sha512-zvPSRvaQyF3S6Nev9aiAzko2/hIFZmNSJNcs07qdVaVAvj8dGJSV4fVUuQSnufYJAGiSau+U5LxMLhx79se5WA==", "dev": true, "dependencies": { "@hapi/accept": "^5.0.1", @@ -165,9 +166,9 @@ "@hapi/podium": "^4.1.1", "@hapi/shot": "^5.0.5", "@hapi/somever": "^3.0.0", - "@hapi/statehood": "^7.0.4", - "@hapi/subtext": "^7.0.3", - "@hapi/teamwork": "^5.1.1", + "@hapi/statehood": "^7.0.3", + "@hapi/subtext": "^7.1.0", + "@hapi/teamwork": "^5.1.0", "@hapi/topo": "^5.0.0", "@hapi/validate": "^1.1.1" }, @@ -229,9 +230,9 @@ } }, "node_modules/@hapi/pez": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.0.3.tgz", - "integrity": "sha512-mpikYRJjtrbJgdDHG/H9ySqYqwJ+QU/D7FXsYciS9P7NYBXE2ayKDAy3H0ou6CohOCaxPuTV4SZ0D936+VomHA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.1.0.tgz", + "integrity": "sha512-YfB0btnkLB3lb6Ry/1KifnMPBm5ZPfaAHWFskzOMAgDgXgcBgA+zjpIynyEiBfWEz22DBT8o1e2tAaBdlt8zbw==", "dev": true, "dependencies": { "@hapi/b64": "5.x.x", @@ -288,9 +289,9 @@ } }, "node_modules/@hapi/subtext": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.0.4.tgz", - "integrity": "sha512-Y72moHhbRuO8kwBHFEnCRw7oOnhNh4Pl+aonxAze18jkyMpE4Gwz4lNID7ei8vd3lpXC2rKdkxXJgtfY+WttRw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.1.0.tgz", + "integrity": "sha512-n94cU6hlvsNRIpXaROzBNEJGwxC+HA69q769pChzej84On8vsU14guHDub7Pphr/pqn5b93zV3IkMPDU5AUiXA==", "dev": true, "dependencies": { "@hapi/boom": "9.x.x", @@ -298,7 +299,7 @@ "@hapi/content": "^5.0.2", "@hapi/file": "2.x.x", "@hapi/hoek": "9.x.x", - "@hapi/pez": "^5.0.1", + "@hapi/pez": "^5.1.0", "@hapi/wreck": "17.x.x" } }, @@ -402,28 +403,28 @@ } }, "node_modules/@serverless/dashboard-plugin": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.2.tgz", - "integrity": "sha512-h3zOprpuWZCdAP7qoOKT2nboB+AaxMkGoSzOD0jIBpt9s0cXqLE2VFjR2vKn8Cvam47Qa3XYnT2/XN6tR6rZgQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.3.tgz", + "integrity": "sha512-iTZhpZbiVl6G2AyfgoqxemqqpG4pUceWys3GsyZtjimnfnGd2UFBOMVUMTavLhYia7lQc4kQVuXQ+afLlkg+pQ==", "dependencies": { "@serverless/event-mocks": "^1.1.1", "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.0.3", + "@serverless/utils": "^6.8.2", "child-process-ext": "^2.1.1", "chokidar": "^3.5.3", "flat": "^5.0.2", "fs-extra": "^9.1.0", "js-yaml": "^4.1.0", - "jszip": "^3.9.1", + "jszip": "^3.10.1", "lodash": "^4.17.21", "memoizee": "^0.4.15", - "ncjsm": "^4.3.0", + "ncjsm": "^4.3.2", "node-dir": "^0.1.17", - "node-fetch": "^2.6.7", + "node-fetch": "^2.6.8", "open": "^7.4.2", - "semver": "^7.3.7", - "simple-git": "^3.7.0", - "type": "^2.6.0", + "semver": "^7.3.8", + "simple-git": "^3.16.0", + "type": "^2.7.2", "uuid": "^8.3.2", "yamljs": "^0.3.0" }, @@ -431,6 +432,35 @@ "node": ">=12.0" } }, + "node_modules/@serverless/dashboard-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@serverless/dashboard-plugin/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -493,35 +523,26 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@serverless/platform-client/node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/@serverless/utils": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.6.0.tgz", - "integrity": "sha512-+zw5m41L44psgKh9Snj0tVaXKI2mg/MW2l7VlySjAEK5jqLKHNmFMw0n2oD75nbaJvr2xYhc05wmeFdLqVF6Sw==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.11.1.tgz", + "integrity": "sha512-HIPGwxUOtmJWTsXamJ9P3IYmvpI548c6moY+n4672a6HHo6xK2sShrQVtlJUkosMqvki30LDceydsTtHruVX3w==", "dependencies": { "archive-type": "^4.0.0", "chalk": "^4.1.2", - "ci-info": "^3.3.1", - "cli-progress-footer": "^2.3.1", + "ci-info": "^3.8.0", + "cli-progress-footer": "^2.3.2", "content-disposition": "^0.5.4", "d": "^1.0.1", "decompress": "^4.2.1", "event-emitter": "^0.3.5", - "ext": "^1.6.0", + "ext": "^1.7.0", "ext-name": "^5.0.0", - "file-type": "^16.5.3", + "file-type": "^16.5.4", "filenamify": "^4.3.0", "get-stream": "^6.0.1", - "got": "^11.8.3", - "inquirer": "^8.2.4", + "got": "^11.8.6", + "inquirer": "^8.2.5", "js-yaml": "^4.1.0", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -529,16 +550,17 @@ "log-node": "^8.0.3", "make-dir": "^3.1.0", "memoizee": "^0.4.15", - "ncjsm": "^4.3.0", - "node-fetch": "^2.6.7", - "open": "^7.4.2", + "ms": "^2.1.3", + "ncjsm": "^4.3.2", + "node-fetch": "^2.6.9", + "open": "^8.4.2", "p-event": "^4.2.0", "supports-color": "^8.1.1", "timers-ext": "^0.1.7", - "type": "^2.6.0", + "type": "^2.7.2", "uni-global": "^1.0.0", "uuid": "^8.3.2", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^4.0.2" }, "engines": { "node": ">=12.0" @@ -585,14 +607,14 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dependencies": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "node_modules/@types/http-cache-semantics": { @@ -600,11 +622,6 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, - "node_modules/@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" - }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", @@ -614,14 +631,14 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "version": "4.14.192", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", + "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==" }, "node_modules/@types/node": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.1.tgz", - "integrity": "sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==" + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" }, "node_modules/@types/responselike": { "version": "1.0.0", @@ -647,9 +664,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", - "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", "engines": { "node": ">=6.0" } @@ -666,9 +683,9 @@ } }, "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -705,6 +722,15 @@ "string-width": "^4.1.0" } }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -742,9 +768,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -817,9 +843,9 @@ } }, "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -861,6 +887,15 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -879,10 +914,21 @@ "node": ">= 4.0.0" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sdk": { - "version": "2.1167.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1167.0.tgz", - "integrity": "sha512-hUJzAqWVfNYpct1S+GjyPIc2s+GZcAhbWVqIG4qbLYZ3+sBTcjv3lLH5zx7K+qcTGINDU0g4EsMi6hIrAU+blg==", + "version": "2.1356.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1356.0.tgz", + "integrity": "sha512-At7/tPJrAxlSIuyv/KpjgoNZSVp4y6nmrfcf89xe4KTR3+SRXnX4X0646bkCyU58jjSguqPjSJopsAFK16jdjg==", "dependencies": { "buffer": "4.9.2", "events": "1.1.1", @@ -891,13 +937,31 @@ "querystring": "0.2.0", "sax": "1.2.1", "url": "0.10.3", + "util": "^0.12.4", "uuid": "8.0.0", - "xml2js": "0.4.19" + "xml2js": "0.5.0" }, "engines": { "node": ">= 10.0.0" } }, + "node_modules/aws-sdk/node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -1030,6 +1094,12 @@ "node": ">=8" } }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "node_modules/buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -1160,6 +1230,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1191,6 +1279,15 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/child-process-ext": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", @@ -1238,9 +1335,18 @@ } }, "node_modules/ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, "node_modules/cli-boxes": { "version": "2.2.1", @@ -1298,9 +1404,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz", + "integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==", "engines": { "node": ">=6" }, @@ -1350,28 +1456,14 @@ } }, "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" + "wrap-ansi": "^7.0.0" } }, "node_modules/clone": { @@ -1383,11 +1475,14 @@ } }, "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dependencies": { "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/color-convert": { @@ -1430,18 +1525,6 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, - "node_modules/compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", - "dependencies": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" - }, - "engines": { - "node": ">= 12" - } - }, "node_modules/compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -1473,9 +1556,9 @@ } }, "node_modules/cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" }, "node_modules/core-util-is": { "version": "1.0.3", @@ -1506,25 +1589,24 @@ } }, "node_modules/cron-parser": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz", - "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.8.1.tgz", + "integrity": "sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==", "dev": true, "dependencies": { - "is-nan": "^1.3.2", - "luxon": "^1.26.0" + "luxon": "^3.2.1" }, "engines": { - "node": ">=0.8" + "node": ">=12.0.0" } }, "node_modules/cron-parser/node_modules/luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/cross-spawn": { @@ -1554,6 +1636,7 @@ "version": "2.1.8", "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==", + "deprecated": "Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.", "dev": true }, "node_modules/d": { @@ -1571,9 +1654,9 @@ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "node_modules/dayjs": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz", - "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==" + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "node_modules/debug": { "version": "4.3.4", @@ -1591,13 +1674,21 @@ } } }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decompress": { @@ -1674,9 +1765,9 @@ } }, "node_modules/decompress-tar/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1814,12 +1905,27 @@ "node": ">=4" } }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dependencies": { "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/defer-to-connect": { @@ -1842,20 +1948,12 @@ "timers-ext": "^0.1.7" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, "node_modules/delayed-stream": { @@ -1867,14 +1965,23 @@ } }, "node_modules/dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dependencies": { "asap": "^2.0.0", "wrappy": "1" } }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -1887,17 +1994,20 @@ } }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "engines": { + "node": ">=12" + } }, "node_modules/duration": { "version": "0.2.2", @@ -1908,6 +2018,94 @@ "es5-ext": "~0.10.46" } }, + "node_modules/dynamodb-localhost": { + "version": "0.0.9", + "resolved": "git+ssh://git@github.com/99x/dynamodb-localhost.git#db30898f8c40932c7177be7b2f1a81360d12876d", + "integrity": "sha512-l5jXRVXI7j0553YMXeyj91DhqYZaCVhg2o0sCJXI1N9sbuAoM8KMO9WqP8DxCZC+XirdDfGH0X9+orty2DmxFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chai": "^4.2.0", + "mkdirp": "^1.0.4", + "mocha": "^10.2.0", + "progress": "^1.1.8", + "rimraf": "^2.6.3", + "tar": "^4.4.19" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/dynamodb-localhost/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/dynamodb-localhost/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/dynamodb-localhost/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/dynamodb-localhost/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/dynamodb-localhost/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/dynamodb-localhost/node_modules/tar/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/dynamodb-localhost/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1931,9 +2129,9 @@ } }, "node_modules/es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", @@ -1955,24 +2153,19 @@ } }, "node_modules/es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA==", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-set/node_modules/es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/es6-symbol": { @@ -1995,6 +2188,15 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2150,11 +2352,11 @@ } }, "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dependencies": { - "type": "^2.5.0" + "type": "^2.7.2" } }, "node_modules/ext-list": { @@ -2199,9 +2401,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -2219,14 +2421,17 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dependencies": { "reusify": "^1.0.4" } @@ -2254,9 +2459,9 @@ } }, "node_modules/file-type": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", - "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", @@ -2294,11 +2499,11 @@ } }, "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.7.tgz", + "integrity": "sha512-iMRG7Qo9nayLoU3PNCiLizYtsy4W1ClrapeCwEgtiQelOAOuRJiw4QaLI+sSr8xr901dgHv+EYP2bCusGZgoiA==", "engines": { - "node": ">= 0.4.0" + "node": ">= 10.4.0" } }, "node_modules/fill-range": { @@ -2325,16 +2530,19 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat": { @@ -2346,9 +2554,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { "type": "individual", @@ -2364,6 +2572,14 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -2378,47 +2594,35 @@ } }, "node_modules/formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", + "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", "dependencies": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" }, "funding": { "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/formidable/node_modules/qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/fs-minipass": { @@ -2432,6 +2636,17 @@ "node": ">= 8" } }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2481,10 +2696,19 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2536,18 +2760,154 @@ } }, "node_modules/glob-all": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.0.tgz", - "integrity": "sha512-30gCh9beSb+YSAh0vsoIlBRm4bSlyMa+5nayax1EJhjwYrCohX0aDxcxvWVe3heOrJikbHgRs75Af6kPLcumew==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz", + "integrity": "sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q==", "dev": true, "dependencies": { - "glob": "^7.1.2", + "glob": "^7.2.3", "yargs": "^15.3.1" }, "bin": { "glob-all": "bin/glob-all" } }, + "node_modules/glob-all/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/glob-all/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/glob-all/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-all/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob-all/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob-all/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-all/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob-all/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob-all/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/glob-all/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob-all/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -2578,10 +2938,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -2603,9 +2974,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphlib": { "version": "2.1.8", @@ -2634,22 +3005,24 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" }, @@ -2657,6 +3030,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, "node_modules/hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", @@ -2666,9 +3048,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http2-wrapper": { "version": "1.0.3", @@ -2720,9 +3102,9 @@ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "engines": { "node": ">= 4" } @@ -2755,9 +3137,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -2779,6 +3161,21 @@ "node": ">=12.0.0" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2790,6 +3187,17 @@ "node": ">=8" } }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -2820,6 +3228,20 @@ "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -2839,22 +3261,6 @@ "node": ">=8" } }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -2910,6 +3316,24 @@ "node": ">=0.10.0" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -3001,10 +3425,75 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "node_modules/json-colorizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-2.2.2.tgz", + "integrity": "sha512-56oZtwV1piXrQnRNTtJeqRv+B9Y/dXAYLqBBaYl/COcUdoZxgLBLAO88+CnkbT6MxNs0c5E9mPBIb2sFcNz3vw==", + "dependencies": { + "chalk": "^2.4.1", + "lodash.get": "^4.4.2" + } + }, + "node_modules/json-colorizer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-colorizer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-colorizer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/json-colorizer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/json-colorizer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/json-colorizer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-cycle": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.3.0.tgz", - "integrity": "sha512-FD/SedD78LCdSvJaOUQAXseT8oQBb5z6IVYaQaCrVUlu9zOAr1BDdKyVYQaSD/GDsAMrXpKcOyBD4LIl8nfjHw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.4.0.tgz", + "integrity": "sha512-rU9PIQLyR7sSoefX9OjU8eoTOg0Ulzx5mVvNzplTe6WZTSvEYurxtC+Ar1wGC4Busiq+1vL6g42GproF4HQcEQ==", "engines": { "node": ">= 4" } @@ -3127,9 +3616,9 @@ } }, "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3180,11 +3669,10 @@ "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==" }, "node_modules/keyv": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.2.tgz", - "integrity": "sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dependencies": { - "compress-brotli": "^1.3.8", "json-buffer": "3.0.1" } }, @@ -3200,9 +3688,9 @@ } }, "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3235,15 +3723,18 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -3269,8 +3760,7 @@ "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, "node_modules/lodash.includes": { "version": "4.3.0", @@ -3386,6 +3876,15 @@ "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", "dev": true }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -3414,9 +3913,9 @@ } }, "node_modules/luxon": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.4.0.tgz", - "integrity": "sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", "dev": true, "engines": { "node": ">=12" @@ -3562,13 +4061,19 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "engines": { "node": ">=8" } @@ -3585,6 +4090,17 @@ "node": ">= 8" } }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -3596,34 +4112,151 @@ "node": ">=10" } }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==" }, "node_modules/ncjsm": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ncjsm/-/ncjsm-4.3.0.tgz", - "integrity": "sha512-oah6YGwb4Ern2alojiMFcjPhE4wvQBw1Ur/kUr2P0ovKdzaF5pCIsGjs0f2y+iZeej0/5Y6OOhQ8j30cTDMEGw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ncjsm/-/ncjsm-4.3.2.tgz", + "integrity": "sha512-6d1VWA7FY31CpI4Ki97Fpm36jfURkVbpktizp8aoVViTZRQgr/0ddmlKerALSSlzfwQRBeSq1qwwVcBJK4Sk7Q==", "dependencies": { - "builtin-modules": "^3.2.0", + "builtin-modules": "^3.3.0", "deferred": "^0.7.11", - "es5-ext": "^0.10.53", - "es6-set": "^0.1.5", - "ext": "^1.6.0", + "es5-ext": "^0.10.62", + "es6-set": "^0.1.6", + "ext": "^1.7.0", "find-requires": "^1.0.0", "fs2": "^0.3.9", - "type": "^2.5.0" + "type": "^2.7.2" } }, "node_modules/next-tick": { @@ -3648,9 +4281,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -3667,12 +4300,12 @@ } }, "node_modules/node-schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.0.tgz", - "integrity": "sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", "dev": true, "dependencies": { - "cron-parser": "^3.5.0", + "cron-parser": "^4.2.0", "long-timeout": "0.1.1", "sorted-array-functions": "^1.3.0" }, @@ -3746,30 +4379,21 @@ } }, "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "engines": { "node": ">= 6" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3793,15 +4417,16 @@ } }, "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3877,30 +4502,33 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-memoize": { @@ -3983,6 +4611,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-settle/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -4055,6 +4698,15 @@ "resolved": "https://registry.npmjs.org/path2/-/path2-0.1.0.tgz", "integrity": "sha512-TX+cz8Jk+ta7IvRy2FAej8rdlbrP0+uBIkP/5DTODez/AuL/vSb30KuAdDxGVREXzn8QfAiu5mJYJ1XjbOhEPA==" }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/peek-readable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", @@ -4129,6 +4781,15 @@ "node": ">=10.0" } }, + "node_modules/progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/promise-queue": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.5.tgz", @@ -4147,17 +4808,17 @@ } }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", + "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", "dependencies": { "side-channel": "^1.0.4" }, @@ -4169,9 +4830,9 @@ } }, "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { "node": ">=0.4.x" @@ -4207,10 +4868,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -4236,9 +4906,9 @@ } }, "node_modules/readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dependencies": { "minimatch": "^5.1.0" } @@ -4252,9 +4922,9 @@ } }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4302,11 +4972,14 @@ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dependencies": { "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/restore-cursor": { @@ -4340,18 +5013,15 @@ } }, "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-async": { @@ -4407,9 +5077,9 @@ } }, "node_modules/rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "dependencies": { "tslib": "^2.1.0" } @@ -4461,9 +5131,9 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", + "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -4474,64 +5144,76 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serverless": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.19.0.tgz", - "integrity": "sha512-XqbZ+UhxLjnwnzOEMkecJd68C3P9g9fQGwhHkuQelni3hIjmLlzkVBx6wlxrIBRgAXE9RAllwZvCsi2jZ9h2Ww==", + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.30.1.tgz", + "integrity": "sha512-RDB+4Lrmmy9fXtAw21gUhdT9Q+IT4DrMfIZHRNMQZ6YYuUNrx6HXueFlsVP0WjX4Bhhqcks9H4hJ4/Jzn7y5WA==", "hasInstallScript": true, "dependencies": { - "@serverless/dashboard-plugin": "^6.2.2", + "@serverless/dashboard-plugin": "^6.2.3", "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.6.0", - "ajv": "^8.11.0", + "@serverless/utils": "^6.11.1", + "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "archiver": "^5.3.1", - "aws-sdk": "^2.1147.0", + "aws-sdk": "^2.1352.0", "bluebird": "^3.7.2", "cachedir": "^2.3.0", "chalk": "^4.1.2", "child-process-ext": "^2.1.1", - "ci-info": "^3.3.1", + "ci-info": "^3.8.0", "cli-progress-footer": "^2.3.2", "d": "^1.0.1", - "dayjs": "^1.11.2", + "dayjs": "^1.11.7", "decompress": "^4.2.1", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", + "dotenv": "^16.0.3", + "dotenv-expand": "^10.0.0", "essentials": "^1.2.0", - "ext": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "filesize": "^8.0.7", - "fs-extra": "^9.1.0", + "ext": "^1.7.0", + "fastest-levenshtein": "^1.0.16", + "filesize": "^10.0.7", + "fs-extra": "^10.1.0", "get-stdin": "^8.0.0", "globby": "^11.1.0", - "got": "^11.8.5", - "graceful-fs": "^4.2.10", + "got": "^11.8.6", + "graceful-fs": "^4.2.11", "https-proxy-agent": "^5.0.1", "is-docker": "^2.2.1", "js-yaml": "^4.1.0", - "json-cycle": "^1.3.0", + "json-colorizer": "^2.2.2", + "json-cycle": "^1.4.0", "json-refs": "^3.0.15", "lodash": "^4.17.21", "memoizee": "^0.4.15", "micromatch": "^4.0.5", - "node-fetch": "^2.6.7", + "node-fetch": "^2.6.9", "npm-registry-utilities": "^1.0.0", - "object-hash": "^2.2.0", - "open": "^7.4.2", + "object-hash": "^3.0.0", + "open": "^8.4.2", "path2": "^0.1.0", "process-utils": "^4.0.0", "promise-queue": "^2.2.5", "require-from-string": "^2.0.2", - "semver": "^7.3.7", + "semver": "^7.3.8", "signal-exit": "^3.0.7", + "stream-buffers": "^3.0.2", "strip-ansi": "^6.0.1", "supports-color": "^8.1.1", - "tar": "^6.1.11", + "tar": "^6.1.13", "timers-ext": "^0.1.7", - "type": "^2.6.0", + "type": "^2.7.2", "untildify": "^4.0.0", - "uuid": "^8.3.2", + "uuid": "^9.0.0", + "ws": "^7.5.9", "yaml-ast-parser": "0.0.43" }, "bin": { @@ -4543,23 +5225,20 @@ } }, "node_modules/serverless-domain-manager": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-6.0.3.tgz", - "integrity": "sha512-vwIhxaUpAf32I3fxuY0gHoZKHlPmWXZQZPfbN3kRz7UIo6j7Zf+FlL4dUm5JYWz7B2gPEz1ZPW9mBtPeAVbEAg==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-6.4.4.tgz", + "integrity": "sha512-TrEjJgEY7sLbutWckfOAunduXUsQ/QkiGZwqfpvHttIDnkED10gQM1CJUj2K4UE+ih+QN3rKuHnc6Y6U5OnR0w==", "dependencies": { - "aws-sdk": "^2.1113.0" + "aws-sdk": "^2.1322.0" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "serverless": "<4" + "node": ">=14" } }, "node_modules/serverless-dotenv-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/serverless-dotenv-plugin/-/serverless-dotenv-plugin-4.0.1.tgz", - "integrity": "sha512-PwFPRyHmXransKZMvbdgUkW79hm6RAY9ZZsI2k3NiflUJ/d/j3EbhSshPeRCLSgDeCeBwIg43yUhew0KkXc3zA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/serverless-dotenv-plugin/-/serverless-dotenv-plugin-4.0.2.tgz", + "integrity": "sha512-MOXsSSuJPMAiNp7bVvvCC+ahmEMMohlaPpaVU2w4wFgMVSvs+BU7xIwQGv/7TTMNdjYVS/W2JoS5ZSkCdjHzCg==", "dev": true, "dependencies": { "chalk": "^4.1.2", @@ -4570,15 +5249,6 @@ "serverless": "1 || 2 || pre-3 || 3" } }, - "node_modules/serverless-dotenv-plugin/node_modules/dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/serverless-dotenv-plugin/node_modules/dotenv-expand": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", @@ -4588,6 +5258,21 @@ "node": ">=12" } }, + "node_modules/serverless-dynamodb-local": { + "version": "0.2.40", + "resolved": "https://registry.npmjs.org/serverless-dynamodb-local/-/serverless-dynamodb-local-0.2.40.tgz", + "integrity": "sha512-8wPtFxeJnRKTN3u8x1jG7Cs5VlkO0GkUPfb+DCKIDzjGM5n+qjHXoVsr4YZ/TPwET9kMUgH1Jv39oaEyeSJvYQ==", + "dev": true, + "dependencies": { + "aws-sdk": "^2.7.0", + "bluebird": "^3.4.6", + "dynamodb-localhost": "0.0.9", + "lodash": "^4.17.0" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/serverless-offline": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-8.8.1.tgz", @@ -4626,29 +5311,15 @@ "serverless": "^1.60.0 || 2 || 3" } }, - "node_modules/serverless-offline/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/serverless-plugin-existing-s3": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/serverless-plugin-existing-s3/-/serverless-plugin-existing-s3-2.4.0.tgz", "integrity": "sha512-BsOSOM5X4hFmX2U7WlUWvMooTega4fKGc547OiWTUwHtB/H1nBs5bQJxM4jHJLIODEoVLw8J8O90rlif/yHwuQ==" }, "node_modules/serverless-prune-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/serverless-prune-plugin/-/serverless-prune-plugin-2.0.1.tgz", - "integrity": "sha512-fWttDV5TD3K6g9NRDJUuA/cq0AzAI0ya1FZXQKtCnWFfaGP7CzZHZWzlvnNofqvKdpY8vXtaAiswc6gdHXaTUw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/serverless-prune-plugin/-/serverless-prune-plugin-2.0.2.tgz", + "integrity": "sha512-tW1Q8MAVmhW8KQN+e0AsSVsb9nmRWWj28xBjMwvVC3FbammmtUJT+5nRpmjxJZ6/K/j3OV1Rx8b32md71BwkYQ==", "dev": true, "dependencies": { "bluebird": "^3.7.2" @@ -4686,26 +5357,19 @@ "serverless": "^2.32 || 3" } }, - "node_modules/serverless-python-requirements/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/serverless-python-requirements/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "glob": "^7.1.3" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/serverless/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { - "uuid": "dist/bin/uuid" + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/set-blocking": { @@ -4763,9 +5427,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4790,9 +5454,9 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-git": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.10.0.tgz", - "integrity": "sha512-2w35xrS5rVtAW0g67LqtxCZN5cdddz/woQRfS0OJXaljXEoTychZ4jnE+CQgra/wX4ZvHeiChTUMenCwfIYEYw==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.17.0.tgz", + "integrity": "sha512-JozI/s8jr3nvLd9yn2jzPVHnhVzt7t7QWfcIoDcqRIGN+f1IINGv52xoZti2kkYfoRhhRvzMSNPfogHMp97rlw==", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", @@ -4860,6 +5524,14 @@ "es5-ext": "^0.10.53" } }, + "node_modules/stream-buffers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", + "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==", + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/stream-promise": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz", @@ -4919,6 +5591,18 @@ "node": ">=6" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -4983,19 +5667,19 @@ } }, "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=10" } }, "node_modules/tar-stream": { @@ -5060,9 +5744,9 @@ } }, "node_modules/token-types": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.0.tgz", - "integrity": "sha512-P0rrp4wUpefLncNamWIef62J0v0kQR/GfDVji9WKY7GDCWy5YbVSrKUTam07iWPZQGy0zWNOfstYTykMmPNR7w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" @@ -5100,9 +5784,12 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/trim-repeated": { "version": "1.0.0", @@ -5116,14 +5803,23 @@ } }, "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "node_modules/type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } }, "node_modules/type-fest": { "version": "0.21.3", @@ -5214,15 +5910,36 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" }, + "node_modules/url/node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { "uuid": "dist/bin/uuid" } @@ -5289,6 +6006,25 @@ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -5301,6 +6037,12 @@ "node": ">=8" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5323,21 +6065,21 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { "node": ">=8.3.0" }, @@ -5355,18 +6097,21 @@ } }, "node_modules/xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "dependencies": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "engines": { "node": ">=4.0" } @@ -5380,10 +6125,13 @@ } }, "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/yallist": { "version": "4.0.0", @@ -5417,47 +6165,54 @@ } }, "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/yauzl": { @@ -5469,6 +6224,18 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", @@ -5606,9 +6373,9 @@ } }, "@hapi/hapi": { - "version": "20.2.2", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.2.2.tgz", - "integrity": "sha512-crhU6TIKt7QsksWLYctDBAXogk9PYAm7UzdpETyuBHC2pCa6/+B5NykiOVLG/3FCIgHo/raPVtan8bYtByHORQ==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-20.3.0.tgz", + "integrity": "sha512-zvPSRvaQyF3S6Nev9aiAzko2/hIFZmNSJNcs07qdVaVAvj8dGJSV4fVUuQSnufYJAGiSau+U5LxMLhx79se5WA==", "dev": true, "requires": { "@hapi/accept": "^5.0.1", @@ -5624,9 +6391,9 @@ "@hapi/podium": "^4.1.1", "@hapi/shot": "^5.0.5", "@hapi/somever": "^3.0.0", - "@hapi/statehood": "^7.0.4", - "@hapi/subtext": "^7.0.3", - "@hapi/teamwork": "^5.1.1", + "@hapi/statehood": "^7.0.3", + "@hapi/subtext": "^7.1.0", + "@hapi/teamwork": "^5.1.0", "@hapi/topo": "^5.0.0", "@hapi/validate": "^1.1.1" } @@ -5682,9 +6449,9 @@ } }, "@hapi/pez": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.0.3.tgz", - "integrity": "sha512-mpikYRJjtrbJgdDHG/H9ySqYqwJ+QU/D7FXsYciS9P7NYBXE2ayKDAy3H0ou6CohOCaxPuTV4SZ0D936+VomHA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.1.0.tgz", + "integrity": "sha512-YfB0btnkLB3lb6Ry/1KifnMPBm5ZPfaAHWFskzOMAgDgXgcBgA+zjpIynyEiBfWEz22DBT8o1e2tAaBdlt8zbw==", "dev": true, "requires": { "@hapi/b64": "5.x.x", @@ -5741,9 +6508,9 @@ } }, "@hapi/subtext": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.0.4.tgz", - "integrity": "sha512-Y72moHhbRuO8kwBHFEnCRw7oOnhNh4Pl+aonxAze18jkyMpE4Gwz4lNID7ei8vd3lpXC2rKdkxXJgtfY+WttRw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.1.0.tgz", + "integrity": "sha512-n94cU6hlvsNRIpXaROzBNEJGwxC+HA69q769pChzej84On8vsU14guHDub7Pphr/pqn5b93zV3IkMPDU5AUiXA==", "dev": true, "requires": { "@hapi/boom": "9.x.x", @@ -5751,7 +6518,7 @@ "@hapi/content": "^5.0.2", "@hapi/file": "2.x.x", "@hapi/hoek": "9.x.x", - "@hapi/pez": "^5.0.1", + "@hapi/pez": "^5.1.0", "@hapi/wreck": "17.x.x" } }, @@ -5843,32 +6610,52 @@ } }, "@serverless/dashboard-plugin": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.2.tgz", - "integrity": "sha512-h3zOprpuWZCdAP7qoOKT2nboB+AaxMkGoSzOD0jIBpt9s0cXqLE2VFjR2vKn8Cvam47Qa3XYnT2/XN6tR6rZgQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.3.tgz", + "integrity": "sha512-iTZhpZbiVl6G2AyfgoqxemqqpG4pUceWys3GsyZtjimnfnGd2UFBOMVUMTavLhYia7lQc4kQVuXQ+afLlkg+pQ==", "requires": { "@serverless/event-mocks": "^1.1.1", "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.0.3", + "@serverless/utils": "^6.8.2", "child-process-ext": "^2.1.1", "chokidar": "^3.5.3", "flat": "^5.0.2", "fs-extra": "^9.1.0", "js-yaml": "^4.1.0", - "jszip": "^3.9.1", + "jszip": "^3.10.1", "lodash": "^4.17.21", "memoizee": "^0.4.15", - "ncjsm": "^4.3.0", + "ncjsm": "^4.3.2", "node-dir": "^0.1.17", - "node-fetch": "^2.6.7", + "node-fetch": "^2.6.8", "open": "^7.4.2", - "semver": "^7.3.7", - "simple-git": "^3.7.0", - "type": "^2.6.0", + "semver": "^7.3.8", + "simple-git": "^3.16.0", + "type": "^2.7.2", "uuid": "^8.3.2", "yamljs": "^0.3.0" }, "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -5923,34 +6710,29 @@ "argparse": "^1.0.7", "esprima": "^4.0.0" } - }, - "querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" } } }, "@serverless/utils": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.6.0.tgz", - "integrity": "sha512-+zw5m41L44psgKh9Snj0tVaXKI2mg/MW2l7VlySjAEK5jqLKHNmFMw0n2oD75nbaJvr2xYhc05wmeFdLqVF6Sw==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.11.1.tgz", + "integrity": "sha512-HIPGwxUOtmJWTsXamJ9P3IYmvpI548c6moY+n4672a6HHo6xK2sShrQVtlJUkosMqvki30LDceydsTtHruVX3w==", "requires": { "archive-type": "^4.0.0", "chalk": "^4.1.2", - "ci-info": "^3.3.1", - "cli-progress-footer": "^2.3.1", + "ci-info": "^3.8.0", + "cli-progress-footer": "^2.3.2", "content-disposition": "^0.5.4", "d": "^1.0.1", "decompress": "^4.2.1", "event-emitter": "^0.3.5", - "ext": "^1.6.0", + "ext": "^1.7.0", "ext-name": "^5.0.0", - "file-type": "^16.5.3", + "file-type": "^16.5.4", "filenamify": "^4.3.0", "get-stream": "^6.0.1", - "got": "^11.8.3", - "inquirer": "^8.2.4", + "got": "^11.8.6", + "inquirer": "^8.2.5", "js-yaml": "^4.1.0", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", @@ -5958,16 +6740,17 @@ "log-node": "^8.0.3", "make-dir": "^3.1.0", "memoizee": "^0.4.15", - "ncjsm": "^4.3.0", - "node-fetch": "^2.6.7", - "open": "^7.4.2", + "ms": "^2.1.3", + "ncjsm": "^4.3.2", + "node-fetch": "^2.6.9", + "open": "^8.4.2", "p-event": "^4.2.0", "supports-color": "^8.1.1", "timers-ext": "^0.1.7", - "type": "^2.6.0", + "type": "^2.7.2", "uni-global": "^1.0.0", "uuid": "^8.3.2", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^4.0.2" }, "dependencies": { "jwt-decode": { @@ -6001,14 +6784,14 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "requires": { "@types/http-cache-semantics": "*", - "@types/keyv": "*", + "@types/keyv": "^3.1.4", "@types/node": "*", - "@types/responselike": "*" + "@types/responselike": "^1.0.0" } }, "@types/http-cache-semantics": { @@ -6016,11 +6799,6 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, - "@types/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==" - }, "@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", @@ -6030,14 +6808,14 @@ } }, "@types/lodash": { - "version": "4.14.182", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", - "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==" + "version": "4.14.192", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", + "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==" }, "@types/node": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.1.tgz", - "integrity": "sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==" + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" }, "@types/responselike": { "version": "1.0.0", @@ -6063,9 +6841,9 @@ } }, "adm-zip": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.9.tgz", - "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==" + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==" }, "agent-base": { "version": "6.0.2", @@ -6076,9 +6854,9 @@ } }, "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -6103,6 +6881,12 @@ "string-width": "^4.1.0" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -6125,9 +6909,9 @@ } }, "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6186,9 +6970,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6229,6 +7013,12 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -6244,10 +7034,15 @@ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "aws-sdk": { - "version": "2.1167.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1167.0.tgz", - "integrity": "sha512-hUJzAqWVfNYpct1S+GjyPIc2s+GZcAhbWVqIG4qbLYZ3+sBTcjv3lLH5zx7K+qcTGINDU0g4EsMi6hIrAU+blg==", + "version": "2.1356.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1356.0.tgz", + "integrity": "sha512-At7/tPJrAxlSIuyv/KpjgoNZSVp4y6nmrfcf89xe4KTR3+SRXnX4X0646bkCyU58jjSguqPjSJopsAFK16jdjg==", "requires": { "buffer": "4.9.2", "events": "1.1.1", @@ -6256,8 +7051,21 @@ "querystring": "0.2.0", "sax": "1.2.1", "url": "0.10.3", + "util": "^0.12.4", "uuid": "8.0.0", - "xml2js": "0.4.19" + "xml2js": "0.5.0" + }, + "dependencies": { + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==" + } } }, "axios": { @@ -6350,6 +7158,12 @@ "fill-range": "^7.0.1" } }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -6449,6 +7263,21 @@ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6473,6 +7302,12 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, "child-process-ext": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", @@ -6506,9 +7341,9 @@ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "ci-info": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.2.tgz", - "integrity": "sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==" + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==" }, "cli-boxes": { "version": "2.2.1", @@ -6551,9 +7386,9 @@ } }, "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.8.0.tgz", + "integrity": "sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==" }, "cli-sprintf-format": { "version": "1.1.1", @@ -6587,27 +7422,14 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } + "wrap-ansi": "^7.0.0" } }, "clone": { @@ -6616,9 +7438,9 @@ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" }, "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "requires": { "mimic-response": "^1.0.0" } @@ -6654,15 +7476,6 @@ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, - "compress-brotli": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", - "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", - "requires": { - "@types/json-buffer": "~3.0.0", - "json-buffer": "~3.0.1" - } - }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -6688,9 +7501,9 @@ } }, "cookiejar": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", - "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" }, "core-util-is": { "version": "1.0.3", @@ -6712,19 +7525,18 @@ } }, "cron-parser": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz", - "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.8.1.tgz", + "integrity": "sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==", "dev": true, "requires": { - "is-nan": "^1.3.2", - "luxon": "^1.26.0" + "luxon": "^3.2.1" }, "dependencies": { "luxon": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz", - "integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", "dev": true } } @@ -6771,9 +7583,9 @@ } }, "dayjs": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz", - "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A==" + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" }, "debug": { "version": "4.3.4", @@ -6781,12 +7593,19 @@ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true }, "decompress": { @@ -6861,9 +7680,9 @@ "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6966,10 +7785,19 @@ } } }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "requires": { "clone": "^1.0.2" } @@ -6991,15 +7819,10 @@ "timers-ext": "^0.1.7" } }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" }, "delayed-stream": { "version": "1.0.0", @@ -7007,14 +7830,20 @@ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha512-K7i4zNfT2kgQz3GylDw40ot9GAE47sFZ9EXHFSPP6zONLgH6kWXE0KWJchkbQJLBkRazq4APwZ4OwiFFlT95OQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "requires": { "asap": "^2.0.0", "wrappy": "1" } }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7024,14 +7853,14 @@ } }, "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" }, "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==" }, "duration": { "version": "0.2.2", @@ -7042,6 +7871,88 @@ "es5-ext": "~0.10.46" } }, + "dynamodb-localhost": { + "version": "git+ssh://git@github.com/99x/dynamodb-localhost.git#db30898f8c40932c7177be7b2f1a81360d12876d", + "integrity": "sha512-l5jXRVXI7j0553YMXeyj91DhqYZaCVhg2o0sCJXI1N9sbuAoM8KMO9WqP8DxCZC+XirdDfGH0X9+orty2DmxFw==", + "dev": true, + "from": "dynamodb-localhost@https://github.com/99x/dynamodb-localhost#db30898f8c40932c7177be7b2f1a81360d12876d", + "requires": { + "chai": "^4.2.0", + "mkdirp": "^1.0.4", + "mocha": "^10.2.0", + "progress": "^1.1.8", + "rimraf": "^2.6.3", + "tar": "^4.4.19" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dev": true, + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + } + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -7065,9 +7976,9 @@ } }, "es5-ext": { - "version": "0.10.61", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz", - "integrity": "sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA==", + "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "requires": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -7085,26 +7996,16 @@ } }, "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - }, - "dependencies": { - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg==", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - } + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" } }, "es6-symbol": { @@ -7127,6 +8028,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -7241,11 +8148,11 @@ } }, "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "requires": { - "type": "^2.5.0" + "type": "^2.7.2" } }, "ext-list": { @@ -7281,9 +8188,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -7298,14 +8205,14 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" }, "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "requires": { "reusify": "^1.0.4" } @@ -7327,9 +8234,9 @@ } }, "file-type": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.3.tgz", - "integrity": "sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==", + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", "requires": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", @@ -7352,9 +8259,9 @@ } }, "filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==" + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.7.tgz", + "integrity": "sha512-iMRG7Qo9nayLoU3PNCiLizYtsy4W1ClrapeCwEgtiQelOAOuRJiw4QaLI+sSr8xr901dgHv+EYP2bCusGZgoiA==" }, "fill-range": { "version": "7.0.1", @@ -7374,12 +8281,12 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "requires": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, @@ -7389,9 +8296,17 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } }, "form-data": { "version": "4.0.0", @@ -7404,21 +8319,14 @@ } }, "formidable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.0.1.tgz", - "integrity": "sha512-rjTMNbp2BpfQShhFbR3Ruk3qk2y9jKpvMW78nJgx8QKtxjDVrwbZG+wvDOmVbifHyOUOQJXxqEy6r0faRrPzTQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz", + "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==", "requires": { - "dezalgo": "1.0.3", - "hexoid": "1.0.0", - "once": "1.4.0", - "qs": "6.9.3" - }, - "dependencies": { - "qs": { - "version": "6.9.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", - "integrity": "sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==" - } + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" } }, "fs-constants": { @@ -7427,11 +8335,10 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "requires": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" @@ -7443,6 +8350,16 @@ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } } }, "fs.realpath": { @@ -7481,10 +8398,16 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -7515,13 +8438,121 @@ } }, "glob-all": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.0.tgz", - "integrity": "sha512-30gCh9beSb+YSAh0vsoIlBRm4bSlyMa+5nayax1EJhjwYrCohX0aDxcxvWVe3heOrJikbHgRs75Af6kPLcumew==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.3.1.tgz", + "integrity": "sha512-Y+ESjdI7ZgMwfzanHZYQ87C59jOO0i+Hd+QYtVt9PhLi6d8wlOpzQnfBxWUlaTuAoR3TkybLqqbIoWveU4Ji7Q==", "dev": true, "requires": { - "glob": "^7.1.2", + "glob": "^7.2.3", "yargs": "^15.3.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } } }, "glob-parent": { @@ -7545,10 +8576,18 @@ "slash": "^3.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "requires": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -7564,9 +8603,9 @@ } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "graphlib": { "version": "2.1.8", @@ -7589,29 +8628,34 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, "hexoid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "http2-wrapper": { "version": "1.0.3", @@ -7651,9 +8695,9 @@ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "immediate": { "version": "3.0.6", @@ -7680,9 +8724,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", + "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -7701,6 +8745,15 @@ "wrap-ansi": "^7.0.0" } }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -7709,6 +8762,11 @@ "binary-extensions": "^2.0.0" } }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -7724,6 +8782,14 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7737,16 +8803,6 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, - "is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -7787,6 +8843,18 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -7852,10 +8920,65 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, + "json-colorizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-2.2.2.tgz", + "integrity": "sha512-56oZtwV1piXrQnRNTtJeqRv+B9Y/dXAYLqBBaYl/COcUdoZxgLBLAO88+CnkbT6MxNs0c5E9mPBIb2sFcNz3vw==", + "requires": { + "chalk": "^2.4.1", + "lodash.get": "^4.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "json-cycle": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.3.0.tgz", - "integrity": "sha512-FD/SedD78LCdSvJaOUQAXseT8oQBb5z6IVYaQaCrVUlu9zOAr1BDdKyVYQaSD/GDsAMrXpKcOyBD4LIl8nfjHw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/json-cycle/-/json-cycle-1.4.0.tgz", + "integrity": "sha512-rU9PIQLyR7sSoefX9OjU8eoTOg0Ulzx5mVvNzplTe6WZTSvEYurxtC+Ar1wGC4Busiq+1vL6g42GproF4HQcEQ==" }, "json-refs": { "version": "3.0.15", @@ -7955,9 +9078,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8010,11 +9133,10 @@ "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==" }, "keyv": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.3.2.tgz", - "integrity": "sha512-kn8WmodVBe12lmHpA6W8OY7SNh6wVR+Z+wZESF4iF5FCazaVXGWOtnbnvX0tMQ1bO+/TmOD9LziuYMvrIIs0xw==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "requires": { - "compress-brotli": "^1.3.8", "json-buffer": "3.0.1" } }, @@ -8027,9 +9149,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -8064,12 +9186,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" } }, "lodash": { @@ -8095,8 +9217,7 @@ "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, "lodash.includes": { "version": "4.3.0", @@ -8200,6 +9321,15 @@ "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", "dev": true }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -8222,9 +9352,9 @@ } }, "luxon": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.4.0.tgz", - "integrity": "sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", + "integrity": "sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==", "dev": true }, "make-dir": { @@ -8327,13 +9457,16 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "requires": { - "yallist": "^4.0.0" - } + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==" }, "minizlib": { "version": "2.1.2", @@ -8342,6 +9475,16 @@ "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } } }, "mkdirp": { @@ -8349,34 +9492,122 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } + } + } + } + }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, "native-promise-only": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==" }, "ncjsm": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ncjsm/-/ncjsm-4.3.0.tgz", - "integrity": "sha512-oah6YGwb4Ern2alojiMFcjPhE4wvQBw1Ur/kUr2P0ovKdzaF5pCIsGjs0f2y+iZeej0/5Y6OOhQ8j30cTDMEGw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ncjsm/-/ncjsm-4.3.2.tgz", + "integrity": "sha512-6d1VWA7FY31CpI4Ki97Fpm36jfURkVbpktizp8aoVViTZRQgr/0ddmlKerALSSlzfwQRBeSq1qwwVcBJK4Sk7Q==", "requires": { - "builtin-modules": "^3.2.0", + "builtin-modules": "^3.3.0", "deferred": "^0.7.11", - "es5-ext": "^0.10.53", - "es6-set": "^0.1.5", - "ext": "^1.6.0", + "es5-ext": "^0.10.62", + "es6-set": "^0.1.6", + "ext": "^1.7.0", "find-requires": "^1.0.0", "fs2": "^0.3.9", - "type": "^2.5.0" + "type": "^2.7.2" } }, "next-tick": { @@ -8398,20 +9629,20 @@ } }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "requires": { "whatwg-url": "^5.0.0" } }, "node-schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.0.tgz", - "integrity": "sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", "dev": true, "requires": { - "cron-parser": "^3.5.0", + "cron-parser": "^4.2.0", "long-timeout": "0.1.1", "sorted-array-functions": "^1.3.0" } @@ -8463,20 +9694,14 @@ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, "once": { "version": "1.4.0", @@ -8495,12 +9720,13 @@ } }, "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "ora": { @@ -8549,21 +9775,21 @@ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" } }, "p-memoize": { @@ -8619,6 +9845,17 @@ "requires": { "p-limit": "^2.2.2", "p-reflect": "^2.1.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "p-timeout": { @@ -8675,6 +9912,12 @@ "resolved": "https://registry.npmjs.org/path2/-/path2-0.1.0.tgz", "integrity": "sha512-TX+cz8Jk+ta7IvRy2FAej8rdlbrP0+uBIkP/5DTODez/AuL/vSb30KuAdDxGVREXzn8QfAiu5mJYJ1XjbOhEPA==" }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, "peek-readable": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", @@ -8724,6 +9967,12 @@ "type": "^2.1.0" } }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==", + "dev": true + }, "promise-queue": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.5.tgz", @@ -8739,22 +9988,22 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz", + "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==", "requires": { "side-channel": "^1.0.4" } }, "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" }, "queue-microtask": { "version": "1.2.3", @@ -8766,10 +10015,19 @@ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8785,9 +10043,9 @@ } }, "readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "requires": { "minimatch": "^5.1.0" }, @@ -8801,9 +10059,9 @@ } }, "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "requires": { "brace-expansion": "^2.0.1" } @@ -8841,9 +10099,9 @@ "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "requires": { "lowercase-keys": "^2.0.0" } @@ -8869,9 +10127,9 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" @@ -8899,9 +10157,9 @@ } }, "rxjs": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", "requires": { "tslib": "^2.1.0" } @@ -8937,92 +10195,97 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", + "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", "requires": { "lru-cache": "^6.0.0" } }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "serverless": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.19.0.tgz", - "integrity": "sha512-XqbZ+UhxLjnwnzOEMkecJd68C3P9g9fQGwhHkuQelni3hIjmLlzkVBx6wlxrIBRgAXE9RAllwZvCsi2jZ9h2Ww==", + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.30.1.tgz", + "integrity": "sha512-RDB+4Lrmmy9fXtAw21gUhdT9Q+IT4DrMfIZHRNMQZ6YYuUNrx6HXueFlsVP0WjX4Bhhqcks9H4hJ4/Jzn7y5WA==", "requires": { - "@serverless/dashboard-plugin": "^6.2.2", + "@serverless/dashboard-plugin": "^6.2.3", "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.6.0", - "ajv": "^8.11.0", + "@serverless/utils": "^6.11.1", + "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "archiver": "^5.3.1", - "aws-sdk": "^2.1147.0", + "aws-sdk": "^2.1352.0", "bluebird": "^3.7.2", "cachedir": "^2.3.0", "chalk": "^4.1.2", "child-process-ext": "^2.1.1", - "ci-info": "^3.3.1", + "ci-info": "^3.8.0", "cli-progress-footer": "^2.3.2", "d": "^1.0.1", - "dayjs": "^1.11.2", + "dayjs": "^1.11.7", "decompress": "^4.2.1", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", + "dotenv": "^16.0.3", + "dotenv-expand": "^10.0.0", "essentials": "^1.2.0", - "ext": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "filesize": "^8.0.7", - "fs-extra": "^9.1.0", + "ext": "^1.7.0", + "fastest-levenshtein": "^1.0.16", + "filesize": "^10.0.7", + "fs-extra": "^10.1.0", "get-stdin": "^8.0.0", "globby": "^11.1.0", - "got": "^11.8.5", - "graceful-fs": "^4.2.10", + "got": "^11.8.6", + "graceful-fs": "^4.2.11", "https-proxy-agent": "^5.0.1", "is-docker": "^2.2.1", "js-yaml": "^4.1.0", - "json-cycle": "^1.3.0", + "json-colorizer": "^2.2.2", + "json-cycle": "^1.4.0", "json-refs": "^3.0.15", "lodash": "^4.17.21", "memoizee": "^0.4.15", "micromatch": "^4.0.5", - "node-fetch": "^2.6.7", + "node-fetch": "^2.6.9", "npm-registry-utilities": "^1.0.0", - "object-hash": "^2.2.0", - "open": "^7.4.2", + "object-hash": "^3.0.0", + "open": "^8.4.2", "path2": "^0.1.0", "process-utils": "^4.0.0", "promise-queue": "^2.2.5", "require-from-string": "^2.0.2", - "semver": "^7.3.7", + "semver": "^7.3.8", "signal-exit": "^3.0.7", + "stream-buffers": "^3.0.2", "strip-ansi": "^6.0.1", "supports-color": "^8.1.1", - "tar": "^6.1.11", + "tar": "^6.1.13", "timers-ext": "^0.1.7", - "type": "^2.6.0", + "type": "^2.7.2", "untildify": "^4.0.0", - "uuid": "^8.3.2", + "uuid": "^9.0.0", + "ws": "^7.5.9", "yaml-ast-parser": "0.0.43" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - } } }, "serverless-domain-manager": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-6.0.3.tgz", - "integrity": "sha512-vwIhxaUpAf32I3fxuY0gHoZKHlPmWXZQZPfbN3kRz7UIo6j7Zf+FlL4dUm5JYWz7B2gPEz1ZPW9mBtPeAVbEAg==", + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/serverless-domain-manager/-/serverless-domain-manager-6.4.4.tgz", + "integrity": "sha512-TrEjJgEY7sLbutWckfOAunduXUsQ/QkiGZwqfpvHttIDnkED10gQM1CJUj2K4UE+ih+QN3rKuHnc6Y6U5OnR0w==", "requires": { - "aws-sdk": "^2.1113.0" + "aws-sdk": "^2.1322.0" } }, "serverless-dotenv-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/serverless-dotenv-plugin/-/serverless-dotenv-plugin-4.0.1.tgz", - "integrity": "sha512-PwFPRyHmXransKZMvbdgUkW79hm6RAY9ZZsI2k3NiflUJ/d/j3EbhSshPeRCLSgDeCeBwIg43yUhew0KkXc3zA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/serverless-dotenv-plugin/-/serverless-dotenv-plugin-4.0.2.tgz", + "integrity": "sha512-MOXsSSuJPMAiNp7bVvvCC+ahmEMMohlaPpaVU2w4wFgMVSvs+BU7xIwQGv/7TTMNdjYVS/W2JoS5ZSkCdjHzCg==", "dev": true, "requires": { "chalk": "^4.1.2", @@ -9030,12 +10293,6 @@ "dotenv-expand": "^8.0.3" }, "dependencies": { - "dotenv": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz", - "integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==", - "dev": true - }, "dotenv-expand": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-8.0.3.tgz", @@ -9044,6 +10301,18 @@ } } }, + "serverless-dynamodb-local": { + "version": "0.2.40", + "resolved": "https://registry.npmjs.org/serverless-dynamodb-local/-/serverless-dynamodb-local-0.2.40.tgz", + "integrity": "sha512-8wPtFxeJnRKTN3u8x1jG7Cs5VlkO0GkUPfb+DCKIDzjGM5n+qjHXoVsr4YZ/TPwET9kMUgH1Jv39oaEyeSJvYQ==", + "dev": true, + "requires": { + "aws-sdk": "^2.7.0", + "bluebird": "^3.4.6", + "dynamodb-localhost": "https://github.com/99x/dynamodb-localhost#db30898f8c40932c7177be7b2f1a81360d12876d", + "lodash": "^4.17.0" + } + }, "serverless-offline": { "version": "8.8.1", "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-8.8.1.tgz", @@ -9074,19 +10343,6 @@ "semver": "^7.3.7", "velocityjs": "^2.0.6", "ws": "^7.5.7" - }, - "dependencies": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - } } }, "serverless-plugin-existing-s3": { @@ -9095,9 +10351,9 @@ "integrity": "sha512-BsOSOM5X4hFmX2U7WlUWvMooTega4fKGc547OiWTUwHtB/H1nBs5bQJxM4jHJLIODEoVLw8J8O90rlif/yHwuQ==" }, "serverless-prune-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/serverless-prune-plugin/-/serverless-prune-plugin-2.0.1.tgz", - "integrity": "sha512-fWttDV5TD3K6g9NRDJUuA/cq0AzAI0ya1FZXQKtCnWFfaGP7CzZHZWzlvnNofqvKdpY8vXtaAiswc6gdHXaTUw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/serverless-prune-plugin/-/serverless-prune-plugin-2.0.2.tgz", + "integrity": "sha512-tW1Q8MAVmhW8KQN+e0AsSVsb9nmRWWj28xBjMwvVC3FbammmtUJT+5nRpmjxJZ6/K/j3OV1Rx8b32md71BwkYQ==", "dev": true, "requires": { "bluebird": "^3.7.2" @@ -9126,15 +10382,13 @@ "shell-quote": "^1.7.4" }, "dependencies": { - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "glob": "^7.1.3" } } } @@ -9180,9 +10434,9 @@ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" }, "shell-quote": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", - "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, "side-channel": { @@ -9201,9 +10455,9 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-git": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.10.0.tgz", - "integrity": "sha512-2w35xrS5rVtAW0g67LqtxCZN5cdddz/woQRfS0OJXaljXEoTychZ4jnE+CQgra/wX4ZvHeiChTUMenCwfIYEYw==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.17.0.tgz", + "integrity": "sha512-JozI/s8jr3nvLd9yn2jzPVHnhVzt7t7QWfcIoDcqRIGN+f1IINGv52xoZti2kkYfoRhhRvzMSNPfogHMp97rlw==", "requires": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", @@ -9258,6 +10512,11 @@ "es5-ext": "^0.10.53" } }, + "stream-buffers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", + "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==" + }, "stream-promise": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-promise/-/stream-promise-3.2.0.tgz", @@ -9308,6 +10567,12 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -9352,13 +10617,13 @@ } }, "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", + "minipass": "^4.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" @@ -9417,9 +10682,9 @@ } }, "token-types": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.0.tgz", - "integrity": "sha512-P0rrp4wUpefLncNamWIef62J0v0kQR/GfDVji9WKY7GDCWy5YbVSrKUTam07iWPZQGy0zWNOfstYTykMmPNR7w==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", "requires": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" @@ -9438,9 +10703,9 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==" + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==" }, "trim-repeated": { "version": "1.0.0", @@ -9451,14 +10716,20 @@ } }, "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "type": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", - "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true }, "type-fest": { "version": "0.21.3", @@ -9524,18 +10795,35 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" } } }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==" + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" }, "validate-npm-package-name": { "version": "3.0.0", @@ -9590,6 +10878,19 @@ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -9599,6 +10900,12 @@ "string-width": "^4.0.0" } }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -9615,33 +10922,33 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.1.tgz", - "integrity": "sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "requires": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" } }, "ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", "requires": { "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" + "xmlbuilder": "~11.0.0" } }, "xmlbuilder": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==" + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" }, "xtend": { "version": "4.0.2", @@ -9649,9 +10956,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { @@ -9684,38 +10991,42 @@ } }, "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true } } @@ -9729,6 +11040,12 @@ "fd-slicer": "~1.1.0" } }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, "zip-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", diff --git a/package.json b/package.json index 4d6adbb..b97c819 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,14 @@ }, "devDependencies": { "serverless-dotenv-plugin": "^4.0.1", + "serverless-dynamodb-local": "^0.2.40", "serverless-offline": "^8.8.1", "serverless-prune-plugin": "^2.0.1", "serverless-python-requirements": "^6.0.0" + }, + "overrides": { + "serverless-dynamodb-local": { + "dynamodb-localhost": "https://github.com/99x/dynamodb-localhost#db30898f8c40932c7177be7b2f1a81360d12876d" + } } } diff --git a/requirements.txt b/requirements.txt index 56d7003..e7a2c0b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,11 +11,14 @@ cryptography==3.4.8 docopt==0.6.2 docutils==0.18.1 ephem==4.1.3 +exceptiongroup==1.1.1 +greenlet==2.0.2 idna==3.3 importlib-metadata==4.12.0 iniconfig==1.1.1 jmespath==1.0.1 jplephem==2.17 +jsonschema==4.17.3 more-itertools==8.13.0 msgpack==1.0.4 numpy==1.23.0 @@ -25,13 +28,16 @@ psycopg2-binary==2.9.3 py==1.11.0 pycparser==2.21 pyerfa==2.0.0.1 +pyrsistent==0.19.3 PyJWT==2.4.0 pyparsing==3.0.9 pytest==7.1.2 pytest-cov==3.0.0 pytest-env==0.6.2 +pytest-mock==3.10.0 python-dateutil==2.8.2 pytz==2022.1 +PyYAML==6.0 requests==2.28.1 rope==1.2.0 Rx==3.2.0 diff --git a/serverless.yml b/serverless.yml index f82ea57..b68241d 100644 --- a/serverless.yml +++ b/serverless.yml @@ -16,6 +16,7 @@ plugins: - serverless-domain-manager - serverless-prune-plugin - serverless-offline + - serverless-dynamodb-local custom: # This is the 'variable' for the customDomain.basePath value, based on the stage. @@ -25,6 +26,18 @@ custom: dev: dev test: test + dynamodb: + stages: + - dev + - test + - prod + start: + port: 8000 + inMemory: true + migrate: true + serverless-offline: + httpPort: 3000 + # Make sure to first run 'serverless create_domain' customDomain: domainName: 'api.photonranch.org' @@ -145,21 +158,22 @@ resources: # CloudFormation template syntax from here on. Ref: 'ApiGatewayRestApi' StatusCode: '401' -functions: +functions: + authorizerFunc: handler: api/authorizer.auth dummyRequiresAuth: - handler: api/handler.dummy_requires_auth - events: - - http: - path: dummy-requires-auth - method: post - authorizer: - name: authorizerFunc - type: request - resultTtlInSeconds: 0 # Don't cache the policy or other tasks will fail! - cors: true + handler: api/handler.dummy_requires_auth + events: + - http: + path: dummy-requires-auth + method: post + authorizer: + name: authorizerFunc + type: request + resultTtlInSeconds: 0 # Don't cache the policy or other tasks will fail! + cors: true home: handler: api/handler.default events: @@ -300,6 +314,48 @@ functions: method: get cors: true + getWEMA: + handler: api/configs/configs.get_wema_handler + events: + - http: + path: /wemas/{wema_id} + method: get + + getWEMAAndAllPlatforms: + handler: api/configs/configs.get_wema_and_all_platforms_handler + events: + - http: + path: /wemas/{wema_id}/platforms + method: get + + getPlatformAndAssociatedWEMA: + handler: api/configs/configs.get_platform_and_associated_wema_handler + events: + - http: + path: /platforms/{platform_id} + method: get + + writeWEMA: + handler: api/configs/configs.write_wema_handler + events: + - http: + path: /wemas + method: post + + writePlatform: + handler: api/configs/configs.write_platform_handler + events: + - http: + path: /platforms + method: post + + getAllWemas: + handler: api/configs/configs.get_all_wemas_handler + events: + - http: + path: /wemas + method: get + ### RemoteHQ api proxy newRemoteHQBrowser: handler: api/remotehq_helpers.handle_new_remotehq_browser