diff --git a/CMakeLists.txt b/CMakeLists.txt index d86ee74ea..61724da9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -262,6 +262,7 @@ set(OTHER_SOURCE_FILES src/apps/testapps/testH3Memory.c src/apps/testapps/testH3IteratorsInternal.c src/apps/testapps/testMathExtensionsInternal.c + src/apps/testapps/testDescribeH3Error.c src/apps/miscapps/cellToBoundaryHier.c src/apps/miscapps/cellToLatLngHier.c src/apps/miscapps/generateBaseCellNeighbors.c diff --git a/CMakeTests.cmake b/CMakeTests.cmake index a84f1b0d4..26261ec84 100644 --- a/CMakeTests.cmake +++ b/CMakeTests.cmake @@ -213,6 +213,7 @@ add_h3_test(testBaseCellsInternal src/apps/testapps/testBaseCellsInternal.c) add_h3_test(testPentagonIndexes src/apps/testapps/testPentagonIndexes.c) add_h3_test(testH3IteratorsInternal src/apps/testapps/testH3IteratorsInternal.c) add_h3_test(testMathExtensionsInternal src/apps/testapps/testMathExtensionsInternal.c) +add_h3_test(testDescribeH3Error src/apps/testapps/testDescribeH3Error.c) add_h3_test_with_arg(testH3NeighborRotations src/apps/testapps/testH3NeighborRotations.c 0) add_h3_test_with_arg(testH3NeighborRotations src/apps/testapps/testH3NeighborRotations.c 1) @@ -228,9 +229,10 @@ add_h3_test(testGridDistanceExhaustive src/apps/testapps/testGridDistanceExhaust add_h3_test(testH3CellAreaExhaustive src/apps/testapps/testH3CellAreaExhaustive.c) add_h3_test(testCellToBBoxExhaustive src/apps/testapps/testCellToBBoxExhaustive.c) -add_h3_cli_test(testCliCellToLatLng "cellToLatLng -c 8928342e20fffff" "POINT(-122.5003039349 37.5012466151)") -add_h3_cli_test(testCliLatLngToCell "latLngToCell --lat 20 --lng 123 -r 2" "824b9ffffffffff") -add_h3_cli_test(testCliCellToBoundary "cellToBoundary -c 8928342e20fffff" "POLYGON((-122.4990471431 37.4997389893, -122.4979805011 37.5014245698, -122.4992373065 37.5029321860, -122.5015607527 37.5027541980, -122.5026273256 37.5010686174, -122.5013705214 37.4995610248, -122.4990471431 37.4997389893))") +file(GLOB cli_tests tests/cli/*.txt) +foreach(file ${cli_tests}) + include(${file}) +endforeach() if(BUILD_ALLOC_TESTS) add_h3_library(h3WithTestAllocators test_prefix_) diff --git a/src/apps/filters/h3.c b/src/apps/filters/h3.c index db22fd57d..e11c002b3 100644 --- a/src/apps/filters/h3.c +++ b/src/apps/filters/h3.c @@ -21,6 +21,8 @@ #include +#include "h3api.h" + #ifdef _WIN32 #define strcasecmp _stricmp @@ -41,29 +43,83 @@ return E_SUCCESS; \ } +#define SUBCOMMAND(name, help) \ + Arg name##Arg = {.names = {#name}, .helpText = help}; \ + H3Error name##Cmd(int argc, char *argv[]) + +struct Subcommand { + char *name; + Arg *arg; + H3Error (*subcommand)(int, char **); +}; + +#define SUBCOMMANDS_INDEX \ + H3Error generalHelp(int argc, char *argv[]); \ + struct Subcommand subcommands[] = { +#define SUBCOMMAND_INDEX(s) {.name = #s, .arg = &s##Arg, .subcommand = &s##Cmd}, + +#define END_SUBCOMMANDS_INDEX \ + {.name = "--help", .arg = &helpArg, .subcommand = generalHelp}, { \ + .name = "-h", .arg = &helpArg, .subcommand = generalHelp \ + } \ + } \ + ; \ + \ + H3Error generalHelp(int argc, char *argv[]) { \ + int arglen = sizeof(subcommands) / sizeof(subcommands[0]) - 1; \ + Arg **args = calloc(arglen, sizeof(Arg *)); \ + if (args == NULL) { \ + fprintf(stderr, "Failed to allocate memory for argument parsing"); \ + exit(1); \ + } \ + args[0] = &helpArg; \ + for (int i = 0; i < arglen - 1; i++) { \ + args[i + 1] = subcommands[i].arg; \ + } \ + \ + const char *helpText = \ + "Please use one of the subcommands listed to perform an H3 " \ + "calculation. Use h3 --help for details on the " \ + "usage of " \ + "any subcommand."; \ + if (parseArgs(argc, argv, arglen, args, &helpArg, helpText)) { \ + free(args); \ + return E_SUCCESS; \ + } else { \ + free(args); \ + return E_FAILED; \ + } \ + } + +#define DISPATCH_SUBCOMMAND() \ + for (int i = 0; i < sizeof(subcommands) / sizeof(subcommands[0]); i++) { \ + if (has(subcommands[i].name, 1, argv)) { \ + H3Error err = subcommands[i].subcommand(argc, argv); \ + if (err != 0) { \ + fprintf(stderr, "Error %i: %s\n", err, \ + H3_EXPORT(describeH3Error)(err)); \ + } \ + return err; \ + } \ + } + bool has(char *subcommand, int level, char *argv[]) { return strcasecmp(subcommand, argv[level]) == 0; } Arg helpArg = ARG_HELP; -Arg cellToLatLngArg = { - .names = {"cellToLatLng"}, - .helpText = "Convert an H3 cell to a WKT POINT coordinate", -}; -Arg latLngToCellArg = { - .names = {"latLngToCell"}, - .helpText = "Convert degrees latitude/longitude coordinate to an H3 cell.", -}; -Arg cellToBoundaryArg = { - .names = {"cellToBoundary"}, - .helpText = "Convert an H3 cell to a WKT POLYGON defining its boundary", -}; -H3Error cellToLatLngCmd(int argc, char *argv[]) { +/// Indexing subcommands + +SUBCOMMAND(cellToLatLng, "Convert an H3Cell to a WKT POINT coordinate") { DEFINE_CELL_ARG(cell, cellArg); Arg *args[] = {&cellToLatLngArg, &helpArg, &cellArg}; PARSE_SUBCOMMAND(argc, argv, args); LatLng ll; + int valid = H3_EXPORT(isValidCell)(cell); + if (valid == 0) { + return E_CELL_INVALID; + } H3Error err = H3_EXPORT(cellToLatLng)(cell, &ll); if (err) { return err; @@ -75,7 +131,8 @@ H3Error cellToLatLngCmd(int argc, char *argv[]) { return E_SUCCESS; } -H3Error latLngToCellCmd(int argc, char *argv[]) { +SUBCOMMAND(latLngToCell, + "Convert degrees latitude/longitude coordinate to an H3 cell") { int res = 0; double lat = 0; double lng = 0; @@ -117,11 +174,16 @@ H3Error latLngToCellCmd(int argc, char *argv[]) { return e; } -H3Error cellToBoundaryCmd(int argc, char *argv[]) { +SUBCOMMAND(cellToBoundary, + "Convert an H3 cell to a WKT POLYGON defining its boundary") { DEFINE_CELL_ARG(cell, cellArg); Arg *args[] = {&cellToBoundaryArg, &helpArg, &cellArg}; PARSE_SUBCOMMAND(argc, argv, args); CellBoundary cb; + int valid = H3_EXPORT(isValidCell)(cell); + if (valid == 0) { + return E_CELL_INVALID; + } H3Error err = H3_EXPORT(cellToBoundary)(cell, &cb); if (err) { return err; @@ -140,35 +202,566 @@ H3Error cellToBoundaryCmd(int argc, char *argv[]) { return E_SUCCESS; } -bool generalHelp(int argc, char *argv[]) { - Arg *args[] = {&helpArg, &cellToLatLngArg, &latLngToCellArg, - &cellToBoundaryArg}; +/// Inspection subcommands + +SUBCOMMAND(getResolution, "Extracts the resolution (0 - 15) from the H3 cell") { + DEFINE_CELL_ARG(cell, cellArg); + Arg *args[] = {&getResolutionArg, &helpArg, &cellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + // TODO: Should there be a general `isValidIndex`? + H3Error cellErr = H3_EXPORT(isValidCell)(cell); + H3Error edgeErr = H3_EXPORT(isValidDirectedEdge)(cell); + H3Error vertErr = H3_EXPORT(isValidVertex)(cell); + if (cellErr && edgeErr && vertErr) { + return cellErr; + } + // If we got here, we can use `getResolution` safely, as this is one of the + // few functions that doesn't do any error handling (for some reason? I + // don't see how this would ever be in a hot loop anywhere. + int res = H3_EXPORT(getResolution)(cell); + printf("%i", res); + return E_SUCCESS; +} + +SUBCOMMAND(getBaseCellNumber, + "Extracts the base cell number (0 - 121) from the H3 cell") { + DEFINE_CELL_ARG(cell, cellArg); + Arg *args[] = {&getBaseCellNumberArg, &helpArg, &cellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + // TODO: Should there be a general `isValidIndex`? + H3Error cellErr = H3_EXPORT(isValidCell)(cell); + H3Error edgeErr = H3_EXPORT(isValidDirectedEdge)(cell); + H3Error vertErr = H3_EXPORT(isValidVertex)(cell); + if (cellErr && edgeErr && vertErr) { + return cellErr; + } + // If we got here, we can use `getResolution` safely, as this is one of the + // few functions that doesn't do any error handling (for some reason? I + // don't see how this would ever be in a hot loop anywhere. + int baseCell = H3_EXPORT(getBaseCellNumber)(cell); + printf("%i", baseCell); + return E_SUCCESS; +} - const char *helpText = - "Please use one of the subcommands listed to perform an H3 " - "calculation. Use h3 --help for details on the usage of " - "any subcommand."; - return parseArgs(argc, argv, sizeof(args) / sizeof(Arg *), args, &helpArg, - helpText); +SUBCOMMAND(stringToInt, "Converts an H3 index in string form to integer form") { + char *rawCell = calloc(16, sizeof(char)); + if (rawCell == NULL) { + fprintf(stderr, "Failed to allocate memory for the H3 index"); + exit(1); + } + Arg rawCellArg = {.names = {"-c", "--cell"}, + .required = true, + .scanFormat = "%s", + .valueName = "cell", + .value = rawCell, + .helpText = "H3 Cell Index"}; + Arg *args[] = {&stringToIntArg, &helpArg, &rawCellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + H3Index c; + H3Error err = H3_EXPORT(stringToH3)(rawCell, &c); + if (err) { + free(rawCell); + return err; + } + printf("%" PRIu64, c); + free(rawCell); + return E_SUCCESS; } -int main(int argc, char *argv[]) { - if (argc <= 1) { - printf("Please use h3 --help to see how to use this command.\n"); - return 1; +SUBCOMMAND(intToString, "Converts an H3 index in int form to string form") { + H3Index rawCell; + Arg rawCellArg = {.names = {"-c", "--cell"}, + .required = true, + .scanFormat = "%" PRIu64, + .valueName = "cell", + .value = &rawCell, + .helpText = "H3 Cell Index"}; + Arg *args[] = {&intToStringArg, &helpArg, &rawCellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + h3Println(rawCell); + return E_SUCCESS; +} + +SUBCOMMAND(isValidCell, "Checks if the provided H3 index is actually valid") { + DEFINE_CELL_ARG(cell, cellArg); + Arg *args[] = {&isValidCellArg, &helpArg, &cellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + bool isValid = H3_EXPORT(isValidCell)(cell); + printf("%s", isValid ? "true" : "false"); + return E_SUCCESS; +} + +SUBCOMMAND(isResClassIII, + "Checks if the provided H3 index has a Class III orientation") { + DEFINE_CELL_ARG(cell, cellArg); + Arg *args[] = {&isResClassIIIArg, &helpArg, &cellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + // TODO: Should there be a general `isValidIndex`? + H3Error cellErr = H3_EXPORT(isValidCell)(cell); + H3Error edgeErr = H3_EXPORT(isValidDirectedEdge)(cell); + H3Error vertErr = H3_EXPORT(isValidVertex)(cell); + if (cellErr && edgeErr && vertErr) { + return cellErr; + } + // If we got here, we can use `getResolution` safely, as this is one of the + // few functions that doesn't do any error handling (for some reason? I + // don't see how this would ever be in a hot loop anywhere. + bool isClassIII = H3_EXPORT(isResClassIII)(cell); + printf("%s", isClassIII ? "true" : "false"); + return E_SUCCESS; +} + +SUBCOMMAND( + isPentagon, + "Checks if the provided H3 index is a pentagon instead of a hexagon") { + DEFINE_CELL_ARG(cell, cellArg); + Arg *args[] = {&isPentagonArg, &helpArg, &cellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + // TODO: Should there be a general `isValidIndex`? + H3Error cellErr = H3_EXPORT(isValidCell)(cell); + H3Error edgeErr = H3_EXPORT(isValidDirectedEdge)(cell); + H3Error vertErr = H3_EXPORT(isValidVertex)(cell); + if (cellErr && edgeErr && vertErr) { + return cellErr; + } + // If we got here, we can use `getResolution` safely, as this is one of the + // few functions that doesn't do any error handling (for some reason? I + // don't see how this would ever be in a hot loop anywhere. + bool is = H3_EXPORT(isPentagon)(cell); + printf("%s", is ? "true" : "false"); + return E_SUCCESS; +} + +SUBCOMMAND(getIcosahedronFaces, + "Returns the icosahedron face numbers (0 - 19) that the H3 index " + "intersects") { + DEFINE_CELL_ARG(cell, cellArg); + Arg *args[] = {&getIcosahedronFacesArg, &helpArg, &cellArg}; + PARSE_SUBCOMMAND(argc, argv, args); + int faceCount; + H3Error err = H3_EXPORT(maxFaceCount)(cell, &faceCount); + if (err) { + return err; + } + int *faces = calloc(faceCount, sizeof(int)); + if (faces == NULL) { + fprintf(stderr, "Failed to allocate memory for the icosahedron faces"); + exit(1); + } + err = H3_EXPORT(getIcosahedronFaces)(cell, faces); + if (err) { + free(faces); + return err; + } + bool hasPrinted = false; + for (int i = 0; i < faceCount - 1; i++) { + if (faces[i] != -1) { + if (hasPrinted) { + printf(", "); + } + printf("%i", faces[i]); + hasPrinted = true; + } + } + if (faces[faceCount - 1] != -1) { + if (hasPrinted) { + printf(", "); + } + printf("%i", faces[faceCount - 1]); + } + free(faces); + return E_SUCCESS; +} + +/// Traversal subcommands + +SUBCOMMAND( + gridDisk, + "Returns a JSON array of a H3 cells within 'k' steps of the origin cell") { + DEFINE_CELL_ARG(cell, cellArg); + int k = 0; + Arg kArg = {.names = {"-k"}, + .required = true, + .scanFormat = "%d", + .valueName = "distance", + .value = &k, + .helpText = "Maximum grid distance for the output set"}; + Arg *args[] = {&gridDiskArg, &helpArg, &cellArg, &kArg}; + PARSE_SUBCOMMAND(argc, argv, args); + int64_t len = 0; + H3Error err = H3_EXPORT(maxGridDiskSize)(k, &len); + if (err) { + return err; + } + H3Index *out = calloc(len, sizeof(H3Index)); + if (out == NULL) { + fprintf(stderr, "Failed to allocate memory for the output H3 cells"); + exit(1); + } + err = H3_EXPORT(gridDisk)(cell, k, out); + if (err) { + free(out); + return err; + } + // Since we don't know *actually* how many cells are in the output (usually + // the max, but sometimes not), we need to do a quick scan to figure out the + // true length in order to properly serialize to a JSON array + int64_t trueLen = 0; + for (int64_t i = 0; i < len; i++) { + if (out[i] != 0) { + trueLen++; + } + } + printf("[ "); + for (int64_t i = 0, j = 0; i < len; i++) { + if (out[i] != 0) { + j++; + printf("\"%" PRIx64 "\"%s", out[i], j == trueLen ? "" : ", "); + } + } + free(out); + printf(" ]\n"); + return E_SUCCESS; +} + +SUBCOMMAND( + gridDiskDistances, + "Returns a JSON array of arrays of H3 cells, each array containing cells " + "'k' steps away from the origin cell, based on the outer array index") { + DEFINE_CELL_ARG(cell, cellArg); + int k = 0; + Arg kArg = {.names = {"-k"}, + .required = true, + .scanFormat = "%d", + .valueName = "distance", + .value = &k, + .helpText = "Maximum grid distance for the output set"}; + Arg prettyArg = { + .names = {"-p", "--pretty-print"}, + .required = false, + .helpText = + "Determine if the JSON output should be pretty printed or not"}; + Arg *args[] = {&gridDiskDistancesArg, &helpArg, &cellArg, &kArg, + &prettyArg}; + PARSE_SUBCOMMAND(argc, argv, args); + bool pretty = prettyArg.found; + int64_t len = 0; + H3Error err = H3_EXPORT(maxGridDiskSize)(k, &len); + if (err) { + return err; + } + H3Index *out = calloc(len, sizeof(H3Index)); + if (out == NULL) { + fprintf(stderr, "Failed to allocate memory for the H3 cells"); + exit(1); + } + int *distances = calloc(len, sizeof(int)); + if (distances == NULL) { + fprintf(stderr, "Failed to allocate memory for the distances"); + exit(1); } - if (has("cellToLatLng", 1, argv)) { - return cellToLatLngCmd(argc, argv); + err = H3_EXPORT(gridDiskDistances)(cell, k, out, distances); + if (err) { + free(out); + free(distances); + return err; + } + // Man, I wish JSON allowed trailing commas + printf("[%s", pretty ? "\n" : ""); + for (int i = 0; i <= k; i++) { + printf("%s[%s", /* prefix */ pretty ? " " : "", + /* suffix */ pretty ? "\n" : ""); + // We need to figure out how many cells are in each ring. Because of + // pentagons, we can't hardwire this, unfortunately + int count = 0; + for (int j = 0; j < len; j++) { + if (distances[j] == i && out[j] != 0) { + count++; + } + } + // On the second loop, we output cells with a comma except for the last + // one, which we now know + int cellNum = 0; + for (int j = 0; j < len; j++) { + if (distances[j] == i && out[j] != 0) { + cellNum++; + printf("%s\"%" PRIx64 "\"", pretty ? " " : "", out[j]); + if (cellNum == count) { + if (pretty) { + printf("\n"); + } + } else { + printf(",%s", pretty ? "\n" : ""); + } + } + } + // Similarly, we need to check which iteration of the outer array we're + // on and include a comma or not + if (i == k) { + printf("%s]%s", /* prefix */ pretty ? " " : "", + /* suffix */ pretty ? "\n" : ""); + } else { + printf("%s],%s", /* prefix */ pretty ? " " : "", + /* suffix */ pretty ? "\n" : ""); + } + } + printf("]\n"); // Always print the newline here so the terminal prompt gets + // its own line + free(out); + free(distances); + return E_SUCCESS; +} + +SUBCOMMAND(gridRing, + "Returns a JSON array of H3 cells, each cell 'k' steps away from " + "the origin cell") { + DEFINE_CELL_ARG(cell, cellArg); + int k = 0; + Arg kArg = {.names = {"-k"}, + .required = true, + .scanFormat = "%d", + .valueName = "distance", + .value = &k, + .helpText = "Maximum grid distance for the output set"}; + Arg *args[] = {&gridRingArg, &helpArg, &cellArg, &kArg}; + PARSE_SUBCOMMAND(argc, argv, args); + int64_t len = k == 0 ? 1 : 6 * k; // The length is fixed for gridRingUnsafe + // since it doesn't support pentagons + H3Index *out = calloc(len, sizeof(H3Index)); + if (out == NULL) { + fprintf(stderr, "Failed to allocate memory for the output H3 indexes"); + exit(1); } - if (has("latLngToCell", 1, argv)) { - return latLngToCellCmd(argc, argv); + H3Error err = H3_EXPORT(gridRingUnsafe)(cell, k, out); + if (err) { + // For the CLI, we'll just do things less efficiently if there's an + // error here. If you use `gridDiskDistances` and only pay attention to + // the last array, it's equivalent to a "safe" gridRing call, but + // consumes a lot more temporary memory to do it + int64_t templen = 0; + err = H3_EXPORT(maxGridDiskSize)(k, &templen); + if (err) { + // But we abort if anything fails in here + free(out); + return err; + } + H3Index *temp = calloc(templen, sizeof(H3Index)); + if (temp == NULL) { + fprintf(stderr, + "Failed to allocate memory for a temporary hashset of H3 " + "indexes"); + exit(1); + } + int *distances = calloc(templen, sizeof(int)); + if (distances == NULL) { + fprintf(stderr, + "Failed to allocate memory for the distances of the H3 " + "indexes"); + exit(1); + } + err = H3_EXPORT(gridDiskDistances)(cell, k, temp, distances); + if (err) { + free(out); + free(temp); + free(distances); + return err; + } + // Now, we first re-zero the `out` array in case there's garbage + // anywhere in it from the failed computation. Then we scan through the + // gridDisk output and copy the indexes that are the correct distance + // in. We *should* only be in this path when there's a pentagon + // involved, so we expect the true length of the array to be less than + // what was allocated for `out` in this scenario. + for (int i = 0; i < len; i++) { + out[i] = 0; + } + int64_t count = 0; + for (int64_t i = 0; i < templen; i++) { + if (distances[i] == k && temp[i] != 0) { + out[count] = temp[i]; + count++; + } + } + len = count; + free(temp); + free(distances); } - if (has("cellToBoundary", 1, argv)) { - return cellToBoundaryCmd(argc, argv); + // Now that we have the correct data, however we got it, we can print it out + printf("[ \"%" PRIx64 "\"", out[0]); + for (int64_t i = 1; i < len; i++) { + if (out[i] != 0) { + printf(", \"%" PRIx64 "\"", out[i]); + } } - if (generalHelp(argc, argv)) { - return 0; + free(out); + printf(" ]\n"); + return E_SUCCESS; +} + +SUBCOMMAND(gridPathCells, + "Returns a JSON array of H3 cells from the origin cell to the " + "destination cell (inclusive)") { + H3Index origin = 0; + Arg originArg = {.names = {"-o", "--origin"}, + .required = true, + .scanFormat = "%" PRIx64, + .valueName = "cell", + .value = &origin, + .helpText = "The origin H3 cell"}; + H3Index destination = 0; + Arg destinationArg = {.names = {"-d", "--destination"}, + .required = true, + .scanFormat = "%" PRIx64, + .valueName = "cell", + .value = &destination, + .helpText = "The destination H3 cell"}; + Arg *args[] = {&gridPathCellsArg, &helpArg, &originArg, &destinationArg}; + PARSE_SUBCOMMAND(argc, argv, args); + int64_t len = 0; + H3Error err = H3_EXPORT(gridPathCellsSize)(origin, destination, &len); + if (err) { + return err; + } + H3Index *out = calloc(len, sizeof(H3Index)); + if (out == NULL) { + fprintf(stderr, "Failed to allocate memory for the output H3 indexes"); + exit(1); + } + err = H3_EXPORT(gridPathCells)(origin, destination, out); + if (err) { + free(out); + return err; + } + printf("[ \"%" PRIx64 "\"", out[0]); + for (int64_t i = 1; i < len; i++) { + if (out[i] != 0) { + printf(", \"%" PRIx64 "\"", out[i]); + } + } + free(out); + printf(" ]\n"); + return E_SUCCESS; +} + +SUBCOMMAND(gridDistance, + "Returns the number of steps along the grid to move from the origin " + "cell to the destination cell") { + H3Index origin = 0; + Arg originArg = {.names = {"-o", "--origin"}, + .required = true, + .scanFormat = "%" PRIx64, + .valueName = "cell", + .value = &origin, + .helpText = "The origin H3 cell"}; + H3Index destination = 0; + Arg destinationArg = {.names = {"-d", "--destination"}, + .required = true, + .scanFormat = "%" PRIx64, + .valueName = "cell", + .value = &destination, + .helpText = "The destination H3 cell"}; + Arg *args[] = {&gridDistanceArg, &helpArg, &originArg, &destinationArg}; + PARSE_SUBCOMMAND(argc, argv, args); + int64_t distance = 0; + H3Error err = H3_EXPORT(gridDistance)(origin, destination, &distance); + if (err) { + return err; + } + printf("%" PRIx64 "\n", distance); + return E_SUCCESS; +} + +SUBCOMMAND(cellToLocalIj, + "Returns the IJ coordinate for a cell anchored to an origin cell") { + DEFINE_CELL_ARG(cell, cellArg); + H3Index origin = 0; + Arg originArg = {.names = {"-o", "--origin"}, + .required = true, + .scanFormat = "%" PRIx64, + .valueName = "cell", + .value = &origin, + .helpText = "The origin H3 cell"}; + Arg *args[] = {&cellToLocalIjArg, &helpArg, &cellArg, &originArg}; + PARSE_SUBCOMMAND(argc, argv, args); + CoordIJ out = {0}; + H3Error err = H3_EXPORT(cellToLocalIj)(origin, cell, 0, &out); + if (err) { + return err; + } + printf("[%i, %i]\n", out.i, out.j); + return E_SUCCESS; +} + +SUBCOMMAND(localIjToCell, + "Returns the H3 index from a local IJ coordinate anchored to an " + "origin cell") { + H3Index origin = 0; + Arg originArg = {.names = {"-o", "--origin"}, + .required = true, + .scanFormat = "%" PRIx64, + .valueName = "cell", + .value = &origin, + .helpText = "The origin H3 cell"}; + int i, j; + Arg iArg = {.names = {"-i"}, + .required = true, + .scanFormat = "%d", + .valueName = "i", + .value = &i, + .helpText = "The I dimension of the IJ coordinate"}; + Arg jArg = {.names = {"-j"}, + .required = true, + .scanFormat = "%d", + .valueName = "j", + .value = &j, + .helpText = "The J dimension of the IJ coordinate"}; + Arg *args[] = {&localIjToCellArg, &helpArg, &originArg, &iArg, &jArg}; + PARSE_SUBCOMMAND(argc, argv, args); + CoordIJ in = {.i = i, .j = j}; + H3Index out = 0; + H3Error err = H3_EXPORT(localIjToCell)(origin, &in, 0, &out); + if (err) { + return err; + } + h3Println(out); + return E_SUCCESS; +} + +// TODO: Is there any way to avoid this particular piece of duplication? +SUBCOMMANDS_INDEX + +/// Indexing subcommands +SUBCOMMAND_INDEX(cellToLatLng) +SUBCOMMAND_INDEX(latLngToCell) +SUBCOMMAND_INDEX(cellToBoundary) + +/// Inspection subcommands +SUBCOMMAND_INDEX(getResolution) +SUBCOMMAND_INDEX(getBaseCellNumber) +SUBCOMMAND_INDEX(stringToInt) +SUBCOMMAND_INDEX(intToString) +SUBCOMMAND_INDEX(isValidCell) +SUBCOMMAND_INDEX(isResClassIII) +SUBCOMMAND_INDEX(isPentagon) +SUBCOMMAND_INDEX(getIcosahedronFaces) + +/// Traversal subcommands +SUBCOMMAND_INDEX(gridDisk) +SUBCOMMAND_INDEX(gridDiskDistances) +SUBCOMMAND_INDEX(gridRing) +SUBCOMMAND_INDEX(gridPathCells) +SUBCOMMAND_INDEX(gridDistance) +SUBCOMMAND_INDEX(cellToLocalIj) +SUBCOMMAND_INDEX(localIjToCell) + +END_SUBCOMMANDS_INDEX + +int main(int argc, char *argv[]) { + if (argc <= 1) { + printf("Please use h3 --help to see how to use this command.\n"); + return 1; } + DISPATCH_SUBCOMMAND(); printf("Please use h3 --help to see how to use this command.\n"); return 1; } diff --git a/src/apps/fuzzers/README.md b/src/apps/fuzzers/README.md index 392c9c206..c7349e36f 100644 --- a/src/apps/fuzzers/README.md +++ b/src/apps/fuzzers/README.md @@ -13,56 +13,57 @@ The public API of H3 is covered in the following fuzzers: | Function | File or status | -------- | -------------- -| latLngToCell | [fuzzerLatLngToCell](./fuzzerLatLngToCell.c) -| cellToLatLng | [fuzzerCellToLatLng](./fuzzerCellToLatLng.c) +| areNeighborCells | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) +| cellArea | [fuzzerCellArea](./fuzzerCellArea.c) | cellToBoundary | [fuzzerCellToLatLng](./fuzzerCellToLatLng.c) -| gridDisk | [fuzzerGridDisk](./fuzzerGridDisk.c) -| gridDiskDistances | [fuzzerGridDisk](./fuzzerGridDisk.c) -| gridRingUnsafe | [fuzzerGridDisk](./fuzzerGridDisk.c) -| gridDisksUnsafe | [fuzzerGridDisk](./fuzzerGridDisk.c) -| polygonToCells | [fuzzerPoylgonToCells](./fuzzerPolygonToCells.c) -| h3SetToMultiPolygon | [fuzzerH3SetToLinkedGeo](./fuzzerH3SetToLinkedGeo.c) +| cellToCenterChild | [fuzzerHierarchy](./fuzzerHierarchy.c) +| cellToChildPos| [fuzzerCellToChildPos](./fuzzerCellToChildPos.c) +| cellToChildren | [fuzzerHierarchy](./fuzzerHierarchy.c) +| cellToLatLng | [fuzzerCellToLatLng](./fuzzerCellToLatLng.c) +| cellToLocalIj | [fuzzerLocalIj](./fuzzerLocalIj.c) +| cellToParent | [fuzzerHierarchy](./fuzzerHierarchy.c) +| cellToVertex | [fuzzerVertexes](./fuzzerVertexes.c) +| cellToVertexes | [fuzzerVertexes](./fuzzerVertexes.c) +| cellsToDirectedEdge | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) +| childPosToCell| [fuzzerCellToChildPos](./fuzzerCellToChildPos.c) +| compactCells | [fuzzerCompact](./fuzzerCompact.c) | degsToRads | Trivial -| radsToDegs | Trivial +| describeH3Error | Trivial +| directedEdgeToBoundary | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) +| directedEdgeToCells | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) | distance | [fuzzerDistances](./fuzzerDistances.c) +| edgeLength | [fuzzerEdgeLength](./fuzzerEdgeLength.c) +| getBaseCellNumber | [fuzzerCellProperties](./fuzzerCellProperties.c) +| getDirectedEdgeDestination | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) +| getDirectedEdgeOrigin | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) | getHexagonAreaAvg | [fuzzerResolutions](./fuzzerResolutions.c) -| cellArea | [fuzzerCellArea](./fuzzerCellArea.c) | getHexagonEdgeLengthAvg | [fuzzerResolutions](./fuzzerResolutions.c) -| edgeLength | [fuzzerEdgeLength](./fuzzerEdgeLength.c) +| getIcosahedronFaces | [fuzzerCellProperties](./fuzzerCellProperties.c) | getNumCells | [fuzzerResolutions](./fuzzerResolutions.c) -| getRes0Cells | Trivial | getPentagons | [fuzzerResolutions](./fuzzerResolutions.c) +| getRes0Cells | Trivial | getResolution | [fuzzerCellProperties](./fuzzerCellProperties.c) -| getBaseCellNumber | [fuzzerCellProperties](./fuzzerCellProperties.c) -| stringToH3 | [fuzzerIndexIO](./fuzzerIndexIO.c) +| gridDisk | [fuzzerGridDisk](./fuzzerGridDisk.c) +| gridDiskDistances | [fuzzerGridDisk](./fuzzerGridDisk.c) +| gridDisksUnsafe | [fuzzerGridDisk](./fuzzerGridDisk.c) +| gridDistance | [fuzzerLocalIj](./fuzzerLocalIj.c) +| gridPathCells | [fuzzerLocalIj](./fuzzerLocalIj.c) +| gridRingUnsafe | [fuzzerGridDisk](./fuzzerGridDisk.c) +| h3SetToMultiPolygon | [fuzzerH3SetToLinkedGeo](./fuzzerH3SetToLinkedGeo.c) | h3ToString | [fuzzerIndexIO](./fuzzerIndexIO.c) -| isValidCell | [fuzzerCellProperties](./fuzzerCellProperties.c) -| cellToParent | [fuzzerHierarchy](./fuzzerHierarchy.c) -| cellToChildren | [fuzzerHierarchy](./fuzzerHierarchy.c) -| cellToCenterChild | [fuzzerHierarchy](./fuzzerHierarchy.c) -| compactCells | [fuzzerCompact](./fuzzerCompact.c) -| uncompactCells | [fuzzerCompact](./fuzzerCompact.c) -| isResClassIII | [fuzzerCellProperties](./fuzzerCellProperties.c) | isPentagon | [fuzzerCellProperties](./fuzzerCellProperties.c) -| getIcosahedronFaces | [fuzzerCellProperties](./fuzzerCellProperties.c) -| areNeighborCells | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| cellsToDirectedEdge | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) +| isResClassIII | [fuzzerCellProperties](./fuzzerCellProperties.c) +| isValidCell | [fuzzerCellProperties](./fuzzerCellProperties.c) | isValidDirectedEdge | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| getDirectedEdgeOrigin | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| getDirectedEdgeDestination | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| directedEdgeToCells | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| originToDirectedEdges | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| directedEdgeToBoundary | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) -| cellToVertex | [fuzzerVertexes](./fuzzerVertexes.c) -| cellToVertexes | [fuzzerVertexes](./fuzzerVertexes.c) -| vertexToLatLng | [fuzzerVertexes](./fuzzerVertexes.c) | isValidVertex | [fuzzerVertexes](./fuzzerVertexes.c) -| gridDistance | [fuzzerLocalIj](./fuzzerLocalIj.c) -| gridPathCells | [fuzzerLocalIj](./fuzzerLocalIj.c) -| cellToLocalIj | [fuzzerLocalIj](./fuzzerLocalIj.c) +| latLngToCell | [fuzzerLatLngToCell](./fuzzerLatLngToCell.c) | localIjToCell | [fuzzerLocalIj](./fuzzerLocalIj.c) -| cellToChildPos| [fuzzerCellToChildPos](./fuzzerCellToChildPos.c) -| childPosToCell| [fuzzerCellToChildPos](./fuzzerCellToChildPos.c) +| originToDirectedEdges | [fuzzerDirectedEdge](./fuzzerDirectedEdge.c) +| polygonToCells | [fuzzerPoylgonToCells](./fuzzerPolygonToCells.c) +| radsToDegs | Trivial +| stringToH3 | [fuzzerIndexIO](./fuzzerIndexIO.c) +| uncompactCells | [fuzzerCompact](./fuzzerCompact.c) +| vertexToLatLng | [fuzzerVertexes](./fuzzerVertexes.c) ## Internal function coverage diff --git a/src/apps/testapps/testDescribeH3Error.c b/src/apps/testapps/testDescribeH3Error.c new file mode 100644 index 000000000..d275c6abd --- /dev/null +++ b/src/apps/testapps/testDescribeH3Error.c @@ -0,0 +1,51 @@ +/* + * Copyright 2024 Uber Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** @file + * @brief tests H3 function `describeH3Error` + * + * usage: `testDescribeH3Error` + * + * This program confirms that the `describeH3Error` function will provide + * a string output describing the error code (either providing a description + * of the error, or telling you that the error code is itself in error) + */ + +#include + +#include "h3Index.h" +#include "test.h" + +SUITE(describeH3Error) { + TEST(noError) { + H3Error err = E_SUCCESS; + t_assert(strcmp(H3_EXPORT(describeH3Error)(err), "Success") == 0, + "got expected success message"); + } + + TEST(invalidCell) { + H3Error err = E_CELL_INVALID; + t_assert(strcmp(H3_EXPORT(describeH3Error)(err), + "Cell argument was not valid") == 0, + "got expected error message"); + } + + TEST(invalidH3Error) { + H3Error err = 9001; // Will probably never hit this + t_assert( + strcmp(H3_EXPORT(describeH3Error)(err), "Invalid error code") == 0, + "got expected failure message"); + } +} diff --git a/src/h3lib/include/h3api.h.in b/src/h3lib/include/h3api.h.in index 58f6d9e84..5fdbeb41b 100644 --- a/src/h3lib/include/h3api.h.in +++ b/src/h3lib/include/h3api.h.in @@ -104,6 +104,14 @@ typedef enum { E_OPTION_INVALID = 15 // Mode or flags argument was not valid. } H3ErrorCodes; +/** @defgroup describeH3Error describeH3Error + * Functions for describeH3Error + * @{ + */ +/** @brief converts the provided H3Error value into a description string */ +DECLSPEC const char *H3_EXPORT(describeH3Error)(H3Error err); +/** @} */ + /* library version numbers generated from VERSION file */ // clang-format off #define H3_VERSION_MAJOR @H3_VERSION_MAJOR@ diff --git a/src/h3lib/lib/h3Index.c b/src/h3lib/lib/h3Index.c index bccd4baf5..193622caf 100644 --- a/src/h3lib/lib/h3Index.c +++ b/src/h3lib/lib/h3Index.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2021 Uber Technologies, Inc. + * Copyright 2016-2021, 2024 Uber Technologies, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,43 @@ #include "iterators.h" #include "mathExtensions.h" +/** @var H3ErrorDescriptions + * @brief An array of strings describing each of the H3ErrorCodes enum values + */ +static char *H3ErrorDescriptions[] = { + /* E_SUCCESS */ "Success", + /* E_FAILED */ + "The operation failed but a more specific error is not available", + /* E_DOMAIN */ "Argument was outside of acceptable range", + /* E_LATLNG_DOMAIN */ + "Latitude or longitude arguments were outside of acceptable range", + /* E_RES_DOMAIN */ "Resolution argument was outside of acceptable range", + /* E_CELL_INVALID */ "Cell argument was not valid", + /* E_DIR_EDGE_INVALID */ "Directed edge argument was not valid", + /* E_UNDIR_EDGE_INVALID */ "Undirected edge argument was not valid", + /* E_VERTEX_INVALID */ "Vertex argument was not valid", + /* E_PENTAGON */ "Pentagon distortion was encountered", + /* E_DUPLICATE_INPUT */ "Duplicate input", + /* E_NOT_NEIGHBORS */ "Cell arguments were not neighbors", + /* E_RES_MISMATCH */ "Cell arguments had incompatible resolutions", + /* E_MEMORY_ALLOC */ "Memory allocation failed", + /* E_MEMORY_BOUNDS */ "Bounds of provided memory were insufficient", + /* E_OPTION_INVALID */ "Mode or flags argument was not valid"}; + +/** + * Returns the string describing the H3Error. This string is internally + * allocated and should not be `free`d. + * @param err The H3 error. + * @return The string describing the H3Error + */ +const char *H3_EXPORT(describeH3Error)(H3Error err) { + if (err >= 0 && err <= 15) { // TODO: Better way to bounds check here? + return H3ErrorDescriptions[err]; + } else { + return "Invalid error code"; + } +} + /** * Returns the H3 resolution of an H3 index. * @param h The H3 index. diff --git a/tests/cli/cellToBoundary.txt b/tests/cli/cellToBoundary.txt new file mode 100644 index 000000000..43535d658 --- /dev/null +++ b/tests/cli/cellToBoundary.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliCellToBoundary "cellToBoundary -c 8928342e20fffff" "POLYGON((-122.4990471431 37.4997389893, -122.4979805011 37.5014245698, -122.4992373065 37.5029321860, -122.5015607527 37.5027541980, -122.5026273256 37.5010686174, -122.5013705214 37.4995610248, -122.4990471431 37.4997389893))") diff --git a/tests/cli/cellToLatLng.txt b/tests/cli/cellToLatLng.txt new file mode 100644 index 000000000..1fb89fd98 --- /dev/null +++ b/tests/cli/cellToLatLng.txt @@ -0,0 +1,2 @@ +add_h3_cli_test(testCliCellToLatLng "cellToLatLng -c 8928342e20fffff" "POINT(-122.5003039349 37.5012466151)") +add_h3_cli_test(testCliInvalidCellToLatLng "cellToLatLng -c asdf 2>&1" "Error 5: Cell argument was not valid") diff --git a/tests/cli/cellToLocalIj.txt b/tests/cli/cellToLocalIj.txt new file mode 100644 index 000000000..ab3cb7b13 --- /dev/null +++ b/tests/cli/cellToLocalIj.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliCellToLocalIj "cellToLocalIj -o 85283473fffffff -c 8528342bfffffff" "[25, 13]") diff --git a/tests/cli/getBaseCellNumber.txt b/tests/cli/getBaseCellNumber.txt new file mode 100644 index 000000000..51a96dd3f --- /dev/null +++ b/tests/cli/getBaseCellNumber.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGetBaseCellNumber "getBaseCellNumber -c 85283473fffffff" "20") diff --git a/tests/cli/getIcosahedronFaces.txt b/tests/cli/getIcosahedronFaces.txt new file mode 100644 index 000000000..2bba69731 --- /dev/null +++ b/tests/cli/getIcosahedronFaces.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGetIcosahedronFaces "getIcosahedronFaces -c 81743ffffffffff" "3, 8, 13, 9, 4") diff --git a/tests/cli/getResolution.txt b/tests/cli/getResolution.txt new file mode 100644 index 000000000..120d16353 --- /dev/null +++ b/tests/cli/getResolution.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGetResolution "getResolution -c 85283473fffffff" "5") diff --git a/tests/cli/gridDisk.txt b/tests/cli/gridDisk.txt new file mode 100644 index 000000000..7279ab489 --- /dev/null +++ b/tests/cli/gridDisk.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGridDisk "gridDisk -c 85283473fffffff -k 1" "[ \"85283473fffffff\", \"85283447fffffff\", \"8528347bfffffff\", \"85283463fffffff\", \"85283477fffffff\", \"8528340ffffffff\", \"8528340bfffffff\" ]") \ No newline at end of file diff --git a/tests/cli/gridDiskDistances.txt b/tests/cli/gridDiskDistances.txt new file mode 100644 index 000000000..ed59e0d23 --- /dev/null +++ b/tests/cli/gridDiskDistances.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGridDiskDistances "gridDiskDistances -c 85283473fffffff -k 1" "[[\"85283473fffffff\"],[\"85283447fffffff\",\"8528347bfffffff\",\"85283463fffffff\",\"85283477fffffff\",\"8528340ffffffff\",\"8528340bfffffff\"]]") diff --git a/tests/cli/gridDistance.txt b/tests/cli/gridDistance.txt new file mode 100644 index 000000000..422ddee27 --- /dev/null +++ b/tests/cli/gridDistance.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGridDistance "gridDistance -o 85283473fffffff -d 8528342bfffffff" "2") diff --git a/tests/cli/gridPathCells.txt b/tests/cli/gridPathCells.txt new file mode 100644 index 000000000..a5b60d448 --- /dev/null +++ b/tests/cli/gridPathCells.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGridPathCells "gridPathCells -o 85283473fffffff -d 8528342bfffffff" "[ \"85283473fffffff\", \"85283477fffffff\", \"8528342bfffffff\" ]") diff --git a/tests/cli/gridRing.txt b/tests/cli/gridRing.txt new file mode 100644 index 000000000..8fce2524b --- /dev/null +++ b/tests/cli/gridRing.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliGridRing "gridRing -c 85283473fffffff -k 1" "[ \"8528340bfffffff\", \"85283447fffffff\", \"8528347bfffffff\", \"85283463fffffff\", \"85283477fffffff\", \"8528340ffffffff\" ]") diff --git a/tests/cli/intToString.txt b/tests/cli/intToString.txt new file mode 100644 index 000000000..6a96d94f3 --- /dev/null +++ b/tests/cli/intToString.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliIntToString "intToString -c 599686042433355775" "85283473fffffff") diff --git a/tests/cli/isPentagon.txt b/tests/cli/isPentagon.txt new file mode 100644 index 000000000..9e86d888e --- /dev/null +++ b/tests/cli/isPentagon.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliIsPentagon "isPentagon -c 85283473fffffff" "false") diff --git a/tests/cli/isResClassIII.txt b/tests/cli/isResClassIII.txt new file mode 100644 index 000000000..ec31d3110 --- /dev/null +++ b/tests/cli/isResClassIII.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliIsResClassIII "isResClassIII -c 85283473fffffff" "true") diff --git a/tests/cli/isValidCell.txt b/tests/cli/isValidCell.txt new file mode 100644 index 000000000..5de8b85fd --- /dev/null +++ b/tests/cli/isValidCell.txt @@ -0,0 +1,2 @@ +add_h3_cli_test(testCliIsValidCell "isValidCell -c 85283473fffffff" "true") +add_h3_cli_test(testCliIsNotValidCell "isValidCell -c 85283473ffff" "false") diff --git a/tests/cli/latLngToCell.txt b/tests/cli/latLngToCell.txt new file mode 100644 index 000000000..0d682a3bb --- /dev/null +++ b/tests/cli/latLngToCell.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliLatLngToCell "latLngToCell --lat 20 --lng 123 -r 2" "824b9ffffffffff") diff --git a/tests/cli/localIjToCell.txt b/tests/cli/localIjToCell.txt new file mode 100644 index 000000000..3b69d4a2e --- /dev/null +++ b/tests/cli/localIjToCell.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliLocalIjToCell "localIjToCell -o 85283473fffffff -i 25 -j 13" "8528342bfffffff") diff --git a/tests/cli/stringToInt.txt b/tests/cli/stringToInt.txt new file mode 100644 index 000000000..d332f9e1a --- /dev/null +++ b/tests/cli/stringToInt.txt @@ -0,0 +1 @@ +add_h3_cli_test(testCliStringToInt "stringToInt -c 85283473fffffff" "599686042433355775") diff --git a/website/docs/api/misc.mdx b/website/docs/api/misc.mdx index d643f55a8..ffeba3cc9 100644 --- a/website/docs/api/misc.mdx +++ b/website/docs/api/misc.mdx @@ -1057,3 +1057,45 @@ function example() { Gives the "great circle" or "haversine" distance between pairs of LatLng points (lat/lng pairs) in radians. + +## describeH3Error + + + + +```c +char *describeH3Error(H3Error err); +``` + + + + +:::note + +Just read the `.message` property from the caught error, instead. + +::: + +```js live +function example() { + let errorMessage = "" + try { + h3.cellToChildrenSize("asdf", 9); + } catch (e) { + errorMessage = e.message; + } + return errorMessage; +} +``` + + + + +Provides a human-readable description of an H3Error error code. This function cannot fail, as it just returns a string stating that the H3Error value is itself invalid and does not allocate memory to do so. Do not call `free` on the result of this function. diff --git a/website/package.json b/website/package.json index 64b5085db..ab4e9abbb 100644 --- a/website/package.json +++ b/website/package.json @@ -22,7 +22,7 @@ "@mdx-js/react": "^1.6.22", "deck.gl": "^9.0.12", "global": "^4.4.0", - "h3-js": "^4.0.0", + "h3-js": "4.1.0", "h3-jsv3": "npm:h3-js@^3.7.1", "maplibre-gl": "^4.1.3", "prettier": "^3.2.5", diff --git a/website/yarn.lock b/website/yarn.lock index e765161f0..f0385c160 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -1276,42 +1276,41 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@deck.gl/aggregation-layers@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.12.tgz#9e3922932331ae8e3a4424d4911f65779184b116" - integrity sha512-nvIr2oorQ6i/JrY2dtBY6QKTPx3Y437rwQs9JAAwKB1vck2gFsvmGxBmYyfRL5xNep9rIjhd3Vy7oLkuNLCEFQ== +"@deck.gl/aggregation-layers@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.20.tgz#b28b581a9bafca1b63a46ee8d7fccf5ecf5e5b3e" + integrity sha512-EJmW18+GjrNq2Zcz2bf4n70f14LIA/qy7Yfm6i0uRyysybauAceuqTMMR4V4/WeAZZX3zdNJ7dC1BBIx2OvnKg== dependencies: - "@luma.gl/constants" "^9.0.11" - "@luma.gl/shadertools" "^9.0.11" + "@luma.gl/constants" "^9.0.14" + "@luma.gl/shadertools" "^9.0.14" "@math.gl/web-mercator" "^4.0.0" d3-hexbin "^0.2.1" -"@deck.gl/arcgis@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/arcgis/-/arcgis-9.0.12.tgz#b715fa0f3936a2089c2a21047471f1c8bf6e9e1e" - integrity sha512-rzaej6oiSN0g5BxZ2jHm/1uRazpey532LbE/5vjvmOEC4GKAvV5bCFL1LY46701e0jfA5moiUKDpkgY8Kd1NEg== +"@deck.gl/arcgis@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/arcgis/-/arcgis-9.0.20.tgz#7463f3f3085ef6b2f912ca183069a9bb03427578" + integrity sha512-1PS1D6HaVBFbApgg6WXIVT0VnUMK3rogHrBVsYAkLN7GS4hmz/Q+bU2gNznjY2l3FBUSR8/3L0RKoFMEsDsLsQ== dependencies: - "@luma.gl/constants" "^9.0.11" + "@luma.gl/constants" "^9.0.14" esri-loader "^3.7.0" -"@deck.gl/carto@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/carto/-/carto-9.0.12.tgz#bdd50d53423813961ee3259efcdbd2687bdc31b0" - integrity sha512-jMlzabDDve/RQl2hR05Z7w9vbbQB9nV3IhAKRvmEHt9t0j6tpfoN6Ju4VjHzGm5Be1bpW2+4X4zS7H9CLMc8YA== +"@deck.gl/carto@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/carto/-/carto-9.0.20.tgz#43836a1faeee4ea7c8de0c220a837f30f15b3e4c" + integrity sha512-gIQmS5fR3a8oElo+iP2KZoJOytPlzEHR47rGBfXjvqgYll2YgTKLHD9BomglhW8M4yjAz2SuyD+JNkQBuB9CvQ== dependencies: "@loaders.gl/gis" "^4.2.0" "@loaders.gl/loader-utils" "^4.2.0" "@loaders.gl/mvt" "^4.2.0" "@loaders.gl/schema" "^4.2.0" "@loaders.gl/tiles" "^4.2.0" - "@luma.gl/constants" "^9.0.11" - "@luma.gl/core" "^9.0.11" - "@luma.gl/shadertools" "^9.0.11" + "@luma.gl/core" "^9.0.14" + "@luma.gl/shadertools" "^9.0.14" "@math.gl/web-mercator" "^4.0.0" "@types/d3-array" "^3.0.2" "@types/d3-color" "^1.4.2" "@types/d3-scale" "^3.0.0" - cartocolor "^4.0.2" + cartocolor "^5.0.2" d3-array "^3.2.0" d3-color "^3.1.0" d3-format "^3.1.0" @@ -1322,18 +1321,18 @@ pbf "^3.2.1" quadbin "^0.2.0" -"@deck.gl/core@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-9.0.12.tgz#ade161ec6bc5c6022f49505997b53cfd93254a08" - integrity sha512-ODVlnalRg/bE0LyatsKZCV8IieKvfcA7Tk/UyMnJzC9qD9y1dQdqnwLEsFO4kWuEYzkndj5kV07Cl9a2OFGOZQ== +"@deck.gl/core@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-9.0.20.tgz#1a79b9894c10a37d62a73ab28ec9f4b33a107fea" + integrity sha512-dfO+hRwPZijVqR25VfwTCHHHVM7tOw30bgEJxaJScxq2CXN5/hYugEWPWqvD3n9j80CQVmd6GeyU/cazBumFVg== dependencies: "@loaders.gl/core" "^4.2.0" "@loaders.gl/images" "^4.2.0" - "@luma.gl/constants" "^9.0.11" - "@luma.gl/core" "^9.0.11" - "@luma.gl/engine" "^9.0.11" - "@luma.gl/shadertools" "^9.0.11" - "@luma.gl/webgl" "^9.0.11" + "@luma.gl/constants" "^9.0.14" + "@luma.gl/core" "^9.0.14" + "@luma.gl/engine" "^9.0.14" + "@luma.gl/shadertools" "^9.0.14" + "@luma.gl/webgl" "^9.0.14" "@math.gl/core" "^4.0.0" "@math.gl/sun" "^4.0.0" "@math.gl/web-mercator" "^4.0.0" @@ -1344,19 +1343,19 @@ gl-matrix "^3.0.0" mjolnir.js "^2.7.0" -"@deck.gl/extensions@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/extensions/-/extensions-9.0.12.tgz#5501bffd7a91e6db35c9003b65453f1014e270ab" - integrity sha512-Om95nPHXBpkXwdYB9J7uLmarPKNfMS6WP8cK7HNPeac3U1covWlW12+rrywuv3d6aTTEvlP3bnHF8XRMGkvE1Q== +"@deck.gl/extensions@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/extensions/-/extensions-9.0.20.tgz#a2a97aa0c98d59375905070732aaed801f86a901" + integrity sha512-euLP6EO5Pv07uoISTACXa6uvTgRKbFA/wM/IICB9w98LAXHeCpeFQKxUhxpdAwb8q6iijxJHQuZUqA+IkQCkaQ== dependencies: - "@luma.gl/constants" "^9.0.11" - "@luma.gl/shadertools" "^9.0.11" + "@luma.gl/constants" "^9.0.14" + "@luma.gl/shadertools" "^9.0.14" "@math.gl/core" "^4.0.0" -"@deck.gl/geo-layers@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-9.0.12.tgz#e260b4e9194bf3ecc0c213477b87673be6b1c39d" - integrity sha512-KjRT5PEyDvBl6cr/E6JuMEhVrp59HH7bFOuqvE1AxfMghdCMWRgbDCEv4xIYTaMxDsAnh4/TPwgvecUg1p/CDw== +"@deck.gl/geo-layers@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-9.0.20.tgz#586571b3559e38ee38bfb7eaa5caf9cb13495097" + integrity sha512-lO6JW5abwvNvRjrRMlroLkL+UtK+o3MXiyp9g5s0WoXy+KtJ9D10OQ02GpCw0L48udbpO42Cmpg3imcZdO66Dg== dependencies: "@loaders.gl/3d-tiles" "^4.2.0" "@loaders.gl/gis" "^4.2.0" @@ -1366,8 +1365,8 @@ "@loaders.gl/terrain" "^4.2.0" "@loaders.gl/tiles" "^4.2.0" "@loaders.gl/wms" "^4.2.0" - "@luma.gl/gltf" "^9.0.11" - "@luma.gl/shadertools" "^9.0.11" + "@luma.gl/gltf" "^9.0.14" + "@luma.gl/shadertools" "^9.0.14" "@math.gl/core" "^4.0.0" "@math.gl/culling" "^4.0.0" "@math.gl/web-mercator" "^4.0.0" @@ -1375,26 +1374,26 @@ h3-js "^4.1.0" long "^3.2.0" -"@deck.gl/google-maps@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-9.0.12.tgz#27e3a271b92bd1d0fde9670f8c83c9392a55e415" - integrity sha512-i14RMKGtjR8Aw3t7AHQxYX1D/mQTf92vYoVZ2aB0WSEpXF3lNM7xt7FKjd4vZmHBnLXtP3xKBxjyVAhg7Avf/g== +"@deck.gl/google-maps@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-9.0.20.tgz#1ea35e400ff983112c2961ab74f4112a6b6a19c5" + integrity sha512-FBX2zLe6SpRfAnVnQhmUAa6xqysd89lxtNvwWubXbhFnaw3VQ5PhJo4egQDrSUI3Zp44803A/6Ip8gE5tDmYhA== dependencies: - "@luma.gl/constants" "^9.0.11" + "@luma.gl/constants" "^9.0.14" "@math.gl/core" "^4.0.0" "@types/google.maps" "^3.48.6" -"@deck.gl/json@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-9.0.12.tgz#911184cca0f2d8fac13ba839d1871003de423dc0" - integrity sha512-B0vtOLonKCe1nRyAiq8gmssEiGJ/Y8gc1L/GR79xq8iyXlKXxSA2dgXRL+w3HvE+Q6yyZPtmBNxZwS+U+9KrKA== +"@deck.gl/json@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-9.0.20.tgz#edb559f24b3b1358e5742188c4b784dd3d1080f2" + integrity sha512-0qXMNsjx7O+/3J7JUuLowhSYtbKTkDXrQSrRpFC4/FdaG4yIwciel5iv4M0MjaXjollmN0Q7NiFqvwzQlEttPw== dependencies: expression-eval "^5.0.0" -"@deck.gl/layers@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-9.0.12.tgz#84665cedda9cd1b22782096bde465ab40c4bc9da" - integrity sha512-E9rnUAG5d8OF1RL/u7tQmrU2VRWMQYOeLYLx1gfXf3SHmNtP13OS/QeNbdUnEIcgwxXxHiJceJ1QZk2MIxCctA== +"@deck.gl/layers@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-9.0.20.tgz#07221546f12f5be33847a162e53eb65dee98c18e" + integrity sha512-V+pC7NxFAMT9s5pjCdX4e/PCVhPrnfKsB4mfpGHmz8461niYMbc/GtqyvqfHDEbZCrpq078SEesG10T5AwVBLA== dependencies: "@loaders.gl/images" "^4.2.0" "@loaders.gl/schema" "^4.2.0" @@ -1404,32 +1403,32 @@ "@math.gl/web-mercator" "^4.0.0" earcut "^2.2.4" -"@deck.gl/mapbox@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-9.0.12.tgz#7aa348e2f46393bc9d43bc15bb15614e70262512" - integrity sha512-6cbgICvW/HqKzGIFoCDVX4E1evJgW+QHlVZZHzg1A3/RAP5Z3qRKEyAl7lQjPbNhLBJY4gMYRAlfnn0ejSUGwg== +"@deck.gl/mapbox@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-9.0.20.tgz#a92ca19d3a267102edcfd8f91c8be08ae1dbbfed" + integrity sha512-bM1cYANGZpm5Y8Kd3Of8hVxTWznm2EaSXKHM833h+/OoXHifxPkLgx3Ov71+AvwnoB+iLm48kIbZLU39ZGqItQ== dependencies: - "@luma.gl/constants" "^9.0.11" + "@luma.gl/constants" "^9.0.14" "@math.gl/web-mercator" "^4.0.0" -"@deck.gl/mesh-layers@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-9.0.12.tgz#2a4978312a3cbcc129b3ad170a1ef11643b3aff4" - integrity sha512-q2aOfcJMyyv7aRqLByHzff66kCX4KKwuu+svv0pFx9CywAIX+oXcfHrDdC6vywiuexc3v1wzhZYh8208I4C9Cg== +"@deck.gl/mesh-layers@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-9.0.20.tgz#b0117021467a3e7a18583d48e3c8cade61c93d71" + integrity sha512-WXy+9W9z2bqLLp0TtrIIZv5m+QS1v0iIXUTDvEFgLvcqL46+6jvMn8EhWxqab4YqJ7egTo7NlqDpuc55ubd+AA== dependencies: "@loaders.gl/gltf" "^4.2.0" - "@luma.gl/gltf" "^9.0.11" - "@luma.gl/shadertools" "^9.0.11" + "@luma.gl/gltf" "^9.0.14" + "@luma.gl/shadertools" "^9.0.14" -"@deck.gl/react@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-9.0.12.tgz#3f25b3dc648b2a2201ae152301f1d3b86045586c" - integrity sha512-sly4ilVyeWKFbZbYkYbKjr1ot9ofu1IRbzK6oSLq3wDYbamsboKjYX4mVzq9glmJoJ83Vxp4HlMdWo0YKDEPqg== +"@deck.gl/react@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-9.0.20.tgz#124fa4e2da819d1427b3d5fd469326cca41caca9" + integrity sha512-3r4Jhwu22qgq0r/gs+S+QixpzikmhvBWhpq+oR8s2de4KP9njVO5GUnvmtjz8927R83WOYjDnPEO3oFWHLp+eA== -"@deck.gl/widgets@9.0.12": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@deck.gl/widgets/-/widgets-9.0.12.tgz#250d5bf9109b2c7d93d6ea2099ab16ae82d681f4" - integrity sha512-3KJXgvOVouyPR/qJUgoqfcar1hFxcRhS9MzGDi6TLQYczr01fLU8V2Jd7CwjJjz6xdZqKxbDCOJFnxHUJ3/uPg== +"@deck.gl/widgets@9.0.20": + version "9.0.20" + resolved "https://registry.yarnpkg.com/@deck.gl/widgets/-/widgets-9.0.20.tgz#d150cb115bd638d43c6529cebcaba09a4b40901e" + integrity sha512-lXlgygv4MhU+K5wD5wlyALBuzElv6NjrC+LrZVFrdUTDyKX7mSWFFxNSQxXbWRm7c4pKr9jbTiUJyM/4bC9fHw== dependencies: preact "^10.17.0" @@ -1874,10 +1873,10 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@emotion/is-prop-valid@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" - integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== +"@emotion/is-prop-valid@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== dependencies: "@emotion/memoize" "^0.8.1" @@ -1975,32 +1974,32 @@ integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== "@loaders.gl/3d-tiles@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/3d-tiles/-/3d-tiles-4.2.1.tgz#37684d176508bb52a2f5d8542c95ef269e592a0b" - integrity sha512-rDzWmdyE6YSd/QiqOO8n3LeRLZEP2LYHr6DffAItRzg464xsRjE4992MVvdn6B7yvB9FMrGeb1vshm89G0f8mw== - dependencies: - "@loaders.gl/compression" "4.2.1" - "@loaders.gl/crypto" "4.2.1" - "@loaders.gl/draco" "4.2.1" - "@loaders.gl/gltf" "4.2.1" - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/math" "4.2.1" - "@loaders.gl/tiles" "4.2.1" - "@loaders.gl/zip" "4.2.1" + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/3d-tiles/-/3d-tiles-4.2.2.tgz#2948a697e40ce36a724efcfa1170742d2ed6885f" + integrity sha512-op7KelDjEahz+ViFmavJdHw10n6lRZeTefC/cVYVQ1Jfvb8T+55KaOOXGoZODo14/B8Z53FnyPGVqR68dBYARw== + dependencies: + "@loaders.gl/compression" "4.2.2" + "@loaders.gl/crypto" "4.2.2" + "@loaders.gl/draco" "4.2.2" + "@loaders.gl/gltf" "4.2.2" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/math" "4.2.2" + "@loaders.gl/tiles" "4.2.2" + "@loaders.gl/zip" "4.2.2" "@math.gl/core" "^4.0.1" "@math.gl/culling" "^4.0.1" "@math.gl/geospatial" "^4.0.1" "@probe.gl/log" "^4.0.4" long "^5.2.1" -"@loaders.gl/compression@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/compression/-/compression-4.2.1.tgz#9f029f7f548f62dd7644a748eb611fd812f4218d" - integrity sha512-GaeAW9Cn355ClsB0bCw28/YvCd+n7kTPE6QgwaMzblc9HCvzqTwvcl2FdFg6YBbKGMjwhNVbKYAw9XmnlNzf1Q== +"@loaders.gl/compression@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/compression/-/compression-4.2.2.tgz#57c7a3f397638859e75a0a47769cb17d6862fb06" + integrity sha512-dBFjMe4zLhE4NXfVsPkhs267/55qnxgP/AIhksOKTx30gQxCtcty6RWhfWGnluTnbAEXID2Uq/vfp1HYH7ZYCg== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/worker-utils" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/worker-utils" "4.2.2" "@types/brotli" "^1.3.0" "@types/pako" "^1.0.1" fflate "0.7.4" @@ -2013,131 +2012,131 @@ zstd-codec "^0.1" "@loaders.gl/core@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/core/-/core-4.2.1.tgz#6fc74a3326ec12c580ff240d24aabf577ea7eaf4" - integrity sha512-VadjNJaH3oixqhUgu4SbmEALar7ELinXbIh6gxYPhFNdEicPXmFT3qrZG49p9x6KG/iP3vWR2jOHgebyFMeXPg== + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/core/-/core-4.2.2.tgz#36b30b364fe95bcfdbe4a493f6497425aa644b74" + integrity sha512-d3YElSsqL29MaiOwzGB97v994SPotbTvJnooCqoQsYGoYYrECdIetv1/zlfDsh5UB2Wl/NaUMJrzyOqlLmDz5Q== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" - "@loaders.gl/worker-utils" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" + "@loaders.gl/worker-utils" "4.2.2" "@probe.gl/log" "^4.0.2" -"@loaders.gl/crypto@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/crypto/-/crypto-4.2.1.tgz#f48caeea4cbf418fcc7d5537f03c9f22a88651c6" - integrity sha512-t8X5BOQRmXveDK/4Gz4vXCDMA9NiFzAuTdyTTwdJKmenvCRN+E6IH1OYmCHjo19DtHG0fzmp4DgocqOAaCUHEQ== +"@loaders.gl/crypto@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/crypto/-/crypto-4.2.2.tgz#b0a9001c794527a3e2572a2eb697fe48435e9494" + integrity sha512-0rbpHX8784wkcTb8+gjkzAxdA4p2CH3W5xxzdvpG4r37jVQwKYrh2NJxeF+xGIuuxlEaxD8x4kcyadKgCVtspA== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/worker-utils" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/worker-utils" "4.2.2" "@types/crypto-js" "^4.0.2" -"@loaders.gl/draco@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/draco/-/draco-4.2.1.tgz#e21f825d1b5f44df3401bca4d1a382551795d33c" - integrity sha512-Iw2rL6Qi08xoiXlP63DcWa0M5znULrZPzlus3cmgrx2cPazT7Cp5nRG78z/XvsnriwhBZWAdb6saG3NRtLpHWA== +"@loaders.gl/draco@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/draco/-/draco-4.2.2.tgz#f26c8a98bf3675cdbe47bc0637cbd4cf95ad7682" + integrity sha512-WM7Zw6+04QzqlXjUYibR63Zi4I2iuBaDR41Rguur1s+ns2faiHDyEvuFlKtArTChFPQ8Xzf+6MNt7JeR8kpZTA== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" - "@loaders.gl/worker-utils" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" + "@loaders.gl/worker-utils" "4.2.2" draco3d "1.5.7" -"@loaders.gl/gis@4.2.1", "@loaders.gl/gis@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/gis/-/gis-4.2.1.tgz#c085dac0e6e5cf8574c0777f9422c1c3b67d5ff2" - integrity sha512-TH4/OBgchIDGvKdy9Tg/g+5Ue5yid7XgVslDtUAs6ZdW1qpKCWFAcOAnrKgaF7bT2W3caMWakfhJRoNySz9KBA== +"@loaders.gl/gis@4.2.2", "@loaders.gl/gis@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/gis/-/gis-4.2.2.tgz#8b233d7c5c8c7d882a4d7f076b3a39d07cf89340" + integrity sha512-s9kD6yLMKn8+jAhDFDVWBeeKcDkJHFrscTnVWveGBfnC7IYT4gD6lQeHRIfXrJKs0LWmKPrAS8grTq7Ull8V6Q== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" "@mapbox/vector-tile" "^1.3.1" "@math.gl/polygon" "^4.0.0" pbf "^3.2.1" -"@loaders.gl/gltf@4.2.1", "@loaders.gl/gltf@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/gltf/-/gltf-4.2.1.tgz#b01ff625709ef8d090a8ce496e4f07f6b32480a1" - integrity sha512-EjEQv3ovOskLDSrCzYiE1S7i4gCvrqYmgVc5ThkpCuDFwBszOZjLFtPscj9ORI7jof4JFosvzWx1Cn5DvRVIhA== - dependencies: - "@loaders.gl/draco" "4.2.1" - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" - "@loaders.gl/textures" "4.2.1" +"@loaders.gl/gltf@4.2.2", "@loaders.gl/gltf@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/gltf/-/gltf-4.2.2.tgz#4258fbd079640bd29db0c27b18d60fe140102858" + integrity sha512-AK90PnRoaZ1jw/QWkg6TEJG8Yxd/QefxwlbMRJvtgk7QafsYo8dMm0e7EYgyOms0wDOcPflm5LHkIoqViRp/ww== + dependencies: + "@loaders.gl/draco" "4.2.2" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" + "@loaders.gl/textures" "4.2.2" "@math.gl/core" "^4.0.0" -"@loaders.gl/images@4.2.1", "@loaders.gl/images@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/images/-/images-4.2.1.tgz#a12ed206de7220e8158fc2be8dc9877feea34337" - integrity sha512-w/CPNmnqu1eutOo3BJ30ad3CXHPs5vPa9ZzwAL6PQSMb+rqaCRVCfHlaDedzBh+KyPfC9C+q62ouQvzUT5XKDg== +"@loaders.gl/images@4.2.2", "@loaders.gl/images@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/images/-/images-4.2.2.tgz#a6f37ad3778ab74aeb90f7ead45ef21751aea88c" + integrity sha512-R53rkexvVT0i4YXt++r8gLq3reB6kWTLvdJL81J3R4YJbM5+kNSe40jJOA94LFYlsTN+oirF4lkLTe5YXGZPYQ== dependencies: - "@loaders.gl/loader-utils" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" -"@loaders.gl/loader-utils@4.2.1", "@loaders.gl/loader-utils@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/loader-utils/-/loader-utils-4.2.1.tgz#3a310d66922cc7fe5e71c1a3f258c725aa86504e" - integrity sha512-8algFDeaEB+ceXJK9/s/d/YjBfCEXXGrsIyGF18APfWTldzEwYoL/D8VV8RnklR7ICJjYCotBoF96USkoB9tMQ== +"@loaders.gl/loader-utils@4.2.2", "@loaders.gl/loader-utils@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/loader-utils/-/loader-utils-4.2.2.tgz#7c4e930c2343bf20d3750ccc770c7368b5cb447a" + integrity sha512-5udJQhFx1KNIcRBYkFMi8QZitAsK+m3PkZ9GejM8VpOSsJUHD2Yal3wBHOPTRsOjQ0zXG/nqM7BHOojjeetNTg== dependencies: - "@loaders.gl/schema" "4.2.1" - "@loaders.gl/worker-utils" "4.2.1" + "@loaders.gl/schema" "4.2.2" + "@loaders.gl/worker-utils" "4.2.2" "@probe.gl/stats" "^4.0.2" -"@loaders.gl/math@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/math/-/math-4.2.1.tgz#800970ce355ee5549a990dc78ff580a8a423c622" - integrity sha512-7y8RadrhGYZB3IH2URkj7+KS7OIqq6p11pYY9BL71+3C8CQ5dx1iWOcVQghpm1e7kgoSMLRJ2L93pVkCfLc7mA== +"@loaders.gl/math@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/math/-/math-4.2.2.tgz#8f93c3c21c16514fabb66cf08f0cf32f23d192af" + integrity sha512-nfiNNxXobhdKJILlHDWvm92SMEMMh1XAsb4BYvRIHyTzw4KzflFMS6C62v8ctAW6P8pQKyRvuos9LcRyroty1A== dependencies: - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" "@math.gl/core" "^4.0.0" "@loaders.gl/mvt@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/mvt/-/mvt-4.2.1.tgz#0ee4bcd340d340c6865e6c260b1e8db1c56fb3b0" - integrity sha512-k6c6BDeezDrrd9JGy3C/O1QwYc1iB61AR2wlryBUDGiTmBdA4YNPByMnvgR7ZJClIWEJcUeE2yEdgH1PTPdixw== + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/mvt/-/mvt-4.2.2.tgz#5cf45ee7b72c65325ed97c44605c105661c1f36a" + integrity sha512-KglhYp1rwIs6h6AtrmKjrEYWxcX6xhlG3c3pTIFJwfA5nMBa+cmzD19vBRo1po9hzWKq4oqqhi7JL0ovH6GAqw== dependencies: - "@loaders.gl/gis" "4.2.1" - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" + "@loaders.gl/gis" "4.2.2" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" "@math.gl/polygon" "^4.0.0" pbf "^3.2.1" -"@loaders.gl/schema@4.2.1", "@loaders.gl/schema@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/schema/-/schema-4.2.1.tgz#645bf795ecc9309fb05a05d9efa9e583a1bc3018" - integrity sha512-uhcQmeOJDmosWGlGRVEwx5zCTcME6Fy7QiR+IuEZaUyEkcFJZU8Ccit4d5ap9gHz1avANzan/+h2dECSpjd8wg== +"@loaders.gl/schema@4.2.2", "@loaders.gl/schema@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/schema/-/schema-4.2.2.tgz#c5399343ce6103aebb21ba51bda956478247c133" + integrity sha512-vrQ6vlGWWptJXDP1DrL5x/j70xmyt2l36QZcGyDYptrohTGvQLc3yrOEHuD5v96fXX5WR619pT3zSYhuf1FnIg== dependencies: "@types/geojson" "^7946.0.7" "@loaders.gl/terrain@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/terrain/-/terrain-4.2.1.tgz#5dc2fe2a59baa1e42776a5c037d8b2dacf7b0183" - integrity sha512-/XDW+5zOoYoJR2JwoDC+aoR3j+mHDWJ8cOlu6Nb6sldQHd85pIOdmBmOzBRGAc0gv1v0/ItDGEoDd0wPV9eBeg== + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/terrain/-/terrain-4.2.2.tgz#163ed9e5a031428e96dd2991d4e615908f1f5e54" + integrity sha512-M5wDS20y0TTq9giCONLOWSIznD9H4JxfU1wicyEGUOa8U2u0Fdau5TObr//fOcT+Tvemkvcn01Oxj8acJWIsGw== dependencies: - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" "@mapbox/martini" "^0.2.0" -"@loaders.gl/textures@4.2.1", "@loaders.gl/textures@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/textures/-/textures-4.2.1.tgz#ec5d99cce4f3a4e579b9e73e783f5cdaaebe18c8" - integrity sha512-gNLbNgKaLHuD68+ILXCx0XhxnTFEzWsHJ/1EVk48TjZ83EEYWNMsTwJhGtsu8U4CX/4D5vQ1Fc9oIT7mDR1JsQ== +"@loaders.gl/textures@4.2.2", "@loaders.gl/textures@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/textures/-/textures-4.2.2.tgz#3413f9f7ffa0341ffb075d079e47c6155a1f05f0" + integrity sha512-UlxCCi7VbCloj4VCzSULASgGVA059jglQYLc3kIHclvGoMcx3MJi0hID0MEQ6IhdO9Zyn4F42doVPrriNDVJFQ== dependencies: - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" - "@loaders.gl/worker-utils" "4.2.1" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" + "@loaders.gl/worker-utils" "4.2.2" "@math.gl/types" "^4.0.1" ktx-parse "^0.0.4" texture-compressor "^1.0.2" -"@loaders.gl/tiles@4.2.1", "@loaders.gl/tiles@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/tiles/-/tiles-4.2.1.tgz#65e2fd29d04eab9f8a03da4fbd0154b4728550aa" - integrity sha512-XqctpHvcrZVhedd2WevHyLrkCho3F3CgCFyENJK9seR10O3/hez5cGwCFbbsqsnol+hR6r4VkEUH7QDq7Imxkw== +"@loaders.gl/tiles@4.2.2", "@loaders.gl/tiles@^4.2.0": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/tiles/-/tiles-4.2.2.tgz#6cda3db676fff4d83dfb44fa317e8fdb97465c09" + integrity sha512-mozBA1FOrOFXa0lBxrRvHoRxsSb9T8D6ZfFIpbVR1z0zEWKm+NgRQzO8yS4IJD/CPFOn/r31SolZII6yXnzWbg== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/math" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/math" "4.2.2" "@math.gl/core" "^4.0.0" "@math.gl/culling" "^4.0.0" "@math.gl/geospatial" "^4.0.0" @@ -2145,51 +2144,51 @@ "@probe.gl/stats" "^4.0.2" "@loaders.gl/wms@^4.2.0": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/wms/-/wms-4.2.1.tgz#4524542733801df27943809e3b70eed2c69f9bb9" - integrity sha512-fdU5EYdq8oTtw4xUvZnjrgieqbog5B++iAlVuZNAMN+ws17Gjjkp+aaQclQ3ZIGd/IfKQLQ9ciZxLmqw2BeygA== + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/wms/-/wms-4.2.2.tgz#35d220ce3d0e31b88f982a86ca6eec21b7dad289" + integrity sha512-MoZqOgebyXsElfNbjX/el4jA9Rypusq7Z+cJ1tiP2yBTepuLkPBpXLeuUgt/v0MOqGoUWrkUY8I811ijkZYyjA== dependencies: - "@loaders.gl/images" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" - "@loaders.gl/xml" "4.2.1" + "@loaders.gl/images" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" + "@loaders.gl/xml" "4.2.2" "@turf/rewind" "^5.1.5" deep-strict-equal "^0.2.0" -"@loaders.gl/worker-utils@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/worker-utils/-/worker-utils-4.2.1.tgz#f32026a958ee9498476c393106d1f41447b1c448" - integrity sha512-+cZEgmyHQ3SPYX8Lzeqd7JZaMPbbnJuQs7fyMbfBeb7hmkO4XNwo/tnk/vKSmP24YMugAbWrxRlKNI0CMbkOhw== +"@loaders.gl/worker-utils@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/worker-utils/-/worker-utils-4.2.2.tgz#1c6c639f059b03ca3c443dc029bbbeede1aa571b" + integrity sha512-7Ad83VS/PmS0T3LXo+LB6cq5oHhAUW3GvYWizm4OfeuBDQRtYK7iRehgC13/BomkNtWIn0y7iAphlQMVrNdvhQ== -"@loaders.gl/xml@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/xml/-/xml-4.2.1.tgz#783331bb5376df7a13919d621f1fb147b931e957" - integrity sha512-J7/RBuyD7vrgsITP4iCkAFppEXaSpXUXBWKQPa1aMzLm8UUdS3RcWgEcfDNQ9SURxKF78NsHOqkIv9TZpg1mSQ== +"@loaders.gl/xml@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/xml/-/xml-4.2.2.tgz#4d2e751ca106a29dc89e01dec552d491ab55884e" + integrity sha512-ADikkGCwkS6d2IwFPomVAZfTNEHC6xXqDFbzfhYThsG3ptPpeosjJmn4GdI4dyazTsQnKIeiqV/RLS4CvJgxzw== dependencies: - "@loaders.gl/loader-utils" "4.2.1" - "@loaders.gl/schema" "4.2.1" + "@loaders.gl/loader-utils" "4.2.2" + "@loaders.gl/schema" "4.2.2" fast-xml-parser "^4.2.5" -"@loaders.gl/zip@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@loaders.gl/zip/-/zip-4.2.1.tgz#e58d7e2a4059f04e537ec88fa4659ea9249a0874" - integrity sha512-t1LL+LYrLWJGYy8Bnj+RZu73awIgVLhPIzdHZgaV9RH6BCMb15HIwx1ritF1ESHgxgI2AIFvpRil2+hqJZsnjg== +"@loaders.gl/zip@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@loaders.gl/zip/-/zip-4.2.2.tgz#48a7297488ffdfcc3aba7e98be0f235f44f89141" + integrity sha512-8wuhWrmGFUb9X7i1E9ObhqyiYuwQj6x0ttzujXE6o83T8TI1i88fySttMe0LSV2aIrTLo8A5n6MOf2LPSefPYg== dependencies: - "@loaders.gl/compression" "4.2.1" - "@loaders.gl/crypto" "4.2.1" - "@loaders.gl/loader-utils" "4.2.1" + "@loaders.gl/compression" "4.2.2" + "@loaders.gl/crypto" "4.2.2" + "@loaders.gl/loader-utils" "4.2.2" jszip "^3.1.5" md5 "^2.3.0" -"@luma.gl/constants@9.0.12", "@luma.gl/constants@^9.0.11": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-9.0.12.tgz#627aa743e809a0f21ed28e4fb3119c69d67e7207" - integrity sha512-/J6Z1uQDiEjp9t+5ijHE2wB+eegr2zBLhEnyMx8Fh4FUFELFdK9gaJVpv0u2xzZGyAhCy6GrgqOBVi0agxtF1g== +"@luma.gl/constants@9.0.14", "@luma.gl/constants@^9.0.14": + version "9.0.14" + resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-9.0.14.tgz#c9476b8da7f9f2eb3b26d96e7a2e3d0f27b77694" + integrity sha512-mCZ5Sr39EX8AjPVy3v5W/XamaU6dtA5CEHCYLPdyMXEQ2snqsFut2Y4cOO/ySuOUccjEm4Y6Vb45BJKNMN8NyQ== -"@luma.gl/core@^9.0.11": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-9.0.12.tgz#959e0f00ae8dce44cd236f222252e446e6e80b16" - integrity sha512-hYQRZvY36mo/sAY4UT4nrgBM/1ElNM9RUQbUCujCb/kwSEj5Fsgd0CwRKlx6I3EF3SplnuE7s8bapQDauaMOyQ== +"@luma.gl/core@^9.0.14": + version "9.0.14" + resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-9.0.14.tgz#ac5a92d978c568cf89c2b2ecad76638d2e510d68" + integrity sha512-XkgCpVWGtfmEVTRbkkBu1HksjD1+3ZFqamNlCNgeWqsCcy0UZ2+iTF9qyxnT9K0QhdhnPgox6890A49C2iSRnw== dependencies: "@math.gl/types" "^4.0.0" "@probe.gl/env" "^4.0.2" @@ -2197,39 +2196,39 @@ "@probe.gl/stats" "^4.0.2" "@types/offscreencanvas" "^2019.6.4" -"@luma.gl/engine@^9.0.11": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@luma.gl/engine/-/engine-9.0.12.tgz#d37bc953929a63665f29ac2b9bea787b6f3b38d7" - integrity sha512-IkM71XZMFxXqoKvniUbjbs1aSqdxrAYPYFbJRdskgP4P3UQgJN4t4zyKr+6NeDFULlTUVtllrP7AKrxHNeIXUA== +"@luma.gl/engine@^9.0.14": + version "9.0.14" + resolved "https://registry.yarnpkg.com/@luma.gl/engine/-/engine-9.0.14.tgz#5e8ba4adc1c9a83212683b8e912eee2b3d1468e9" + integrity sha512-7PuvXbcovFfXgCWC4eAZAPMzNAf3rfFo7Cd9FB7AEKLIwdYYN6nmn/PNjsZREa8eXK5ExDC8jDJ6lqtWrTqlyg== dependencies: - "@luma.gl/shadertools" "9.0.12" + "@luma.gl/shadertools" "9.0.14" "@math.gl/core" "^4.0.0" "@probe.gl/log" "^4.0.2" "@probe.gl/stats" "^4.0.2" -"@luma.gl/gltf@^9.0.11": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@luma.gl/gltf/-/gltf-9.0.12.tgz#2c85b4f2bc40836fc506f78d1a4f709d0aaa6fea" - integrity sha512-ae1HGkgAcMF0WbIbpXX/AaSgdmjRfbJ33llSf0JmXfsi3u6EUBGE4kHScibfcJdHkY0VDRVt5M7bIxlYuYTZfQ== +"@luma.gl/gltf@^9.0.14": + version "9.0.14" + resolved "https://registry.yarnpkg.com/@luma.gl/gltf/-/gltf-9.0.14.tgz#f25543b73c0673a778ed803974c81d3f9f7836c3" + integrity sha512-0C1AWEJ7xHN95cSNQXjA6NMCJZJLBlKl+eI65KXLtwIEdWnEopIr/+u4HX11P1lEzPMrpj3KFeCzo+scG+1hPA== dependencies: "@loaders.gl/textures" "^4.2.0" - "@luma.gl/shadertools" "9.0.12" + "@luma.gl/shadertools" "9.0.14" "@math.gl/core" "^4.0.0" -"@luma.gl/shadertools@9.0.12", "@luma.gl/shadertools@^9.0.11": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-9.0.12.tgz#2dfa5035defa09e7d25e5c1007deb773a5acc060" - integrity sha512-HIlZst2Zx4UydE/uJkQyR2mbPWvzAe0lrUVpIyH19lO5JgGqP2zOfnH+oCjZatt+n/HWhuZYpm7zNegfYYcJCg== +"@luma.gl/shadertools@9.0.14", "@luma.gl/shadertools@^9.0.14": + version "9.0.14" + resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-9.0.14.tgz#d59075e30a0320b2b1fdaabddfbde5cf34a26c2d" + integrity sha512-4UFh/oQ+sRwERzuPf2flgMhHIbENU1xnHvXUzpzE3Z/+/DNljb2oSeMkW74fgpVmM6MuyHZhU1hM5RRq/mW3Tw== dependencies: "@math.gl/core" "^4.0.0" "@math.gl/types" "^4.0.0" -"@luma.gl/webgl@^9.0.11": - version "9.0.12" - resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-9.0.12.tgz#90b46373b4492280b158220239d8b48b2d562fce" - integrity sha512-k3+EEAsQggzPYFMvqJjwM2+S4Vnwyn7lQCUQn6/RCiiEi+G12rxtQmzDYAoI5pMwYhMiDd7mnJ98yfAhMnEdFw== +"@luma.gl/webgl@^9.0.14": + version "9.0.14" + resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-9.0.14.tgz#48adffc0f9145884d9b7f622dbdd7d4611017472" + integrity sha512-TcgXPWaKVEVbnzB6Cu49Ia70oZny/GNy57OLj82kW7+llrKY5bpfOaD5aSIDEV34nqmmlpML4agPJXEIzeP/BQ== dependencies: - "@luma.gl/constants" "9.0.12" + "@luma.gl/constants" "9.0.14" "@probe.gl/env" "^4.0.2" "@mapbox/geojson-rewind@^0.5.2": @@ -2296,17 +2295,19 @@ rw "^1.3.3" sort-object "^3.0.3" -"@maplibre/maplibre-gl-style-spec@^20.1.1": - version "20.1.1" - resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.1.1.tgz#94b644493723776c34813bd62a223e748390099b" - integrity sha512-z85ARNPCBI2Cs5cPOS3DSbraTN+ue8zrcYVoSWBuNrD/mA+2SKAJ+hIzI22uN7gac6jBMnCdpPKRxS/V0KSZVQ== +"@maplibre/maplibre-gl-style-spec@^20.3.0": + version "20.3.0" + resolved "https://registry.yarnpkg.com/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.0.tgz#7ab199c26a737dbc63e99e43e91eb05c51d83a1b" + integrity sha512-eSiQ3E5LUSxAOY9ABXGyfNhout2iEa6mUxKeaQ9nJ8NL1NuaQYU7zKqzx/LEYcXe1neT4uYAgM1wYZj3fTSXtA== dependencies: "@mapbox/jsonlint-lines-primitives" "~2.0.2" "@mapbox/unitbezier" "^0.0.1" json-stringify-pretty-compact "^4.0.0" minimist "^1.2.8" + quickselect "^2.0.0" rw "^1.3.3" sort-object "^3.0.3" + tinyqueue "^2.0.3" "@math.gl/core@4.0.1", "@math.gl/core@^4.0.0", "@math.gl/core@^4.0.1": version "4.0.1" @@ -2758,9 +2759,9 @@ integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== "@types/google.maps@^3.48.6": - version "3.55.8" - resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.55.8.tgz#5149d6fc388f89643da3ed909c1933e5f8945076" - integrity sha512-aSyvlCRXzF9Jtjqq4zmA24sczKZ0QWJnn4zRrkufCoohHulS6LCf4KsF22eAlnHBuVYwEhQoMXIufUS7kXF5uA== + version "3.55.10" + resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.55.10.tgz#ce4a8c375b84990a0e9eec9f151c3494cbe5bf2c" + integrity sha512-XbDu2MIvcKgN+MBrufjWcsQRtXTbrBGBKperbhMLnPSq4770+pvlR66Oqq/Ub4AVkmGc9QciCfwPZpVCLaKAOw== "@types/hammerjs@^2.0.41": version "2.0.45" @@ -2796,6 +2797,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/junit-report-builder@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/junit-report-builder/-/junit-report-builder-3.0.2.tgz#17cc131d14ceff59dcf14e5847bd971b96f2cbe0" + integrity sha512-R5M+SYhMbwBeQcNXYWNCZkl09vkVfAtcPIaCGdzIkkbeaTrVbGQ7HVgi4s+EmM/M1K4ZuWQH0jGcvMvNePfxYA== + "@types/katex@^0.11.0": version "0.11.1" resolved "https://registry.yarnpkg.com/@types/katex/-/katex-0.11.1.tgz#34de04477dcf79e2ef6c8d23b41a3d81f9ebeaf5" @@ -2958,10 +2964,10 @@ dependencies: "@types/node" "*" -"@types/stylis@4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.0.tgz#199a3f473f0c3a6f6e4e1b17cdbc967f274bdc6b" - integrity sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw== +"@types/stylis@4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df" + integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== "@types/supercluster@^7.1.3": version "7.1.3" @@ -3516,11 +3522,11 @@ brace-expansion@^1.1.7: concat-map "0.0.1" braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" brotli@^1.3.2: version "1.3.3" @@ -3646,16 +3652,16 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373: - version "1.0.30001620" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz" - integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== + version "1.0.30001385" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001385.tgz#51d5feeb60b831a5b4c7177f419732060418535c" + integrity sha512-MpiCqJGhBkHgpyimE9GWmZTnyHyEEM35u115bD3QBrXpjvL/JgcP8cUhKJshfmg4OtEHFenifcK5sZayEw5tvQ== -cartocolor@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cartocolor/-/cartocolor-4.0.2.tgz#ef1aa12860f6eeedc8d2420e2b9d7337937c4993" - integrity sha512-+Gh9mb6lFxsDOLQlBLPxAHCnWXlg2W8q3AcVwqRcy95TdBbcOU89Wrb6h2Hd/6Ww1Kc1pzXmUdpnWD+xeCG0dg== +cartocolor@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/cartocolor/-/cartocolor-5.0.2.tgz#182050da45abe7f14e075df9e3a732ea4489c153" + integrity sha512-Ihb/wU5V6BVbHwapd8l/zg7bnhZ4YPFVfa7quSpL86lfkPJSf4YuNBT+EvesPRP5vSqhl6vZVsQJwCR8alBooQ== dependencies: - colorbrewer "1.0.0" + colorbrewer "1.5.6" ccount@^1.0.0: version "1.1.0" @@ -3830,10 +3836,10 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorbrewer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/colorbrewer/-/colorbrewer-1.0.0.tgz#4f97333b969ba7612382be4bc3394b341fb4c8a2" - integrity sha512-NZuIOVdErK/C6jDH3jWT/roxWJbJAinMiqEpbuWniKvQAoWdg6lGra3pPrSHvaIf8PlX8wLs/RAC6nULFJbgmg== +colorbrewer@1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/colorbrewer/-/colorbrewer-1.5.6.tgz#5b6c81bcf2ee584642375143b210a9049d9e5ab5" + integrity sha512-fONg2pGXyID8zNgKHBlagW8sb/AMShGzj4rRJfz5biZ7iuHQZYquSCLE/Co1oSQFmt/vvwjyezJCejQl7FG/tg== colord@^2.9.1: version "2.9.3" @@ -4230,10 +4236,10 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csstype@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== +csstype@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== csstype@^3.0.2: version "3.1.0" @@ -4309,26 +4315,26 @@ debug@^4.1.0, debug@^4.1.1: ms "2.1.2" deck.gl@^9.0.12: - version "9.0.12" - resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-9.0.12.tgz#695adcf88bb124482ab25e7d1d8fc5aa2fddb03e" - integrity sha512-ISrp35lQ7ysZgJlxupXgmugPxeJI0Src0n5r4HdzxjkgNc4aIs34Tfe7kjHf04+LwVT7rgo5KfDHUzUN0S5i2A== - dependencies: - "@deck.gl/aggregation-layers" "9.0.12" - "@deck.gl/arcgis" "9.0.12" - "@deck.gl/carto" "9.0.12" - "@deck.gl/core" "9.0.12" - "@deck.gl/extensions" "9.0.12" - "@deck.gl/geo-layers" "9.0.12" - "@deck.gl/google-maps" "9.0.12" - "@deck.gl/json" "9.0.12" - "@deck.gl/layers" "9.0.12" - "@deck.gl/mapbox" "9.0.12" - "@deck.gl/mesh-layers" "9.0.12" - "@deck.gl/react" "9.0.12" - "@deck.gl/widgets" "9.0.12" + version "9.0.20" + resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-9.0.20.tgz#7ddf868430b6f28356a655b657640eec7fe3d9b7" + integrity sha512-RO6iq3kbGbv7gr+MwUHPYaEI7+zV3VnqxOoyIv4DlMU0TDgQBYzC5J1LFnid5kzpARnCzkkSz0mIraY3LKo2bQ== + dependencies: + "@deck.gl/aggregation-layers" "9.0.20" + "@deck.gl/arcgis" "9.0.20" + "@deck.gl/carto" "9.0.20" + "@deck.gl/core" "9.0.20" + "@deck.gl/extensions" "9.0.20" + "@deck.gl/geo-layers" "9.0.20" + "@deck.gl/google-maps" "9.0.20" + "@deck.gl/json" "9.0.20" + "@deck.gl/layers" "9.0.20" + "@deck.gl/mapbox" "9.0.20" + "@deck.gl/mesh-layers" "9.0.20" + "@deck.gl/react" "9.0.20" + "@deck.gl/widgets" "9.0.20" "@loaders.gl/core" "^4.2.0" - "@luma.gl/core" "^9.0.11" - "@luma.gl/engine" "^9.0.11" + "@luma.gl/core" "^9.0.14" + "@luma.gl/engine" "^9.0.14" decompress-response@^3.3.0: version "3.3.0" @@ -4843,9 +4849,9 @@ fast-url-parser@1.1.3: punycode "^1.3.2" fast-xml-parser@^4.2.5: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz#190f9d99097f0c8f2d3a0e681a10404afca052ff" - integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== + version "4.4.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz#341cc98de71e9ba9e651a67f41f1752d1441a501" + integrity sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg== dependencies: strnum "^1.0.5" @@ -4913,10 +4919,10 @@ filesize@^8.0.6: resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -5238,12 +5244,7 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" -h3-js@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/h3-js/-/h3-js-4.0.0.tgz#f55efb89f4608014146f3839d1d01d7a2767b3ba" - integrity sha512-zIx1NIflzkQ6Jw0tzVOba1wkJvZ/uwVHnuOrgK6VGFzsWdM/QUC3h2ALk2RizyxSNAi0UibmftniyfVK3BVf7A== - -h3-js@^4.1.0: +h3-js@4.1.0, h3-js@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/h3-js/-/h3-js-4.1.0.tgz#f8c4a8ad36612489a954f1a0bb3f4b7657d364e5" integrity sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ== @@ -6194,9 +6195,9 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: semver "^6.0.0" maplibre-gl@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-4.1.3.tgz#539ea08f03a4a1407da773babd93b7aa04b87298" - integrity sha512-nMy5h0kzq9Z66C6AIb3p2BvLIVHz75dGGQow22x+h9/VOihr0IPQI26ylAi6lHqvEy2VqjiRmKAMlFwt0xFKfQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/maplibre-gl/-/maplibre-gl-4.4.1.tgz#823c55817cbdf6f85d0078c489b86f0dcbe310ba" + integrity sha512-tD+wn8qWSLCGhABKBrbewmgFfyopZDz+fkYXeOM8vdBhnf126DvMPyaYGGoKvoF4QuswCsgikETd2c39wK+OQw== dependencies: "@mapbox/geojson-rewind" "^0.5.2" "@mapbox/jsonlint-lines-primitives" "^2.0.2" @@ -6205,9 +6206,10 @@ maplibre-gl@^4.1.3: "@mapbox/unitbezier" "^0.0.1" "@mapbox/vector-tile" "^1.3.1" "@mapbox/whoots-js" "^3.1.0" - "@maplibre/maplibre-gl-style-spec" "^20.1.1" + "@maplibre/maplibre-gl-style-spec" "^20.3.0" "@types/geojson" "^7946.0.14" "@types/geojson-vt" "3.2.5" + "@types/junit-report-builder" "^3.0.2" "@types/mapbox__point-geometry" "^0.1.4" "@types/mapbox__vector-tile" "^1.3.4" "@types/pbf" "^3.0.5" @@ -6413,9 +6415,9 @@ minimist@^1.2.6, minimist@^1.2.8: integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mjolnir.js@^2.7.0: - version "2.7.1" - resolved "https://registry.yarnpkg.com/mjolnir.js/-/mjolnir.js-2.7.1.tgz#4e12590fe168b377c9c669b9c31aa5a62f8b8460" - integrity sha512-72BeUWgTv2cj5aZQKpwL8caNUFhXZ9bDm1hxpNj70XJQ62IBnTZmtv/WPxJvtaVNhzNo+D2U8O6ryNI0zImYcw== + version "2.7.3" + resolved "https://registry.yarnpkg.com/mjolnir.js/-/mjolnir.js-2.7.3.tgz#b71902edaa387f14c7fe6e9b1f611c0ce814240a" + integrity sha512-Z5z/+FzZqOSO3juSVKV3zcm4R2eAlWwlKMcqHmyFEJAaLILNcDKnIbnb4/kbcGyIuhtdWrzu8WOIR7uM6I34aw== dependencies: "@types/hammerjs" "^2.0.41" hammerjs "^2.0.8" @@ -6470,6 +6472,11 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -7141,7 +7148,16 @@ postcss-zindex@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@8.4.31, postcss@^8.3.11, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.7: +postcss@8.4.38: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + +postcss@^8.3.11, postcss@^8.4.13, postcss@^8.4.14, postcss@^8.4.7: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -7156,9 +7172,9 @@ potpack@^2.0.0: integrity sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw== preact@^10.17.0: - version "10.21.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.21.0.tgz#5b0335c873a1724deb66e517830db4fd310c24f6" - integrity sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg== + version "10.22.0" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.22.0.tgz#a50f38006ae438d255e2631cbdaf7488e6dd4e16" + integrity sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw== prepend-http@^2.0.0: version "2.0.0" @@ -7166,9 +7182,9 @@ prepend-http@^2.0.0: integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + version "3.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" + integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== pretty-error@^4.0.0: version "4.0.0" @@ -8213,6 +8229,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -8389,19 +8410,19 @@ style-to-object@0.3.0, style-to-object@^0.3.0: inline-style-parser "0.1.1" styled-components@^6.1.9: - version "6.1.9" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.9.tgz#cf2ac444979a925a3553d0bac3ba7688891e4625" - integrity sha512-aBOqs0uMsYufFXSE4q6cA6Ty1fwZuMk4BJRHfiGSna59F1otnxiDelwhN4fEwmBtIymmF0ZqXHnpSigr2ps9Cg== + version "6.1.11" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.11.tgz#01948e5195bf1d39e57e0a85b41958c80e40cfb8" + integrity sha512-Ui0jXPzbp1phYij90h12ksljKGqF8ncGx+pjrNPsSPhbUUjWT2tD1FwGo2LF6USCnbrsIhNngDfodhxbegfEOA== dependencies: - "@emotion/is-prop-valid" "1.2.1" + "@emotion/is-prop-valid" "1.2.2" "@emotion/unitless" "0.8.1" - "@types/stylis" "4.2.0" + "@types/stylis" "4.2.5" css-to-react-native "3.2.0" - csstype "3.1.2" - postcss "8.4.31" + csstype "3.1.3" + postcss "8.4.38" shallowequal "1.1.0" - stylis "4.3.1" - tslib "2.5.0" + stylis "4.3.2" + tslib "2.6.2" stylehacks@^5.1.0: version "5.1.0" @@ -8411,10 +8432,10 @@ stylehacks@^5.1.0: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" -stylis@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" - integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== +stylis@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" + integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== supercluster@^8.0.1: version "8.0.1" @@ -8583,10 +8604,10 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -tslib@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.4.0" @@ -9180,14 +9201,14 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^7.3.1: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.4.2: - version "8.8.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0" - integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== xdg-basedir@^4.0.0: version "4.0.0"