@devvit/client 0.11.19-next-2025-07-10-16-01-08-87ea7b7d1.0 → 0.11.19-next-2025-07-10-19-15-14-9b9bd6ae7.0
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/client-meta.min.json +31 -26
- package/client.min.js +1 -1
- package/client.min.js.map +4 -4
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/package.json +9 -9
package/client.min.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@protobufjs/base64/index.js", "../../../node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@protobufjs/float/index.js", "../../../node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@protobufjs/pool/index.js", "../../../node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/protobufjs/src/writer.js", "../../../node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/protobufjs/src/reader.js", "../../../node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/protobufjs/src/rpc/service.js", "../../../node_modules/protobufjs/src/rpc.js", "../../../node_modules/protobufjs/src/roots.js", "../../../node_modules/protobufjs/src/index-minimal.js", "../../../node_modules/protobufjs/minimal.js", "../../protos/dist/types/devvit/ui/effects/web_view/v1alpha/context.js", "../../protos/dist/types/typeRegistry.js", "../../shared-types/dist/assert.js", "../../shared-types/dist/tid.js", "../../web-view-scripts/dist/init-context.js", "../src/context.ts", "../../protos/dist/types/devvit/ui/events/v1alpha/web_view.js", "../../protos/dist/types/
|
|
4
|
-
"sourcesContent": ["\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.<string,*>}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n", "\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n", "\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(typeof global !== \"undefined\"\r\n && global\r\n && global.process\r\n && global.process.versions\r\n && global.process.versions.node);\r\n\r\n/**\r\n * Global object reference.\r\n * @memberof util\r\n * @type {Object}\r\n */\r\nutil.global = util.isNode && global\r\n || typeof window !== \"undefined\" && window\r\n || typeof self !== \"undefined\" && self\r\n || this; // eslint-disable-line no-invalid-this\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor<Buffer>}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor<Uint8Array>}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor<Long>}\r\n */\r\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\r\n || /* istanbul ignore next */ util.global.Long\r\n || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor<Error>} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n CustomError.prototype = Object.create(Error.prototype, {\r\n constructor: {\r\n value: CustomError,\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n name: {\r\n get: function get() { return name; },\r\n set: undefined,\r\n enumerable: false,\r\n // configurable: false would accurately preserve the behavior of\r\n // the original, but I'm guessing that was not intentional.\r\n // For an actual error subclass, this property would\r\n // be configurable.\r\n configurable: true,\r\n },\r\n toString: {\r\n value: function value() { return this.name + \": \" + this.message; },\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n });\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message<T>\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.<string,*>} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message<T>}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\n// Sets up buffer utility according to the environment (called in index-minimal)\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n", "\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\nvar create = function create() {\r\n return util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n};\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = create();\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n Writer.create = create();\r\n BufferWriter._configure();\r\n};\r\n", "\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\nBufferWriter._configure = function () {\r\n /**\r\n * Allocates a buffer of the specified size.\r\n * @function\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\n BufferWriter.alloc = util._Buffer_allocUnsafe;\r\n\r\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n};\r\n\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(BufferWriter.writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else if (buf.utf8Write)\r\n buf.utf8Write(val, pos);\r\n else\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = util.Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\r\nBufferWriter._configure();\r\n", "\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\nvar create = function create() {\r\n return util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n};\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = create();\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n\r\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n var nativeBuffer = util.Buffer;\r\n return nativeBuffer\r\n ? nativeBuffer.alloc(0)\r\n : new this.buf.constructor(0);\r\n }\r\n return this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n while ((wireType = this.uint32() & 7) !== 4) {\r\n this.skipType(wireType);\r\n }\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n Reader.create = create();\r\n BufferReader._configure();\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n", "\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\nBufferReader._configure = function () {\r\n /* istanbul ignore else */\r\n if (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n};\r\n\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice\r\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\r\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\r\nBufferReader._configure();\r\n", "\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\r\n * @param {Constructor<TReq>} requestCtor Request constructor\r\n * @param {Constructor<TRes>} responseCtor Response constructor\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n", "\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available across modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n", "\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.util._configure();\r\n protobuf.Writer._configure(protobuf.BufferWriter);\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n}\r\n\r\n// Set up buffer utility according to the environment\r\nconfigure();\r\n", "// minimal library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-minimal\");\r\n", "/**\n * #context.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../../typeRegistry.js\";\nfunction createBaseWebViewContext() {\n return { subredditId: \"\", subredditName: \"\", userId: \"\", appName: \"\", appVersion: \"\", postId: \"\" };\n}\nexport const WebViewContext = {\n $type: \"devvit.ui.effects.web_view.v1alpha.WebViewContext\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.subredditId !== \"\") {\n writer.uint32(10).string(message.subredditId);\n }\n if (message.subredditName !== \"\") {\n writer.uint32(18).string(message.subredditName);\n }\n if (message.userId !== \"\") {\n writer.uint32(26).string(message.userId);\n }\n if (message.appName !== \"\") {\n writer.uint32(34).string(message.appName);\n }\n if (message.appVersion !== \"\") {\n writer.uint32(42).string(message.appVersion);\n }\n if (message.postId !== \"\") {\n writer.uint32(50).string(message.postId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewContext();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.subredditName = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.userId = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.appName = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.appVersion = reader.string();\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.postId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n subredditName: isSet(object.subredditName) ? globalThis.String(object.subredditName) : \"\",\n userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\",\n appName: isSet(object.appName) ? globalThis.String(object.appName) : \"\",\n appVersion: isSet(object.appVersion) ? globalThis.String(object.appVersion) : \"\",\n postId: isSet(object.postId) ? globalThis.String(object.postId) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n if (message.subredditName !== \"\") {\n obj.subredditName = message.subredditName;\n }\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n if (message.appName !== \"\") {\n obj.appName = message.appName;\n }\n if (message.appVersion !== \"\") {\n obj.appVersion = message.appVersion;\n }\n if (message.postId !== \"\") {\n obj.postId = message.postId;\n }\n return obj;\n },\n create(base) {\n return WebViewContext.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewContext();\n message.subredditId = object.subredditId ?? \"\";\n message.subredditName = object.subredditName ?? \"\";\n message.userId = object.userId ?? \"\";\n message.appName = object.appName ?? \"\";\n message.appVersion = object.appVersion ?? \"\";\n message.postId = object.postId ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewContext.$type, WebViewContext);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #typeRegistry.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nexport const messageTypeRegistry = new Map();\n", "export function assert(condition, msg) {\n if (!condition)\n throw Error(msg);\n}\n", "import { assert } from './assert.js';\n// CALMS!\nexport var T_PREFIX;\n(function (T_PREFIX) {\n T_PREFIX[\"COMMENT\"] = \"t1_\";\n T_PREFIX[\"ACCOUNT\"] = \"t2_\";\n T_PREFIX[\"LINK\"] = \"t3_\";\n T_PREFIX[\"MESSAGE\"] = \"t4_\";\n T_PREFIX[\"SUBREDDIT\"] = \"t5_\";\n T_PREFIX[\"AWARD\"] = \"t6_\";\n})(T_PREFIX || (T_PREFIX = {}));\n// type guards\nexport function isT1ID(id) {\n return id.startsWith(T_PREFIX.COMMENT);\n}\nexport function isT2ID(id) {\n return id.startsWith(T_PREFIX.ACCOUNT);\n}\nexport function isT3ID(id) {\n return id.startsWith(T_PREFIX.LINK);\n}\nexport function isT4ID(id) {\n return id.startsWith(T_PREFIX.MESSAGE);\n}\nexport function isT5ID(id) {\n return id.startsWith(T_PREFIX.SUBREDDIT);\n}\nexport function isT6ID(id) {\n return id.startsWith(T_PREFIX.AWARD);\n}\n// assertion functions\nexport function assertT1ID(id) {\n assert(isT1ID(id), `Expected comment id to start with ${T_PREFIX.COMMENT}, got ${id}}`);\n}\nexport function assertT2ID(id) {\n assert(isT2ID(id), `Expected account id to start with ${T_PREFIX.ACCOUNT}, got ${id}}`);\n}\nexport function assertT3ID(id) {\n assert(isT3ID(id), `Expected link id to start with ${T_PREFIX.LINK}, got ${id}}`);\n}\nexport function assertT4ID(id) {\n assert(isT4ID(id), `Expected message id to start with ${T_PREFIX.MESSAGE}, got ${id}}`);\n}\nexport function assertT5ID(id) {\n assert(isT5ID(id), `Expected subreddit id to start with ${T_PREFIX.SUBREDDIT}, got ${id}}`);\n}\nexport function assertT6ID(id) {\n assert(isT6ID(id), `Expected award id to start with ${T_PREFIX.AWARD}, got ${id}}`);\n}\n// factory functions\nexport function asT1ID(id) {\n assertT1ID(id);\n return id;\n}\nexport function asT2ID(id) {\n assertT2ID(id);\n return id;\n}\nexport function asT3ID(id) {\n assertT3ID(id);\n return id;\n}\nexport function asT4ID(id) {\n assertT4ID(id);\n return id;\n}\nexport function asT5ID(id) {\n assertT5ID(id);\n return id;\n}\nexport function asT6ID(id) {\n assertT6ID(id);\n return id;\n}\nexport function asTID(id) {\n if (isT1ID(id)) {\n return asT1ID(id);\n }\n if (isT2ID(id)) {\n return asT2ID(id);\n }\n if (isT3ID(id)) {\n return asT3ID(id);\n }\n if (isT4ID(id)) {\n return asT4ID(id);\n }\n if (isT5ID(id)) {\n return asT5ID(id);\n }\n if (isT6ID(id)) {\n return asT6ID(id);\n }\n throw new Error(`Expected thing id to start with ${Object.values(T_PREFIX).join(', ')} got ${id}}`);\n}\n// convenience functions\nexport function isCommentId(id) {\n return isT1ID(id);\n}\nexport function isAccountId(id) {\n return isT2ID(id);\n}\nexport function isLinkId(id) {\n return isT3ID(id);\n}\nexport function isMessageId(id) {\n return isT4ID(id);\n}\nexport function isSubredditId(id) {\n return isT5ID(id);\n}\nexport function isAwardId(id) {\n return isT6ID(id);\n}\n", "import { WebViewContext } from '@devvit/protos/types/devvit/ui/effects/web_view/v1alpha/context.js';\nimport { asT2ID, asT3ID, asT5ID, } from '@devvit/shared-types/tid.js';\n/** @internal */\nexport const _initContext = ({ search }) => {\n const contextParam = new URLSearchParams(search).get('context');\n // TODO: throw an error here after clients have been updated to start sending the context param\n if (contextParam) {\n const jsonString = decodeURIComponent(contextParam);\n const contextProto = WebViewContext.fromJSON(JSON.parse(jsonString));\n const context = {\n subredditId: asT5ID(contextProto.subredditId),\n userId: asT2ID(contextProto.userId),\n subredditName: contextProto.subredditName,\n appName: contextProto.appName,\n appVersion: contextProto.appVersion,\n postId: asT3ID(contextProto.postId),\n };\n globalThis.devvit = { context };\n }\n};\nif (globalThis.location) {\n _initContext(globalThis.location);\n}\n", "import '@devvit/web-view-scripts/init-context.js';\n\nimport { type Context } from '@devvit/web-view-scripts/init-context.js';\n\nexport const context: Context = new Proxy<Context>({} as Context, {\n get: (_target, prop: keyof Context) => {\n return globalThis.devvit.context[prop];\n },\n // The following two methods set up the Proxy to behave like a normal object when iterating over keys or\n // checking if a property exists. (This helps ensure tests pass too.)\n ownKeys(): string[] {\n return Object.keys(globalThis.devvit.context);\n },\n getOwnPropertyDescriptor(_target, key: keyof Context) {\n return { enumerable: true, configurable: true, value: globalThis.devvit.context[key] };\n },\n});\n", "/**\n * #web_view.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Value } from \"../../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { RealtimeSubscriptionEvent } from \"../../effects/v1alpha/realtime_subscriptions.js\";\nimport { FormCanceledEvent, FormSubmittedEvent } from \"../../effects/v1alpha/show_form.js\";\nexport var WebViewVisibility;\n(function (WebViewVisibility) {\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_VISIBLE\"] = 0] = \"WEBVIEW_VISIBLE\";\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_HIDDEN\"] = 1] = \"WEBVIEW_HIDDEN\";\n WebViewVisibility[WebViewVisibility[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewVisibility || (WebViewVisibility = {}));\nexport function webViewVisibilityFromJSON(object) {\n switch (object) {\n case 0:\n case \"WEBVIEW_VISIBLE\":\n return WebViewVisibility.WEBVIEW_VISIBLE;\n case 1:\n case \"WEBVIEW_HIDDEN\":\n return WebViewVisibility.WEBVIEW_HIDDEN;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return WebViewVisibility.UNRECOGNIZED;\n }\n}\nexport function webViewVisibilityToJSON(object) {\n switch (object) {\n case WebViewVisibility.WEBVIEW_VISIBLE:\n return 0;\n case WebViewVisibility.WEBVIEW_HIDDEN:\n return 1;\n case WebViewVisibility.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseWebViewPostMessageEvent() {\n return { message: undefined, jsonString: \"\" };\n}\nexport const WebViewPostMessageEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewPostMessageEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.message !== undefined) {\n Value.encode(Value.wrap(message.message), writer.uint32(10).fork()).ldelim();\n }\n if (message.jsonString !== \"\") {\n writer.uint32(18).string(message.jsonString);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewPostMessageEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.message = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.jsonString = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n message: isSet(object?.message) ? object.message : undefined,\n jsonString: isSet(object.jsonString) ? globalThis.String(object.jsonString) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.message !== undefined) {\n obj.message = message.message;\n }\n if (message.jsonString !== \"\") {\n obj.jsonString = message.jsonString;\n }\n return obj;\n },\n create(base) {\n return WebViewPostMessageEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewPostMessageEvent();\n message.message = object.message ?? undefined;\n message.jsonString = object.jsonString ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewPostMessageEvent.$type, WebViewPostMessageEvent);\nfunction createBaseWebViewFullScreenEvent() {\n return { visibility: 0 };\n}\nexport const WebViewFullScreenEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewFullScreenEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.visibility !== 0) {\n writer.uint32(8).int32(message.visibility);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewFullScreenEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.visibility = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { visibility: isSet(object.visibility) ? webViewVisibilityFromJSON(object.visibility) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.visibility !== 0) {\n obj.visibility = webViewVisibilityToJSON(message.visibility);\n }\n return obj;\n },\n create(base) {\n return WebViewFullScreenEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewFullScreenEvent();\n message.visibility = object.visibility ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewFullScreenEvent.$type, WebViewFullScreenEvent);\nfunction createBaseWebViewEvent() {\n return { postMessage: undefined, fullScreen: undefined };\n}\nexport const WebViewEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.postMessage !== undefined) {\n WebViewPostMessageEvent.encode(message.postMessage, writer.uint32(10).fork()).ldelim();\n }\n if (message.fullScreen !== undefined) {\n WebViewFullScreenEvent.encode(message.fullScreen, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.postMessage = WebViewPostMessageEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.fullScreen = WebViewFullScreenEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n postMessage: isSet(object.postMessage) ? WebViewPostMessageEvent.fromJSON(object.postMessage) : undefined,\n fullScreen: isSet(object.fullScreen) ? WebViewFullScreenEvent.fromJSON(object.fullScreen) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.postMessage !== undefined) {\n obj.postMessage = WebViewPostMessageEvent.toJSON(message.postMessage);\n }\n if (message.fullScreen !== undefined) {\n obj.fullScreen = WebViewFullScreenEvent.toJSON(message.fullScreen);\n }\n return obj;\n },\n create(base) {\n return WebViewEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewEvent();\n message.postMessage = (object.postMessage !== undefined && object.postMessage !== null)\n ? WebViewPostMessageEvent.fromPartial(object.postMessage)\n : undefined;\n message.fullScreen = (object.fullScreen !== undefined && object.fullScreen !== null)\n ? WebViewFullScreenEvent.fromPartial(object.fullScreen)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewEvent.$type, WebViewEvent);\nfunction createBaseWebViewInternalEventMessage() {\n return { id: \"\", formCanceled: undefined, formSubmitted: undefined, realtimeEvent: undefined };\n}\nexport const WebViewInternalEventMessage = {\n $type: \"devvit.ui.events.v1alpha.WebViewInternalEventMessage\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.formCanceled !== undefined) {\n FormCanceledEvent.encode(message.formCanceled, writer.uint32(18).fork()).ldelim();\n }\n if (message.formSubmitted !== undefined) {\n FormSubmittedEvent.encode(message.formSubmitted, writer.uint32(26).fork()).ldelim();\n }\n if (message.realtimeEvent !== undefined) {\n RealtimeSubscriptionEvent.encode(message.realtimeEvent, writer.uint32(34).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewInternalEventMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.id = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formCanceled = FormCanceledEvent.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.formSubmitted = FormSubmittedEvent.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.realtimeEvent = RealtimeSubscriptionEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n formCanceled: isSet(object.formCanceled) ? FormCanceledEvent.fromJSON(object.formCanceled) : undefined,\n formSubmitted: isSet(object.formSubmitted) ? FormSubmittedEvent.fromJSON(object.formSubmitted) : undefined,\n realtimeEvent: isSet(object.realtimeEvent) ? RealtimeSubscriptionEvent.fromJSON(object.realtimeEvent) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n if (message.formCanceled !== undefined) {\n obj.formCanceled = FormCanceledEvent.toJSON(message.formCanceled);\n }\n if (message.formSubmitted !== undefined) {\n obj.formSubmitted = FormSubmittedEvent.toJSON(message.formSubmitted);\n }\n if (message.realtimeEvent !== undefined) {\n obj.realtimeEvent = RealtimeSubscriptionEvent.toJSON(message.realtimeEvent);\n }\n return obj;\n },\n create(base) {\n return WebViewInternalEventMessage.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewInternalEventMessage();\n message.id = object.id ?? \"\";\n message.formCanceled = (object.formCanceled !== undefined && object.formCanceled !== null)\n ? FormCanceledEvent.fromPartial(object.formCanceled)\n : undefined;\n message.formSubmitted = (object.formSubmitted !== undefined && object.formSubmitted !== null)\n ? FormSubmittedEvent.fromPartial(object.formSubmitted)\n : undefined;\n message.realtimeEvent = (object.realtimeEvent !== undefined && object.realtimeEvent !== null)\n ? RealtimeSubscriptionEvent.fromPartial(object.realtimeEvent)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewInternalEventMessage.$type, WebViewInternalEventMessage);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #struct.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n */\nexport var NullValue;\n(function (NullValue) {\n /** NULL_VALUE - Null value. */\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n NullValue[NullValue[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(NullValue || (NullValue = {}));\nexport function nullValueFromJSON(object) {\n switch (object) {\n case 0:\n case \"NULL_VALUE\":\n return NullValue.NULL_VALUE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return NullValue.UNRECOGNIZED;\n }\n}\nexport function nullValueToJSON(object) {\n switch (object) {\n case NullValue.NULL_VALUE:\n return 0;\n case NullValue.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseStruct() {\n return { fields: {} };\n}\nexport const Struct = {\n $type: \"google.protobuf.Struct\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.fields).forEach(([key, value]) => {\n if (value !== undefined) {\n Struct_FieldsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n }\n });\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = Struct_FieldsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.fields[entry1.key] = entry1.value;\n }\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: isObject(object.fields)\n ? Object.entries(object.fields).reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {})\n : {},\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields) {\n const entries = Object.entries(message.fields);\n if (entries.length > 0) {\n obj.fields = {};\n entries.forEach(([k, v]) => {\n obj.fields[k] = v;\n });\n }\n }\n return obj;\n },\n create(base) {\n return Struct.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct();\n message.fields = Object.entries(object.fields ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n }, {});\n return message;\n },\n wrap(object) {\n const struct = createBaseStruct();\n if (object !== undefined) {\n for (const key of Object.keys(object)) {\n struct.fields[key] = object[key];\n }\n }\n return struct;\n },\n unwrap(message) {\n const object = {};\n if (message.fields) {\n for (const key of Object.keys(message.fields)) {\n object[key] = message.fields[key];\n }\n }\n return object;\n },\n};\nmessageTypeRegistry.set(Struct.$type, Struct);\nfunction createBaseStruct_FieldsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const Struct_FieldsEntry = {\n $type: \"google.protobuf.Struct.FieldsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct_FieldsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object?.value) ? object.value : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return Struct_FieldsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct_FieldsEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Struct_FieldsEntry.$type, Struct_FieldsEntry);\nfunction createBaseValue() {\n return {\n nullValue: undefined,\n numberValue: undefined,\n stringValue: undefined,\n boolValue: undefined,\n structValue: undefined,\n listValue: undefined,\n };\n}\nexport const Value = {\n $type: \"google.protobuf.Value\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.nullValue !== undefined) {\n writer.uint32(8).int32(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(17).double(message.numberValue);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(26).string(message.stringValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.structValue !== undefined) {\n Struct.encode(Struct.wrap(message.structValue), writer.uint32(42).fork()).ldelim();\n }\n if (message.listValue !== undefined) {\n ListValue.encode(ListValue.wrap(message.listValue), writer.uint32(50).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.nullValue = reader.int32();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n nullValue: isSet(object.nullValue) ? nullValueFromJSON(object.nullValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n structValue: isObject(object.structValue) ? object.structValue : undefined,\n listValue: globalThis.Array.isArray(object.listValue) ? [...object.listValue] : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.nullValue !== undefined) {\n obj.nullValue = nullValueToJSON(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.structValue !== undefined) {\n obj.structValue = message.structValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = message.listValue;\n }\n return obj;\n },\n create(base) {\n return Value.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseValue();\n message.nullValue = object.nullValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.structValue = object.structValue ?? undefined;\n message.listValue = object.listValue ?? undefined;\n return message;\n },\n wrap(value) {\n const result = createBaseValue();\n if (value === null) {\n result.nullValue = NullValue.NULL_VALUE;\n }\n else if (typeof value === \"boolean\") {\n result.boolValue = value;\n }\n else if (typeof value === \"number\") {\n result.numberValue = value;\n }\n else if (typeof value === \"string\") {\n result.stringValue = value;\n }\n else if (globalThis.Array.isArray(value)) {\n result.listValue = value;\n }\n else if (typeof value === \"object\") {\n result.structValue = value;\n }\n else if (typeof value !== \"undefined\") {\n throw new globalThis.Error(\"Unsupported any value type: \" + typeof value);\n }\n return result;\n },\n unwrap(message) {\n if (message.stringValue !== undefined) {\n return message.stringValue;\n }\n else if (message?.numberValue !== undefined) {\n return message.numberValue;\n }\n else if (message?.boolValue !== undefined) {\n return message.boolValue;\n }\n else if (message?.structValue !== undefined) {\n return message.structValue;\n }\n else if (message?.listValue !== undefined) {\n return message.listValue;\n }\n else if (message?.nullValue !== undefined) {\n return null;\n }\n return undefined;\n },\n};\nmessageTypeRegistry.set(Value.$type, Value);\nfunction createBaseListValue() {\n return { values: [] };\n}\nexport const ListValue = {\n $type: \"google.protobuf.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n Value.encode(Value.wrap(v), writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(Value.unwrap(Value.decode(reader, reader.uint32())));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { values: globalThis.Array.isArray(object?.values) ? [...object.values] : [] };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseListValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n wrap(array) {\n const result = createBaseListValue();\n result.values = array ?? [];\n return result;\n },\n unwrap(message) {\n if (message?.hasOwnProperty(\"values\") && globalThis.Array.isArray(message.values)) {\n return message.values;\n }\n else {\n return message;\n }\n },\n};\nmessageTypeRegistry.set(ListValue.$type, ListValue);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime_subscriptions.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { RealtimeEvent } from \"../../../events/v1alpha/realtime.js\";\nexport var RealtimeSubscriptionStatus;\n(function (RealtimeSubscriptionStatus) {\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_SUBSCRIBED\"] = 0] = \"REALTIME_SUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_UNSUBSCRIBED\"] = 1] = \"REALTIME_UNSUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(RealtimeSubscriptionStatus || (RealtimeSubscriptionStatus = {}));\nexport function realtimeSubscriptionStatusFromJSON(object) {\n switch (object) {\n case 0:\n case \"REALTIME_SUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED;\n case 1:\n case \"REALTIME_UNSUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return RealtimeSubscriptionStatus.UNRECOGNIZED;\n }\n}\nexport function realtimeSubscriptionStatusToJSON(object) {\n switch (object) {\n case RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED:\n return 0;\n case RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED:\n return 1;\n case RealtimeSubscriptionStatus.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseRealtimeSubscriptionsEffect() {\n return { subscriptionIds: [] };\n}\nexport const RealtimeSubscriptionsEffect = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionsEffect\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.subscriptionIds) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionsEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.subscriptionIds.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n subscriptionIds: globalThis.Array.isArray(object?.subscriptionIds)\n ? object.subscriptionIds.map((e) => globalThis.String(e))\n : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.subscriptionIds?.length) {\n obj.subscriptionIds = message.subscriptionIds;\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionsEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionsEffect();\n message.subscriptionIds = object.subscriptionIds?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionsEffect.$type, RealtimeSubscriptionsEffect);\nfunction createBaseRealtimeSubscriptionEvent() {\n return { event: undefined, status: undefined };\n}\nexport const RealtimeSubscriptionEvent = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.event !== undefined) {\n RealtimeEvent.encode(message.event, writer.uint32(10).fork()).ldelim();\n }\n if (message.status !== undefined) {\n writer.uint32(16).int32(message.status);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.event = RealtimeEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.status = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n event: isSet(object.event) ? RealtimeEvent.fromJSON(object.event) : undefined,\n status: isSet(object.status) ? realtimeSubscriptionStatusFromJSON(object.status) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.event !== undefined) {\n obj.event = RealtimeEvent.toJSON(message.event);\n }\n if (message.status !== undefined) {\n obj.status = realtimeSubscriptionStatusToJSON(message.status);\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionEvent();\n message.event = (object.event !== undefined && object.event !== null)\n ? RealtimeEvent.fromPartial(object.event)\n : undefined;\n message.status = object.status ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionEvent.$type, RealtimeSubscriptionEvent);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { map } from \"rxjs/operators\";\nimport { Empty } from \"../../../google/protobuf/empty.js\";\nimport { Struct } from \"../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../typeRegistry.js\";\nfunction createBaseRealtimeRequest() {\n return { channels: [] };\n}\nexport const RealtimeRequest = {\n $type: \"devvit.events.v1alpha.RealtimeRequest\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.channels) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channels.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channels: globalThis.Array.isArray(object?.channels) ? object.channels.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channels?.length) {\n obj.channels = message.channels;\n }\n return obj;\n },\n create(base) {\n return RealtimeRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeRequest();\n message.channels = object.channels?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeRequest.$type, RealtimeRequest);\nfunction createBaseRealtimeEvent() {\n return { channel: \"\", data: undefined };\n}\nexport const RealtimeEvent = {\n $type: \"devvit.events.v1alpha.RealtimeEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.channel !== \"\") {\n writer.uint32(10).string(message.channel);\n }\n if (message.data !== undefined) {\n Struct.encode(Struct.wrap(message.data), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channel = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.data = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channel: isSet(object.channel) ? globalThis.String(object.channel) : \"\",\n data: isObject(object.data) ? object.data : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channel !== \"\") {\n obj.channel = message.channel;\n }\n if (message.data !== undefined) {\n obj.data = message.data;\n }\n return obj;\n },\n create(base) {\n return RealtimeEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeEvent();\n message.channel = object.channel ?? \"\";\n message.data = object.data ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeEvent.$type, RealtimeEvent);\nexport const RealtimeServiceName = \"devvit.events.v1alpha.Realtime\";\nexport class RealtimeClientImpl {\n constructor(rpc, opts) {\n this.service = opts?.service || RealtimeServiceName;\n this.rpc = rpc;\n this.Subscribe = this.Subscribe.bind(this);\n this.Send = this.Send.bind(this);\n }\n Subscribe(request, metadata) {\n const data = RealtimeRequest.encode(request).finish();\n const result = this.rpc.serverStreamingRequest(this.service, \"Subscribe\", data, metadata);\n return result.pipe(map((data) => RealtimeEvent.decode(_m0.Reader.create(data))));\n }\n Send(request, metadata) {\n const data = RealtimeEvent.encode(request).finish();\n const promise = this.rpc.request(this.service, \"Send\", data, metadata);\n return promise.then((data) => Empty.decode(_m0.Reader.create(data)));\n }\n}\nexport const RealtimeDefinition = {\n name: \"Realtime\",\n fullName: \"devvit.events.v1alpha.Realtime\",\n methods: {\n subscribe: {\n name: \"Subscribe\",\n requestType: RealtimeRequest,\n requestStream: false,\n responseType: RealtimeEvent,\n responseStream: true,\n options: {},\n },\n send: {\n name: \"Send\",\n requestType: RealtimeEvent,\n requestStream: false,\n responseType: Empty,\n responseStream: false,\n options: {},\n },\n },\n};\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #empty.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\nfunction createBaseEmpty() {\n return {};\n}\nexport const Empty = {\n $type: \"google.protobuf.Empty\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseEmpty();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return Empty.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseEmpty();\n return message;\n },\n};\nmessageTypeRegistry.set(Empty.$type, Empty);\n", "/**\n * #show_form.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { Form } from \"../../form_builder/v1alpha/form.js\";\nimport { FormFieldValue } from \"../../form_builder/v1alpha/value.js\";\nfunction createBaseShowFormEffect() {\n return { form: undefined };\n}\nexport const ShowFormEffect = {\n $type: \"devvit.ui.effects.v1alpha.ShowFormEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.form !== undefined) {\n Form.encode(message.form, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseShowFormEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.form = Form.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { form: isSet(object.form) ? Form.fromJSON(object.form) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.form !== undefined) {\n obj.form = Form.toJSON(message.form);\n }\n return obj;\n },\n create(base) {\n return ShowFormEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseShowFormEffect();\n message.form = (object.form !== undefined && object.form !== null) ? Form.fromPartial(object.form) : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(ShowFormEffect.$type, ShowFormEffect);\nfunction createBaseFormSubmittedEvent() {\n return { results: {}, formId: undefined };\n}\nexport const FormSubmittedEvent = {\n $type: \"devvit.ui.effects.v1alpha.FormSubmittedEvent\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.results).forEach(([key, value]) => {\n FormSubmittedEvent_ResultsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n });\n if (message.formId !== undefined) {\n writer.uint32(18).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = FormSubmittedEvent_ResultsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.results[entry1.key] = entry1.value;\n }\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n results: isObject(object.results)\n ? Object.entries(object.results).reduce((acc, [key, value]) => {\n acc[key] = FormFieldValue.fromJSON(value);\n return acc;\n }, {})\n : {},\n formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.results) {\n const entries = Object.entries(message.results);\n if (entries.length > 0) {\n obj.results = {};\n entries.forEach(([k, v]) => {\n obj.results[k] = FormFieldValue.toJSON(v);\n });\n }\n }\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent();\n message.results = Object.entries(object.results ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = FormFieldValue.fromPartial(value);\n }\n return acc;\n }, {});\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent.$type, FormSubmittedEvent);\nfunction createBaseFormSubmittedEvent_ResultsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const FormSubmittedEvent_ResultsEntry = {\n $type: \"devvit.ui.effects.v1alpha.FormSubmittedEvent.ResultsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n FormFieldValue.encode(message.value, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = FormFieldValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object.value) ? FormFieldValue.fromJSON(object.value) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = FormFieldValue.toJSON(message.value);\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent_ResultsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n message.key = object.key ?? \"\";\n message.value = (object.value !== undefined && object.value !== null)\n ? FormFieldValue.fromPartial(object.value)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent_ResultsEntry.$type, FormSubmittedEvent_ResultsEntry);\nfunction createBaseFormCanceledEvent() {\n return { formId: undefined };\n}\nexport const FormCanceledEvent = {\n $type: \"devvit.ui.effects.v1alpha.FormCanceledEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.formId !== undefined) {\n writer.uint32(10).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormCanceledEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormCanceledEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormCanceledEvent();\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormCanceledEvent.$type, FormCanceledEvent);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #form.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { FormField } from \"./field.js\";\nfunction createBaseForm() {\n return {\n fields: [],\n title: undefined,\n shortDescription: undefined,\n acceptLabel: undefined,\n cancelLabel: undefined,\n id: undefined,\n };\n}\nexport const Form = {\n $type: \"devvit.ui.form_builder.v1alpha.Form\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.title !== undefined) {\n writer.uint32(18).string(message.title);\n }\n if (message.shortDescription !== undefined) {\n writer.uint32(26).string(message.shortDescription);\n }\n if (message.acceptLabel !== undefined) {\n writer.uint32(34).string(message.acceptLabel);\n }\n if (message.cancelLabel !== undefined) {\n writer.uint32(42).string(message.cancelLabel);\n }\n if (message.id !== undefined) {\n writer.uint32(50).string(message.id);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseForm();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.title = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.shortDescription = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.acceptLabel = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.cancelLabel = reader.string();\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.id = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n title: isSet(object.title) ? globalThis.String(object.title) : undefined,\n shortDescription: isSet(object.shortDescription) ? globalThis.String(object.shortDescription) : undefined,\n acceptLabel: isSet(object.acceptLabel) ? globalThis.String(object.acceptLabel) : undefined,\n cancelLabel: isSet(object.cancelLabel) ? globalThis.String(object.cancelLabel) : undefined,\n id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n if (message.title !== undefined) {\n obj.title = message.title;\n }\n if (message.shortDescription !== undefined) {\n obj.shortDescription = message.shortDescription;\n }\n if (message.acceptLabel !== undefined) {\n obj.acceptLabel = message.acceptLabel;\n }\n if (message.cancelLabel !== undefined) {\n obj.cancelLabel = message.cancelLabel;\n }\n if (message.id !== undefined) {\n obj.id = message.id;\n }\n return obj;\n },\n create(base) {\n return Form.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseForm();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n message.title = object.title ?? undefined;\n message.shortDescription = object.shortDescription ?? undefined;\n message.acceptLabel = object.acceptLabel ?? undefined;\n message.cancelLabel = object.cancelLabel ?? undefined;\n message.id = object.id ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Form.$type, Form);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #field.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nimport { FormFieldValue } from \"./value.js\";\nfunction createBaseFormField() {\n return {\n fieldId: \"\",\n fieldType: 0,\n label: \"\",\n helpText: undefined,\n defaultValue: undefined,\n required: undefined,\n disabled: undefined,\n fieldConfig: undefined,\n isSecret: undefined,\n };\n}\nexport const FormField = {\n $type: \"devvit.ui.form_builder.v1alpha.FormField\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldId !== \"\") {\n writer.uint32(10).string(message.fieldId);\n }\n if (message.fieldType !== 0) {\n writer.uint32(16).int32(message.fieldType);\n }\n if (message.label !== \"\") {\n writer.uint32(26).string(message.label);\n }\n if (message.helpText !== undefined) {\n writer.uint32(34).string(message.helpText);\n }\n if (message.defaultValue !== undefined) {\n FormFieldValue.encode(message.defaultValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.required !== undefined) {\n writer.uint32(48).bool(message.required);\n }\n if (message.disabled !== undefined) {\n writer.uint32(56).bool(message.disabled);\n }\n if (message.fieldConfig !== undefined) {\n FieldConfig.encode(message.fieldConfig, writer.uint32(66).fork()).ldelim();\n }\n if (message.isSecret !== undefined) {\n writer.uint32(72).bool(message.isSecret);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormField();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fieldId = reader.string();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.label = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.helpText = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.defaultValue = FormFieldValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 48) {\n break;\n }\n message.required = reader.bool();\n continue;\n case 7:\n if (tag !== 56) {\n break;\n }\n message.disabled = reader.bool();\n continue;\n case 8:\n if (tag !== 66) {\n break;\n }\n message.fieldConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 9:\n if (tag !== 72) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldId: isSet(object.fieldId) ? globalThis.String(object.fieldId) : \"\",\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n helpText: isSet(object.helpText) ? globalThis.String(object.helpText) : undefined,\n defaultValue: isSet(object.defaultValue) ? FormFieldValue.fromJSON(object.defaultValue) : undefined,\n required: isSet(object.required) ? globalThis.Boolean(object.required) : undefined,\n disabled: isSet(object.disabled) ? globalThis.Boolean(object.disabled) : undefined,\n fieldConfig: isSet(object.fieldConfig) ? FieldConfig.fromJSON(object.fieldConfig) : undefined,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldId !== \"\") {\n obj.fieldId = message.fieldId;\n }\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.helpText !== undefined) {\n obj.helpText = message.helpText;\n }\n if (message.defaultValue !== undefined) {\n obj.defaultValue = FormFieldValue.toJSON(message.defaultValue);\n }\n if (message.required !== undefined) {\n obj.required = message.required;\n }\n if (message.disabled !== undefined) {\n obj.disabled = message.disabled;\n }\n if (message.fieldConfig !== undefined) {\n obj.fieldConfig = FieldConfig.toJSON(message.fieldConfig);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n return obj;\n },\n create(base) {\n return FormField.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormField();\n message.fieldId = object.fieldId ?? \"\";\n message.fieldType = object.fieldType ?? 0;\n message.label = object.label ?? \"\";\n message.helpText = object.helpText ?? undefined;\n message.defaultValue = (object.defaultValue !== undefined && object.defaultValue !== null)\n ? FormFieldValue.fromPartial(object.defaultValue)\n : undefined;\n message.required = object.required ?? undefined;\n message.disabled = object.disabled ?? undefined;\n message.fieldConfig = (object.fieldConfig !== undefined && object.fieldConfig !== null)\n ? FieldConfig.fromPartial(object.fieldConfig)\n : undefined;\n message.isSecret = object.isSecret ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormField.$type, FormField);\nfunction createBaseFieldConfig() {\n return {\n stringConfig: undefined,\n paragraphConfig: undefined,\n numberConfig: undefined,\n booleanConfig: undefined,\n listConfig: undefined,\n selectionConfig: undefined,\n groupConfig: undefined,\n };\n}\nexport const FieldConfig = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.stringConfig !== undefined) {\n FieldConfig_String.encode(message.stringConfig, writer.uint32(10).fork()).ldelim();\n }\n if (message.paragraphConfig !== undefined) {\n FieldConfig_Paragraph.encode(message.paragraphConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.numberConfig !== undefined) {\n FieldConfig_Number.encode(message.numberConfig, writer.uint32(26).fork()).ldelim();\n }\n if (message.booleanConfig !== undefined) {\n FieldConfig_Boolean.encode(message.booleanConfig, writer.uint32(34).fork()).ldelim();\n }\n if (message.listConfig !== undefined) {\n FieldConfig_List.encode(message.listConfig, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionConfig !== undefined) {\n FieldConfig_Selection.encode(message.selectionConfig, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupConfig !== undefined) {\n FieldConfig_Group.encode(message.groupConfig, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.stringConfig = FieldConfig_String.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.paragraphConfig = FieldConfig_Paragraph.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.numberConfig = FieldConfig_Number.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.booleanConfig = FieldConfig_Boolean.decode(reader, reader.uint32());\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listConfig = FieldConfig_List.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionConfig = FieldConfig_Selection.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupConfig = FieldConfig_Group.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n stringConfig: isSet(object.stringConfig) ? FieldConfig_String.fromJSON(object.stringConfig) : undefined,\n paragraphConfig: isSet(object.paragraphConfig)\n ? FieldConfig_Paragraph.fromJSON(object.paragraphConfig)\n : undefined,\n numberConfig: isSet(object.numberConfig) ? FieldConfig_Number.fromJSON(object.numberConfig) : undefined,\n booleanConfig: isSet(object.booleanConfig) ? FieldConfig_Boolean.fromJSON(object.booleanConfig) : undefined,\n listConfig: isSet(object.listConfig) ? FieldConfig_List.fromJSON(object.listConfig) : undefined,\n selectionConfig: isSet(object.selectionConfig)\n ? FieldConfig_Selection.fromJSON(object.selectionConfig)\n : undefined,\n groupConfig: isSet(object.groupConfig) ? FieldConfig_Group.fromJSON(object.groupConfig) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.stringConfig !== undefined) {\n obj.stringConfig = FieldConfig_String.toJSON(message.stringConfig);\n }\n if (message.paragraphConfig !== undefined) {\n obj.paragraphConfig = FieldConfig_Paragraph.toJSON(message.paragraphConfig);\n }\n if (message.numberConfig !== undefined) {\n obj.numberConfig = FieldConfig_Number.toJSON(message.numberConfig);\n }\n if (message.booleanConfig !== undefined) {\n obj.booleanConfig = FieldConfig_Boolean.toJSON(message.booleanConfig);\n }\n if (message.listConfig !== undefined) {\n obj.listConfig = FieldConfig_List.toJSON(message.listConfig);\n }\n if (message.selectionConfig !== undefined) {\n obj.selectionConfig = FieldConfig_Selection.toJSON(message.selectionConfig);\n }\n if (message.groupConfig !== undefined) {\n obj.groupConfig = FieldConfig_Group.toJSON(message.groupConfig);\n }\n return obj;\n },\n create(base) {\n return FieldConfig.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig();\n message.stringConfig = (object.stringConfig !== undefined && object.stringConfig !== null)\n ? FieldConfig_String.fromPartial(object.stringConfig)\n : undefined;\n message.paragraphConfig = (object.paragraphConfig !== undefined && object.paragraphConfig !== null)\n ? FieldConfig_Paragraph.fromPartial(object.paragraphConfig)\n : undefined;\n message.numberConfig = (object.numberConfig !== undefined && object.numberConfig !== null)\n ? FieldConfig_Number.fromPartial(object.numberConfig)\n : undefined;\n message.booleanConfig = (object.booleanConfig !== undefined && object.booleanConfig !== null)\n ? FieldConfig_Boolean.fromPartial(object.booleanConfig)\n : undefined;\n message.listConfig = (object.listConfig !== undefined && object.listConfig !== null)\n ? FieldConfig_List.fromPartial(object.listConfig)\n : undefined;\n message.selectionConfig = (object.selectionConfig !== undefined && object.selectionConfig !== null)\n ? FieldConfig_Selection.fromPartial(object.selectionConfig)\n : undefined;\n message.groupConfig = (object.groupConfig !== undefined && object.groupConfig !== null)\n ? FieldConfig_Group.fromPartial(object.groupConfig)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig.$type, FieldConfig);\nfunction createBaseFieldConfig_String() {\n return { minLength: undefined, maxLength: undefined, placeholder: undefined };\n}\nexport const FieldConfig_String = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.String\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.minLength !== undefined) {\n writer.uint32(8).int32(message.minLength);\n }\n if (message.maxLength !== undefined) {\n writer.uint32(16).int32(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_String();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.minLength = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.maxLength = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n minLength: isSet(object.minLength) ? globalThis.Number(object.minLength) : undefined,\n maxLength: isSet(object.maxLength) ? globalThis.Number(object.maxLength) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.minLength !== undefined) {\n obj.minLength = Math.round(message.minLength);\n }\n if (message.maxLength !== undefined) {\n obj.maxLength = Math.round(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_String.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_String();\n message.minLength = object.minLength ?? undefined;\n message.maxLength = object.maxLength ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_String.$type, FieldConfig_String);\nfunction createBaseFieldConfig_Paragraph() {\n return { maxCharacters: undefined, lineHeight: undefined, placeholder: undefined };\n}\nexport const FieldConfig_Paragraph = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Paragraph\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.maxCharacters !== undefined) {\n writer.uint32(8).int32(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n writer.uint32(16).int32(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Paragraph();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.maxCharacters = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.lineHeight = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n maxCharacters: isSet(object.maxCharacters) ? globalThis.Number(object.maxCharacters) : undefined,\n lineHeight: isSet(object.lineHeight) ? globalThis.Number(object.lineHeight) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.maxCharacters !== undefined) {\n obj.maxCharacters = Math.round(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n obj.lineHeight = Math.round(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Paragraph.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Paragraph();\n message.maxCharacters = object.maxCharacters ?? undefined;\n message.lineHeight = object.lineHeight ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Paragraph.$type, FieldConfig_Paragraph);\nfunction createBaseFieldConfig_Number() {\n return { step: undefined, min: undefined, max: undefined };\n}\nexport const FieldConfig_Number = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Number\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.step !== undefined) {\n writer.uint32(9).double(message.step);\n }\n if (message.min !== undefined) {\n writer.uint32(17).double(message.min);\n }\n if (message.max !== undefined) {\n writer.uint32(25).double(message.max);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Number();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 9) {\n break;\n }\n message.step = reader.double();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.min = reader.double();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.max = reader.double();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n step: isSet(object.step) ? globalThis.Number(object.step) : undefined,\n min: isSet(object.min) ? globalThis.Number(object.min) : undefined,\n max: isSet(object.max) ? globalThis.Number(object.max) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.step !== undefined) {\n obj.step = message.step;\n }\n if (message.min !== undefined) {\n obj.min = message.min;\n }\n if (message.max !== undefined) {\n obj.max = message.max;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Number.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Number();\n message.step = object.step ?? undefined;\n message.min = object.min ?? undefined;\n message.max = object.max ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Number.$type, FieldConfig_Number);\nfunction createBaseFieldConfig_Boolean() {\n return {};\n}\nexport const FieldConfig_Boolean = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Boolean\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Boolean();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FieldConfig_Boolean.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFieldConfig_Boolean();\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Boolean.$type, FieldConfig_Boolean);\nfunction createBaseFieldConfig_List() {\n return { itemType: 0, itemConfig: undefined, minEntries: undefined, maxEntries: undefined, entryLabel: undefined };\n}\nexport const FieldConfig_List = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.List\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n FieldConfig.encode(message.itemConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.minEntries !== undefined) {\n writer.uint32(24).int32(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n writer.uint32(32).int32(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n writer.uint32(42).string(message.entryLabel);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_List();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.itemConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minEntries = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxEntries = reader.int32();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.entryLabel = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n itemConfig: isSet(object.itemConfig) ? FieldConfig.fromJSON(object.itemConfig) : undefined,\n minEntries: isSet(object.minEntries) ? globalThis.Number(object.minEntries) : undefined,\n maxEntries: isSet(object.maxEntries) ? globalThis.Number(object.maxEntries) : undefined,\n entryLabel: isSet(object.entryLabel) ? globalThis.String(object.entryLabel) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n obj.itemConfig = FieldConfig.toJSON(message.itemConfig);\n }\n if (message.minEntries !== undefined) {\n obj.minEntries = Math.round(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n obj.maxEntries = Math.round(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n obj.entryLabel = message.entryLabel;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_List.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_List();\n message.itemType = object.itemType ?? 0;\n message.itemConfig = (object.itemConfig !== undefined && object.itemConfig !== null)\n ? FieldConfig.fromPartial(object.itemConfig)\n : undefined;\n message.minEntries = object.minEntries ?? undefined;\n message.maxEntries = object.maxEntries ?? undefined;\n message.entryLabel = object.entryLabel ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_List.$type, FieldConfig_List);\nfunction createBaseFieldConfig_Selection() {\n return {\n choices: [],\n multiSelect: undefined,\n minSelections: undefined,\n maxSelections: undefined,\n renderAsList: undefined,\n };\n}\nexport const FieldConfig_Selection = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.choices) {\n FieldConfig_Selection_Item.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.multiSelect !== undefined) {\n writer.uint32(16).bool(message.multiSelect);\n }\n if (message.minSelections !== undefined) {\n writer.uint32(24).int32(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n writer.uint32(32).int32(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n writer.uint32(40).bool(message.renderAsList);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.choices.push(FieldConfig_Selection_Item.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.multiSelect = reader.bool();\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minSelections = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxSelections = reader.int32();\n continue;\n case 5:\n if (tag !== 40) {\n break;\n }\n message.renderAsList = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n choices: globalThis.Array.isArray(object?.choices)\n ? object.choices.map((e) => FieldConfig_Selection_Item.fromJSON(e))\n : [],\n multiSelect: isSet(object.multiSelect) ? globalThis.Boolean(object.multiSelect) : undefined,\n minSelections: isSet(object.minSelections) ? globalThis.Number(object.minSelections) : undefined,\n maxSelections: isSet(object.maxSelections) ? globalThis.Number(object.maxSelections) : undefined,\n renderAsList: isSet(object.renderAsList) ? globalThis.Boolean(object.renderAsList) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.choices?.length) {\n obj.choices = message.choices.map((e) => FieldConfig_Selection_Item.toJSON(e));\n }\n if (message.multiSelect !== undefined) {\n obj.multiSelect = message.multiSelect;\n }\n if (message.minSelections !== undefined) {\n obj.minSelections = Math.round(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n obj.maxSelections = Math.round(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n obj.renderAsList = message.renderAsList;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection();\n message.choices = object.choices?.map((e) => FieldConfig_Selection_Item.fromPartial(e)) || [];\n message.multiSelect = object.multiSelect ?? undefined;\n message.minSelections = object.minSelections ?? undefined;\n message.maxSelections = object.maxSelections ?? undefined;\n message.renderAsList = object.renderAsList ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection.$type, FieldConfig_Selection);\nfunction createBaseFieldConfig_Selection_Item() {\n return { label: \"\", value: \"\" };\n}\nexport const FieldConfig_Selection_Item = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection.Item\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.label !== \"\") {\n writer.uint32(10).string(message.label);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection_Item();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.label = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.value !== \"\") {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection_Item.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection_Item();\n message.label = object.label ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection_Item.$type, FieldConfig_Selection_Item);\nfunction createBaseFieldConfig_Group() {\n return { fields: [] };\n}\nexport const FieldConfig_Group = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Group\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Group();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Group.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Group();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Group.$type, FieldConfig_Group);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #type.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var FormFieldType;\n(function (FormFieldType) {\n /** STRING - Single-line string */\n FormFieldType[FormFieldType[\"STRING\"] = 0] = \"STRING\";\n /** PARAGRAPH - Multi-line string */\n FormFieldType[FormFieldType[\"PARAGRAPH\"] = 1] = \"PARAGRAPH\";\n /** NUMBER - Number input */\n FormFieldType[FormFieldType[\"NUMBER\"] = 2] = \"NUMBER\";\n /** BOOLEAN - Checkbox, switch */\n FormFieldType[FormFieldType[\"BOOLEAN\"] = 3] = \"BOOLEAN\";\n /** LIST - Collect multiple entries of a single type */\n FormFieldType[FormFieldType[\"LIST\"] = 4] = \"LIST\";\n /** SELECTION - Provide a list of options for the user to choose from */\n FormFieldType[FormFieldType[\"SELECTION\"] = 5] = \"SELECTION\";\n /** GROUP - Create a labeled subsection of the form with nested fields */\n FormFieldType[FormFieldType[\"GROUP\"] = 6] = \"GROUP\";\n /** IMAGE - Image upload - value is a URL for the uploaded image */\n FormFieldType[FormFieldType[\"IMAGE\"] = 7] = \"IMAGE\";\n FormFieldType[FormFieldType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FormFieldType || (FormFieldType = {}));\nexport function formFieldTypeFromJSON(object) {\n switch (object) {\n case 0:\n case \"STRING\":\n return FormFieldType.STRING;\n case 1:\n case \"PARAGRAPH\":\n return FormFieldType.PARAGRAPH;\n case 2:\n case \"NUMBER\":\n return FormFieldType.NUMBER;\n case 3:\n case \"BOOLEAN\":\n return FormFieldType.BOOLEAN;\n case 4:\n case \"LIST\":\n return FormFieldType.LIST;\n case 5:\n case \"SELECTION\":\n return FormFieldType.SELECTION;\n case 6:\n case \"GROUP\":\n return FormFieldType.GROUP;\n case 7:\n case \"IMAGE\":\n return FormFieldType.IMAGE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return FormFieldType.UNRECOGNIZED;\n }\n}\nexport function formFieldTypeToJSON(object) {\n switch (object) {\n case FormFieldType.STRING:\n return 0;\n case FormFieldType.PARAGRAPH:\n return 1;\n case FormFieldType.NUMBER:\n return 2;\n case FormFieldType.BOOLEAN:\n return 3;\n case FormFieldType.LIST:\n return 4;\n case FormFieldType.SELECTION:\n return 5;\n case FormFieldType.GROUP:\n return 6;\n case FormFieldType.IMAGE:\n return 7;\n case FormFieldType.UNRECOGNIZED:\n default:\n return -1;\n }\n}\n", "/**\n * #value.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nfunction createBaseFormFieldValue() {\n return {\n fieldType: 0,\n isSecret: undefined,\n stringValue: undefined,\n numberValue: undefined,\n boolValue: undefined,\n listValue: undefined,\n selectionValue: undefined,\n groupValue: undefined,\n };\n}\nexport const FormFieldValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldType !== 0) {\n writer.uint32(8).int32(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n writer.uint32(800).bool(message.isSecret);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(18).string(message.stringValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(25).double(message.numberValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.listValue !== undefined) {\n FormFieldValue_ListValue.encode(message.listValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionValue !== undefined) {\n FormFieldValue_SelectionValue.encode(message.selectionValue, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupValue !== undefined) {\n FormFieldValue_GroupValue.encode(message.groupValue, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 100:\n if (tag !== 800) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listValue = FormFieldValue_ListValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionValue = FormFieldValue_SelectionValue.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupValue = FormFieldValue_GroupValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n listValue: isSet(object.listValue) ? FormFieldValue_ListValue.fromJSON(object.listValue) : undefined,\n selectionValue: isSet(object.selectionValue)\n ? FormFieldValue_SelectionValue.fromJSON(object.selectionValue)\n : undefined,\n groupValue: isSet(object.groupValue) ? FormFieldValue_GroupValue.fromJSON(object.groupValue) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = FormFieldValue_ListValue.toJSON(message.listValue);\n }\n if (message.selectionValue !== undefined) {\n obj.selectionValue = FormFieldValue_SelectionValue.toJSON(message.selectionValue);\n }\n if (message.groupValue !== undefined) {\n obj.groupValue = FormFieldValue_GroupValue.toJSON(message.groupValue);\n }\n return obj;\n },\n create(base) {\n return FormFieldValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue();\n message.fieldType = object.fieldType ?? 0;\n message.isSecret = object.isSecret ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.listValue = (object.listValue !== undefined && object.listValue !== null)\n ? FormFieldValue_ListValue.fromPartial(object.listValue)\n : undefined;\n message.selectionValue = (object.selectionValue !== undefined && object.selectionValue !== null)\n ? FormFieldValue_SelectionValue.fromPartial(object.selectionValue)\n : undefined;\n message.groupValue = (object.groupValue !== undefined && object.groupValue !== null)\n ? FormFieldValue_GroupValue.fromPartial(object.groupValue)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue.$type, FormFieldValue);\nfunction createBaseFormFieldValue_ListValue() {\n return { itemType: 0, items: [] };\n}\nexport const FormFieldValue_ListValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n for (const v of message.items) {\n FormFieldValue.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_ListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.items.push(FormFieldValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n items: globalThis.Array.isArray(object?.items) ? object.items.map((e) => FormFieldValue.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.items?.length) {\n obj.items = message.items.map((e) => FormFieldValue.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_ListValue();\n message.itemType = object.itemType ?? 0;\n message.items = object.items?.map((e) => FormFieldValue.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_ListValue.$type, FormFieldValue_ListValue);\nfunction createBaseFormFieldValue_SelectionValue() {\n return { values: [] };\n}\nexport const FormFieldValue_SelectionValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.SelectionValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_SelectionValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n values: globalThis.Array.isArray(object?.values) ? object.values.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_SelectionValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_SelectionValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_SelectionValue.$type, FormFieldValue_SelectionValue);\nfunction createBaseFormFieldValue_GroupValue() {\n return {};\n}\nexport const FormFieldValue_GroupValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.GroupValue\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_GroupValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FormFieldValue_GroupValue.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFormFieldValue_GroupValue();\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_GroupValue.$type, FormFieldValue_GroupValue);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\n\nexport const EFFECTS_WITH_RESPONSE: readonly EffectType[] = [\n 3 satisfies EffectType.EFFECT_SHOW_FORM,\n];\n", "import type { Effect } from '@devvit/protos';\nimport type {\n WebViewInternalMessage,\n WebViewInternalMessageScope,\n} from '@devvit/protos/types/devvit/ui/effects/web_view/v1alpha/post_message.js';\nimport { WebViewInternalEventMessage } from '@devvit/protos/types/devvit/ui/events/v1alpha/web_view.js';\n\nimport { EFFECTS_WITH_RESPONSE } from './constants.js';\n\n/**\n * Emits an effect to the parent window and handles the response if required.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message for effects that require\n * a response, or resolves immediately with undefined for effects that don't\n *\n * @description\n * This function handles two types of effects:\n * 1. Effects that require a response: Creates a unique ID, sets up a message listener,\n * and resolves the promise when a matching response is received\n * 2. Effects that don't require a response: Posts the message and resolves immediately\n */\nexport const emitEffect = (effect: Effect): Promise<WebViewInternalEventMessage | undefined> => {\n return new Promise<WebViewInternalEventMessage | undefined>((resolve) => {\n const message: WebViewInternalMessage = {\n scope: 0 satisfies WebViewInternalMessageScope.CLIENT,\n type: 'devvit-internal',\n };\n if (effect.realtimeSubscriptions) {\n message.realtimeEffect = effect.realtimeSubscriptions;\n } else {\n message.effect = effect;\n }\n\n // Only set message id and add a listener for effects which require a response\n if (EFFECTS_WITH_RESPONSE.includes(effect.type)) {\n const id = self.crypto.randomUUID();\n message.id = id;\n\n const handleEffect = (event: MessageEvent): void => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n const serializedMessage = WebViewInternalEventMessage.fromJSON(event.data.data);\n resolve(serializedMessage);\n window.removeEventListener('message', handleEffect);\n }\n };\n window.addEventListener('message', handleEffect);\n\n // Post message to the parent window, handled by client web view component\n window.parent.postMessage(message, '*');\n } else {\n window.parent.postMessage(message, '*');\n // Resolve immediately for effects that don't expect a response.\n resolve(undefined);\n }\n });\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type { Comment, Post, Subreddit, User } from '@devvit/reddit';\n\nimport { emitEffect } from './emit-effect.js';\n\n/**\n * Navigates to a URL, subreddit, post, comment, or user.\n *\n * @param thingOrUrl - The URL, subreddit, post, comment, or user to navigate to\n */\nexport function navigateTo(url: string): void;\nexport function navigateTo(subreddit: Readonly<Subreddit>): void;\nexport function navigateTo(post: Readonly<Post>): void;\nexport function navigateTo(comment: Readonly<Comment>): void;\nexport function navigateTo(user: Readonly<User>): void;\nexport function navigateTo(\n thingOrUrl: string | Readonly<Subreddit> | Readonly<Post> | Readonly<Comment> | Readonly<User>\n): void {\n let url: string;\n\n if (typeof thingOrUrl === 'string') {\n // Validate URL\n url = new URL(thingOrUrl).toString();\n } else {\n url = new URL(thingOrUrl.url).toString();\n }\n\n void emitEffect({\n navigateToUrl: {\n url,\n },\n type: 5 satisfies EffectType.EFFECT_NAVIGATE_TO_URL,\n });\n}\n", "import type { FormField, SettingScope } from './form-types.js';\n\n/**\n * Make sure that the form fields have unique names.\n *\n * This is a carbon copy of the assertValidFormFields function in the public-api package\n * We copy it here so that @devvit/client does not need to depend on public-api\n * Any changes to this function should be reflected in the public-api version\n */\nexport function assertValidFormFields(\n fields: readonly FormField[],\n seenNames: Set<string> = new Set()\n): void {\n for (const field of fields) {\n if (field.type === 'group') {\n assertValidFormFields(field.fields, seenNames);\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldName = (field as any).name as string;\n\n if (seenNames.has(fieldName)) {\n throw new Error(`Duplicate field name: ${fieldName}`);\n }\n\n seenNames.add(fieldName);\n }\n assertAppSecretsOnly(fields);\n}\n\nexport function assertAppSecretsOnly(fields: readonly FormField[]): void {\n for (const field of fields) {\n if (field.type === 'string' && field.isSecret && field.scope !== ('app' as SettingScope.App)) {\n throw `Invalid setting: only app settings can be secrets. Add \"scope: SettingScope.App\" to field \"${field.name}\"`;\n }\n }\n}\n", "import type { FormFieldType, FormFieldValue } from '@devvit/protos';\n\nimport type { FormValues } from './form-types.js';\n\nfunction flattenFormFieldValue(\n value: FormFieldValue\n): undefined | string | string[] | number | boolean {\n switch (value.fieldType) {\n case 0 satisfies FormFieldType.STRING:\n return value.stringValue;\n case 7 satisfies FormFieldType.IMAGE:\n // the string value is the URL\n return value.stringValue;\n case 1 satisfies FormFieldType.PARAGRAPH:\n return value.stringValue;\n case 2 satisfies FormFieldType.NUMBER:\n return value.numberValue;\n case 3 satisfies FormFieldType.BOOLEAN:\n return value.boolValue;\n case 5 satisfies FormFieldType.SELECTION:\n return value.selectionValue?.values ?? [];\n default:\n return undefined;\n }\n}\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function getFormValues(results: { [key: string]: FormFieldValue }): FormValues {\n return Object.keys(results).reduce((acc, key) => {\n const val = flattenFormFieldValue(results[key]);\n if (val !== undefined) acc[key] = val;\n return acc;\n }, {} as FormValues);\n}\n", "import type { FormField as FormFieldProto, FormFieldType } from '@devvit/protos';\n\nimport type {\n BooleanField,\n FormField,\n FormFieldGroup,\n ImageField,\n NumberField,\n ParagraphField,\n SelectField,\n StringField,\n} from './form-types.js';\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function transformFormFields(fields: readonly FormField[]): FormFieldProto[] {\n return fields.map((field) => {\n switch (field.type) {\n case 'string':\n return transformStringField(field);\n case 'image':\n return transformImageField(field);\n case 'paragraph':\n return transformParagraphField(field);\n case 'number':\n return transformNumberField(field);\n case 'select':\n return transformSelectField(field);\n case 'boolean':\n return transformBooleanField(field);\n case 'group':\n return transformGroupField(field);\n default:\n throw new Error('Unknown field type.');\n }\n });\n}\n\nfunction transformStringField(field: StringField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 0 satisfies FormFieldType.STRING,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n stringConfig: {\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 0 satisfies FormFieldType.STRING,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n isSecret: field.isSecret,\n };\n}\n\nfunction transformImageField(field: ImageField): FormFieldProto {\n return {\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 7 satisfies FormFieldType.IMAGE,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformParagraphField(field: ParagraphField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n paragraphConfig: {\n lineHeight: field.lineHeight,\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformNumberField(field: NumberField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 2 satisfies FormFieldType.NUMBER,\n numberValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n numberConfig: {},\n },\n fieldId: field.name,\n fieldType: 2 satisfies FormFieldType.NUMBER,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformSelectField(field: SelectField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 5 satisfies FormFieldType.SELECTION,\n selectionValue: {\n values: field.defaultValue ?? [],\n },\n },\n disabled: field.disabled,\n fieldConfig: {\n selectionConfig: {\n choices: field.options,\n multiSelect: field.multiSelect,\n },\n },\n fieldId: field.name,\n fieldType: 5 satisfies FormFieldType.SELECTION,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformBooleanField(field: BooleanField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n boolValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n helpText: field.helpText,\n label: field.label,\n };\n}\n\nfunction transformGroupField(field: FormFieldGroup): FormFieldProto {\n return {\n fieldId: '',\n fieldType: 6 satisfies FormFieldType.GROUP,\n fieldConfig: {\n groupConfig: {\n fields: transformFormFields(field.fields),\n },\n },\n label: field.label,\n helpText: field.helpText,\n };\n}\n", "import type { Form as FormProto } from '@devvit/protos';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type { FormKey } from '@devvit/shared-types/useForm.js';\n\nimport { emitEffect } from './emit-effect.js';\nimport { assertValidFormFields } from './helpers/assert-valid-form-fields.js';\nimport type { Form, FormToFormValues } from './helpers/form-types.js';\nimport type { FormEffectResponse } from './helpers/form-types.js';\nimport { getFormValues } from './helpers/get-form-values.js';\nimport { transformFormFields } from './helpers/transform-form.js';\n\nlet _formKey = 1;\n\nconst getNextFormKey = (): FormKey => {\n _formKey++;\n return `form.${_formKey}`;\n};\n\n/**\n * Opens a form in a modal.\n * Returns a promise that resolves with the form submission results.\n * The form can be submitted or canceled by the user.\n *\n * @param formDefinition - The form configuration\n * @returns A promise that resolves to either:\n * - An object with `action: FormAction.SUBMITTED` and the submitted form values\n * - An object with `action: FormAction.CANCELED` if the user canceled the form\n * @throws Will throw if the form fields are invalid\n */\nexport const showForm = async <const T extends Form>(\n formDefinition: T\n): Promise<FormEffectResponse<FormToFormValues<T>>> => {\n const form: FormProto = {\n fields: [],\n id: getNextFormKey(),\n title: formDefinition.title,\n acceptLabel: formDefinition.acceptLabel,\n cancelLabel: formDefinition.cancelLabel,\n shortDescription: formDefinition.description,\n };\n\n assertValidFormFields(formDefinition.fields);\n form.fields = transformFormFields(formDefinition.fields);\n\n const response = await emitEffect({\n showForm: {\n form,\n },\n type: 3 satisfies EffectType.EFFECT_SHOW_FORM,\n });\n\n if (!response || !response.formSubmitted) {\n return {\n action: 'CANCELED',\n };\n }\n\n const formResults = getFormValues(response.formSubmitted.results);\n\n return {\n action: 'SUBMITTED',\n values: formResults as FormToFormValues<T>,\n };\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n Toast as ToastProto,\n ToastAppearance,\n} from '@devvit/protos/types/devvit/ui/toast/toast.js';\nimport type { Toast } from '@devvit/shared';\n\nimport { emitEffect } from './emit-effect.js';\n\n/**\n * Shows a toast message.\n *\n * @param textOrToast - The text or toast object to display\n */\nexport function showToast(text: string): void;\nexport function showToast(toast: Toast): void;\nexport function showToast(textOrToast: string | Toast): void {\n let toast: ToastProto;\n\n if (textOrToast instanceof Object) {\n toast = {\n text: textOrToast.text,\n appearance:\n textOrToast.appearance === 'success'\n ? (1 satisfies ToastAppearance.SUCCESS)\n : (0 satisfies ToastAppearance.NEUTRAL),\n };\n } else {\n toast = {\n text: textOrToast,\n };\n }\n\n void emitEffect({\n showToast: {\n toast,\n },\n type: 4 satisfies EffectType.EFFECT_SHOW_TOAST,\n });\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["require_aspromise", "__commonJSMin", "exports", "module", "asPromise", "fn", "ctx", "params", "offset", "index", "pending", "resolve", "reject", "err", "require_base64", "__commonJSMin", "exports", "base64", "string", "p", "n", "b64", "s64", "i", "buffer", "start", "end", "parts", "chunk", "j", "t", "b", "invalidEncoding", "offset", "c", "require_eventemitter", "__commonJSMin", "exports", "module", "EventEmitter", "evt", "fn", "ctx", "listeners", "
|
|
3
|
+
"sources": ["../../../node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@protobufjs/base64/index.js", "../../../node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@protobufjs/float/index.js", "../../../node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@protobufjs/pool/index.js", "../../../node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/protobufjs/src/writer.js", "../../../node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/protobufjs/src/reader.js", "../../../node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/protobufjs/src/rpc/service.js", "../../../node_modules/protobufjs/src/rpc.js", "../../../node_modules/protobufjs/src/roots.js", "../../../node_modules/protobufjs/src/index-minimal.js", "../../../node_modules/protobufjs/minimal.js", "../../protos/dist/types/devvit/ui/effects/web_view/v1alpha/context.js", "../../protos/dist/types/google/protobuf/struct.js", "../../protos/dist/types/typeRegistry.js", "../../shared-types/dist/assert.js", "../../shared-types/dist/tid.js", "../../web-view-scripts/dist/init-context.js", "../src/context.ts", "../../protos/dist/types/devvit/ui/events/v1alpha/web_view.js", "../../protos/dist/types/devvit/ui/effects/v1alpha/realtime_subscriptions.js", "../../protos/dist/types/devvit/events/v1alpha/realtime.js", "../../protos/dist/types/google/protobuf/empty.js", "../../protos/dist/types/devvit/ui/effects/v1alpha/show_form.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/form.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/field.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/type.js", "../../protos/dist/types/devvit/ui/form_builder/v1alpha/value.js", "../src/effects/constants.ts", "../src/effects/emit-effect.ts", "../src/effects/navigate-to.ts", "../src/effects/helpers/assert-valid-form-fields.ts", "../src/effects/helpers/get-form-values.ts", "../src/effects/helpers/transform-form.ts", "../src/effects/show-form.ts", "../src/effects/show-toast.ts"],
|
|
4
|
+
"sourcesContent": ["\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.<string,*>}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n", "\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n", "\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n */\r\nutil.isNode = Boolean(typeof global !== \"undefined\"\r\n && global\r\n && global.process\r\n && global.process.versions\r\n && global.process.versions.node);\r\n\r\n/**\r\n * Global object reference.\r\n * @memberof util\r\n * @type {Object}\r\n */\r\nutil.global = util.isNode && global\r\n || typeof window !== \"undefined\" && window\r\n || typeof self !== \"undefined\" && self\r\n || this; // eslint-disable-line no-invalid-this\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor<Buffer>}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor<Uint8Array>}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor<Long>}\r\n */\r\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\r\n || /* istanbul ignore next */ util.global.Long\r\n || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor<Error>} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n CustomError.prototype = Object.create(Error.prototype, {\r\n constructor: {\r\n value: CustomError,\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n name: {\r\n get: function get() { return name; },\r\n set: undefined,\r\n enumerable: false,\r\n // configurable: false would accurately preserve the behavior of\r\n // the original, but I'm guessing that was not intentional.\r\n // For an actual error subclass, this property would\r\n // be configurable.\r\n configurable: true,\r\n },\r\n toString: {\r\n value: function value() { return this.name + \": \" + this.message; },\r\n writable: true,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n });\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message<T>\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.<string,*>} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message<T>}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\n// Sets up buffer utility according to the environment (called in index-minimal)\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n", "\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\nvar create = function create() {\r\n return util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n};\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = create();\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n Writer.create = create();\r\n BufferWriter._configure();\r\n};\r\n", "\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\nBufferWriter._configure = function () {\r\n /**\r\n * Allocates a buffer of the specified size.\r\n * @function\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\n BufferWriter.alloc = util._Buffer_allocUnsafe;\r\n\r\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n};\r\n\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(BufferWriter.writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else if (buf.utf8Write)\r\n buf.utf8Write(val, pos);\r\n else\r\n buf.write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = util.Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\r\nBufferWriter._configure();\r\n", "\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\nvar create = function create() {\r\n return util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n};\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = create();\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n\r\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n var nativeBuffer = util.Buffer;\r\n return nativeBuffer\r\n ? nativeBuffer.alloc(0)\r\n : new this.buf.constructor(0);\r\n }\r\n return this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n while ((wireType = this.uint32() & 7) !== 4) {\r\n this.skipType(wireType);\r\n }\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n Reader.create = create();\r\n BufferReader._configure();\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n", "\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\nBufferReader._configure = function () {\r\n /* istanbul ignore else */\r\n if (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n};\r\n\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice\r\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\r\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\r\nBufferReader._configure();\r\n", "\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\r\n * @param {Constructor<TReq>} requestCtor Request constructor\r\n * @param {Constructor<TRes>} responseCtor Response constructor\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n", "\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n", "\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available across modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n", "\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.util._configure();\r\n protobuf.Writer._configure(protobuf.BufferWriter);\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n}\r\n\r\n// Set up buffer utility according to the environment\r\nconfigure();\r\n", "// minimal library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-minimal\");\r\n", "/**\n * #context.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Struct } from \"../../../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../../../typeRegistry.js\";\nfunction createBaseWebViewContext() {\n return { subredditId: \"\", subredditName: \"\", userId: \"\", appName: \"\", appVersion: \"\", postId: \"\" };\n}\nexport const WebViewContext = {\n $type: \"devvit.ui.effects.web_view.v1alpha.WebViewContext\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.subredditId !== \"\") {\n writer.uint32(10).string(message.subredditId);\n }\n if (message.subredditName !== \"\") {\n writer.uint32(18).string(message.subredditName);\n }\n if (message.userId !== \"\") {\n writer.uint32(26).string(message.userId);\n }\n if (message.appName !== \"\") {\n writer.uint32(34).string(message.appName);\n }\n if (message.appVersion !== \"\") {\n writer.uint32(42).string(message.appVersion);\n }\n if (message.postId !== \"\") {\n writer.uint32(50).string(message.postId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewContext();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.subredditId = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.subredditName = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.userId = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.appName = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.appVersion = reader.string();\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.postId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n subredditId: isSet(object.subredditId) ? globalThis.String(object.subredditId) : \"\",\n subredditName: isSet(object.subredditName) ? globalThis.String(object.subredditName) : \"\",\n userId: isSet(object.userId) ? globalThis.String(object.userId) : \"\",\n appName: isSet(object.appName) ? globalThis.String(object.appName) : \"\",\n appVersion: isSet(object.appVersion) ? globalThis.String(object.appVersion) : \"\",\n postId: isSet(object.postId) ? globalThis.String(object.postId) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.subredditId !== \"\") {\n obj.subredditId = message.subredditId;\n }\n if (message.subredditName !== \"\") {\n obj.subredditName = message.subredditName;\n }\n if (message.userId !== \"\") {\n obj.userId = message.userId;\n }\n if (message.appName !== \"\") {\n obj.appName = message.appName;\n }\n if (message.appVersion !== \"\") {\n obj.appVersion = message.appVersion;\n }\n if (message.postId !== \"\") {\n obj.postId = message.postId;\n }\n return obj;\n },\n create(base) {\n return WebViewContext.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewContext();\n message.subredditId = object.subredditId ?? \"\";\n message.subredditName = object.subredditName ?? \"\";\n message.userId = object.userId ?? \"\";\n message.appName = object.appName ?? \"\";\n message.appVersion = object.appVersion ?? \"\";\n message.postId = object.postId ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewContext.$type, WebViewContext);\nfunction createBaseDevvitPostData() {\n return { developerData: undefined };\n}\nexport const DevvitPostData = {\n $type: \"devvit.ui.effects.web_view.v1alpha.DevvitPostData\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.developerData !== undefined) {\n Struct.encode(Struct.wrap(message.developerData), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDevvitPostData();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 2:\n if (tag !== 18) {\n break;\n }\n message.developerData = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { developerData: isObject(object.developerData) ? object.developerData : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.developerData !== undefined) {\n obj.developerData = message.developerData;\n }\n return obj;\n },\n create(base) {\n return DevvitPostData.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseDevvitPostData();\n message.developerData = object.developerData ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(DevvitPostData.$type, DevvitPostData);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #struct.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n */\nexport var NullValue;\n(function (NullValue) {\n /** NULL_VALUE - Null value. */\n NullValue[NullValue[\"NULL_VALUE\"] = 0] = \"NULL_VALUE\";\n NullValue[NullValue[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(NullValue || (NullValue = {}));\nexport function nullValueFromJSON(object) {\n switch (object) {\n case 0:\n case \"NULL_VALUE\":\n return NullValue.NULL_VALUE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return NullValue.UNRECOGNIZED;\n }\n}\nexport function nullValueToJSON(object) {\n switch (object) {\n case NullValue.NULL_VALUE:\n return 0;\n case NullValue.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseStruct() {\n return { fields: {} };\n}\nexport const Struct = {\n $type: \"google.protobuf.Struct\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.fields).forEach(([key, value]) => {\n if (value !== undefined) {\n Struct_FieldsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n }\n });\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = Struct_FieldsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.fields[entry1.key] = entry1.value;\n }\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: isObject(object.fields)\n ? Object.entries(object.fields).reduce((acc, [key, value]) => {\n acc[key] = value;\n return acc;\n }, {})\n : {},\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields) {\n const entries = Object.entries(message.fields);\n if (entries.length > 0) {\n obj.fields = {};\n entries.forEach(([k, v]) => {\n obj.fields[k] = v;\n });\n }\n }\n return obj;\n },\n create(base) {\n return Struct.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct();\n message.fields = Object.entries(object.fields ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n }, {});\n return message;\n },\n wrap(object) {\n const struct = createBaseStruct();\n if (object !== undefined) {\n for (const key of Object.keys(object)) {\n struct.fields[key] = object[key];\n }\n }\n return struct;\n },\n unwrap(message) {\n const object = {};\n if (message.fields) {\n for (const key of Object.keys(message.fields)) {\n object[key] = message.fields[key];\n }\n }\n return object;\n },\n};\nmessageTypeRegistry.set(Struct.$type, Struct);\nfunction createBaseStruct_FieldsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const Struct_FieldsEntry = {\n $type: \"google.protobuf.Struct.FieldsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n Value.encode(Value.wrap(message.value), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseStruct_FieldsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object?.value) ? object.value : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return Struct_FieldsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseStruct_FieldsEntry();\n message.key = object.key ?? \"\";\n message.value = object.value ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Struct_FieldsEntry.$type, Struct_FieldsEntry);\nfunction createBaseValue() {\n return {\n nullValue: undefined,\n numberValue: undefined,\n stringValue: undefined,\n boolValue: undefined,\n structValue: undefined,\n listValue: undefined,\n };\n}\nexport const Value = {\n $type: \"google.protobuf.Value\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.nullValue !== undefined) {\n writer.uint32(8).int32(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(17).double(message.numberValue);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(26).string(message.stringValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.structValue !== undefined) {\n Struct.encode(Struct.wrap(message.structValue), writer.uint32(42).fork()).ldelim();\n }\n if (message.listValue !== undefined) {\n ListValue.encode(ListValue.wrap(message.listValue), writer.uint32(50).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.nullValue = reader.int32();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.structValue = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.listValue = ListValue.unwrap(ListValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n nullValue: isSet(object.nullValue) ? nullValueFromJSON(object.nullValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n structValue: isObject(object.structValue) ? object.structValue : undefined,\n listValue: globalThis.Array.isArray(object.listValue) ? [...object.listValue] : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.nullValue !== undefined) {\n obj.nullValue = nullValueToJSON(message.nullValue);\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.structValue !== undefined) {\n obj.structValue = message.structValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = message.listValue;\n }\n return obj;\n },\n create(base) {\n return Value.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseValue();\n message.nullValue = object.nullValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.structValue = object.structValue ?? undefined;\n message.listValue = object.listValue ?? undefined;\n return message;\n },\n wrap(value) {\n const result = createBaseValue();\n if (value === null) {\n result.nullValue = NullValue.NULL_VALUE;\n }\n else if (typeof value === \"boolean\") {\n result.boolValue = value;\n }\n else if (typeof value === \"number\") {\n result.numberValue = value;\n }\n else if (typeof value === \"string\") {\n result.stringValue = value;\n }\n else if (globalThis.Array.isArray(value)) {\n result.listValue = value;\n }\n else if (typeof value === \"object\") {\n result.structValue = value;\n }\n else if (typeof value !== \"undefined\") {\n throw new globalThis.Error(\"Unsupported any value type: \" + typeof value);\n }\n return result;\n },\n unwrap(message) {\n if (message.stringValue !== undefined) {\n return message.stringValue;\n }\n else if (message?.numberValue !== undefined) {\n return message.numberValue;\n }\n else if (message?.boolValue !== undefined) {\n return message.boolValue;\n }\n else if (message?.structValue !== undefined) {\n return message.structValue;\n }\n else if (message?.listValue !== undefined) {\n return message.listValue;\n }\n else if (message?.nullValue !== undefined) {\n return null;\n }\n return undefined;\n },\n};\nmessageTypeRegistry.set(Value.$type, Value);\nfunction createBaseListValue() {\n return { values: [] };\n}\nexport const ListValue = {\n $type: \"google.protobuf.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n Value.encode(Value.wrap(v), writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(Value.unwrap(Value.decode(reader, reader.uint32())));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { values: globalThis.Array.isArray(object?.values) ? [...object.values] : [] };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseListValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n wrap(array) {\n const result = createBaseListValue();\n result.values = array ?? [];\n return result;\n },\n unwrap(message) {\n if (message?.hasOwnProperty(\"values\") && globalThis.Array.isArray(message.values)) {\n return message.values;\n }\n else {\n return message;\n }\n },\n};\nmessageTypeRegistry.set(ListValue.$type, ListValue);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #typeRegistry.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nexport const messageTypeRegistry = new Map();\n", "export function assert(condition, msg) {\n if (!condition)\n throw Error(msg);\n}\n", "import { assert } from './assert.js';\n// CALMS!\nexport var T_PREFIX;\n(function (T_PREFIX) {\n T_PREFIX[\"COMMENT\"] = \"t1_\";\n T_PREFIX[\"ACCOUNT\"] = \"t2_\";\n T_PREFIX[\"LINK\"] = \"t3_\";\n T_PREFIX[\"MESSAGE\"] = \"t4_\";\n T_PREFIX[\"SUBREDDIT\"] = \"t5_\";\n T_PREFIX[\"AWARD\"] = \"t6_\";\n})(T_PREFIX || (T_PREFIX = {}));\n// type guards\nexport function isT1ID(id) {\n return id.startsWith(T_PREFIX.COMMENT);\n}\nexport function isT2ID(id) {\n return id.startsWith(T_PREFIX.ACCOUNT);\n}\nexport function isT3ID(id) {\n return id.startsWith(T_PREFIX.LINK);\n}\nexport function isT4ID(id) {\n return id.startsWith(T_PREFIX.MESSAGE);\n}\nexport function isT5ID(id) {\n return id.startsWith(T_PREFIX.SUBREDDIT);\n}\nexport function isT6ID(id) {\n return id.startsWith(T_PREFIX.AWARD);\n}\n// assertion functions\nexport function assertT1ID(id) {\n assert(isT1ID(id), `Expected comment id to start with ${T_PREFIX.COMMENT}, got ${id}}`);\n}\nexport function assertT2ID(id) {\n assert(isT2ID(id), `Expected account id to start with ${T_PREFIX.ACCOUNT}, got ${id}}`);\n}\nexport function assertT3ID(id) {\n assert(isT3ID(id), `Expected link id to start with ${T_PREFIX.LINK}, got ${id}}`);\n}\nexport function assertT4ID(id) {\n assert(isT4ID(id), `Expected message id to start with ${T_PREFIX.MESSAGE}, got ${id}}`);\n}\nexport function assertT5ID(id) {\n assert(isT5ID(id), `Expected subreddit id to start with ${T_PREFIX.SUBREDDIT}, got ${id}}`);\n}\nexport function assertT6ID(id) {\n assert(isT6ID(id), `Expected award id to start with ${T_PREFIX.AWARD}, got ${id}}`);\n}\n// factory functions\nexport function asT1ID(id) {\n assertT1ID(id);\n return id;\n}\nexport function asT2ID(id) {\n assertT2ID(id);\n return id;\n}\nexport function asT3ID(id) {\n assertT3ID(id);\n return id;\n}\nexport function asT4ID(id) {\n assertT4ID(id);\n return id;\n}\nexport function asT5ID(id) {\n assertT5ID(id);\n return id;\n}\nexport function asT6ID(id) {\n assertT6ID(id);\n return id;\n}\nexport function asTID(id) {\n if (isT1ID(id)) {\n return asT1ID(id);\n }\n if (isT2ID(id)) {\n return asT2ID(id);\n }\n if (isT3ID(id)) {\n return asT3ID(id);\n }\n if (isT4ID(id)) {\n return asT4ID(id);\n }\n if (isT5ID(id)) {\n return asT5ID(id);\n }\n if (isT6ID(id)) {\n return asT6ID(id);\n }\n throw new Error(`Expected thing id to start with ${Object.values(T_PREFIX).join(', ')} got ${id}}`);\n}\n// convenience functions\nexport function isCommentId(id) {\n return isT1ID(id);\n}\nexport function isAccountId(id) {\n return isT2ID(id);\n}\nexport function isLinkId(id) {\n return isT3ID(id);\n}\nexport function isMessageId(id) {\n return isT4ID(id);\n}\nexport function isSubredditId(id) {\n return isT5ID(id);\n}\nexport function isAwardId(id) {\n return isT6ID(id);\n}\n", "import { DevvitPostData, WebViewContext, } from '@devvit/protos/types/devvit/ui/effects/web_view/v1alpha/context.js';\nimport { asT2ID, asT3ID, asT5ID, } from '@devvit/shared-types/tid.js';\n/** @internal */\nexport const _initContext = ({ search, hash }) => {\n const contextParam = new URLSearchParams(search).get('context');\n // TODO: throw an error here after clients have been updated to start sending the context param\n if (contextParam) {\n const jsonString = decodeURIComponent(contextParam);\n const contextProto = WebViewContext.fromJSON(JSON.parse(jsonString));\n const postData = getPostDataFromHash(hash);\n const context = {\n subredditId: asT5ID(contextProto.subredditId),\n userId: asT2ID(contextProto.userId),\n subredditName: contextProto.subredditName,\n appName: contextProto.appName,\n appVersion: contextProto.appVersion,\n postId: asT3ID(contextProto.postId),\n postData: postData?.developerData,\n };\n globalThis.devvit = { context };\n }\n};\nif (globalThis.location) {\n _initContext(globalThis.location);\n}\n/**\n * Extracts the DevvitPostData from the hash.\n * @internal\n */\nexport function getPostDataFromHash(hash) {\n const postData = hash?.slice(1); // Strip the leading '#' from the hash\n if (!postData)\n return;\n try {\n return DevvitPostData.fromJSON(JSON.parse(decodeURIComponent(postData)));\n }\n catch (error) {\n console.error('Error parsing post data from hash', error);\n return undefined;\n }\n}\n", "import '@devvit/web-view-scripts/init-context.js';\n\nimport { type Context } from '@devvit/web-view-scripts/init-context.js';\n\nexport const context: Context = new Proxy<Context>({} as Context, {\n get: (_target, prop: keyof Context) => {\n return globalThis.devvit.context[prop];\n },\n // The following two methods set up the Proxy to behave like a normal object when iterating over keys or\n // checking if a property exists. (This helps ensure tests pass too.)\n ownKeys(): string[] {\n return Object.keys(globalThis.devvit.context);\n },\n getOwnPropertyDescriptor(_target, key: keyof Context) {\n return { enumerable: true, configurable: true, value: globalThis.devvit.context[key] };\n },\n});\n", "/**\n * #web_view.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { Value } from \"../../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { RealtimeSubscriptionEvent } from \"../../effects/v1alpha/realtime_subscriptions.js\";\nimport { FormCanceledEvent, FormSubmittedEvent } from \"../../effects/v1alpha/show_form.js\";\nexport var WebViewVisibility;\n(function (WebViewVisibility) {\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_VISIBLE\"] = 0] = \"WEBVIEW_VISIBLE\";\n WebViewVisibility[WebViewVisibility[\"WEBVIEW_HIDDEN\"] = 1] = \"WEBVIEW_HIDDEN\";\n WebViewVisibility[WebViewVisibility[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(WebViewVisibility || (WebViewVisibility = {}));\nexport function webViewVisibilityFromJSON(object) {\n switch (object) {\n case 0:\n case \"WEBVIEW_VISIBLE\":\n return WebViewVisibility.WEBVIEW_VISIBLE;\n case 1:\n case \"WEBVIEW_HIDDEN\":\n return WebViewVisibility.WEBVIEW_HIDDEN;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return WebViewVisibility.UNRECOGNIZED;\n }\n}\nexport function webViewVisibilityToJSON(object) {\n switch (object) {\n case WebViewVisibility.WEBVIEW_VISIBLE:\n return 0;\n case WebViewVisibility.WEBVIEW_HIDDEN:\n return 1;\n case WebViewVisibility.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseWebViewPostMessageEvent() {\n return { message: undefined, jsonString: \"\" };\n}\nexport const WebViewPostMessageEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewPostMessageEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.message !== undefined) {\n Value.encode(Value.wrap(message.message), writer.uint32(10).fork()).ldelim();\n }\n if (message.jsonString !== \"\") {\n writer.uint32(18).string(message.jsonString);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewPostMessageEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.message = Value.unwrap(Value.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.jsonString = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n message: isSet(object?.message) ? object.message : undefined,\n jsonString: isSet(object.jsonString) ? globalThis.String(object.jsonString) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.message !== undefined) {\n obj.message = message.message;\n }\n if (message.jsonString !== \"\") {\n obj.jsonString = message.jsonString;\n }\n return obj;\n },\n create(base) {\n return WebViewPostMessageEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewPostMessageEvent();\n message.message = object.message ?? undefined;\n message.jsonString = object.jsonString ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewPostMessageEvent.$type, WebViewPostMessageEvent);\nfunction createBaseWebViewFullScreenEvent() {\n return { visibility: 0 };\n}\nexport const WebViewFullScreenEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewFullScreenEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.visibility !== 0) {\n writer.uint32(8).int32(message.visibility);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewFullScreenEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.visibility = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { visibility: isSet(object.visibility) ? webViewVisibilityFromJSON(object.visibility) : 0 };\n },\n toJSON(message) {\n const obj = {};\n if (message.visibility !== 0) {\n obj.visibility = webViewVisibilityToJSON(message.visibility);\n }\n return obj;\n },\n create(base) {\n return WebViewFullScreenEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewFullScreenEvent();\n message.visibility = object.visibility ?? 0;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewFullScreenEvent.$type, WebViewFullScreenEvent);\nfunction createBaseWebViewEvent() {\n return { postMessage: undefined, fullScreen: undefined };\n}\nexport const WebViewEvent = {\n $type: \"devvit.ui.events.v1alpha.WebViewEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.postMessage !== undefined) {\n WebViewPostMessageEvent.encode(message.postMessage, writer.uint32(10).fork()).ldelim();\n }\n if (message.fullScreen !== undefined) {\n WebViewFullScreenEvent.encode(message.fullScreen, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.postMessage = WebViewPostMessageEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.fullScreen = WebViewFullScreenEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n postMessage: isSet(object.postMessage) ? WebViewPostMessageEvent.fromJSON(object.postMessage) : undefined,\n fullScreen: isSet(object.fullScreen) ? WebViewFullScreenEvent.fromJSON(object.fullScreen) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.postMessage !== undefined) {\n obj.postMessage = WebViewPostMessageEvent.toJSON(message.postMessage);\n }\n if (message.fullScreen !== undefined) {\n obj.fullScreen = WebViewFullScreenEvent.toJSON(message.fullScreen);\n }\n return obj;\n },\n create(base) {\n return WebViewEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewEvent();\n message.postMessage = (object.postMessage !== undefined && object.postMessage !== null)\n ? WebViewPostMessageEvent.fromPartial(object.postMessage)\n : undefined;\n message.fullScreen = (object.fullScreen !== undefined && object.fullScreen !== null)\n ? WebViewFullScreenEvent.fromPartial(object.fullScreen)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewEvent.$type, WebViewEvent);\nfunction createBaseWebViewInternalEventMessage() {\n return { id: \"\", formCanceled: undefined, formSubmitted: undefined, realtimeEvent: undefined };\n}\nexport const WebViewInternalEventMessage = {\n $type: \"devvit.ui.events.v1alpha.WebViewInternalEventMessage\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.formCanceled !== undefined) {\n FormCanceledEvent.encode(message.formCanceled, writer.uint32(18).fork()).ldelim();\n }\n if (message.formSubmitted !== undefined) {\n FormSubmittedEvent.encode(message.formSubmitted, writer.uint32(26).fork()).ldelim();\n }\n if (message.realtimeEvent !== undefined) {\n RealtimeSubscriptionEvent.encode(message.realtimeEvent, writer.uint32(34).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseWebViewInternalEventMessage();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.id = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formCanceled = FormCanceledEvent.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.formSubmitted = FormSubmittedEvent.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.realtimeEvent = RealtimeSubscriptionEvent.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n formCanceled: isSet(object.formCanceled) ? FormCanceledEvent.fromJSON(object.formCanceled) : undefined,\n formSubmitted: isSet(object.formSubmitted) ? FormSubmittedEvent.fromJSON(object.formSubmitted) : undefined,\n realtimeEvent: isSet(object.realtimeEvent) ? RealtimeSubscriptionEvent.fromJSON(object.realtimeEvent) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n if (message.formCanceled !== undefined) {\n obj.formCanceled = FormCanceledEvent.toJSON(message.formCanceled);\n }\n if (message.formSubmitted !== undefined) {\n obj.formSubmitted = FormSubmittedEvent.toJSON(message.formSubmitted);\n }\n if (message.realtimeEvent !== undefined) {\n obj.realtimeEvent = RealtimeSubscriptionEvent.toJSON(message.realtimeEvent);\n }\n return obj;\n },\n create(base) {\n return WebViewInternalEventMessage.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseWebViewInternalEventMessage();\n message.id = object.id ?? \"\";\n message.formCanceled = (object.formCanceled !== undefined && object.formCanceled !== null)\n ? FormCanceledEvent.fromPartial(object.formCanceled)\n : undefined;\n message.formSubmitted = (object.formSubmitted !== undefined && object.formSubmitted !== null)\n ? FormSubmittedEvent.fromPartial(object.formSubmitted)\n : undefined;\n message.realtimeEvent = (object.realtimeEvent !== undefined && object.realtimeEvent !== null)\n ? RealtimeSubscriptionEvent.fromPartial(object.realtimeEvent)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(WebViewInternalEventMessage.$type, WebViewInternalEventMessage);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime_subscriptions.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { RealtimeEvent } from \"../../../events/v1alpha/realtime.js\";\nexport var RealtimeSubscriptionStatus;\n(function (RealtimeSubscriptionStatus) {\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_SUBSCRIBED\"] = 0] = \"REALTIME_SUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"REALTIME_UNSUBSCRIBED\"] = 1] = \"REALTIME_UNSUBSCRIBED\";\n RealtimeSubscriptionStatus[RealtimeSubscriptionStatus[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(RealtimeSubscriptionStatus || (RealtimeSubscriptionStatus = {}));\nexport function realtimeSubscriptionStatusFromJSON(object) {\n switch (object) {\n case 0:\n case \"REALTIME_SUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED;\n case 1:\n case \"REALTIME_UNSUBSCRIBED\":\n return RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return RealtimeSubscriptionStatus.UNRECOGNIZED;\n }\n}\nexport function realtimeSubscriptionStatusToJSON(object) {\n switch (object) {\n case RealtimeSubscriptionStatus.REALTIME_SUBSCRIBED:\n return 0;\n case RealtimeSubscriptionStatus.REALTIME_UNSUBSCRIBED:\n return 1;\n case RealtimeSubscriptionStatus.UNRECOGNIZED:\n default:\n return -1;\n }\n}\nfunction createBaseRealtimeSubscriptionsEffect() {\n return { subscriptionIds: [] };\n}\nexport const RealtimeSubscriptionsEffect = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionsEffect\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.subscriptionIds) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionsEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.subscriptionIds.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n subscriptionIds: globalThis.Array.isArray(object?.subscriptionIds)\n ? object.subscriptionIds.map((e) => globalThis.String(e))\n : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.subscriptionIds?.length) {\n obj.subscriptionIds = message.subscriptionIds;\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionsEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionsEffect();\n message.subscriptionIds = object.subscriptionIds?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionsEffect.$type, RealtimeSubscriptionsEffect);\nfunction createBaseRealtimeSubscriptionEvent() {\n return { event: undefined, status: undefined };\n}\nexport const RealtimeSubscriptionEvent = {\n $type: \"devvit.ui.effects.v1alpha.RealtimeSubscriptionEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.event !== undefined) {\n RealtimeEvent.encode(message.event, writer.uint32(10).fork()).ldelim();\n }\n if (message.status !== undefined) {\n writer.uint32(16).int32(message.status);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeSubscriptionEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.event = RealtimeEvent.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.status = reader.int32();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n event: isSet(object.event) ? RealtimeEvent.fromJSON(object.event) : undefined,\n status: isSet(object.status) ? realtimeSubscriptionStatusFromJSON(object.status) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.event !== undefined) {\n obj.event = RealtimeEvent.toJSON(message.event);\n }\n if (message.status !== undefined) {\n obj.status = realtimeSubscriptionStatusToJSON(message.status);\n }\n return obj;\n },\n create(base) {\n return RealtimeSubscriptionEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeSubscriptionEvent();\n message.event = (object.event !== undefined && object.event !== null)\n ? RealtimeEvent.fromPartial(object.event)\n : undefined;\n message.status = object.status ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeSubscriptionEvent.$type, RealtimeSubscriptionEvent);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #realtime.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { map } from \"rxjs/operators\";\nimport { Empty } from \"../../../google/protobuf/empty.js\";\nimport { Struct } from \"../../../google/protobuf/struct.js\";\nimport { messageTypeRegistry } from \"../../../typeRegistry.js\";\nfunction createBaseRealtimeRequest() {\n return { channels: [] };\n}\nexport const RealtimeRequest = {\n $type: \"devvit.events.v1alpha.RealtimeRequest\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.channels) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channels.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channels: globalThis.Array.isArray(object?.channels) ? object.channels.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channels?.length) {\n obj.channels = message.channels;\n }\n return obj;\n },\n create(base) {\n return RealtimeRequest.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeRequest();\n message.channels = object.channels?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeRequest.$type, RealtimeRequest);\nfunction createBaseRealtimeEvent() {\n return { channel: \"\", data: undefined };\n}\nexport const RealtimeEvent = {\n $type: \"devvit.events.v1alpha.RealtimeEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.channel !== \"\") {\n writer.uint32(10).string(message.channel);\n }\n if (message.data !== undefined) {\n Struct.encode(Struct.wrap(message.data), writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseRealtimeEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.channel = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.data = Struct.unwrap(Struct.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n channel: isSet(object.channel) ? globalThis.String(object.channel) : \"\",\n data: isObject(object.data) ? object.data : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.channel !== \"\") {\n obj.channel = message.channel;\n }\n if (message.data !== undefined) {\n obj.data = message.data;\n }\n return obj;\n },\n create(base) {\n return RealtimeEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseRealtimeEvent();\n message.channel = object.channel ?? \"\";\n message.data = object.data ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(RealtimeEvent.$type, RealtimeEvent);\nexport const RealtimeServiceName = \"devvit.events.v1alpha.Realtime\";\nexport class RealtimeClientImpl {\n constructor(rpc, opts) {\n this.service = opts?.service || RealtimeServiceName;\n this.rpc = rpc;\n this.Subscribe = this.Subscribe.bind(this);\n this.Send = this.Send.bind(this);\n }\n Subscribe(request, metadata) {\n const data = RealtimeRequest.encode(request).finish();\n const result = this.rpc.serverStreamingRequest(this.service, \"Subscribe\", data, metadata);\n return result.pipe(map((data) => RealtimeEvent.decode(_m0.Reader.create(data))));\n }\n Send(request, metadata) {\n const data = RealtimeEvent.encode(request).finish();\n const promise = this.rpc.request(this.service, \"Send\", data, metadata);\n return promise.then((data) => Empty.decode(_m0.Reader.create(data)));\n }\n}\nexport const RealtimeDefinition = {\n name: \"Realtime\",\n fullName: \"devvit.events.v1alpha.Realtime\",\n methods: {\n subscribe: {\n name: \"Subscribe\",\n requestType: RealtimeRequest,\n requestStream: false,\n responseType: RealtimeEvent,\n responseStream: true,\n options: {},\n },\n send: {\n name: \"Send\",\n requestType: RealtimeEvent,\n requestStream: false,\n responseType: Empty,\n responseStream: false,\n options: {},\n },\n },\n};\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #empty.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../typeRegistry.js\";\nfunction createBaseEmpty() {\n return {};\n}\nexport const Empty = {\n $type: \"google.protobuf.Empty\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseEmpty();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return Empty.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseEmpty();\n return message;\n },\n};\nmessageTypeRegistry.set(Empty.$type, Empty);\n", "/**\n * #show_form.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { Form } from \"../../form_builder/v1alpha/form.js\";\nimport { FormFieldValue } from \"../../form_builder/v1alpha/value.js\";\nfunction createBaseShowFormEffect() {\n return { form: undefined };\n}\nexport const ShowFormEffect = {\n $type: \"devvit.ui.effects.v1alpha.ShowFormEffect\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.form !== undefined) {\n Form.encode(message.form, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseShowFormEffect();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.form = Form.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { form: isSet(object.form) ? Form.fromJSON(object.form) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.form !== undefined) {\n obj.form = Form.toJSON(message.form);\n }\n return obj;\n },\n create(base) {\n return ShowFormEffect.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseShowFormEffect();\n message.form = (object.form !== undefined && object.form !== null) ? Form.fromPartial(object.form) : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(ShowFormEffect.$type, ShowFormEffect);\nfunction createBaseFormSubmittedEvent() {\n return { results: {}, formId: undefined };\n}\nexport const FormSubmittedEvent = {\n $type: \"devvit.ui.effects.v1alpha.FormSubmittedEvent\",\n encode(message, writer = _m0.Writer.create()) {\n Object.entries(message.results).forEach(([key, value]) => {\n FormSubmittedEvent_ResultsEntry.encode({ key: key, value }, writer.uint32(10).fork()).ldelim();\n });\n if (message.formId !== undefined) {\n writer.uint32(18).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n const entry1 = FormSubmittedEvent_ResultsEntry.decode(reader, reader.uint32());\n if (entry1.value !== undefined) {\n message.results[entry1.key] = entry1.value;\n }\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n results: isObject(object.results)\n ? Object.entries(object.results).reduce((acc, [key, value]) => {\n acc[key] = FormFieldValue.fromJSON(value);\n return acc;\n }, {})\n : {},\n formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.results) {\n const entries = Object.entries(message.results);\n if (entries.length > 0) {\n obj.results = {};\n entries.forEach(([k, v]) => {\n obj.results[k] = FormFieldValue.toJSON(v);\n });\n }\n }\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent();\n message.results = Object.entries(object.results ?? {}).reduce((acc, [key, value]) => {\n if (value !== undefined) {\n acc[key] = FormFieldValue.fromPartial(value);\n }\n return acc;\n }, {});\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent.$type, FormSubmittedEvent);\nfunction createBaseFormSubmittedEvent_ResultsEntry() {\n return { key: \"\", value: undefined };\n}\nexport const FormSubmittedEvent_ResultsEntry = {\n $type: \"devvit.ui.effects.v1alpha.FormSubmittedEvent.ResultsEntry\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.key !== \"\") {\n writer.uint32(10).string(message.key);\n }\n if (message.value !== undefined) {\n FormFieldValue.encode(message.value, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.key = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = FormFieldValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n value: isSet(object.value) ? FormFieldValue.fromJSON(object.value) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.key !== \"\") {\n obj.key = message.key;\n }\n if (message.value !== undefined) {\n obj.value = FormFieldValue.toJSON(message.value);\n }\n return obj;\n },\n create(base) {\n return FormSubmittedEvent_ResultsEntry.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormSubmittedEvent_ResultsEntry();\n message.key = object.key ?? \"\";\n message.value = (object.value !== undefined && object.value !== null)\n ? FormFieldValue.fromPartial(object.value)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormSubmittedEvent_ResultsEntry.$type, FormSubmittedEvent_ResultsEntry);\nfunction createBaseFormCanceledEvent() {\n return { formId: undefined };\n}\nexport const FormCanceledEvent = {\n $type: \"devvit.ui.effects.v1alpha.FormCanceledEvent\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.formId !== undefined) {\n writer.uint32(10).string(message.formId);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormCanceledEvent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.formId = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return { formId: isSet(object.formId) ? globalThis.String(object.formId) : undefined };\n },\n toJSON(message) {\n const obj = {};\n if (message.formId !== undefined) {\n obj.formId = message.formId;\n }\n return obj;\n },\n create(base) {\n return FormCanceledEvent.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormCanceledEvent();\n message.formId = object.formId ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormCanceledEvent.$type, FormCanceledEvent);\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #form.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { FormField } from \"./field.js\";\nfunction createBaseForm() {\n return {\n fields: [],\n title: undefined,\n shortDescription: undefined,\n acceptLabel: undefined,\n cancelLabel: undefined,\n id: undefined,\n };\n}\nexport const Form = {\n $type: \"devvit.ui.form_builder.v1alpha.Form\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.title !== undefined) {\n writer.uint32(18).string(message.title);\n }\n if (message.shortDescription !== undefined) {\n writer.uint32(26).string(message.shortDescription);\n }\n if (message.acceptLabel !== undefined) {\n writer.uint32(34).string(message.acceptLabel);\n }\n if (message.cancelLabel !== undefined) {\n writer.uint32(42).string(message.cancelLabel);\n }\n if (message.id !== undefined) {\n writer.uint32(50).string(message.id);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseForm();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.title = reader.string();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.shortDescription = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.acceptLabel = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.cancelLabel = reader.string();\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.id = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n title: isSet(object.title) ? globalThis.String(object.title) : undefined,\n shortDescription: isSet(object.shortDescription) ? globalThis.String(object.shortDescription) : undefined,\n acceptLabel: isSet(object.acceptLabel) ? globalThis.String(object.acceptLabel) : undefined,\n cancelLabel: isSet(object.cancelLabel) ? globalThis.String(object.cancelLabel) : undefined,\n id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n if (message.title !== undefined) {\n obj.title = message.title;\n }\n if (message.shortDescription !== undefined) {\n obj.shortDescription = message.shortDescription;\n }\n if (message.acceptLabel !== undefined) {\n obj.acceptLabel = message.acceptLabel;\n }\n if (message.cancelLabel !== undefined) {\n obj.cancelLabel = message.cancelLabel;\n }\n if (message.id !== undefined) {\n obj.id = message.id;\n }\n return obj;\n },\n create(base) {\n return Form.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseForm();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n message.title = object.title ?? undefined;\n message.shortDescription = object.shortDescription ?? undefined;\n message.acceptLabel = object.acceptLabel ?? undefined;\n message.cancelLabel = object.cancelLabel ?? undefined;\n message.id = object.id ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(Form.$type, Form);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #field.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nimport { FormFieldValue } from \"./value.js\";\nfunction createBaseFormField() {\n return {\n fieldId: \"\",\n fieldType: 0,\n label: \"\",\n helpText: undefined,\n defaultValue: undefined,\n required: undefined,\n disabled: undefined,\n fieldConfig: undefined,\n isSecret: undefined,\n };\n}\nexport const FormField = {\n $type: \"devvit.ui.form_builder.v1alpha.FormField\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldId !== \"\") {\n writer.uint32(10).string(message.fieldId);\n }\n if (message.fieldType !== 0) {\n writer.uint32(16).int32(message.fieldType);\n }\n if (message.label !== \"\") {\n writer.uint32(26).string(message.label);\n }\n if (message.helpText !== undefined) {\n writer.uint32(34).string(message.helpText);\n }\n if (message.defaultValue !== undefined) {\n FormFieldValue.encode(message.defaultValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.required !== undefined) {\n writer.uint32(48).bool(message.required);\n }\n if (message.disabled !== undefined) {\n writer.uint32(56).bool(message.disabled);\n }\n if (message.fieldConfig !== undefined) {\n FieldConfig.encode(message.fieldConfig, writer.uint32(66).fork()).ldelim();\n }\n if (message.isSecret !== undefined) {\n writer.uint32(72).bool(message.isSecret);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormField();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fieldId = reader.string();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.label = reader.string();\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.helpText = reader.string();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.defaultValue = FormFieldValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 48) {\n break;\n }\n message.required = reader.bool();\n continue;\n case 7:\n if (tag !== 56) {\n break;\n }\n message.disabled = reader.bool();\n continue;\n case 8:\n if (tag !== 66) {\n break;\n }\n message.fieldConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 9:\n if (tag !== 72) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldId: isSet(object.fieldId) ? globalThis.String(object.fieldId) : \"\",\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n helpText: isSet(object.helpText) ? globalThis.String(object.helpText) : undefined,\n defaultValue: isSet(object.defaultValue) ? FormFieldValue.fromJSON(object.defaultValue) : undefined,\n required: isSet(object.required) ? globalThis.Boolean(object.required) : undefined,\n disabled: isSet(object.disabled) ? globalThis.Boolean(object.disabled) : undefined,\n fieldConfig: isSet(object.fieldConfig) ? FieldConfig.fromJSON(object.fieldConfig) : undefined,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldId !== \"\") {\n obj.fieldId = message.fieldId;\n }\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.helpText !== undefined) {\n obj.helpText = message.helpText;\n }\n if (message.defaultValue !== undefined) {\n obj.defaultValue = FormFieldValue.toJSON(message.defaultValue);\n }\n if (message.required !== undefined) {\n obj.required = message.required;\n }\n if (message.disabled !== undefined) {\n obj.disabled = message.disabled;\n }\n if (message.fieldConfig !== undefined) {\n obj.fieldConfig = FieldConfig.toJSON(message.fieldConfig);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n return obj;\n },\n create(base) {\n return FormField.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormField();\n message.fieldId = object.fieldId ?? \"\";\n message.fieldType = object.fieldType ?? 0;\n message.label = object.label ?? \"\";\n message.helpText = object.helpText ?? undefined;\n message.defaultValue = (object.defaultValue !== undefined && object.defaultValue !== null)\n ? FormFieldValue.fromPartial(object.defaultValue)\n : undefined;\n message.required = object.required ?? undefined;\n message.disabled = object.disabled ?? undefined;\n message.fieldConfig = (object.fieldConfig !== undefined && object.fieldConfig !== null)\n ? FieldConfig.fromPartial(object.fieldConfig)\n : undefined;\n message.isSecret = object.isSecret ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormField.$type, FormField);\nfunction createBaseFieldConfig() {\n return {\n stringConfig: undefined,\n paragraphConfig: undefined,\n numberConfig: undefined,\n booleanConfig: undefined,\n listConfig: undefined,\n selectionConfig: undefined,\n groupConfig: undefined,\n };\n}\nexport const FieldConfig = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.stringConfig !== undefined) {\n FieldConfig_String.encode(message.stringConfig, writer.uint32(10).fork()).ldelim();\n }\n if (message.paragraphConfig !== undefined) {\n FieldConfig_Paragraph.encode(message.paragraphConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.numberConfig !== undefined) {\n FieldConfig_Number.encode(message.numberConfig, writer.uint32(26).fork()).ldelim();\n }\n if (message.booleanConfig !== undefined) {\n FieldConfig_Boolean.encode(message.booleanConfig, writer.uint32(34).fork()).ldelim();\n }\n if (message.listConfig !== undefined) {\n FieldConfig_List.encode(message.listConfig, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionConfig !== undefined) {\n FieldConfig_Selection.encode(message.selectionConfig, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupConfig !== undefined) {\n FieldConfig_Group.encode(message.groupConfig, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.stringConfig = FieldConfig_String.decode(reader, reader.uint32());\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.paragraphConfig = FieldConfig_Paragraph.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.numberConfig = FieldConfig_Number.decode(reader, reader.uint32());\n continue;\n case 4:\n if (tag !== 34) {\n break;\n }\n message.booleanConfig = FieldConfig_Boolean.decode(reader, reader.uint32());\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listConfig = FieldConfig_List.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionConfig = FieldConfig_Selection.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupConfig = FieldConfig_Group.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n stringConfig: isSet(object.stringConfig) ? FieldConfig_String.fromJSON(object.stringConfig) : undefined,\n paragraphConfig: isSet(object.paragraphConfig)\n ? FieldConfig_Paragraph.fromJSON(object.paragraphConfig)\n : undefined,\n numberConfig: isSet(object.numberConfig) ? FieldConfig_Number.fromJSON(object.numberConfig) : undefined,\n booleanConfig: isSet(object.booleanConfig) ? FieldConfig_Boolean.fromJSON(object.booleanConfig) : undefined,\n listConfig: isSet(object.listConfig) ? FieldConfig_List.fromJSON(object.listConfig) : undefined,\n selectionConfig: isSet(object.selectionConfig)\n ? FieldConfig_Selection.fromJSON(object.selectionConfig)\n : undefined,\n groupConfig: isSet(object.groupConfig) ? FieldConfig_Group.fromJSON(object.groupConfig) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.stringConfig !== undefined) {\n obj.stringConfig = FieldConfig_String.toJSON(message.stringConfig);\n }\n if (message.paragraphConfig !== undefined) {\n obj.paragraphConfig = FieldConfig_Paragraph.toJSON(message.paragraphConfig);\n }\n if (message.numberConfig !== undefined) {\n obj.numberConfig = FieldConfig_Number.toJSON(message.numberConfig);\n }\n if (message.booleanConfig !== undefined) {\n obj.booleanConfig = FieldConfig_Boolean.toJSON(message.booleanConfig);\n }\n if (message.listConfig !== undefined) {\n obj.listConfig = FieldConfig_List.toJSON(message.listConfig);\n }\n if (message.selectionConfig !== undefined) {\n obj.selectionConfig = FieldConfig_Selection.toJSON(message.selectionConfig);\n }\n if (message.groupConfig !== undefined) {\n obj.groupConfig = FieldConfig_Group.toJSON(message.groupConfig);\n }\n return obj;\n },\n create(base) {\n return FieldConfig.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig();\n message.stringConfig = (object.stringConfig !== undefined && object.stringConfig !== null)\n ? FieldConfig_String.fromPartial(object.stringConfig)\n : undefined;\n message.paragraphConfig = (object.paragraphConfig !== undefined && object.paragraphConfig !== null)\n ? FieldConfig_Paragraph.fromPartial(object.paragraphConfig)\n : undefined;\n message.numberConfig = (object.numberConfig !== undefined && object.numberConfig !== null)\n ? FieldConfig_Number.fromPartial(object.numberConfig)\n : undefined;\n message.booleanConfig = (object.booleanConfig !== undefined && object.booleanConfig !== null)\n ? FieldConfig_Boolean.fromPartial(object.booleanConfig)\n : undefined;\n message.listConfig = (object.listConfig !== undefined && object.listConfig !== null)\n ? FieldConfig_List.fromPartial(object.listConfig)\n : undefined;\n message.selectionConfig = (object.selectionConfig !== undefined && object.selectionConfig !== null)\n ? FieldConfig_Selection.fromPartial(object.selectionConfig)\n : undefined;\n message.groupConfig = (object.groupConfig !== undefined && object.groupConfig !== null)\n ? FieldConfig_Group.fromPartial(object.groupConfig)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig.$type, FieldConfig);\nfunction createBaseFieldConfig_String() {\n return { minLength: undefined, maxLength: undefined, placeholder: undefined };\n}\nexport const FieldConfig_String = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.String\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.minLength !== undefined) {\n writer.uint32(8).int32(message.minLength);\n }\n if (message.maxLength !== undefined) {\n writer.uint32(16).int32(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_String();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.minLength = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.maxLength = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n minLength: isSet(object.minLength) ? globalThis.Number(object.minLength) : undefined,\n maxLength: isSet(object.maxLength) ? globalThis.Number(object.maxLength) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.minLength !== undefined) {\n obj.minLength = Math.round(message.minLength);\n }\n if (message.maxLength !== undefined) {\n obj.maxLength = Math.round(message.maxLength);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_String.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_String();\n message.minLength = object.minLength ?? undefined;\n message.maxLength = object.maxLength ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_String.$type, FieldConfig_String);\nfunction createBaseFieldConfig_Paragraph() {\n return { maxCharacters: undefined, lineHeight: undefined, placeholder: undefined };\n}\nexport const FieldConfig_Paragraph = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Paragraph\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.maxCharacters !== undefined) {\n writer.uint32(8).int32(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n writer.uint32(16).int32(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n writer.uint32(26).string(message.placeholder);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Paragraph();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.maxCharacters = reader.int32();\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.lineHeight = reader.int32();\n continue;\n case 3:\n if (tag !== 26) {\n break;\n }\n message.placeholder = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n maxCharacters: isSet(object.maxCharacters) ? globalThis.Number(object.maxCharacters) : undefined,\n lineHeight: isSet(object.lineHeight) ? globalThis.Number(object.lineHeight) : undefined,\n placeholder: isSet(object.placeholder) ? globalThis.String(object.placeholder) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.maxCharacters !== undefined) {\n obj.maxCharacters = Math.round(message.maxCharacters);\n }\n if (message.lineHeight !== undefined) {\n obj.lineHeight = Math.round(message.lineHeight);\n }\n if (message.placeholder !== undefined) {\n obj.placeholder = message.placeholder;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Paragraph.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Paragraph();\n message.maxCharacters = object.maxCharacters ?? undefined;\n message.lineHeight = object.lineHeight ?? undefined;\n message.placeholder = object.placeholder ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Paragraph.$type, FieldConfig_Paragraph);\nfunction createBaseFieldConfig_Number() {\n return { step: undefined, min: undefined, max: undefined };\n}\nexport const FieldConfig_Number = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Number\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.step !== undefined) {\n writer.uint32(9).double(message.step);\n }\n if (message.min !== undefined) {\n writer.uint32(17).double(message.min);\n }\n if (message.max !== undefined) {\n writer.uint32(25).double(message.max);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Number();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 9) {\n break;\n }\n message.step = reader.double();\n continue;\n case 2:\n if (tag !== 17) {\n break;\n }\n message.min = reader.double();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.max = reader.double();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n step: isSet(object.step) ? globalThis.Number(object.step) : undefined,\n min: isSet(object.min) ? globalThis.Number(object.min) : undefined,\n max: isSet(object.max) ? globalThis.Number(object.max) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.step !== undefined) {\n obj.step = message.step;\n }\n if (message.min !== undefined) {\n obj.min = message.min;\n }\n if (message.max !== undefined) {\n obj.max = message.max;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Number.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Number();\n message.step = object.step ?? undefined;\n message.min = object.min ?? undefined;\n message.max = object.max ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Number.$type, FieldConfig_Number);\nfunction createBaseFieldConfig_Boolean() {\n return {};\n}\nexport const FieldConfig_Boolean = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Boolean\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Boolean();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FieldConfig_Boolean.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFieldConfig_Boolean();\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Boolean.$type, FieldConfig_Boolean);\nfunction createBaseFieldConfig_List() {\n return { itemType: 0, itemConfig: undefined, minEntries: undefined, maxEntries: undefined, entryLabel: undefined };\n}\nexport const FieldConfig_List = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.List\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n FieldConfig.encode(message.itemConfig, writer.uint32(18).fork()).ldelim();\n }\n if (message.minEntries !== undefined) {\n writer.uint32(24).int32(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n writer.uint32(32).int32(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n writer.uint32(42).string(message.entryLabel);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_List();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.itemConfig = FieldConfig.decode(reader, reader.uint32());\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minEntries = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxEntries = reader.int32();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.entryLabel = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n itemConfig: isSet(object.itemConfig) ? FieldConfig.fromJSON(object.itemConfig) : undefined,\n minEntries: isSet(object.minEntries) ? globalThis.Number(object.minEntries) : undefined,\n maxEntries: isSet(object.maxEntries) ? globalThis.Number(object.maxEntries) : undefined,\n entryLabel: isSet(object.entryLabel) ? globalThis.String(object.entryLabel) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.itemConfig !== undefined) {\n obj.itemConfig = FieldConfig.toJSON(message.itemConfig);\n }\n if (message.minEntries !== undefined) {\n obj.minEntries = Math.round(message.minEntries);\n }\n if (message.maxEntries !== undefined) {\n obj.maxEntries = Math.round(message.maxEntries);\n }\n if (message.entryLabel !== undefined) {\n obj.entryLabel = message.entryLabel;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_List.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_List();\n message.itemType = object.itemType ?? 0;\n message.itemConfig = (object.itemConfig !== undefined && object.itemConfig !== null)\n ? FieldConfig.fromPartial(object.itemConfig)\n : undefined;\n message.minEntries = object.minEntries ?? undefined;\n message.maxEntries = object.maxEntries ?? undefined;\n message.entryLabel = object.entryLabel ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_List.$type, FieldConfig_List);\nfunction createBaseFieldConfig_Selection() {\n return {\n choices: [],\n multiSelect: undefined,\n minSelections: undefined,\n maxSelections: undefined,\n renderAsList: undefined,\n };\n}\nexport const FieldConfig_Selection = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.choices) {\n FieldConfig_Selection_Item.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.multiSelect !== undefined) {\n writer.uint32(16).bool(message.multiSelect);\n }\n if (message.minSelections !== undefined) {\n writer.uint32(24).int32(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n writer.uint32(32).int32(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n writer.uint32(40).bool(message.renderAsList);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.choices.push(FieldConfig_Selection_Item.decode(reader, reader.uint32()));\n continue;\n case 2:\n if (tag !== 16) {\n break;\n }\n message.multiSelect = reader.bool();\n continue;\n case 3:\n if (tag !== 24) {\n break;\n }\n message.minSelections = reader.int32();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.maxSelections = reader.int32();\n continue;\n case 5:\n if (tag !== 40) {\n break;\n }\n message.renderAsList = reader.bool();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n choices: globalThis.Array.isArray(object?.choices)\n ? object.choices.map((e) => FieldConfig_Selection_Item.fromJSON(e))\n : [],\n multiSelect: isSet(object.multiSelect) ? globalThis.Boolean(object.multiSelect) : undefined,\n minSelections: isSet(object.minSelections) ? globalThis.Number(object.minSelections) : undefined,\n maxSelections: isSet(object.maxSelections) ? globalThis.Number(object.maxSelections) : undefined,\n renderAsList: isSet(object.renderAsList) ? globalThis.Boolean(object.renderAsList) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.choices?.length) {\n obj.choices = message.choices.map((e) => FieldConfig_Selection_Item.toJSON(e));\n }\n if (message.multiSelect !== undefined) {\n obj.multiSelect = message.multiSelect;\n }\n if (message.minSelections !== undefined) {\n obj.minSelections = Math.round(message.minSelections);\n }\n if (message.maxSelections !== undefined) {\n obj.maxSelections = Math.round(message.maxSelections);\n }\n if (message.renderAsList !== undefined) {\n obj.renderAsList = message.renderAsList;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection();\n message.choices = object.choices?.map((e) => FieldConfig_Selection_Item.fromPartial(e)) || [];\n message.multiSelect = object.multiSelect ?? undefined;\n message.minSelections = object.minSelections ?? undefined;\n message.maxSelections = object.maxSelections ?? undefined;\n message.renderAsList = object.renderAsList ?? undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection.$type, FieldConfig_Selection);\nfunction createBaseFieldConfig_Selection_Item() {\n return { label: \"\", value: \"\" };\n}\nexport const FieldConfig_Selection_Item = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Selection.Item\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.label !== \"\") {\n writer.uint32(10).string(message.label);\n }\n if (message.value !== \"\") {\n writer.uint32(18).string(message.value);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Selection_Item();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.label = reader.string();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.value = reader.string();\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n label: isSet(object.label) ? globalThis.String(object.label) : \"\",\n value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.label !== \"\") {\n obj.label = message.label;\n }\n if (message.value !== \"\") {\n obj.value = message.value;\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Selection_Item.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Selection_Item();\n message.label = object.label ?? \"\";\n message.value = object.value ?? \"\";\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Selection_Item.$type, FieldConfig_Selection_Item);\nfunction createBaseFieldConfig_Group() {\n return { fields: [] };\n}\nexport const FieldConfig_Group = {\n $type: \"devvit.ui.form_builder.v1alpha.FieldConfig.Group\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.fields) {\n FormField.encode(v, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFieldConfig_Group();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.fields.push(FormField.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fields: globalThis.Array.isArray(object?.fields) ? object.fields.map((e) => FormField.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fields?.length) {\n obj.fields = message.fields.map((e) => FormField.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FieldConfig_Group.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFieldConfig_Group();\n message.fields = object.fields?.map((e) => FormField.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FieldConfig_Group.$type, FieldConfig_Group);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "/**\n * #type.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nexport var FormFieldType;\n(function (FormFieldType) {\n /** STRING - Single-line string */\n FormFieldType[FormFieldType[\"STRING\"] = 0] = \"STRING\";\n /** PARAGRAPH - Multi-line string */\n FormFieldType[FormFieldType[\"PARAGRAPH\"] = 1] = \"PARAGRAPH\";\n /** NUMBER - Number input */\n FormFieldType[FormFieldType[\"NUMBER\"] = 2] = \"NUMBER\";\n /** BOOLEAN - Checkbox, switch */\n FormFieldType[FormFieldType[\"BOOLEAN\"] = 3] = \"BOOLEAN\";\n /** LIST - Collect multiple entries of a single type */\n FormFieldType[FormFieldType[\"LIST\"] = 4] = \"LIST\";\n /** SELECTION - Provide a list of options for the user to choose from */\n FormFieldType[FormFieldType[\"SELECTION\"] = 5] = \"SELECTION\";\n /** GROUP - Create a labeled subsection of the form with nested fields */\n FormFieldType[FormFieldType[\"GROUP\"] = 6] = \"GROUP\";\n /** IMAGE - Image upload - value is a URL for the uploaded image */\n FormFieldType[FormFieldType[\"IMAGE\"] = 7] = \"IMAGE\";\n FormFieldType[FormFieldType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FormFieldType || (FormFieldType = {}));\nexport function formFieldTypeFromJSON(object) {\n switch (object) {\n case 0:\n case \"STRING\":\n return FormFieldType.STRING;\n case 1:\n case \"PARAGRAPH\":\n return FormFieldType.PARAGRAPH;\n case 2:\n case \"NUMBER\":\n return FormFieldType.NUMBER;\n case 3:\n case \"BOOLEAN\":\n return FormFieldType.BOOLEAN;\n case 4:\n case \"LIST\":\n return FormFieldType.LIST;\n case 5:\n case \"SELECTION\":\n return FormFieldType.SELECTION;\n case 6:\n case \"GROUP\":\n return FormFieldType.GROUP;\n case 7:\n case \"IMAGE\":\n return FormFieldType.IMAGE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return FormFieldType.UNRECOGNIZED;\n }\n}\nexport function formFieldTypeToJSON(object) {\n switch (object) {\n case FormFieldType.STRING:\n return 0;\n case FormFieldType.PARAGRAPH:\n return 1;\n case FormFieldType.NUMBER:\n return 2;\n case FormFieldType.BOOLEAN:\n return 3;\n case FormFieldType.LIST:\n return 4;\n case FormFieldType.SELECTION:\n return 5;\n case FormFieldType.GROUP:\n return 6;\n case FormFieldType.IMAGE:\n return 7;\n case FormFieldType.UNRECOGNIZED:\n default:\n return -1;\n }\n}\n", "/**\n * #value.ts\n *\n * @packageDocumentation\n */\n/* eslint-disable */\nimport _m0 from \"protobufjs/minimal.js\";\nimport { messageTypeRegistry } from \"../../../../typeRegistry.js\";\nimport { formFieldTypeFromJSON, formFieldTypeToJSON } from \"./type.js\";\nfunction createBaseFormFieldValue() {\n return {\n fieldType: 0,\n isSecret: undefined,\n stringValue: undefined,\n numberValue: undefined,\n boolValue: undefined,\n listValue: undefined,\n selectionValue: undefined,\n groupValue: undefined,\n };\n}\nexport const FormFieldValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.fieldType !== 0) {\n writer.uint32(8).int32(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n writer.uint32(800).bool(message.isSecret);\n }\n if (message.stringValue !== undefined) {\n writer.uint32(18).string(message.stringValue);\n }\n if (message.numberValue !== undefined) {\n writer.uint32(25).double(message.numberValue);\n }\n if (message.boolValue !== undefined) {\n writer.uint32(32).bool(message.boolValue);\n }\n if (message.listValue !== undefined) {\n FormFieldValue_ListValue.encode(message.listValue, writer.uint32(42).fork()).ldelim();\n }\n if (message.selectionValue !== undefined) {\n FormFieldValue_SelectionValue.encode(message.selectionValue, writer.uint32(50).fork()).ldelim();\n }\n if (message.groupValue !== undefined) {\n FormFieldValue_GroupValue.encode(message.groupValue, writer.uint32(58).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.fieldType = reader.int32();\n continue;\n case 100:\n if (tag !== 800) {\n break;\n }\n message.isSecret = reader.bool();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.stringValue = reader.string();\n continue;\n case 3:\n if (tag !== 25) {\n break;\n }\n message.numberValue = reader.double();\n continue;\n case 4:\n if (tag !== 32) {\n break;\n }\n message.boolValue = reader.bool();\n continue;\n case 5:\n if (tag !== 42) {\n break;\n }\n message.listValue = FormFieldValue_ListValue.decode(reader, reader.uint32());\n continue;\n case 6:\n if (tag !== 50) {\n break;\n }\n message.selectionValue = FormFieldValue_SelectionValue.decode(reader, reader.uint32());\n continue;\n case 7:\n if (tag !== 58) {\n break;\n }\n message.groupValue = FormFieldValue_GroupValue.decode(reader, reader.uint32());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n fieldType: isSet(object.fieldType) ? formFieldTypeFromJSON(object.fieldType) : 0,\n isSecret: isSet(object.isSecret) ? globalThis.Boolean(object.isSecret) : undefined,\n stringValue: isSet(object.stringValue) ? globalThis.String(object.stringValue) : undefined,\n numberValue: isSet(object.numberValue) ? globalThis.Number(object.numberValue) : undefined,\n boolValue: isSet(object.boolValue) ? globalThis.Boolean(object.boolValue) : undefined,\n listValue: isSet(object.listValue) ? FormFieldValue_ListValue.fromJSON(object.listValue) : undefined,\n selectionValue: isSet(object.selectionValue)\n ? FormFieldValue_SelectionValue.fromJSON(object.selectionValue)\n : undefined,\n groupValue: isSet(object.groupValue) ? FormFieldValue_GroupValue.fromJSON(object.groupValue) : undefined,\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.fieldType !== 0) {\n obj.fieldType = formFieldTypeToJSON(message.fieldType);\n }\n if (message.isSecret !== undefined) {\n obj.isSecret = message.isSecret;\n }\n if (message.stringValue !== undefined) {\n obj.stringValue = message.stringValue;\n }\n if (message.numberValue !== undefined) {\n obj.numberValue = message.numberValue;\n }\n if (message.boolValue !== undefined) {\n obj.boolValue = message.boolValue;\n }\n if (message.listValue !== undefined) {\n obj.listValue = FormFieldValue_ListValue.toJSON(message.listValue);\n }\n if (message.selectionValue !== undefined) {\n obj.selectionValue = FormFieldValue_SelectionValue.toJSON(message.selectionValue);\n }\n if (message.groupValue !== undefined) {\n obj.groupValue = FormFieldValue_GroupValue.toJSON(message.groupValue);\n }\n return obj;\n },\n create(base) {\n return FormFieldValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue();\n message.fieldType = object.fieldType ?? 0;\n message.isSecret = object.isSecret ?? undefined;\n message.stringValue = object.stringValue ?? undefined;\n message.numberValue = object.numberValue ?? undefined;\n message.boolValue = object.boolValue ?? undefined;\n message.listValue = (object.listValue !== undefined && object.listValue !== null)\n ? FormFieldValue_ListValue.fromPartial(object.listValue)\n : undefined;\n message.selectionValue = (object.selectionValue !== undefined && object.selectionValue !== null)\n ? FormFieldValue_SelectionValue.fromPartial(object.selectionValue)\n : undefined;\n message.groupValue = (object.groupValue !== undefined && object.groupValue !== null)\n ? FormFieldValue_GroupValue.fromPartial(object.groupValue)\n : undefined;\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue.$type, FormFieldValue);\nfunction createBaseFormFieldValue_ListValue() {\n return { itemType: 0, items: [] };\n}\nexport const FormFieldValue_ListValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.ListValue\",\n encode(message, writer = _m0.Writer.create()) {\n if (message.itemType !== 0) {\n writer.uint32(8).int32(message.itemType);\n }\n for (const v of message.items) {\n FormFieldValue.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_ListValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 8) {\n break;\n }\n message.itemType = reader.int32();\n continue;\n case 2:\n if (tag !== 18) {\n break;\n }\n message.items.push(FormFieldValue.decode(reader, reader.uint32()));\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n itemType: isSet(object.itemType) ? formFieldTypeFromJSON(object.itemType) : 0,\n items: globalThis.Array.isArray(object?.items) ? object.items.map((e) => FormFieldValue.fromJSON(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.itemType !== 0) {\n obj.itemType = formFieldTypeToJSON(message.itemType);\n }\n if (message.items?.length) {\n obj.items = message.items.map((e) => FormFieldValue.toJSON(e));\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_ListValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_ListValue();\n message.itemType = object.itemType ?? 0;\n message.items = object.items?.map((e) => FormFieldValue.fromPartial(e)) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_ListValue.$type, FormFieldValue_ListValue);\nfunction createBaseFormFieldValue_SelectionValue() {\n return { values: [] };\n}\nexport const FormFieldValue_SelectionValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.SelectionValue\",\n encode(message, writer = _m0.Writer.create()) {\n for (const v of message.values) {\n writer.uint32(10).string(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_SelectionValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (tag !== 10) {\n break;\n }\n message.values.push(reader.string());\n continue;\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(object) {\n return {\n values: globalThis.Array.isArray(object?.values) ? object.values.map((e) => globalThis.String(e)) : [],\n };\n },\n toJSON(message) {\n const obj = {};\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n create(base) {\n return FormFieldValue_SelectionValue.fromPartial(base ?? {});\n },\n fromPartial(object) {\n const message = createBaseFormFieldValue_SelectionValue();\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_SelectionValue.$type, FormFieldValue_SelectionValue);\nfunction createBaseFormFieldValue_GroupValue() {\n return {};\n}\nexport const FormFieldValue_GroupValue = {\n $type: \"devvit.ui.form_builder.v1alpha.FormFieldValue.GroupValue\",\n encode(_, writer = _m0.Writer.create()) {\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFormFieldValue_GroupValue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skipType(tag & 7);\n }\n return message;\n },\n fromJSON(_) {\n return {};\n },\n toJSON(_) {\n const obj = {};\n return obj;\n },\n create(base) {\n return FormFieldValue_GroupValue.fromPartial(base ?? {});\n },\n fromPartial(_) {\n const message = createBaseFormFieldValue_GroupValue();\n return message;\n },\n};\nmessageTypeRegistry.set(FormFieldValue_GroupValue.$type, FormFieldValue_GroupValue);\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\n\nexport const EFFECTS_WITH_RESPONSE: readonly EffectType[] = [\n 3 satisfies EffectType.EFFECT_SHOW_FORM,\n];\n", "import type { Effect } from '@devvit/protos';\nimport type {\n WebViewInternalMessage,\n WebViewInternalMessageScope,\n} from '@devvit/protos/types/devvit/ui/effects/web_view/v1alpha/post_message.js';\nimport { WebViewInternalEventMessage } from '@devvit/protos/types/devvit/ui/events/v1alpha/web_view.js';\n\nimport { EFFECTS_WITH_RESPONSE } from './constants.js';\n\n/**\n * Emits an effect to the parent window and handles the response if required.\n *\n * @param effect - The effect to be emitted to the parent window\n * @returns A promise that resolves with the response message for effects that require\n * a response, or resolves immediately with undefined for effects that don't\n *\n * @description\n * This function handles two types of effects:\n * 1. Effects that require a response: Creates a unique ID, sets up a message listener,\n * and resolves the promise when a matching response is received\n * 2. Effects that don't require a response: Posts the message and resolves immediately\n */\nexport const emitEffect = (effect: Effect): Promise<WebViewInternalEventMessage | undefined> => {\n return new Promise<WebViewInternalEventMessage | undefined>((resolve) => {\n const message: WebViewInternalMessage = {\n scope: 0 satisfies WebViewInternalMessageScope.CLIENT,\n type: 'devvit-internal',\n };\n if (effect.realtimeSubscriptions) {\n message.realtimeEffect = effect.realtimeSubscriptions;\n } else {\n message.effect = effect;\n }\n\n // Only set message id and add a listener for effects which require a response\n if (EFFECTS_WITH_RESPONSE.includes(effect.type)) {\n const id = self.crypto.randomUUID();\n message.id = id;\n\n const handleEffect = (event: MessageEvent): void => {\n if (event.data?.type === 'devvit-message' && event.data?.data?.id === id) {\n const serializedMessage = WebViewInternalEventMessage.fromJSON(event.data.data);\n resolve(serializedMessage);\n window.removeEventListener('message', handleEffect);\n }\n };\n window.addEventListener('message', handleEffect);\n\n // Post message to the parent window, handled by client web view component\n window.parent.postMessage(message, '*');\n } else {\n window.parent.postMessage(message, '*');\n // Resolve immediately for effects that don't expect a response.\n resolve(undefined);\n }\n });\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type { Comment, Post, Subreddit, User } from '@devvit/reddit';\n\nimport { emitEffect } from './emit-effect.js';\n\n/**\n * Navigates to a URL, subreddit, post, comment, or user.\n *\n * @param thingOrUrl - The URL, subreddit, post, comment, or user to navigate to\n */\nexport function navigateTo(url: string): void;\nexport function navigateTo(subreddit: Readonly<Subreddit>): void;\nexport function navigateTo(post: Readonly<Post>): void;\nexport function navigateTo(comment: Readonly<Comment>): void;\nexport function navigateTo(user: Readonly<User>): void;\nexport function navigateTo(\n thingOrUrl: string | Readonly<Subreddit> | Readonly<Post> | Readonly<Comment> | Readonly<User>\n): void {\n let url: string;\n\n if (typeof thingOrUrl === 'string') {\n // Validate URL\n url = new URL(thingOrUrl).toString();\n } else {\n url = new URL(thingOrUrl.url).toString();\n }\n\n void emitEffect({\n navigateToUrl: {\n url,\n },\n type: 5 satisfies EffectType.EFFECT_NAVIGATE_TO_URL,\n });\n}\n", "import type { FormField, SettingScope } from './form-types.js';\n\n/**\n * Make sure that the form fields have unique names.\n *\n * This is a carbon copy of the assertValidFormFields function in the public-api package\n * We copy it here so that @devvit/client does not need to depend on public-api\n * Any changes to this function should be reflected in the public-api version\n */\nexport function assertValidFormFields(\n fields: readonly FormField[],\n seenNames: Set<string> = new Set()\n): void {\n for (const field of fields) {\n if (field.type === 'group') {\n assertValidFormFields(field.fields, seenNames);\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldName = (field as any).name as string;\n\n if (seenNames.has(fieldName)) {\n throw new Error(`Duplicate field name: ${fieldName}`);\n }\n\n seenNames.add(fieldName);\n }\n assertAppSecretsOnly(fields);\n}\n\nexport function assertAppSecretsOnly(fields: readonly FormField[]): void {\n for (const field of fields) {\n if (field.type === 'string' && field.isSecret && field.scope !== ('app' as SettingScope.App)) {\n throw `Invalid setting: only app settings can be secrets. Add \"scope: SettingScope.App\" to field \"${field.name}\"`;\n }\n }\n}\n", "import type { FormFieldType, FormFieldValue } from '@devvit/protos';\n\nimport type { FormValues } from './form-types.js';\n\nfunction flattenFormFieldValue(\n value: FormFieldValue\n): undefined | string | string[] | number | boolean {\n switch (value.fieldType) {\n case 0 satisfies FormFieldType.STRING:\n return value.stringValue;\n case 7 satisfies FormFieldType.IMAGE:\n // the string value is the URL\n return value.stringValue;\n case 1 satisfies FormFieldType.PARAGRAPH:\n return value.stringValue;\n case 2 satisfies FormFieldType.NUMBER:\n return value.numberValue;\n case 3 satisfies FormFieldType.BOOLEAN:\n return value.boolValue;\n case 5 satisfies FormFieldType.SELECTION:\n return value.selectionValue?.values ?? [];\n default:\n return undefined;\n }\n}\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function getFormValues(results: { [key: string]: FormFieldValue }): FormValues {\n return Object.keys(results).reduce((acc, key) => {\n const val = flattenFormFieldValue(results[key]);\n if (val !== undefined) acc[key] = val;\n return acc;\n }, {} as FormValues);\n}\n", "import type { FormField as FormFieldProto, FormFieldType } from '@devvit/protos';\n\nimport type {\n BooleanField,\n FormField,\n FormFieldGroup,\n ImageField,\n NumberField,\n ParagraphField,\n SelectField,\n StringField,\n} from './form-types.js';\n\n// This is a carbon copy of the transformFormFields function in the public-api package\n// We copy it here so that @devvit/client does not need to depend on public-api\n// Any changes to this function should be reflected in the public-api version\nexport function transformFormFields(fields: readonly FormField[]): FormFieldProto[] {\n return fields.map((field) => {\n switch (field.type) {\n case 'string':\n return transformStringField(field);\n case 'image':\n return transformImageField(field);\n case 'paragraph':\n return transformParagraphField(field);\n case 'number':\n return transformNumberField(field);\n case 'select':\n return transformSelectField(field);\n case 'boolean':\n return transformBooleanField(field);\n case 'group':\n return transformGroupField(field);\n default:\n throw new Error('Unknown field type.');\n }\n });\n}\n\nfunction transformStringField(field: StringField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 0 satisfies FormFieldType.STRING,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n stringConfig: {\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 0 satisfies FormFieldType.STRING,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n isSecret: field.isSecret,\n };\n}\n\nfunction transformImageField(field: ImageField): FormFieldProto {\n return {\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 7 satisfies FormFieldType.IMAGE,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformParagraphField(field: ParagraphField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n stringValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n paragraphConfig: {\n lineHeight: field.lineHeight,\n placeholder: field.placeholder,\n },\n },\n fieldId: field.name,\n fieldType: 1 satisfies FormFieldType.PARAGRAPH,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformNumberField(field: NumberField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 2 satisfies FormFieldType.NUMBER,\n numberValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldConfig: {\n numberConfig: {},\n },\n fieldId: field.name,\n fieldType: 2 satisfies FormFieldType.NUMBER,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformSelectField(field: SelectField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 5 satisfies FormFieldType.SELECTION,\n selectionValue: {\n values: field.defaultValue ?? [],\n },\n },\n disabled: field.disabled,\n fieldConfig: {\n selectionConfig: {\n choices: field.options,\n multiSelect: field.multiSelect,\n },\n },\n fieldId: field.name,\n fieldType: 5 satisfies FormFieldType.SELECTION,\n helpText: field.helpText,\n label: field.label,\n required: field.required,\n };\n}\n\nfunction transformBooleanField(field: BooleanField): FormFieldProto {\n return {\n defaultValue: {\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n boolValue: field.defaultValue,\n },\n disabled: field.disabled,\n fieldId: field.name,\n fieldType: 3 satisfies FormFieldType.BOOLEAN,\n helpText: field.helpText,\n label: field.label,\n };\n}\n\nfunction transformGroupField(field: FormFieldGroup): FormFieldProto {\n return {\n fieldId: '',\n fieldType: 6 satisfies FormFieldType.GROUP,\n fieldConfig: {\n groupConfig: {\n fields: transformFormFields(field.fields),\n },\n },\n label: field.label,\n helpText: field.helpText,\n };\n}\n", "import type { Form as FormProto } from '@devvit/protos';\nimport type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type { FormKey } from '@devvit/shared-types/useForm.js';\n\nimport { emitEffect } from './emit-effect.js';\nimport { assertValidFormFields } from './helpers/assert-valid-form-fields.js';\nimport type { Form, FormToFormValues } from './helpers/form-types.js';\nimport type { FormEffectResponse } from './helpers/form-types.js';\nimport { getFormValues } from './helpers/get-form-values.js';\nimport { transformFormFields } from './helpers/transform-form.js';\n\nlet _formKey = 1;\n\nconst getNextFormKey = (): FormKey => {\n _formKey++;\n return `form.${_formKey}`;\n};\n\n/**\n * Opens a form in a modal.\n * Returns a promise that resolves with the form submission results.\n * The form can be submitted or canceled by the user.\n *\n * @param formDefinition - The form configuration\n * @returns A promise that resolves to either:\n * - An object with `action: FormAction.SUBMITTED` and the submitted form values\n * - An object with `action: FormAction.CANCELED` if the user canceled the form\n * @throws Will throw if the form fields are invalid\n */\nexport const showForm = async <const T extends Form>(\n formDefinition: T\n): Promise<FormEffectResponse<FormToFormValues<T>>> => {\n const form: FormProto = {\n fields: [],\n id: getNextFormKey(),\n title: formDefinition.title,\n acceptLabel: formDefinition.acceptLabel,\n cancelLabel: formDefinition.cancelLabel,\n shortDescription: formDefinition.description,\n };\n\n assertValidFormFields(formDefinition.fields);\n form.fields = transformFormFields(formDefinition.fields);\n\n const response = await emitEffect({\n showForm: {\n form,\n },\n type: 3 satisfies EffectType.EFFECT_SHOW_FORM,\n });\n\n if (!response || !response.formSubmitted) {\n return {\n action: 'CANCELED',\n };\n }\n\n const formResults = getFormValues(response.formSubmitted.results);\n\n return {\n action: 'SUBMITTED',\n values: formResults as FormToFormValues<T>,\n };\n};\n", "import type { EffectType } from '@devvit/protos/types/devvit/ui/effects/v1alpha/effect.js';\nimport type {\n Toast as ToastProto,\n ToastAppearance,\n} from '@devvit/protos/types/devvit/ui/toast/toast.js';\nimport type { Toast } from '@devvit/shared';\n\nimport { emitEffect } from './emit-effect.js';\n\n/**\n * Shows a toast message.\n *\n * @param textOrToast - The text or toast object to display\n */\nexport function showToast(text: string): void;\nexport function showToast(toast: Toast): void;\nexport function showToast(textOrToast: string | Toast): void {\n let toast: ToastProto;\n\n if (textOrToast instanceof Object) {\n toast = {\n text: textOrToast.text,\n appearance:\n textOrToast.appearance === 'success'\n ? (1 satisfies ToastAppearance.SUCCESS)\n : (0 satisfies ToastAppearance.NEUTRAL),\n };\n } else {\n toast = {\n text: textOrToast,\n };\n }\n\n void emitEffect({\n showToast: {\n toast,\n },\n type: 4 satisfies EffectType.EFFECT_SHOW_TOAST,\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["require_aspromise", "__commonJSMin", "exports", "module", "asPromise", "fn", "ctx", "params", "offset", "index", "pending", "resolve", "reject", "err", "require_base64", "__commonJSMin", "exports", "base64", "string", "p", "n", "b64", "s64", "i", "buffer", "start", "end", "parts", "chunk", "j", "t", "b", "invalidEncoding", "offset", "c", "require_eventemitter", "__commonJSMin", "exports", "module", "EventEmitter", "evt", "fn", "ctx", "listeners", "args", "require_float", "__commonJSMin", "exports", "module", "factory", "f32", "f8b", "le", "writeFloat_f32_cpy", "val", "buf", "pos", "writeFloat_f32_rev", "readFloat_f32_cpy", "readFloat_f32_rev", "writeFloat_ieee754", "writeUint", "sign", "exponent", "mantissa", "writeUintLE", "writeUintBE", "readFloat_ieee754", "readUint", "uint", "readUintLE", "readUintBE", "f64", "writeDouble_f64_cpy", "writeDouble_f64_rev", "readDouble_f64_cpy", "readDouble_f64_rev", "writeDouble_ieee754", "off0", "off1", "readDouble_ieee754", "lo", "hi", "require_inquire", "__commonJSMin", "require_utf8", "__commonJSMin", "exports", "utf8", "string", "len", "c", "buffer", "start", "end", "parts", "chunk", "i", "t", "offset", "c1", "c2", "require_pool", "__commonJSMin", "exports", "module", "pool", "alloc", "slice", "size", "SIZE", "MAX", "slab", "offset", "buf", "require_longbits", "__commonJSMin", "exports", "module", "LongBits", "util", "lo", "hi", "zero", "zeroHash", "value", "sign", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "__commonJSMin", "exports", "util", "value", "obj", "prop", "Buffer", "sizeOrArray", "hash", "unsigned", "bits", "merge", "dst", "src", "ifNotSet", "keys", "str", "newError", "name", "CustomError", "message", "properties", "fieldNames", "fieldMap", "i", "encoding", "size", "require_writer", "__commonJSMin", "exports", "module", "Writer", "util", "BufferWriter", "LongBits", "base64", "utf8", "Op", "fn", "len", "val", "noop", "State", "writer", "create", "size", "writeByte", "buf", "pos", "writeVarint32", "VarintOp", "value", "writeVarint64", "bits", "writeFixed32", "writeBytes", "head", "tail", "BufferWriter_", "require_writer_buffer", "__commonJSMin", "exports", "module", "BufferWriter", "Writer", "util", "val", "buf", "pos", "value", "len", "writeStringBuffer", "require_reader", "__commonJSMin", "exports", "module", "Reader", "util", "BufferReader", "LongBits", "utf8", "indexOutOfRange", "reader", "writeLength", "buffer", "create_array", "create", "value", "readLongVarint", "bits", "i", "readFixed32_end", "buf", "end", "readFixed64", "length", "start", "nativeBuffer", "bytes", "wireType", "BufferReader_", "fn", "require_reader_buffer", "__commonJSMin", "exports", "module", "BufferReader", "Reader", "util", "buffer", "len", "require_service", "__commonJSMin", "exports", "module", "Service", "util", "rpcImpl", "requestDelimited", "responseDelimited", "rpcCall", "method", "requestCtor", "responseCtor", "request", "callback", "self", "err", "response", "endedByRPC", "require_rpc", "__commonJSMin", "exports", "rpc", "require_roots", "__commonJSMin", "exports", "module", "require_index_minimal", "__commonJSMin", "exports", "protobuf", "configure", "require_minimal", "__commonJSMin", "exports", "module", "import_minimal", "import_minimal", "messageTypeRegistry", "NullValue", "nullValueFromJSON", "object", "nullValueToJSON", "createBaseStruct", "Struct", "message", "writer", "_m0", "key", "value", "Struct_FieldsEntry", "input", "length", "reader", "end", "tag", "entry1", "isObject", "acc", "obj", "entries", "k", "v", "base", "struct", "messageTypeRegistry", "createBaseStruct_FieldsEntry", "Value", "isSet", "createBaseValue", "ListValue", "result", "createBaseListValue", "e", "array", "createBaseWebViewContext", "WebViewContext", "message", "writer", "_m0", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "messageTypeRegistry", "createBaseDevvitPostData", "DevvitPostData", "Struct", "isObject", "value", "assert", "condition", "msg", "T_PREFIX", "isT2ID", "id", "T_PREFIX", "isT3ID", "isT5ID", "id", "T_PREFIX", "assertT2ID", "id", "assert", "isT2ID", "T_PREFIX", "assertT3ID", "isT3ID", "assertT5ID", "id", "assert", "isT5ID", "T_PREFIX", "asT2ID", "id", "assertT2ID", "asT3ID", "assertT3ID", "asT5ID", "id", "assertT5ID", "_initContext", "search", "hash", "contextParam", "jsonString", "contextProto", "WebViewContext", "postData", "getPostDataFromHash", "context", "asT5ID", "asT2ID", "asT3ID", "DevvitPostData", "error", "context", "_target", "prop", "key", "import_minimal", "import_minimal", "import_minimal", "import_minimal", "createBaseEmpty", "Empty", "_", "writer", "_m0", "input", "length", "reader", "end", "message", "tag", "base", "messageTypeRegistry", "createBaseRealtimeRequest", "RealtimeRequest", "message", "writer", "_m0", "v", "input", "length", "reader", "end", "tag", "object", "e", "obj", "base", "messageTypeRegistry", "createBaseRealtimeEvent", "RealtimeEvent", "Struct", "isSet", "isObject", "isObject", "value", "isSet", "RealtimeSubscriptionStatus", "realtimeSubscriptionStatusFromJSON", "object", "realtimeSubscriptionStatusToJSON", "createBaseRealtimeSubscriptionsEffect", "RealtimeSubscriptionsEffect", "message", "writer", "_m0", "v", "input", "length", "reader", "end", "tag", "e", "obj", "base", "messageTypeRegistry", "createBaseRealtimeSubscriptionEvent", "RealtimeSubscriptionEvent", "RealtimeEvent", "isSet", "value", "import_minimal", "import_minimal", "import_minimal", "FormFieldType", "formFieldTypeFromJSON", "object", "formFieldTypeToJSON", "import_minimal", "createBaseFormFieldValue", "FormFieldValue", "message", "writer", "_m0", "FormFieldValue_ListValue", "FormFieldValue_SelectionValue", "FormFieldValue_GroupValue", "input", "length", "reader", "end", "tag", "object", "isSet", "formFieldTypeFromJSON", "obj", "formFieldTypeToJSON", "base", "messageTypeRegistry", "createBaseFormFieldValue_ListValue", "v", "e", "createBaseFormFieldValue_SelectionValue", "createBaseFormFieldValue_GroupValue", "_", "value", "createBaseFormField", "FormField", "message", "writer", "_m0", "FormFieldValue", "FieldConfig", "input", "length", "reader", "end", "tag", "object", "isSet", "formFieldTypeFromJSON", "obj", "formFieldTypeToJSON", "base", "messageTypeRegistry", "createBaseFieldConfig", "FieldConfig_String", "FieldConfig_Paragraph", "FieldConfig_Number", "FieldConfig_Boolean", "FieldConfig_List", "FieldConfig_Selection", "FieldConfig_Group", "createBaseFieldConfig_String", "createBaseFieldConfig_Paragraph", "createBaseFieldConfig_Number", "createBaseFieldConfig_Boolean", "_", "createBaseFieldConfig_List", "createBaseFieldConfig_Selection", "v", "FieldConfig_Selection_Item", "e", "createBaseFieldConfig_Selection_Item", "createBaseFieldConfig_Group", "value", "createBaseForm", "Form", "message", "writer", "_m0", "v", "FormField", "input", "length", "reader", "end", "tag", "object", "e", "isSet", "obj", "base", "messageTypeRegistry", "value", "createBaseShowFormEffect", "ShowFormEffect", "message", "writer", "_m0", "Form", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "messageTypeRegistry", "createBaseFormSubmittedEvent", "FormSubmittedEvent", "key", "value", "FormSubmittedEvent_ResultsEntry", "entry1", "isObject", "acc", "FormFieldValue", "entries", "k", "v", "createBaseFormSubmittedEvent_ResultsEntry", "createBaseFormCanceledEvent", "FormCanceledEvent", "WebViewVisibility", "webViewVisibilityFromJSON", "object", "webViewVisibilityToJSON", "createBaseWebViewPostMessageEvent", "WebViewPostMessageEvent", "message", "writer", "_m0", "Value", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "messageTypeRegistry", "createBaseWebViewFullScreenEvent", "WebViewFullScreenEvent", "createBaseWebViewEvent", "WebViewEvent", "createBaseWebViewInternalEventMessage", "WebViewInternalEventMessage", "FormCanceledEvent", "FormSubmittedEvent", "RealtimeSubscriptionEvent", "value", "EFFECTS_WITH_RESPONSE", "emitEffect", "effect", "resolve", "message", "EFFECTS_WITH_RESPONSE", "id", "handleEffect", "event", "serializedMessage", "WebViewInternalEventMessage", "navigateTo", "thingOrUrl", "url", "emitEffect", "assertValidFormFields", "fields", "seenNames", "field", "fieldName", "assertAppSecretsOnly", "flattenFormFieldValue", "value", "getFormValues", "results", "acc", "key", "val", "transformFormFields", "fields", "field", "transformStringField", "transformImageField", "transformParagraphField", "transformNumberField", "transformSelectField", "transformBooleanField", "transformGroupField", "_formKey", "getNextFormKey", "showForm", "formDefinition", "form", "assertValidFormFields", "transformFormFields", "response", "emitEffect", "getFormValues", "showToast", "textOrToast", "toast", "emitEffect"]
|
|
7
7
|
}
|