Constant WIT_CONTENT
Source pub const WIT_CONTENT: &str = "package vtx:api@1.2.0;\n\n/// --- SQL \u{63a5}\u{53e3}\u{5b9a}\u{4e49} ---\n/// \u{63d0}\u{4f9b}\u{57fa}\u{7840} SQL \u{8bed}\u{53e5}\u{6267}\u{884c}\u{4e0e} JSON \u{67e5}\u{8be2}\u{80fd}\u{529b}\ninterface sql {\n /// \u{652f}\u{6301}\u{7684}\u{6570}\u{636e}\u{5e93}\u{503c}\u{7c7b}\u{578b}\n variant db-value {\n text(string),\n integer(s64),\n real(f64),\n null-val,\n }\n\n /// \u{6267}\u{884c}\u{5199}\u{7c7b}\u{8bed}\u{53e5} (INSERT/UPDATE/DELETE)\u{ff0c}\u{8fd4}\u{56de}\u{5f71}\u{54cd}\u{884c}\u{6570}\u{6216}\u{9519}\u{8bef}\u{4fe1}\u{606f}\n execute: func(statement: string, params: list<db-value>) -> result<u64, string>;\n\n /// \u{6267}\u{884c} SELECT \u{5e76}\u{8fd4}\u{56de} JSON \u{5e8f}\u{5217}\u{5316}\u{7ed3}\u{679c}\n query-json: func(statement: string, params: list<db-value>) -> result<string, string>;\n}\n\n/// --- Stream IO \u{63a5}\u{53e3}\u{5b9a}\u{4e49} ---\n/// \u{652f}\u{6301}\u{6587}\u{4ef6}\u{4e0e}\u{5185}\u{5b58}\u{7f13}\u{51b2}\u{533a}\u{8bbf}\u{95ee}\ninterface stream-io {\n resource buffer {\n /// \u{83b7}\u{53d6}\u{8d44}\u{6e90}\u{603b}\u{5b57}\u{8282}\u{5927}\u{5c0f}\n size: func() -> u64;\n\n /// \u{4ece}\u{6307}\u{5b9a}\u{504f}\u{79fb}\u{8bfb}\u{53d6}\u{6570}\u{636e}\n read: func(offset: u64, max-bytes: u64) -> list<u8>;\n }\n\n /// \u{6253}\u{5f00}\u{5df2}\u{6ce8}\u{518c}\u{89c6}\u{9891}\u{8d44}\u{6e90}\u{6587}\u{4ef6}\u{ff08}\u{6309} UUID \u{67e5}\u{8be2}\u{ff09}\n open-file: func(uuid: string) -> result<buffer, string>;\n\n /// \u{521b}\u{5efa}\u{5185}\u{5b58}\u{7f13}\u{51b2}\u{533a}\u{8d44}\u{6e90}\u{ff08}\u{8fd4}\u{56de} buffer \u{8d44}\u{6e90}\u{53e5}\u{67c4}\u{ff09}\n create-memory-buffer: func(data: list<u8>) -> buffer;\n}\n\n/// --- \u{9274}\u{6743}\u{7c7b}\u{578b}\u{5b9a}\u{4e49} ---\n/// \u{7528}\u{6237}\u{4e0a}\u{4e0b}\u{6587}\u{7ed3}\u{6784}\u{ff0c}\u{4f5c}\u{4e3a}\u{8eab}\u{4efd}\u{8ba4}\u{8bc1}\u{7ed3}\u{679c}\u{8fd4}\u{56de}\ninterface auth-types {\n record user-context {\n user-id: string, // \u{7528}\u{6237}\u{552f}\u{4e00}\u{6807}\u{8bc6}\n username: string, // \u{7528}\u{6237}\u{663e}\u{793a}\u{540d}\n groups: list<string>, // \u{6240}\u{5c5e}\u{89d2}\u{8272}\u{6216}\u{6743}\u{9650}\u{7ec4}\n metadata: string, // \u{9644}\u{52a0}\u{5143}\u{6570}\u{636e}\u{ff08}\u{5efa}\u{8bae}\u{4e3a} JSON\u{ff09}\n }\n}\n\n/// --- \u{901a}\u{7528}\u{7c7b}\u{578b}\u{5b9a}\u{4e49} ---\ninterface types {\n use stream-io.{buffer};\n use auth-types.{user-context};\n\n record http-request {\n method: string,\n path: string,\n query: string,\n }\n\n record http-response {\n status: u16,\n body: option<buffer>,\n }\n\n record manifest {\n id: string,\n name: string,\n version: string,\n description: string,\n entrypoint: string,\n }\n}\n\n/// --- \u{63d2}\u{4ef6}\u{63a5}\u{53e3}\u{5165}\u{53e3}\u{5b9a}\u{4e49} ---\nworld plugin {\n use types.{http-request, http-response, manifest};\n use auth-types.{user-context};\n\n import stream-io;\n import sql;\n\n /// \u{4e1a}\u{52a1}\u{8bf7}\u{6c42}\u{5904}\u{7406}\u{ff08}\u{63d2}\u{4ef6}\u{4e3b}\u{5165}\u{53e3}\u{ff09}\n export handle: func(req: http-request) -> http-response;\n\n /// \u{6570}\u{636e}\u{8fc1}\u{79fb}\u{811a}\u{672c}\u{ff08}\u{6309}\u{7248}\u{672c}\u{987a}\u{5e8f}\u{ff09}\n export get-migrations: func() -> list<string>;\n\n /// \u{63d2}\u{4ef6}\u{6e05}\u{5355}\u{4fe1}\u{606f}\n export get-manifest: func() -> manifest;\n\n /// \u{63d2}\u{4ef6}\u{58f0}\u{660e}\u{7684}\u{6570}\u{636e}\u{5e93}\u{8d44}\u{6e90}\u{ff08}\u{5982}\u{8868}\u{540d}\u{ff09}\n export get-resources: func() -> list<string>;\n\n /// \u{63d2}\u{4ef6}\u{8eab}\u{4efd}\u{9a8c}\u{8bc1}\u{63a5}\u{53e3}\n ///\n /// - \u{8f93}\u{5165}\u{ff1a}HTTP \u{8bf7}\u{6c42}\u{5934}\u{90e8} (\u{952e}\u{503c}\u{5bf9}\u{5217}\u{8868})\n /// - \u{6210}\u{529f}\u{ff1a}\u{8fd4}\u{56de}\u{7528}\u{6237}\u{4e0a}\u{4e0b}\u{6587}\n /// - \u{5931}\u{8d25}\u{ff1a}\u{8fd4}\u{56de} HTTP \u{72b6}\u{6001}\u{7801}\u{ff08}\u{5982} 401, 403\u{ff09}\n export authenticate: func(headers: list<tuple<string, string>>) -> result<user-context, u16>;\n}\n";