@wildshard/shard-format 0.0.1 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/brasscap-mesa/blobs/bin/02da0052111419cdff3a29f1c6d0ff0d223e0b53a956c16c65ed63d87928b3b9.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/068a121cd780a2a9164416f6e4fde44834f2d2f3a5ed65c174e480b7a2d3f627.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/07d5a061cd338618e528747d61eb2b17709510550ef0ba40a58b67761b200f3f.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/086e3706070555baca863f6ecf9dbca09c084afa501d92d4246d896b09546f36.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/08b1b9ab7c732d7dbe8f961f1fc40e84042d1fe42544f55c9ee89f04dffe3d5e.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/18bdbdc704cb8aac93435d208dfe0e9a44374efb73afa3bc58c631650e0a2995.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/1a210fcddcb9749ecb1c244837e8e37ea69b038faae191dee6bbbde228d31a18.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/264ab9ede386504a5ff9814b0a620b879cb29f3f45a80bcfc0c80b8ee236e364.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/2b6fbea4c846a23cf4802ebdb1804e128896c8dd87e5d23509db6729e5b1be4e.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/2d755cc635dee90b0f3958272855a821e2dd605a189a5ffcd480a325155fe84f.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/2d76c6829fe77fb55cc2541e4aca5ce5d18b68508dcdf3fa957fe4a83b9c887a.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/32c15d55a4548501740593807c5007217c72dbc10a21f4613ef5e0cee0b90d1d.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/3539b362cf3a61a79e92e113ebf8f255d0b25ec2d2edd816498879de831fa912.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/3af38a2377bc89f6c6c82ee1e83df674efa2793db932b50a23bbce7ec9cd7941.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/3c176a7a0d0850fdcee790ed2641216fc3d1cba025928de3d7784262bb9b6f4a.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/3fb37e488aa81a64c997b3dd09794e988994c6ee3476c6d653ced1670888dd8e.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/424dcc7b320317bf3f2c62c8f19bc80564035127eb38ab811e460934d57ea38c.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/45cea35fab6bb06051a3286fca2307944850c7f9ed7aa89b7c24fafef28efda6.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/499cc7863851f97d79dbfc64e76f9e6978894199184a0d80ebdca13066a8fa78.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/4b7217644763b00c6ee6ae3f176c726914966fb791654a385c0638bb998b6dd2.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/4cf11c7177bb082f335e5bc7a037ef00d09355c5ad8263e284a96a92630ff9ae.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/536b37cab5a1edd6a68a71d122aab6898e44c68a5470a4ca8a9a72c57c02e034.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/55d3628b27e0fcea383df86c434a69761439f51a013359f0829675b07ee2b616.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/5652ba90fbd8146edaf42660329cc81798752f2f60b8d03956714460d5ba75ef.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/57459ab5e2ac6cec65ef5e59789dd82b9666d8573df41c4a398df603f1fa456f.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/5915b6aed21bba49b841b45574f44f60d26b44810bd68ac70b22f3f3b0dab072.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/5c4a5c7a8e99253561105c5fa3faf14326cf0c23adc32bfe7f8aea4dbf4b05f9.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/61822a412cfd461f4f7ae50bc13f242a0fca6c5c58fca72247b596ab037a1c85.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/673b7712908966718341508469b39cd49e6461f690ca3c23d4621ea7eba0cc30.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/69394a49520f84f6dccc1655f1c89eedc913ac53a7e48ac5dc1bff4141639bb4.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/6e58a53a6c2acd50f9f80fd270ca034c54421df8a587e181101b4b75b952ac5d.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/75dc9f23ee71e11a3a0c67eb77275d741a281c3398808fb42efd52b9973d5d04.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/76c6a403293a68ed3d6ad14e9dd27b555c3a1ef4a3cae12a2bd2ab3e67c5ad02.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/82b73ce3a18e47092840fc029177861887aa2867b007248ac79ffa20895a4491.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/8430d9bbfb4e2b678c54595ad95555c3c73d0e1b144a4d6e29664ccb4371baf0.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/848d4492508689f5c4a224079dca8809e872e33b8f2635c9f16da5dc21beed16.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/84941ac387a0d245ea20bd663ff4ee78c5315bedfa058ada0961765aff61acaf.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/859b7bbcf048a4525db0548b8f5afef83bfc4870914767153f44c05e83436ec5.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/87b68b45680a57c796eed9183211b03335a6ad6737372b3ef476c2cf42efa631.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/8cef94308af8d09670e4c99a3b6c3d9280b7a27d386653a3bd7d482b2cdf2b65.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/8e564bce3f352c2186ae09ed7fbca9739c10abc46fd5f6893c68cb47178bd2b4.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/8f89e79d0fb9b04d48c7b5719e1d024161c6a2119835b18dcb193ff51123a9be.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/8fe511ad48656a0b10801100b9100edab1be605a8a182dc5c834d298bf0d9166.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/900bda6562d06fafda54c495e325d57dbb7931813178ee207449c5519d89d537.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/997b1b7d9210bfa77dc71f16a57c6bd66bc7c648686dc2a2666044c95042978a.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/a111bb4c6cec536bcf57dddc744b871ac9f3d094ce459c16243adca19020db77.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/a2208bf899e6c84942eef9fbab569d597f574551afae5864f1953c6a517af068.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/a302ddb2598a72ece53780094b64ad861dc68e6913d8a1ea08f5d141736e2986.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/afcbc671326d0dac14e460662c1f793335877ba53cc965f67c0306833b087e7c.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/b657159e6a28c801a211024f96a7ef60e388ce928a7b41ae3d7555a6f8fd2e3e.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/be6bbc6cd15ba525790075252ba0ed0b28dae5cfbfa118c00dfb9ea1ab95e668.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/c1360e3cbe6b3dc8894bc66c359853854c2e5adeac9c7cd5ba63f5db448be601.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/c7983018dbf8e384ddf73191f526075bd0b29907061ab17642ecdc18ea7b9897.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/cea66f27ca60ea173ee0a2bcd91964dc2638eb5657250fe3aa5bd3e41faf8730.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/d052be571a0f3ab69926951f3a4c9d63f05da2ca6d91e5963dd63e04ecb515de.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/d162a993a60dd682c8c21dd111429d84d8d30413a000cf481cf98d06ca83e706.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/d238c3d3d054911714ebe30dafc99e6ad13925b7a600ba9f8d532d0f515f3f5a.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/d9a98cfe2865a9bb0e94f35c735a570b0625b58f890a6b1f6e14fab2401f0af2.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/dc27ae954b7b8a13a9459d6ca6ef2997f662715ff5f5453ea0da169f141748b8.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/e3ff1fd41cf76668b8e1927c0c2e4056b63a293ebbd300a8f1b1d27d87786271.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/e45b7344d373b3ef4a94f560cf4e17b1eb3b8cd89d1e552fc9be11d6b7b546f0.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/eb14eb898224d5d81d1012bec54f2b79f9377dc60fa1d01e49b4c3e148292d77.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/ed0e0101a3d91a3a615f9e78ef36f7deb8bb0eab0f133241d621925d0b596599.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/f722e3a3b1f0a3d7b9f7d7c66c46d8c87245de5f8eece055daf95c7086f8c267.bin +0 -0
- package/corpus/brasscap-mesa/blobs/bin/f76013aedfd810f136fa689a151024bcb942687ef42ae7edf1fd3513ac4e22c7.bin +0 -0
- package/corpus/brasscap-mesa/blobs/glb/0547e63693282614673b13bade4c08eb772020757b131b7c80f2077873aab70e.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/0cf89e9b1824440d213c8e9e33fb357734b7241b4c7eedaba3df7f8306e05425.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/0e01060e3a507ffff6461c50b5c565c71380a6a67d9760cdd7a09afd3e30b584.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/0ef326c5cf5292cd15b48b851460ee8156f51e0a5b62457c8f1f3c53c41665a3.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/1112ff4a3f69db3b62c6d2d6ae021e7c43ce0ca1feb1d3130376881decb3c6b0.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/11357cb8a0670fdc9a03780dd79a31e0aa7a0537786cbf66491bae1722d6feb3.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/11dbecc73bd343c375bd4b79db8dbda2272e76a6b8426ac29e90f2b1272ccfc2.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/133f639cfa837bc5da7915121c71fd32281660c2aaa0248bd59bde47e7faf8bc.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/16812a090136b6678633aa4db03e4187920ae0aca776ad6da373c600cd341972.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/17e63980d7934cfe1d2823d78652af338fe9f0c2170106cd4506a2c4e7f4716f.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/199224cafc86904bdefec8f01d131d7ca3e076a22b689bfc6a26dd20373cf286.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/1a5c8cf223a2f64715ea5eaf14d97a0131f9ebdef4388dc4823dcfa57817724c.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/1b0ec09ad6718149d7ca514136cee09b04c96425f03af0559fd097112aa0daa5.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/1e5024bbb1284b2ed39bbca2d0ade3acb5be2a2c6ba643291f269b76098c7f79.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/1e7635972e13468ffcbb1608f1d12559b066b4533912be2c35e3db07fd4a679d.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/1f03db3a38a21b8d4d02f8ede30e1303cd8d4c426815326a88f45a268b17a492.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/2624abb7bf45618be40f8c3221445179fca44f7321baff415fdf7ddd5e0afc6f.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/27fc3bad6db6e2b5ade5d242867d882362482ddf19c647edef821afc27d52dc2.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/29959bdb5b04a9180e88ec1ed976bae55424d3dc50985f13c0f85bae11ae79ee.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/308cbce2b1b6360f9a2dc275d0bc28be1966fc3ff5e0a58844405ba867f3f668.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/3674d7be969755aaffa368e57b8d1bb743bc98e766a57948859d54fdc7d2c066.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/3736ca95c9c40b30e21302ae6c89148d8ac09264dfbb7e5764b08c265a73ba3c.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/3bc90e1dc9411d249697e4ec352baa4886f91cacfe4940ac43aed879f60966c9.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/3f519c7c7482307cae908b27602dcb7716e2da4b651eff39c4c37103998d18fa.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/4767636d5554b60c94b447b87b77fc1456a2b9af42bfe08585389d27f306dd5e.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/4a3242773b3a73a73ee746a0cdf30c8d6d904bb4406dfdf9822dcd535d6ae308.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/4c7bf3788cba151442d85c3f76553c2e356edf8566ae8243d0a535c9bcde51d0.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/4f3b9f4c818ed6d375947e9603dd058c539e14ff05aa193fb5054d899dbb82a2.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/4fdf7ee67d12de1cd30c3c2bbd9409032dcab5feb3a7d3977b92c50b1d161afe.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/5821f33aa00e9acd2f4c0a29129978ee7006a879d163ce1463ae476031bfabcf.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/5a986c3e44fc686a2efe7648c3945bb7b51cf303918381383f21f898dd312cad.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/5c32fc1de6d198ed606d3e8c3264319acdd950dab18e8b723fc6332bf2f56aea.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/602ce4e8b00a0afbc1a894b65641e48d362ec834a559b9d97a4801473bb01da7.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/6180f9f96167522d8cab4de1d52598cecee8d7ee042f48e41669c98cf61c19c3.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/6205973ba63f7a554662ba05010d25131bed2d9656de422e2067ca54709d5b3c.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/693e556f2165232e8a38b1b2d68676f235ece5705c564992cfa7731426f4d376.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/6a46175438bec5527c281b577bd220b6badedf3c74266b997d39e596f83b8853.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/6ca1bcad7ea053a259b7f9fc5a7ec388a4cd29d44391d93386ea8b1143d94c21.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/6f9bc99656b611890d6acc76ee416f6222ca2d5f62167840b4216a21e020a4c8.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/6fb1e7857996662233ab5314fc13f8aa30703f91c04542e352ec17f9dc4fc054.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/7028ec39712143a7e9d09d2e1477282b654d0470102ca9d272ac82b23604cb21.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/73af65ac86efa61099178f3e7075dcd26d389ee9b9aa3546c18dede10c3dfda1.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/73b992b71bd3165ff7701ab1430c075cb5ba9b74e6363d24640377b1011ddc93.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/7471261d4df59979ba41a622d93779b66ebecd50353ad433862e603ee65f8748.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/76e9a3fcca962c2f900cf79dc1a0851840bd405dc11231f629f784adbcb69d23.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/79d2d29e8cd8b642386b5f31429b39bc4d6f13e53107dda00ebc463abf80c79d.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/7de66fcfffe4ff108510cbe6bebec44e28ab4b78e98e9c1a38466db5b81881f7.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/811fa798cb81ea99488db98e3d3ddea815aac8f6e7493ad04d0176f603978678.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/89b277f1636be220ff5658ff1f1c62efe14079d6e1f42efb373fbf0246801533.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/905c5fe666d9f6174e987382e47d3f325c5696cf8792d7a4a1dd120a438b8270.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/90efe3e05370ee853c0130b98ee82f00b86f7c7104e96b094715187fa49ac16f.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/968a7c5cb13014bce00a29d43b344bd6943ff00ae2908abbc6b40a994f1172a1.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/9a955b4e69dfa5b38f071099053c1a3684cf85ec2d346420de2853c61768f8cc.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/9da2781216a2e482dd8a6ada5ebb43bcf48e0169430e787ac277559cb2ade19a.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/9db02aab14a3b52463deadefbf4ba771809941e7fcb137c905955bdc80ec23bd.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/a3fe1788cf5d7f260249c722f0e0695a4d55744d1b14be44122377147a296256.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/a5c75af8f090d3c95fa46d2be49be5031138d7cd1bae234ae028edf717bf299e.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/a771abd40bd337a464c1bd19f841b62e290124faa89b19ec50e85ab36bc740a5.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/a94a2ad2ed463a47cdda117df25b06b3cf6be37ddac08594bc5f5d76c7237730.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/ad434e4a6490e495994b25f7574a5847a9f7d9c2ca5a2b229a9dfdd2e5e2bb72.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/aeae7b05404b852008a7897689e58aacef44a2c3bc0e87d2519ecdb4cb1e3ff5.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/b0c0c8a4985f92be3b358a8e703c67957427501882aeee05b4ccd3c7880930d4.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/b25174c3cd13eea6e1d9c3104ee5197dc6330129b2f0f7676e8a429900999d9b.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/b3eecdec571df96338edf690443394ff859383b4c94f4cf33d42c240006f8543.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/b7aa0c61ff9e7411535c7b7b8e587849a92bad00d431171ab16ad47d55db0a53.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/b9deef944c22331bc05220d1d6e46412e3cb1246ef041a4405d0cbbd90c2d624.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/ba9376e4ac39b809133ab717edb4c88b5219118766db492d7c97534ce119c2ec.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/baf338e9c272158b905fb58a712e29410c657a45be2764f1c6c43ca87fd1db48.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/bd442ac9fbe52b9f2e4ba586670017c3f2d9fedf1cbdec77ef24e9f8b3a183c8.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/c142adcf253be43b66f23ede8cea1e8fcfa256ebf53054a1068ace04745718a6.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/c6d7cbdc4b2ee9d416edf4d736a4f374f08aea98ca395ad371a50a1853744cfc.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/cfb165a7675d15cee2c490b31095a58f73bace50ccc1e0fdf2c8dc4400f1df27.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/d40f2ee59612473e9f687f17a0e203fdb4ba54c7185b05a8d81a433b04f24134.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/d50ce95411156a6b6cf386aefa5ee58db659811813f74be74f323e7c5795056f.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/d6af418bbde39b4fc7d22a61401d416be7a3fc1214ea2d3f42b4549c392d22ca.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/de7222ceeb1f72693dfb7fd1f343798659e03772d77f2b498fd8ebece2d5550a.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/e26975b198127ac3b6b4f5c4bc08ad47d6691398feee777743285391cd36d502.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/ea428490cd5f2672676a2776a598b819b08246871e76de94b7196f9643144986.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/eb96567a266d24be188cb5b08021112f2fad311cbead939d53c5565da11f6265.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/ecf66230bf7b68050c0827c2e4caf3de90e46859d291b794faa0dd3816d9dac6.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/ed8f067763a4a8adb83d80c8324b2a9668f1061f5f5352f21295e6cc5132386f.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/ee507a38772865467736d370791fe73c6aa4d83fe3e7ff4baa156b9cb2894c1c.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/eedc5b62dc6f27d4a089e9f5b282f626129236d3f1689b001e04f8748bf8859c.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/f4119b9c6c23435619682b5d247743459e76584b9b0d6c5cb689d8e156906695.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/f576047267a0bf9bd4bfc47072ea3d11066345b839953546292da678d1cb4722.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/f8cdfb11997d4ccabea88bcdd3924cc8b621b33618b18fe5fbfd286edfc1d87e.glb +0 -0
- package/corpus/brasscap-mesa/blobs/glb/fce95ecc5db24c903bd46f338e366e2715411465a5efac180e2f0f46397e59de.glb +0 -0
- package/corpus/brasscap-mesa/blobs/image/0579557f9344df6f2c4b1225e6252e53ab86d417a4c9b504b5c714a08a388e47.jpg +0 -0
- package/corpus/brasscap-mesa/blobs/image/9e18816a2ec16fbbb1f00f4a39c73ac2cbf6a8cdc17b4c96b1eba4cc9a754dc7.jpg +0 -0
- package/corpus/brasscap-mesa/blobs/image/eb453c71cfb1f9441eb00b32281f98e226e49d9dcf75c231455575fcdc652222.jpg +0 -0
- package/corpus/brasscap-mesa/blobs/json/e0072ed82115c519b891f53a194ea3b28fff7d3826d8ddf23460d6f21b7728d9.json +1 -0
- package/corpus/brasscap-mesa/blobs/json/ffb0e08eaaa7188db1f55931c9b6330937316091cc7463ed2eff6767bbfa33de.json +1 -0
- package/corpus/brasscap-mesa/blobs/wasm/1d6ace79610c4d510b60ad0c52915e42b57797d91f1ef292f60d8a3daec03dd6.wasm +0 -0
- package/corpus/brasscap-mesa/blobs/wasm/24a4d4c1292677b1c984b5c0d3497ae2929528bf511df475f80cc20945bb08ec.wasm +0 -0
- package/corpus/brasscap-mesa/blobs/wasm/b86d8afcc269fb063ebf64768fc3787635b65a7409a571115b07be2e4da39733.wasm +0 -0
- package/corpus/brasscap-mesa/cook.json +1 -0
- package/corpus/brasscap-mesa/mounts/shardfiles/brasscap-mesa/discovery.json +1 -0
- package/corpus/brasscap-mesa/sections/actors/creatures.json +1 -0
- package/corpus/brasscap-mesa/sections/actors/crowds.json +1 -0
- package/corpus/brasscap-mesa/sections/actors/species.json +1 -0
- package/corpus/brasscap-mesa/sections/audio/audio.json +1 -0
- package/corpus/brasscap-mesa/sections/combat/encounters.json +1 -0
- package/corpus/brasscap-mesa/sections/combat/items.json +1 -0
- package/corpus/brasscap-mesa/sections/combat/strikes.json +1 -0
- package/corpus/brasscap-mesa/sections/economy/ledger.json +1 -0
- package/corpus/brasscap-mesa/sections/economy/loot.json +1 -0
- package/corpus/brasscap-mesa/sections/look/look.json +1 -0
- package/corpus/brasscap-mesa/sections/look/materials.json +1 -0
- package/corpus/brasscap-mesa/sections/quests/quests.json +1 -0
- package/corpus/brasscap-mesa/sections/sim/client-scripts.json +1 -0
- package/corpus/brasscap-mesa/sections/sim/hooks.json +1 -0
- package/corpus/brasscap-mesa/sections/sim/plumbing.json +1 -0
- package/corpus/brasscap-mesa/sections/sim/scripts.json +1 -0
- package/corpus/brasscap-mesa/sections/sim/sim.json +1 -0
- package/corpus/brasscap-mesa/sections/state/migrations.json +1 -0
- package/corpus/brasscap-mesa/sections/state/state.json +1 -0
- package/corpus/brasscap-mesa/sections/ui/card.json +1 -0
- package/corpus/brasscap-mesa/sections/ui/compendium.json +1 -0
- package/corpus/brasscap-mesa/sections/ui/level.json +1 -0
- package/corpus/brasscap-mesa/sections/ui/ui.json +1 -0
- package/corpus/brasscap-mesa/sections/world/collision.json +1 -0
- package/corpus/brasscap-mesa/sections/world/days.json +1 -0
- package/corpus/brasscap-mesa/sections/world/edge.json +1 -0
- package/corpus/brasscap-mesa/sections/world/movers.json +1 -0
- package/corpus/brasscap-mesa/sections/world/navigation.json +1 -0
- package/corpus/brasscap-mesa/sections/world/props.json +1 -0
- package/corpus/brasscap-mesa/sections/world/spawn.json +1 -0
- package/corpus/brasscap-mesa/sections/world/terrain.json +1 -0
- package/corpus/brasscap-mesa/sections/world/tiles.json +1 -0
- package/corpus/brasscap-mesa/sections/world/traversal.json +1 -0
- package/corpus/brasscap-mesa/sections/world/water.json +1 -0
- package/corpus/brasscap-mesa/sections/world/weather.json +1 -0
- package/corpus/brasscap-mesa/shard.json +1 -0
- package/corpus/brasscap-mesa/validation.json +1 -0
- package/corpus/handwritten/blobs/bin/027822f6ae9c374ce1ced851f2227cb9acb03077e5cc6b7fecb245c31f021abd.bin +0 -0
- package/corpus/handwritten/blobs/bin/0377ce182bd604bcf4d501f14bf954c434ea64ad856ad9d71c502d1045612703.bin +0 -0
- package/corpus/handwritten/blobs/bin/05ad93d239eeeb5d9afa09b00d90c56098d88e8850e5b5e691fcaa7520dec3cd.bin +0 -0
- package/corpus/handwritten/blobs/bin/0c8980141e6e394ea473df1eb11c347ba617a1a9a4b39b3fa1871b5d15b97d87.bin +0 -0
- package/corpus/handwritten/blobs/bin/14eb11f8d809320e0a68b1edea7837d7a5b4a3da71f1ce4f54068e0afe0b039b.bin +0 -0
- package/corpus/handwritten/blobs/bin/16590066c039ac71e5038a9866a53ccb95e21af13db29cb655b379c4fcfef7bb.bin +0 -0
- package/corpus/handwritten/blobs/bin/1795b5147ad52482445d2414ee22823b947c43a917b6e96fd9ec017f17000912.bin +0 -0
- package/corpus/handwritten/blobs/bin/18f2e24ecc1ed1b1d12ae1c89732a5a1a618ab6e973d4ff0332cf9ecc4e4f4a6.bin +0 -0
- package/corpus/handwritten/blobs/bin/1a18ade01095f1a9ebe75650127861ef27dda0bb17c2b91bde057ec88ef2e98a.bin +0 -0
- package/corpus/handwritten/blobs/bin/1dba017cddb874bc147efb00c55418846ffa344a696f4df702bbabeea55034d0.bin +0 -0
- package/corpus/handwritten/blobs/bin/248c703537e4687ddd2b69a40d1ef3936da718626289d6867ce0a6866f562ba4.bin +0 -0
- package/corpus/handwritten/blobs/bin/2612d9fd4727f8c349f2dbfb7b1650bb7a752d0798a4966ac22cf2b6cdd9fcef.bin +0 -0
- package/corpus/handwritten/blobs/bin/28c54c766e90e3b046a2377b9fa015b0ce45cf3da4420f2b10553251f86c06aa.bin +0 -0
- package/corpus/handwritten/blobs/bin/30866b4807b12579f50218f6525c3db00919fbd43c97921daf47b3244b25dca6.bin +0 -0
- package/corpus/handwritten/blobs/bin/3d14fae85d77406a9b8c59f2e973cdae9587d49108ea92fb460679ca860196b8.bin +0 -0
- package/corpus/handwritten/blobs/bin/3f2201a53c441abcfb52089fe9bbb01f26fac8744099d3fb6668452885c2fa11.bin +0 -0
- package/corpus/handwritten/blobs/bin/42f270a99367fc4cc901518ccaa344ab595e265f113be944510da745c11f69d1.bin +0 -0
- package/corpus/handwritten/blobs/bin/43fd4327fedd51a586684ac611bcad4a8b9d62e51e03967de71fb42c9bf0f6e1.bin +0 -0
- package/corpus/handwritten/blobs/bin/484adda0898a881b6f095dad447f6a619bf0933f65efe940b72f1ab7f3630c22.bin +0 -0
- package/corpus/handwritten/blobs/bin/4a38cd49e8797429ce76265c3d8972195d5b0a02a35fc05fc513eab11240f415.bin +0 -0
- package/corpus/handwritten/blobs/bin/4fe636237bbbd4f836b0816bc61702f4c224d4cb91fbd94f244c731e24a1b945.bin +0 -0
- package/corpus/handwritten/blobs/bin/51b1cff782dc7ebb382bc429ee965023d4cdb52c7b3e37d6ffff5ef55c1c2813.bin +0 -0
- package/corpus/handwritten/blobs/bin/52561f02071ecaa98432fab5e8ece407a8e8f733a01f8eb7c543d1efe02614da.bin +0 -0
- package/corpus/handwritten/blobs/bin/556d6333923afea9641c4738741a41d6a46ae28a508288b9a49a749a344c1398.bin +0 -0
- package/corpus/handwritten/blobs/bin/5caeb97f32c7f31e1029eebdf31131f879f781bb5e3a225206a646710d83fd75.bin +0 -0
- package/corpus/handwritten/blobs/bin/5d1131e42a045083225105b640ff72e02c7f353ee6285545ac264d01bea26b1b.bin +0 -0
- package/corpus/handwritten/blobs/bin/5d80b30eee9f8342a92f6756fd0d84fb9d2d2ce994d222627641e584ad45d2a8.bin +0 -0
- package/corpus/handwritten/blobs/bin/5e0f9f7f2a85abe11a0a61ede853c9b9942b4494c3eb9943785cf6ae221e40e3.bin +0 -0
- package/corpus/handwritten/blobs/bin/5fdc5485343bba8201185c9bae862ad8618498ab5ce63b53514e4e0226fa7bdb.bin +0 -0
- package/corpus/handwritten/blobs/bin/6623dcb0b31c9ca0be342f6dca6b9e607ec3c12ff82068fa6030c142c2df77f7.bin +0 -0
- package/corpus/handwritten/blobs/bin/6887131a04175edbd1989aa95e8749d1703e7f2d0b8464e85f6bad28d6964125.bin +0 -0
- package/corpus/handwritten/blobs/bin/6cf89771d998486cad9049e6f4fc177d742a18ad79fafa4596814ff9d3cf1952.bin +0 -0
- package/corpus/handwritten/blobs/bin/74bbb0fc219e8476cd5550014a357ee18abc981ff3fe787ae3e60d4593705ec5.bin +0 -0
- package/corpus/handwritten/blobs/bin/76784a7f519ac43ce113a0c9365881839b75f66f96aa009fe8d3c8ab539ef283.bin +0 -0
- package/corpus/handwritten/blobs/bin/79a2f693ee2da546bb551f8b641b9c3affd2b8bfb5632ed7f417daba9d900af9.bin +0 -0
- package/corpus/handwritten/blobs/bin/7b593b0f9eefb957fb9d58b316d9836971203038d7c8127284bba44ccb3090bb.bin +0 -0
- package/corpus/handwritten/blobs/bin/7bb8e518ca5606de78972a6c648b57623f8bc12d7e06b4bbf43c60ac419a9bbd.bin +0 -0
- package/corpus/handwritten/blobs/bin/7c6133f3350147257fa501f41269cb77cb11d8ed96d351e873333b079cee524a.bin +0 -0
- package/corpus/handwritten/blobs/bin/7f5acf1893828995256f5b2c54948f80ba21e53de72db26ea72ce2479f5b0682.bin +0 -0
- package/corpus/handwritten/blobs/bin/836516253cf0f3e6e79537609fdbe6331c8c5c974f9ec4d3fbe4a7db48cf123d.bin +0 -0
- package/corpus/handwritten/blobs/bin/89900344f82d5c1474d2a163f8d29903447bac64e9c9775123ef499be70c2380.bin +0 -0
- package/corpus/handwritten/blobs/bin/95d76a9273c3edd98b3643c54e2e7989800bdcaf6f815230ef09f601e760330f.bin +0 -0
- package/corpus/handwritten/blobs/bin/a7b5a5fe053a38c93eed899bde5051cddd80e0a3f3c82b6fd814869097f0944b.bin +0 -0
- package/corpus/handwritten/blobs/bin/b29be84df0bfd1bc97a1464fd5ea068130947bfed3328e167640c81326eb45d7.bin +0 -0
- package/corpus/handwritten/blobs/bin/b6518dc352be03332a256f1cd9d1149da262fe6829e87ba43364f19c687ca7c9.bin +0 -0
- package/corpus/handwritten/blobs/bin/b7edb8095beeb158adb61ae3caa1653773757afbcd8fb2764c94b975a43fe9e2.bin +0 -0
- package/corpus/handwritten/blobs/bin/b86d617ae7fa397df51ff7af87cd89fa113ac19abd3840ea8f3a086d6c82905c.bin +0 -0
- package/corpus/handwritten/blobs/bin/bb860b5c67ee7f2fafd67588822152228d6f6c9de1231123eeafa4844732b18b.bin +0 -0
- package/corpus/handwritten/blobs/bin/bf8c3971bbb224075d488ffa9cfc20e322c61f9ca0c59c356838415f6778014b.bin +0 -0
- package/corpus/handwritten/blobs/bin/c2edd52ee14ebdc9fcc01d38c15d6ab3379df7a20098c260c546551898959cd1.bin +0 -0
- package/corpus/handwritten/blobs/bin/c3de13c551c5b45270143dcbb9fc9a31651f6012355823c0709c2fe6cafda940.bin +0 -0
- package/corpus/handwritten/blobs/bin/c57a8d9da18b1289afd16de00dd1ec75027048b8dcf7dd218da36bc3276ff035.bin +0 -0
- package/corpus/handwritten/blobs/bin/cc2975c9dea4c31b1bf380623a8f44059423004653f9cae4f603d374174323b7.bin +0 -0
- package/corpus/handwritten/blobs/bin/d476abba2e1c63ad3c7527617559173484ee837a5be2744d968466d5527c286b.bin +0 -0
- package/corpus/handwritten/blobs/bin/db242f89115c878cf0c3b976a1647e9cdeb6a1a51813b1dacaf1188715603294.bin +0 -0
- package/corpus/handwritten/blobs/bin/dcc4b9b3bc4ca777d11c494ae5478f17ad7cf2efa18dcba30def872d55355bc3.bin +0 -0
- package/corpus/handwritten/blobs/bin/dd99da483f385327d6b8319d6e2e9000b580280069353718aa0fda2230707e8b.bin +0 -0
- package/corpus/handwritten/blobs/bin/dfc139dba26f1789e16f72602e654636f2d99bcd41e3f10454da74b3a6a64dda.bin +0 -0
- package/corpus/handwritten/blobs/bin/e15ab3cc9f60657321cfe8d9751e086f025734f4e7068271e0baf6066a686f18.bin +0 -0
- package/corpus/handwritten/blobs/bin/e16a83a71213db6f804ce1d53981a2308062752c85c440022d9eeb7605fd37c8.bin +0 -0
- package/corpus/handwritten/blobs/bin/e7355876487f660ac9f25c9d9dfcd66eaf432e1e1669eb89d12ce8267a8d3e86.bin +0 -0
- package/corpus/handwritten/blobs/bin/e81a632e2da0f6a4d801f18aadfe2c6e640401cc1178935a9099ebb8e3af6cc1.bin +0 -0
- package/corpus/handwritten/blobs/bin/f0721c60d0b1046579d8c587fac8482a70822f0b39a85f9acc0cfc31f82b7dd2.bin +0 -0
- package/corpus/handwritten/blobs/bin/f301cf574de6d84030f839098ca44705dca115f9d3e4ee848e0b35fff3deaf77.bin +0 -0
- package/corpus/handwritten/blobs/bin/f7797f295a7570c437bf7020a1ddf208fea2a7aab595333320a6396c1608d360.bin +0 -0
- package/corpus/handwritten/blobs/glb/08de0bb2439ac812adef528b4b073bdb954bbeada972a2f3afb1757bd0540396.glb +0 -0
- package/corpus/handwritten/blobs/glb/153681171c35d2898569324e21ebe734b8418d4122833618a1e64ea326be1e5e.glb +0 -0
- package/corpus/handwritten/blobs/glb/1df5ce0b6cae72ec4cf3c41510681ba70ebb474f9745d536ebd4f03e8fc82de9.glb +0 -0
- package/corpus/handwritten/blobs/glb/262031e2fa710bd8d586eafce1019ca1434a2170e407567741aac1d99fc9c5ab.glb +0 -0
- package/corpus/handwritten/blobs/glb/27466efb180fb5b5074b40e424bd0b8d78f7ff0f5f3663748e014daeeeb5bedd.glb +0 -0
- package/corpus/handwritten/blobs/glb/2d2f6d00a14c89a4efb7f679b371118f564f258797ed8b8b42baf4ae60902ea6.glb +0 -0
- package/corpus/handwritten/blobs/glb/31f327d215ed7ef422e2169172f3869769e9816c9da979616844081e74f2eb09.glb +0 -0
- package/corpus/handwritten/blobs/glb/3bfe0e9ca18077ffee9c284ef40fed9f2fc354f7495612c785a6f980b5966559.glb +0 -0
- package/corpus/handwritten/blobs/glb/3db43042b3eeb1dee7ce9de1cc00322cefc348aa18c37d168b0858e6af6ca7a4.glb +0 -0
- package/corpus/handwritten/blobs/glb/46460a50da44fb8e792b48a646ec9ce025bb309d315dbcf67d2e9598591750de.glb +0 -0
- package/corpus/handwritten/blobs/glb/4902213556fedaf269fba6f0f195e424b2e49973ab45dcb8b69e34d253d9d8ff.glb +0 -0
- package/corpus/handwritten/blobs/glb/4dda463c9cd4bf339e5611871d4ba2fe16fe1487389a88b2888e96bc55e45d93.glb +0 -0
- package/corpus/handwritten/blobs/glb/4ed23469bd2b6b73183564cfc80a1ebcd0ffe2666a90a556752af0ca147fd2f7.glb +0 -0
- package/corpus/handwritten/blobs/glb/4fe74a1bed6b67129885b90cfcae01b5ca82e23e6d40507e280f02fca7fda54f.glb +0 -0
- package/corpus/handwritten/blobs/glb/50521bb3a50cc7199d324a0b25bc167c2e9d69770cb500490428efefc81ce3ea.glb +0 -0
- package/corpus/handwritten/blobs/glb/5ecca36d1e503edc092af0ef42f139cdcad99b8c2008318eb6ad337023d57296.glb +0 -0
- package/corpus/handwritten/blobs/glb/60fc036925852568cdb1b9fb85218dc43a8bf2ed86d3971a221ad942ece203a7.glb +0 -0
- package/corpus/handwritten/blobs/glb/611633cee0e5822b744486e6dff5414ad5b159eaabffe1c0ba0bb68be794bfa1.glb +0 -0
- package/corpus/handwritten/blobs/glb/67c7f983a0bcb9f84425378acac121a53f30795dce3181643bc1b763d0ae80b5.glb +0 -0
- package/corpus/handwritten/blobs/glb/6ecc0d307030943727484b49b1872643479c55ccc92252fca06e9e3cbe98fa90.glb +0 -0
- package/corpus/handwritten/blobs/glb/774b366df4de56cb6f9e3c904f02ec98016ac2ec489dc9e214b09220fca2f8e5.glb +0 -0
- package/corpus/handwritten/blobs/glb/785bae514ffc029e611d602259db7d37cbef589409a0814b9d37175d8b6c0a45.glb +0 -0
- package/corpus/handwritten/blobs/glb/79e79524efb2830e90af3c945c5b36ef07c1a38f2da2958112203a99eac52a16.glb +0 -0
- package/corpus/handwritten/blobs/glb/7bebdcdaf0be30d9f8d21bde72af68c32d825d12dc668f48109223ed7ff71c9f.glb +0 -0
- package/corpus/handwritten/blobs/glb/7d8b5ec9326a11362b3f9fa3409cb59d11b99f549cc304319c63c1ec55cbf5ab.glb +0 -0
- package/corpus/handwritten/blobs/glb/82e886f826315e4bf962363165fadadd3d93f85132c1909095045e0a7ccc0b34.glb +0 -0
- package/corpus/handwritten/blobs/glb/84b4ef190c3994ae7ca1b1f7a936526d1d20ad7deac13f949e3fe6bb7ba139ed.glb +0 -0
- package/corpus/handwritten/blobs/glb/85b7153e943fbe8c659bd6e4b323511dc6f6e2c7a3a1185e7a9a29ea6ddfdfa6.glb +0 -0
- package/corpus/handwritten/blobs/glb/85cf2d2be91cedbaf454ca42ad53c0c17b311088528d274695dbcea490d6c684.glb +0 -0
- package/corpus/handwritten/blobs/glb/8662b4cdc626c61a45e63f71dc866746c083cd0d4644b817a373105f936a7047.glb +0 -0
- package/corpus/handwritten/blobs/glb/8a4d33bfbb17d865e5deb0a0bdf3de67fc2312950a7568ed2635c22fbe4b1ecf.glb +0 -0
- package/corpus/handwritten/blobs/glb/8b11171d41c9027411ca8b87797d9ec70355471bdd3a247c114c49b8b781bbd9.glb +0 -0
- package/corpus/handwritten/blobs/glb/9026e1c4f0250832b69a989e69fe3071e5cad72adfe9c22ce11c409b18bb3357.glb +0 -0
- package/corpus/handwritten/blobs/glb/945b946f17b6393ea040230641c3083678bb6ab42e1d7239aeb9c950d0e7d5bb.glb +0 -0
- package/corpus/handwritten/blobs/glb/9afab455d603f1f8a38074c5a6cbed26d7d7f2cfd8a531820bd165d4b37399ee.glb +0 -0
- package/corpus/handwritten/blobs/glb/a6d702fb1be1095517625bfb2a2383f5f9638775059fd7e0d093d2044651b848.glb +0 -0
- package/corpus/handwritten/blobs/glb/aae479c2f99848998a1b499bbcad815d971349c2442bc363786aef63baad4337.glb +0 -0
- package/corpus/handwritten/blobs/glb/b155bd41f260d5303e293d691b657e0fb9b9c8b2f8aa589a0187061baa033eb7.glb +0 -0
- package/corpus/handwritten/blobs/glb/b1e8b770d99e8ca4396f21fd512f632c587149fc13db69deba388f702a46982f.glb +0 -0
- package/corpus/handwritten/blobs/glb/b382c318a5baac35da59a7b99ebaad6992e30c4bac327e85851ce0b2f89aa58b.glb +0 -0
- package/corpus/handwritten/blobs/glb/ba4478198696802808262af9bbfc224fe37e24e3f8c13de91debc87d3e1a9d41.glb +0 -0
- package/corpus/handwritten/blobs/glb/baf02cd967d1bf3c6a2ae878f4ca4ed34d0c39302ca2b8b6e3560a4e87b5c16f.glb +0 -0
- package/corpus/handwritten/blobs/glb/bc14dd152815ea6ed39458dcf89f2d69173d61d6e2b57be99d31ce2da64ccf67.glb +0 -0
- package/corpus/handwritten/blobs/glb/bc4e4d3bcf7ace855183efec0fbf242d444a32714d8b2fd8a45fa7b539ef2c73.glb +0 -0
- package/corpus/handwritten/blobs/glb/bc53475e2aa2fc9c2c0574b36a449fd57259c462d771e2b360def5c338d37c26.glb +0 -0
- package/corpus/handwritten/blobs/glb/c35d9e50f392c29f2587e3a6eb4f21143ba08e48d76a53b9de62d3b5be46c1a5.glb +0 -0
- package/corpus/handwritten/blobs/glb/c6911e059d3ac6aea75bc0ad3dd8b220704bfbba8ba98b57705e7aa3ecbe0050.glb +0 -0
- package/corpus/handwritten/blobs/glb/c84d88b6ed878490bcf9fa985b5e6a7a683de8ee7808ee4151a3b6a898fbe4f2.glb +0 -0
- package/corpus/handwritten/blobs/glb/c9d5d02ef0e38ac2898d3e6ecbc2ea0a6d2bd04531118550ab54b5e83293d7ec.glb +0 -0
- package/corpus/handwritten/blobs/glb/cd9d04e361e4c3d0aeb82f8682d71114ff8318b8fc4980bccee3c5e5c16afc27.glb +0 -0
- package/corpus/handwritten/blobs/glb/d32499928422a0cd1a32b1afaeacc31d2d84d74876f6805b36218dc04402a921.glb +0 -0
- package/corpus/handwritten/blobs/glb/dc7ea629fcddeba445599d73a5d721f4d5004e056c3c140baa3e6817393c6462.glb +0 -0
- package/corpus/handwritten/blobs/glb/dce79b59c85ca5a7f9fc25e585d253b15558f8f5d8497a76923c9071601de8b1.glb +0 -0
- package/corpus/handwritten/blobs/glb/e7fa1b02bae6c8d19ace0e8db44810beab9a1be9f8172d5816324760267d6d11.glb +0 -0
- package/corpus/handwritten/blobs/glb/eb664feed0fdcc3ac73cecbe737109994fe5dfad8a33997de88598965fa936ba.glb +0 -0
- package/corpus/handwritten/blobs/glb/ec6a771ca852b0b69e55a12df9d347384d01e611c8c6151ea771910f1601605d.glb +0 -0
- package/corpus/handwritten/blobs/glb/ede05013f575b4216d2b4b3f8a14d611ef28756f952f702bb169529c8ab02eff.glb +0 -0
- package/corpus/handwritten/blobs/glb/fec21fa96950340a1a031b31b37407468361ab0a7645c683e0d7773c18591a26.glb +0 -0
- package/corpus/handwritten/blobs/glb/ff21ea082bb00b01006900e7dbbb85220f31f45c144405c840a70872f9e09cb9.glb +0 -0
- package/corpus/handwritten/blobs/image/248fe9601e921305ffb35421414bc5f03e9f1b3dba15bf9b5c3387d8f255da17.png +0 -0
- package/corpus/handwritten/blobs/image/4b47420aff1ded28c9c6cf1eb92d6e2d7b01d057f2654654405445ff8d562e55.webp +0 -0
- package/corpus/handwritten/blobs/image/5dbc818ed0be692e6ba3df87898fd623280a2686eed5a538333e1325764b238d.png +0 -0
- package/corpus/handwritten/blobs/image/d5ae692911bbc2b60b5fdde239b70aad4ce9be0d7665c4a91b438de6077e21e3.jpg +0 -0
- package/corpus/handwritten/blobs/ktx2/df0dd2e8adc1d9479148bb198cb750471df454680cf0c9ffd6dc85d6262ed676.ktx2 +0 -0
- package/corpus/handwritten/blobs/wasm/ecc886d8bbebcf190298ff9162b6bb364f2125606f5bdc8cc220ea28044f96ea.wasm +0 -0
- package/corpus/handwritten/cook.json +1 -0
- package/corpus/handwritten/mounts/shardfiles/blender-template/discovery.json +1 -0
- package/corpus/handwritten/sections/actors/creatures.json +1 -0
- package/corpus/handwritten/sections/actors/crowds.json +1 -0
- package/corpus/handwritten/sections/actors/species.json +1 -0
- package/corpus/handwritten/sections/audio/audio.json +1 -0
- package/corpus/handwritten/sections/client/plan.json +1 -0
- package/corpus/handwritten/sections/combat/encounters.json +1 -0
- package/corpus/handwritten/sections/combat/items.json +1 -0
- package/corpus/handwritten/sections/combat/strikes.json +1 -0
- package/corpus/handwritten/sections/economy/ledger.json +1 -0
- package/corpus/handwritten/sections/economy/loot.json +1 -0
- package/corpus/handwritten/sections/look/look.json +1 -0
- package/corpus/handwritten/sections/look/map.json +1 -0
- package/corpus/handwritten/sections/look/materials.json +1 -0
- package/corpus/handwritten/sections/quests/quests.json +1 -0
- package/corpus/handwritten/sections/sim/client-scripts.json +1 -0
- package/corpus/handwritten/sections/sim/hooks.json +1 -0
- package/corpus/handwritten/sections/sim/plumbing.json +1 -0
- package/corpus/handwritten/sections/sim/sim.json +1 -0
- package/corpus/handwritten/sections/state/migrations.json +1 -0
- package/corpus/handwritten/sections/state/state.json +1 -0
- package/corpus/handwritten/sections/ui/card.json +1 -0
- package/corpus/handwritten/sections/ui/compendium.json +1 -0
- package/corpus/handwritten/sections/ui/level.json +1 -0
- package/corpus/handwritten/sections/ui/ui.json +1 -0
- package/corpus/handwritten/sections/world/collision.json +1 -0
- package/corpus/handwritten/sections/world/days.json +1 -0
- package/corpus/handwritten/sections/world/edge.json +1 -0
- package/corpus/handwritten/sections/world/movers.json +1 -0
- package/corpus/handwritten/sections/world/navigation.json +1 -0
- package/corpus/handwritten/sections/world/props.json +1 -0
- package/corpus/handwritten/sections/world/spawn.json +1 -0
- package/corpus/handwritten/sections/world/terrain.json +1 -0
- package/corpus/handwritten/sections/world/tiles.json +1 -0
- package/corpus/handwritten/sections/world/traversal.json +1 -0
- package/corpus/handwritten/sections/world/water.json +1 -0
- package/corpus/handwritten/sections/world/weather.json +1 -0
- package/corpus/handwritten/shard.json +1 -0
- package/corpus/handwritten/validation.json +1 -0
- package/package.json +504 -2
- package/packages/wire/src/net-command.ts +150 -0
- package/src/cli/bin.mjs +9 -0
- package/src/cli/main.ts +148 -0
- package/src/cli/pack.ts +262 -0
- package/src/cli/validate.ts +210 -0
- package/src/cli/version.ts +13 -0
- package/src/format/aacIndex.ts +160 -0
- package/src/format/accent.ts +35 -0
- package/src/format/achievementCounters.ts +22 -0
- package/src/format/actorMoves.ts +615 -0
- package/src/format/actorProjectionV2.ts +93 -0
- package/src/format/admissionControl.ts +66 -0
- package/src/format/admissionLate.ts +22 -0
- package/src/format/admissionLimits.ts +11 -0
- package/src/format/admissionServer.ts +30 -0
- package/src/format/ambientLife.ts +123 -0
- package/src/format/arenaRoomDocument.ts +114 -0
- package/src/format/arenaScriptRows.ts +107 -0
- package/src/format/arenaView.ts +30 -0
- package/src/format/assetAdmission.ts +279 -0
- package/src/format/audio-measure.ts +184 -0
- package/src/format/audio-mp4.ts +234 -0
- package/src/format/audio-rules.ts +271 -0
- package/src/format/audio-waiver.ts +55 -0
- package/src/format/audio.ts +463 -0
- package/src/format/audioBank.ts +37 -0
- package/src/format/audioProfiles.ts +501 -0
- package/src/format/audioRouting.ts +67 -0
- package/src/format/audioScene.ts +342 -0
- package/src/format/bakedTerrainBytes.ts +35 -0
- package/src/format/bakedTerrainSampling.ts +66 -0
- package/src/format/bakedTiles.ts +407 -0
- package/src/format/binarySource.ts +32 -0
- package/src/format/bodySlots.ts +90 -0
- package/src/format/bossEncounter.ts +354 -0
- package/src/format/bossProfiles.ts +709 -0
- package/src/format/bossSocketRig.ts +92 -0
- package/src/format/bowVariantRows.ts +68 -0
- package/src/format/brains.ts +252 -0
- package/src/format/budget.ts +214 -0
- package/src/format/buildings.ts +496 -0
- package/src/format/builtIndexes.ts +26 -0
- package/src/format/catalogueEconomy.ts +65 -0
- package/src/format/caveInterior.ts +225 -0
- package/src/format/cellBounds.ts +47 -0
- package/src/format/cellField.ts +98 -0
- package/src/format/chapterDirector.ts +193 -0
- package/src/format/clientChannels.ts +450 -0
- package/src/format/clientCues.ts +34 -0
- package/src/format/clientNative.ts +358 -0
- package/src/format/clientOwnership.ts +43 -0
- package/src/format/clientPlan.ts +306 -0
- package/src/format/clientScripts.ts +116 -0
- package/src/format/clientState.ts +273 -0
- package/src/format/clientTrails.ts +56 -0
- package/src/format/collectionDisplay.ts +232 -0
- package/src/format/colourFunction.ts +44 -0
- package/src/format/colourLut.ts +4 -0
- package/src/format/commonsCosts.ts +28 -0
- package/src/format/compendiumRows.ts +151 -0
- package/src/format/compendiumSketches.ts +23 -0
- package/src/format/completion.ts +83 -0
- package/src/format/contentBounds.ts +76 -0
- package/src/format/contentCost.ts +50 -0
- package/src/format/contracts.ts +305 -0
- package/src/format/cook-data.ts +148 -0
- package/src/format/cook-preparation.ts +241 -0
- package/src/format/coverAppearance.ts +53 -0
- package/src/format/creatures.ts +175 -0
- package/src/format/crowdPresentation.ts +87 -0
- package/src/format/crowds.ts +46 -0
- package/src/format/cueDirector.ts +134 -0
- package/src/format/dayCycle.ts +28 -0
- package/src/format/dayLook.ts +44 -0
- package/src/format/decisionBindings.ts +80 -0
- package/src/format/decisionPublication.ts +35 -0
- package/src/format/decisionScripts.ts +327 -0
- package/src/format/declaredQuestPage.ts +101 -0
- package/src/format/deviceMemoryCost.ts +50 -0
- package/src/format/director.ts +52 -0
- package/src/format/directorProduct.ts +27 -0
- package/src/format/directorStages.ts +165 -0
- package/src/format/directorWhen.ts +78 -0
- package/src/format/discoveryValues.ts +416 -0
- package/src/format/easedFields.ts +48 -0
- package/src/format/edgeProfiles.ts +40 -0
- package/src/format/eliteContinuation.ts +110 -0
- package/src/format/eliteEntryRows.ts +351 -0
- package/src/format/eliteFeature.ts +605 -0
- package/src/format/eliteScripts.ts +60 -0
- package/src/format/encounterRows.ts +1030 -0
- package/src/format/encounters.ts +65 -0
- package/src/format/engine-music.ts +42 -0
- package/src/format/entryClearance.ts +86 -0
- package/src/format/entryCoverage.ts +61 -0
- package/src/format/entryGeometry.ts +56 -0
- package/src/format/entryLanding.ts +83 -0
- package/src/format/entryReads.ts +45 -0
- package/src/format/entrywayAssets.ts +33 -0
- package/src/format/entryways.ts +58 -0
- package/src/format/exchange.ts +25 -0
- package/src/format/explorerCatalogue.ts +312 -0
- package/src/format/feature-sides.ts +233 -0
- package/src/format/fieldPresentation.ts +62 -0
- package/src/format/figures.ts +437 -0
- package/src/format/findsCatalogue.ts +67 -0
- package/src/format/fixedDraws.ts +24 -0
- package/src/format/flyers.ts +226 -0
- package/src/format/forestNativeInputs.ts +37 -0
- package/src/format/forestPage.ts +285 -0
- package/src/format/forestWeather.ts +333 -0
- package/src/format/geometryPack.ts +136 -0
- package/src/format/glbBuffers.ts +77 -0
- package/src/format/glbCost.ts +212 -0
- package/src/format/glbImages.ts +95 -0
- package/src/format/glbTriangles.ts +95 -0
- package/src/format/graphArmsRows.ts +200 -0
- package/src/format/grapple.ts +123 -0
- package/src/format/grazers.ts +164 -0
- package/src/format/grid-catalogue.ts +247 -0
- package/src/format/gridReadiness.ts +49 -0
- package/src/format/groupBrains.ts +249 -0
- package/src/format/heldArms.ts +576 -0
- package/src/format/heldEquipment.ts +78 -0
- package/src/format/heldFinishes.ts +415 -0
- package/src/format/heldGear.ts +68 -0
- package/src/format/heldJianDocument.ts +75 -0
- package/src/format/heldMelee.ts +866 -0
- package/src/format/heldView.ts +26 -0
- package/src/format/heldWeaponDocuments.ts +36 -0
- package/src/format/herdShelter.ts +58 -0
- package/src/format/hooks.ts +45 -0
- package/src/format/immutable.ts +59 -0
- package/src/format/inputDeclarations.ts +157 -0
- package/src/format/islandLibrary.ts +51 -0
- package/src/format/items.ts +229 -0
- package/src/format/json.ts +143 -0
- package/src/format/keyedSky.ts +314 -0
- package/src/format/kitFigure.ts +68 -0
- package/src/format/ktx2Cost.ts +47 -0
- package/src/format/ledger.ts +56 -0
- package/src/format/liftApproach.ts +75 -0
- package/src/format/liftRider.ts +10 -0
- package/src/format/lightEmitters.ts +105 -0
- package/src/format/lights.ts +135 -0
- package/src/format/limbCollision.ts +136 -0
- package/src/format/limbPopulation.ts +33 -0
- package/src/format/limbRig.ts +202 -0
- package/src/format/loadout.ts +156 -0
- package/src/format/look-light.ts +153 -0
- package/src/format/lootBag.ts +145 -0
- package/src/format/lootEconomy.ts +235 -0
- package/src/format/materialFamilies.ts +565 -0
- package/src/format/materialGraph.ts +1220 -0
- package/src/format/materials.ts +449 -0
- package/src/format/memoryAdmission.ts +84 -0
- package/src/format/memoryGates.json +7 -0
- package/src/format/meshCollision.ts +56 -0
- package/src/format/meshCollisionAssets.ts +19 -0
- package/src/format/meshCollisionBytes.ts +102 -0
- package/src/format/meshEntryways.ts +54 -0
- package/src/format/meshopt-decoder.wasm +0 -0
- package/src/format/meshopt-module.ts +177 -0
- package/src/format/meshopt-static.mjs +11 -0
- package/src/format/meshopt-wasm.ts +61 -0
- package/src/format/migrations.ts +209 -0
- package/src/format/minimap.ts +1052 -0
- package/src/format/mixedPopulation.ts +222 -0
- package/src/format/modes.ts +304 -0
- package/src/format/mountedSpecimenRows.ts +64 -0
- package/src/format/moverLifecycle.ts +34 -0
- package/src/format/moverMotion.ts +271 -0
- package/src/format/movers.ts +224 -0
- package/src/format/namedJsonContracts.ts +423 -0
- package/src/format/nativeActors.ts +45 -0
- package/src/format/nativeAssembly.ts +141 -0
- package/src/format/nativeGround.ts +37 -0
- package/src/format/nativeGroundAssets.ts +35 -0
- package/src/format/nativeItems.ts +184 -0
- package/src/format/nativePhysics.ts +140 -0
- package/src/format/nativeQuestComposition.ts +398 -0
- package/src/format/nativeRiding.ts +103 -0
- package/src/format/nativeRuntimePlan.ts +89 -0
- package/src/format/navigation.ts +99 -0
- package/src/format/navigationBytes.ts +111 -0
- package/src/format/nearPlaceholder.ts +111 -0
- package/src/format/nearPlaceholderAssets.ts +23 -0
- package/src/format/netCommand.ts +11 -0
- package/src/format/npcs.ts +546 -0
- package/src/format/outputAddress.ts +11 -0
- package/src/format/outputDownload.ts +34 -0
- package/src/format/outputFields.ts +123 -0
- package/src/format/outputIndex.ts +352 -0
- package/src/format/overdraw.ts +41 -0
- package/src/format/pageLife.ts +303 -0
- package/src/format/pagePreparation.ts +60 -0
- package/src/format/paintedLook.ts +55 -0
- package/src/format/paintedResources.ts +158 -0
- package/src/format/panelTemplate.ts +139 -0
- package/src/format/placeholderSource.ts +209 -0
- package/src/format/platformDataSections.ts +146 -0
- package/src/format/platformFileFamilies.ts +299 -0
- package/src/format/plumbing.ts +165 -0
- package/src/format/populationEnvironment.ts +210 -0
- package/src/format/populationKeeper.ts +163 -0
- package/src/format/populationProjection.ts +496 -0
- package/src/format/populationRespawn.ts +48 -0
- package/src/format/populationRoster.ts +158 -0
- package/src/format/portalFloor.ts +56 -0
- package/src/format/portalLink.ts +112 -0
- package/src/format/portalLinkAssets.ts +42 -0
- package/src/format/portalRide.ts +22 -0
- package/src/format/postGraphDocument.ts +36 -0
- package/src/format/postGraphLook.ts +477 -0
- package/src/format/postStack.ts +114 -0
- package/src/format/practiceCourseRows.ts +466 -0
- package/src/format/preflight.ts +155 -0
- package/src/format/presentation.ts +33 -0
- package/src/format/product-audio.ts +76 -0
- package/src/format/product-reads.ts +178 -0
- package/src/format/product-stream-admit.ts +100 -0
- package/src/format/product-stream-assets.ts +493 -0
- package/src/format/product-stream-facts.ts +208 -0
- package/src/format/product-stream-miss.ts +12 -0
- package/src/format/product-stream-node.ts +47 -0
- package/src/format/product-stream-packs.ts +242 -0
- package/src/format/product-stream-rows.ts +202 -0
- package/src/format/product-stream-tar.ts +192 -0
- package/src/format/product-stream.ts +284 -0
- package/src/format/product.ts +358 -0
- package/src/format/productValidation.ts +205 -0
- package/src/format/propMaterials.ts +254 -0
- package/src/format/props.ts +137 -0
- package/src/format/questContinuation.ts +42 -0
- package/src/format/questFigures.ts +227 -0
- package/src/format/questGraph.ts +30 -0
- package/src/format/questHost.ts +314 -0
- package/src/format/questInteractionSource.ts +57 -0
- package/src/format/questInteractions.ts +642 -0
- package/src/format/questPageComposition.ts +92 -0
- package/src/format/questPageFacets.ts +121 -0
- package/src/format/questRuntime.ts +118 -0
- package/src/format/questSteps.ts +182 -0
- package/src/format/questStory.ts +512 -0
- package/src/format/questStoryBindings.ts +43 -0
- package/src/format/questWorld.ts +36 -0
- package/src/format/quests.ts +333 -0
- package/src/format/rainPresentation.ts +131 -0
- package/src/format/rangedPage.ts +117 -0
- package/src/format/receipt-cost.ts +71 -0
- package/src/format/registeredJson.ts +530 -0
- package/src/format/returnProgramDocument.ts +40 -0
- package/src/format/returnProjectionV2.ts +84 -0
- package/src/format/riding.ts +377 -0
- package/src/format/riggedHulls.ts +160 -0
- package/src/format/roamingBossProjection.ts +178 -0
- package/src/format/roamingCombat.ts +22 -0
- package/src/format/ropeDeckSite.ts +148 -0
- package/src/format/rows.ts +86 -0
- package/src/format/runtime.ts +38 -0
- package/src/format/runtimeBinds.ts +49 -0
- package/src/format/runtimeCost.ts +80 -0
- package/src/format/runtimeSpawns.ts +73 -0
- package/src/format/scalarChannel.ts +38 -0
- package/src/format/scaledPost.ts +27 -0
- package/src/format/scaledPostContract.ts +51 -0
- package/src/format/sceneBuffers.ts +122 -0
- package/src/format/sceneDraws.ts +89 -0
- package/src/format/sceneDressing.ts +247 -0
- package/src/format/sceneInstances.ts +192 -0
- package/src/format/sceneMotion.ts +122 -0
- package/src/format/sceneRefs.ts +71 -0
- package/src/format/sceneSources.ts +730 -0
- package/src/format/script-side-grandfather.ts +62 -0
- package/src/format/script-sides.ts +289 -0
- package/src/format/scriptAbi.ts +14 -0
- package/src/format/scriptAbiV1.ts +56 -0
- package/src/format/scriptActionsV2.ts +101 -0
- package/src/format/scriptAdmission.ts +165 -0
- package/src/format/scriptAdmissionV2.ts +126 -0
- package/src/format/scriptContract.ts +170 -0
- package/src/format/scriptFuelV2.ts +124 -0
- package/src/format/scriptGroupBankV2.ts +54 -0
- package/src/format/scriptGroupStepV2.ts +165 -0
- package/src/format/scriptInputStateV2.ts +52 -0
- package/src/format/scriptLimits.ts +5 -0
- package/src/format/scriptMemoryV2.ts +17 -0
- package/src/format/scriptModuleV2.ts +116 -0
- package/src/format/scriptObservationColumnsV2.ts +226 -0
- package/src/format/scriptQueriesV2.ts +164 -0
- package/src/format/scriptQueryStateV2.ts +40 -0
- package/src/format/scriptRngV2.ts +52 -0
- package/src/format/scriptWireV2.ts +106 -0
- package/src/format/scripts.ts +31 -0
- package/src/format/sections.ts +140 -0
- package/src/format/shardSchema.ts +632 -0
- package/src/format/shardSections.ts +383 -0
- package/src/format/sketch.ts +79 -0
- package/src/format/skin-materials.ts +172 -0
- package/src/format/skinAssets.ts +107 -0
- package/src/format/skinData.ts +110 -0
- package/src/format/skinLayers.ts +90 -0
- package/src/format/skins.ts +37 -0
- package/src/format/socketLift.ts +58 -0
- package/src/format/socketLiftAssets.ts +81 -0
- package/src/format/socketRigCreature.ts +66 -0
- package/src/format/sourceResidency.ts +16 -0
- package/src/format/spawnCombat.ts +26 -0
- package/src/format/spawnScriptV2.ts +145 -0
- package/src/format/spawnScripts.ts +229 -0
- package/src/format/spawnTables.ts +46 -0
- package/src/format/spawnView.ts +26 -0
- package/src/format/speciesActorsFile.ts +86 -0
- package/src/format/speciesBookRows.ts +84 -0
- package/src/format/speciesBrain.ts +96 -0
- package/src/format/speciesLooks.ts +1021 -0
- package/src/format/speciesPrograms.ts +97 -0
- package/src/format/speciesScripts.ts +45 -0
- package/src/format/specimenCatalogue.ts +94 -0
- package/src/format/splatTerrain.ts +192 -0
- package/src/format/standalone-catalogue.ts +144 -0
- package/src/format/standaloneControl.ts +44 -0
- package/src/format/state.ts +61 -0
- package/src/format/stateLineage.ts +71 -0
- package/src/format/stealth.ts +106 -0
- package/src/format/stillImage.ts +135 -0
- package/src/format/streamedCover.ts +105 -0
- package/src/format/surfaceLooks.ts +50 -0
- package/src/format/tar-fields.ts +54 -0
- package/src/format/tar-paths.ts +103 -0
- package/src/format/tar-source.ts +13 -0
- package/src/format/tar-write.ts +152 -0
- package/src/format/tar.ts +203 -0
- package/src/format/targets.ts +217 -0
- package/src/format/terrain.ts +241 -0
- package/src/format/terrainTileBytes.ts +104 -0
- package/src/format/tierSelection.ts +195 -0
- package/src/format/toonLighting.ts +32 -0
- package/src/format/toonLook.ts +332 -0
- package/src/format/trail.ts +17 -0
- package/src/format/traversal.ts +13 -0
- package/src/format/treeSetRows.ts +93 -0
- package/src/format/ui.ts +90 -0
- package/src/format/uiStrings.ts +17 -0
- package/src/format/uniformRows.ts +31 -0
- package/src/format/upload-wire.ts +184 -0
- package/src/format/validationReceipt.ts +142 -0
- package/src/format/version.ts +9 -0
- package/src/format/vertexWear.ts +45 -0
- package/src/format/viewProgram.ts +329 -0
- package/src/format/voicePatches.ts +47 -0
- package/src/format/water.ts +247 -0
- package/src/format/waterWaves.ts +7 -0
- package/src/format/waterWorld.ts +34 -0
- package/src/format/weaponProfiles.ts +1315 -0
- package/src/format/weatherBundle.ts +36 -0
- package/src/format/weatherEffects.ts +78 -0
- package/src/format/weatherProgram.ts +422 -0
- package/src/format/wildlifePopulation.ts +210 -0
- package/src/format/wireLimits.ts +9 -0
- package/src/format/worldAssembly.ts +104 -0
- package/src/format/worldEntry.ts +151 -0
- package/src/format/worldPhysics.ts +292 -0
- package/src/format/worldSceneBatch.ts +106 -0
- package/src/format/worldSceneModels.ts +79 -0
- package/src/format/worldScenePages.ts +89 -0
- package/src/format/worldScenePlacement.ts +191 -0
- package/src/format/worldSceneSlabs.ts +43 -0
- package/src/format/worldSceneSurface.ts +113 -0
- package/src/format/worldSceneWeld.ts +702 -0
- package/src/format/worldScenes.ts +184 -0
- package/src/format/worldTargets.ts +111 -0
- package/src/format/worldUpdates.ts +229 -0
- package/src/hook/format-hook.d.mts +2 -0
- package/src/hook/format-hook.mjs +47 -0
- package/README.md +0 -8
|
@@ -0,0 +1,632 @@
|
|
|
1
|
+
import { AdmissionLateSchema, lateLibraryRootsValid } from './admissionLate.ts';
|
|
2
|
+
import { ManifestMetadataSchema } from './minimap.ts';
|
|
3
|
+
import { hasDeclaredClientPage } from './runtimeBinds.ts';
|
|
4
|
+
import { diverPreset } from './flyers.ts';
|
|
5
|
+
import { grazerPreset } from './grazers.ts';
|
|
6
|
+
import { ShardFiniteSchema as finite, ShardReferenceSchema as ref, ShardNamesSchema as names, IdentitySchema, RequiresSchema, BudgetsSchema, SimSchema, AuthorCapsSchema, ServerBudgetSchema, FilesSchema, TilesSchema, LibrarySchema, CriticalSchema, FarSchema, SpawnSchema } from './shardSections.ts';
|
|
7
|
+
import * as v from 'valibot';
|
|
8
|
+
import { CELL_ABOVE, CELL_BELOW, CHUNK_HALF, CONTENT_CAPS } from './contentBounds.ts';
|
|
9
|
+
import { jsonDataNodes } from './json.ts';
|
|
10
|
+
import { SHARDFILE_ADMISSION_LIMITS as limits } from './admissionLimits.ts';
|
|
11
|
+
import { preflightShardfile } from './preflight.ts';
|
|
12
|
+
import { preflightAssetGraph } from './product.ts';
|
|
13
|
+
import { SHARDFILE_VERSION } from './version.ts';
|
|
14
|
+
import { UiSchema, uiRules } from './ui.ts';
|
|
15
|
+
import { scriptBindingRules } from './scripts.ts';
|
|
16
|
+
import { RowsSchema } from './rows.ts';
|
|
17
|
+
import { DirectorsSchema } from './directorStages.ts';
|
|
18
|
+
import { NavigationSchema, navigationRules } from './navigation.ts';
|
|
19
|
+
import { TerrainSchema } from './terrain.ts';
|
|
20
|
+
import { NearPlaceholderSchema, nearPlaceholderCost, nearPlaceholderRoots } from './nearPlaceholder.ts';
|
|
21
|
+
import { MeshCollisionSchema, meshCollisionRules } from './meshCollision.ts';
|
|
22
|
+
import { NativeGroundSchema, nativeGroundRules } from './nativeGround.ts';
|
|
23
|
+
import { WaterSchema } from './water.ts';
|
|
24
|
+
import { CreaturesSchema } from './creatures.ts';
|
|
25
|
+
import { FlockSchema } from './crowds.ts';
|
|
26
|
+
import { groupBrainRules } from './groupBrains.ts';
|
|
27
|
+
import { EncountersSchema, encounterRules } from './encounters.ts';
|
|
28
|
+
import { QuestDataSchema } from './quests.ts';
|
|
29
|
+
import { QuestNpcBindingsSchema, questNpcBindingRules } from './npcs.ts';
|
|
30
|
+
import { QuestHostSchema, questHostBindingRules } from './questHost.ts';
|
|
31
|
+
import { AudioDataSchema } from './audio.ts';
|
|
32
|
+
import { LedgerRulesSchema } from './ledger.ts';
|
|
33
|
+
import { HooksSchema, hookRules } from './hooks.ts';
|
|
34
|
+
import { PlumbingSchema } from './plumbing.ts';
|
|
35
|
+
import { PropsSchema, validatePropsReferences } from './props.ts';
|
|
36
|
+
import { TargetsSchema, targetRules } from './targets.ts';
|
|
37
|
+
import { ItemsSchema, itemRules } from './items.ts';
|
|
38
|
+
import { TraversalSchema } from './traversal.ts';
|
|
39
|
+
import { RuntimeSchema } from './runtime.ts';
|
|
40
|
+
import { ClientScriptsSchema, clientScriptRules } from './clientScripts.ts';
|
|
41
|
+
import { ClientChannelsSchema } from './clientChannels.ts';
|
|
42
|
+
import { EdgeProfilesSchema } from './edgeProfiles.ts';
|
|
43
|
+
import { EntrywaysSchema, entrywayRules } from './entryways.ts';
|
|
44
|
+
import { ModesSchema } from './modes.ts';
|
|
45
|
+
import { MoversSchema, parseMovers } from './movers.ts';
|
|
46
|
+
import { socketLiftEntries, socketLiftRules } from './socketLiftAssets.ts';
|
|
47
|
+
import { portalLinkEntries, portalLinkRules } from './portalLinkAssets.ts';
|
|
48
|
+
import { StateSchema, stateRules } from './state.ts';
|
|
49
|
+
import { assertCommonsCosts } from './commonsCosts.ts';
|
|
50
|
+
import { AccentSchema } from './accent.ts';
|
|
51
|
+
import { MapSchema, PresentationSchema } from './presentation.ts';
|
|
52
|
+
import { MigrationsSchema, migrationRules } from './migrations.ts';
|
|
53
|
+
import { skinLookRules } from './skinAssets.ts';
|
|
54
|
+
import { MaterialsSchema, FamilyLooksSchema, MaterialCurvesSchema, TextureSamplersSchema, materialExists, materialTextureRefs, materialGraphRules, materialCurveRules, textureSamplerRules } from './materials.ts';
|
|
55
|
+
import { PostStackSchema, postStackRules } from './postStack.ts';
|
|
56
|
+
import { LookBloomSchema, LookLightSchema } from './look-light.ts';
|
|
57
|
+
import type { LookBloom, LookBloomInput, LookLight, LookLightInput } from './look-light.ts';
|
|
58
|
+
|
|
59
|
+
const channel = v.pipe(finite, v.minValue(0), v.maxValue(1));
|
|
60
|
+
const colour = v.tuple([channel, channel, channel]);
|
|
61
|
+
const unsigned = v.pipe(finite, v.minValue(0));
|
|
62
|
+
const key: v.GenericSchema<DayKeyRowsInput, DayKeyRows> = v.strictObject({ time: channel, sky: v.strictObject({ zenith: colour, horizon: colour }), fog: v.strictObject({ colour, density: unsigned, near: v.optional(unsigned), far: v.optional(unsigned) }), sun: v.strictObject({ colour, intensity: unsigned }), ambient: v.strictObject({ sky: colour, ground: colour, intensity: unsigned }) });
|
|
63
|
+
const day: v.GenericSchema<DayRowsInput, DayRows> = v.strictObject({ minutes: v.pipe(finite, v.minValue(1), v.maxValue(1440)), start: channel, maxElevation: v.pipe(finite, v.minValue(0), v.maxValue(90)), azimuth: v.pipe(finite, v.minValue(-180), v.maxValue(180)) });
|
|
64
|
+
const lookBloom = v.exactOptional(LookBloomSchema);
|
|
65
|
+
const lookGrade = v.strictObject({ exposure: finite, saturation: v.pipe(finite, v.minValue(0)), contrast: v.pipe(finite, v.minValue(0)), lut: v.nullable(ref), bloom: lookBloom });
|
|
66
|
+
/** A colour LUT file's exact wire size: 33³ RGBA8 (the engine's render/lut format). */
|
|
67
|
+
export const LOOK_LUT_BYTES: number = 33 ** 3 * 4;
|
|
68
|
+
const rawSchema: v.GenericSchema<ShardfileRowsInput, ShardfileRows> & { readonly entries: { readonly [Key in keyof ShardfileRows]-?: v.GenericSchema<ShardfileRowsInput[Key], ShardfileRows[Key]> } } = v.strictObject({
|
|
69
|
+
version: v.literal(SHARDFILE_VERSION),
|
|
70
|
+
accent: AccentSchema,
|
|
71
|
+
identity: IdentitySchema,
|
|
72
|
+
presentation: v.exactOptional(PresentationSchema),
|
|
73
|
+
manifest: v.exactOptional(ManifestMetadataSchema),
|
|
74
|
+
map: v.exactOptional(MapSchema),
|
|
75
|
+
requires: RequiresSchema,
|
|
76
|
+
budgets: BudgetsSchema,
|
|
77
|
+
look: v.strictObject({ families: names, materials: v.optional(MaterialsSchema, {}), familyLooks: v.optional(FamilyLooksSchema, {}), curves: v.exactOptional(MaterialCurvesSchema), samplers: v.exactOptional(TextureSamplersSchema), post: v.exactOptional(PostStackSchema), light: v.exactOptional(LookLightSchema), grade: lookGrade, clock: v.literal('engine'), day: v.optional(day), dayOverride: v.nullable(channel), keys: v.pipe(v.array(key), v.maxLength(64)) }),
|
|
78
|
+
sim: SimSchema,
|
|
79
|
+
state: StateSchema,
|
|
80
|
+
migrations: v.optional(MigrationsSchema, []),
|
|
81
|
+
authorCaps: AuthorCapsSchema,
|
|
82
|
+
serverBudget: ServerBudgetSchema,
|
|
83
|
+
edge: EdgeProfilesSchema,
|
|
84
|
+
entryways: EntrywaysSchema,
|
|
85
|
+
movers: v.optional(MoversSchema, []),
|
|
86
|
+
modes: v.exactOptional(ModesSchema),
|
|
87
|
+
files: FilesSchema, tiles: TilesSchema, library: LibrarySchema, critical: CriticalSchema, late: v.exactOptional(AdmissionLateSchema),
|
|
88
|
+
far: FarSchema,
|
|
89
|
+
near: v.exactOptional(NearPlaceholderSchema),
|
|
90
|
+
ring: v.exactOptional(v.literal('cell')),
|
|
91
|
+
ui: v.optional(UiSchema, []),
|
|
92
|
+
rows: v.optional(RowsSchema, { strikes: [], weather: [], days: [], species: [], looks: [], compendiums: [], loot: [] }),
|
|
93
|
+
terrain: v.optional(v.nullable(TerrainSchema), null),
|
|
94
|
+
meshCollision: v.optional(v.nullable(MeshCollisionSchema), null),
|
|
95
|
+
navigation: v.optional(v.nullable(NavigationSchema), null),
|
|
96
|
+
nativeGround: v.optional(v.nullable(NativeGroundSchema), null),
|
|
97
|
+
water: v.optional(v.pipe(WaterSchema, v.maxLength(limits.waterBodies)), []),
|
|
98
|
+
creatures: v.optional(CreaturesSchema, { brains: [], groups: [], spawns: [] }),
|
|
99
|
+
crowds: v.optional(v.pipe(v.array(FlockSchema), v.maxLength(64)), []),
|
|
100
|
+
encounters: v.optional(EncountersSchema, []),
|
|
101
|
+
directors: v.exactOptional(DirectorsSchema),
|
|
102
|
+
quests: v.optional(QuestDataSchema, { flags: [], quests: [], triggers: [], dialogue: [] }),
|
|
103
|
+
questNpcs: v.exactOptional(QuestNpcBindingsSchema),
|
|
104
|
+
questHost: v.exactOptional(v.nullable(QuestHostSchema)),
|
|
105
|
+
audio: v.optional(AudioDataSchema, { cues: [], ambience: null, score: 'silent' }),
|
|
106
|
+
ledger: v.optional(LedgerRulesSchema, []),
|
|
107
|
+
hooks: v.optional(HooksSchema, { conditions: [], scenes: [] }),
|
|
108
|
+
plumbing: v.optional(v.nullable(PlumbingSchema), null),
|
|
109
|
+
items: v.optional(ItemsSchema, { version: 1, rows: [], contexts: [], loadout: { primary: null, secondary: null, tools: [] } }),
|
|
110
|
+
props: v.optional(v.nullable(PropsSchema), null),
|
|
111
|
+
targets: v.optional(TargetsSchema, { panels: [], interactions: [] }),
|
|
112
|
+
traversal: v.optional(TraversalSchema, { hoverCap: 14 }),
|
|
113
|
+
clientScripts: v.optional(ClientScriptsSchema, { divisor: 2, bindings: [] }),
|
|
114
|
+
clientChannels: v.exactOptional(ClientChannelsSchema),
|
|
115
|
+
// RuntimeSchema owns strict binds/spawns and their exact pairing; bound state also passes ownership and ordinary field admission.
|
|
116
|
+
runtime: v.optional(v.nullable(RuntimeSchema), null),
|
|
117
|
+
spawn: v.optional(SpawnSchema, { x: 0, y: 2, z: 0, yaw: 0 }),
|
|
118
|
+
});
|
|
119
|
+
/** Defining field schemas used by the sectioned output writer and reader.
|
|
120
|
+
* Cross-field rules still run once the complete product is assembled. */
|
|
121
|
+
export const ShardfileFieldSchemas: { readonly [Key in keyof Shardfile]-?: v.GenericSchema<unknown, Shardfile[Key]> } = rawSchema.entries;
|
|
122
|
+
/** A serialisable shardfile v0, independent of renderer and placement. */
|
|
123
|
+
/** Public parsed output, independently named by section. The unchanged schema
|
|
124
|
+
* is checked against this interface, so consumers need not expand its input tree. */
|
|
125
|
+
export interface Shardfile {
|
|
126
|
+
version: typeof SHARDFILE_VERSION;
|
|
127
|
+
accent: v.InferOutput<typeof AccentSchema>;
|
|
128
|
+
identity: v.InferOutput<typeof IdentitySchema>;
|
|
129
|
+
presentation?: v.InferOutput<typeof PresentationSchema>;
|
|
130
|
+
manifest?: v.InferOutput<typeof ManifestMetadataSchema>;
|
|
131
|
+
map?: v.InferOutput<typeof MapSchema>;
|
|
132
|
+
requires: v.InferOutput<typeof RequiresSchema>;
|
|
133
|
+
budgets: v.InferOutput<typeof BudgetsSchema>;
|
|
134
|
+
sim: v.InferOutput<typeof SimSchema>;
|
|
135
|
+
state: v.InferOutput<typeof StateSchema>;
|
|
136
|
+
migrations: v.InferOutput<typeof MigrationsSchema>;
|
|
137
|
+
authorCaps: v.InferOutput<typeof AuthorCapsSchema>;
|
|
138
|
+
serverBudget: v.InferOutput<typeof ServerBudgetSchema>;
|
|
139
|
+
edge: v.InferOutput<typeof EdgeProfilesSchema>;
|
|
140
|
+
entryways: v.InferOutput<typeof EntrywaysSchema>;
|
|
141
|
+
movers: v.InferOutput<typeof MoversSchema>;
|
|
142
|
+
modes?: v.InferOutput<typeof ModesSchema>;
|
|
143
|
+
files: v.InferOutput<typeof FilesSchema>;
|
|
144
|
+
tiles: v.InferOutput<typeof TilesSchema>;
|
|
145
|
+
library: v.InferOutput<typeof LibrarySchema>;
|
|
146
|
+
critical: v.InferOutput<typeof CriticalSchema>;
|
|
147
|
+
late?: v.InferOutput<typeof AdmissionLateSchema>;
|
|
148
|
+
far: v.InferOutput<typeof FarSchema>;
|
|
149
|
+
near?: v.InferOutput<typeof NearPlaceholderSchema>;
|
|
150
|
+
/** the entered cell's render ring of fine tiles: absent, the device's ring around the player (5 x 5); 'cell', every
|
|
151
|
+
* tile in full (an open-sky world whose every tile is on screen: nothing past a ring is left to its coarse copy) */
|
|
152
|
+
ring?: 'cell';
|
|
153
|
+
ui: v.InferOutput<typeof UiSchema>;
|
|
154
|
+
rows: v.InferOutput<typeof RowsSchema>;
|
|
155
|
+
terrain: v.InferOutput<typeof TerrainSchema> | null;
|
|
156
|
+
meshCollision: v.InferOutput<typeof MeshCollisionSchema> | null;
|
|
157
|
+
navigation: v.InferOutput<typeof NavigationSchema> | null;
|
|
158
|
+
nativeGround: v.InferOutput<typeof NativeGroundSchema> | null;
|
|
159
|
+
water: v.InferOutput<typeof WaterSchema>;
|
|
160
|
+
crowds: v.InferOutput<typeof FlockSchema>[];
|
|
161
|
+
creatures: v.InferOutput<typeof CreaturesSchema>;
|
|
162
|
+
encounters: v.InferOutput<typeof EncountersSchema>;
|
|
163
|
+
directors?: v.InferOutput<typeof DirectorsSchema>;
|
|
164
|
+
quests: v.InferOutput<typeof QuestDataSchema>;
|
|
165
|
+
questNpcs?: v.InferOutput<typeof QuestNpcBindingsSchema>;
|
|
166
|
+
questHost?: v.InferOutput<typeof QuestHostSchema> | null;
|
|
167
|
+
audio: v.InferOutput<typeof AudioDataSchema>;
|
|
168
|
+
ledger: v.InferOutput<typeof LedgerRulesSchema>;
|
|
169
|
+
hooks: v.InferOutput<typeof HooksSchema>;
|
|
170
|
+
plumbing: v.InferOutput<typeof PlumbingSchema> | null;
|
|
171
|
+
items: v.InferOutput<typeof ItemsSchema>;
|
|
172
|
+
props: v.InferOutput<typeof PropsSchema> | null;
|
|
173
|
+
targets: v.InferOutput<typeof TargetsSchema>;
|
|
174
|
+
traversal: v.InferOutput<typeof TraversalSchema>;
|
|
175
|
+
clientScripts: v.InferOutput<typeof ClientScriptsSchema>;
|
|
176
|
+
clientChannels?: v.InferOutput<typeof ClientChannelsSchema>;
|
|
177
|
+
runtime: v.InferOutput<typeof RuntimeSchema> | null;
|
|
178
|
+
spawn: v.InferOutput<typeof SpawnSchema>;
|
|
179
|
+
look: {
|
|
180
|
+
families: v.InferOutput<typeof names>;
|
|
181
|
+
materials: v.InferOutput<typeof MaterialsSchema>;
|
|
182
|
+
familyLooks: v.InferOutput<typeof FamilyLooksSchema>;
|
|
183
|
+
curves?: v.InferOutput<typeof MaterialCurvesSchema>;
|
|
184
|
+
samplers?: v.InferOutput<typeof TextureSamplersSchema>;
|
|
185
|
+
post?: v.InferOutput<typeof PostStackSchema>;
|
|
186
|
+
light?: LookLight;
|
|
187
|
+
grade: { exposure: number; saturation: number; contrast: number; lut: string | null; bloom?: LookBloom };
|
|
188
|
+
clock: 'engine';
|
|
189
|
+
day?: v.InferOutput<typeof day> | undefined;
|
|
190
|
+
dayOverride: number | null;
|
|
191
|
+
keys: v.InferOutput<typeof key>[];
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** Semantic format violations, including reference integrity and the acyclic dependency graph. */
|
|
196
|
+
/** An item action's scene name. */
|
|
197
|
+
function sceneOf(row: Readonly<{ scene: string }>): string { return row.scene; }
|
|
198
|
+
/** A hook's name. */
|
|
199
|
+
function idOf(row: Readonly<{ id: string }>): string { return row.id; }
|
|
200
|
+
export function shardfileRules(s: Shardfile): string[] {
|
|
201
|
+
const errors: string[] = [];
|
|
202
|
+
const pageOwner = hasDeclaredClientPage(s);
|
|
203
|
+
errors.push(...questNpcBindingRules(s.questNpcs ?? [], s.quests.flags, pageOwner || s.runtime?.binds?.includes('quests') === true));
|
|
204
|
+
errors.push(...questHostBindingRules(s.questHost, s.quests.flags, pageOwner || s.runtime?.binds?.includes('quests') === true));
|
|
205
|
+
errors.push(...entrywayRules(s));
|
|
206
|
+
errors.push(...socketLiftRules(socketLiftEntries(s.entryways), s.movers, s));
|
|
207
|
+
errors.push(...portalLinkRules(portalLinkEntries(s.entryways), s));
|
|
208
|
+
try { parseMovers(s.movers); } catch { errors.push('declared mover identities and primitives'); }
|
|
209
|
+
if ((s.clientChannels ?? []).some(row => row.mover !== undefined && !s.movers.some(mover => mover.id === row.mover))) errors.push('client channel mover source must be declared');
|
|
210
|
+
for (const row of s.clientChannels ?? []) {
|
|
211
|
+
const action = row.prompt?.action;
|
|
212
|
+
if (action?.kind === 'socketLift') {
|
|
213
|
+
const entry = s.entryways.find(candidate => candidate.edge === action.edge);
|
|
214
|
+
if (entry?.kind !== 'socketLift' || entry.lift?.mover !== row.mover) errors.push('client prompt requires its admitted socket lift');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
for (const row of s.movers) if (row.trigger?.kind === 'shared') {
|
|
218
|
+
const trigger = row.trigger;
|
|
219
|
+
const field = s.state.shared.find(candidate => candidate.id === trigger.field);
|
|
220
|
+
if (field === undefined || field.type === 'string' || typeof field.default !== typeof row.trigger.equals) errors.push('mover trigger requires an admitted numeric or boolean shared field');
|
|
221
|
+
}
|
|
222
|
+
if (!pageOwner && !s.runtime?.binds?.includes('movers') && s.movers.some(row => row.kind === 'chain')) errors.push('compiled mover chains require native joint restore support');
|
|
223
|
+
if (s.movers.some(row => row.execution !== 'native' && (!s.sim.scripts.includes(row.module) || !s.critical.includes(row.module) || s.files.find(asset => asset.hash === row.module)?.kind !== 'wasm'))) errors.push('mover modules are admitted critical sim scripts');
|
|
224
|
+
const liftIds = new Set(socketLiftEntries(s.entryways).flatMap(entry => [entry.lift.mover, entry.lift.gate]));
|
|
225
|
+
const liftModules = new Set(s.movers.filter(row => liftIds.has(row.id)).map(row => row.module));
|
|
226
|
+
if (s.movers.some(row => !liftIds.has(row.id) && liftModules.has(row.module)) || s.sim.bindings.some(row => liftModules.has(row.module))
|
|
227
|
+
|| s.creatures.brains.some(row => row.kind === 'script' && liftModules.has(row.module))) errors.push('lift modules are dedicated transient movers');
|
|
228
|
+
errors.push(...migrationRules(s.migrations, s.state.version));
|
|
229
|
+
const commons = new Set(s.requires.commons), commonsWire = Object.keys(s.requires.commonsWire);
|
|
230
|
+
try { assertCommonsCosts(s.requires.commons, s.requires.commonsCosts); } catch { errors.push('commons cost declarations match the exact commons hash keyset'); }
|
|
231
|
+
if (commons.size !== s.requires.commons.length) errors.push('unique commons hashes');
|
|
232
|
+
if (commonsWire.length !== commons.size || commonsWire.some((id) => !commons.has(id))) errors.push('commons wire declarations match the exact commons hash keyset');
|
|
233
|
+
const files = new Map(s.files.map((f) => [f.hash, f]));
|
|
234
|
+
if (files.size !== s.files.length) errors.push('unique file hashes');
|
|
235
|
+
if (!lateLibraryRootsValid(s.late ?? [], files, new Set(s.library))) errors.push('late files are declared library roots');
|
|
236
|
+
const refs = [...s.files.flatMap((f) => f.dependencies), ...s.tiles.flatMap((t) => t.files), ...s.library, ...s.critical, ...s.sim.scripts, ...(s.far?.files ?? []), ...nearPlaceholderRoots(s.near), ...(s.look.grade.lut === null ? [] : [s.look.grade.lut])];
|
|
237
|
+
for (const r of refs) if (r.startsWith('commons:') ? !s.requires.commons.includes(r.slice(8)) : !files.has(r)) errors.push(`undeclared reference ${r}`);
|
|
238
|
+
const visited = new Set<string>(), active = new Set<string>();
|
|
239
|
+
for (const root of files.keys()) {
|
|
240
|
+
const pending = [{ id: root, leaving: false }];
|
|
241
|
+
while (pending.length > 0) {
|
|
242
|
+
const frame = pending.pop(); if (frame === undefined) continue;
|
|
243
|
+
if (frame.leaving) { active.delete(frame.id); continue; }
|
|
244
|
+
if (active.has(frame.id)) { errors.push('acyclic dependencies'); continue; }
|
|
245
|
+
if (visited.has(frame.id)) continue;
|
|
246
|
+
visited.add(frame.id); active.add(frame.id); pending.push({ id: frame.id, leaving: true });
|
|
247
|
+
for (const id of files.get(frame.id)?.dependencies ?? []) if (!id.startsWith('commons:')) pending.push({ id, leaving: false });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
errors.push(...stateRules(s.state));
|
|
251
|
+
if ((s.clientChannels?.length ?? 0) > 0 && !pageOwner && s.runtime?.binds?.includes('clientChannels') !== true) errors.push('native visual channels require their declared page or runtime owner');
|
|
252
|
+
if (s.runtime?.binds?.includes('state') === true && (s.state.player.length > 0 || s.state.shared.some((field) => field.privacy !== 'host' && !(field.privacy === 'public' && field.type !== 'string' && (s.runtime?.spawns?.bosses.length ?? 0) > 0)))) errors.push('runtime-bound state supports host fields and retained-actor numeric fields');
|
|
253
|
+
errors.push(...materialGraphRules(s), ...materialCurveRules(s), ...textureSamplerRules(s.look, s.files), ...postStackRules(s));
|
|
254
|
+
const materialRefs = materialTextureRefs(s.look.materials), libraryClosure = new Set<string>();
|
|
255
|
+
const libraryPending = [...s.library];
|
|
256
|
+
while (libraryPending.length > 0) {
|
|
257
|
+
const id = libraryPending.pop(); if (id === undefined || libraryClosure.has(id)) continue;
|
|
258
|
+
libraryClosure.add(id); libraryPending.push(...files.get(id)?.dependencies ?? []);
|
|
259
|
+
}
|
|
260
|
+
if (materialRefs.some((id) => !/^(?:commons:)?[a-f0-9]{64}$/u.test(id) || !libraryClosure.has(id) || (id.startsWith('commons:') ? !s.requires.commons.includes(id.slice(8)) : files.get(id)?.kind !== 'ktx2'))) errors.push('admitted material texture library references');
|
|
261
|
+
if (s.items.rows.some(row => row.view.asset !== undefined && (!libraryClosure.has(row.view.asset) ||
|
|
262
|
+
(row.view.asset.startsWith('commons:') ? !commons.has(row.view.asset.slice(8)) : files.get(row.view.asset)?.kind !== 'glb')))) errors.push('admitted item model library references');
|
|
263
|
+
const lut = s.look.grade.lut === null || s.look.grade.lut.startsWith('commons:') ? null : files.get(s.look.grade.lut);
|
|
264
|
+
if (lut !== undefined && lut !== null && (lut.kind !== 'binary' || lut.compressed !== LOOK_LUT_BYTES)) errors.push('look LUT is a 33³ RGBA8 binary file');
|
|
265
|
+
if (s.look.keys.some((k, i) => i > 0 && k.time <= (s.look.keys[i - 1]?.time ?? Infinity))) errors.push('ordered day keys');
|
|
266
|
+
const linearFog = s.look.keys[0]?.fog.near !== undefined;
|
|
267
|
+
for (const { fog } of s.look.keys) if ((fog.near === undefined) !== (fog.far === undefined) || (fog.near !== undefined && fog.far !== undefined && (fog.near >= fog.far || fog.density !== 0)) || (fog.near !== undefined) !== linearFog) errors.push('consistent ordered linear fog bounds with zero density');
|
|
268
|
+
for (const e of Object.values(s.edge)) if (e.heights.length !== e.colours.length) errors.push('edge sample lengths');
|
|
269
|
+
const seen = new Set<string>();
|
|
270
|
+
for (const t of s.tiles) {
|
|
271
|
+
const id = `${t.lod}/${t.x}/${t.z}`, cap = t.lod === 0 ? CONTENT_CAPS.l0 : CONTENT_CAPS.l1;
|
|
272
|
+
if (seen.has(id)) errors.push('unique tile addresses'); seen.add(id);
|
|
273
|
+
const n = 500 / cap.size;
|
|
274
|
+
if (t.x >= n || t.z >= n || t.bounds.min[0] !== -250 + t.x * cap.size || t.bounds.max[0] !== -250 + (t.x + 1) * cap.size || t.bounds.min[2] !== -250 + t.z * cap.size || t.bounds.max[2] !== -250 + (t.z + 1) * cap.size) errors.push('tile grid bounds');
|
|
275
|
+
if (t.drawBounds !== undefined) {
|
|
276
|
+
const b = t.drawBounds, margin = s.props?.overhang;
|
|
277
|
+
if (margin === undefined || b.min[0] < -250 - margin || b.max[0] > 250 + margin || b.min[2] < -250 - margin || b.max[2] > 250 + margin || b.min.some((coordinate, i) => coordinate > (t.bounds.min[i] ?? -Infinity)) || b.max.some((coordinate, i) => coordinate < (t.bounds.max[i] ?? Infinity))) errors.push('declared prop draw bounds');
|
|
278
|
+
}
|
|
279
|
+
if (t.lod === 1 && t.files.some((r) => s.library.includes(r))) errors.push('self-contained coarse tile');
|
|
280
|
+
}
|
|
281
|
+
for (const f of s.files) if (f.critical !== s.critical.includes(f.hash)) errors.push('critical flags match roots');
|
|
282
|
+
if (s.near !== undefined) {
|
|
283
|
+
try { nearPlaceholderCost(s.near, s); } catch { errors.push('admitted bounded visual near-placeholder closure'); }
|
|
284
|
+
}
|
|
285
|
+
errors.push(...uiRules(s.ui, s.state));
|
|
286
|
+
errors.push(...hookRules(s.hooks, s.state));
|
|
287
|
+
errors.push(...meshCollisionRules(s));
|
|
288
|
+
errors.push(...nativeGroundRules(s), ...navigationRules(s));
|
|
289
|
+
errors.push(...targetRules(s.targets, s, { panels: s.props?.panels ?? [], colliders: [...s.props?.colliders ?? [], ...s.meshCollision?.panels ?? []], models: s.props?.models ?? [] }));
|
|
290
|
+
errors.push(...itemRules(s.items, s.sim.scripts));
|
|
291
|
+
if (s.migrations.some(step => step.equipmentSlots?.some(rename => !s.items.rows.some(row => row.kind === 'weapon' && row.slot === rename.to)))) errors.push('migration equipment slots resolve declared weapons');
|
|
292
|
+
if ((s.items.runtimeContexts?.length ?? 0) > 0 && !pageOwner && s.runtime?.binds?.includes('items') !== true) errors.push('native input contexts require their declared page or runtime owner');
|
|
293
|
+
if (s.items.rows.some((row) => row.kind === 'tool' && row.action === null) && s.runtime?.binds?.includes('items') !== true) errors.push('native tools require runtime.binds items');
|
|
294
|
+
if (s.modes !== undefined && (s.modes.traverse.some(row => row.kind !== 'ladder') || (s.modes.ride?.length ?? 0) > 0 || (s.modes.grapple?.length ?? 0) > 0) && !pageOwner && s.runtime?.binds?.includes('modes') !== true) errors.push('traverse modes require their declared page or runtime player phase');
|
|
295
|
+
if (s.runtime !== null && s.modes?.traverse.some(row => row.kind === 'ladder')) errors.push('ladder traversal requires the data-only player owner');
|
|
296
|
+
errors.push(...skinLookRules(s));
|
|
297
|
+
errors.push(...clientScriptRules(s));
|
|
298
|
+
if (s.props !== null) {
|
|
299
|
+
try { validatePropsReferences(s.props, s); } catch { errors.push('declared prop references'); }
|
|
300
|
+
if (!materialExists(s.look.materials, s.props.family)) errors.push('declared prop material');
|
|
301
|
+
}
|
|
302
|
+
if (Math.abs(s.spawn.x) > CHUNK_HALF || Math.abs(s.spawn.z) > CHUNK_HALF || s.spawn.y < -CELL_BELOW || s.spawn.y > CELL_ABOVE) errors.push('player spawn in cell');
|
|
303
|
+
const conditions = new Set(s.hooks.conditions.map((row) => row.id)), scenes = new Set(s.hooks.scenes.map((row) => row.id));
|
|
304
|
+
const inputConditions = [...(s.plumbing?.input.flatMap(row => [row.when, row.hiddenWhen]) ?? []), ...s.items.contexts.map(row => row.extra?.hiddenWhen)];
|
|
305
|
+
if (inputConditions.some(when => when !== undefined && (when.item !== undefined && !s.items.rows.some(row => row.id === when.item) || when.flag !== undefined && !s.quests.flags.includes(when.flag)))) errors.push('declared input item and flag observations');
|
|
306
|
+
if (s.quests.triggers.some((row) => row.kind === 'script' && !conditions.has(row.condition)) || s.quests.quests.some((row) => row.onComplete?.scene !== undefined && !scenes.has(row.onComplete.scene)) || s.quests.dialogue.some((row) => row.nodes.some((node) => node.choices.some((choice) => choice.scene !== undefined && !scenes.has(choice.scene))))) errors.push('declared quest script hooks');
|
|
307
|
+
if (s.plumbing !== null && (s.plumbing.input.some((row) => row.actions.some((action) => action.scene !== undefined && !scenes.has(action.scene))) || s.plumbing.debug.some((row) => row.choices.some((choice) => choice.scene !== undefined && !scenes.has(choice.scene))))) errors.push('declared plumbing scene hooks');
|
|
308
|
+
// TE-ENG2: an item scene (a lantern's toggle, a rack's take) is run by the server's kit, not a script, so it needs no binding.
|
|
309
|
+
const itemScenes = new Set<string>(s.targets.itemActions?.map(sceneOf)), scriptScenes = s.hooks.scenes.map(idOf).filter((name): boolean => !itemScenes.has(name));
|
|
310
|
+
if (scriptScenes.length + s.hooks.conditions.length > 0 && s.sim.bindings.length === 0) errors.push('named hooks require script bindings');
|
|
311
|
+
errors.push(...scriptBindingRules(s.sim.bindings, s.sim.scripts));
|
|
312
|
+
if (new Set(s.sim.scripts).size !== s.sim.scripts.length) errors.push('unique script modules');
|
|
313
|
+
if (s.sim.scripts.some((module) => !module.startsWith('commons:') && files.get(module)?.kind !== 'wasm')) errors.push('script module is a Wasm file');
|
|
314
|
+
if (s.terrain !== null && (!s.critical.includes(s.terrain.collider) || files.get(s.terrain.collider)?.kind !== 'binary' || s.terrain.tiles.some((payload) => files.get(payload.file)?.kind !== 'binary' || !s.tiles.some((row) => row.lod === payload.lod && row.x === payload.x && row.z === payload.z && row.files.includes(payload.file))))) errors.push('declared terrain payload references');
|
|
315
|
+
if (s.terrain?.form === 'query' && !pageOwner && s.runtime?.binds?.includes('terrain') !== true) errors.push('query terrain requires its declared page or runtime owner');
|
|
316
|
+
if (s.terrain?.sampling !== undefined && (!s.critical.includes(s.terrain.sampling.file) || files.get(s.terrain.sampling.file)?.kind !== 'binary')) errors.push('declared terrain sampling reference');
|
|
317
|
+
if (s.terrain?.sampling !== undefined && s.meshCollision !== null) errors.push('terrain sampling and mesh ground are mutually exclusive');
|
|
318
|
+
if (s.look.families.some((family) => !materialExists({}, family)) || (s.terrain !== null && s.terrain.form !== 'query' && !materialExists(s.look.materials, s.terrain.family)) || s.rows.looks.some((row) => row.material !== null && !materialExists(s.look.materials, row.material))) errors.push('declared platform material family');
|
|
319
|
+
const species = new Map(s.rows.species.map((row) => [row.id, row])), strikes = new Map(s.rows.strikes.map((row) => [row.id, row]));
|
|
320
|
+
for (const brain of s.creatures.brains) if (brain.kind === 'script' && (!s.sim.scripts.includes(brain.module) || brain.strikes.some((request) => !strikes.has(request.strike)))) errors.push('declared custom brain module and strikes');
|
|
321
|
+
for (const declared of s.creatures.brains) {
|
|
322
|
+
const brain = declared.kind === 'grazer' ? grazerPreset(declared) : declared.kind === 'diver' ? diverPreset(declared) : declared;
|
|
323
|
+
if (brain.kind === 'ram-grazer') {
|
|
324
|
+
const strike = strikes.get(brain.strike);
|
|
325
|
+
if (strike?.shape.kind !== 'lane' || strike.windup <= 0 || strike.range <= 0) errors.push('declared ram grazer lane strike');
|
|
326
|
+
} else if (brain.kind === 'challenge-grazer' && (strikes.get(brain.charge)?.shape.kind !== 'lane' || strikes.get(brain.close)?.shape.kind !== 'arc')) errors.push('declared challenge grazer charge/close strikes');
|
|
327
|
+
else if (brain.kind === 'orbit-diver' || brain.kind === 'patrol-diver' || brain.kind === 'burst-flyer') {
|
|
328
|
+
if (strikes.get(brain.strike)?.shape.kind !== 'sphere') errors.push('declared flyer sphere strike');
|
|
329
|
+
if (Math.abs(brain.home.x) > CHUNK_HALF || Math.abs(brain.home.z) > CHUNK_HALF || ('y' in brain.home && (brain.home.y < -CELL_BELOW || brain.home.y > CELL_ABOVE))) errors.push('declared flyer home in cell');
|
|
330
|
+
if (s.creatures.spawns.some(spawn => spawn.brain === brain.id && species.get(spawn.species)?.flight === undefined)) errors.push('declared flyer species flight');
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
if (new Set(s.crowds.map(row => row.id)).size !== s.crowds.length) errors.push('unique crowd identities');
|
|
334
|
+
const crowdMembers = s.crowds.reduce((sum, row) => sum + row.count, 0);
|
|
335
|
+
if (crowdMembers > 4096) errors.push('declared crowd member capacity');
|
|
336
|
+
if (s.crowds.some(row => Math.abs(row.x) > CHUNK_HALF || Math.abs(row.z) > CHUNK_HALF)) errors.push('declared crowd home in cell');
|
|
337
|
+
if (s.creatures.spawns.length + crowdMembers > s.serverBudget.entities) errors.push('declared entity capacity');
|
|
338
|
+
for (const spawn of s.creatures.spawns) if (!species.get(spawn.species)?.variants.some((row) => row.id === spawn.variant) || (spawn.strike !== null && !strikes.has(spawn.strike))) errors.push('declared spawn species/variant/strike');
|
|
339
|
+
errors.push(...encounterRules(s.encounters, s.creatures.spawns.map((spawn) => spawn.id), s.ui.filter((row) => row.kind === 'bossPanel')));
|
|
340
|
+
const controlled = new Set(s.encounters.map((row) => row.entity));
|
|
341
|
+
errors.push(...groupBrainRules(s.creatures.groups, s.creatures.spawns, s.creatures.brains.map((row) => row.id), [...controlled]));
|
|
342
|
+
if (s.creatures.spawns.some((row) => (row.brain === null) !== controlled.has(row.id))) errors.push('exactly one declared creature controller');
|
|
343
|
+
return [...new Set(errors)];
|
|
344
|
+
}
|
|
345
|
+
/** Strict schema for the public SDK format; rejects unknown fields and invalid references.
|
|
346
|
+
* Keep the unknown-input/named-output boundary independent of the nested validator implementation. */
|
|
347
|
+
export const ShardfileSchema: v.GenericSchema<unknown, Shardfile> = v.pipe(v.unknown(), v.rawCheck(({ dataset, addIssue }) => {
|
|
348
|
+
const input = dataset.value;
|
|
349
|
+
try { preflightShardfile(input); } catch (error) {
|
|
350
|
+
const nonData = error instanceof Error && /(?:JSON data|accessors)/u.test(error.message);
|
|
351
|
+
const nodes = nonData ? jsonDataNodes(input) : undefined;
|
|
352
|
+
addIssue({ message: nonData ? `shardfile carries JSON data only; executable behaviour must be admitted WASM${nodes === undefined ? '' : `; JSON nodes ${String(nodes)} (limit 100000)`}` : 'shardfile manifest admission limits' });
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
// Preflight has checked this same synchronous input's complete JSON tree.
|
|
356
|
+
// Check entry presence here without two more descriptor/prototype walks.
|
|
357
|
+
if (!(typeof input === 'object' && input !== null && 'entryways' in input && input.entryways !== undefined)) {
|
|
358
|
+
addIssue({ message: 'illegal shard: four midpoint entryways are required' });
|
|
359
|
+
}
|
|
360
|
+
}), rawSchema,
|
|
361
|
+
v.rawCheck(({ dataset, addIssue }) => { if (dataset.typed) { try { preflightAssetGraph(dataset.value); } catch (error) { addIssue({ message: error instanceof Error ? error.message : 'shardfile asset graph admission' }); } } }),
|
|
362
|
+
v.check((s) => entrywayRules(s).length === 0, 'illegal shard: entryway openings must meet road height y=0'), v.check((s) => shardfileRules(s).length === 0, 'shardfile semantic rules'));
|
|
363
|
+
/** Parse untrusted JSON as a validated shardfile, or throw a Valibot error. */
|
|
364
|
+
function parseShardfile(input: unknown): Shardfile { return v.parse(ShardfileSchema, input); }
|
|
365
|
+
/** Admit one owned or cached declaration field with its defining schema.
|
|
366
|
+
* The assembled declaration still crosses parseShardfile's cross-field rules. */
|
|
367
|
+
function parseShardfileField<Key extends keyof Shardfile>(field: Key, input: unknown): Shardfile[Key] {
|
|
368
|
+
// The defining mapped table binds each key to this output; TS widens a
|
|
369
|
+
// generic index into it to every field's schema, so the binding is restated.
|
|
370
|
+
// oxlint-disable-next-line typescript/no-unsafe-type-assertion -- ShardfileFieldSchemas' mapped type is the proof
|
|
371
|
+
const schema = ShardfileFieldSchemas[field] as v.GenericSchema<unknown, Shardfile[Key]>;
|
|
372
|
+
return v.parse(schema, input);
|
|
373
|
+
}
|
|
374
|
+
export { parseShardfile, parseShardfileField };
|
|
375
|
+
|
|
376
|
+
/** Admitted data contracts, independent of validator implementation metadata. */
|
|
377
|
+
interface ShardfileRowsInputFields {
|
|
378
|
+
version: (typeof SHARDFILE_VERSION);
|
|
379
|
+
accent: v.InferInput<typeof AccentSchema>;
|
|
380
|
+
identity: v.InferInput<typeof IdentitySchema>;
|
|
381
|
+
presentation?: v.InferInput<typeof PresentationSchema>;
|
|
382
|
+
manifest?: v.InferInput<typeof ManifestMetadataSchema>;
|
|
383
|
+
map?: v.InferInput<typeof MapSchema>;
|
|
384
|
+
requires: v.InferInput<typeof RequiresSchema>;
|
|
385
|
+
budgets: v.InferInput<typeof BudgetsSchema>;
|
|
386
|
+
look: {
|
|
387
|
+
families: v.InferInput<typeof names>;
|
|
388
|
+
materials?: v.InferInput<typeof MaterialsSchema> | undefined;
|
|
389
|
+
familyLooks?: v.InferInput<typeof FamilyLooksSchema> | undefined;
|
|
390
|
+
curves?: v.InferInput<typeof MaterialCurvesSchema>;
|
|
391
|
+
samplers?: v.InferInput<typeof TextureSamplersSchema>;
|
|
392
|
+
post?: v.InferInput<typeof PostStackSchema>;
|
|
393
|
+
light?: LookLightInput;
|
|
394
|
+
grade: {
|
|
395
|
+
exposure: v.InferInput<typeof finite>;
|
|
396
|
+
saturation: v.InferInput<typeof finite>;
|
|
397
|
+
contrast: v.InferInput<typeof finite>;
|
|
398
|
+
lut: (v.InferInput<typeof ref>) | null;
|
|
399
|
+
bloom?: LookBloomInput;
|
|
400
|
+
};
|
|
401
|
+
clock: 'engine';
|
|
402
|
+
day?: DayRowsInput | undefined;
|
|
403
|
+
dayOverride: (v.InferInput<typeof finite>) | null;
|
|
404
|
+
keys: (DayKeyRowsInput)[];
|
|
405
|
+
};
|
|
406
|
+
sim: v.InferInput<typeof SimSchema>;
|
|
407
|
+
state: v.InferInput<typeof StateSchema>;
|
|
408
|
+
migrations?: unknown;
|
|
409
|
+
authorCaps: v.InferInput<typeof AuthorCapsSchema>;
|
|
410
|
+
serverBudget: v.InferInput<typeof ServerBudgetSchema>;
|
|
411
|
+
edge: v.InferInput<typeof EdgeProfilesSchema>;
|
|
412
|
+
entryways: v.InferInput<typeof EntrywaysSchema>;
|
|
413
|
+
movers?: v.InferInput<typeof MoversSchema> | undefined;
|
|
414
|
+
modes?: v.InferInput<typeof ModesSchema>;
|
|
415
|
+
files: v.InferInput<typeof FilesSchema>;
|
|
416
|
+
tiles: v.InferInput<typeof TilesSchema>;
|
|
417
|
+
library: v.InferInput<typeof LibrarySchema>;
|
|
418
|
+
critical: v.InferInput<typeof CriticalSchema>;
|
|
419
|
+
late?: v.InferInput<typeof AdmissionLateSchema>;
|
|
420
|
+
far: v.InferInput<typeof FarSchema>;
|
|
421
|
+
near?: v.InferInput<typeof NearPlaceholderSchema>;
|
|
422
|
+
ring?: 'cell';
|
|
423
|
+
ui?: v.InferInput<typeof UiSchema> | undefined;
|
|
424
|
+
rows?: unknown;
|
|
425
|
+
terrain?: (v.InferInput<typeof TerrainSchema>) | null | undefined;
|
|
426
|
+
meshCollision?: (v.InferInput<typeof MeshCollisionSchema>) | null | undefined;
|
|
427
|
+
navigation?: (v.InferInput<typeof NavigationSchema>) | null | undefined;
|
|
428
|
+
nativeGround?: (v.InferInput<typeof NativeGroundSchema>) | null | undefined;
|
|
429
|
+
water?: v.InferInput<typeof WaterSchema> | undefined;
|
|
430
|
+
creatures?: v.InferInput<typeof CreaturesSchema> | undefined;
|
|
431
|
+
crowds?: (v.InferInput<typeof FlockSchema>)[] | undefined;
|
|
432
|
+
encounters?: v.InferInput<typeof EncountersSchema> | undefined;
|
|
433
|
+
directors?: v.InferInput<typeof DirectorsSchema>;
|
|
434
|
+
quests?: v.InferInput<typeof QuestDataSchema> | undefined;
|
|
435
|
+
questNpcs?: v.InferInput<typeof QuestNpcBindingsSchema>;
|
|
436
|
+
questHost?: unknown;
|
|
437
|
+
audio?: unknown;
|
|
438
|
+
ledger?: v.InferInput<typeof LedgerRulesSchema> | undefined;
|
|
439
|
+
hooks?: v.InferInput<typeof HooksSchema> | undefined;
|
|
440
|
+
plumbing?: unknown;
|
|
441
|
+
items?: unknown;
|
|
442
|
+
props?: unknown;
|
|
443
|
+
targets?: v.InferInput<typeof TargetsSchema> | undefined;
|
|
444
|
+
traversal?: v.InferInput<typeof TraversalSchema> | undefined;
|
|
445
|
+
clientScripts?: v.InferInput<typeof ClientScriptsSchema> | undefined;
|
|
446
|
+
clientChannels?: v.InferInput<typeof ClientChannelsSchema>;
|
|
447
|
+
runtime?: (v.InferInput<typeof RuntimeSchema>) | null | undefined;
|
|
448
|
+
spawn?: v.InferInput<typeof SpawnSchema> | undefined;
|
|
449
|
+
}
|
|
450
|
+
export type ShardfileRowsInput = { [Key in keyof ShardfileRowsInputFields]: ShardfileRowsInputFields[Key] };
|
|
451
|
+
interface ShardfileRowsFields {
|
|
452
|
+
version: (typeof SHARDFILE_VERSION);
|
|
453
|
+
accent: v.InferOutput<typeof AccentSchema>;
|
|
454
|
+
identity: v.InferOutput<typeof IdentitySchema>;
|
|
455
|
+
presentation?: v.InferOutput<typeof PresentationSchema>;
|
|
456
|
+
manifest?: v.InferOutput<typeof ManifestMetadataSchema>;
|
|
457
|
+
map?: v.InferOutput<typeof MapSchema>;
|
|
458
|
+
requires: v.InferOutput<typeof RequiresSchema>;
|
|
459
|
+
budgets: v.InferOutput<typeof BudgetsSchema>;
|
|
460
|
+
look: {
|
|
461
|
+
families: v.InferOutput<typeof names>;
|
|
462
|
+
materials: v.InferOutput<typeof MaterialsSchema>;
|
|
463
|
+
familyLooks: v.InferOutput<typeof FamilyLooksSchema>;
|
|
464
|
+
curves?: v.InferOutput<typeof MaterialCurvesSchema>;
|
|
465
|
+
samplers?: v.InferOutput<typeof TextureSamplersSchema>;
|
|
466
|
+
post?: v.InferOutput<typeof PostStackSchema>;
|
|
467
|
+
light?: LookLight;
|
|
468
|
+
grade: {
|
|
469
|
+
exposure: v.InferOutput<typeof finite>;
|
|
470
|
+
saturation: v.InferOutput<typeof finite>;
|
|
471
|
+
contrast: v.InferOutput<typeof finite>;
|
|
472
|
+
lut: (v.InferOutput<typeof ref>) | null;
|
|
473
|
+
bloom?: LookBloom;
|
|
474
|
+
};
|
|
475
|
+
clock: 'engine';
|
|
476
|
+
day?: DayRows | undefined;
|
|
477
|
+
dayOverride: (v.InferOutput<typeof finite>) | null;
|
|
478
|
+
keys: (DayKeyRows)[];
|
|
479
|
+
};
|
|
480
|
+
sim: v.InferOutput<typeof SimSchema>;
|
|
481
|
+
state: v.InferOutput<typeof StateSchema>;
|
|
482
|
+
migrations: v.InferOutput<typeof MigrationsSchema>;
|
|
483
|
+
authorCaps: v.InferOutput<typeof AuthorCapsSchema>;
|
|
484
|
+
serverBudget: v.InferOutput<typeof ServerBudgetSchema>;
|
|
485
|
+
edge: v.InferOutput<typeof EdgeProfilesSchema>;
|
|
486
|
+
entryways: v.InferOutput<typeof EntrywaysSchema>;
|
|
487
|
+
movers: v.InferOutput<typeof MoversSchema>;
|
|
488
|
+
modes?: v.InferOutput<typeof ModesSchema>;
|
|
489
|
+
files: v.InferOutput<typeof FilesSchema>;
|
|
490
|
+
tiles: v.InferOutput<typeof TilesSchema>;
|
|
491
|
+
library: v.InferOutput<typeof LibrarySchema>;
|
|
492
|
+
critical: v.InferOutput<typeof CriticalSchema>;
|
|
493
|
+
late?: v.InferOutput<typeof AdmissionLateSchema>;
|
|
494
|
+
far: v.InferOutput<typeof FarSchema>;
|
|
495
|
+
near?: v.InferOutput<typeof NearPlaceholderSchema>;
|
|
496
|
+
ring?: 'cell';
|
|
497
|
+
ui: v.InferOutput<typeof UiSchema>;
|
|
498
|
+
rows: v.InferOutput<typeof RowsSchema>;
|
|
499
|
+
terrain: (v.InferOutput<typeof TerrainSchema>) | null;
|
|
500
|
+
meshCollision: (v.InferOutput<typeof MeshCollisionSchema>) | null;
|
|
501
|
+
navigation: (v.InferOutput<typeof NavigationSchema>) | null;
|
|
502
|
+
nativeGround: (v.InferOutput<typeof NativeGroundSchema>) | null;
|
|
503
|
+
water: v.InferOutput<typeof WaterSchema>;
|
|
504
|
+
creatures: v.InferOutput<typeof CreaturesSchema>;
|
|
505
|
+
crowds: (v.InferOutput<typeof FlockSchema>)[];
|
|
506
|
+
encounters: v.InferOutput<typeof EncountersSchema>;
|
|
507
|
+
directors?: v.InferOutput<typeof DirectorsSchema>;
|
|
508
|
+
quests: v.InferOutput<typeof QuestDataSchema>;
|
|
509
|
+
questNpcs?: v.InferOutput<typeof QuestNpcBindingsSchema>;
|
|
510
|
+
questHost?: (v.InferOutput<typeof QuestHostSchema>) | null;
|
|
511
|
+
audio: v.InferOutput<typeof AudioDataSchema>;
|
|
512
|
+
ledger: v.InferOutput<typeof LedgerRulesSchema>;
|
|
513
|
+
hooks: v.InferOutput<typeof HooksSchema>;
|
|
514
|
+
plumbing: (v.InferOutput<typeof PlumbingSchema>) | null;
|
|
515
|
+
items: v.InferOutput<typeof ItemsSchema>;
|
|
516
|
+
props: (v.InferOutput<typeof PropsSchema>) | null;
|
|
517
|
+
targets: v.InferOutput<typeof TargetsSchema>;
|
|
518
|
+
traversal: v.InferOutput<typeof TraversalSchema>;
|
|
519
|
+
clientScripts: v.InferOutput<typeof ClientScriptsSchema>;
|
|
520
|
+
clientChannels?: v.InferOutput<typeof ClientChannelsSchema>;
|
|
521
|
+
runtime: (v.InferOutput<typeof RuntimeSchema>) | null;
|
|
522
|
+
spawn: v.InferOutput<typeof SpawnSchema>;
|
|
523
|
+
}
|
|
524
|
+
export type ShardfileRows = { [Key in keyof ShardfileRowsFields]: ShardfileRowsFields[Key] };
|
|
525
|
+
interface DayKeyRowsInputFields {
|
|
526
|
+
time: v.InferInput<typeof finite>;
|
|
527
|
+
sky: {
|
|
528
|
+
zenith: [
|
|
529
|
+
v.InferInput<typeof finite>,
|
|
530
|
+
v.InferInput<typeof finite>,
|
|
531
|
+
v.InferInput<typeof finite>
|
|
532
|
+
];
|
|
533
|
+
horizon: [
|
|
534
|
+
v.InferInput<typeof finite>,
|
|
535
|
+
v.InferInput<typeof finite>,
|
|
536
|
+
v.InferInput<typeof finite>
|
|
537
|
+
];
|
|
538
|
+
};
|
|
539
|
+
fog: {
|
|
540
|
+
colour: [
|
|
541
|
+
v.InferInput<typeof finite>,
|
|
542
|
+
v.InferInput<typeof finite>,
|
|
543
|
+
v.InferInput<typeof finite>
|
|
544
|
+
];
|
|
545
|
+
density: v.InferInput<typeof finite>;
|
|
546
|
+
near?: v.InferInput<typeof finite> | undefined;
|
|
547
|
+
far?: v.InferInput<typeof finite> | undefined;
|
|
548
|
+
};
|
|
549
|
+
sun: {
|
|
550
|
+
colour: [
|
|
551
|
+
v.InferInput<typeof finite>,
|
|
552
|
+
v.InferInput<typeof finite>,
|
|
553
|
+
v.InferInput<typeof finite>
|
|
554
|
+
];
|
|
555
|
+
intensity: v.InferInput<typeof finite>;
|
|
556
|
+
};
|
|
557
|
+
ambient: {
|
|
558
|
+
sky: [
|
|
559
|
+
v.InferInput<typeof finite>,
|
|
560
|
+
v.InferInput<typeof finite>,
|
|
561
|
+
v.InferInput<typeof finite>
|
|
562
|
+
];
|
|
563
|
+
ground: [
|
|
564
|
+
v.InferInput<typeof finite>,
|
|
565
|
+
v.InferInput<typeof finite>,
|
|
566
|
+
v.InferInput<typeof finite>
|
|
567
|
+
];
|
|
568
|
+
intensity: v.InferInput<typeof finite>;
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
export type DayKeyRowsInput = { [Key in keyof DayKeyRowsInputFields]: DayKeyRowsInputFields[Key] };
|
|
572
|
+
interface DayKeyRowsFields {
|
|
573
|
+
time: v.InferOutput<typeof finite>;
|
|
574
|
+
sky: {
|
|
575
|
+
zenith: [
|
|
576
|
+
v.InferOutput<typeof finite>,
|
|
577
|
+
v.InferOutput<typeof finite>,
|
|
578
|
+
v.InferOutput<typeof finite>
|
|
579
|
+
];
|
|
580
|
+
horizon: [
|
|
581
|
+
v.InferOutput<typeof finite>,
|
|
582
|
+
v.InferOutput<typeof finite>,
|
|
583
|
+
v.InferOutput<typeof finite>
|
|
584
|
+
];
|
|
585
|
+
};
|
|
586
|
+
fog: {
|
|
587
|
+
colour: [
|
|
588
|
+
v.InferOutput<typeof finite>,
|
|
589
|
+
v.InferOutput<typeof finite>,
|
|
590
|
+
v.InferOutput<typeof finite>
|
|
591
|
+
];
|
|
592
|
+
density: v.InferOutput<typeof finite>;
|
|
593
|
+
near?: v.InferOutput<typeof finite> | undefined;
|
|
594
|
+
far?: v.InferOutput<typeof finite> | undefined;
|
|
595
|
+
};
|
|
596
|
+
sun: {
|
|
597
|
+
colour: [
|
|
598
|
+
v.InferOutput<typeof finite>,
|
|
599
|
+
v.InferOutput<typeof finite>,
|
|
600
|
+
v.InferOutput<typeof finite>
|
|
601
|
+
];
|
|
602
|
+
intensity: v.InferOutput<typeof finite>;
|
|
603
|
+
};
|
|
604
|
+
ambient: {
|
|
605
|
+
sky: [
|
|
606
|
+
v.InferOutput<typeof finite>,
|
|
607
|
+
v.InferOutput<typeof finite>,
|
|
608
|
+
v.InferOutput<typeof finite>
|
|
609
|
+
];
|
|
610
|
+
ground: [
|
|
611
|
+
v.InferOutput<typeof finite>,
|
|
612
|
+
v.InferOutput<typeof finite>,
|
|
613
|
+
v.InferOutput<typeof finite>
|
|
614
|
+
];
|
|
615
|
+
intensity: v.InferOutput<typeof finite>;
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
export type DayKeyRows = { [Key in keyof DayKeyRowsFields]: DayKeyRowsFields[Key] };
|
|
619
|
+
interface DayRowsInputFields {
|
|
620
|
+
minutes: v.InferInput<typeof finite>;
|
|
621
|
+
start: v.InferInput<typeof finite>;
|
|
622
|
+
maxElevation: v.InferInput<typeof finite>;
|
|
623
|
+
azimuth: v.InferInput<typeof finite>;
|
|
624
|
+
}
|
|
625
|
+
export type DayRowsInput = { [Key in keyof DayRowsInputFields]: DayRowsInputFields[Key] };
|
|
626
|
+
interface DayRowsFields {
|
|
627
|
+
minutes: v.InferOutput<typeof finite>;
|
|
628
|
+
start: v.InferOutput<typeof finite>;
|
|
629
|
+
maxElevation: v.InferOutput<typeof finite>;
|
|
630
|
+
azimuth: v.InferOutput<typeof finite>;
|
|
631
|
+
}
|
|
632
|
+
export type DayRows = { [Key in keyof DayRowsFields]: DayRowsFields[Key] };
|