diff --git a/deno.jsonc b/deno.jsonc index 763748e..86479a1 100644 --- a/deno.jsonc +++ b/deno.jsonc @@ -1,4 +1,9 @@ { + "$schema": "https://deno.land/x/deno/cli/schemas/config-file.v1.json", + "name": "@runreal/cli", + "version": "1.6.0", + "description": "The open source Unreal Engine toolkit", + "license": "MIT", "tasks": { "dev": "deno run -A --watch=src src/index.ts", "test": "deno test -A --watch", @@ -31,7 +36,8 @@ "include": [ "src/", "tests/", - "deno.jsonc" + "deno.jsonc", + "release-please-config.json" ], "useTabs": true, "lineWidth": 120, @@ -51,18 +57,25 @@ "@std/dotenv": "jsr:@std/dotenv@0.225.3", "@std/fmt": "jsr:@std/fmt@1.0.6", "@std/fs": "jsr:@std/fs@^1.0.16", + "@std/json": "jsr:@std/json@^1.0.2", "@std/jsonc": "jsr:@std/jsonc@1.0.1", "@std/path": "jsr:@std/path@1.0.8", - "@std/streams": "jsr:@std/streams@1.0.9", + "@std/streams": "jsr:@std/streams@^1.0.9", "@std/testing": "jsr:@std/testing@1.0.11", + "@std/ulid": "jsr:@std/ulid@^1.0.0", "esbuild": "npm:esbuild@0.25.2", "ueblueprint": "npm:ueblueprint@2.0.0", "zod": "npm:zod@3.24.2", "zod-to-json-schema": "npm:zod-to-json-schema@3.24.5", - "ndjson": "https://deno.land/x/ndjson@1.1.0/mod.ts", - "nanoid": "npm:nanoid@5.1", - "ulid": "https://deno.land/x/ulid@v0.3.0/mod.ts", - "xml2js": "https://deno.land/x/xml2js@1.0.0/mod.ts", - "globber": "https://deno.land/x/globber@0.1.0/mod.ts" + "nanoid": "npm:nanoid@5.1" + }, + "exports": { + ".": "./src/index.ts" + }, + "publish": { + "include": [ + "README.md", + "src" + ] } } diff --git a/deno.lock b/deno.lock index 9b63de3..a2a7673 100644 --- a/deno.lock +++ b/deno.lock @@ -11,58 +11,44 @@ "jsr:@david/path@0.2": "0.2.0", "jsr:@david/which@~0.4.1": "0.4.1", "jsr:@luca/esbuild-deno-loader@0.11.1": "0.11.1", - "jsr:@oak/commons@1": "1.0.1", - "jsr:@oak/oak@*": "17.1.4", "jsr:@rebeccastevens/deepmerge@7.1.5": "7.1.5", "jsr:@std/assert@0.221": "0.221.0", - "jsr:@std/assert@1": "1.0.13", "jsr:@std/assert@1.0.12": "1.0.12", "jsr:@std/assert@^1.0.12": "1.0.12", "jsr:@std/assert@^1.0.2": "1.0.12", "jsr:@std/assert@~1.0.6": "1.0.12", "jsr:@std/async@^1.0.12": "1.0.12", "jsr:@std/bytes@0.221": "0.221.0", - "jsr:@std/bytes@1": "1.0.5", "jsr:@std/bytes@^1.0.2": "1.0.5", "jsr:@std/bytes@^1.0.5": "1.0.5", - "jsr:@std/crypto@1": "1.0.4", - "jsr:@std/data-structures@^1.0.6": "1.0.6", + "jsr:@std/data-structures@^1.0.6": "1.0.7", "jsr:@std/dotenv@0.225.3": "0.225.3", - "jsr:@std/encoding@1": "1.0.10", - "jsr:@std/encoding@^1.0.10": "1.0.10", - "jsr:@std/encoding@^1.0.5": "1.0.9", - "jsr:@std/encoding@~1.0.5": "1.0.9", + "jsr:@std/encoding@^1.0.5": "1.0.10", + "jsr:@std/encoding@~1.0.5": "1.0.10", "jsr:@std/fmt@1": "1.0.6", "jsr:@std/fmt@1.0.6": "1.0.6", "jsr:@std/fmt@~1.0.2": "1.0.6", - "jsr:@std/fs@*": "1.0.17", - "jsr:@std/fs@1": "1.0.16", - "jsr:@std/fs@^1.0.1": "1.0.16", - "jsr:@std/fs@^1.0.16": "1.0.16", - "jsr:@std/http@1": "1.0.15", + "jsr:@std/fs@1": "1.0.17", + "jsr:@std/fs@^1.0.1": "1.0.17", + "jsr:@std/fs@^1.0.16": "1.0.17", "jsr:@std/internal@^1.0.1": "1.0.6", "jsr:@std/internal@^1.0.6": "1.0.6", "jsr:@std/io@0.221": "0.221.0", - "jsr:@std/io@~0.224.9": "0.224.9", - "jsr:@std/json@1": "1.0.1", - "jsr:@std/jsonc@1.0.1": "1.0.1", - "jsr:@std/media-types@1": "1.1.0", - "jsr:@std/path@*": "1.0.9", - "jsr:@std/path@1": "1.0.9", + "jsr:@std/json@^1.0.2": "1.0.2", + "jsr:@std/path@1": "1.0.8", "jsr:@std/path@1.0.8": "1.0.8", - "jsr:@std/path@^1.0.2": "1.0.8", + "jsr:@std/path@^1.0.2": "1.0.9", "jsr:@std/path@^1.0.6": "1.0.8", - "jsr:@std/path@^1.0.8": "1.0.8", "jsr:@std/path@^1.0.9": "1.0.9", "jsr:@std/streams@0.221": "0.221.0", - "jsr:@std/streams@1.0.9": "1.0.9", + "jsr:@std/streams@^1.0.9": "1.0.9", "jsr:@std/testing@1.0.0": "1.0.0", "jsr:@std/testing@1.0.11": "1.0.11", - "jsr:@std/text@~1.0.7": "1.0.12", + "jsr:@std/text@~1.0.7": "1.0.13", + "jsr:@std/ulid@1": "1.0.0", "npm:@types/node@*": "22.12.0", "npm:esbuild@0.25.2": "0.25.2", "npm:nanoid@5.1": "5.1.5", - "npm:path-to-regexp@^6.3.0": "6.3.0", "npm:ueblueprint@2.0.0": "2.0.0", "npm:zod-to-json-schema@3.24.5": "3.24.5_zod@3.24.2", "npm:zod@3.24.2": "3.24.2" @@ -73,8 +59,7 @@ "dependencies": [ "jsr:@cliffy/internal", "jsr:@std/encoding@~1.0.5", - "jsr:@std/fmt@~1.0.2", - "jsr:@std/io@~0.224.9" + "jsr:@std/fmt@~1.0.2" ] }, "@cliffy/command@1.0.0-rc.7": { @@ -122,7 +107,7 @@ "jsr:@david/which", "jsr:@std/fmt@1", "jsr:@std/fs@1", - "jsr:@std/io@0.221", + "jsr:@std/io", "jsr:@std/path@1", "jsr:@std/streams@0.221" ] @@ -145,29 +130,6 @@ "jsr:@std/path@^1.0.6" ] }, - "@oak/commons@1.0.1": { - "integrity": "889ff210f0b4292591721be07244ecb1b5c118742f5273c70cf30d7cd4184d0c", - "dependencies": [ - "jsr:@std/assert@1", - "jsr:@std/bytes@1", - "jsr:@std/crypto", - "jsr:@std/encoding@1", - "jsr:@std/http", - "jsr:@std/media-types" - ] - }, - "@oak/oak@17.1.4": { - "integrity": "60530b582bf276ff741e39cc664026781aa08dd5f2bc5134d756cc427bf2c13e", - "dependencies": [ - "jsr:@oak/commons", - "jsr:@std/assert@1", - "jsr:@std/bytes@1", - "jsr:@std/http", - "jsr:@std/media-types", - "jsr:@std/path@1", - "npm:path-to-regexp" - ] - }, "@rebeccastevens/deepmerge@7.1.5": { "integrity": "edefc338e7ee643606002c0c532e3c652e86348ab577b9188b4c974afee7b421" }, @@ -180,9 +142,6 @@ "jsr:@std/internal@^1.0.6" ] }, - "@std/assert@1.0.13": { - "integrity": "ae0d31e41919b12c656c742b22522c32fb26ed0cba32975cb0de2a273cb68b29" - }, "@std/async@1.0.12": { "integrity": "d1bfcec459e8012846fe4e38dfc4241ab23240ecda3d8d6dfcf6d81a632e803d" }, @@ -192,42 +151,24 @@ "@std/bytes@1.0.5": { "integrity": "4465dd739d7963d964c809202ebea6d5c6b8e3829ef25c6a224290fbb8a1021e" }, - "@std/crypto@1.0.4": { - "integrity": "cee245c453bd5366207f4d8aa25ea3e9c86cecad2be3fefcaa6cb17203d79340" - }, - "@std/data-structures@1.0.6": { - "integrity": "76a7fd8080c66604c0496220a791860492ab21a04a63a969c0b9a0609bbbb760" + "@std/data-structures@1.0.7": { + "integrity": "16932d2c8d281f65eaaa2209af2473209881e33b1ced54cd1b015e7b4cdbb0d2" }, "@std/dotenv@0.225.3": { "integrity": "a95e5b812c27b0854c52acbae215856d9cce9d4bbf774d938c51d212711e8d4a" }, - "@std/encoding@1.0.9": { - "integrity": "025b8f18eb1749bc30d1353bf48b77d1eb5e35610220fa226f5a046b9240c5d7" - }, "@std/encoding@1.0.10": { "integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1" }, "@std/fmt@1.0.6": { "integrity": "a2c56a69a2369876ddb3ad6a500bb6501b5bad47bb3ea16bfb0c18974d2661fc" }, - "@std/fs@1.0.16": { - "integrity": "81878f62b6eeda0bf546197fc3daa5327c132fee1273f6113f940784a468b036", - "dependencies": [ - "jsr:@std/path@^1.0.8" - ] - }, "@std/fs@1.0.17": { "integrity": "1c00c632677c1158988ef7a004cb16137f870aafdb8163b9dce86ec652f3952b", "dependencies": [ "jsr:@std/path@^1.0.9" ] }, - "@std/http@1.0.15": { - "integrity": "435a4934b4e196e82a8233f724da525f7b7112f3566502f28815e94764c19159", - "dependencies": [ - "jsr:@std/encoding@^1.0.10" - ] - }, "@std/internal@1.0.6": { "integrity": "9533b128f230f73bd209408bb07a4b12f8d4255ab2a4d22a1fd6d87304aca9a4" }, @@ -238,21 +179,12 @@ "jsr:@std/bytes@0.221" ] }, - "@std/io@0.224.9": { - "integrity": "4414664b6926f665102e73c969cfda06d2c4c59bd5d0c603fd4f1b1c840d6ee3" - }, - "@std/json@1.0.1": { - "integrity": "1f0f70737e8827f9acca086282e903677bc1bb0c8ffcd1f21bca60039563049f" - }, - "@std/jsonc@1.0.1": { - "integrity": "6b36956e2a7cbb08ca5ad7fbec72e661e6217c202f348496ea88747636710dda", + "@std/json@1.0.2": { + "integrity": "d9e5497801c15fb679f55a2c01c7794ad7a5dfda4dd1bebab5e409cb5e0d34d4", "dependencies": [ - "jsr:@std/json" + "jsr:@std/streams@^1.0.9" ] }, - "@std/media-types@1.1.0": { - "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" - }, "@std/path@1.0.8": { "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" }, @@ -262,7 +194,7 @@ "@std/streams@0.221.0": { "integrity": "47f2f74634b47449277c0ee79fe878da4424b66bd8975c032e3afdca88986e61", "dependencies": [ - "jsr:@std/io@0.221" + "jsr:@std/io" ] }, "@std/streams@1.0.9": { @@ -285,182 +217,97 @@ "dependencies": [ "jsr:@std/assert@^1.0.12", "jsr:@std/async", - "jsr:@std/data-structures", - "jsr:@std/fs@^1.0.16", - "jsr:@std/internal@^1.0.6", - "jsr:@std/path@^1.0.8" + "jsr:@std/data-structures" ] }, - "@std/text@1.0.12": { - "integrity": "921132a41e03a2363f76ee5afe83c90a6271596aa95c137494edcb3404a564a5" + "@std/text@1.0.13": { + "integrity": "2191c90e6e667b0c3b7dea1cd082137580a93b3c136bad597c0212d5fe006eb1" + }, + "@std/ulid@1.0.0": { + "integrity": "d41c3d27a907714413649fee864b7cde8d42ee68437d22b79d5de4f81d808780" } }, "npm": { - "@esbuild/aix-ppc64@0.23.1": { - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "os": ["aix"], - "cpu": ["ppc64"] - }, "@esbuild/aix-ppc64@0.25.2": { "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "os": ["aix"], "cpu": ["ppc64"] }, - "@esbuild/android-arm64@0.23.1": { - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "os": ["android"], - "cpu": ["arm64"] - }, "@esbuild/android-arm64@0.25.2": { "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "os": ["android"], "cpu": ["arm64"] }, - "@esbuild/android-arm@0.23.1": { - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "os": ["android"], - "cpu": ["arm"] - }, "@esbuild/android-arm@0.25.2": { "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "os": ["android"], "cpu": ["arm"] }, - "@esbuild/android-x64@0.23.1": { - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "os": ["android"], - "cpu": ["x64"] - }, "@esbuild/android-x64@0.25.2": { "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "os": ["android"], "cpu": ["x64"] }, - "@esbuild/darwin-arm64@0.23.1": { - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "os": ["darwin"], - "cpu": ["arm64"] - }, "@esbuild/darwin-arm64@0.25.2": { "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "os": ["darwin"], "cpu": ["arm64"] }, - "@esbuild/darwin-x64@0.23.1": { - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "os": ["darwin"], - "cpu": ["x64"] - }, "@esbuild/darwin-x64@0.25.2": { "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "os": ["darwin"], "cpu": ["x64"] }, - "@esbuild/freebsd-arm64@0.23.1": { - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "os": ["freebsd"], - "cpu": ["arm64"] - }, "@esbuild/freebsd-arm64@0.25.2": { "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "os": ["freebsd"], "cpu": ["arm64"] }, - "@esbuild/freebsd-x64@0.23.1": { - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "os": ["freebsd"], - "cpu": ["x64"] - }, "@esbuild/freebsd-x64@0.25.2": { "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "os": ["freebsd"], "cpu": ["x64"] }, - "@esbuild/linux-arm64@0.23.1": { - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "os": ["linux"], - "cpu": ["arm64"] - }, "@esbuild/linux-arm64@0.25.2": { "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "os": ["linux"], "cpu": ["arm64"] }, - "@esbuild/linux-arm@0.23.1": { - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "os": ["linux"], - "cpu": ["arm"] - }, "@esbuild/linux-arm@0.25.2": { "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "os": ["linux"], "cpu": ["arm"] }, - "@esbuild/linux-ia32@0.23.1": { - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "os": ["linux"], - "cpu": ["ia32"] - }, "@esbuild/linux-ia32@0.25.2": { "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "os": ["linux"], "cpu": ["ia32"] }, - "@esbuild/linux-loong64@0.23.1": { - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "os": ["linux"], - "cpu": ["loong64"] - }, "@esbuild/linux-loong64@0.25.2": { "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "os": ["linux"], "cpu": ["loong64"] }, - "@esbuild/linux-mips64el@0.23.1": { - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "os": ["linux"], - "cpu": ["mips64el"] - }, "@esbuild/linux-mips64el@0.25.2": { "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "os": ["linux"], "cpu": ["mips64el"] }, - "@esbuild/linux-ppc64@0.23.1": { - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "os": ["linux"], - "cpu": ["ppc64"] - }, "@esbuild/linux-ppc64@0.25.2": { "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "os": ["linux"], "cpu": ["ppc64"] }, - "@esbuild/linux-riscv64@0.23.1": { - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "os": ["linux"], - "cpu": ["riscv64"] - }, "@esbuild/linux-riscv64@0.25.2": { "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "os": ["linux"], "cpu": ["riscv64"] }, - "@esbuild/linux-s390x@0.23.1": { - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "os": ["linux"], - "cpu": ["s390x"] - }, "@esbuild/linux-s390x@0.25.2": { "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "os": ["linux"], "cpu": ["s390x"] }, - "@esbuild/linux-x64@0.23.1": { - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "os": ["linux"], - "cpu": ["x64"] - }, "@esbuild/linux-x64@0.25.2": { "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", "os": ["linux"], @@ -471,71 +318,36 @@ "os": ["netbsd"], "cpu": ["arm64"] }, - "@esbuild/netbsd-x64@0.23.1": { - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "os": ["netbsd"], - "cpu": ["x64"] - }, "@esbuild/netbsd-x64@0.25.2": { "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "os": ["netbsd"], "cpu": ["x64"] }, - "@esbuild/openbsd-arm64@0.23.1": { - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "os": ["openbsd"], - "cpu": ["arm64"] - }, "@esbuild/openbsd-arm64@0.25.2": { "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", "os": ["openbsd"], "cpu": ["arm64"] }, - "@esbuild/openbsd-x64@0.23.1": { - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "os": ["openbsd"], - "cpu": ["x64"] - }, "@esbuild/openbsd-x64@0.25.2": { "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "os": ["openbsd"], "cpu": ["x64"] }, - "@esbuild/sunos-x64@0.23.1": { - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "os": ["sunos"], - "cpu": ["x64"] - }, "@esbuild/sunos-x64@0.25.2": { "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "os": ["sunos"], "cpu": ["x64"] }, - "@esbuild/win32-arm64@0.23.1": { - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "os": ["win32"], - "cpu": ["arm64"] - }, "@esbuild/win32-arm64@0.25.2": { "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "os": ["win32"], "cpu": ["arm64"] }, - "@esbuild/win32-ia32@0.23.1": { - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "os": ["win32"], - "cpu": ["ia32"] - }, "@esbuild/win32-ia32@0.25.2": { "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "os": ["win32"], "cpu": ["ia32"] }, - "@esbuild/win32-x64@0.23.1": { - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "os": ["win32"], - "cpu": ["x64"] - }, "@esbuild/win32-x64@0.25.2": { "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "os": ["win32"], @@ -562,31 +374,31 @@ "esbuild@0.25.2": { "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "optionalDependencies": [ - "@esbuild/aix-ppc64@0.25.2", - "@esbuild/android-arm@0.25.2", - "@esbuild/android-arm64@0.25.2", - "@esbuild/android-x64@0.25.2", - "@esbuild/darwin-arm64@0.25.2", - "@esbuild/darwin-x64@0.25.2", - "@esbuild/freebsd-arm64@0.25.2", - "@esbuild/freebsd-x64@0.25.2", - "@esbuild/linux-arm@0.25.2", - "@esbuild/linux-arm64@0.25.2", - "@esbuild/linux-ia32@0.25.2", - "@esbuild/linux-loong64@0.25.2", - "@esbuild/linux-mips64el@0.25.2", - "@esbuild/linux-ppc64@0.25.2", - "@esbuild/linux-riscv64@0.25.2", - "@esbuild/linux-s390x@0.25.2", - "@esbuild/linux-x64@0.25.2", + "@esbuild/aix-ppc64", + "@esbuild/android-arm", + "@esbuild/android-arm64", + "@esbuild/android-x64", + "@esbuild/darwin-arm64", + "@esbuild/darwin-x64", + "@esbuild/freebsd-arm64", + "@esbuild/freebsd-x64", + "@esbuild/linux-arm", + "@esbuild/linux-arm64", + "@esbuild/linux-ia32", + "@esbuild/linux-loong64", + "@esbuild/linux-mips64el", + "@esbuild/linux-ppc64", + "@esbuild/linux-riscv64", + "@esbuild/linux-s390x", + "@esbuild/linux-x64", "@esbuild/netbsd-arm64", - "@esbuild/netbsd-x64@0.25.2", - "@esbuild/openbsd-arm64@0.25.2", - "@esbuild/openbsd-x64@0.25.2", - "@esbuild/sunos-x64@0.25.2", - "@esbuild/win32-arm64@0.25.2", - "@esbuild/win32-ia32@0.25.2", - "@esbuild/win32-x64@0.25.2" + "@esbuild/netbsd-x64", + "@esbuild/openbsd-arm64", + "@esbuild/openbsd-x64", + "@esbuild/sunos-x64", + "@esbuild/win32-arm64", + "@esbuild/win32-ia32", + "@esbuild/win32-x64" ], "scripts": true, "bin": true @@ -620,9 +432,6 @@ "parsernostrum@1.2.6": { "integrity": "sha512-Ho+y3yoqVCHRtqsKVqltsv17MgjP8Np+VIC8nd2cyEAsko5hNiZZpA6mi0krvfv8XmrS+tOpra83d4UctJtmQg==" }, - "path-to-regexp@6.3.0": { - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" - }, "ueblueprint@2.0.0": { "integrity": "sha512-M9xIAAl7H6pqkkwJ5pyDLiOUkMq7ti75RiD6W20Sp3e+VW1KhQ3M9H9BXyw61qF8hKjD2Y+CYTd260hGFWjJpg==", "dependencies": [ @@ -643,51 +452,6 @@ "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==" } }, - "remote": { - "https://deno.land/std@0.140.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", - "https://deno.land/std@0.140.0/bytes/bytes_list.ts": "67eb118e0b7891d2f389dad4add35856f4ad5faab46318ff99653456c23b025d", - "https://deno.land/std@0.140.0/bytes/equals.ts": "fc16dff2090cced02497f16483de123dfa91e591029f985029193dfaa9d894c9", - "https://deno.land/std@0.140.0/bytes/mod.ts": "763f97d33051cc3f28af1a688dfe2830841192a9fea0cbaa55f927b49d49d0bf", - "https://deno.land/std@0.140.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b", - "https://deno.land/std@0.150.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74", - "https://deno.land/std@0.150.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49", - "https://deno.land/std@0.150.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3", - "https://deno.land/std@0.150.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09", - "https://deno.land/std@0.150.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b", - "https://deno.land/std@0.150.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633", - "https://deno.land/std@0.150.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee", - "https://deno.land/std@0.150.0/path/mod.ts": "4945b430b759b0b3d98f2a278542cbcf95e0ad2bd8eaaed3c67322b306b2b346", - "https://deno.land/std@0.150.0/path/posix.ts": "c1f7afe274290ea0b51da07ee205653b2964bd74909a82deb07b69a6cc383aaa", - "https://deno.land/std@0.150.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9", - "https://deno.land/std@0.150.0/path/win32.ts": "bd7549042e37879c68ff2f8576a25950abbfca1d696d41d82c7bca0b7e6f452c", - "https://deno.land/x/globber@0.1.0/mod.ts": "971e58757909b2ef722e3dda1125aea8f5694601203ad835bdfc020f202bd5b8", - "https://deno.land/x/globber@0.1.0/src/create_matcher.ts": "85be3a6d67376905521aed9da51db756d1ee747ebd0d52b88fc7b78a6831a393", - "https://deno.land/x/globber@0.1.0/src/deps.ts": "179ba170213f7a35b7b794c409e7ca523da58644139c053721f93575dcbe616e", - "https://deno.land/x/globber@0.1.0/src/errors.ts": "aacdb19cda93423ca25c03089eeaa2d613ef09a631e6f41f86e457f64762cf76", - "https://deno.land/x/globber@0.1.0/src/get_path.ts": "1da42fbcc1451d48f21edf7a1ceecbf19fd34845fc2962fab2d70bb804a3a03b", - "https://deno.land/x/globber@0.1.0/src/globber.ts": "814cc13ddb31f9112b44def2815844c427f3ed0a145d1707f673b3ed4d018003", - "https://deno.land/x/globber@0.1.0/src/junk.ts": "68cdbfc55d9e4664200793c31f0cc686a8e75939fd51dd9013df8328444c2040", - "https://deno.land/x/globber@0.1.0/src/meta.ts": "989705d65480e8be2c5b0ca4fa8bf96ee0669f2336497b768f8d4d669e4ad95c", - "https://deno.land/x/globber@0.1.0/src/normalize_path.ts": "08ffa246c27dfbc345f4d096455921027079c7d1ef58555bb6cfb9b8bdd64415", - "https://deno.land/x/globber@0.1.0/src/utils.ts": "d7b0c1db9e627c0ee2e4e1d435c605f5c89e570984bd790c435db54798eafb9d", - "https://deno.land/x/ndjson@1.1.0/deps.ts": "95a20045c9c1b90b9573043eae5b4b240d0ca7bac495d07a0038fa4d34902496", - "https://deno.land/x/ndjson@1.1.0/lib/parse.ts": "2b90db51554482737cd4f9fba9ced8f118040ca2b320606139867818f5e5c667", - "https://deno.land/x/ndjson@1.1.0/lib/read.ts": "992e96d0012b538073f09efa7752d6c6531a047c0b833340f324c79d8ea023aa", - "https://deno.land/x/ndjson@1.1.0/lib/serialize.ts": "3d42c80db8681b7c5c8ae1f587a370da01085e9529396607f28582b58fb873f2", - "https://deno.land/x/ndjson@1.1.0/lib/write.ts": "e111c4086d814d16c7e4151e8a1bc72149e4e3c98a1b82e7307d3c758a1ba242", - "https://deno.land/x/ndjson@1.1.0/mod.ts": "b3cd70db39023d11fd93ce2b18e193682edaa99d32cf57b6f08d74276c306aa6", - "https://deno.land/x/notranspile_saxes@v6.0.0-deno/saxes.ts": "26a97ff5f36ca89099122180a72ce8adf96aa04984c0f6916d150b1f50bee1a4", - "https://deno.land/x/notranspile_xmlchars@v2.2.0-deno/xml/1.0/ed5.ts": "a0aa62e43aa80ce1fd4cf211ff7211084d30ee945e00d7d01bc9c74fdbe94efa", - "https://deno.land/x/notranspile_xmlchars@v2.2.0-deno/xml/1.1/ed2.ts": "ef316e2fdc10274f631c94d3b29773779d8516e58f07530c50a63efeb8ddbfcb", - "https://deno.land/x/notranspile_xmlchars@v2.2.0-deno/xmlns/1.0/ed3.ts": "436536158941b761e58b2edd5612a9db76ec68e4c55be78e137aee442138f90d", - "https://deno.land/x/ulid@v0.3.0/mod.ts": "f7ff065b66abd485051fc68af23becef6ccc7e81f7774d7fcfd894a4b2da1984", - "https://deno.land/x/xml2js@1.0.0/mod.ts": "62add6d5672e3ea523fd4398632742080bff027abe0fae96d74e28edb7b6a328", - "https://deno.land/x/xml2js@1.0.0/options-helper.ts": "37e04aec6262c01513c885e06bb3e1d2b1e52dce83784b68b099f298c858aefe", - "https://deno.land/x/xml2js@1.0.0/options.ts": "5919bb07f3edb4f7ba1fa00a67eaa8075d02bfa767a438d46c8d705be30743d5", - "https://deno.land/x/xml2js@1.0.0/xml2js.ts": "d056e5003f03722e0f48e9c871bc5b04447b74f619aa825a951a34a0509883e1", - "https://gist.githubusercontent.com/runreal-warman/db0e872f4e8404ba9d5ce3da99970a18/raw/15a66fd270d852e3ce9d203d292e37b2d598c4e7/test.ts": "62e482892cd5c0f8e5ef666d1daa02aa317267bf6eba23fc3025faf127b54a0e", - "https://gist.githubusercontent.com/runreal-warman/db0e872f4e8404ba9d5ce3da99970a18/raw/be0ea35b57c9c289fa5ee500841eda1fbed88a7e/test.ts": "f0a23a3f74b5b314bbee8ebea5f8f35ddd9997a8acfb4329699720013bbc0ed8" - }, "workspace": { "dependencies": [ "jsr:@cliffy/ansi@1.0.0-rc.7", @@ -700,10 +464,12 @@ "jsr:@std/dotenv@0.225.3", "jsr:@std/fmt@1.0.6", "jsr:@std/fs@^1.0.16", + "jsr:@std/json@^1.0.2", "jsr:@std/jsonc@1.0.1", "jsr:@std/path@1.0.8", - "jsr:@std/streams@1.0.9", + "jsr:@std/streams@^1.0.9", "jsr:@std/testing@1.0.11", + "jsr:@std/ulid@1", "npm:esbuild@0.25.2", "npm:nanoid@5.1", "npm:ueblueprint@2.0.0", diff --git a/src/lib/engine.ts b/src/lib/engine.ts index 1741b1a..bc050e2 100644 --- a/src/lib/engine.ts +++ b/src/lib/engine.ts @@ -1,5 +1,5 @@ import * as path from '@std/path' -import { readNdjson } from 'ndjson' +import * as ndjson from '../lib/ndjson.ts' import { exec } from '../lib/utils.ts' interface EngineVersionData { @@ -174,12 +174,7 @@ export abstract class Engine { async getAutomationToolLogs(enginePath: string) { const logJson = path.join(enginePath, 'Engine', 'Programs', 'AutomationTool', 'Saved', 'Logs', 'Log.json') - let logs: AutomationToolLogs[] = [] - try { - logs = await readNdjson(logJson) as unknown as AutomationToolLogs[] - } catch (e) { - // pass - } + const logs = await ndjson.safeParse(logJson, []) return logs } } diff --git a/src/lib/ndjson.ts b/src/lib/ndjson.ts new file mode 100644 index 0000000..7518e3a --- /dev/null +++ b/src/lib/ndjson.ts @@ -0,0 +1,26 @@ +import { TextLineStream } from '@std/streams/text-line-stream' +import { JsonParseStream, type JsonValue } from '@std/json' + +const parse = async (file: string): Promise => { + using f = await Deno.open(file, { read: true }) + const readable = f.readable + .pipeThrough(new TextDecoderStream()) + .pipeThrough(new TextLineStream()) + .pipeThrough(new JsonParseStream()) + + const data: JsonValue[] = [] + for await (const item of readable) { + data.push(item as JsonValue) + } + return data +} + +const safeParse = async (file: string, fallback: T): Promise => { + try { + return await parse(file) as T + } catch (e) { + return fallback + } +} + +export { parse, safeParse } diff --git a/src/lib/project.ts b/src/lib/project.ts index 5c28ff1..93bd0a9 100644 --- a/src/lib/project.ts +++ b/src/lib/project.ts @@ -1,6 +1,5 @@ import * as path from '@std/path' -import { globber } from 'globber' - +import { expandGlob } from '@std/fs' import { ValidationError } from '@cliffy/command' import { logger } from '../lib/logger.ts' @@ -270,19 +269,17 @@ export class Project { async runClean(dryRun?: boolean) { const cwd = this.projectFileVars.projectDir - - const iterator = globber({ - cwd, - include: ['**/Binaries/**', '**/Intermediate/**'], - }) - for await (const file of iterator) { - if (dryRun) { - console.log('Would delete:', file.absolute) - continue - } - if (file.isFile) { - console.log('Deleting:', file.absolute) - await Deno.remove(file.absolute) + const patterns = ['**/Binaries/**', '**/Intermediate/**'] + for (const pattern of patterns) { + for await (const file of expandGlob(pattern, { root: cwd })) { + if (file.isFile) { + if (dryRun) { + logger.info(`[dry-run] deleting ${file.path}`) + } else { + logger.info(`deleting ${file.path}`) + await Deno.remove(file.path) + } + } } } } @@ -329,9 +326,6 @@ export async function createProject(enginePath: string, projectPath: string): Pr projectArgument: `-project=${projectFile}`, projectDir: path.dirname(projectFile), } - console.log( - `projectFullPath=${projectFileVars.projectFullPath} projectName=${projectFileVars.projectName} projectArgument=${projectFileVars.projectArgument} projectDir=${projectFileVars.projectDir}`, - ) const project = new Project(createEngine(enginePath), projectFileVars) return Promise.resolve(project) diff --git a/src/lib/ulid.ts b/src/lib/ulid.ts index 67bd635..c7e0d03 100644 --- a/src/lib/ulid.ts +++ b/src/lib/ulid.ts @@ -1,3 +1,2 @@ -import { monotonicFactory } from 'ulid' -const ulid = monotonicFactory() +import { ulid } from '@std/ulid' export { ulid } diff --git a/src/lib/utils.ts b/src/lib/utils.ts index e2acaff..20d91f4 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,6 +1,5 @@ import { mergeReadableStreams } from '@std/streams' import * as path from '@std/path' -import { xml2js } from 'xml2js' import { createEngine } from './engine.ts' import type { GitIgnoreFiles, UeDepsManifest } from './types.ts' @@ -259,6 +258,8 @@ export const deleteEngineHooks = async (enginePath: string) => { await Deno.remove(hooksPath, { recursive: true }).catch(() => {}) } +/* +@deprecated - revist with alternative xml parser export const getDepsList = async (enginePath: string) => { const ueDependenciesManifest = path.join(enginePath, '.uedependencies') const data = await Deno.readTextFile(ueDependenciesManifest) @@ -270,6 +271,7 @@ export const getDepsList = async (enginePath: string) => { timestamp: Timestamp, })) } +*/ export const getGitIgnoreList = ( enginePath: string,