diff --git a/Assets/Rivet/Editor/UI/Dock/Tabs/Develop.uxml b/Assets/Rivet/Editor/UI/Dock/Tabs/Develop.uxml
index 8988f5e..1e17fd9 100644
--- a/Assets/Rivet/Editor/UI/Dock/Tabs/Develop.uxml
+++ b/Assets/Rivet/Editor/UI/Dock/Tabs/Develop.uxml
@@ -42,5 +42,5 @@
-
+
diff --git a/Assets/Rivet/package.json b/Assets/Rivet/package.json
index 10f0767..ac45a2a 100644
--- a/Assets/Rivet/package.json
+++ b/Assets/Rivet/package.json
@@ -1,9 +1,9 @@
{
"name": "com.rivet.rivet",
"displayName": "Rivet",
- "version": "2.0.0-rc.1",
- "unity": "2021.3",
- "description": "Description of the Rivet package",
+ "version": "{{VERSION}}",
+ "unity": "2022.0",
+ "description": "Open-Source Multiplayer Tooling",
"keywords": [
"rivet",
"unity",
diff --git a/deno.json b/deno.json
deleted file mode 100644
index 12f4307..0000000
--- a/deno.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "lint": {
- "include": [
- "src/"
- ],
- "exclude": [
- "tests/"
- ],
- "rules": {
- "exclude": [
- "no-empty-interface",
- "no-explicit-any",
- "require-await"
- ]
- }
- },
- "fmt": {
- "useTabs": true
- }
-}
\ No newline at end of file
diff --git a/deno.lock b/deno.lock
deleted file mode 100644
index 52f8d89..0000000
--- a/deno.lock
+++ /dev/null
@@ -1,431 +0,0 @@
-{
- "version": "3",
- "packages": {
- "specifiers": {
- "jsr:@std/assert": "jsr:@std/assert@1.0.6",
- "jsr:@std/fs": "jsr:@std/fs@1.0.3",
- "jsr:@std/internal@^1.0.4": "jsr:@std/internal@1.0.4",
- "jsr:@std/path": "jsr:@std/path@1.0.4",
- "jsr:@std/path@^1.0.4": "jsr:@std/path@1.0.4",
- "npm:@prisma/adapter-pg@^5.12.0": "npm:@prisma/adapter-pg@5.17.0_pg@8.12.0",
- "npm:@types/node": "npm:@types/node@18.16.19",
- "npm:drizzle-orm@0.33.0": "npm:drizzle-orm@0.33.0_pg@8.12.0",
- "npm:glob": "npm:glob@11.0.0",
- "npm:pg@8.12.0": "npm:pg@8.12.0",
- "npm:pg@^8.11.3": "npm:pg@8.12.0",
- "npm:zod-validation-error@3.3.0": "npm:zod-validation-error@3.3.0_zod@3.23.8",
- "npm:zod@3.23.8": "npm:zod@3.23.8"
- },
- "jsr": {
- "@std/assert@1.0.6": {
- "integrity": "1904c05806a25d94fe791d6d883b685c9e2dcd60e4f9fc30f4fc5cf010c72207",
- "dependencies": [
- "jsr:@std/internal@^1.0.4"
- ]
- },
- "@std/fs@1.0.3": {
- "integrity": "3cb839b1360b0a42d8b367c3093bfe4071798e6694fa44cf1963e04a8edba4fe",
- "dependencies": [
- "jsr:@std/path@^1.0.4"
- ]
- },
- "@std/internal@1.0.4": {
- "integrity": "62e8e4911527e5e4f307741a795c0b0a9e6958d0b3790716ae71ce085f755422"
- },
- "@std/path@1.0.4": {
- "integrity": "48dd5d8389bcfcd619338a01bdf862cb7799933390146a54ae59356a0acc7105"
- }
- },
- "npm": {
- "@isaacs/cliui@8.0.2": {
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dependencies": {
- "string-width": "string-width@5.1.2",
- "string-width-cjs": "string-width@4.2.3",
- "strip-ansi": "strip-ansi@7.1.0",
- "strip-ansi-cjs": "strip-ansi@6.0.1",
- "wrap-ansi": "wrap-ansi@8.1.0",
- "wrap-ansi-cjs": "wrap-ansi@7.0.0"
- }
- },
- "@pkgjs/parseargs@0.11.0": {
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
- "dependencies": {}
- },
- "@prisma/adapter-pg@5.17.0_pg@8.12.0": {
- "integrity": "sha512-ZMHVGOxftEZEbIzQ8gEGQBnK5MxBwKuLcoLZ/hpYA//csVxQhsnBoi2iGYOMcSv6gD6y7k6FroAESk9KzRiMtw==",
- "dependencies": {
- "@prisma/driver-adapter-utils": "@prisma/driver-adapter-utils@5.17.0",
- "pg": "pg@8.12.0",
- "postgres-array": "postgres-array@3.0.2"
- }
- },
- "@prisma/debug@5.17.0": {
- "integrity": "sha512-l7+AteR3P8FXiYyo496zkuoiJ5r9jLQEdUuxIxNCN1ud8rdbH3GTxm+f+dCyaSv9l9WY+29L9czaVRXz9mULfg==",
- "dependencies": {}
- },
- "@prisma/driver-adapter-utils@5.17.0": {
- "integrity": "sha512-ivelC8JJg88krvuf3rGF82J3CYwYFmLhhAUdNnkr9LTjS30U5r8AYDhV12/TdmnwzgWZNqHA+icg2Vm+vmRBLw==",
- "dependencies": {
- "@prisma/debug": "@prisma/debug@5.17.0"
- }
- },
- "@types/node@18.16.19": {
- "integrity": "sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA==",
- "dependencies": {}
- },
- "ansi-regex@5.0.1": {
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dependencies": {}
- },
- "ansi-regex@6.0.1": {
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
- "dependencies": {}
- },
- "ansi-styles@4.3.0": {
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "color-convert@2.0.1"
- }
- },
- "ansi-styles@6.2.1": {
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
- "dependencies": {}
- },
- "balanced-match@1.0.2": {
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dependencies": {}
- },
- "brace-expansion@2.0.1": {
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "balanced-match@1.0.2"
- }
- },
- "color-convert@2.0.1": {
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "color-name@1.1.4"
- }
- },
- "color-name@1.1.4": {
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dependencies": {}
- },
- "cross-spawn@7.0.3": {
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dependencies": {
- "path-key": "path-key@3.1.1",
- "shebang-command": "shebang-command@2.0.0",
- "which": "which@2.0.2"
- }
- },
- "drizzle-orm@0.33.0_pg@8.12.0": {
- "integrity": "sha512-SHy72R2Rdkz0LEq0PSG/IdvnT3nGiWuRk+2tXZQ90GVq/XQhpCzu/EFT3V2rox+w8MlkBQxifF8pCStNYnERfA==",
- "dependencies": {
- "pg": "pg@8.12.0"
- }
- },
- "eastasianwidth@0.2.0": {
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dependencies": {}
- },
- "emoji-regex@8.0.0": {
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dependencies": {}
- },
- "emoji-regex@9.2.2": {
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dependencies": {}
- },
- "foreground-child@3.3.0": {
- "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
- "dependencies": {
- "cross-spawn": "cross-spawn@7.0.3",
- "signal-exit": "signal-exit@4.1.0"
- }
- },
- "glob@11.0.0": {
- "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==",
- "dependencies": {
- "foreground-child": "foreground-child@3.3.0",
- "jackspeak": "jackspeak@4.0.1",
- "minimatch": "minimatch@10.0.1",
- "minipass": "minipass@7.1.2",
- "package-json-from-dist": "package-json-from-dist@1.0.0",
- "path-scurry": "path-scurry@2.0.0"
- }
- },
- "is-fullwidth-code-point@3.0.0": {
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dependencies": {}
- },
- "isexe@2.0.0": {
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dependencies": {}
- },
- "jackspeak@4.0.1": {
- "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==",
- "dependencies": {
- "@isaacs/cliui": "@isaacs/cliui@8.0.2",
- "@pkgjs/parseargs": "@pkgjs/parseargs@0.11.0"
- }
- },
- "lru-cache@11.0.0": {
- "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==",
- "dependencies": {}
- },
- "minimatch@10.0.1": {
- "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==",
- "dependencies": {
- "brace-expansion": "brace-expansion@2.0.1"
- }
- },
- "minipass@7.1.2": {
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
- "dependencies": {}
- },
- "package-json-from-dist@1.0.0": {
- "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
- "dependencies": {}
- },
- "path-key@3.1.1": {
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dependencies": {}
- },
- "path-scurry@2.0.0": {
- "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==",
- "dependencies": {
- "lru-cache": "lru-cache@11.0.0",
- "minipass": "minipass@7.1.2"
- }
- },
- "pg-cloudflare@1.1.1": {
- "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
- "dependencies": {}
- },
- "pg-connection-string@2.6.4": {
- "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==",
- "dependencies": {}
- },
- "pg-int8@1.0.1": {
- "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
- "dependencies": {}
- },
- "pg-pool@3.6.2_pg@8.12.0": {
- "integrity": "sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==",
- "dependencies": {
- "pg": "pg@8.12.0"
- }
- },
- "pg-protocol@1.6.1": {
- "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==",
- "dependencies": {}
- },
- "pg-types@2.2.0": {
- "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
- "dependencies": {
- "pg-int8": "pg-int8@1.0.1",
- "postgres-array": "postgres-array@2.0.0",
- "postgres-bytea": "postgres-bytea@1.0.0",
- "postgres-date": "postgres-date@1.0.7",
- "postgres-interval": "postgres-interval@1.2.0"
- }
- },
- "pg@8.12.0": {
- "integrity": "sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==",
- "dependencies": {
- "pg-cloudflare": "pg-cloudflare@1.1.1",
- "pg-connection-string": "pg-connection-string@2.6.4",
- "pg-pool": "pg-pool@3.6.2_pg@8.12.0",
- "pg-protocol": "pg-protocol@1.6.1",
- "pg-types": "pg-types@2.2.0",
- "pgpass": "pgpass@1.0.5"
- }
- },
- "pgpass@1.0.5": {
- "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
- "dependencies": {
- "split2": "split2@4.2.0"
- }
- },
- "postgres-array@2.0.0": {
- "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
- "dependencies": {}
- },
- "postgres-array@3.0.2": {
- "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==",
- "dependencies": {}
- },
- "postgres-bytea@1.0.0": {
- "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
- "dependencies": {}
- },
- "postgres-date@1.0.7": {
- "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
- "dependencies": {}
- },
- "postgres-interval@1.2.0": {
- "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
- "dependencies": {
- "xtend": "xtend@4.0.2"
- }
- },
- "shebang-command@2.0.0": {
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dependencies": {
- "shebang-regex": "shebang-regex@3.0.0"
- }
- },
- "shebang-regex@3.0.0": {
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dependencies": {}
- },
- "signal-exit@4.1.0": {
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dependencies": {}
- },
- "split2@4.2.0": {
- "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
- "dependencies": {}
- },
- "string-width@4.2.3": {
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dependencies": {
- "emoji-regex": "emoji-regex@8.0.0",
- "is-fullwidth-code-point": "is-fullwidth-code-point@3.0.0",
- "strip-ansi": "strip-ansi@6.0.1"
- }
- },
- "string-width@5.1.2": {
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dependencies": {
- "eastasianwidth": "eastasianwidth@0.2.0",
- "emoji-regex": "emoji-regex@9.2.2",
- "strip-ansi": "strip-ansi@7.1.0"
- }
- },
- "strip-ansi@6.0.1": {
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dependencies": {
- "ansi-regex": "ansi-regex@5.0.1"
- }
- },
- "strip-ansi@7.1.0": {
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
- "dependencies": {
- "ansi-regex": "ansi-regex@6.0.1"
- }
- },
- "which@2.0.2": {
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dependencies": {
- "isexe": "isexe@2.0.0"
- }
- },
- "wrap-ansi@7.0.0": {
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dependencies": {
- "ansi-styles": "ansi-styles@4.3.0",
- "string-width": "string-width@4.2.3",
- "strip-ansi": "strip-ansi@6.0.1"
- }
- },
- "wrap-ansi@8.1.0": {
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dependencies": {
- "ansi-styles": "ansi-styles@6.2.1",
- "string-width": "string-width@5.1.2",
- "strip-ansi": "strip-ansi@7.1.0"
- }
- },
- "xtend@4.0.2": {
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
- "dependencies": {}
- },
- "zod-validation-error@3.3.0_zod@3.23.8": {
- "integrity": "sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw==",
- "dependencies": {
- "zod": "zod@3.23.8"
- }
- },
- "zod@3.23.8": {
- "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
- "dependencies": {}
- }
- }
- },
- "remote": {
- "https://deno.land/std@0.208.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9",
- "https://deno.land/std@0.208.0/assert/_diff.ts": "58e1461cc61d8eb1eacbf2a010932bf6a05b79344b02ca38095f9b805795dc48",
- "https://deno.land/std@0.208.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7",
- "https://deno.land/std@0.208.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee",
- "https://deno.land/std@0.208.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c",
- "https://deno.land/std@0.208.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9",
- "https://deno.land/std@0.208.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227",
- "https://deno.land/std@0.208.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7",
- "https://deno.land/std@0.208.0/assert/assert_false.ts": "0ccbcaae910f52c857192ff16ea08bda40fdc79de80846c206bfc061e8c851c6",
- "https://deno.land/std@0.208.0/assert/assert_greater.ts": "ae2158a2d19313bf675bf7251d31c6dc52973edb12ac64ac8fc7064152af3e63",
- "https://deno.land/std@0.208.0/assert/assert_greater_or_equal.ts": "1439da5ebbe20855446cac50097ac78b9742abe8e9a43e7de1ce1426d556e89c",
- "https://deno.land/std@0.208.0/assert/assert_instance_of.ts": "3aedb3d8186e120812d2b3a5dea66a6e42bf8c57a8bd927645770bd21eea554c",
- "https://deno.land/std@0.208.0/assert/assert_is_error.ts": "c21113094a51a296ffaf036767d616a78a2ae5f9f7bbd464cd0197476498b94b",
- "https://deno.land/std@0.208.0/assert/assert_less.ts": "aec695db57db42ec3e2b62e97e1e93db0063f5a6ec133326cc290ff4b71b47e4",
- "https://deno.land/std@0.208.0/assert/assert_less_or_equal.ts": "5fa8b6a3ffa20fd0a05032fe7257bf985d207b85685fdbcd23651b70f928c848",
- "https://deno.land/std@0.208.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b",
- "https://deno.land/std@0.208.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754",
- "https://deno.land/std@0.208.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22",
- "https://deno.land/std@0.208.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0",
- "https://deno.land/std@0.208.0/assert/assert_not_strict_equals.ts": "4cdef83df17488df555c8aac1f7f5ec2b84ad161b6d0645ccdbcc17654e80c99",
- "https://deno.land/std@0.208.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54",
- "https://deno.land/std@0.208.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057",
- "https://deno.land/std@0.208.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265",
- "https://deno.land/std@0.208.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c",
- "https://deno.land/std@0.208.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd",
- "https://deno.land/std@0.208.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56",
- "https://deno.land/std@0.208.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece",
- "https://deno.land/std@0.208.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278",
- "https://deno.land/std@0.208.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085",
- "https://deno.land/std@0.208.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a",
- "https://deno.land/std@0.208.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536",
- "https://deno.land/std@0.208.0/fmt/colors.ts": "34b3f77432925eb72cf0bfb351616949746768620b8e5ead66da532f93d10ba2",
- "https://deno.land/std@0.224.0/assert/_constants.ts": "a271e8ef5a573f1df8e822a6eb9d09df064ad66a4390f21b3e31f820a38e0975",
- "https://deno.land/std@0.224.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834",
- "https://deno.land/std@0.224.0/assert/assert_almost_equals.ts": "9e416114322012c9a21fa68e187637ce2d7df25bcbdbfd957cd639e65d3cf293",
- "https://deno.land/std@0.224.0/assert/assert_array_includes.ts": "14c5094471bc8e4a7895fc6aa5a184300d8a1879606574cb1cd715ef36a4a3c7",
- "https://deno.land/std@0.224.0/assert/assert_equals.ts": "3bbca947d85b9d374a108687b1a8ba3785a7850436b5a8930d81f34a32cb8c74",
- "https://deno.land/std@0.224.0/assert/assert_exists.ts": "43420cf7f956748ae6ed1230646567b3593cb7a36c5a5327269279c870c5ddfd",
- "https://deno.land/std@0.224.0/assert/assert_false.ts": "3e9be8e33275db00d952e9acb0cd29481a44fa0a4af6d37239ff58d79e8edeff",
- "https://deno.land/std@0.224.0/assert/assert_greater.ts": "5e57b201fd51b64ced36c828e3dfd773412c1a6120c1a5a99066c9b261974e46",
- "https://deno.land/std@0.224.0/assert/assert_greater_or_equal.ts": "9870030f997a08361b6f63400273c2fb1856f5db86c0c3852aab2a002e425c5b",
- "https://deno.land/std@0.224.0/assert/assert_instance_of.ts": "e22343c1fdcacfaea8f37784ad782683ec1cf599ae9b1b618954e9c22f376f2c",
- "https://deno.land/std@0.224.0/assert/assert_is_error.ts": "f856b3bc978a7aa6a601f3fec6603491ab6255118afa6baa84b04426dd3cc491",
- "https://deno.land/std@0.224.0/assert/assert_less.ts": "60b61e13a1982865a72726a5fa86c24fad7eb27c3c08b13883fb68882b307f68",
- "https://deno.land/std@0.224.0/assert/assert_less_or_equal.ts": "d2c84e17faba4afe085e6c9123a63395accf4f9e00150db899c46e67420e0ec3",
- "https://deno.land/std@0.224.0/assert/assert_match.ts": "ace1710dd3b2811c391946954234b5da910c5665aed817943d086d4d4871a8b7",
- "https://deno.land/std@0.224.0/assert/assert_not_equals.ts": "78d45dd46133d76ce624b2c6c09392f6110f0df9b73f911d20208a68dee2ef29",
- "https://deno.land/std@0.224.0/assert/assert_not_instance_of.ts": "3434a669b4d20cdcc5359779301a0588f941ffdc2ad68803c31eabdb4890cf7a",
- "https://deno.land/std@0.224.0/assert/assert_not_match.ts": "df30417240aa2d35b1ea44df7e541991348a063d9ee823430e0b58079a72242a",
- "https://deno.land/std@0.224.0/assert/assert_not_strict_equals.ts": "37f73880bd672709373d6dc2c5f148691119bed161f3020fff3548a0496f71b8",
- "https://deno.land/std@0.224.0/assert/assert_object_match.ts": "411450fd194fdaabc0089ae68f916b545a49d7b7e6d0026e84a54c9e7eed2693",
- "https://deno.land/std@0.224.0/assert/assert_rejects.ts": "4bee1d6d565a5b623146a14668da8f9eb1f026a4f338bbf92b37e43e0aa53c31",
- "https://deno.land/std@0.224.0/assert/assert_strict_equals.ts": "b4f45f0fd2e54d9029171876bd0b42dd9ed0efd8f853ab92a3f50127acfa54f5",
- "https://deno.land/std@0.224.0/assert/assert_string_includes.ts": "496b9ecad84deab72c8718735373feb6cdaa071eb91a98206f6f3cb4285e71b8",
- "https://deno.land/std@0.224.0/assert/assert_throws.ts": "c6508b2879d465898dab2798009299867e67c570d7d34c90a2d235e4553906eb",
- "https://deno.land/std@0.224.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917",
- "https://deno.land/std@0.224.0/assert/equal.ts": "bddf07bb5fc718e10bb72d5dc2c36c1ce5a8bdd3b647069b6319e07af181ac47",
- "https://deno.land/std@0.224.0/assert/fail.ts": "0eba674ffb47dff083f02ced76d5130460bff1a9a68c6514ebe0cdea4abadb68",
- "https://deno.land/std@0.224.0/assert/mod.ts": "48b8cb8a619ea0b7958ad7ee9376500fe902284bb36f0e32c598c3dc34cbd6f3",
- "https://deno.land/std@0.224.0/assert/unimplemented.ts": "8c55a5793e9147b4f1ef68cd66496b7d5ba7a9e7ca30c6da070c1a58da723d73",
- "https://deno.land/std@0.224.0/assert/unreachable.ts": "5ae3dbf63ef988615b93eb08d395dda771c96546565f9e521ed86f6510c29e19",
- "https://deno.land/std@0.224.0/collections/_utils.ts": "b2ec8ada31b5a72ebb1d99774b849b4c09fe4b3a38d07794bd010bd218a16e0b",
- "https://deno.land/std@0.224.0/collections/deep_merge.ts": "04f8d2a6cfa15c7580e788689bcb5e162512b9ccb18bab1241824b432a78551e",
- "https://deno.land/std@0.224.0/fmt/colors.ts": "508563c0659dd7198ba4bbf87e97f654af3c34eb56ba790260f252ad8012e1c5",
- "https://deno.land/std@0.224.0/internal/diff.ts": "6234a4b493ebe65dc67a18a0eb97ef683626a1166a1906232ce186ae9f65f4e6",
- "https://deno.land/std@0.224.0/internal/format.ts": "0a98ee226fd3d43450245b1844b47003419d34d210fa989900861c79820d21c2",
- "https://deno.land/std@0.224.0/internal/mod.ts": "534125398c8e7426183e12dc255bb635d94e06d0f93c60a297723abe69d3b22e",
- "https://esm.sh/nanoevents@9.0.0": "29ccd1d8839f2d7dd8d28ad9ec5d18723a7dbf966bf29179063442b1e88b3a4f",
- "https://esm.sh/v135/nanoevents@9.0.0/denonext/nanoevents.mjs": "666c9d584019a64758bd3071e561051747454da64299ac06b79ede7210fe5e85",
- "https://esm.sh/zod-validation-error@3.3.0": "d8825ca67952b6adff6b35026dc465f9638d4923dbd54fe9e8e81fbfddca9630",
- "https://esm.sh/zod@3.23.8": "728819c1f651800179a5a80daf24b3e54b2ddea87828bd10e63875a604bcb94e"
- }
-}
diff --git a/scripts/deno.jsonc b/scripts/deno.jsonc
new file mode 100644
index 0000000..90f67fd
--- /dev/null
+++ b/scripts/deno.jsonc
@@ -0,0 +1,5 @@
+{
+ "fmt": {
+ "useTabs": true
+ }
+}
diff --git a/scripts/deno.lock b/scripts/deno.lock
new file mode 100644
index 0000000..5551887
--- /dev/null
+++ b/scripts/deno.lock
@@ -0,0 +1,47 @@
+{
+ "version": "3",
+ "packages": {
+ "specifiers": {
+ "jsr:@std/assert": "jsr:@std/assert@1.0.6",
+ "jsr:@std/fs": "jsr:@std/fs@1.0.4",
+ "jsr:@std/internal@^1.0.4": "jsr:@std/internal@1.0.4",
+ "jsr:@std/path": "jsr:@std/path@1.0.6",
+ "jsr:@std/path@^1.0.6": "jsr:@std/path@1.0.6"
+ },
+ "jsr": {
+ "@std/assert@1.0.6": {
+ "integrity": "1904c05806a25d94fe791d6d883b685c9e2dcd60e4f9fc30f4fc5cf010c72207",
+ "dependencies": [
+ "jsr:@std/internal@^1.0.4"
+ ]
+ },
+ "@std/fs@1.0.4": {
+ "integrity": "2907d32d8d1d9e540588fd5fe0ec21ee638134bd51df327ad4e443aaef07123c",
+ "dependencies": [
+ "jsr:@std/path@^1.0.6"
+ ]
+ },
+ "@std/internal@1.0.4": {
+ "integrity": "62e8e4911527e5e4f307741a795c0b0a9e6958d0b3790716ae71ce085f755422"
+ },
+ "@std/path@1.0.6": {
+ "integrity": "ab2c55f902b380cf28e0eec501b4906e4c1960d13f00e11cfbcd21de15f18fed"
+ }
+ }
+ },
+ "remote": {
+ "https://deno.land/std@0.115.1/async/pool.ts": "353ce4f91865da203a097aa6f33de8966340c91b6f4a055611c8c5d534afd12f",
+ "https://deno.land/x/aws_sign_v4@1.0.2/mod.ts": "be798766c3058ebe0ba9a45c3d18a0e87855b3663bacd3e86278173a49b6618f",
+ "https://deno.land/x/aws_sign_v4@1.0.2/src/date.ts": "96d156206dceadbede0e8cd709dd2b0f8c8aef858359dbe187b78c50bdc73353",
+ "https://deno.land/x/aws_sign_v4@1.0.2/src/signing.ts": "0118be5f11100e32075e680fb7ceb78e3cf6caf923739178dad8508ad4ea5db3",
+ "https://deno.land/x/aws_sign_v4@1.0.2/src/util.ts": "c3b58b95bce15d02607f7434e488cfaef235dc7773b7e9d90d9d6e962d189c23",
+ "https://deno.land/x/html_entities@v1.0/lib/xml-entities.js": "cbbc40f7b6fd1f925508ff7d43a52d2383a57a64d0aaa3a7a1eca9d4155e4bde",
+ "https://deno.land/x/s3@0.5.0/deps.ts": "712e6417008266bbab80f4d95a633474e353787b198f00e303b5d0e57bab334e",
+ "https://deno.land/x/s3@0.5.0/mod.ts": "4e0ec5073559a035429afaeb4b1f8ee8470b6f4f831df25ea0bde181b22aabec",
+ "https://deno.land/x/s3@0.5.0/src/bucket.ts": "e3a76cd2ac219f53f46e1196663f5c9507d9bcb17e2354e19c2c19de3aeac418",
+ "https://deno.land/x/s3@0.5.0/src/client.ts": "1ea62d85d17ad2d3bb643af008712299c8ccc4ba030a26b0d6c3cc804e1cb48b",
+ "https://deno.land/x/s3@0.5.0/src/error.ts": "a7857ca64eedbaf5c4daad5e83fdef5c4acd61534bffdab784b4e17e008e6aae",
+ "https://deno.land/x/s3@0.5.0/src/request.ts": "c469c447d65e0508a94c8fa6d68ab4c54b23efbdacef58dd8651975721ecf8a6",
+ "https://raw.githubusercontent.com/nekobato/deno-xml-parser/0bc4c2bd2f5fad36d274279978ca57eec57c680c/index.ts": "05d093028c005706e37b46bfe2bb7e2488f42fdc74d2196ac818902336927c01"
+ }
+}
diff --git a/scripts/release.ts b/scripts/release.ts
new file mode 100755
index 0000000..3cf6cf1
--- /dev/null
+++ b/scripts/release.ts
@@ -0,0 +1,163 @@
+#!/usr/bin/env -S deno run -A
+
+import { copy } from "jsr:@std/fs";
+import { resolve } from "jsr:@std/path";
+import { assert } from "jsr:@std/assert";
+import { S3Bucket } from "https://deno.land/x/s3@0.5.0/mod.ts";
+import { buildCross } from "../../toolchain/scripts/build/build_cross.ts";
+
+function getRequiredEnvVar(name: string): string {
+ const value = Deno.env.get(name);
+ if (!value) {
+ throw new Error(`Required environment variable ${name} is not set`);
+ }
+ return value;
+}
+
+const assetVersion = getRequiredEnvVar("ASSET_VERSION");
+const awsAccessKeyId = getRequiredEnvVar("AWS_ACCESS_KEY_ID");
+const awsSecretAccessKey = getRequiredEnvVar("AWS_SECRET_ACCESS_KEY");
+
+assert(/^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/.test(assetVersion), "ASSET_VERSION must be a valid semantic version starting with 'v'");
+
+const REPO_DIR = resolve(import.meta.dirname!, "..");
+const OUTPUT_DIR = Deno.env.get("OUTPUT_DIR") ?? await Deno.makeTempDir({ prefix: "rivet-plugin-unity-" });
+console.log("Work dir:", OUTPUT_DIR);
+const TEMP_DIR = resolve(OUTPUT_DIR, "rivet-plugin-unity");
+const BUILD_DIR = resolve(OUTPUT_DIR, "build");
+const ZIP_PATH = resolve(OUTPUT_DIR, "rivet-plugin-unity.zip");
+
+async function buildCrossPlatform() {
+ // We build this in the repo dir in order to make sure we use the build cache
+ console.log("Building cross-platform libraries");
+ try {
+ await buildCross(BUILD_DIR, ["rivet-toolchain-ffi"]);
+ } catch (err) {
+ throw new Error(`Failed to build cross-platform libraries: ${err}`);
+ }
+}
+
+async function copyFilesToTemp() {
+ console.log("Copying files to temp directory");
+ await copy(REPO_DIR, TEMP_DIR, { overwrite: true });
+}
+
+async function removeGitIgnoredFiles() {
+ console.log("Removing git ignored files...");
+ const gitClean = new Deno.Command("git", {
+ args: ["clean", "-X", "-f"],
+ cwd: TEMP_DIR,
+ stdout: "inherit",
+ stderr: "inherit",
+ });
+ const gitCleanOutput = await gitClean.output();
+ assert(gitCleanOutput.success, "Failed to remove git ignored files");
+}
+
+async function removeUnnecessaryFiles() {
+ console.log("Removing unnecessary files...");
+
+ // Preserve only Assets & LICENSE at the root
+ for await (const entry of Deno.readDir(TEMP_DIR)) {
+ const path = resolve(TEMP_DIR, entry.name);
+ if (entry.name !== "Assets" && entry.name !== "LICENSE") {
+ if (entry.isDirectory) {
+ await Deno.remove(path, { recursive: true });
+ } else {
+ await Deno.remove(path);
+ }
+ }
+ }
+
+ // Preserve only the Rivet folder within Assets
+ const assetsPath = resolve(TEMP_DIR, "Assets");
+ for await (const entry of Deno.readDir(assetsPath)) {
+ const path = resolve(assetsPath, entry.name);
+ if (entry.name !== "Rivet") {
+ if (entry.isDirectory) {
+ await Deno.remove(path, { recursive: true });
+ } else {
+ await Deno.remove(path);
+ }
+ }
+ }
+}
+
+async function copyDylibs() {
+ console.log("Copying dylibs to Assets/Rivet/Editor/Native");
+
+ const nativeDir = resolve(TEMP_DIR, "Assets", "Rivet", "Editor", "Native");
+ await Deno.mkdir(nativeDir, { recursive: true });
+
+ const platforms = [
+ { os: "macos", arch: "arm64", ext: "dylib", prefix: "lib" },
+ // { os: "macos", arch: "x86_64", ext: "dylib", prefix: "lib" },
+ { os: "windows", arch: "x86_64", ext: "dll", prefix: "" },
+ // { os: "linux", arch: "x86_64", ext: "so", prefix: "lib" },
+ ];
+
+ for (const { os, arch, ext, prefix } of platforms) {
+ const src = resolve(BUILD_DIR, `${os}_${arch}`, `${prefix}rivet_toolchain_ffi.${ext}`);
+ const dest = resolve(nativeDir, `${prefix}rivet_toolchain_ffi_${os}_${arch}.${ext}`);
+ console.log(`Copying ${src} -> ${dest}`);
+ await Deno.copyFile(src, dest);
+ }
+}
+
+async function templateFiles() {
+ const packageJsonPath = resolve(TEMP_DIR, "Assets", "Rivet", "package.json");
+ const packageJson = await Deno.readTextFile(packageJsonPath);
+ await Deno.writeTextFile(packageJsonPath, packageJson.replace("{{VERSION}}", assetVersion.slice(1)));
+}
+
+async function generateZipFile() {
+ console.log("Generating zip file");
+ const zipOutput = await (new Deno.Command("zip", {
+ args: ["-r", ZIP_PATH, "."],
+ cwd: TEMP_DIR,
+ stdout: "inherit",
+ stderr: "inherit",
+ })).output();
+ assert(zipOutput.success, "Failed to create zip");
+ console.log(`Zip file created: ${ZIP_PATH}`);
+}
+
+async function uploadZipToS3(): Promise<{ zipUrl: string }> {
+ console.log("Uploading zip file to S3");
+ const bucket = new S3Bucket({
+ accessKeyID: awsAccessKeyId,
+ secretKey: awsSecretAccessKey,
+ bucket: "rivet-releases",
+ region: "auto",
+ endpointURL: "https://2a94c6a0ced8d35ea63cddc86c2681e7.r2.cloudflarestorage.com/rivet-releases",
+ });
+
+ const zipObjectKey = `plugin-unity/${assetVersion}/rivet-plugin-unity.zip`;
+
+ const zipFileData = await Deno.readFile(ZIP_PATH);
+
+ await bucket.putObject(zipObjectKey, zipFileData);
+
+ console.log(`Uploaded zip file to S3: ${zipObjectKey}`);
+
+ return {
+ zipUrl: `https://releases.rivet.gg/${zipObjectKey}`,
+ };
+}
+
+
+async function main() {
+ await buildCrossPlatform();
+ await copyFilesToTemp();
+ await removeGitIgnoredFiles();
+ await removeUnnecessaryFiles();
+ await copyDylibs();
+ await templateFiles();
+ await generateZipFile();
+ const { zipUrl } = await uploadZipToS3();
+ console.log('Uploaded', zipUrl);
+}
+
+if (import.meta.main) {
+ main();
+}