From 8c9890676b9357192ffc905dab940debd0049ead Mon Sep 17 00:00:00 2001 From: windyboy Date: Sun, 4 Jan 2026 10:33:55 +0800 Subject: [PATCH] vault backup: 2026-01-04 10:33:55 --- .obsidian/community-plugins.json | 3 +- .obsidian/plugins/memos-sync/data.json | 7 + .obsidian/plugins/memos-sync/main.js | 23420 ++++++++++++++++ .obsidian/plugins/memos-sync/manifest.json | 10 + .obsidian/plugins/memos-sync/styles.css | 8 + .obsidian/workspace.json | 29 +- .smart-env/event_logs/event_logs.ajson | 75 +- ...README_zh.md at main · OpenBMBMiniCPM-o.md | 1055 - ReadItLater Inbox/Note 2024-12-31 15-23-42.md | 2 - ReadItLater Inbox/Note 2025-12-01 09-50-38.md | 2 - conflict-files-obsidian-git.md | 38 - 11 files changed, 23480 insertions(+), 1169 deletions(-) create mode 100644 .obsidian/plugins/memos-sync/data.json create mode 100644 .obsidian/plugins/memos-sync/main.js create mode 100644 .obsidian/plugins/memos-sync/manifest.json create mode 100644 .obsidian/plugins/memos-sync/styles.css delete mode 100755 ReadItLater Inbox/MiniCPM-oREADME_zh.md at main · OpenBMBMiniCPM-o.md delete mode 100755 ReadItLater Inbox/Note 2024-12-31 15-23-42.md delete mode 100644 ReadItLater Inbox/Note 2025-12-01 09-50-38.md delete mode 100644 conflict-files-obsidian-git.md diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index c650ec8..174d5e6 100755 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -23,5 +23,6 @@ "omnisearch", "cmdr", "obsidian-tasks-plugin", - "smart-connections" + "smart-connections", + "memos-sync" ] \ No newline at end of file diff --git a/.obsidian/plugins/memos-sync/data.json b/.obsidian/plugins/memos-sync/data.json new file mode 100644 index 0000000..95eba6c --- /dev/null +++ b/.obsidian/plugins/memos-sync/data.json @@ -0,0 +1,7 @@ +{ + "dailyMemosHeader": "000-inbox/Memos", + "memosAPIVersion": "v0.24.0", + "memosAPIURL": "https://memos.windy.me", + "memosAPIToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6InYxIiwidHlwIjoiSldUIn0.eyJuYW1lIjoiemhpcWlhbmciLCJpc3MiOiJtZW1vcyIsInN1YiI6IjEiLCJhdWQiOlsidXNlci5hY2Nlc3MtdG9rZW4iXSwiaWF0IjoxNzY3NDA0MzY0fQ.SR4a3nn3myQUiPV3tJGLpKs_XgpFaOM_aK0i2CmNGoY", + "attachmentFolder": "Attachments" +} \ No newline at end of file diff --git a/.obsidian/plugins/memos-sync/main.js b/.obsidian/plugins/memos-sync/main.js new file mode 100644 index 0000000..720c09d --- /dev/null +++ b/.obsidian/plugins/memos-sync/main.js @@ -0,0 +1,23420 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn, res) => function __init() { + return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/obsidian-daily-notes-interface/dist/main.js +var require_main = __commonJS({ + "node_modules/obsidian-daily-notes-interface/dist/main.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + var obsidian = require("obsidian"); + var DEFAULT_DAILY_NOTE_FORMAT = "YYYY-MM-DD"; + var DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; + var DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; + var DEFAULT_QUARTERLY_NOTE_FORMAT = "YYYY-[Q]Q"; + var DEFAULT_YEARLY_NOTE_FORMAT = "YYYY"; + function shouldUsePeriodicNotesSettings(periodicity) { + var _a, _b; + const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a[periodicity]) == null ? void 0 : _b.enabled); + } + function getDailyNoteSettings() { + var _a, _b, _c, _d; + try { + const { internalPlugins, plugins } = window.app; + if (shouldUsePeriodicNotesSettings("daily")) { + const { format: format2, folder: folder2, template: template2 } = ((_b = (_a = plugins.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.daily) || {}; + return { + format: format2 || DEFAULT_DAILY_NOTE_FORMAT, + folder: (folder2 == null ? void 0 : folder2.trim()) || "", + template: (template2 == null ? void 0 : template2.trim()) || "" + }; + } + const { folder, format, template } = ((_d = (_c = internalPlugins.getPluginById("daily-notes")) == null ? void 0 : _c.instance) == null ? void 0 : _d.options) || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: (folder == null ? void 0 : folder.trim()) || "", + template: (template == null ? void 0 : template.trim()) || "" + }; + } catch (err) { + console.info("No custom daily note settings found!", err); + } + } + function getWeeklyNoteSettings() { + var _a, _b, _c, _d, _e, _f, _g; + try { + const pluginManager = window.app.plugins; + const calendarSettings = (_a = pluginManager.getPlugin("calendar")) == null ? void 0 : _a.options; + const periodicNotesSettings = (_c = (_b = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _b.settings) == null ? void 0 : _c.weekly; + if (shouldUsePeriodicNotesSettings("weekly")) { + return { + format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_d = periodicNotesSettings.folder) == null ? void 0 : _d.trim()) || "", + template: ((_e = periodicNotesSettings.template) == null ? void 0 : _e.trim()) || "" + }; + } + const settings = calendarSettings || {}; + return { + format: settings.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: ((_f = settings.weeklyNoteFolder) == null ? void 0 : _f.trim()) || "", + template: ((_g = settings.weeklyNoteTemplate) == null ? void 0 : _g.trim()) || "" + }; + } catch (err) { + console.info("No custom weekly note settings found!", err); + } + } + function getMonthlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("monthly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.monthly) || {}; + return { + format: settings.format || DEFAULT_MONTHLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom monthly note settings found!", err); + } + } + function getQuarterlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("quarterly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.quarterly) || {}; + return { + format: settings.format || DEFAULT_QUARTERLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom quarterly note settings found!", err); + } + } + function getYearlyNoteSettings() { + var _a, _b, _c, _d; + const pluginManager = window.app.plugins; + try { + const settings = shouldUsePeriodicNotesSettings("yearly") && ((_b = (_a = pluginManager.getPlugin("periodic-notes")) == null ? void 0 : _a.settings) == null ? void 0 : _b.yearly) || {}; + return { + format: settings.format || DEFAULT_YEARLY_NOTE_FORMAT, + folder: ((_c = settings.folder) == null ? void 0 : _c.trim()) || "", + template: ((_d = settings.template) == null ? void 0 : _d.trim()) || "" + }; + } catch (err) { + console.info("No custom yearly note settings found!", err); + } + } + function join(...partSegments) { + let parts = []; + for (let i = 0, l = partSegments.length; i < l; i++) { + parts = parts.concat(partSegments[i].split("/")); + } + const newParts = []; + for (let i = 0, l = parts.length; i < l; i++) { + const part = parts[i]; + if (!part || part === ".") + continue; + else + newParts.push(part); + } + if (parts[0] === "") + newParts.unshift(""); + return newParts.join("/"); + } + function basename(fullPath) { + let base = fullPath.substring(fullPath.lastIndexOf("/") + 1); + if (base.lastIndexOf(".") != -1) + base = base.substring(0, base.lastIndexOf(".")); + return base; + } + async function ensureFolderExists(path) { + const dirs = path.replace(/\\/g, "/").split("/"); + dirs.pop(); + if (dirs.length) { + const dir = join(...dirs); + if (!window.app.vault.getAbstractFileByPath(dir)) { + await window.app.vault.createFolder(dir); + } + } + } + async function getNotePath(directory, filename) { + if (!filename.endsWith(".md")) { + filename += ".md"; + } + const path = obsidian.normalizePath(join(directory, filename)); + await ensureFolderExists(path); + return path; + } + async function getTemplateInfo(template) { + const { metadataCache, vault } = window.app; + const templatePath = obsidian.normalizePath(template); + if (templatePath === "/") { + return Promise.resolve(["", null]); + } + try { + const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); + const contents = await vault.cachedRead(templateFile); + const IFoldInfo = window.app.foldManager.load(templateFile); + return [contents, IFoldInfo]; + } catch (err) { + console.error(`Failed to read the daily note template '${templatePath}'`, err); + new obsidian.Notice("Failed to read the daily note template"); + return ["", null]; + } + } + function getDateUID(date, granularity = "day") { + const ts = date.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; + } + function removeEscapedCharacters(format) { + return format.replace(/\[[^\]]*\]/g, ""); + } + function isFormatAmbiguous(format, granularity) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + return /w{1,2}/i.test(cleanFormat) && (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat)); + } + return false; + } + function getDateFromFile2(file, granularity) { + return getDateFromFilename(file.basename, granularity); + } + function getDateFromPath(path, granularity) { + return getDateFromFilename(basename(path), granularity); + } + function getDateFromFilename(filename, granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }; + const format = getSettings[granularity]().format.split("/").pop(); + const noteDate = window.moment(filename, format, true); + if (!noteDate.isValid()) { + return null; + } + if (isFormatAmbiguous(format, granularity)) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + if (/w{1,2}/i.test(cleanFormat)) { + return window.moment( + filename, + // If format contains week, remove day & month formatting + format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), + false + ); + } + } + } + return noteDate; + } + var DailyNotesFolderMissingError = class extends Error { + }; + async function createDailyNote2(date) { + const app = window.app; + const { vault } = app; + const moment = window.moment; + const { template, format, folder } = getDailyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)).replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format))); + app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getDailyNote2(date, dailyNotes) { + var _a; + return (_a = dailyNotes[getDateUID(date, "day")]) != null ? _a : null; + } + function getAllDailyNotes2() { + const { vault } = window.app; + const { folder } = getDailyNoteSettings(); + const dailyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!dailyNotesFolder) { + throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); + } + const dailyNotes = {}; + obsidian.Vault.recurseChildren(dailyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile2(note, "day"); + if (date) { + const dateString = getDateUID(date, "day"); + dailyNotes[dateString] = note; + } + } + }); + return dailyNotes; + } + var WeeklyNotesFolderMissingError = class extends Error { + }; + function getDaysOfWeek() { + const { moment } = window; + let weekStart = moment.localeData()._week.dow; + const daysOfWeek = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday" + ]; + while (weekStart) { + daysOfWeek.push(daysOfWeek.shift()); + weekStart--; + } + return daysOfWeek; + } + function getDayOfWeekNumericalValue(dayOfWeekName) { + return getDaysOfWeek().indexOf(dayOfWeekName.toLowerCase()); + } + async function createWeeklyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getWeeklyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*title\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => { + const day = getDayOfWeekNumericalValue(dayOfWeek); + return date.weekday(day).format(momentFormat.trim()); + })); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getWeeklyNote(date, weeklyNotes) { + var _a; + return (_a = weeklyNotes[getDateUID(date, "week")]) != null ? _a : null; + } + function getAllWeeklyNotes() { + const weeklyNotes = {}; + if (!appHasWeeklyNotesPluginLoaded()) { + return weeklyNotes; + } + const { vault } = window.app; + const { folder } = getWeeklyNoteSettings(); + const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!weeklyNotesFolder) { + throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); + } + obsidian.Vault.recurseChildren(weeklyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile2(note, "week"); + if (date) { + const dateString = getDateUID(date, "week"); + weeklyNotes[dateString] = note; + } + } + }); + return weeklyNotes; + } + var MonthlyNotesFolderMissingError = class extends Error { + }; + async function createMonthlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getMonthlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getMonthlyNote(date, monthlyNotes) { + var _a; + return (_a = monthlyNotes[getDateUID(date, "month")]) != null ? _a : null; + } + function getAllMonthlyNotes() { + const monthlyNotes = {}; + if (!appHasMonthlyNotesPluginLoaded()) { + return monthlyNotes; + } + const { vault } = window.app; + const { folder } = getMonthlyNoteSettings(); + const monthlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!monthlyNotesFolder) { + throw new MonthlyNotesFolderMissingError("Failed to find monthly notes folder"); + } + obsidian.Vault.recurseChildren(monthlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile2(note, "month"); + if (date) { + const dateString = getDateUID(date, "month"); + monthlyNotes[dateString] = note; + } + } + }); + return monthlyNotes; + } + var QuarterlyNotesFolderMissingError = class extends Error { + }; + async function createQuarterlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getQuarterlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getQuarterlyNote(date, quarterly) { + var _a; + return (_a = quarterly[getDateUID(date, "quarter")]) != null ? _a : null; + } + function getAllQuarterlyNotes() { + const quarterly = {}; + if (!appHasQuarterlyNotesPluginLoaded()) { + return quarterly; + } + const { vault } = window.app; + const { folder } = getQuarterlyNoteSettings(); + const quarterlyFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!quarterlyFolder) { + throw new QuarterlyNotesFolderMissingError("Failed to find quarterly notes folder"); + } + obsidian.Vault.recurseChildren(quarterlyFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile2(note, "quarter"); + if (date) { + const dateString = getDateUID(date, "quarter"); + quarterly[dateString] = note; + } + } + }); + return quarterly; + } + var YearlyNotesFolderMissingError = class extends Error { + }; + async function createYearlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getYearlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second") + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }).replace(/{{\s*date\s*}}/gi, filename).replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi, filename)); + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian.Notice("Unable to create new file."); + } + } + function getYearlyNote(date, yearlyNotes) { + var _a; + return (_a = yearlyNotes[getDateUID(date, "year")]) != null ? _a : null; + } + function getAllYearlyNotes() { + const yearlyNotes = {}; + if (!appHasYearlyNotesPluginLoaded()) { + return yearlyNotes; + } + const { vault } = window.app; + const { folder } = getYearlyNoteSettings(); + const yearlyNotesFolder = vault.getAbstractFileByPath(obsidian.normalizePath(folder)); + if (!yearlyNotesFolder) { + throw new YearlyNotesFolderMissingError("Failed to find yearly notes folder"); + } + obsidian.Vault.recurseChildren(yearlyNotesFolder, (note) => { + if (note instanceof obsidian.TFile) { + const date = getDateFromFile2(note, "year"); + if (date) { + const dateString = getDateUID(date, "year"); + yearlyNotes[dateString] = note; + } + } + }); + return yearlyNotes; + } + function appHasDailyNotesPluginLoaded2() { + var _a, _b; + const { app } = window; + const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; + if (dailyNotesPlugin && dailyNotesPlugin.enabled) { + return true; + } + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.daily) == null ? void 0 : _b.enabled); + } + function appHasWeeklyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + if (app.plugins.getPlugin("calendar")) { + return true; + } + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.weekly) == null ? void 0 : _b.enabled); + } + function appHasMonthlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.monthly) == null ? void 0 : _b.enabled); + } + function appHasQuarterlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.quarterly) == null ? void 0 : _b.enabled); + } + function appHasYearlyNotesPluginLoaded() { + var _a, _b; + const { app } = window; + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) == null ? void 0 : _a.yearly) == null ? void 0 : _b.enabled); + } + function getPeriodicNoteSettings(granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings + }[granularity]; + return getSettings(); + } + function createPeriodicNote(granularity, date) { + const createFn = { + day: createDailyNote2, + month: createMonthlyNote, + week: createWeeklyNote + }; + return createFn[granularity](date); + } + exports.DEFAULT_DAILY_NOTE_FORMAT = DEFAULT_DAILY_NOTE_FORMAT; + exports.DEFAULT_MONTHLY_NOTE_FORMAT = DEFAULT_MONTHLY_NOTE_FORMAT; + exports.DEFAULT_QUARTERLY_NOTE_FORMAT = DEFAULT_QUARTERLY_NOTE_FORMAT; + exports.DEFAULT_WEEKLY_NOTE_FORMAT = DEFAULT_WEEKLY_NOTE_FORMAT; + exports.DEFAULT_YEARLY_NOTE_FORMAT = DEFAULT_YEARLY_NOTE_FORMAT; + exports.appHasDailyNotesPluginLoaded = appHasDailyNotesPluginLoaded2; + exports.appHasMonthlyNotesPluginLoaded = appHasMonthlyNotesPluginLoaded; + exports.appHasQuarterlyNotesPluginLoaded = appHasQuarterlyNotesPluginLoaded; + exports.appHasWeeklyNotesPluginLoaded = appHasWeeklyNotesPluginLoaded; + exports.appHasYearlyNotesPluginLoaded = appHasYearlyNotesPluginLoaded; + exports.createDailyNote = createDailyNote2; + exports.createMonthlyNote = createMonthlyNote; + exports.createPeriodicNote = createPeriodicNote; + exports.createQuarterlyNote = createQuarterlyNote; + exports.createWeeklyNote = createWeeklyNote; + exports.createYearlyNote = createYearlyNote; + exports.getAllDailyNotes = getAllDailyNotes2; + exports.getAllMonthlyNotes = getAllMonthlyNotes; + exports.getAllQuarterlyNotes = getAllQuarterlyNotes; + exports.getAllWeeklyNotes = getAllWeeklyNotes; + exports.getAllYearlyNotes = getAllYearlyNotes; + exports.getDailyNote = getDailyNote2; + exports.getDailyNoteSettings = getDailyNoteSettings; + exports.getDateFromFile = getDateFromFile2; + exports.getDateFromPath = getDateFromPath; + exports.getDateUID = getDateUID; + exports.getMonthlyNote = getMonthlyNote; + exports.getMonthlyNoteSettings = getMonthlyNoteSettings; + exports.getPeriodicNoteSettings = getPeriodicNoteSettings; + exports.getQuarterlyNote = getQuarterlyNote; + exports.getQuarterlyNoteSettings = getQuarterlyNoteSettings; + exports.getTemplateInfo = getTemplateInfo; + exports.getWeeklyNote = getWeeklyNote; + exports.getWeeklyNoteSettings = getWeeklyNoteSettings; + exports.getYearlyNote = getYearlyNote; + exports.getYearlyNoteSettings = getYearlyNoteSettings; + } +}); + +// node_modules/nice-grpc-common/lib/Metadata.js +var require_Metadata = __commonJS({ + "node_modules/nice-grpc-common/lib/Metadata.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Metadata = void 0; + exports.Metadata = function Metadata2(init) { + const data = /* @__PURE__ */ new Map(); + const metadata = { + set(key, value) { + key = normalizeKey(key); + if (Array.isArray(value)) { + if (value.length === 0) { + data.delete(key); + } else { + for (const item of value) { + validate(key, item); + } + data.set(key, key.endsWith("-bin") ? value : [value.join(", ")]); + } + } else { + validate(key, value); + data.set(key, [value]); + } + return metadata; + }, + append(key, value) { + key = normalizeKey(key); + validate(key, value); + let values = data.get(key); + if (values == null) { + values = []; + data.set(key, values); + } + values.push(value); + if (!key.endsWith("-bin")) { + data.set(key, [values.join(", ")]); + } + return metadata; + }, + delete(key) { + key = normalizeKey(key); + data.delete(key); + }, + get(key) { + var _a; + key = normalizeKey(key); + return (_a = data.get(key)) === null || _a === void 0 ? void 0 : _a[0]; + }, + getAll(key) { + var _a; + key = normalizeKey(key); + return (_a = data.get(key)) !== null && _a !== void 0 ? _a : []; + }, + has(key) { + key = normalizeKey(key); + return data.has(key); + }, + [Symbol.iterator]() { + return data[Symbol.iterator](); + } + }; + if (init != null) { + const entries = isIterable(init) ? init : Object.entries(init); + for (const [key, value] of entries) { + metadata.set(key, value); + } + } + return metadata; + }; + function normalizeKey(key) { + return key.toLowerCase(); + } + function validate(key, value) { + if (!/^[0-9a-z_.-]+$/.test(key)) { + throw new Error(`Metadata key '${key}' contains illegal characters`); + } + if (key.endsWith("-bin")) { + if (!(value instanceof Uint8Array)) { + throw new Error(`Metadata key '${key}' ends with '-bin', thus it must have binary value`); + } + } else { + if (typeof value !== "string") { + throw new Error(`Metadata key '${key}' doesn't end with '-bin', thus it must have string value`); + } + if (!/^[ -~]*$/.test(value)) { + throw new Error(`Metadata value '${value}' of key '${key}' contains illegal characters`); + } + } + } + function isIterable(value) { + return Symbol.iterator in value; + } + } +}); + +// node_modules/nice-grpc-common/lib/Status.js +var require_Status = __commonJS({ + "node_modules/nice-grpc-common/lib/Status.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Status = void 0; + var Status; + (function(Status2) { + Status2[Status2["OK"] = 0] = "OK"; + Status2[Status2["CANCELLED"] = 1] = "CANCELLED"; + Status2[Status2["UNKNOWN"] = 2] = "UNKNOWN"; + Status2[Status2["INVALID_ARGUMENT"] = 3] = "INVALID_ARGUMENT"; + Status2[Status2["DEADLINE_EXCEEDED"] = 4] = "DEADLINE_EXCEEDED"; + Status2[Status2["NOT_FOUND"] = 5] = "NOT_FOUND"; + Status2[Status2["ALREADY_EXISTS"] = 6] = "ALREADY_EXISTS"; + Status2[Status2["PERMISSION_DENIED"] = 7] = "PERMISSION_DENIED"; + Status2[Status2["RESOURCE_EXHAUSTED"] = 8] = "RESOURCE_EXHAUSTED"; + Status2[Status2["FAILED_PRECONDITION"] = 9] = "FAILED_PRECONDITION"; + Status2[Status2["ABORTED"] = 10] = "ABORTED"; + Status2[Status2["OUT_OF_RANGE"] = 11] = "OUT_OF_RANGE"; + Status2[Status2["UNIMPLEMENTED"] = 12] = "UNIMPLEMENTED"; + Status2[Status2["INTERNAL"] = 13] = "INTERNAL"; + Status2[Status2["UNAVAILABLE"] = 14] = "UNAVAILABLE"; + Status2[Status2["DATA_LOSS"] = 15] = "DATA_LOSS"; + Status2[Status2["UNAUTHENTICATED"] = 16] = "UNAUTHENTICATED"; + })(Status = exports.Status || (exports.Status = {})); + } +}); + +// node_modules/nice-grpc-common/lib/MethodDescriptor.js +var require_MethodDescriptor = __commonJS({ + "node_modules/nice-grpc-common/lib/MethodDescriptor.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/client/CallOptions.js +var require_CallOptions = __commonJS({ + "node_modules/nice-grpc-common/lib/client/CallOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/client/ClientMiddleware.js +var require_ClientMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/client/ClientMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/client/composeClientMiddleware.js +var require_composeClientMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/client/composeClientMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.composeClientMiddleware = void 0; + function composeClientMiddleware(middleware1, middleware2) { + return (call, options) => { + return middleware2(Object.assign(Object.assign({}, call), { next: (request, options2) => { + return middleware1(Object.assign(Object.assign({}, call), { request }), options2); + } }), options); + }; + } + exports.composeClientMiddleware = composeClientMiddleware; + } +}); + +// node_modules/ts-error/lib/helpers.js +var require_helpers = __commonJS({ + "node_modules/ts-error/lib/helpers.js"(exports) { + "use strict"; + exports.__esModule = void 0; + exports.__esModule = true; + var objectSetPrototypeOfIsDefined = typeof Object.setPrototypeOf === "function"; + var objectGetPrototypeOfIsDefined = typeof Object.getPrototypeOf === "function"; + var objectDefinePropertyIsDefined = typeof Object.defineProperty === "function"; + var objectCreateIsDefined = typeof Object.create === "function"; + var objectHasOwnPropertyIsDefined = typeof Object.prototype.hasOwnProperty === "function"; + var setPrototypeOf = function setPrototypeOf2(target, prototype) { + if (objectSetPrototypeOfIsDefined) { + Object.setPrototypeOf(target, prototype); + } else { + target.__proto__ = prototype; + } + }; + exports.setPrototypeOf = setPrototypeOf; + var getPrototypeOf = function getPrototypeOf2(target) { + if (objectGetPrototypeOfIsDefined) { + return Object.getPrototypeOf(target); + } else { + return target.__proto__ || target.prototype; + } + }; + exports.getPrototypeOf = getPrototypeOf; + var ie8ObjectDefinePropertyBug = false; + var defineProperty = function defineProperty2(target, name, propertyDescriptor) { + if (objectDefinePropertyIsDefined && !ie8ObjectDefinePropertyBug) { + try { + Object.defineProperty(target, name, propertyDescriptor); + } catch (e) { + ie8ObjectDefinePropertyBug = true; + defineProperty2(target, name, propertyDescriptor); + } + } else { + target[name] = propertyDescriptor.value; + } + }; + exports.defineProperty = defineProperty; + var hasOwnProperty = function hasOwnProperty2(target, name) { + if (objectHasOwnPropertyIsDefined) { + return target.hasOwnProperty(target, name); + } else { + return target[name] === void 0; + } + }; + exports.hasOwnProperty = hasOwnProperty; + var objectCreate = function objectCreate2(prototype, propertyDescriptors) { + if (objectCreateIsDefined) { + return Object.create(prototype, propertyDescriptors); + } else { + var F = function F2() { + }; + F.prototype = prototype; + var result = new F(); + if (typeof propertyDescriptors === "undefined") { + return result; + } + if (typeof propertyDescriptors === "null") { + throw new Error("PropertyDescriptors must not be null."); + } + if (typeof propertyDescriptors === "object") { + for (var key in propertyDescriptors) { + if (hasOwnProperty(propertyDescriptors, key)) { + result[key] = propertyDescriptors[key].value; + } + } + } + return result; + } + }; + exports.objectCreate = objectCreate; + } +}); + +// node_modules/ts-error/lib/cjs.js +var require_cjs = __commonJS({ + "node_modules/ts-error/lib/cjs.js"(exports) { + "use strict"; + exports.__esModule = void 0; + exports.__esModule = true; + var helpers = require_helpers(); + var setPrototypeOf = helpers.setPrototypeOf; + var getPrototypeOf = helpers.getPrototypeOf; + var defineProperty = helpers.defineProperty; + var objectCreate = helpers.objectCreate; + var uglyErrorPrinting = new Error().toString() === "[object Error]"; + var extendableErrorName = ""; + function ExtendableError(message) { + var originalConstructor = this.constructor; + var constructorName = originalConstructor.name || function() { + var constructorNameMatch = originalConstructor.toString().match(/^function\s*([^\s(]+)/); + return constructorNameMatch === null ? extendableErrorName ? extendableErrorName : "Error" : constructorNameMatch[1]; + }(); + var constructorNameIsError = constructorName === "Error"; + var name = constructorNameIsError ? extendableErrorName : constructorName; + var instance = Error.apply(this, arguments); + setPrototypeOf(instance, getPrototypeOf(this)); + if (!(instance instanceof originalConstructor) || !(instance instanceof ExtendableError)) { + var instance = this; + Error.apply(this, arguments); + defineProperty(instance, "message", { + configurable: true, + enumerable: false, + value: message, + writable: true + }); + } + defineProperty(instance, "name", { + configurable: true, + enumerable: false, + value: name, + writable: true + }); + if (Error.captureStackTrace) { + Error.captureStackTrace( + instance, + constructorNameIsError ? ExtendableError : originalConstructor + ); + } + if (instance.stack === void 0) { + var err = new Error(message); + err.name = instance.name; + instance.stack = err.stack; + } + if (uglyErrorPrinting) { + defineProperty(instance, "toString", { + configurable: true, + enumerable: false, + value: function toString() { + return (this.name || "Error") + (typeof this.message === "undefined" ? "" : ": " + this.message); + }, + writable: true + }); + } + return instance; + } + extendableErrorName = ExtendableError.name || "ExtendableError"; + ExtendableError.prototype = objectCreate(Error.prototype, { + constructor: { + value: Error, + enumerable: false, + writable: true, + configurable: true + } + }); + exports.ExtendableError = ExtendableError; + exports["default"] = exports.ExtendableError; + } +}); + +// node_modules/nice-grpc-common/lib/client/ClientError.js +var require_ClientError = __commonJS({ + "node_modules/nice-grpc-common/lib/client/ClientError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClientError = void 0; + var ts_error_1 = require_cjs(); + var Status_1 = require_Status(); + var ClientError = class extends ts_error_1.ExtendableError { + constructor(path, code, details) { + super(`${path} ${Status_1.Status[code]}: ${details}`); + this.path = path; + this.code = code; + this.details = details; + this.name = "ClientError"; + Object.defineProperty(this, "@@nice-grpc", { + value: true + }); + Object.defineProperty(this, "@@nice-grpc:ClientError", { + value: true + }); + } + static [Symbol.hasInstance](instance) { + if (this !== ClientError) { + return this.prototype.isPrototypeOf(instance); + } + return typeof instance === "object" && instance !== null && (instance.constructor === ClientError || instance["@@nice-grpc:ClientError"] === true || instance.name === "ClientError" && instance["@@nice-grpc"] === true); + } + }; + exports.ClientError = ClientError; + } +}); + +// node_modules/nice-grpc-common/lib/server/CallContext.js +var require_CallContext = __commonJS({ + "node_modules/nice-grpc-common/lib/server/CallContext.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/server/ServerMiddleware.js +var require_ServerMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/server/ServerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/server/composeServerMiddleware.js +var require_composeServerMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/server/composeServerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.composeServerMiddleware = void 0; + function composeServerMiddleware(middleware1, middleware2) { + return (call, context) => { + return middleware1(Object.assign(Object.assign({}, call), { next: (request, context1) => { + return middleware2(Object.assign(Object.assign({}, call), { request }), context1); + } }), context); + }; + } + exports.composeServerMiddleware = composeServerMiddleware; + } +}); + +// node_modules/nice-grpc-common/lib/server/ServerError.js +var require_ServerError = __commonJS({ + "node_modules/nice-grpc-common/lib/server/ServerError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ServerError = void 0; + var ts_error_1 = require_cjs(); + var Status_1 = require_Status(); + var ServerError = class extends ts_error_1.ExtendableError { + constructor(code, details) { + super(`${Status_1.Status[code]}: ${details}`); + this.code = code; + this.details = details; + this.name = "ServerError"; + Object.defineProperty(this, "@@nice-grpc", { + value: true + }); + Object.defineProperty(this, "@@nice-grpc:ServerError", { + value: true + }); + } + static [Symbol.hasInstance](instance) { + if (this !== ServerError) { + return this.prototype.isPrototypeOf(instance); + } + return typeof instance === "object" && instance !== null && (instance.constructor === ServerError || instance["@@nice-grpc:ServerError"] === true || instance.name === "ServerError" && instance["@@nice-grpc"] === true); + } + }; + exports.ServerError = ServerError; + } +}); + +// node_modules/nice-grpc-common/lib/index.js +var require_lib = __commonJS({ + "node_modules/nice-grpc-common/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(require_Metadata(), exports); + __exportStar(require_Status(), exports); + __exportStar(require_MethodDescriptor(), exports); + __exportStar(require_CallOptions(), exports); + __exportStar(require_ClientMiddleware(), exports); + __exportStar(require_composeClientMiddleware(), exports); + __exportStar(require_ClientError(), exports); + __exportStar(require_CallContext(), exports); + __exportStar(require_ServerMiddleware(), exports); + __exportStar(require_composeServerMiddleware(), exports); + __exportStar(require_ServerError(), exports); + } +}); + +// node_modules/nice-grpc-web/lib/service-definitions/grpc-web.js +var require_grpc_web = __commonJS({ + "node_modules/nice-grpc-web/lib/service-definitions/grpc-web.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isGrpcWebServiceDefinition = exports.fromGrpcWebServiceDefinition = void 0; + function fromGrpcWebServiceDefinition(definition) { + const result = {}; + for (const [key, value] of Object.entries(definition)) { + if (key === "serviceName") { + continue; + } + const method = value; + result[uncapitalize(key)] = { + path: `/${definition.serviceName}/${key}`, + requestStream: method.requestStream, + responseStream: method.responseStream, + requestDeserialize: method.requestType.deserializeBinary, + requestSerialize: (value2) => value2.serializeBinary(), + responseDeserialize: method.responseType.deserializeBinary, + responseSerialize: (value2) => value2.serializeBinary(), + options: {} + }; + } + return result; + } + exports.fromGrpcWebServiceDefinition = fromGrpcWebServiceDefinition; + function isGrpcWebServiceDefinition(definition) { + return "prototype" in definition; + } + exports.isGrpcWebServiceDefinition = isGrpcWebServiceDefinition; + function uncapitalize(value) { + if (value.length === 0) { + return value; + } + return value[0].toLowerCase() + value.slice(1); + } + } +}); + +// node_modules/nice-grpc-web/lib/service-definitions/ts-proto.js +var require_ts_proto = __commonJS({ + "node_modules/nice-grpc-web/lib/service-definitions/ts-proto.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isTsProtoServiceDefinition = exports.fromTsProtoServiceDefinition = void 0; + function fromTsProtoServiceDefinition(definition) { + const result = {}; + for (const [key, method] of Object.entries(definition.methods)) { + const requestEncode = method.requestType.encode; + const requestFromPartial = method.requestType.fromPartial; + const responseEncode = method.responseType.encode; + const responseFromPartial = method.responseType.fromPartial; + result[key] = { + path: `/${definition.fullName}/${method.name}`, + requestStream: method.requestStream, + responseStream: method.responseStream, + requestDeserialize: method.requestType.decode, + requestSerialize: requestFromPartial != null ? (value) => requestEncode(requestFromPartial(value)).finish() : (value) => requestEncode(value).finish(), + responseDeserialize: method.responseType.decode, + responseSerialize: responseFromPartial != null ? (value) => responseEncode(responseFromPartial(value)).finish() : (value) => responseEncode(value).finish(), + options: method.options + }; + } + return result; + } + exports.fromTsProtoServiceDefinition = fromTsProtoServiceDefinition; + function isTsProtoServiceDefinition(definition) { + return "name" in definition && "fullName" in definition && "methods" in definition; + } + exports.isTsProtoServiceDefinition = isTsProtoServiceDefinition; + } +}); + +// node_modules/nice-grpc-web/lib/service-definitions/index.js +var require_service_definitions = __commonJS({ + "node_modules/nice-grpc-web/lib/service-definitions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.normalizeServiceDefinition = void 0; + var grpc_web_1 = require_grpc_web(); + var ts_proto_1 = require_ts_proto(); + function normalizeServiceDefinition(definition) { + if ((0, grpc_web_1.isGrpcWebServiceDefinition)(definition)) { + return (0, grpc_web_1.fromGrpcWebServiceDefinition)(definition); + } else if ((0, ts_proto_1.isTsProtoServiceDefinition)(definition)) { + return (0, ts_proto_1.fromTsProtoServiceDefinition)(definition); + } else { + return definition; + } + } + exports.normalizeServiceDefinition = normalizeServiceDefinition; + } +}); + +// node_modules/abort-controller-x/lib/AbortError.js +var require_AbortError = __commonJS({ + "node_modules/abort-controller-x/lib/AbortError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.catchAbortError = exports.rethrowAbortError = exports.throwIfAborted = exports.isAbortError = exports.AbortError = void 0; + var AbortError = class extends Error { + constructor() { + super("The operation has been aborted"); + this.message = "The operation has been aborted"; + this.name = "AbortError"; + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, this.constructor); + } + } + }; + exports.AbortError = AbortError; + function isAbortError(error2) { + return typeof error2 === "object" && error2 !== null && error2.name === "AbortError"; + } + exports.isAbortError = isAbortError; + function throwIfAborted(signal) { + if (signal.aborted) { + throw new AbortError(); + } + } + exports.throwIfAborted = throwIfAborted; + function rethrowAbortError(error2) { + if (isAbortError(error2)) { + throw error2; + } + return; + } + exports.rethrowAbortError = rethrowAbortError; + function catchAbortError(error2) { + if (isAbortError(error2)) { + return; + } + throw error2; + } + exports.catchAbortError = catchAbortError; + } +}); + +// node_modules/abort-controller-x/lib/execute.js +var require_execute = __commonJS({ + "node_modules/abort-controller-x/lib/execute.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.execute = void 0; + var AbortError_1 = require_AbortError(); + function execute(signal, executor) { + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(new AbortError_1.AbortError()); + return; + } + let removeAbortListener; + let finished = false; + function finish() { + if (!finished) { + finished = true; + if (removeAbortListener != null) { + removeAbortListener(); + } + } + } + const callback = executor((value) => { + resolve(value); + finish(); + }, (reason) => { + reject(reason); + finish(); + }); + if (!finished) { + const listener = () => { + const callbackResult = callback(); + if (callbackResult == null) { + reject(new AbortError_1.AbortError()); + } else { + callbackResult.then(() => { + reject(new AbortError_1.AbortError()); + }, (reason) => { + reject(reason); + }); + } + finish(); + }; + signal.addEventListener("abort", listener); + removeAbortListener = () => { + signal.removeEventListener("abort", listener); + }; + } + }); + } + exports.execute = execute; + } +}); + +// node_modules/abort-controller-x/lib/abortable.js +var require_abortable = __commonJS({ + "node_modules/abort-controller-x/lib/abortable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.abortable = void 0; + var execute_1 = require_execute(); + function abortable(signal, promise) { + if (signal.aborted) { + const noop = () => { + }; + promise.then(noop, noop); + } + return (0, execute_1.execute)(signal, (resolve, reject) => { + promise.then(resolve, reject); + return () => { + }; + }); + } + exports.abortable = abortable; + } +}); + +// node_modules/abort-controller-x/lib/delay.js +var require_delay = __commonJS({ + "node_modules/abort-controller-x/lib/delay.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.delay = void 0; + var execute_1 = require_execute(); + function delay(signal, dueTime) { + return (0, execute_1.execute)(signal, (resolve) => { + const ms = typeof dueTime === "number" ? dueTime : dueTime.getTime() - Date.now(); + const timer = setTimeout(resolve, ms); + return () => { + clearTimeout(timer); + }; + }); + } + exports.delay = delay; + } +}); + +// node_modules/abort-controller-x/lib/forever.js +var require_forever = __commonJS({ + "node_modules/abort-controller-x/lib/forever.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.forever = void 0; + var execute_1 = require_execute(); + function forever(signal) { + return (0, execute_1.execute)(signal, () => () => { + }); + } + exports.forever = forever; + } +}); + +// node_modules/abort-controller-x/lib/waitForEvent.js +var require_waitForEvent = __commonJS({ + "node_modules/abort-controller-x/lib/waitForEvent.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.waitForEvent = void 0; + var execute_1 = require_execute(); + function waitForEvent(signal, target, eventName, options) { + return (0, execute_1.execute)(signal, (resolve) => { + let unlisten; + let finished = false; + const handler = (...args) => { + resolve(args.length > 1 ? args : args[0]); + finished = true; + if (unlisten != null) { + unlisten(); + } + }; + unlisten = listen(target, eventName, handler, options); + if (finished) { + unlisten(); + } + return () => { + finished = true; + if (unlisten != null) { + unlisten(); + } + }; + }); + } + exports.waitForEvent = waitForEvent; + function listen(target, eventName, handler, options) { + if (isEventTarget(target)) { + target.addEventListener(eventName, handler, options); + return () => target.removeEventListener(eventName, handler, options); + } + if (isJQueryStyleEventEmitter(target)) { + target.on(eventName, handler); + return () => target.off(eventName, handler); + } + if (isNodeStyleEventEmitter(target)) { + target.addListener(eventName, handler); + return () => target.removeListener(eventName, handler); + } + throw new Error("Invalid event target"); + } + function isNodeStyleEventEmitter(sourceObj) { + return isFunction(sourceObj.addListener) && isFunction(sourceObj.removeListener); + } + function isJQueryStyleEventEmitter(sourceObj) { + return isFunction(sourceObj.on) && isFunction(sourceObj.off); + } + function isEventTarget(sourceObj) { + return isFunction(sourceObj.addEventListener) && isFunction(sourceObj.removeEventListener); + } + var isFunction = (obj) => typeof obj === "function"; + } +}); + +// node_modules/abort-controller-x/lib/all.js +var require_all = __commonJS({ + "node_modules/abort-controller-x/lib/all.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.all = void 0; + var AbortError_1 = require_AbortError(); + function all(signal, executor) { + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(new AbortError_1.AbortError()); + return; + } + const innerAbortController = new AbortController(); + const promises = executor(innerAbortController.signal); + if (promises.length === 0) { + resolve([]); + return; + } + const abortListener = () => { + innerAbortController.abort(); + }; + signal.addEventListener("abort", abortListener); + let rejection; + const results = new Array(promises.length); + let settledCount = 0; + function settled() { + settledCount += 1; + if (settledCount === promises.length) { + signal.removeEventListener("abort", abortListener); + if (rejection != null) { + reject(rejection.reason); + } else { + resolve(results); + } + } + } + for (const [i, promise] of promises.entries()) { + promise.then((value) => { + results[i] = value; + settled(); + }, (reason) => { + innerAbortController.abort(); + if (rejection == null || !(0, AbortError_1.isAbortError)(reason) && (0, AbortError_1.isAbortError)(rejection.reason)) { + rejection = { reason }; + } + settled(); + }); + } + }); + } + exports.all = all; + } +}); + +// node_modules/abort-controller-x/lib/race.js +var require_race = __commonJS({ + "node_modules/abort-controller-x/lib/race.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.race = void 0; + var AbortError_1 = require_AbortError(); + function race(signal, executor) { + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(new AbortError_1.AbortError()); + return; + } + const innerAbortController = new AbortController(); + const promises = executor(innerAbortController.signal); + const abortListener = () => { + innerAbortController.abort(); + }; + signal.addEventListener("abort", abortListener); + let settledCount = 0; + function settled(result2) { + innerAbortController.abort(); + settledCount += 1; + if (settledCount === promises.length) { + signal.removeEventListener("abort", abortListener); + if (result2.status === "fulfilled") { + resolve(result2.value); + } else { + reject(result2.reason); + } + } + } + let result; + for (const promise of promises) { + promise.then((value) => { + if (result == null) { + result = { status: "fulfilled", value }; + } + settled(result); + }, (reason) => { + if (result == null || !(0, AbortError_1.isAbortError)(reason) && (result.status === "fulfilled" || (0, AbortError_1.isAbortError)(result.reason))) { + result = { status: "rejected", reason }; + } + settled(result); + }); + } + }); + } + exports.race = race; + } +}); + +// node_modules/abort-controller-x/lib/retry.js +var require_retry = __commonJS({ + "node_modules/abort-controller-x/lib/retry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.retry = void 0; + var delay_1 = require_delay(); + var AbortError_1 = require_AbortError(); + async function retry(signal, fn, options = {}) { + const { baseMs = 1e3, maxDelayMs = 3e4, onError, maxAttempts = Infinity } = options; + let attempt = 0; + const reset = () => { + attempt = -1; + }; + while (true) { + try { + return await fn(signal, attempt, reset); + } catch (error2) { + (0, AbortError_1.rethrowAbortError)(error2); + if (attempt >= maxAttempts) { + throw error2; + } + let delayMs; + if (attempt === -1) { + delayMs = 0; + } else { + const backoff = Math.min(maxDelayMs, Math.pow(2, attempt) * baseMs); + delayMs = Math.round(backoff * (1 + Math.random()) / 2); + } + if (onError) { + onError(error2, attempt, delayMs); + } + if (delayMs !== 0) { + await (0, delay_1.delay)(signal, delayMs); + } + attempt += 1; + } + } + } + exports.retry = retry; + } +}); + +// node_modules/abort-controller-x/lib/spawn.js +var require_spawn = __commonJS({ + "node_modules/abort-controller-x/lib/spawn.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.spawn = void 0; + var AbortError_1 = require_AbortError(); + function spawn(signal, fn) { + if (signal.aborted) { + return Promise.reject(new AbortError_1.AbortError()); + } + const deferredFunctions = []; + const spawnAbortController = new AbortController(); + const spawnSignal = spawnAbortController.signal; + const abortSpawn = () => { + spawnAbortController.abort(); + }; + signal.addEventListener("abort", abortSpawn); + const removeAbortListener = () => { + signal.removeEventListener("abort", abortSpawn); + }; + const tasks = /* @__PURE__ */ new Set(); + const abortTasks = () => { + for (const task of tasks) { + task.abort(); + } + }; + spawnSignal.addEventListener("abort", abortTasks); + const removeSpawnAbortListener = () => { + spawnSignal.removeEventListener("abort", abortTasks); + }; + let promise = new Promise((resolve, reject) => { + let result; + let failure; + fork((signal2) => fn(signal2, { + defer(fn2) { + deferredFunctions.push(fn2); + }, + fork + })).join().then((value) => { + spawnAbortController.abort(); + result = { value }; + }, (error2) => { + spawnAbortController.abort(); + if (!(0, AbortError_1.isAbortError)(error2) || failure == null) { + failure = { error: error2 }; + } + }); + function fork(forkFn) { + if (spawnSignal.aborted) { + return { + abort() { + }, + async join() { + throw new AbortError_1.AbortError(); + } + }; + } + const taskAbortController = new AbortController(); + const taskSignal = taskAbortController.signal; + const taskPromise = forkFn(taskSignal); + const task = { + abort() { + taskAbortController.abort(); + }, + join: () => taskPromise + }; + tasks.add(task); + taskPromise.catch(AbortError_1.catchAbortError).catch((error2) => { + failure = { error: error2 }; + spawnAbortController.abort(); + }).finally(() => { + tasks.delete(task); + if (tasks.size === 0) { + if (failure != null) { + reject(failure.error); + } else { + resolve(result.value); + } + } + }); + return task; + } + }); + promise = promise.finally(() => { + removeAbortListener(); + removeSpawnAbortListener(); + let deferPromise = Promise.resolve(); + for (let i = deferredFunctions.length - 1; i >= 0; i--) { + deferPromise = deferPromise.finally(deferredFunctions[i]); + } + return deferPromise; + }); + return promise; + } + exports.spawn = spawn; + } +}); + +// node_modules/abort-controller-x/lib/run.js +var require_run = __commonJS({ + "node_modules/abort-controller-x/lib/run.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.run = void 0; + var AbortError_1 = require_AbortError(); + function run(fn) { + const abortController = new AbortController(); + const promise = fn(abortController.signal).catch(AbortError_1.catchAbortError); + return () => { + abortController.abort(); + return promise; + }; + } + exports.run = run; + } +}); + +// node_modules/abort-controller-x/lib/proactiveRetry.js +var require_proactiveRetry = __commonJS({ + "node_modules/abort-controller-x/lib/proactiveRetry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.proactiveRetry = void 0; + var AbortError_1 = require_AbortError(); + var delay_1 = require_delay(); + var execute_1 = require_execute(); + function proactiveRetry(signal, fn, options = {}) { + const { baseMs = 1e3, onError, maxAttempts = Infinity } = options; + return (0, execute_1.execute)(signal, (resolve, reject) => { + const innerAbortController = new AbortController(); + let attemptsExhausted = false; + const promises = /* @__PURE__ */ new Map(); + function handleFulfilled(value) { + innerAbortController.abort(); + promises.clear(); + resolve(value); + } + function handleRejected(err, attempt) { + promises.delete(attempt); + if (attemptsExhausted && promises.size === 0) { + reject(err); + return; + } + if ((0, AbortError_1.isAbortError)(err)) { + return; + } + if (onError) { + try { + onError(err, attempt); + } catch (err2) { + innerAbortController.abort(); + promises.clear(); + reject(err2); + } + } + } + async function makeAttempts(signal2) { + for (let attempt = 0; ; attempt++) { + const promise = fn(signal2, attempt); + promises.set(attempt, promise); + promise.then(handleFulfilled, (err) => handleRejected(err, attempt)); + if (attempt + 1 >= maxAttempts) { + break; + } + const backoff = Math.pow(2, attempt) * baseMs; + const delayMs = Math.round(backoff * (1 + Math.random()) / 2); + await (0, delay_1.delay)(signal2, delayMs); + } + attemptsExhausted = true; + } + makeAttempts(innerAbortController.signal).catch(AbortError_1.catchAbortError); + return () => { + innerAbortController.abort(); + }; + }); + } + exports.proactiveRetry = proactiveRetry; + } +}); + +// node_modules/abort-controller-x/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/abort-controller-x/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(require_abortable(), exports); + __exportStar(require_AbortError(), exports); + __exportStar(require_delay(), exports); + __exportStar(require_execute(), exports); + __exportStar(require_forever(), exports); + __exportStar(require_waitForEvent(), exports); + __exportStar(require_all(), exports); + __exportStar(require_race(), exports); + __exportStar(require_retry(), exports); + __exportStar(require_spawn(), exports); + __exportStar(require_run(), exports); + __exportStar(require_proactiveRetry(), exports); + } +}); + +// node_modules/js-base64/base64.js +var require_base64 = __commonJS({ + "node_modules/js-base64/base64.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : ( + // cf. https://github.com/dankogai/js-base64/issues/119 + function() { + var _Base64 = global2.Base64; + var gBase64 = factory(); + gBase64.noConflict = function() { + global2.Base64 = _Base64; + return gBase64; + }; + if (global2.Meteor) { + Base64 = gBase64; + } + global2.Base64 = gBase64; + }() + ); + })(typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : exports, function() { + "use strict"; + var version = "3.7.7"; + var VERSION = version; + var _hasBuffer = typeof Buffer === "function"; + var _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0; + var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0; + var b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var b64chs = Array.prototype.slice.call(b64ch); + var b64tab = function(a) { + var tab = {}; + a.forEach(function(c, i) { + return tab[c] = i; + }); + return tab; + }(b64chs); + var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; + var _fromCC = String.fromCharCode.bind(String); + var _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : function(it) { + return new Uint8Array(Array.prototype.slice.call(it, 0)); + }; + var _mkUriSafe = function(src) { + return src.replace(/=/g, "").replace(/[+\/]/g, function(m0) { + return m0 == "+" ? "-" : "_"; + }); + }; + var _tidyB64 = function(s) { + return s.replace(/[^A-Za-z0-9\+\/]/g, ""); + }; + var btoaPolyfill = function(bin) { + var u32, c0, c1, c2, asc = ""; + var pad = bin.length % 3; + for (var i = 0; i < bin.length; ) { + if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError("invalid character found"); + u32 = c0 << 16 | c1 << 8 | c2; + asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; + }; + var _btoa = typeof btoa === "function" ? function(bin) { + return btoa(bin); + } : _hasBuffer ? function(bin) { + return Buffer.from(bin, "binary").toString("base64"); + } : btoaPolyfill; + var _fromUint8Array = _hasBuffer ? function(u8a) { + return Buffer.from(u8a).toString("base64"); + } : function(u8a) { + var maxargs = 4096; + var strs = []; + for (var i = 0, l = u8a.length; i < l; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join("")); + }; + var fromUint8Array = function(u8a, urlsafe) { + if (urlsafe === void 0) { + urlsafe = false; + } + return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); + }; + var cb_utob = function(c) { + if (c.length < 2) { + var cc = c.charCodeAt(0); + return cc < 128 ? c : cc < 2048 ? _fromCC(192 | cc >>> 6) + _fromCC(128 | cc & 63) : _fromCC(224 | cc >>> 12 & 15) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63); + } else { + var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320); + return _fromCC(240 | cc >>> 18 & 7) + _fromCC(128 | cc >>> 12 & 63) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + var utob = function(u) { + return u.replace(re_utob, cb_utob); + }; + var _encode = _hasBuffer ? function(s) { + return Buffer.from(s, "utf8").toString("base64"); + } : _TE ? function(s) { + return _fromUint8Array(_TE.encode(s)); + } : function(s) { + return _btoa(utob(s)); + }; + var encode = function(src, urlsafe) { + if (urlsafe === void 0) { + urlsafe = false; + } + return urlsafe ? _mkUriSafe(_encode(src)) : _encode(src); + }; + var encodeURI = function(src) { + return encode(src, true); + }; + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function(cccc) { + switch (cccc.length) { + case 4: + var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536; + return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320); + case 3: + return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2)); + default: + return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1)); + } + }; + var btou = function(b) { + return b.replace(re_btou, cb_btou); + }; + var atobPolyfill = function(asc) { + asc = asc.replace(/\s+/g, ""); + if (!b64re.test(asc)) + throw new TypeError("malformed base64."); + asc += "==".slice(2 - (asc.length & 3)); + var u24, bin = "", r1, r2; + for (var i = 0; i < asc.length; ) { + u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]); + bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); + } + return bin; + }; + var _atob = typeof atob === "function" ? function(asc) { + return atob(_tidyB64(asc)); + } : _hasBuffer ? function(asc) { + return Buffer.from(asc, "base64").toString("binary"); + } : atobPolyfill; + var _toUint8Array = _hasBuffer ? function(a) { + return _U8Afrom(Buffer.from(a, "base64")); + } : function(a) { + return _U8Afrom(_atob(a).split("").map(function(c) { + return c.charCodeAt(0); + })); + }; + var toUint8Array = function(a) { + return _toUint8Array(_unURI(a)); + }; + var _decode = _hasBuffer ? function(a) { + return Buffer.from(a, "base64").toString("utf8"); + } : _TD ? function(a) { + return _TD.decode(_toUint8Array(a)); + } : function(a) { + return btou(_atob(a)); + }; + var _unURI = function(a) { + return _tidyB64(a.replace(/[-_]/g, function(m0) { + return m0 == "-" ? "+" : "/"; + })); + }; + var decode = function(src) { + return _decode(_unURI(src)); + }; + var isValid = function(src) { + if (typeof src !== "string") + return false; + var s = src.replace(/\s+/g, "").replace(/={0,2}$/, ""); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); + }; + var _noEnum = function(v) { + return { + value: v, + enumerable: false, + writable: true, + configurable: true + }; + }; + var extendString = function() { + var _add = function(name, body) { + return Object.defineProperty(String.prototype, name, _noEnum(body)); + }; + _add("fromBase64", function() { + return decode(this); + }); + _add("toBase64", function(urlsafe) { + return encode(this, urlsafe); + }); + _add("toBase64URI", function() { + return encode(this, true); + }); + _add("toBase64URL", function() { + return encode(this, true); + }); + _add("toUint8Array", function() { + return toUint8Array(this); + }); + }; + var extendUint8Array = function() { + var _add = function(name, body) { + return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); + }; + _add("toBase64", function(urlsafe) { + return fromUint8Array(this, urlsafe); + }); + _add("toBase64URI", function() { + return fromUint8Array(this, true); + }); + _add("toBase64URL", function() { + return fromUint8Array(this, true); + }); + }; + var extendBuiltins = function() { + extendString(); + extendUint8Array(); + }; + var gBase64 = { + version, + VERSION, + atob: _atob, + atobPolyfill, + btoa: _btoa, + btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode, + encodeURI, + encodeURL: encodeURI, + utob, + btou, + decode, + isValid, + fromUint8Array, + toUint8Array, + extendString, + extendUint8Array, + extendBuiltins + }; + gBase64.Base64 = {}; + Object.keys(gBase64).forEach(function(k) { + return gBase64.Base64[k] = gBase64[k]; + }); + return gBase64; + }); + } +}); + +// node_modules/nice-grpc-web/lib/client/transports/fetch.js +var require_fetch = __commonJS({ + "node_modules/nice-grpc-web/lib/client/transports/fetch.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.FetchTransport = void 0; + var abort_controller_x_1 = require_lib2(); + var js_base64_1 = require_base64(); + var nice_grpc_common_1 = require_lib(); + function FetchTransport3(config) { + return async function* fetchTransport({ url, body, metadata, signal, method }) { + let requestBody; + if (!method.requestStream) { + let bodyBuffer; + for await (const chunk of body) { + bodyBuffer = chunk; + break; + } + requestBody = bodyBuffer; + } else { + let iterator; + requestBody = new ReadableStream({ + type: "bytes", + start() { + iterator = body[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + async cancel() { + var _a, _b; + await ((_b = (_a = iterator).return) === null || _b === void 0 ? void 0 : _b.call(_a)); + } + }); + } + const response = await fetch(url, { + method: "POST", + body: requestBody, + headers: metadataToHeaders(metadata), + signal, + cache: config === null || config === void 0 ? void 0 : config.cache, + ["duplex"]: "half", + credentials: config === null || config === void 0 ? void 0 : config.credentials + }); + yield { + type: "header", + header: headersToMetadata(response.headers) + }; + if (!response.ok) { + const responseText = await response.text(); + throw new nice_grpc_common_1.ClientError(method.path, getStatusFromHttpCode(response.status), getErrorDetailsFromHttpResponse(response.status, responseText)); + } + (0, abort_controller_x_1.throwIfAborted)(signal); + const reader = response.body.getReader(); + const abortListener = () => { + reader.cancel().catch(() => { + }); + }; + signal.addEventListener("abort", abortListener); + try { + while (true) { + const { done, value } = await reader.read(); + if (value != null) { + yield { + type: "data", + data: value + }; + } + if (done) { + break; + } + } + } finally { + signal.removeEventListener("abort", abortListener); + (0, abort_controller_x_1.throwIfAborted)(signal); + } + }; + } + exports.FetchTransport = FetchTransport3; + function metadataToHeaders(metadata) { + const headers = new Headers(); + for (const [key, values] of metadata) { + for (const value of values) { + headers.append(key, typeof value === "string" ? value : js_base64_1.Base64.fromUint8Array(value)); + } + } + return headers; + } + function headersToMetadata(headers) { + const metadata = new nice_grpc_common_1.Metadata(); + for (const [key, value] of headers) { + if (key.endsWith("-bin")) { + for (const item of value.split(/,\s?/)) { + metadata.append(key, js_base64_1.Base64.toUint8Array(item)); + } + } else { + metadata.set(key, value); + } + } + return metadata; + } + function getStatusFromHttpCode(statusCode) { + switch (statusCode) { + case 400: + return nice_grpc_common_1.Status.INTERNAL; + case 401: + return nice_grpc_common_1.Status.UNAUTHENTICATED; + case 403: + return nice_grpc_common_1.Status.PERMISSION_DENIED; + case 404: + return nice_grpc_common_1.Status.UNIMPLEMENTED; + case 429: + case 502: + case 503: + case 504: + return nice_grpc_common_1.Status.UNAVAILABLE; + default: + return nice_grpc_common_1.Status.UNKNOWN; + } + } + function getErrorDetailsFromHttpResponse(statusCode, responseText) { + return `Received HTTP ${statusCode} response: ` + (responseText.length > 1e3 ? responseText.slice(0, 1e3) + "... (truncated)" : responseText); + } + } +}); + +// node_modules/nice-grpc-web/lib/client/channel.js +var require_channel = __commonJS({ + "node_modules/nice-grpc-web/lib/client/channel.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createChannel = void 0; + var fetch_1 = require_fetch(); + function createChannel3(address, transport = (0, fetch_1.FetchTransport)()) { + return { address, transport }; + } + exports.createChannel = createChannel3; + } +}); + +// node_modules/nice-grpc-web/lib/utils/isAsyncIterable.js +var require_isAsyncIterable = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/isAsyncIterable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isAsyncIterable = void 0; + function isAsyncIterable(value) { + return value != null && Symbol.asyncIterator in value; + } + exports.isAsyncIterable = isAsyncIterable; + } +}); + +// node_modules/nice-grpc-web/lib/utils/concatBuffers.js +var require_concatBuffers = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/concatBuffers.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concatBuffers = void 0; + function concatBuffers(buffers, totalLength) { + if (buffers.length === 1) { + return buffers[0]; + } + const result = new Uint8Array(totalLength); + let offset = 0; + for (const buffer of buffers) { + result.set(buffer, offset); + offset += buffer.length; + } + return result; + } + exports.concatBuffers = concatBuffers; + } +}); + +// node_modules/nice-grpc-web/lib/client/decodeMetadata.js +var require_decodeMetadata = __commonJS({ + "node_modules/nice-grpc-web/lib/client/decodeMetadata.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decodeMetadata = void 0; + var nice_grpc_common_1 = require_lib(); + var js_base64_1 = require_base64(); + function decodeMetadata(data) { + const metadata = (0, nice_grpc_common_1.Metadata)(); + const text = new TextDecoder().decode(data); + for (const line of text.split("\r\n")) { + if (!line) { + continue; + } + const splitIndex = line.indexOf(":"); + if (splitIndex === -1) { + throw new Error(`Invalid metadata line: ${line}`); + } + const key = line.slice(0, splitIndex).trim().toLowerCase(); + const value = line.slice(splitIndex + 1).trim(); + if (key.endsWith("-bin")) { + for (const item of value.split(/,\s?/)) { + metadata.append(key, js_base64_1.Base64.toUint8Array(item)); + } + } else { + metadata.append(key, value); + } + } + return metadata; + } + exports.decodeMetadata = decodeMetadata; + } +}); + +// node_modules/nice-grpc-web/lib/client/framing.js +var require_framing = __commonJS({ + "node_modules/nice-grpc-web/lib/client/framing.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.encodeFrame = exports.parseLpmHeader = exports.LPM_HEADER_LENGTH = void 0; + exports.LPM_HEADER_LENGTH = 5; + function parseLpmHeader(data) { + if (data.length !== exports.LPM_HEADER_LENGTH) { + throw new Error(`Invalid LPM header length: ${data.length}`); + } + const view = new DataView(data.buffer, data.byteOffset, data.byteLength); + const compressed = (view.getUint8(0) & 1) !== 0; + const isMetadata = (view.getUint8(0) & 128) !== 0; + const length = view.getUint32(1); + return { + compressed, + isMetadata, + length + }; + } + exports.parseLpmHeader = parseLpmHeader; + function encodeFrame(data) { + const messageBytes = new Uint8Array(exports.LPM_HEADER_LENGTH + data.length); + new DataView(messageBytes.buffer, 1, 4).setUint32(0, data.length, false); + messageBytes.set(data, exports.LPM_HEADER_LENGTH); + return messageBytes; + } + exports.encodeFrame = encodeFrame; + } +}); + +// node_modules/nice-grpc-web/lib/client/decodeResponse.js +var require_decodeResponse = __commonJS({ + "node_modules/nice-grpc-web/lib/client/decodeResponse.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decodeResponse = void 0; + var concatBuffers_1 = require_concatBuffers(); + var decodeMetadata_1 = require_decodeMetadata(); + var framing_1 = require_framing(); + async function* decodeResponse({ response, decode, onHeader, onTrailer }) { + let receivedHeader = false; + let receivedTrailer = false; + let receivedData = false; + let buffer = createChunkBuffer(framing_1.LPM_HEADER_LENGTH); + let lpmHeader; + for await (const frame of response) { + if (frame.type === "header") { + handleHeader(frame.header); + } else if (frame.type === "trailer") { + handleTrailer(frame.trailer); + } else if (frame.type === "data") { + if (receivedTrailer) { + throw new Error("Received data after trailer"); + } + let { data } = frame; + while (data.length > 0 || (lpmHeader === null || lpmHeader === void 0 ? void 0 : lpmHeader.length) === 0) { + const position = Math.min(data.length, buffer.targetLength - buffer.totalLength); + const chunk = data.subarray(0, position); + data = data.subarray(position); + buffer.chunks.push(chunk); + buffer.totalLength += chunk.length; + if (buffer.totalLength === buffer.targetLength) { + const messageBytes = (0, concatBuffers_1.concatBuffers)(buffer.chunks, buffer.totalLength); + if (lpmHeader == null) { + lpmHeader = (0, framing_1.parseLpmHeader)(messageBytes); + buffer = createChunkBuffer(lpmHeader.length); + } else { + if (lpmHeader.compressed) { + throw new Error("Compressed messages not supported"); + } + if (lpmHeader.isMetadata) { + if (!receivedHeader) { + handleHeader((0, decodeMetadata_1.decodeMetadata)(messageBytes)); + } else { + handleTrailer((0, decodeMetadata_1.decodeMetadata)(messageBytes)); + } + } else { + if (!receivedHeader) { + throw new Error("Received data before header"); + } + yield decode(messageBytes); + receivedData = true; + } + lpmHeader = void 0; + buffer = createChunkBuffer(framing_1.LPM_HEADER_LENGTH); + } + } + } + } + } + function handleHeader(header) { + if (receivedHeader) { + throw new Error("Received multiple headers"); + } + if (receivedData) { + throw new Error("Received header after data"); + } + if (receivedTrailer) { + throw new Error("Received header after trailer"); + } + receivedHeader = true; + onHeader(header); + } + function handleTrailer(trailer) { + if (receivedTrailer) { + throw new Error("Received multiple trailers"); + } + receivedTrailer = true; + onTrailer(trailer); + } + function createChunkBuffer(targetLength) { + return { + chunks: [], + totalLength: 0, + targetLength + }; + } + } + exports.decodeResponse = decodeResponse; + } +}); + +// node_modules/nice-grpc-web/lib/client/encodeRequest.js +var require_encodeRequest = __commonJS({ + "node_modules/nice-grpc-web/lib/client/encodeRequest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.encodeRequest = void 0; + var framing_1 = require_framing(); + async function* encodeRequest({ request, encode }) { + for await (const data of request) { + const bytes = encode(data); + yield (0, framing_1.encodeFrame)(bytes); + } + } + exports.encodeRequest = encodeRequest; + } +}); + +// node_modules/nice-grpc-web/lib/client/makeInternalErrorMessage.js +var require_makeInternalErrorMessage = __commonJS({ + "node_modules/nice-grpc-web/lib/client/makeInternalErrorMessage.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.makeInternalErrorMessage = void 0; + function makeInternalErrorMessage(err) { + if (err == null || typeof err !== "object") { + return String(err); + } else if (typeof err.message === "string") { + return err.message; + } else { + return JSON.stringify(err); + } + } + exports.makeInternalErrorMessage = makeInternalErrorMessage; + } +}); + +// node_modules/nice-grpc-web/lib/client/parseTrailer.js +var require_parseTrailer = __commonJS({ + "node_modules/nice-grpc-web/lib/client/parseTrailer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseTrailer = void 0; + var nice_grpc_common_1 = require_lib(); + function parseTrailer(trailer) { + let status; + const statusValue = trailer.get("grpc-status"); + if (statusValue != null) { + const statusNum = +statusValue; + if (statusNum in nice_grpc_common_1.Status) { + status = statusNum; + } else { + throw new Error(`Received invalid status code from server: ${statusValue}`); + } + } else { + throw new Error("Received no status code from server"); + } + let message = trailer.get("grpc-message"); + if (message != null) { + try { + message = decodeURIComponent(message); + } catch (_a) { + } + } + const trailerCopy = (0, nice_grpc_common_1.Metadata)(trailer); + trailerCopy.delete("grpc-status"); + trailerCopy.delete("grpc-message"); + return { + status, + message, + trailer: trailerCopy + }; + } + exports.parseTrailer = parseTrailer; + } +}); + +// node_modules/nice-grpc-web/lib/client/makeCall.js +var require_makeCall = __commonJS({ + "node_modules/nice-grpc-web/lib/client/makeCall.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.makeCall = void 0; + var abort_controller_x_1 = require_lib2(); + var nice_grpc_common_1 = require_lib(); + var decodeResponse_1 = require_decodeResponse(); + var encodeRequest_1 = require_encodeRequest(); + var makeInternalErrorMessage_1 = require_makeInternalErrorMessage(); + var parseTrailer_1 = require_parseTrailer(); + async function* makeCall(definition, channel, request, options) { + const { metadata, signal = new AbortController().signal, onHeader, onTrailer } = options; + let receivedTrailersOnly = false; + let status; + let message; + function handleTrailer(trailer) { + if (receivedTrailersOnly) { + if (new Map(trailer).size > 0) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Received non-empty trailer after trailers-only response"); + } else { + return; + } + } + const parsedTrailer = (0, parseTrailer_1.parseTrailer)(trailer); + ({ status, message } = parsedTrailer); + onTrailer === null || onTrailer === void 0 ? void 0 : onTrailer(parsedTrailer.trailer); + } + const finalMetadata = (0, nice_grpc_common_1.Metadata)(metadata); + finalMetadata.set("content-type", "application/grpc-web+proto"); + finalMetadata.set("x-grpc-web", "1"); + const innerAbortController = new AbortController(); + const abortListener = () => { + innerAbortController.abort(); + }; + signal.addEventListener("abort", abortListener); + let finished = false; + let requestError; + async function* interceptRequestError() { + try { + for await (const item of request) { + if (finished) { + throw new Error("Request finished"); + } + yield item; + } + } catch (err) { + requestError = { err }; + innerAbortController.abort(); + throw err; + } + } + async function* handleTransportErrors() { + try { + return yield* channel.transport({ + url: channel.address + definition.path, + metadata: finalMetadata, + body: (0, encodeRequest_1.encodeRequest)({ + request: interceptRequestError(), + encode: definition.requestSerialize + }), + signal: innerAbortController.signal, + method: definition + }); + } catch (err) { + (0, abort_controller_x_1.rethrowAbortError)(err); + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.UNKNOWN, `Transport error: ${(0, makeInternalErrorMessage_1.makeInternalErrorMessage)(err)}`); + } + } + const response = (0, decodeResponse_1.decodeResponse)({ + response: handleTransportErrors(), + decode: definition.responseDeserialize, + onHeader(header) { + const isTrailersOnly = header.has("grpc-status"); + if (isTrailersOnly) { + handleTrailer(header); + receivedTrailersOnly = true; + } else { + onHeader === null || onHeader === void 0 ? void 0 : onHeader(header); + } + }, + onTrailer(trailer) { + handleTrailer(trailer); + } + }); + try { + yield* response; + } catch (err) { + if (requestError !== void 0) { + throw requestError.err; + } else if (err instanceof nice_grpc_common_1.ClientError || (0, abort_controller_x_1.isAbortError)(err)) { + throw err; + } else { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, (0, makeInternalErrorMessage_1.makeInternalErrorMessage)(err)); + } + } finally { + finished = true; + signal.removeEventListener("abort", abortListener); + if (status != null && status !== nice_grpc_common_1.Status.OK) { + throw new nice_grpc_common_1.ClientError(definition.path, status, message !== null && message !== void 0 ? message : ""); + } + } + if (status == null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.UNKNOWN, 'Response stream closed without gRPC status. This may indicate a misconfigured CORS policy on the server: Access-Control-Expose-Headers must include "grpc-status" and "grpc-message".'); + } + } + exports.makeCall = makeCall; + } +}); + +// node_modules/nice-grpc-web/lib/client/createBidiStreamingMethod.js +var require_createBidiStreamingMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createBidiStreamingMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createBidiStreamingMethod = void 0; + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createBidiStreamingMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* bidiStreamingMethod(request, options) { + if (!(0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw new Error("A middleware passed invalid request to next(): expected a single message for bidirectional streaming method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, request, options); + yield* response; + } + const method = middleware == null ? bidiStreamingMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: true, + request, + responseStream: true, + next: bidiStreamingMethod + }, options); + return (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + return { + [Symbol.asyncIterator]() { + return { + async next() { + const result = await iterator.next(); + if (result.done && result.value != null) { + return await iterator.throw(new Error("A middleware returned a message, but expected to return void for bidirectional streaming method")); + } + return result; + }, + return() { + return iterator.return(); + }, + throw(err) { + return iterator.throw(err); + } + }; + } + }; + }; + } + exports.createBidiStreamingMethod = createBidiStreamingMethod; + } +}); + +// node_modules/nice-grpc-web/lib/client/createClientStreamingMethod.js +var require_createClientStreamingMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createClientStreamingMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createClientStreamingMethod = void 0; + var nice_grpc_common_1 = require_lib(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createClientStreamingMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* clientStreamingMethod(request, options) { + if (!(0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw Error("A middleware passed invalid request to next(): expected a single message for client streaming method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, request, options); + let unaryResponse; + for await (const message of response) { + if (unaryResponse != null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Received more than one message from server for client streaming method"); + } + unaryResponse = message; + } + if (unaryResponse == null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Server did not return a response"); + } + return unaryResponse; + } + const method = middleware == null ? clientStreamingMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: true, + request, + responseStream: false, + next: clientStreamingMethod + }, options); + return async (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + let result = await iterator.next(); + while (true) { + if (!result.done) { + result = await iterator.throw(new Error("A middleware yielded a message, but expected to only return a message for client streaming method")); + continue; + } + if (result.value == null) { + result = await iterator.throw(new Error("A middleware returned void, but expected to return a message for client streaming method")); + continue; + } + return result.value; + } + }; + } + exports.createClientStreamingMethod = createClientStreamingMethod; + } +}); + +// node_modules/nice-grpc-web/lib/utils/asyncIterableOf.js +var require_asyncIterableOf = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/asyncIterableOf.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.asyncIterableOf = void 0; + async function* asyncIterableOf(item) { + yield item; + } + exports.asyncIterableOf = asyncIterableOf; + } +}); + +// node_modules/nice-grpc-web/lib/client/createServerStreamingMethod.js +var require_createServerStreamingMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createServerStreamingMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createServerStreamingMethod = void 0; + var asyncIterableOf_1 = require_asyncIterableOf(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createServerStreamingMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* serverStreamingMethod(request, options) { + if ((0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw new Error("A middleware passed invalid request to next(): expected a single message for server streaming method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, (0, asyncIterableOf_1.asyncIterableOf)(request), options); + yield* response; + } + const method = middleware == null ? serverStreamingMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: false, + request, + responseStream: true, + next: serverStreamingMethod + }, options); + return (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + return { + [Symbol.asyncIterator]() { + return { + async next() { + const result = await iterator.next(); + if (result.done && result.value != null) { + return await iterator.throw(new Error("A middleware returned a message, but expected to return void for server streaming method")); + } + return result; + }, + return() { + return iterator.return(); + }, + throw(err) { + return iterator.throw(err); + } + }; + } + }; + }; + } + exports.createServerStreamingMethod = createServerStreamingMethod; + } +}); + +// node_modules/nice-grpc-web/lib/client/createUnaryMethod.js +var require_createUnaryMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createUnaryMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createUnaryMethod = void 0; + var nice_grpc_common_1 = require_lib(); + var asyncIterableOf_1 = require_asyncIterableOf(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createUnaryMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* unaryMethod(request, options) { + if ((0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw new Error("A middleware passed invalid request to next(): expected a single message for unary method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, (0, asyncIterableOf_1.asyncIterableOf)(request), options); + let unaryResponse; + for await (const message of response) { + if (unaryResponse != null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Received more than one message from server for unary method"); + } + unaryResponse = message; + } + if (unaryResponse == null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Server did not return a response"); + } + return unaryResponse; + } + const method = middleware == null ? unaryMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: false, + request, + responseStream: false, + next: unaryMethod + }, options); + return async (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + let result = await iterator.next(); + while (true) { + if (!result.done) { + result = await iterator.throw(new Error("A middleware yielded a message, but expected to only return a message for unary method")); + continue; + } + if (result.value == null) { + result = await iterator.throw(new Error("A middleware returned void, but expected to return a message for unary method")); + continue; + } + return result.value; + } + }; + } + exports.createUnaryMethod = createUnaryMethod; + } +}); + +// node_modules/nice-grpc-web/lib/client/ClientFactory.js +var require_ClientFactory = __commonJS({ + "node_modules/nice-grpc-web/lib/client/ClientFactory.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createClient = exports.createClientFactory = void 0; + var nice_grpc_common_1 = require_lib(); + var service_definitions_1 = require_service_definitions(); + var createBidiStreamingMethod_1 = require_createBidiStreamingMethod(); + var createClientStreamingMethod_1 = require_createClientStreamingMethod(); + var createServerStreamingMethod_1 = require_createServerStreamingMethod(); + var createUnaryMethod_1 = require_createUnaryMethod(); + function createClientFactory3() { + return createClientFactoryWithMiddleware(); + } + exports.createClientFactory = createClientFactory3; + function createClient(definition, channel, defaultCallOptions) { + return createClientFactory3().create(definition, channel, defaultCallOptions); + } + exports.createClient = createClient; + function createClientFactoryWithMiddleware(middleware) { + return { + use(newMiddleware) { + return createClientFactoryWithMiddleware(middleware == null ? newMiddleware : (0, nice_grpc_common_1.composeClientMiddleware)(middleware, newMiddleware)); + }, + create(definition, channel, defaultCallOptions = {}) { + const client = {}; + const methodEntries = Object.entries((0, service_definitions_1.normalizeServiceDefinition)(definition)); + for (const [methodName, methodDefinition] of methodEntries) { + const defaultOptions = { + ...defaultCallOptions["*"], + ...defaultCallOptions[methodName] + }; + if (!methodDefinition.requestStream) { + if (!methodDefinition.responseStream) { + client[methodName] = (0, createUnaryMethod_1.createUnaryMethod)(methodDefinition, channel, middleware, defaultOptions); + } else { + client[methodName] = (0, createServerStreamingMethod_1.createServerStreamingMethod)(methodDefinition, channel, middleware, defaultOptions); + } + } else { + if (!methodDefinition.responseStream) { + client[methodName] = (0, createClientStreamingMethod_1.createClientStreamingMethod)(methodDefinition, channel, middleware, defaultOptions); + } else { + client[methodName] = (0, createBidiStreamingMethod_1.createBidiStreamingMethod)(methodDefinition, channel, middleware, defaultOptions); + } + } + } + return client; + } + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/Client.js +var require_Client = __commonJS({ + "node_modules/nice-grpc-web/lib/client/Client.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/isomorphic-ws/browser.js +var browser_exports = {}; +__export(browser_exports, { + default: () => browser_default +}); +var ws, browser_default; +var init_browser = __esm({ + "node_modules/isomorphic-ws/browser.js"() { + ws = null; + if (typeof WebSocket !== "undefined") { + ws = WebSocket; + } else if (typeof MozWebSocket !== "undefined") { + ws = MozWebSocket; + } else if (typeof global !== "undefined") { + ws = global.WebSocket || global.MozWebSocket; + } else if (typeof window !== "undefined") { + ws = window.WebSocket || window.MozWebSocket; + } else if (typeof self !== "undefined") { + ws = self.WebSocket || self.MozWebSocket; + } + browser_default = ws; + } +}); + +// node_modules/nice-grpc-web/lib/utils/AsyncSink.js +var require_AsyncSink = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/AsyncSink.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsyncSink = void 0; + var ARRAY_VALUE = "value"; + var ARRAY_ERROR = "error"; + var AsyncSink = class { + constructor() { + this._ended = false; + this._values = []; + this._resolvers = []; + } + [Symbol.asyncIterator]() { + return this; + } + write(value) { + this._push({ type: ARRAY_VALUE, value }); + } + error(error2) { + this._push({ type: ARRAY_ERROR, error: error2 }); + } + _push(item) { + if (this._ended) { + return; + } + if (this._resolvers.length > 0) { + const { resolve, reject } = this._resolvers.shift(); + if (item.type === ARRAY_ERROR) { + reject(item.error); + } else { + resolve({ done: false, value: item.value }); + } + } else { + this._values.push(item); + } + } + next() { + if (this._values.length > 0) { + const { type, value, error: error2 } = this._values.shift(); + if (type === ARRAY_ERROR) { + return Promise.reject(error2); + } else { + return Promise.resolve({ done: false, value }); + } + } + if (this._ended) { + return Promise.resolve({ done: true }); + } + return new Promise((resolve, reject) => { + this._resolvers.push({ resolve, reject }); + }); + } + end() { + while (this._resolvers.length > 0) { + this._resolvers.shift().resolve({ done: true }); + } + this._ended = true; + } + }; + exports.AsyncSink = AsyncSink; + } +}); + +// node_modules/nice-grpc-web/lib/client/transports/websocket.js +var require_websocket = __commonJS({ + "node_modules/nice-grpc-web/lib/client/transports/websocket.js"(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod) { + return mod && mod.__esModule ? mod : { "default": mod }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.WebsocketTransport = void 0; + var abort_controller_x_1 = require_lib2(); + var isomorphic_ws_1 = __importDefault((init_browser(), __toCommonJS(browser_exports))); + var js_base64_1 = require_base64(); + var AsyncSink_1 = require_AsyncSink(); + function WebsocketTransport() { + return async function* ({ url, body, metadata, signal }) { + if (signal.aborted) { + throw new abort_controller_x_1.AbortError(); + } + const frames = new AsyncSink_1.AsyncSink(); + signal.addEventListener("abort", () => { + frames.error(new abort_controller_x_1.AbortError()); + }); + const websocketUrl = new URL(url); + websocketUrl.protocol = websocketUrl.protocol.replace("http", "ws"); + const webSocket = new isomorphic_ws_1.default(websocketUrl, ["grpc-websockets"]); + webSocket.binaryType = "arraybuffer"; + webSocket.addEventListener("message", (event) => { + if (event.data instanceof ArrayBuffer) { + frames.write({ + type: "data", + data: new Uint8Array(event.data) + }); + } else { + frames.error(new Error(`Unexpected message type: ${typeof event.data}`)); + } + }); + webSocket.addEventListener("close", (event) => { + if (event.wasClean) { + frames.end(); + } else { + frames.error(new Error(`WebSocket closed with code ${event.code}` + (event.reason && `: ${event.reason}`))); + } + }); + const pipeAbortController = new AbortController(); + pipeBody(pipeAbortController.signal, metadata, body, webSocket).catch((err) => { + if (!(0, abort_controller_x_1.isAbortError)(err)) { + frames.error(err); + } + }); + try { + return yield* frames; + } finally { + pipeAbortController.abort(); + webSocket.close(); + } + }; + } + exports.WebsocketTransport = WebsocketTransport; + async function pipeBody(signal, metadata, body, webSocket) { + if (webSocket.readyState == isomorphic_ws_1.default.CONNECTING) { + await (0, abort_controller_x_1.waitForEvent)(signal, webSocket, "open"); + } + webSocket.send(encodeMetadata(metadata)); + for await (const chunk of body) { + (0, abort_controller_x_1.throwIfAborted)(signal); + const data = new Uint8Array(chunk.length + 1); + data.set([0], 0); + data.set(chunk, 1); + webSocket.send(data); + } + webSocket.send(new Uint8Array([1])); + } + function encodeMetadata(metadata) { + let result = ""; + for (const [key, values] of metadata) { + for (const value of values) { + const valueString = typeof value === "string" ? value : js_base64_1.Base64.fromUint8Array(value); + const pairString = `${key}: ${valueString}\r +`; + for (let i = 0; i < pairString.length; i++) { + const charCode = pairString.charCodeAt(i); + if (!isValidCharCode(charCode)) { + throw new Error(`Metadata contains invalid characters: '${pairString}'`); + } + } + result += pairString; + } + } + return new TextEncoder().encode(result); + } + function isValidCharCode(val) { + return val === 9 || val === 10 || val === 13 || val >= 32 && val <= 126; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/transports/nodeHttp/browser.js +var require_browser = __commonJS({ + "node_modules/nice-grpc-web/lib/client/transports/nodeHttp/browser.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttpTransport = void 0; + function NodeHttpTransport() { + throw new Error("NodeHttpTransport is not supported in the browser"); + } + exports.NodeHttpTransport = NodeHttpTransport; + } +}); + +// node_modules/nice-grpc-web/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/nice-grpc-web/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar = exports && exports.__exportStar || function(m, exports2) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) + __createBinding(exports2, m, p); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttpTransport = exports.WebsocketTransport = exports.FetchTransport = exports.Status = exports.Metadata = exports.composeClientMiddleware = exports.ClientError = void 0; + var nice_grpc_common_1 = require_lib(); + Object.defineProperty(exports, "ClientError", { enumerable: true, get: function() { + return nice_grpc_common_1.ClientError; + } }); + Object.defineProperty(exports, "composeClientMiddleware", { enumerable: true, get: function() { + return nice_grpc_common_1.composeClientMiddleware; + } }); + Object.defineProperty(exports, "Metadata", { enumerable: true, get: function() { + return nice_grpc_common_1.Metadata; + } }); + Object.defineProperty(exports, "Status", { enumerable: true, get: function() { + return nice_grpc_common_1.Status; + } }); + __exportStar(require_service_definitions(), exports); + __exportStar(require_channel(), exports); + __exportStar(require_ClientFactory(), exports); + __exportStar(require_Client(), exports); + var fetch_1 = require_fetch(); + Object.defineProperty(exports, "FetchTransport", { enumerable: true, get: function() { + return fetch_1.FetchTransport; + } }); + var websocket_1 = require_websocket(); + Object.defineProperty(exports, "WebsocketTransport", { enumerable: true, get: function() { + return websocket_1.WebsocketTransport; + } }); + var nodeHttp_1 = require_browser(); + Object.defineProperty(exports, "NodeHttpTransport", { enumerable: true, get: function() { + return nodeHttp_1.NodeHttpTransport; + } }); + } +}); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => MemosSyncPlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian4 = require("obsidian"); + +// src/services/DailyMemos/DailyMemos.ts +var import_obsidian_daily_notes_interface = __toESM(require_main()); +var import_obsidian3 = require("obsidian"); + +// src/utils/log.ts +var import_obsidian = require("obsidian"); +var env = "production"; +function debug(msg) { + if (env === "production") + return; + console.debug(msg); +} +function info(msg) { + new import_obsidian.Notice(msg, 5e3); + console.info(msg); +} +function warn(msg) { + new import_obsidian.Notice(msg); + console.warn(msg); +} +function error(msg) { + new import_obsidian.Notice(msg); + console.error(msg); +} + +// src/services/DailyMemos/DailyNoteModifier.ts +function generateHeaderRegExp(header) { + const formattedHeader = /^#+/.test(header.trim()) ? header.trim() : `# ${header.trim()}`; + const reg = new RegExp(`(${formattedHeader}[^ +]*)([\\s\\S]*?)(?=\\n#|$)`); + return reg; +} +var DailyNoteModifier = class { + constructor(dailyMemosHeader) { + this.dailyMemosHeader = dailyMemosHeader; + /** + * Daily Notes will be: + * ```markdown + * contents before + * ... + * + * # The Header + * - memos + * - memos + * + * contents after + * ``` + * + * @returns modifiedFileContent + */ + this.modifyDailyNote = (originFileContent, today, fetchedRecordList) => { + var _a, _b; + const header = this.dailyMemosHeader; + const reg = generateHeaderRegExp(header); + const regMatch = originFileContent.match(reg); + if (!(regMatch == null ? void 0 : regMatch.length) || regMatch.index === void 0) { + debug(`${regMatch}`); + warn( + `Failed to find header for ${today}. Please make sure your daily note template is correct.` + ); + return; + } + const localRecordContent = (_a = regMatch[2]) == null ? void 0 : _a.trim(); + const from = regMatch.index + regMatch[1].length + 1; + const to = from + localRecordContent.length + 1; + const prefix = originFileContent.slice(0, from); + const suffix = originFileContent.slice(to); + const localRecordList = localRecordContent ? localRecordContent.split(/\n(?=- )/g) : []; + const existedRecordList = {}; + for (const record of localRecordList) { + const regMatch2 = record.match(/.*\^(\d{10})/); + const createdTs = (regMatch2 == null ? void 0 : regMatch2.length) ? (_b = regMatch2[1]) == null ? void 0 : _b.trim() : ""; + if (createdTs) { + existedRecordList[createdTs] = record; + } + } + debug( + `for ${today} + +fetchedRecordList: ${JSON.stringify({ + from, + to, + prefix, + suffix, + localRecordList, + existedRecordList + })}` + ); + const sortedRecordList = Object.entries({ + ...existedRecordList, + ...fetchedRecordList + }).sort((a, b) => Number(a[0]) - Number(b[0])).map((item) => item[1]).join("\n"); + const modifiedFileContent = prefix.trim() + ` + +${sortedRecordList} + +` + suffix.trim() + ` +`; + return modifiedFileContent; + }; + } +}; + +// src/services/DailyMemos/MemosResource.ts +function convert0220ResourceToAPIResource(resource) { + return { + id: resource.name.replace("resources/", ""), + filename: resource.filename, + externalLink: resource.externalLink, + name: resource.name, + type: resource.type, + uid: resource.uid + }; +} +function generateResourceName(resource) { + return `${resource.id}-${resource.filename.replace(/[/\\?%*:|"<>]/g, "-")}`; +} +function generateResourceLink(resource) { + var _a; + if (!resource.externalLink) { + return `![[${generateResourceName(resource)}]]`; + } + const prefix = ((_a = resource.type) == null ? void 0 : _a.includes("image")) ? "!" : ""; + return `${prefix}[${resource.name || resource.filename}](${resource.externalLink})`; +} + +// src/services/DailyMemos/MemosPaginator.ts +function transformAPIToMdItemMemo(param) { + const { timestamp, content, resources } = param; + const [date, time] = window.moment(timestamp * 1e3).format("YYYY-MM-DD HH:mm").split(" "); + const [firstLine, ...otherLine] = content.trim().split("\n"); + const taskMatch = firstLine.match(/(- \[.?\])(.*)/); + const isCode = /```/.test(firstLine); + let targetFirstLine = ""; + if (taskMatch) { + targetFirstLine = `${taskMatch[1]} ${time} ${taskMatch[2]}`; + } else if (isCode) { + targetFirstLine = `- ${time}`; + otherLine.unshift(firstLine); + } else { + targetFirstLine = `- ${time} ${firstLine.replace(/^- /, "")}`; + } + targetFirstLine += ` #daily-record ^${timestamp}`; + const targetOtherLine = (otherLine == null ? void 0 : otherLine.length) ? "\n" + otherLine.filter((line) => line.trim()).map((line) => ` ${line}`).join("\n").trimEnd() : ""; + const targetResourceLine = (resources == null ? void 0 : resources.length) ? "\n" + (resources == null ? void 0 : resources.map( + (resource) => ` - ${generateResourceLink(resource)}` + ).join("\n")) : ""; + const finalTargetContent = targetFirstLine + targetOtherLine + targetResourceLine; + return { + date, + timestamp: String(timestamp), + content: finalTargetContent + }; +} +var MemosPaginator0191 = class { + constructor(client, lastTime, filter) { + this.client = client; + this.filter = filter; + /** + * return lastTime + * @param handle + * @returns + */ + this.foreach = async (handle) => { + var _a, _b, _c; + this.offset = 0; + while (true) { + const memos = await this.client.listMemos(this.limit, this.offset) || []; + const mostRecentRecordTimeStamp = ((_a = memos[0]) == null ? void 0 : _a.createdAt) ? window.moment((_b = memos[0]) == null ? void 0 : _b.createdAt).unix() : (_c = memos[0]) == null ? void 0 : _c.createdTs; + if (!memos.length || mostRecentRecordTimeStamp * 1e3 < Number(this.lastTime)) { + debug("No new daily memos found."); + this.lastTime = Date.now().toString(); + return this.lastTime; + } + const dailyMemosByDay = this.generalizeDailyMemos(memos); + await Promise.all( + Object.entries(dailyMemosByDay).map( + async ([today, dailyMemosForToday]) => { + if (this.filter && !this.filter(today, dailyMemosForToday)) { + return; + } + await handle([today, dailyMemosForToday]); + } + ) + ); + this.lastTime = String(mostRecentRecordTimeStamp * 1e3); + this.offset += memos.length; + } + }; + // generalize daily memos by day and timestamp + // map> + this.generalizeDailyMemos = (memos) => { + var _a; + const dailyMemosByDay = {}; + for (const memo of memos) { + if (!memo.content && !((_a = memo.resourceList) == null ? void 0 : _a.length)) { + continue; + } + const { createdTs, createdAt } = memo; + const timestampInput = createdAt ? window.moment(createdAt).unix() : createdTs; + const mdItemMemo = transformAPIToMdItemMemo({ + timestamp: timestampInput, + content: memo.content, + resources: memo.resourceList + }); + if (!dailyMemosByDay[mdItemMemo.date]) { + dailyMemosByDay[mdItemMemo.date] = {}; + } + dailyMemosByDay[mdItemMemo.date][mdItemMemo.timestamp] = mdItemMemo.content; + } + return dailyMemosByDay; + }; + this.limit = 50; + this.offset = 0; + this.lastTime = lastTime || ""; + } +}; +var MemosPaginator0220 = class { + constructor(memoListPaginator, authCli, lastTime, filter) { + this.memoListPaginator = memoListPaginator; + this.authCli = authCli; + this.filter = filter; + /** + * return lastTime + * @param handle + * @returns + */ + this.foreach = async (handle) => { + var _a, _b, _c; + this.pageToken = ""; + const currentUser = await this.authCli.getAuthStatus({}); + while (true) { + const resp = await this.memoListPaginator.listMemos( + this.pageSize, + this.pageToken, + currentUser + ); + debug( + `resp for pageToken ${this.pageToken}: ${JSON.stringify(resp)}` + ); + if (!resp) { + debug("No new daily memos found."); + this.lastTime = Date.now().toString(); + return this.lastTime; + } + const { memos, nextPageToken } = resp; + const mostRecentRecordTimeStamp = ((_a = memos[0]) == null ? void 0 : _a.updateTime) ? window.moment((_b = memos[0]) == null ? void 0 : _b.updateTime).unix() : window.moment((_c = memos[0]) == null ? void 0 : _c.createTime).unix(); + if (!memos.length || mostRecentRecordTimeStamp * 1e3 < Number(this.lastTime)) { + debug("No new daily memos found."); + this.lastTime = Date.now().toString(); + return this.lastTime; + } + const dailyMemosByDay = this.generalizeDailyMemos(memos); + await Promise.all( + Object.entries(dailyMemosByDay).map( + async ([today, dailyMemosForToday]) => { + if (this.filter && !this.filter(today, dailyMemosForToday)) { + return; + } + await handle([today, dailyMemosForToday]); + } + ) + ); + this.lastTime = String(mostRecentRecordTimeStamp * 1e3); + if (!nextPageToken) { + return this.lastTime; + } + this.pageToken = nextPageToken; + } + }; + // generalize daily memos by day and timestamp + // map> + this.generalizeDailyMemos = (memos) => { + var _a, _b; + const dailyMemosByDay = {}; + for (const memo of memos) { + if (!memo.content && !((_a = memo.resources) == null ? void 0 : _a.length)) { + continue; + } + const resources = (_b = memo.resources) == null ? void 0 : _b.map( + convert0220ResourceToAPIResource + ); + const mdItemMemo = transformAPIToMdItemMemo({ + timestamp: window.moment(memo.createTime).unix(), + content: memo.content, + resources + }); + if (!dailyMemosByDay[mdItemMemo.date]) { + dailyMemosByDay[mdItemMemo.date] = {}; + } + dailyMemosByDay[mdItemMemo.date][mdItemMemo.timestamp] = mdItemMemo.content; + } + return dailyMemosByDay; + }; + this.pageSize = 50; + this.pageToken = ""; + this.lastTime = lastTime || ""; + } +}; + +// src/api/memos-v0.22.0.ts +var import_nice_grpc_web2 = __toESM(require_lib3()); + +// node_modules/@bufbuild/protobuf/dist/esm/wire/varint.js +function varint64read() { + let lowBits = 0; + let highBits = 0; + for (let shift = 0; shift < 28; shift += 7) { + let b = this.buf[this.pos++]; + lowBits |= (b & 127) << shift; + if ((b & 128) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + } + let middleByte = this.buf[this.pos++]; + lowBits |= (middleByte & 15) << 28; + highBits = (middleByte & 112) >> 4; + if ((middleByte & 128) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + for (let shift = 3; shift <= 31; shift += 7) { + let b = this.buf[this.pos++]; + highBits |= (b & 127) << shift; + if ((b & 128) == 0) { + this.assertBounds(); + return [lowBits, highBits]; + } + } + throw new Error("invalid varint"); +} +function varint64write(lo, hi, bytes) { + for (let i = 0; i < 28; i = i + 7) { + const shift = lo >>> i; + const hasNext = !(shift >>> 7 == 0 && hi == 0); + const byte = (hasNext ? shift | 128 : shift) & 255; + bytes.push(byte); + if (!hasNext) { + return; + } + } + const splitBits = lo >>> 28 & 15 | (hi & 7) << 4; + const hasMoreBits = !(hi >> 3 == 0); + bytes.push((hasMoreBits ? splitBits | 128 : splitBits) & 255); + if (!hasMoreBits) { + return; + } + for (let i = 3; i < 31; i = i + 7) { + const shift = hi >>> i; + const hasNext = !(shift >>> 7 == 0); + const byte = (hasNext ? shift | 128 : shift) & 255; + bytes.push(byte); + if (!hasNext) { + return; + } + } + bytes.push(hi >>> 31 & 1); +} +var TWO_PWR_32_DBL = 4294967296; +function int64FromString(dec) { + const minus = dec[0] === "-"; + if (minus) { + dec = dec.slice(1); + } + const base = 1e6; + let lowBits = 0; + let highBits = 0; + function add1e6digit(begin, end) { + const digit1e6 = Number(dec.slice(begin, end)); + highBits *= base; + lowBits = lowBits * base + digit1e6; + if (lowBits >= TWO_PWR_32_DBL) { + highBits = highBits + (lowBits / TWO_PWR_32_DBL | 0); + lowBits = lowBits % TWO_PWR_32_DBL; + } + } + add1e6digit(-24, -18); + add1e6digit(-18, -12); + add1e6digit(-12, -6); + add1e6digit(-6); + return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits); +} +function int64ToString(lo, hi) { + let bits = newBits(lo, hi); + const negative = bits.hi & 2147483648; + if (negative) { + bits = negate(bits.lo, bits.hi); + } + const result = uInt64ToString(bits.lo, bits.hi); + return negative ? "-" + result : result; +} +function uInt64ToString(lo, hi) { + ({ lo, hi } = toUnsigned(lo, hi)); + if (hi <= 2097151) { + return String(TWO_PWR_32_DBL * hi + lo); + } + const low = lo & 16777215; + const mid = (lo >>> 24 | hi << 8) & 16777215; + const high = hi >> 16 & 65535; + let digitA = low + mid * 6777216 + high * 6710656; + let digitB = mid + high * 8147497; + let digitC = high * 2; + const base = 1e7; + if (digitA >= base) { + digitB += Math.floor(digitA / base); + digitA %= base; + } + if (digitB >= base) { + digitC += Math.floor(digitB / base); + digitB %= base; + } + return digitC.toString() + decimalFrom1e7WithLeadingZeros(digitB) + decimalFrom1e7WithLeadingZeros(digitA); +} +function toUnsigned(lo, hi) { + return { lo: lo >>> 0, hi: hi >>> 0 }; +} +function newBits(lo, hi) { + return { lo: lo | 0, hi: hi | 0 }; +} +function negate(lowBits, highBits) { + highBits = ~highBits; + if (lowBits) { + lowBits = ~lowBits + 1; + } else { + highBits += 1; + } + return newBits(lowBits, highBits); +} +var decimalFrom1e7WithLeadingZeros = (digit1e7) => { + const partial = String(digit1e7); + return "0000000".slice(partial.length) + partial; +}; +function varint32write(value, bytes) { + if (value >= 0) { + while (value > 127) { + bytes.push(value & 127 | 128); + value = value >>> 7; + } + bytes.push(value); + } else { + for (let i = 0; i < 9; i++) { + bytes.push(value & 127 | 128); + value = value >> 7; + } + bytes.push(1); + } +} +function varint32read() { + let b = this.buf[this.pos++]; + let result = b & 127; + if ((b & 128) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 127) << 7; + if ((b & 128) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 127) << 14; + if ((b & 128) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 127) << 21; + if ((b & 128) == 0) { + this.assertBounds(); + return result; + } + b = this.buf[this.pos++]; + result |= (b & 15) << 28; + for (let readBytes = 5; (b & 128) !== 0 && readBytes < 10; readBytes++) + b = this.buf[this.pos++]; + if ((b & 128) != 0) + throw new Error("invalid varint"); + this.assertBounds(); + return result >>> 0; +} + +// node_modules/@bufbuild/protobuf/dist/esm/proto-int64.js +var protoInt64 = /* @__PURE__ */ makeInt64Support(); +function makeInt64Support() { + const dv = new DataView(new ArrayBuffer(8)); + const ok = typeof BigInt === "function" && typeof dv.getBigInt64 === "function" && typeof dv.getBigUint64 === "function" && typeof dv.setBigInt64 === "function" && typeof dv.setBigUint64 === "function" && (typeof process != "object" || typeof process.env != "object" || process.env.BUF_BIGINT_DISABLE !== "1"); + if (ok) { + const MIN = BigInt("-9223372036854775808"), MAX = BigInt("9223372036854775807"), UMIN = BigInt("0"), UMAX = BigInt("18446744073709551615"); + return { + zero: BigInt(0), + supported: true, + parse(value) { + const bi = typeof value == "bigint" ? value : BigInt(value); + if (bi > MAX || bi < MIN) { + throw new Error(`invalid int64: ${value}`); + } + return bi; + }, + uParse(value) { + const bi = typeof value == "bigint" ? value : BigInt(value); + if (bi > UMAX || bi < UMIN) { + throw new Error(`invalid uint64: ${value}`); + } + return bi; + }, + enc(value) { + dv.setBigInt64(0, this.parse(value), true); + return { + lo: dv.getInt32(0, true), + hi: dv.getInt32(4, true) + }; + }, + uEnc(value) { + dv.setBigInt64(0, this.uParse(value), true); + return { + lo: dv.getInt32(0, true), + hi: dv.getInt32(4, true) + }; + }, + dec(lo, hi) { + dv.setInt32(0, lo, true); + dv.setInt32(4, hi, true); + return dv.getBigInt64(0, true); + }, + uDec(lo, hi) { + dv.setInt32(0, lo, true); + dv.setInt32(4, hi, true); + return dv.getBigUint64(0, true); + } + }; + } + return { + zero: "0", + supported: false, + parse(value) { + if (typeof value != "string") { + value = value.toString(); + } + assertInt64String(value); + return value; + }, + uParse(value) { + if (typeof value != "string") { + value = value.toString(); + } + assertUInt64String(value); + return value; + }, + enc(value) { + if (typeof value != "string") { + value = value.toString(); + } + assertInt64String(value); + return int64FromString(value); + }, + uEnc(value) { + if (typeof value != "string") { + value = value.toString(); + } + assertUInt64String(value); + return int64FromString(value); + }, + dec(lo, hi) { + return int64ToString(lo, hi); + }, + uDec(lo, hi) { + return uInt64ToString(lo, hi); + } + }; +} +function assertInt64String(value) { + if (!/^-?[0-9]+$/.test(value)) { + throw new Error("invalid int64: " + value); + } +} +function assertUInt64String(value) { + if (!/^[0-9]+$/.test(value)) { + throw new Error("invalid uint64: " + value); + } +} + +// node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +var symbol = Symbol.for("@bufbuild/protobuf/text-encoding"); +function getTextEncoding() { + if (globalThis[symbol] == void 0) { + const te = new globalThis.TextEncoder(); + const td = new globalThis.TextDecoder(); + globalThis[symbol] = { + encodeUtf8(text) { + return te.encode(text); + }, + decodeUtf8(bytes) { + return td.decode(bytes); + }, + checkUtf8(text) { + try { + encodeURIComponent(text); + return true; + } catch (e) { + return false; + } + } + }; + } + return globalThis[symbol]; +} + +// node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +var WireType; +(function(WireType2) { + WireType2[WireType2["Varint"] = 0] = "Varint"; + WireType2[WireType2["Bit64"] = 1] = "Bit64"; + WireType2[WireType2["LengthDelimited"] = 2] = "LengthDelimited"; + WireType2[WireType2["StartGroup"] = 3] = "StartGroup"; + WireType2[WireType2["EndGroup"] = 4] = "EndGroup"; + WireType2[WireType2["Bit32"] = 5] = "Bit32"; +})(WireType || (WireType = {})); +var FLOAT32_MAX = 34028234663852886e22; +var FLOAT32_MIN = -34028234663852886e22; +var UINT32_MAX = 4294967295; +var INT32_MAX = 2147483647; +var INT32_MIN = -2147483648; +var BinaryWriter = class { + constructor(encodeUtf8 = getTextEncoding().encodeUtf8) { + this.encodeUtf8 = encodeUtf8; + this.stack = []; + this.chunks = []; + this.buf = []; + } + /** + * Return all bytes written and reset this writer. + */ + finish() { + if (this.buf.length) { + this.chunks.push(new Uint8Array(this.buf)); + this.buf = []; + } + let len = 0; + for (let i = 0; i < this.chunks.length; i++) + len += this.chunks[i].length; + let bytes = new Uint8Array(len); + let offset = 0; + for (let i = 0; i < this.chunks.length; i++) { + bytes.set(this.chunks[i], offset); + offset += this.chunks[i].length; + } + this.chunks = []; + return bytes; + } + /** + * Start a new fork for length-delimited data like a message + * or a packed repeated field. + * + * Must be joined later with `join()`. + */ + fork() { + this.stack.push({ chunks: this.chunks, buf: this.buf }); + this.chunks = []; + this.buf = []; + return this; + } + /** + * Join the last fork. Write its length and bytes, then + * return to the previous state. + */ + join() { + let chunk = this.finish(); + let prev = this.stack.pop(); + if (!prev) + throw new Error("invalid state, fork stack empty"); + this.chunks = prev.chunks; + this.buf = prev.buf; + this.uint32(chunk.byteLength); + return this.raw(chunk); + } + /** + * Writes a tag (field number and wire type). + * + * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`. + * + * Generated code should compute the tag ahead of time and call `uint32()`. + */ + tag(fieldNo, type) { + return this.uint32((fieldNo << 3 | type) >>> 0); + } + /** + * Write a chunk of raw bytes. + */ + raw(chunk) { + if (this.buf.length) { + this.chunks.push(new Uint8Array(this.buf)); + this.buf = []; + } + this.chunks.push(chunk); + return this; + } + /** + * Write a `uint32` value, an unsigned 32 bit varint. + */ + uint32(value) { + assertUInt32(value); + while (value > 127) { + this.buf.push(value & 127 | 128); + value = value >>> 7; + } + this.buf.push(value); + return this; + } + /** + * Write a `int32` value, a signed 32 bit varint. + */ + int32(value) { + assertInt32(value); + varint32write(value, this.buf); + return this; + } + /** + * Write a `bool` value, a variant. + */ + bool(value) { + this.buf.push(value ? 1 : 0); + return this; + } + /** + * Write a `bytes` value, length-delimited arbitrary data. + */ + bytes(value) { + this.uint32(value.byteLength); + return this.raw(value); + } + /** + * Write a `string` value, length-delimited data converted to UTF-8 text. + */ + string(value) { + let chunk = this.encodeUtf8(value); + this.uint32(chunk.byteLength); + return this.raw(chunk); + } + /** + * Write a `float` value, 32-bit floating point number. + */ + float(value) { + assertFloat32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setFloat32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `double` value, a 64-bit floating point number. + */ + double(value) { + let chunk = new Uint8Array(8); + new DataView(chunk.buffer).setFloat64(0, value, true); + return this.raw(chunk); + } + /** + * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer. + */ + fixed32(value) { + assertUInt32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setUint32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `sfixed32` value, a signed, fixed-length 32-bit integer. + */ + sfixed32(value) { + assertInt32(value); + let chunk = new Uint8Array(4); + new DataView(chunk.buffer).setInt32(0, value, true); + return this.raw(chunk); + } + /** + * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint. + */ + sint32(value) { + assertInt32(value); + value = (value << 1 ^ value >> 31) >>> 0; + varint32write(value, this.buf); + return this; + } + /** + * Write a `fixed64` value, a signed, fixed-length 64-bit integer. + */ + sfixed64(value) { + let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.enc(value); + view.setInt32(0, tc.lo, true); + view.setInt32(4, tc.hi, true); + return this.raw(chunk); + } + /** + * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer. + */ + fixed64(value) { + let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = protoInt64.uEnc(value); + view.setInt32(0, tc.lo, true); + view.setInt32(4, tc.hi, true); + return this.raw(chunk); + } + /** + * Write a `int64` value, a signed 64-bit varint. + */ + int64(value) { + let tc = protoInt64.enc(value); + varint64write(tc.lo, tc.hi, this.buf); + return this; + } + /** + * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint. + */ + sint64(value) { + let tc = protoInt64.enc(value), sign = tc.hi >> 31, lo = tc.lo << 1 ^ sign, hi = (tc.hi << 1 | tc.lo >>> 31) ^ sign; + varint64write(lo, hi, this.buf); + return this; + } + /** + * Write a `uint64` value, an unsigned 64-bit varint. + */ + uint64(value) { + let tc = protoInt64.uEnc(value); + varint64write(tc.lo, tc.hi, this.buf); + return this; + } +}; +var BinaryReader = class { + constructor(buf, decodeUtf8 = getTextEncoding().decodeUtf8) { + this.decodeUtf8 = decodeUtf8; + this.varint64 = varint64read; + this.uint32 = varint32read; + this.buf = buf; + this.len = buf.length; + this.pos = 0; + this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength); + } + /** + * Reads a tag - field number and wire type. + */ + tag() { + let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7; + if (fieldNo <= 0 || wireType < 0 || wireType > 5) + throw new Error("illegal tag: field no " + fieldNo + " wire type " + wireType); + return [fieldNo, wireType]; + } + /** + * Skip one element and return the skipped data. + * + * When skipping StartGroup, provide the tags field number to check for + * matching field number in the EndGroup tag. + */ + skip(wireType, fieldNo) { + let start = this.pos; + switch (wireType) { + case WireType.Varint: + while (this.buf[this.pos++] & 128) { + } + break; + case WireType.Bit64: + this.pos += 4; + case WireType.Bit32: + this.pos += 4; + break; + case WireType.LengthDelimited: + let len = this.uint32(); + this.pos += len; + break; + case WireType.StartGroup: + for (; ; ) { + const [fn, wt] = this.tag(); + if (wt === WireType.EndGroup) { + if (fieldNo !== void 0 && fn !== fieldNo) { + throw new Error("invalid end group tag"); + } + break; + } + this.skip(wt, fn); + } + break; + default: + throw new Error("cant skip wire type " + wireType); + } + this.assertBounds(); + return this.buf.subarray(start, this.pos); + } + /** + * Throws error if position in byte array is out of range. + */ + assertBounds() { + if (this.pos > this.len) + throw new RangeError("premature EOF"); + } + /** + * Read a `int32` field, a signed 32 bit varint. + */ + int32() { + return this.uint32() | 0; + } + /** + * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint. + */ + sint32() { + let zze = this.uint32(); + return zze >>> 1 ^ -(zze & 1); + } + /** + * Read a `int64` field, a signed 64-bit varint. + */ + int64() { + return protoInt64.dec(...this.varint64()); + } + /** + * Read a `uint64` field, an unsigned 64-bit varint. + */ + uint64() { + return protoInt64.uDec(...this.varint64()); + } + /** + * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint. + */ + sint64() { + let [lo, hi] = this.varint64(); + let s = -(lo & 1); + lo = (lo >>> 1 | (hi & 1) << 31) ^ s; + hi = hi >>> 1 ^ s; + return protoInt64.dec(lo, hi); + } + /** + * Read a `bool` field, a variant. + */ + bool() { + let [lo, hi] = this.varint64(); + return lo !== 0 || hi !== 0; + } + /** + * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer. + */ + fixed32() { + return this.view.getUint32((this.pos += 4) - 4, true); + } + /** + * Read a `sfixed32` field, a signed, fixed-length 32-bit integer. + */ + sfixed32() { + return this.view.getInt32((this.pos += 4) - 4, true); + } + /** + * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer. + */ + fixed64() { + return protoInt64.uDec(this.sfixed32(), this.sfixed32()); + } + /** + * Read a `fixed64` field, a signed, fixed-length 64-bit integer. + */ + sfixed64() { + return protoInt64.dec(this.sfixed32(), this.sfixed32()); + } + /** + * Read a `float` field, 32-bit floating point number. + */ + float() { + return this.view.getFloat32((this.pos += 4) - 4, true); + } + /** + * Read a `double` field, a 64-bit floating point number. + */ + double() { + return this.view.getFloat64((this.pos += 8) - 8, true); + } + /** + * Read a `bytes` field, length-delimited arbitrary data. + */ + bytes() { + let len = this.uint32(), start = this.pos; + this.pos += len; + this.assertBounds(); + return this.buf.subarray(start, start + len); + } + /** + * Read a `string` field, length-delimited data converted to UTF-8 text. + */ + string() { + return this.decodeUtf8(this.bytes()); + } +}; +function assertInt32(arg) { + if (typeof arg == "string") { + arg = Number(arg); + } else if (typeof arg != "number") { + throw new Error("invalid int32: " + typeof arg); + } + if (!Number.isInteger(arg) || arg > INT32_MAX || arg < INT32_MIN) + throw new Error("invalid int32: " + arg); +} +function assertUInt32(arg) { + if (typeof arg == "string") { + arg = Number(arg); + } else if (typeof arg != "number") { + throw new Error("invalid uint32: " + typeof arg); + } + if (!Number.isInteger(arg) || arg > UINT32_MAX || arg < 0) + throw new Error("invalid uint32: " + arg); +} +function assertFloat32(arg) { + if (typeof arg == "string") { + const o = arg; + arg = Number(arg); + if (isNaN(arg) && o !== "NaN") { + throw new Error("invalid float32: " + o); + } + } else if (typeof arg != "number") { + throw new Error("invalid float32: " + typeof arg); + } + if (Number.isFinite(arg) && (arg > FLOAT32_MAX || arg < FLOAT32_MIN)) + throw new Error("invalid float32: " + arg); +} + +// src/api/memos-proto-v0.22.0/gen/google/protobuf/empty.ts +function createBaseEmpty() { + return {}; +} +var Empty = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseEmpty(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Empty.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseEmpty(); + return message; + } +}; + +// src/api/memos-proto-v0.22.0/gen/google/protobuf/field_mask.ts +function createBaseFieldMask() { + return { paths: [] }; +} +var FieldMask = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.paths) { + writer.uint32(10).string(v); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseFieldMask(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.paths.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return FieldMask.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseFieldMask(); + message.paths = ((_a = object.paths) == null ? void 0 : _a.map((e) => e)) || []; + return message; + }, + wrap(paths) { + const result = createBaseFieldMask(); + result.paths = paths; + return result; + }, + unwrap(message) { + return message.paths; + } +}; + +// src/api/memos-proto-v0.22.0/gen/google/protobuf/timestamp.ts +function createBaseTimestamp() { + return { seconds: 0, nanos: 0 }; +} +var Timestamp = { + encode(message, writer = new BinaryWriter()) { + if (message.seconds !== 0) { + writer.uint32(8).int64(message.seconds); + } + if (message.nanos !== 0) { + writer.uint32(16).int32(message.nanos); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTimestamp(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.seconds = longToNumber(reader.int64()); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.nanos = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Timestamp.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseTimestamp(); + message.seconds = (_a = object.seconds) != null ? _a : 0; + message.nanos = (_b = object.nanos) != null ? _b : 0; + return message; + } +}; +function longToNumber(int64) { + const num = globalThis.Number(int64.toString()); + if (num > globalThis.Number.MAX_SAFE_INTEGER) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + if (num < globalThis.Number.MIN_SAFE_INTEGER) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } + return num; +} + +// src/api/memos-proto-v0.22.0/gen/api/v1/common.ts +function rowStatusFromJSON(object) { + switch (object) { + case 0: + case "ROW_STATUS_UNSPECIFIED": + return "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */; + case 1: + case "ACTIVE": + return "ACTIVE" /* ACTIVE */; + case 2: + case "ARCHIVED": + return "ARCHIVED" /* ARCHIVED */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function rowStatusToNumber(object) { + switch (object) { + case "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */: + return 0; + case "ACTIVE" /* ACTIVE */: + return 1; + case "ARCHIVED" /* ARCHIVED */: + return 2; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} + +// src/api/memos-proto-v0.22.0/gen/api/v1/markdown_service.ts +function nodeTypeFromJSON(object) { + switch (object) { + case 0: + case "NODE_UNSPECIFIED": + return "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */; + case 1: + case "LINE_BREAK": + return "LINE_BREAK" /* LINE_BREAK */; + case 2: + case "PARAGRAPH": + return "PARAGRAPH" /* PARAGRAPH */; + case 3: + case "CODE_BLOCK": + return "CODE_BLOCK" /* CODE_BLOCK */; + case 4: + case "HEADING": + return "HEADING" /* HEADING */; + case 5: + case "HORIZONTAL_RULE": + return "HORIZONTAL_RULE" /* HORIZONTAL_RULE */; + case 6: + case "BLOCKQUOTE": + return "BLOCKQUOTE" /* BLOCKQUOTE */; + case 7: + case "ORDERED_LIST": + return "ORDERED_LIST" /* ORDERED_LIST */; + case 8: + case "UNORDERED_LIST": + return "UNORDERED_LIST" /* UNORDERED_LIST */; + case 9: + case "TASK_LIST": + return "TASK_LIST" /* TASK_LIST */; + case 10: + case "MATH_BLOCK": + return "MATH_BLOCK" /* MATH_BLOCK */; + case 11: + case "TABLE": + return "TABLE" /* TABLE */; + case 12: + case "EMBEDDED_CONTENT": + return "EMBEDDED_CONTENT" /* EMBEDDED_CONTENT */; + case 13: + case "TEXT": + return "TEXT" /* TEXT */; + case 14: + case "BOLD": + return "BOLD" /* BOLD */; + case 15: + case "ITALIC": + return "ITALIC" /* ITALIC */; + case 16: + case "BOLD_ITALIC": + return "BOLD_ITALIC" /* BOLD_ITALIC */; + case 17: + case "CODE": + return "CODE" /* CODE */; + case 18: + case "IMAGE": + return "IMAGE" /* IMAGE */; + case 19: + case "LINK": + return "LINK" /* LINK */; + case 20: + case "AUTO_LINK": + return "AUTO_LINK" /* AUTO_LINK */; + case 21: + case "TAG": + return "TAG" /* TAG */; + case 22: + case "STRIKETHROUGH": + return "STRIKETHROUGH" /* STRIKETHROUGH */; + case 23: + case "ESCAPING_CHARACTER": + return "ESCAPING_CHARACTER" /* ESCAPING_CHARACTER */; + case 24: + case "MATH": + return "MATH" /* MATH */; + case 25: + case "HIGHLIGHT": + return "HIGHLIGHT" /* HIGHLIGHT */; + case 26: + case "SUBSCRIPT": + return "SUBSCRIPT" /* SUBSCRIPT */; + case 27: + case "SUPERSCRIPT": + return "SUPERSCRIPT" /* SUPERSCRIPT */; + case 28: + case "REFERENCED_CONTENT": + return "REFERENCED_CONTENT" /* REFERENCED_CONTENT */; + case 29: + case "SPOILER": + return "SPOILER" /* SPOILER */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function nodeTypeToNumber(object) { + switch (object) { + case "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */: + return 0; + case "LINE_BREAK" /* LINE_BREAK */: + return 1; + case "PARAGRAPH" /* PARAGRAPH */: + return 2; + case "CODE_BLOCK" /* CODE_BLOCK */: + return 3; + case "HEADING" /* HEADING */: + return 4; + case "HORIZONTAL_RULE" /* HORIZONTAL_RULE */: + return 5; + case "BLOCKQUOTE" /* BLOCKQUOTE */: + return 6; + case "ORDERED_LIST" /* ORDERED_LIST */: + return 7; + case "UNORDERED_LIST" /* UNORDERED_LIST */: + return 8; + case "TASK_LIST" /* TASK_LIST */: + return 9; + case "MATH_BLOCK" /* MATH_BLOCK */: + return 10; + case "TABLE" /* TABLE */: + return 11; + case "EMBEDDED_CONTENT" /* EMBEDDED_CONTENT */: + return 12; + case "TEXT" /* TEXT */: + return 13; + case "BOLD" /* BOLD */: + return 14; + case "ITALIC" /* ITALIC */: + return 15; + case "BOLD_ITALIC" /* BOLD_ITALIC */: + return 16; + case "CODE" /* CODE */: + return 17; + case "IMAGE" /* IMAGE */: + return 18; + case "LINK" /* LINK */: + return 19; + case "AUTO_LINK" /* AUTO_LINK */: + return 20; + case "TAG" /* TAG */: + return 21; + case "STRIKETHROUGH" /* STRIKETHROUGH */: + return 22; + case "ESCAPING_CHARACTER" /* ESCAPING_CHARACTER */: + return 23; + case "MATH" /* MATH */: + return 24; + case "HIGHLIGHT" /* HIGHLIGHT */: + return 25; + case "SUBSCRIPT" /* SUBSCRIPT */: + return 26; + case "SUPERSCRIPT" /* SUPERSCRIPT */: + return 27; + case "REFERENCED_CONTENT" /* REFERENCED_CONTENT */: + return 28; + case "SPOILER" /* SPOILER */: + return 29; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseParseMarkdownRequest() { + return { markdown: "" }; +} +var ParseMarkdownRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.markdown !== "") { + writer.uint32(10).string(message.markdown); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseParseMarkdownRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.markdown = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ParseMarkdownRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseParseMarkdownRequest(); + message.markdown = (_a = object.markdown) != null ? _a : ""; + return message; + } +}; +function createBaseParseMarkdownResponse() { + return { nodes: [] }; +} +var ParseMarkdownResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.nodes) { + Node.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseParseMarkdownResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.nodes.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ParseMarkdownResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseParseMarkdownResponse(); + message.nodes = ((_a = object.nodes) == null ? void 0 : _a.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseRestoreMarkdownRequest() { + return { nodes: [] }; +} +var RestoreMarkdownRequest = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.nodes) { + Node.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRestoreMarkdownRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.nodes.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RestoreMarkdownRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseRestoreMarkdownRequest(); + message.nodes = ((_a = object.nodes) == null ? void 0 : _a.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseRestoreMarkdownResponse() { + return { markdown: "" }; +} +var RestoreMarkdownResponse = { + encode(message, writer = new BinaryWriter()) { + if (message.markdown !== "") { + writer.uint32(10).string(message.markdown); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRestoreMarkdownResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.markdown = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RestoreMarkdownResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseRestoreMarkdownResponse(); + message.markdown = (_a = object.markdown) != null ? _a : ""; + return message; + } +}; +function createBaseGetLinkMetadataRequest() { + return { link: "" }; +} +var GetLinkMetadataRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.link !== "") { + writer.uint32(10).string(message.link); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetLinkMetadataRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.link = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetLinkMetadataRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetLinkMetadataRequest(); + message.link = (_a = object.link) != null ? _a : ""; + return message; + } +}; +function createBaseLinkMetadata() { + return { title: "", description: "", image: "" }; +} +var LinkMetadata = { + encode(message, writer = new BinaryWriter()) { + if (message.title !== "") { + writer.uint32(10).string(message.title); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.image !== "") { + writer.uint32(26).string(message.image); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLinkMetadata(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.title = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.image = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return LinkMetadata.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseLinkMetadata(); + message.title = (_a = object.title) != null ? _a : ""; + message.description = (_b = object.description) != null ? _b : ""; + message.image = (_c = object.image) != null ? _c : ""; + return message; + } +}; +function createBaseNode() { + return { + type: "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */, + lineBreakNode: void 0, + paragraphNode: void 0, + codeBlockNode: void 0, + headingNode: void 0, + horizontalRuleNode: void 0, + blockquoteNode: void 0, + orderedListNode: void 0, + unorderedListNode: void 0, + taskListNode: void 0, + mathBlockNode: void 0, + tableNode: void 0, + embeddedContentNode: void 0, + textNode: void 0, + boldNode: void 0, + italicNode: void 0, + boldItalicNode: void 0, + codeNode: void 0, + imageNode: void 0, + linkNode: void 0, + autoLinkNode: void 0, + tagNode: void 0, + strikethroughNode: void 0, + escapingCharacterNode: void 0, + mathNode: void 0, + highlightNode: void 0, + subscriptNode: void 0, + superscriptNode: void 0, + referencedContentNode: void 0, + spoilerNode: void 0 + }; +} +var Node = { + encode(message, writer = new BinaryWriter()) { + if (message.type !== "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */) { + writer.uint32(8).int32(nodeTypeToNumber(message.type)); + } + if (message.lineBreakNode !== void 0) { + LineBreakNode.encode(message.lineBreakNode, writer.uint32(18).fork()).join(); + } + if (message.paragraphNode !== void 0) { + ParagraphNode.encode(message.paragraphNode, writer.uint32(26).fork()).join(); + } + if (message.codeBlockNode !== void 0) { + CodeBlockNode.encode(message.codeBlockNode, writer.uint32(34).fork()).join(); + } + if (message.headingNode !== void 0) { + HeadingNode.encode(message.headingNode, writer.uint32(42).fork()).join(); + } + if (message.horizontalRuleNode !== void 0) { + HorizontalRuleNode.encode(message.horizontalRuleNode, writer.uint32(50).fork()).join(); + } + if (message.blockquoteNode !== void 0) { + BlockquoteNode.encode(message.blockquoteNode, writer.uint32(58).fork()).join(); + } + if (message.orderedListNode !== void 0) { + OrderedListNode.encode(message.orderedListNode, writer.uint32(66).fork()).join(); + } + if (message.unorderedListNode !== void 0) { + UnorderedListNode.encode(message.unorderedListNode, writer.uint32(74).fork()).join(); + } + if (message.taskListNode !== void 0) { + TaskListNode.encode(message.taskListNode, writer.uint32(82).fork()).join(); + } + if (message.mathBlockNode !== void 0) { + MathBlockNode.encode(message.mathBlockNode, writer.uint32(90).fork()).join(); + } + if (message.tableNode !== void 0) { + TableNode.encode(message.tableNode, writer.uint32(98).fork()).join(); + } + if (message.embeddedContentNode !== void 0) { + EmbeddedContentNode.encode(message.embeddedContentNode, writer.uint32(106).fork()).join(); + } + if (message.textNode !== void 0) { + TextNode.encode(message.textNode, writer.uint32(114).fork()).join(); + } + if (message.boldNode !== void 0) { + BoldNode.encode(message.boldNode, writer.uint32(122).fork()).join(); + } + if (message.italicNode !== void 0) { + ItalicNode.encode(message.italicNode, writer.uint32(130).fork()).join(); + } + if (message.boldItalicNode !== void 0) { + BoldItalicNode.encode(message.boldItalicNode, writer.uint32(138).fork()).join(); + } + if (message.codeNode !== void 0) { + CodeNode.encode(message.codeNode, writer.uint32(146).fork()).join(); + } + if (message.imageNode !== void 0) { + ImageNode.encode(message.imageNode, writer.uint32(154).fork()).join(); + } + if (message.linkNode !== void 0) { + LinkNode.encode(message.linkNode, writer.uint32(162).fork()).join(); + } + if (message.autoLinkNode !== void 0) { + AutoLinkNode.encode(message.autoLinkNode, writer.uint32(170).fork()).join(); + } + if (message.tagNode !== void 0) { + TagNode.encode(message.tagNode, writer.uint32(178).fork()).join(); + } + if (message.strikethroughNode !== void 0) { + StrikethroughNode.encode(message.strikethroughNode, writer.uint32(186).fork()).join(); + } + if (message.escapingCharacterNode !== void 0) { + EscapingCharacterNode.encode(message.escapingCharacterNode, writer.uint32(194).fork()).join(); + } + if (message.mathNode !== void 0) { + MathNode.encode(message.mathNode, writer.uint32(202).fork()).join(); + } + if (message.highlightNode !== void 0) { + HighlightNode.encode(message.highlightNode, writer.uint32(210).fork()).join(); + } + if (message.subscriptNode !== void 0) { + SubscriptNode.encode(message.subscriptNode, writer.uint32(218).fork()).join(); + } + if (message.superscriptNode !== void 0) { + SuperscriptNode.encode(message.superscriptNode, writer.uint32(226).fork()).join(); + } + if (message.referencedContentNode !== void 0) { + ReferencedContentNode.encode(message.referencedContentNode, writer.uint32(234).fork()).join(); + } + if (message.spoilerNode !== void 0) { + SpoilerNode.encode(message.spoilerNode, writer.uint32(242).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.type = nodeTypeFromJSON(reader.int32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.lineBreakNode = LineBreakNode.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.paragraphNode = ParagraphNode.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.codeBlockNode = CodeBlockNode.decode(reader, reader.uint32()); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.headingNode = HeadingNode.decode(reader, reader.uint32()); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.horizontalRuleNode = HorizontalRuleNode.decode(reader, reader.uint32()); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.blockquoteNode = BlockquoteNode.decode(reader, reader.uint32()); + continue; + } + case 8: { + if (tag !== 66) { + break; + } + message.orderedListNode = OrderedListNode.decode(reader, reader.uint32()); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.unorderedListNode = UnorderedListNode.decode(reader, reader.uint32()); + continue; + } + case 10: { + if (tag !== 82) { + break; + } + message.taskListNode = TaskListNode.decode(reader, reader.uint32()); + continue; + } + case 11: { + if (tag !== 90) { + break; + } + message.mathBlockNode = MathBlockNode.decode(reader, reader.uint32()); + continue; + } + case 12: { + if (tag !== 98) { + break; + } + message.tableNode = TableNode.decode(reader, reader.uint32()); + continue; + } + case 13: { + if (tag !== 106) { + break; + } + message.embeddedContentNode = EmbeddedContentNode.decode(reader, reader.uint32()); + continue; + } + case 14: { + if (tag !== 114) { + break; + } + message.textNode = TextNode.decode(reader, reader.uint32()); + continue; + } + case 15: { + if (tag !== 122) { + break; + } + message.boldNode = BoldNode.decode(reader, reader.uint32()); + continue; + } + case 16: { + if (tag !== 130) { + break; + } + message.italicNode = ItalicNode.decode(reader, reader.uint32()); + continue; + } + case 17: { + if (tag !== 138) { + break; + } + message.boldItalicNode = BoldItalicNode.decode(reader, reader.uint32()); + continue; + } + case 18: { + if (tag !== 146) { + break; + } + message.codeNode = CodeNode.decode(reader, reader.uint32()); + continue; + } + case 19: { + if (tag !== 154) { + break; + } + message.imageNode = ImageNode.decode(reader, reader.uint32()); + continue; + } + case 20: { + if (tag !== 162) { + break; + } + message.linkNode = LinkNode.decode(reader, reader.uint32()); + continue; + } + case 21: { + if (tag !== 170) { + break; + } + message.autoLinkNode = AutoLinkNode.decode(reader, reader.uint32()); + continue; + } + case 22: { + if (tag !== 178) { + break; + } + message.tagNode = TagNode.decode(reader, reader.uint32()); + continue; + } + case 23: { + if (tag !== 186) { + break; + } + message.strikethroughNode = StrikethroughNode.decode(reader, reader.uint32()); + continue; + } + case 24: { + if (tag !== 194) { + break; + } + message.escapingCharacterNode = EscapingCharacterNode.decode(reader, reader.uint32()); + continue; + } + case 25: { + if (tag !== 202) { + break; + } + message.mathNode = MathNode.decode(reader, reader.uint32()); + continue; + } + case 26: { + if (tag !== 210) { + break; + } + message.highlightNode = HighlightNode.decode(reader, reader.uint32()); + continue; + } + case 27: { + if (tag !== 218) { + break; + } + message.subscriptNode = SubscriptNode.decode(reader, reader.uint32()); + continue; + } + case 28: { + if (tag !== 226) { + break; + } + message.superscriptNode = SuperscriptNode.decode(reader, reader.uint32()); + continue; + } + case 29: { + if (tag !== 234) { + break; + } + message.referencedContentNode = ReferencedContentNode.decode(reader, reader.uint32()); + continue; + } + case 30: { + if (tag !== 242) { + break; + } + message.spoilerNode = SpoilerNode.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Node.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseNode(); + message.type = (_a = object.type) != null ? _a : "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */; + message.lineBreakNode = object.lineBreakNode !== void 0 && object.lineBreakNode !== null ? LineBreakNode.fromPartial(object.lineBreakNode) : void 0; + message.paragraphNode = object.paragraphNode !== void 0 && object.paragraphNode !== null ? ParagraphNode.fromPartial(object.paragraphNode) : void 0; + message.codeBlockNode = object.codeBlockNode !== void 0 && object.codeBlockNode !== null ? CodeBlockNode.fromPartial(object.codeBlockNode) : void 0; + message.headingNode = object.headingNode !== void 0 && object.headingNode !== null ? HeadingNode.fromPartial(object.headingNode) : void 0; + message.horizontalRuleNode = object.horizontalRuleNode !== void 0 && object.horizontalRuleNode !== null ? HorizontalRuleNode.fromPartial(object.horizontalRuleNode) : void 0; + message.blockquoteNode = object.blockquoteNode !== void 0 && object.blockquoteNode !== null ? BlockquoteNode.fromPartial(object.blockquoteNode) : void 0; + message.orderedListNode = object.orderedListNode !== void 0 && object.orderedListNode !== null ? OrderedListNode.fromPartial(object.orderedListNode) : void 0; + message.unorderedListNode = object.unorderedListNode !== void 0 && object.unorderedListNode !== null ? UnorderedListNode.fromPartial(object.unorderedListNode) : void 0; + message.taskListNode = object.taskListNode !== void 0 && object.taskListNode !== null ? TaskListNode.fromPartial(object.taskListNode) : void 0; + message.mathBlockNode = object.mathBlockNode !== void 0 && object.mathBlockNode !== null ? MathBlockNode.fromPartial(object.mathBlockNode) : void 0; + message.tableNode = object.tableNode !== void 0 && object.tableNode !== null ? TableNode.fromPartial(object.tableNode) : void 0; + message.embeddedContentNode = object.embeddedContentNode !== void 0 && object.embeddedContentNode !== null ? EmbeddedContentNode.fromPartial(object.embeddedContentNode) : void 0; + message.textNode = object.textNode !== void 0 && object.textNode !== null ? TextNode.fromPartial(object.textNode) : void 0; + message.boldNode = object.boldNode !== void 0 && object.boldNode !== null ? BoldNode.fromPartial(object.boldNode) : void 0; + message.italicNode = object.italicNode !== void 0 && object.italicNode !== null ? ItalicNode.fromPartial(object.italicNode) : void 0; + message.boldItalicNode = object.boldItalicNode !== void 0 && object.boldItalicNode !== null ? BoldItalicNode.fromPartial(object.boldItalicNode) : void 0; + message.codeNode = object.codeNode !== void 0 && object.codeNode !== null ? CodeNode.fromPartial(object.codeNode) : void 0; + message.imageNode = object.imageNode !== void 0 && object.imageNode !== null ? ImageNode.fromPartial(object.imageNode) : void 0; + message.linkNode = object.linkNode !== void 0 && object.linkNode !== null ? LinkNode.fromPartial(object.linkNode) : void 0; + message.autoLinkNode = object.autoLinkNode !== void 0 && object.autoLinkNode !== null ? AutoLinkNode.fromPartial(object.autoLinkNode) : void 0; + message.tagNode = object.tagNode !== void 0 && object.tagNode !== null ? TagNode.fromPartial(object.tagNode) : void 0; + message.strikethroughNode = object.strikethroughNode !== void 0 && object.strikethroughNode !== null ? StrikethroughNode.fromPartial(object.strikethroughNode) : void 0; + message.escapingCharacterNode = object.escapingCharacterNode !== void 0 && object.escapingCharacterNode !== null ? EscapingCharacterNode.fromPartial(object.escapingCharacterNode) : void 0; + message.mathNode = object.mathNode !== void 0 && object.mathNode !== null ? MathNode.fromPartial(object.mathNode) : void 0; + message.highlightNode = object.highlightNode !== void 0 && object.highlightNode !== null ? HighlightNode.fromPartial(object.highlightNode) : void 0; + message.subscriptNode = object.subscriptNode !== void 0 && object.subscriptNode !== null ? SubscriptNode.fromPartial(object.subscriptNode) : void 0; + message.superscriptNode = object.superscriptNode !== void 0 && object.superscriptNode !== null ? SuperscriptNode.fromPartial(object.superscriptNode) : void 0; + message.referencedContentNode = object.referencedContentNode !== void 0 && object.referencedContentNode !== null ? ReferencedContentNode.fromPartial(object.referencedContentNode) : void 0; + message.spoilerNode = object.spoilerNode !== void 0 && object.spoilerNode !== null ? SpoilerNode.fromPartial(object.spoilerNode) : void 0; + return message; + } +}; +function createBaseLineBreakNode() { + return {}; +} +var LineBreakNode = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLineBreakNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return LineBreakNode.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseLineBreakNode(); + return message; + } +}; +function createBaseParagraphNode() { + return { children: [] }; +} +var ParagraphNode = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.children) { + Node.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseParagraphNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ParagraphNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseParagraphNode(); + message.children = ((_a = object.children) == null ? void 0 : _a.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseCodeBlockNode() { + return { language: "", content: "" }; +} +var CodeBlockNode = { + encode(message, writer = new BinaryWriter()) { + if (message.language !== "") { + writer.uint32(10).string(message.language); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCodeBlockNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.language = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CodeBlockNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseCodeBlockNode(); + message.language = (_a = object.language) != null ? _a : ""; + message.content = (_b = object.content) != null ? _b : ""; + return message; + } +}; +function createBaseHeadingNode() { + return { level: 0, children: [] }; +} +var HeadingNode = { + encode(message, writer = new BinaryWriter()) { + if (message.level !== 0) { + writer.uint32(8).int32(message.level); + } + for (const v of message.children) { + Node.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHeadingNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.level = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HeadingNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseHeadingNode(); + message.level = (_a = object.level) != null ? _a : 0; + message.children = ((_b = object.children) == null ? void 0 : _b.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseHorizontalRuleNode() { + return { symbol: "" }; +} +var HorizontalRuleNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHorizontalRuleNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HorizontalRuleNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseHorizontalRuleNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + return message; + } +}; +function createBaseBlockquoteNode() { + return { children: [] }; +} +var BlockquoteNode = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.children) { + Node.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseBlockquoteNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return BlockquoteNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseBlockquoteNode(); + message.children = ((_a = object.children) == null ? void 0 : _a.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseOrderedListNode() { + return { number: "", indent: 0, children: [] }; +} +var OrderedListNode = { + encode(message, writer = new BinaryWriter()) { + if (message.number !== "") { + writer.uint32(10).string(message.number); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseOrderedListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.number = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return OrderedListNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseOrderedListNode(); + message.number = (_a = object.number) != null ? _a : ""; + message.indent = (_b = object.indent) != null ? _b : 0; + message.children = ((_c = object.children) == null ? void 0 : _c.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseUnorderedListNode() { + return { symbol: "", indent: 0, children: [] }; +} +var UnorderedListNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUnorderedListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UnorderedListNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseUnorderedListNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.indent = (_b = object.indent) != null ? _b : 0; + message.children = ((_c = object.children) == null ? void 0 : _c.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseTaskListNode() { + return { symbol: "", indent: 0, complete: false, children: [] }; +} +var TaskListNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + if (message.complete !== false) { + writer.uint32(24).bool(message.complete); + } + for (const v of message.children) { + Node.encode(v, writer.uint32(34).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTaskListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.complete = reader.bool(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TaskListNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseTaskListNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.indent = (_b = object.indent) != null ? _b : 0; + message.complete = (_c = object.complete) != null ? _c : false; + message.children = ((_d = object.children) == null ? void 0 : _d.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseMathBlockNode() { + return { content: "" }; +} +var MathBlockNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMathBlockNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MathBlockNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseMathBlockNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseTableNode() { + return { header: [], delimiter: [], rows: [] }; +} +var TableNode = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.header) { + writer.uint32(10).string(v); + } + for (const v of message.delimiter) { + writer.uint32(18).string(v); + } + for (const v of message.rows) { + TableNode_Row.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTableNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.header.push(reader.string()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.delimiter.push(reader.string()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.rows.push(TableNode_Row.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TableNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseTableNode(); + message.header = ((_a = object.header) == null ? void 0 : _a.map((e) => e)) || []; + message.delimiter = ((_b = object.delimiter) == null ? void 0 : _b.map((e) => e)) || []; + message.rows = ((_c = object.rows) == null ? void 0 : _c.map((e) => TableNode_Row.fromPartial(e))) || []; + return message; + } +}; +function createBaseTableNode_Row() { + return { cells: [] }; +} +var TableNode_Row = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.cells) { + writer.uint32(10).string(v); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTableNode_Row(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.cells.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TableNode_Row.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseTableNode_Row(); + message.cells = ((_a = object.cells) == null ? void 0 : _a.map((e) => e)) || []; + return message; + } +}; +function createBaseEmbeddedContentNode() { + return { resourceName: "", params: "" }; +} +var EmbeddedContentNode = { + encode(message, writer = new BinaryWriter()) { + if (message.resourceName !== "") { + writer.uint32(10).string(message.resourceName); + } + if (message.params !== "") { + writer.uint32(18).string(message.params); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseEmbeddedContentNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resourceName = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.params = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return EmbeddedContentNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseEmbeddedContentNode(); + message.resourceName = (_a = object.resourceName) != null ? _a : ""; + message.params = (_b = object.params) != null ? _b : ""; + return message; + } +}; +function createBaseTextNode() { + return { content: "" }; +} +var TextNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTextNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TextNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseTextNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseBoldNode() { + return { symbol: "", children: [] }; +} +var BoldNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + for (const v of message.children) { + Node.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseBoldNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.children.push(Node.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return BoldNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseBoldNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.children = ((_b = object.children) == null ? void 0 : _b.map((e) => Node.fromPartial(e))) || []; + return message; + } +}; +function createBaseItalicNode() { + return { symbol: "", content: "" }; +} +var ItalicNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseItalicNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ItalicNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseItalicNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.content = (_b = object.content) != null ? _b : ""; + return message; + } +}; +function createBaseBoldItalicNode() { + return { symbol: "", content: "" }; +} +var BoldItalicNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseBoldItalicNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return BoldItalicNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseBoldItalicNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.content = (_b = object.content) != null ? _b : ""; + return message; + } +}; +function createBaseCodeNode() { + return { content: "" }; +} +var CodeNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCodeNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CodeNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseCodeNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseImageNode() { + return { altText: "", url: "" }; +} +var ImageNode = { + encode(message, writer = new BinaryWriter()) { + if (message.altText !== "") { + writer.uint32(10).string(message.altText); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseImageNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.altText = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.url = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ImageNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseImageNode(); + message.altText = (_a = object.altText) != null ? _a : ""; + message.url = (_b = object.url) != null ? _b : ""; + return message; + } +}; +function createBaseLinkNode() { + return { text: "", url: "" }; +} +var LinkNode = { + encode(message, writer = new BinaryWriter()) { + if (message.text !== "") { + writer.uint32(10).string(message.text); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLinkNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.text = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.url = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return LinkNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseLinkNode(); + message.text = (_a = object.text) != null ? _a : ""; + message.url = (_b = object.url) != null ? _b : ""; + return message; + } +}; +function createBaseAutoLinkNode() { + return { url: "", isRawText: false }; +} +var AutoLinkNode = { + encode(message, writer = new BinaryWriter()) { + if (message.url !== "") { + writer.uint32(10).string(message.url); + } + if (message.isRawText !== false) { + writer.uint32(16).bool(message.isRawText); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseAutoLinkNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.url = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.isRawText = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return AutoLinkNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseAutoLinkNode(); + message.url = (_a = object.url) != null ? _a : ""; + message.isRawText = (_b = object.isRawText) != null ? _b : false; + return message; + } +}; +function createBaseTagNode() { + return { content: "" }; +} +var TagNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTagNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TagNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseTagNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseStrikethroughNode() { + return { content: "" }; +} +var StrikethroughNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseStrikethroughNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return StrikethroughNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseStrikethroughNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseEscapingCharacterNode() { + return { symbol: "" }; +} +var EscapingCharacterNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseEscapingCharacterNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return EscapingCharacterNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseEscapingCharacterNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + return message; + } +}; +function createBaseMathNode() { + return { content: "" }; +} +var MathNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMathNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MathNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseMathNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseHighlightNode() { + return { content: "" }; +} +var HighlightNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHighlightNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HighlightNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseHighlightNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseSubscriptNode() { + return { content: "" }; +} +var SubscriptNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSubscriptNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SubscriptNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSubscriptNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseSuperscriptNode() { + return { content: "" }; +} +var SuperscriptNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSuperscriptNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SuperscriptNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSuperscriptNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseReferencedContentNode() { + return { resourceName: "", params: "" }; +} +var ReferencedContentNode = { + encode(message, writer = new BinaryWriter()) { + if (message.resourceName !== "") { + writer.uint32(10).string(message.resourceName); + } + if (message.params !== "") { + writer.uint32(18).string(message.params); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseReferencedContentNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resourceName = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.params = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ReferencedContentNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseReferencedContentNode(); + message.resourceName = (_a = object.resourceName) != null ? _a : ""; + message.params = (_b = object.params) != null ? _b : ""; + return message; + } +}; +function createBaseSpoilerNode() { + return { content: "" }; +} +var SpoilerNode = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSpoilerNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SpoilerNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSpoilerNode(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +var MarkdownServiceDefinition = { + name: "MarkdownService", + fullName: "memos.api.v1.MarkdownService", + methods: { + /** Parses the given markdown content and returns a list of nodes. */ + parseMarkdown: { + name: "ParseMarkdown", + requestType: ParseMarkdownRequest, + requestStream: false, + responseType: ParseMarkdownResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 27, + 58, + 1, + 42, + 34, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 112, + 97, + 114, + 115, + 101 + ]) + ] + } + } + }, + /** Restores the given nodes to markdown content. */ + restoreMarkdown: { + name: "RestoreMarkdown", + requestType: RestoreMarkdownRequest, + requestStream: false, + responseType: RestoreMarkdownResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 29, + 58, + 1, + 42, + 34, + 24, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 58, + 114, + 101, + 115, + 116, + 111, + 114, + 101 + ]) + ] + } + } + }, + /** GetLinkMetadata returns metadata for a given link. */ + getLinkMetadata: { + name: "GetLinkMetadata", + requestType: GetLinkMetadataRequest, + requestStream: false, + responseType: LinkMetadata, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 108, + 105, + 110, + 107, + 58, + 109, + 101, + 116, + 97, + 100, + 97, + 116, + 97 + ]) + ] + } + } + } + } +}; + +// src/api/memos-proto-v0.22.0/gen/api/v1/memo_relation_service.ts +function memoRelation_TypeFromJSON(object) { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */; + case 1: + case "REFERENCE": + return "REFERENCE" /* REFERENCE */; + case 2: + case "COMMENT": + return "COMMENT" /* COMMENT */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function memoRelation_TypeToNumber(object) { + switch (object) { + case "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */: + return 0; + case "REFERENCE" /* REFERENCE */: + return 1; + case "COMMENT" /* COMMENT */: + return 2; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseMemoRelation() { + return { memo: "", relatedMemo: "", type: "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */ }; +} +var MemoRelation = { + encode(message, writer = new BinaryWriter()) { + if (message.memo !== "") { + writer.uint32(10).string(message.memo); + } + if (message.relatedMemo !== "") { + writer.uint32(18).string(message.relatedMemo); + } + if (message.type !== "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */) { + writer.uint32(24).int32(memoRelation_TypeToNumber(message.type)); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemoRelation(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memo = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.relatedMemo = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.type = memoRelation_TypeFromJSON(reader.int32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MemoRelation.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseMemoRelation(); + message.memo = (_a = object.memo) != null ? _a : ""; + message.relatedMemo = (_b = object.relatedMemo) != null ? _b : ""; + message.type = (_c = object.type) != null ? _c : "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */; + return message; + } +}; + +// src/api/memos-proto-v0.22.0/gen/api/v1/reaction_service.ts +function reaction_TypeFromJSON(object) { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */; + case 1: + case "THUMBS_UP": + return "THUMBS_UP" /* THUMBS_UP */; + case 2: + case "THUMBS_DOWN": + return "THUMBS_DOWN" /* THUMBS_DOWN */; + case 3: + case "HEART": + return "HEART" /* HEART */; + case 4: + case "FIRE": + return "FIRE" /* FIRE */; + case 5: + case "CLAPPING_HANDS": + return "CLAPPING_HANDS" /* CLAPPING_HANDS */; + case 6: + case "LAUGH": + return "LAUGH" /* LAUGH */; + case 7: + case "OK_HAND": + return "OK_HAND" /* OK_HAND */; + case 8: + case "ROCKET": + return "ROCKET" /* ROCKET */; + case 9: + case "EYES": + return "EYES" /* EYES */; + case 10: + case "THINKING_FACE": + return "THINKING_FACE" /* THINKING_FACE */; + case 11: + case "CLOWN_FACE": + return "CLOWN_FACE" /* CLOWN_FACE */; + case 12: + case "QUESTION_MARK": + return "QUESTION_MARK" /* QUESTION_MARK */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function reaction_TypeToNumber(object) { + switch (object) { + case "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */: + return 0; + case "THUMBS_UP" /* THUMBS_UP */: + return 1; + case "THUMBS_DOWN" /* THUMBS_DOWN */: + return 2; + case "HEART" /* HEART */: + return 3; + case "FIRE" /* FIRE */: + return 4; + case "CLAPPING_HANDS" /* CLAPPING_HANDS */: + return 5; + case "LAUGH" /* LAUGH */: + return 6; + case "OK_HAND" /* OK_HAND */: + return 7; + case "ROCKET" /* ROCKET */: + return 8; + case "EYES" /* EYES */: + return 9; + case "THINKING_FACE" /* THINKING_FACE */: + return 10; + case "CLOWN_FACE" /* CLOWN_FACE */: + return 11; + case "QUESTION_MARK" /* QUESTION_MARK */: + return 12; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseReaction() { + return { id: 0, creator: "", contentId: "", reactionType: "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */ }; +} +var Reaction = { + encode(message, writer = new BinaryWriter()) { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + if (message.creator !== "") { + writer.uint32(18).string(message.creator); + } + if (message.contentId !== "") { + writer.uint32(26).string(message.contentId); + } + if (message.reactionType !== "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */) { + writer.uint32(32).int32(reaction_TypeToNumber(message.reactionType)); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseReaction(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.id = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.creator = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.contentId = reader.string(); + continue; + } + case 4: { + if (tag !== 32) { + break; + } + message.reactionType = reaction_TypeFromJSON(reader.int32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Reaction.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseReaction(); + message.id = (_a = object.id) != null ? _a : 0; + message.creator = (_b = object.creator) != null ? _b : ""; + message.contentId = (_c = object.contentId) != null ? _c : ""; + message.reactionType = (_d = object.reactionType) != null ? _d : "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */; + return message; + } +}; + +// src/api/memos-proto-v0.22.0/gen/google/protobuf/any.ts +function createBaseAny() { + return { typeUrl: "", value: new Uint8Array(0) }; +} +var Any = { + encode(message, writer = new BinaryWriter()) { + if (message.typeUrl !== "") { + writer.uint32(10).string(message.typeUrl); + } + if (message.value.length !== 0) { + writer.uint32(18).bytes(message.value); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseAny(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.typeUrl = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.value = reader.bytes(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Any.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseAny(); + message.typeUrl = (_a = object.typeUrl) != null ? _a : ""; + message.value = (_b = object.value) != null ? _b : new Uint8Array(0); + return message; + } +}; + +// src/api/memos-proto-v0.22.0/gen/google/api/httpbody.ts +function createBaseHttpBody() { + return { contentType: "", data: new Uint8Array(0), extensions: [] }; +} +var HttpBody = { + encode(message, writer = new BinaryWriter()) { + if (message.contentType !== "") { + writer.uint32(10).string(message.contentType); + } + if (message.data.length !== 0) { + writer.uint32(18).bytes(message.data); + } + for (const v of message.extensions) { + Any.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHttpBody(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.contentType = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.data = reader.bytes(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.extensions.push(Any.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HttpBody.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseHttpBody(); + message.contentType = (_a = object.contentType) != null ? _a : ""; + message.data = (_b = object.data) != null ? _b : new Uint8Array(0); + message.extensions = ((_c = object.extensions) == null ? void 0 : _c.map((e) => Any.fromPartial(e))) || []; + return message; + } +}; + +// src/api/memos-proto-v0.22.0/gen/api/v1/resource_service.ts +function createBaseResource() { + return { + name: "", + uid: "", + createTime: void 0, + filename: "", + content: new Uint8Array(0), + externalLink: "", + type: "", + size: 0, + memo: void 0 + }; +} +var Resource = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.uid !== "") { + writer.uint32(18).string(message.uid); + } + if (message.createTime !== void 0) { + Timestamp.encode(toTimestamp(message.createTime), writer.uint32(26).fork()).join(); + } + if (message.filename !== "") { + writer.uint32(34).string(message.filename); + } + if (message.content.length !== 0) { + writer.uint32(42).bytes(message.content); + } + if (message.externalLink !== "") { + writer.uint32(50).string(message.externalLink); + } + if (message.type !== "") { + writer.uint32(58).string(message.type); + } + if (message.size !== 0) { + writer.uint32(64).int64(message.size); + } + if (message.memo !== void 0) { + writer.uint32(74).string(message.memo); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseResource(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.uid = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.createTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.filename = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.content = reader.bytes(); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.externalLink = reader.string(); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.type = reader.string(); + continue; + } + case 8: { + if (tag !== 64) { + break; + } + message.size = longToNumber2(reader.int64()); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.memo = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Resource.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i; + const message = createBaseResource(); + message.name = (_a = object.name) != null ? _a : ""; + message.uid = (_b = object.uid) != null ? _b : ""; + message.createTime = (_c = object.createTime) != null ? _c : void 0; + message.filename = (_d = object.filename) != null ? _d : ""; + message.content = (_e = object.content) != null ? _e : new Uint8Array(0); + message.externalLink = (_f = object.externalLink) != null ? _f : ""; + message.type = (_g = object.type) != null ? _g : ""; + message.size = (_h = object.size) != null ? _h : 0; + message.memo = (_i = object.memo) != null ? _i : void 0; + return message; + } +}; +function createBaseCreateResourceRequest() { + return { resource: void 0 }; +} +var CreateResourceRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.resource !== void 0) { + Resource.encode(message.resource, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resource = Resource.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateResourceRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + const message = createBaseCreateResourceRequest(); + message.resource = object.resource !== void 0 && object.resource !== null ? Resource.fromPartial(object.resource) : void 0; + return message; + } +}; +function createBaseListResourcesRequest() { + return {}; +} +var ListResourcesRequest = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListResourcesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseListResourcesRequest(); + return message; + } +}; +function createBaseListResourcesResponse() { + return { resources: [] }; +} +var ListResourcesResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.resources) { + Resource.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListResourcesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListResourcesResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListResourcesResponse(); + message.resources = ((_a = object.resources) == null ? void 0 : _a.map((e) => Resource.fromPartial(e))) || []; + return message; + } +}; +function createBaseSearchResourcesRequest() { + return { filter: "" }; +} +var SearchResourcesRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSearchResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SearchResourcesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSearchResourcesRequest(); + message.filter = (_a = object.filter) != null ? _a : ""; + return message; + } +}; +function createBaseSearchResourcesResponse() { + return { resources: [] }; +} +var SearchResourcesResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.resources) { + Resource.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSearchResourcesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SearchResourcesResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSearchResourcesResponse(); + message.resources = ((_a = object.resources) == null ? void 0 : _a.map((e) => Resource.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetResourceRequest() { + return { name: "" }; +} +var GetResourceRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetResourceRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetResourceRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseGetResourceBinaryRequest() { + return { name: "", filename: "" }; +} +var GetResourceBinaryRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.filename !== "") { + writer.uint32(18).string(message.filename); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetResourceBinaryRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.filename = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetResourceBinaryRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseGetResourceBinaryRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.filename = (_b = object.filename) != null ? _b : ""; + return message; + } +}; +function createBaseUpdateResourceRequest() { + return { resource: void 0, updateMask: void 0 }; +} +var UpdateResourceRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.resource !== void 0) { + Resource.encode(message.resource, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resource = Resource.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateResourceRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateResourceRequest(); + message.resource = object.resource !== void 0 && object.resource !== null ? Resource.fromPartial(object.resource) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseDeleteResourceRequest() { + return { name: "" }; +} +var DeleteResourceRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteResourceRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteResourceRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteResourceRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +var ResourceServiceDefinition = { + name: "ResourceService", + fullName: "memos.api.v1.ResourceService", + methods: { + /** CreateResource creates a new resource. */ + createResource: { + name: "CreateResource", + requestType: CreateResourceRequest, + requestStream: false, + responseType: Resource, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 29, + 58, + 8, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 34, + 17, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115 + ]) + ] + } + } + }, + /** ListResources lists all resources. */ + listResources: { + name: "ListResources", + requestType: ListResourcesRequest, + requestStream: false, + responseType: ListResourcesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([19, 18, 17, 47, 97, 112, 105, 47, 118, 49, 47, 114, 101, 115, 111, 117, 114, 99, 101, 115]) + ] + } + } + }, + /** SearchResources searches memos. */ + searchResources: { + name: "SearchResources", + requestType: SearchResourcesRequest, + requestStream: false, + responseType: SearchResourcesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 26, + 18, + 24, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 58, + 115, + 101, + 97, + 114, + 99, + 104 + ]) + ] + } + } + }, + /** GetResource returns a resource by name. */ + getResource: { + name: "GetResource", + requestType: GetResourceRequest, + requestStream: false, + responseType: Resource, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 28, + 18, + 26, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** GetResourceBinary returns a resource binary by name. */ + getResourceBinary: { + name: "GetResourceBinary", + requestType: GetResourceBinaryRequest, + requestStream: false, + responseType: HttpBody, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([13, 110, 97, 109, 101, 44, 102, 105, 108, 101, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 18, + 35, + 47, + 102, + 105, + 108, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125, + 47, + 123, + 102, + 105, + 108, + 101, + 110, + 97, + 109, + 101, + 125 + ]) + ] + } + } + }, + /** UpdateResource updates a resource. */ + updateResource: { + name: "UpdateResource", + requestType: UpdateResourceRequest, + requestStream: false, + responseType: Resource, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 20, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107 + ]) + ], + 578365826: [ + new Uint8Array([ + 47, + 58, + 8, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 50, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 46, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** DeleteResource deletes a resource by name. */ + deleteResource: { + name: "DeleteResource", + requestType: DeleteResourceRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 28, + 42, + 26, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125 + ]) + ] + } + } + } + } +}; +function toTimestamp(date) { + const seconds = Math.trunc(date.getTime() / 1e3); + const nanos = date.getTime() % 1e3 * 1e6; + return { seconds, nanos }; +} +function fromTimestamp(t) { + let millis = (t.seconds || 0) * 1e3; + millis += (t.nanos || 0) / 1e6; + return new globalThis.Date(millis); +} +function longToNumber2(int64) { + const num = globalThis.Number(int64.toString()); + if (num > globalThis.Number.MAX_SAFE_INTEGER) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + if (num < globalThis.Number.MIN_SAFE_INTEGER) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } + return num; +} + +// src/api/memos-proto-v0.22.0/gen/api/v1/memo_service.ts +function visibilityFromJSON(object) { + switch (object) { + case 0: + case "VISIBILITY_UNSPECIFIED": + return "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */; + case 1: + case "PRIVATE": + return "PRIVATE" /* PRIVATE */; + case 2: + case "PROTECTED": + return "PROTECTED" /* PROTECTED */; + case 3: + case "PUBLIC": + return "PUBLIC" /* PUBLIC */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function visibilityToNumber(object) { + switch (object) { + case "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */: + return 0; + case "PRIVATE" /* PRIVATE */: + return 1; + case "PROTECTED" /* PROTECTED */: + return 2; + case "PUBLIC" /* PUBLIC */: + return 3; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseMemo() { + return { + name: "", + uid: "", + rowStatus: "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */, + creator: "", + createTime: void 0, + updateTime: void 0, + displayTime: void 0, + content: "", + nodes: [], + visibility: "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */, + tags: [], + pinned: false, + parentId: void 0, + resources: [], + relations: [], + reactions: [], + property: void 0, + parent: void 0 + }; +} +var Memo = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.uid !== "") { + writer.uint32(18).string(message.uid); + } + if (message.rowStatus !== "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */) { + writer.uint32(24).int32(rowStatusToNumber(message.rowStatus)); + } + if (message.creator !== "") { + writer.uint32(34).string(message.creator); + } + if (message.createTime !== void 0) { + Timestamp.encode(toTimestamp2(message.createTime), writer.uint32(42).fork()).join(); + } + if (message.updateTime !== void 0) { + Timestamp.encode(toTimestamp2(message.updateTime), writer.uint32(50).fork()).join(); + } + if (message.displayTime !== void 0) { + Timestamp.encode(toTimestamp2(message.displayTime), writer.uint32(58).fork()).join(); + } + if (message.content !== "") { + writer.uint32(66).string(message.content); + } + for (const v of message.nodes) { + Node.encode(v, writer.uint32(74).fork()).join(); + } + if (message.visibility !== "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */) { + writer.uint32(80).int32(visibilityToNumber(message.visibility)); + } + for (const v of message.tags) { + writer.uint32(90).string(v); + } + if (message.pinned !== false) { + writer.uint32(96).bool(message.pinned); + } + if (message.parentId !== void 0) { + writer.uint32(104).int32(message.parentId); + } + for (const v of message.resources) { + Resource.encode(v, writer.uint32(114).fork()).join(); + } + for (const v of message.relations) { + MemoRelation.encode(v, writer.uint32(122).fork()).join(); + } + for (const v of message.reactions) { + Reaction.encode(v, writer.uint32(130).fork()).join(); + } + if (message.property !== void 0) { + MemoProperty.encode(message.property, writer.uint32(138).fork()).join(); + } + if (message.parent !== void 0) { + writer.uint32(146).string(message.parent); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemo(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.uid = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.rowStatus = rowStatusFromJSON(reader.int32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.creator = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.createTime = fromTimestamp2(Timestamp.decode(reader, reader.uint32())); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.updateTime = fromTimestamp2(Timestamp.decode(reader, reader.uint32())); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.displayTime = fromTimestamp2(Timestamp.decode(reader, reader.uint32())); + continue; + } + case 8: { + if (tag !== 66) { + break; + } + message.content = reader.string(); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.nodes.push(Node.decode(reader, reader.uint32())); + continue; + } + case 10: { + if (tag !== 80) { + break; + } + message.visibility = visibilityFromJSON(reader.int32()); + continue; + } + case 11: { + if (tag !== 90) { + break; + } + message.tags.push(reader.string()); + continue; + } + case 12: { + if (tag !== 96) { + break; + } + message.pinned = reader.bool(); + continue; + } + case 13: { + if (tag !== 104) { + break; + } + message.parentId = reader.int32(); + continue; + } + case 14: { + if (tag !== 114) { + break; + } + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + case 15: { + if (tag !== 122) { + break; + } + message.relations.push(MemoRelation.decode(reader, reader.uint32())); + continue; + } + case 16: { + if (tag !== 130) { + break; + } + message.reactions.push(Reaction.decode(reader, reader.uint32())); + continue; + } + case 17: { + if (tag !== 138) { + break; + } + message.property = MemoProperty.decode(reader, reader.uint32()); + continue; + } + case 18: { + if (tag !== 146) { + break; + } + message.parent = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Memo.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q; + const message = createBaseMemo(); + message.name = (_a = object.name) != null ? _a : ""; + message.uid = (_b = object.uid) != null ? _b : ""; + message.rowStatus = (_c = object.rowStatus) != null ? _c : "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */; + message.creator = (_d = object.creator) != null ? _d : ""; + message.createTime = (_e = object.createTime) != null ? _e : void 0; + message.updateTime = (_f = object.updateTime) != null ? _f : void 0; + message.displayTime = (_g = object.displayTime) != null ? _g : void 0; + message.content = (_h = object.content) != null ? _h : ""; + message.nodes = ((_i = object.nodes) == null ? void 0 : _i.map((e) => Node.fromPartial(e))) || []; + message.visibility = (_j = object.visibility) != null ? _j : "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */; + message.tags = ((_k = object.tags) == null ? void 0 : _k.map((e) => e)) || []; + message.pinned = (_l = object.pinned) != null ? _l : false; + message.parentId = (_m = object.parentId) != null ? _m : void 0; + message.resources = ((_n = object.resources) == null ? void 0 : _n.map((e) => Resource.fromPartial(e))) || []; + message.relations = ((_o = object.relations) == null ? void 0 : _o.map((e) => MemoRelation.fromPartial(e))) || []; + message.reactions = ((_p = object.reactions) == null ? void 0 : _p.map((e) => Reaction.fromPartial(e))) || []; + message.property = object.property !== void 0 && object.property !== null ? MemoProperty.fromPartial(object.property) : void 0; + message.parent = (_q = object.parent) != null ? _q : void 0; + return message; + } +}; +function createBaseMemoProperty() { + return { tags: [], hasLink: false, hasTaskList: false }; +} +var MemoProperty = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.tags) { + writer.uint32(10).string(v); + } + if (message.hasLink !== false) { + writer.uint32(16).bool(message.hasLink); + } + if (message.hasTaskList !== false) { + writer.uint32(24).bool(message.hasTaskList); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemoProperty(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.tags.push(reader.string()); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.hasLink = reader.bool(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.hasTaskList = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MemoProperty.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseMemoProperty(); + message.tags = ((_a = object.tags) == null ? void 0 : _a.map((e) => e)) || []; + message.hasLink = (_b = object.hasLink) != null ? _b : false; + message.hasTaskList = (_c = object.hasTaskList) != null ? _c : false; + return message; + } +}; +function createBaseCreateMemoRequest() { + return { content: "", visibility: "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */ }; +} +var CreateMemoRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + if (message.visibility !== "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */) { + writer.uint32(16).int32(visibilityToNumber(message.visibility)); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.visibility = visibilityFromJSON(reader.int32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateMemoRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseCreateMemoRequest(); + message.content = (_a = object.content) != null ? _a : ""; + message.visibility = (_b = object.visibility) != null ? _b : "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */; + return message; + } +}; +function createBaseListMemosRequest() { + return { pageSize: 0, pageToken: "", filter: "" }; +} +var ListMemosRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.pageSize !== 0) { + writer.uint32(8).int32(message.pageSize); + } + if (message.pageToken !== "") { + writer.uint32(18).string(message.pageToken); + } + if (message.filter !== "") { + writer.uint32(26).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemosRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.pageSize = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.pageToken = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemosRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseListMemosRequest(); + message.pageSize = (_a = object.pageSize) != null ? _a : 0; + message.pageToken = (_b = object.pageToken) != null ? _b : ""; + message.filter = (_c = object.filter) != null ? _c : ""; + return message; + } +}; +function createBaseListMemosResponse() { + return { memos: [], nextPageToken: "" }; +} +var ListMemosResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.memos) { + Memo.encode(v, writer.uint32(10).fork()).join(); + } + if (message.nextPageToken !== "") { + writer.uint32(18).string(message.nextPageToken); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemosResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memos.push(Memo.decode(reader, reader.uint32())); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.nextPageToken = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemosResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseListMemosResponse(); + message.memos = ((_a = object.memos) == null ? void 0 : _a.map((e) => Memo.fromPartial(e))) || []; + message.nextPageToken = (_b = object.nextPageToken) != null ? _b : ""; + return message; + } +}; +function createBaseSearchMemosRequest() { + return { filter: "" }; +} +var SearchMemosRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSearchMemosRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SearchMemosRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSearchMemosRequest(); + message.filter = (_a = object.filter) != null ? _a : ""; + return message; + } +}; +function createBaseSearchMemosResponse() { + return { memos: [] }; +} +var SearchMemosResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.memos) { + Memo.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSearchMemosResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memos.push(Memo.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SearchMemosResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSearchMemosResponse(); + message.memos = ((_a = object.memos) == null ? void 0 : _a.map((e) => Memo.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetMemoRequest() { + return { name: "" }; +} +var GetMemoRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetMemoRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetMemoRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUpdateMemoRequest() { + return { memo: void 0, updateMask: void 0 }; +} +var UpdateMemoRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.memo !== void 0) { + Memo.encode(message.memo, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memo = Memo.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateMemoRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateMemoRequest(); + message.memo = object.memo !== void 0 && object.memo !== null ? Memo.fromPartial(object.memo) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseDeleteMemoRequest() { + return { name: "" }; +} +var DeleteMemoRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteMemoRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteMemoRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseExportMemosRequest() { + return { filter: "" }; +} +var ExportMemosRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseExportMemosRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ExportMemosRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseExportMemosRequest(); + message.filter = (_a = object.filter) != null ? _a : ""; + return message; + } +}; +function createBaseExportMemosResponse() { + return { content: new Uint8Array(0) }; +} +var ExportMemosResponse = { + encode(message, writer = new BinaryWriter()) { + if (message.content.length !== 0) { + writer.uint32(10).bytes(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseExportMemosResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.bytes(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ExportMemosResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseExportMemosResponse(); + message.content = (_a = object.content) != null ? _a : new Uint8Array(0); + return message; + } +}; +function createBaseListMemoPropertiesRequest() { + return { name: "" }; +} +var ListMemoPropertiesRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoPropertiesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoPropertiesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoPropertiesRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoPropertiesResponse() { + return { properties: [] }; +} +var ListMemoPropertiesResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.properties) { + MemoProperty.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoPropertiesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.properties.push(MemoProperty.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoPropertiesResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoPropertiesResponse(); + message.properties = ((_a = object.properties) == null ? void 0 : _a.map((e) => MemoProperty.fromPartial(e))) || []; + return message; + } +}; +function createBaseRebuildMemoPropertyRequest() { + return { name: "" }; +} +var RebuildMemoPropertyRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRebuildMemoPropertyRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RebuildMemoPropertyRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseRebuildMemoPropertyRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoTagsRequest() { + return { parent: "", filter: "" }; +} +var ListMemoTagsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.filter !== "") { + writer.uint32(18).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoTagsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoTagsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseListMemoTagsRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.filter = (_b = object.filter) != null ? _b : ""; + return message; + } +}; +function createBaseListMemoTagsResponse() { + return { tagAmounts: {} }; +} +var ListMemoTagsResponse = { + encode(message, writer = new BinaryWriter()) { + Object.entries(message.tagAmounts).forEach(([key, value]) => { + ListMemoTagsResponse_TagAmountsEntry.encode({ key, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoTagsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + const entry1 = ListMemoTagsResponse_TagAmountsEntry.decode(reader, reader.uint32()); + if (entry1.value !== void 0) { + message.tagAmounts[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoTagsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoTagsResponse(); + message.tagAmounts = Object.entries((_a = object.tagAmounts) != null ? _a : {}).reduce( + (acc, [key, value]) => { + if (value !== void 0) { + acc[key] = globalThis.Number(value); + } + return acc; + }, + {} + ); + return message; + } +}; +function createBaseListMemoTagsResponse_TagAmountsEntry() { + return { key: "", value: 0 }; +} +var ListMemoTagsResponse_TagAmountsEntry = { + encode(message, writer = new BinaryWriter()) { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== 0) { + writer.uint32(16).int32(message.value); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoTagsResponse_TagAmountsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.key = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.value = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoTagsResponse_TagAmountsEntry.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseListMemoTagsResponse_TagAmountsEntry(); + message.key = (_a = object.key) != null ? _a : ""; + message.value = (_b = object.value) != null ? _b : 0; + return message; + } +}; +function createBaseRenameMemoTagRequest() { + return { parent: "", oldTag: "", newTag: "" }; +} +var RenameMemoTagRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.oldTag !== "") { + writer.uint32(18).string(message.oldTag); + } + if (message.newTag !== "") { + writer.uint32(26).string(message.newTag); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRenameMemoTagRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.oldTag = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.newTag = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RenameMemoTagRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseRenameMemoTagRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.oldTag = (_b = object.oldTag) != null ? _b : ""; + message.newTag = (_c = object.newTag) != null ? _c : ""; + return message; + } +}; +function createBaseDeleteMemoTagRequest() { + return { parent: "", tag: "", deleteRelatedMemos: false }; +} +var DeleteMemoTagRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.tag !== "") { + writer.uint32(18).string(message.tag); + } + if (message.deleteRelatedMemos !== false) { + writer.uint32(24).bool(message.deleteRelatedMemos); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoTagRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.tag = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.deleteRelatedMemos = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteMemoTagRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseDeleteMemoTagRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.tag = (_b = object.tag) != null ? _b : ""; + message.deleteRelatedMemos = (_c = object.deleteRelatedMemos) != null ? _c : false; + return message; + } +}; +function createBaseSetMemoResourcesRequest() { + return { name: "", resources: [] }; +} +var SetMemoResourcesRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.resources) { + Resource.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSetMemoResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SetMemoResourcesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseSetMemoResourcesRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.resources = ((_b = object.resources) == null ? void 0 : _b.map((e) => Resource.fromPartial(e))) || []; + return message; + } +}; +function createBaseListMemoResourcesRequest() { + return { name: "" }; +} +var ListMemoResourcesRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoResourcesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoResourcesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoResourcesRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoResourcesResponse() { + return { resources: [] }; +} +var ListMemoResourcesResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.resources) { + Resource.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoResourcesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resources.push(Resource.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoResourcesResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoResourcesResponse(); + message.resources = ((_a = object.resources) == null ? void 0 : _a.map((e) => Resource.fromPartial(e))) || []; + return message; + } +}; +function createBaseSetMemoRelationsRequest() { + return { name: "", relations: [] }; +} +var SetMemoRelationsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.relations) { + MemoRelation.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSetMemoRelationsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.relations.push(MemoRelation.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SetMemoRelationsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseSetMemoRelationsRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.relations = ((_b = object.relations) == null ? void 0 : _b.map((e) => MemoRelation.fromPartial(e))) || []; + return message; + } +}; +function createBaseListMemoRelationsRequest() { + return { name: "" }; +} +var ListMemoRelationsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoRelationsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoRelationsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoRelationsRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoRelationsResponse() { + return { relations: [] }; +} +var ListMemoRelationsResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.relations) { + MemoRelation.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoRelationsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.relations.push(MemoRelation.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoRelationsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoRelationsResponse(); + message.relations = ((_a = object.relations) == null ? void 0 : _a.map((e) => MemoRelation.fromPartial(e))) || []; + return message; + } +}; +function createBaseCreateMemoCommentRequest() { + return { name: "", comment: void 0 }; +} +var CreateMemoCommentRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.comment !== void 0) { + CreateMemoRequest.encode(message.comment, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateMemoCommentRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.comment = CreateMemoRequest.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateMemoCommentRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseCreateMemoCommentRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.comment = object.comment !== void 0 && object.comment !== null ? CreateMemoRequest.fromPartial(object.comment) : void 0; + return message; + } +}; +function createBaseListMemoCommentsRequest() { + return { name: "" }; +} +var ListMemoCommentsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoCommentsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoCommentsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoCommentsRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoCommentsResponse() { + return { memos: [] }; +} +var ListMemoCommentsResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.memos) { + Memo.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoCommentsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memos.push(Memo.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoCommentsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoCommentsResponse(); + message.memos = ((_a = object.memos) == null ? void 0 : _a.map((e) => Memo.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetUserMemosStatsRequest() { + return { name: "", timezone: "", filter: "" }; +} +var GetUserMemosStatsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.timezone !== "") { + writer.uint32(18).string(message.timezone); + } + if (message.filter !== "") { + writer.uint32(26).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserMemosStatsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.timezone = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserMemosStatsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseGetUserMemosStatsRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.timezone = (_b = object.timezone) != null ? _b : ""; + message.filter = (_c = object.filter) != null ? _c : ""; + return message; + } +}; +function createBaseGetUserMemosStatsResponse() { + return { stats: {} }; +} +var GetUserMemosStatsResponse = { + encode(message, writer = new BinaryWriter()) { + Object.entries(message.stats).forEach(([key, value]) => { + GetUserMemosStatsResponse_StatsEntry.encode({ key, value }, writer.uint32(10).fork()).join(); + }); + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserMemosStatsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + const entry1 = GetUserMemosStatsResponse_StatsEntry.decode(reader, reader.uint32()); + if (entry1.value !== void 0) { + message.stats[entry1.key] = entry1.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserMemosStatsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserMemosStatsResponse(); + message.stats = Object.entries((_a = object.stats) != null ? _a : {}).reduce((acc, [key, value]) => { + if (value !== void 0) { + acc[key] = globalThis.Number(value); + } + return acc; + }, {}); + return message; + } +}; +function createBaseGetUserMemosStatsResponse_StatsEntry() { + return { key: "", value: 0 }; +} +var GetUserMemosStatsResponse_StatsEntry = { + encode(message, writer = new BinaryWriter()) { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== 0) { + writer.uint32(16).int32(message.value); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserMemosStatsResponse_StatsEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.key = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.value = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserMemosStatsResponse_StatsEntry.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseGetUserMemosStatsResponse_StatsEntry(); + message.key = (_a = object.key) != null ? _a : ""; + message.value = (_b = object.value) != null ? _b : 0; + return message; + } +}; +function createBaseListMemoReactionsRequest() { + return { name: "" }; +} +var ListMemoReactionsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoReactionsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoReactionsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoReactionsRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoReactionsResponse() { + return { reactions: [] }; +} +var ListMemoReactionsResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.reactions) { + Reaction.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoReactionsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.reactions.push(Reaction.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoReactionsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoReactionsResponse(); + message.reactions = ((_a = object.reactions) == null ? void 0 : _a.map((e) => Reaction.fromPartial(e))) || []; + return message; + } +}; +function createBaseUpsertMemoReactionRequest() { + return { name: "", reaction: void 0 }; +} +var UpsertMemoReactionRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.reaction !== void 0) { + Reaction.encode(message.reaction, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpsertMemoReactionRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.reaction = Reaction.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpsertMemoReactionRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpsertMemoReactionRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.reaction = object.reaction !== void 0 && object.reaction !== null ? Reaction.fromPartial(object.reaction) : void 0; + return message; + } +}; +function createBaseDeleteMemoReactionRequest() { + return { reactionId: 0 }; +} +var DeleteMemoReactionRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.reactionId !== 0) { + writer.uint32(8).int32(message.reactionId); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoReactionRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.reactionId = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteMemoReactionRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteMemoReactionRequest(); + message.reactionId = (_a = object.reactionId) != null ? _a : 0; + return message; + } +}; +var MemoServiceDefinition = { + name: "MemoService", + fullName: "memos.api.v1.MemoService", + methods: { + /** CreateMemo creates a memo. */ + createMemo: { + name: "CreateMemo", + requestType: CreateMemoRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([18, 58, 1, 42, 34, 13, 47, 97, 112, 105, 47, 118, 49, 47, 109, 101, 109, 111, 115]) + ] + } + } + }, + /** ListMemos lists memos with pagination and filter. */ + listMemos: { + name: "ListMemos", + requestType: ListMemosRequest, + requestStream: false, + responseType: ListMemosResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [new Uint8Array([15, 18, 13, 47, 97, 112, 105, 47, 118, 49, 47, 109, 101, 109, 111, 115])] + } + } + }, + /** SearchMemos searches memos. */ + searchMemos: { + name: "SearchMemos", + requestType: SearchMemosRequest, + requestStream: false, + responseType: SearchMemosResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 18, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115, + 58, + 115, + 101, + 97, + 114, + 99, + 104 + ]) + ] + } + } + }, + /** GetMemo gets a memo. */ + getMemo: { + name: "GetMemo", + requestType: GetMemoRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** UpdateMemo updates a memo. */ + updateMemo: { + name: "UpdateMemo", + requestType: UpdateMemoRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([16, 109, 101, 109, 111, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 35, + 58, + 4, + 109, + 101, + 109, + 111, + 50, + 27, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 109, + 101, + 109, + 111, + 46, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** DeleteMemo deletes a memo. */ + deleteMemo: { + name: "DeleteMemo", + requestType: DeleteMemoRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** ExportMemos exports memos. */ + exportMemos: { + name: "ExportMemos", + requestType: ExportMemosRequest, + requestStream: false, + responseType: ExportMemosResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 25, + 58, + 1, + 42, + 34, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115, + 58, + 101, + 120, + 112, + 111, + 114, + 116 + ]) + ] + } + } + }, + /** ListMemoProperties lists memo properties. */ + listMemoProperties: { + name: "ListMemoProperties", + requestType: ListMemoPropertiesRequest, + requestStream: false, + responseType: ListMemoPropertiesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 35, + 18, + 33, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 112, + 114, + 111, + 112, + 101, + 114, + 116, + 105, + 101, + 115 + ]) + ] + } + } + }, + /** RebuildMemoProperty rebuilds a memo property. */ + rebuildMemoProperty: { + name: "RebuildMemoProperty", + requestType: RebuildMemoPropertyRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 46, + 58, + 1, + 42, + 34, + 41, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 112, + 114, + 111, + 112, + 101, + 114, + 116, + 105, + 101, + 115, + 58, + 114, + 101, + 98, + 117, + 105, + 108, + 100 + ]) + ] + } + } + }, + /** ListMemoTags lists tags for a memo. */ + listMemoTags: { + name: "ListMemoTags", + requestType: ListMemoTagsRequest, + requestStream: false, + responseType: ListMemoTagsResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 31, + 18, + 29, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115 + ]) + ] + } + } + }, + /** RenameMemoTag renames a tag for a memo. */ + renameMemoTag: { + name: "RenameMemoTag", + requestType: RenameMemoTagRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 41, + 58, + 1, + 42, + 50, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + 58, + 114, + 101, + 110, + 97, + 109, + 101 + ]) + ] + } + } + }, + /** DeleteMemoTag deletes a tag for a memo. */ + deleteMemoTag: { + name: "DeleteMemoTag", + requestType: DeleteMemoTagRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 37, + 42, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + 47, + 123, + 116, + 97, + 103, + 125 + ]) + ] + } + } + }, + /** SetMemoResources sets resources for a memo. */ + setMemoResources: { + name: "SetMemoResources", + requestType: SetMemoResourcesRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 50, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115 + ]) + ] + } + } + }, + /** ListMemoResources lists resources for a memo. */ + listMemoResources: { + name: "ListMemoResources", + requestType: ListMemoResourcesRequest, + requestStream: false, + responseType: ListMemoResourcesResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115 + ]) + ] + } + } + }, + /** SetMemoRelations sets relations for a memo. */ + setMemoRelations: { + name: "SetMemoRelations", + requestType: SetMemoRelationsRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 50, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 108, + 97, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** ListMemoRelations lists relations for a memo. */ + listMemoRelations: { + name: "ListMemoRelations", + requestType: ListMemoRelationsRequest, + requestStream: false, + responseType: ListMemoRelationsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 108, + 97, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** CreateMemoComment creates a comment for a memo. */ + createMemoComment: { + name: "CreateMemoComment", + requestType: CreateMemoCommentRequest, + requestStream: false, + responseType: Memo, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 42, + 58, + 7, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 34, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 115 + ]) + ] + } + } + }, + /** ListMemoComments lists comments for a memo. */ + listMemoComments: { + name: "ListMemoComments", + requestType: ListMemoCommentsRequest, + requestStream: false, + responseType: ListMemoCommentsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 33, + 18, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 115 + ]) + ] + } + } + }, + /** GetUserMemosStats gets stats of memos for a user. */ + getUserMemosStats: { + name: "GetUserMemosStats", + requestType: GetUserMemosStatsRequest, + requestStream: false, + responseType: GetUserMemosStatsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([8, 117, 115, 101, 114, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 21, + 18, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115, + 47, + 115, + 116, + 97, + 116, + 115 + ]) + ] + } + } + }, + /** ListMemoReactions lists reactions for a memo. */ + listMemoReactions: { + name: "ListMemoReactions", + requestType: ListMemoReactionsRequest, + requestStream: false, + responseType: ListMemoReactionsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** UpsertMemoReaction upserts a reaction for a memo. */ + upsertMemoReaction: { + name: "UpsertMemoReaction", + requestType: UpsertMemoReactionRequest, + requestStream: false, + responseType: Reaction, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 34, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** DeleteMemoReaction deletes a reaction for a memo. */ + deleteMemoReaction: { + name: "DeleteMemoReaction", + requestType: DeleteMemoReactionRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([11, 114, 101, 97, 99, 116, 105, 111, 110, 95, 105, 100])], + 578365826: [ + new Uint8Array([ + 33, + 42, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115, + 47, + 123, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 95, + 105, + 100, + 125 + ]) + ] + } + } + } + } +}; +function toTimestamp2(date) { + const seconds = Math.trunc(date.getTime() / 1e3); + const nanos = date.getTime() % 1e3 * 1e6; + return { seconds, nanos }; +} +function fromTimestamp2(t) { + let millis = (t.seconds || 0) * 1e3; + millis += (t.nanos || 0) / 1e6; + return new globalThis.Date(millis); +} + +// src/api/memos-proto-v0.22.0/gen/api/v1/user_service.ts +function user_RoleFromJSON(object) { + switch (object) { + case 0: + case "ROLE_UNSPECIFIED": + return "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */; + case 1: + case "HOST": + return "HOST" /* HOST */; + case 2: + case "ADMIN": + return "ADMIN" /* ADMIN */; + case 3: + case "USER": + return "USER" /* USER */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function user_RoleToNumber(object) { + switch (object) { + case "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */: + return 0; + case "HOST" /* HOST */: + return 1; + case "ADMIN" /* ADMIN */: + return 2; + case "USER" /* USER */: + return 3; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseUser() { + return { + name: "", + id: 0, + role: "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */, + username: "", + email: "", + nickname: "", + avatarUrl: "", + description: "", + password: "", + rowStatus: "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */, + createTime: void 0, + updateTime: void 0 + }; +} +var User = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.id !== 0) { + writer.uint32(16).int32(message.id); + } + if (message.role !== "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */) { + writer.uint32(24).int32(user_RoleToNumber(message.role)); + } + if (message.username !== "") { + writer.uint32(34).string(message.username); + } + if (message.email !== "") { + writer.uint32(42).string(message.email); + } + if (message.nickname !== "") { + writer.uint32(50).string(message.nickname); + } + if (message.avatarUrl !== "") { + writer.uint32(58).string(message.avatarUrl); + } + if (message.description !== "") { + writer.uint32(66).string(message.description); + } + if (message.password !== "") { + writer.uint32(74).string(message.password); + } + if (message.rowStatus !== "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */) { + writer.uint32(80).int32(rowStatusToNumber(message.rowStatus)); + } + if (message.createTime !== void 0) { + Timestamp.encode(toTimestamp3(message.createTime), writer.uint32(90).fork()).join(); + } + if (message.updateTime !== void 0) { + Timestamp.encode(toTimestamp3(message.updateTime), writer.uint32(98).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUser(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.id = reader.int32(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.role = user_RoleFromJSON(reader.int32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.username = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.email = reader.string(); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.nickname = reader.string(); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.avatarUrl = reader.string(); + continue; + } + case 8: { + if (tag !== 66) { + break; + } + message.description = reader.string(); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.password = reader.string(); + continue; + } + case 10: { + if (tag !== 80) { + break; + } + message.rowStatus = rowStatusFromJSON(reader.int32()); + continue; + } + case 11: { + if (tag !== 90) { + break; + } + message.createTime = fromTimestamp3(Timestamp.decode(reader, reader.uint32())); + continue; + } + case 12: { + if (tag !== 98) { + break; + } + message.updateTime = fromTimestamp3(Timestamp.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return User.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; + const message = createBaseUser(); + message.name = (_a = object.name) != null ? _a : ""; + message.id = (_b = object.id) != null ? _b : 0; + message.role = (_c = object.role) != null ? _c : "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */; + message.username = (_d = object.username) != null ? _d : ""; + message.email = (_e = object.email) != null ? _e : ""; + message.nickname = (_f = object.nickname) != null ? _f : ""; + message.avatarUrl = (_g = object.avatarUrl) != null ? _g : ""; + message.description = (_h = object.description) != null ? _h : ""; + message.password = (_i = object.password) != null ? _i : ""; + message.rowStatus = (_j = object.rowStatus) != null ? _j : "ROW_STATUS_UNSPECIFIED" /* ROW_STATUS_UNSPECIFIED */; + message.createTime = (_k = object.createTime) != null ? _k : void 0; + message.updateTime = (_l = object.updateTime) != null ? _l : void 0; + return message; + } +}; +function createBaseListUsersRequest() { + return {}; +} +var ListUsersRequest = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUsersRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUsersRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseListUsersRequest(); + return message; + } +}; +function createBaseListUsersResponse() { + return { users: [] }; +} +var ListUsersResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.users) { + User.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUsersResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.users.push(User.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUsersResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListUsersResponse(); + message.users = ((_a = object.users) == null ? void 0 : _a.map((e) => User.fromPartial(e))) || []; + return message; + } +}; +function createBaseSearchUsersRequest() { + return { filter: "" }; +} +var SearchUsersRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.filter !== "") { + writer.uint32(10).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSearchUsersRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SearchUsersRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSearchUsersRequest(); + message.filter = (_a = object.filter) != null ? _a : ""; + return message; + } +}; +function createBaseSearchUsersResponse() { + return { users: [] }; +} +var SearchUsersResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.users) { + User.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSearchUsersResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.users.push(User.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SearchUsersResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSearchUsersResponse(); + message.users = ((_a = object.users) == null ? void 0 : _a.map((e) => User.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetUserRequest() { + return { name: "" }; +} +var GetUserRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseGetUserAvatarBinaryRequest() { + return { name: "", httpBody: void 0 }; +} +var GetUserAvatarBinaryRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.httpBody !== void 0) { + HttpBody.encode(message.httpBody, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserAvatarBinaryRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.httpBody = HttpBody.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserAvatarBinaryRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserAvatarBinaryRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.httpBody = object.httpBody !== void 0 && object.httpBody !== null ? HttpBody.fromPartial(object.httpBody) : void 0; + return message; + } +}; +function createBaseCreateUserRequest() { + return { user: void 0 }; +} +var CreateUserRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.user !== void 0) { + User.encode(message.user, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.user = User.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateUserRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + const message = createBaseCreateUserRequest(); + message.user = object.user !== void 0 && object.user !== null ? User.fromPartial(object.user) : void 0; + return message; + } +}; +function createBaseUpdateUserRequest() { + return { user: void 0, updateMask: void 0 }; +} +var UpdateUserRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.user !== void 0) { + User.encode(message.user, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.user = User.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateUserRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateUserRequest(); + message.user = object.user !== void 0 && object.user !== null ? User.fromPartial(object.user) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseDeleteUserRequest() { + return { name: "" }; +} +var DeleteUserRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteUserRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteUserRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteUserRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUserSetting() { + return { name: "", locale: "", appearance: "", memoVisibility: "" }; +} +var UserSetting = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.locale !== "") { + writer.uint32(18).string(message.locale); + } + if (message.appearance !== "") { + writer.uint32(26).string(message.appearance); + } + if (message.memoVisibility !== "") { + writer.uint32(34).string(message.memoVisibility); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserSetting(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.locale = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.appearance = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.memoVisibility = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserSetting.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseUserSetting(); + message.name = (_a = object.name) != null ? _a : ""; + message.locale = (_b = object.locale) != null ? _b : ""; + message.appearance = (_c = object.appearance) != null ? _c : ""; + message.memoVisibility = (_d = object.memoVisibility) != null ? _d : ""; + return message; + } +}; +function createBaseGetUserSettingRequest() { + return { name: "" }; +} +var GetUserSettingRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserSettingRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserSettingRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserSettingRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUpdateUserSettingRequest() { + return { setting: void 0, updateMask: void 0 }; +} +var UpdateUserSettingRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.setting !== void 0) { + UserSetting.encode(message.setting, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask.encode(FieldMask.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateUserSettingRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.setting = UserSetting.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask.unwrap(FieldMask.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateUserSettingRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateUserSettingRequest(); + message.setting = object.setting !== void 0 && object.setting !== null ? UserSetting.fromPartial(object.setting) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseUserAccessToken() { + return { accessToken: "", description: "", issuedAt: void 0, expiresAt: void 0 }; +} +var UserAccessToken = { + encode(message, writer = new BinaryWriter()) { + if (message.accessToken !== "") { + writer.uint32(10).string(message.accessToken); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.issuedAt !== void 0) { + Timestamp.encode(toTimestamp3(message.issuedAt), writer.uint32(26).fork()).join(); + } + if (message.expiresAt !== void 0) { + Timestamp.encode(toTimestamp3(message.expiresAt), writer.uint32(34).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserAccessToken(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.accessToken = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.issuedAt = fromTimestamp3(Timestamp.decode(reader, reader.uint32())); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.expiresAt = fromTimestamp3(Timestamp.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserAccessToken.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseUserAccessToken(); + message.accessToken = (_a = object.accessToken) != null ? _a : ""; + message.description = (_b = object.description) != null ? _b : ""; + message.issuedAt = (_c = object.issuedAt) != null ? _c : void 0; + message.expiresAt = (_d = object.expiresAt) != null ? _d : void 0; + return message; + } +}; +function createBaseListUserAccessTokensRequest() { + return { name: "" }; +} +var ListUserAccessTokensRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUserAccessTokensRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUserAccessTokensRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListUserAccessTokensRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListUserAccessTokensResponse() { + return { accessTokens: [] }; +} +var ListUserAccessTokensResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.accessTokens) { + UserAccessToken.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUserAccessTokensResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.accessTokens.push(UserAccessToken.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUserAccessTokensResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListUserAccessTokensResponse(); + message.accessTokens = ((_a = object.accessTokens) == null ? void 0 : _a.map((e) => UserAccessToken.fromPartial(e))) || []; + return message; + } +}; +function createBaseCreateUserAccessTokenRequest() { + return { name: "", description: "", expiresAt: void 0 }; +} +var CreateUserAccessTokenRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.expiresAt !== void 0) { + Timestamp.encode(toTimestamp3(message.expiresAt), writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateUserAccessTokenRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.expiresAt = fromTimestamp3(Timestamp.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateUserAccessTokenRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseCreateUserAccessTokenRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.description = (_b = object.description) != null ? _b : ""; + message.expiresAt = (_c = object.expiresAt) != null ? _c : void 0; + return message; + } +}; +function createBaseDeleteUserAccessTokenRequest() { + return { name: "", accessToken: "" }; +} +var DeleteUserAccessTokenRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.accessToken !== "") { + writer.uint32(18).string(message.accessToken); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteUserAccessTokenRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.accessToken = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteUserAccessTokenRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseDeleteUserAccessTokenRequest(); + message.name = (_a = object.name) != null ? _a : ""; + message.accessToken = (_b = object.accessToken) != null ? _b : ""; + return message; + } +}; +var UserServiceDefinition = { + name: "UserService", + fullName: "memos.api.v1.UserService", + methods: { + /** ListUsers returns a list of users. */ + listUsers: { + name: "ListUsers", + requestType: ListUsersRequest, + requestStream: false, + responseType: ListUsersResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [new Uint8Array([15, 18, 13, 47, 97, 112, 105, 47, 118, 49, 47, 117, 115, 101, 114, 115])] + } + } + }, + /** SearchUsers searches users by filter. */ + searchUsers: { + name: "SearchUsers", + requestType: SearchUsersRequest, + requestStream: false, + responseType: SearchUsersResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 18, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115, + 58, + 115, + 101, + 97, + 114, + 99, + 104 + ]) + ] + } + } + }, + /** GetUser gets a user by name. */ + getUser: { + name: "GetUser", + requestType: GetUserRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** GetUserAvatarBinary gets the avatar of a user. */ + getUserAvatarBinary: { + name: "GetUserAvatarBinary", + requestType: GetUserAvatarBinaryRequest, + requestStream: false, + responseType: HttpBody, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 29, + 18, + 27, + 47, + 102, + 105, + 108, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 118, + 97, + 116, + 97, + 114 + ]) + ] + } + } + }, + /** CreateUser creates a new user. */ + createUser: { + name: "CreateUser", + requestType: CreateUserRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 117, 115, 101, 114])], + 578365826: [ + new Uint8Array([ + 21, + 58, + 4, + 117, + 115, + 101, + 114, + 34, + 13, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115 + ]) + ] + } + } + }, + /** UpdateUser updates a user. */ + updateUser: { + name: "UpdateUser", + requestType: UpdateUserRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([16, 117, 115, 101, 114, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 35, + 58, + 4, + 117, + 115, + 101, + 114, + 50, + 27, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 117, + 115, + 101, + 114, + 46, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** DeleteUser deletes a user. */ + deleteUser: { + name: "DeleteUser", + requestType: DeleteUserRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** GetUserSetting gets the setting of a user. */ + getUserSetting: { + name: "GetUserSetting", + requestType: GetUserSettingRequest, + requestStream: false, + responseType: UserSetting, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 101, + 116, + 116, + 105, + 110, + 103 + ]) + ] + } + } + }, + /** UpdateUserSetting updates the setting of a user. */ + updateUserSetting: { + name: "UpdateUserSetting", + requestType: UpdateUserSettingRequest, + requestStream: false, + responseType: UserSetting, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 19, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107 + ]) + ], + 578365826: [ + new Uint8Array([ + 49, + 58, + 7, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 50, + 38, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 46, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 47, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 125 + ]) + ] + } + } + }, + /** ListUserAccessTokens returns a list of access tokens for a user. */ + listUserAccessTokens: { + name: "ListUserAccessTokens", + requestType: ListUserAccessTokensRequest, + requestStream: false, + responseType: ListUserAccessTokensResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 38, + 18, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115 + ]) + ] + } + } + }, + /** CreateUserAccessToken creates a new access token for a user. */ + createUserAccessToken: { + name: "CreateUserAccessToken", + requestType: CreateUserAccessTokenRequest, + requestStream: false, + responseType: UserAccessToken, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 41, + 58, + 1, + 42, + 34, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115 + ]) + ] + } + } + }, + /** DeleteUserAccessToken deletes an access token for a user. */ + deleteUserAccessToken: { + name: "DeleteUserAccessToken", + requestType: DeleteUserAccessTokenRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([17, 110, 97, 109, 101, 44, 97, 99, 99, 101, 115, 115, 95, 116, 111, 107, 101, 110])], + 578365826: [ + new Uint8Array([ + 53, + 42, + 51, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115, + 47, + 123, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 125 + ]) + ] + } + } + } + } +}; +function toTimestamp3(date) { + const seconds = Math.trunc(date.getTime() / 1e3); + const nanos = date.getTime() % 1e3 * 1e6; + return { seconds, nanos }; +} +function fromTimestamp3(t) { + let millis = (t.seconds || 0) * 1e3; + millis += (t.nanos || 0) / 1e6; + return new globalThis.Date(millis); +} + +// src/api/memos-proto-v0.22.0/gen/api/v1/auth_service.ts +function createBaseGetAuthStatusRequest() { + return {}; +} +var GetAuthStatusRequest = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetAuthStatusRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetAuthStatusRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseGetAuthStatusRequest(); + return message; + } +}; +function createBaseSignInRequest() { + return { username: "", password: "", neverExpire: false }; +} +var SignInRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + if (message.password !== "") { + writer.uint32(18).string(message.password); + } + if (message.neverExpire !== false) { + writer.uint32(24).bool(message.neverExpire); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignInRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.username = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.password = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.neverExpire = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignInRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseSignInRequest(); + message.username = (_a = object.username) != null ? _a : ""; + message.password = (_b = object.password) != null ? _b : ""; + message.neverExpire = (_c = object.neverExpire) != null ? _c : false; + return message; + } +}; +function createBaseSignInWithSSORequest() { + return { idpId: 0, code: "", redirectUri: "" }; +} +var SignInWithSSORequest = { + encode(message, writer = new BinaryWriter()) { + if (message.idpId !== 0) { + writer.uint32(8).int32(message.idpId); + } + if (message.code !== "") { + writer.uint32(18).string(message.code); + } + if (message.redirectUri !== "") { + writer.uint32(26).string(message.redirectUri); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignInWithSSORequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.idpId = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.code = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.redirectUri = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignInWithSSORequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseSignInWithSSORequest(); + message.idpId = (_a = object.idpId) != null ? _a : 0; + message.code = (_b = object.code) != null ? _b : ""; + message.redirectUri = (_c = object.redirectUri) != null ? _c : ""; + return message; + } +}; +function createBaseSignUpRequest() { + return { username: "", password: "" }; +} +var SignUpRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + if (message.password !== "") { + writer.uint32(18).string(message.password); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignUpRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.username = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.password = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignUpRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseSignUpRequest(); + message.username = (_a = object.username) != null ? _a : ""; + message.password = (_b = object.password) != null ? _b : ""; + return message; + } +}; +function createBaseSignOutRequest() { + return {}; +} +var SignOutRequest = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignOutRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignOutRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseSignOutRequest(); + return message; + } +}; +var AuthServiceDefinition = { + name: "AuthService", + fullName: "memos.api.v1.AuthService", + methods: { + /** GetAuthStatus returns the current auth status of the user. */ + getAuthStatus: { + name: "GetAuthStatus", + requestType: GetAuthStatusRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 116, + 97, + 116, + 117, + 115 + ]) + ] + } + } + }, + /** SignIn signs in the user with the given username and password. */ + signIn: { + name: "SignIn", + requestType: SignInRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 105, + 110 + ]) + ] + } + } + }, + /** SignInWithSSO signs in the user with the given SSO code. */ + signInWithSSO: { + name: "SignInWithSSO", + requestType: SignInWithSSORequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 25, + 34, + 23, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 105, + 110, + 47, + 115, + 115, + 111 + ]) + ] + } + } + }, + /** SignUp signs up the user with the given username and password. */ + signUp: { + name: "SignUp", + requestType: SignUpRequest, + requestStream: false, + responseType: User, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 117, + 112 + ]) + ] + } + } + }, + /** SignOut signs out the user. */ + signOut: { + name: "SignOut", + requestType: SignOutRequest, + requestStream: false, + responseType: Empty, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 34, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 111, + 117, + 116 + ]) + ] + } + } + } + } +}; + +// src/api/nice-grpc-utils.ts +var import_nice_grpc_web = __toESM(require_lib3()); +var loggingMiddleware = async function* devtoolsLoggingMiddleware(call, options) { + const req = call.request; + let resp; + try { + resp = yield* call.next(call.request, options); + return resp; + } finally { + debug( + `gRPC to ${call.method.path} + +request: +${JSON.stringify( + req + )} + +response: +${JSON.stringify(resp)}` + ); + } +}; +var bearerAuthMiddleware = (token) => { + return (call, options) => call.next(call.request, { + ...options, + metadata: (0, import_nice_grpc_web.Metadata)(options.metadata).set( + "authorization", + `Bearer ${token}` + ) + }); +}; + +// src/api/memos-v0.22.0.ts +var MemoListPaginator = class { + constructor(memoCli) { + this.memoCli = memoCli; + } + listMemos(pageSize, pageToken, currentUser) { + return this.memoCli.listMemos({ + pageSize, + pageToken, + // after v0.23.0, creator is required + // it's compatible with v0.22.0 + filter: `creator == "${currentUser.name}"` + }); + } +}; +function new0220Clients(endpoint, token) { + const channel = (0, import_nice_grpc_web2.createChannel)( + endpoint, + (0, import_nice_grpc_web2.FetchTransport)({ + credentials: "include" + }) + ); + const clientFactory = (0, import_nice_grpc_web2.createClientFactory)().use(loggingMiddleware).use(bearerAuthMiddleware(token)); + return { + memoListPaginator: new MemoListPaginator( + clientFactory.create(MemoServiceDefinition, channel) + ), + resourceCli: clientFactory.create( + ResourceServiceDefinition, + channel + ), + authCli: clientFactory.create( + AuthServiceDefinition, + channel + ) + }; +} + +// src/api/memos-v0.19.1.ts +var import_obsidian2 = require("obsidian"); +var MemosClient0191 = class { + constructor(endpoint, token) { + this.endpoint = endpoint; + this.token = token; + this.listMemos = async (limit, offset) => { + try { + const data = await this.getJSON( + this.endpoint + `/api/v1/memo`, + { + params: { + limit, + offset, + rowStatus: "NORMAL" + } + } + ); + if (Array.isArray(data)) { + return data; + } + throw new Error( + data.message || data.msg || data.error || JSON.stringify(data) + ); + } catch (error2) { + error(`Failed to fetch daily memos: ${error2}`); + } + }; + this.listResources = async () => { + const data = await this.getJSON( + this.endpoint + `/api/v1/resource` + ); + return data; + }; + /** + * @param resource Resource JSON returned from listResources + * @returns ArrayBuffer of the resource that could write into a file + */ + this.getResourceBuffer = async (resource) => { + const resourceURL = `${this.endpoint}/o/r/${resource.uid || resource.name || resource.id}`; + const data = await this.getRaw(resourceURL, { + responseType: "arraybuffer" + }); + return data; + }; + this.getJSON = async (url, config) => { + const res = await this.get(url, config); + return res.json; + }; + this.getRaw = async (url, config) => { + const res = await this.get(url, config); + return res.arrayBuffer; + }; + this.get = async (url, config) => { + const urlObj = new URL(url); + if (config == null ? void 0 : config.params) { + Object.entries(config.params).forEach(([key, value]) => { + urlObj.searchParams.append(key, String(value)); + }); + } + const res = await (0, import_obsidian2.requestUrl)({ + url: urlObj.toString(), + headers: { + Authorization: `Bearer ${this.token}`, + Accept: "application/json" + } + }); + return res; + }; + } +}; + +// src/services/DailyMemos/MemosResourceFetcher.ts +var MemosResourceFetcher0191 = class { + constructor(client) { + this.client = client; + this.listResources = async () => { + try { + const data = await this.client.listResources(); + if (!Array.isArray(data)) { + throw new Error( + data.message || data.msg || data.error || JSON.stringify(data) + ); + } + return data; + } catch (error2) { + if (error2.response && error2.response.status === 404) { + debug(`fetch resources 404: ${origin}/resource`); + return; + } + error(error2); + return void 0; + } + }; + this.fetchResource = async (resource) => { + try { + const data = await this.client.getResourceBuffer(resource); + if (!data) { + throw new Error( + `Failed to fetch resource: ${resource.filename}` + ); + } + return data; + } catch (error2) { + error(error2); + return void 0; + } + }; + } +}; +var MemosResourceFetcher0220 = class { + constructor(resourceCli) { + this.resourceCli = resourceCli; + this.listResources = async () => { + try { + const resp = await this.resourceCli.listResources({}); + return resp.resources.map(convert0220ResourceToAPIResource); + } catch (error2) { + if (error2.response && error2.response.status === 404) { + debug(`fetch resources 404: ${origin}/resource`); + return; + } + error(error2); + return void 0; + } + }; + this.fetchResource = async (resource) => { + try { + const resp = await this.resourceCli.getResourceBinary({ + name: resource.name, + filename: resource.filename + }); + return resp.data; + } catch (error2) { + error(error2); + return void 0; + } + }; + } +}; + +// src/api/memos-v0.24.0.ts +var import_nice_grpc_web3 = __toESM(require_lib3()); + +// src/api/memos-proto-v0.24.0/gen/google/protobuf/empty.ts +function createBaseEmpty2() { + return {}; +} +var Empty2 = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseEmpty2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Empty2.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseEmpty2(); + return message; + } +}; + +// src/api/memos-proto-v0.24.0/gen/google/protobuf/field_mask.ts +function createBaseFieldMask2() { + return { paths: [] }; +} +var FieldMask2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.paths) { + writer.uint32(10).string(v); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseFieldMask2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.paths.push(reader.string()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return FieldMask2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseFieldMask2(); + message.paths = ((_a = object.paths) == null ? void 0 : _a.map((e) => e)) || []; + return message; + }, + wrap(paths) { + const result = createBaseFieldMask2(); + result.paths = paths; + return result; + }, + unwrap(message) { + return message.paths; + } +}; + +// src/api/memos-proto-v0.24.0/gen/google/protobuf/timestamp.ts +function createBaseTimestamp2() { + return { seconds: 0, nanos: 0 }; +} +var Timestamp2 = { + encode(message, writer = new BinaryWriter()) { + if (message.seconds !== 0) { + writer.uint32(8).int64(message.seconds); + } + if (message.nanos !== 0) { + writer.uint32(16).int32(message.nanos); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTimestamp2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.seconds = longToNumber3(reader.int64()); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.nanos = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Timestamp2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseTimestamp2(); + message.seconds = (_a = object.seconds) != null ? _a : 0; + message.nanos = (_b = object.nanos) != null ? _b : 0; + return message; + } +}; +function longToNumber3(int64) { + const num = globalThis.Number(int64.toString()); + if (num > globalThis.Number.MAX_SAFE_INTEGER) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + if (num < globalThis.Number.MIN_SAFE_INTEGER) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } + return num; +} + +// src/api/memos-proto-v0.24.0/gen/api/v1/common.ts +function stateFromJSON(object) { + switch (object) { + case 0: + case "STATE_UNSPECIFIED": + return "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */; + case 1: + case "NORMAL": + return "NORMAL" /* NORMAL */; + case 2: + case "ARCHIVED": + return "ARCHIVED" /* ARCHIVED */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function stateToNumber(object) { + switch (object) { + case "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */: + return 0; + case "NORMAL" /* NORMAL */: + return 1; + case "ARCHIVED" /* ARCHIVED */: + return 2; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function directionFromJSON(object) { + switch (object) { + case 0: + case "DIRECTION_UNSPECIFIED": + return "DIRECTION_UNSPECIFIED" /* DIRECTION_UNSPECIFIED */; + case 1: + case "ASC": + return "ASC" /* ASC */; + case 2: + case "DESC": + return "DESC" /* DESC */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function directionToNumber(object) { + switch (object) { + case "DIRECTION_UNSPECIFIED" /* DIRECTION_UNSPECIFIED */: + return 0; + case "ASC" /* ASC */: + return 1; + case "DESC" /* DESC */: + return 2; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} + +// src/api/memos-proto-v0.24.0/gen/api/v1/markdown_service.ts +function nodeTypeFromJSON2(object) { + switch (object) { + case 0: + case "NODE_UNSPECIFIED": + return "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */; + case 1: + case "LINE_BREAK": + return "LINE_BREAK" /* LINE_BREAK */; + case 2: + case "PARAGRAPH": + return "PARAGRAPH" /* PARAGRAPH */; + case 3: + case "CODE_BLOCK": + return "CODE_BLOCK" /* CODE_BLOCK */; + case 4: + case "HEADING": + return "HEADING" /* HEADING */; + case 5: + case "HORIZONTAL_RULE": + return "HORIZONTAL_RULE" /* HORIZONTAL_RULE */; + case 6: + case "BLOCKQUOTE": + return "BLOCKQUOTE" /* BLOCKQUOTE */; + case 7: + case "LIST": + return "LIST" /* LIST */; + case 8: + case "ORDERED_LIST_ITEM": + return "ORDERED_LIST_ITEM" /* ORDERED_LIST_ITEM */; + case 9: + case "UNORDERED_LIST_ITEM": + return "UNORDERED_LIST_ITEM" /* UNORDERED_LIST_ITEM */; + case 10: + case "TASK_LIST_ITEM": + return "TASK_LIST_ITEM" /* TASK_LIST_ITEM */; + case 11: + case "MATH_BLOCK": + return "MATH_BLOCK" /* MATH_BLOCK */; + case 12: + case "TABLE": + return "TABLE" /* TABLE */; + case 13: + case "EMBEDDED_CONTENT": + return "EMBEDDED_CONTENT" /* EMBEDDED_CONTENT */; + case 51: + case "TEXT": + return "TEXT" /* TEXT */; + case 52: + case "BOLD": + return "BOLD" /* BOLD */; + case 53: + case "ITALIC": + return "ITALIC" /* ITALIC */; + case 54: + case "BOLD_ITALIC": + return "BOLD_ITALIC" /* BOLD_ITALIC */; + case 55: + case "CODE": + return "CODE" /* CODE */; + case 56: + case "IMAGE": + return "IMAGE" /* IMAGE */; + case 57: + case "LINK": + return "LINK" /* LINK */; + case 58: + case "AUTO_LINK": + return "AUTO_LINK" /* AUTO_LINK */; + case 59: + case "TAG": + return "TAG" /* TAG */; + case 60: + case "STRIKETHROUGH": + return "STRIKETHROUGH" /* STRIKETHROUGH */; + case 61: + case "ESCAPING_CHARACTER": + return "ESCAPING_CHARACTER" /* ESCAPING_CHARACTER */; + case 62: + case "MATH": + return "MATH" /* MATH */; + case 63: + case "HIGHLIGHT": + return "HIGHLIGHT" /* HIGHLIGHT */; + case 64: + case "SUBSCRIPT": + return "SUBSCRIPT" /* SUBSCRIPT */; + case 65: + case "SUPERSCRIPT": + return "SUPERSCRIPT" /* SUPERSCRIPT */; + case 66: + case "REFERENCED_CONTENT": + return "REFERENCED_CONTENT" /* REFERENCED_CONTENT */; + case 67: + case "SPOILER": + return "SPOILER" /* SPOILER */; + case 68: + case "HTML_ELEMENT": + return "HTML_ELEMENT" /* HTML_ELEMENT */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function nodeTypeToNumber2(object) { + switch (object) { + case "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */: + return 0; + case "LINE_BREAK" /* LINE_BREAK */: + return 1; + case "PARAGRAPH" /* PARAGRAPH */: + return 2; + case "CODE_BLOCK" /* CODE_BLOCK */: + return 3; + case "HEADING" /* HEADING */: + return 4; + case "HORIZONTAL_RULE" /* HORIZONTAL_RULE */: + return 5; + case "BLOCKQUOTE" /* BLOCKQUOTE */: + return 6; + case "LIST" /* LIST */: + return 7; + case "ORDERED_LIST_ITEM" /* ORDERED_LIST_ITEM */: + return 8; + case "UNORDERED_LIST_ITEM" /* UNORDERED_LIST_ITEM */: + return 9; + case "TASK_LIST_ITEM" /* TASK_LIST_ITEM */: + return 10; + case "MATH_BLOCK" /* MATH_BLOCK */: + return 11; + case "TABLE" /* TABLE */: + return 12; + case "EMBEDDED_CONTENT" /* EMBEDDED_CONTENT */: + return 13; + case "TEXT" /* TEXT */: + return 51; + case "BOLD" /* BOLD */: + return 52; + case "ITALIC" /* ITALIC */: + return 53; + case "BOLD_ITALIC" /* BOLD_ITALIC */: + return 54; + case "CODE" /* CODE */: + return 55; + case "IMAGE" /* IMAGE */: + return 56; + case "LINK" /* LINK */: + return 57; + case "AUTO_LINK" /* AUTO_LINK */: + return 58; + case "TAG" /* TAG */: + return 59; + case "STRIKETHROUGH" /* STRIKETHROUGH */: + return 60; + case "ESCAPING_CHARACTER" /* ESCAPING_CHARACTER */: + return 61; + case "MATH" /* MATH */: + return 62; + case "HIGHLIGHT" /* HIGHLIGHT */: + return 63; + case "SUBSCRIPT" /* SUBSCRIPT */: + return 64; + case "SUPERSCRIPT" /* SUPERSCRIPT */: + return 65; + case "REFERENCED_CONTENT" /* REFERENCED_CONTENT */: + return 66; + case "SPOILER" /* SPOILER */: + return 67; + case "HTML_ELEMENT" /* HTML_ELEMENT */: + return 68; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function listNode_KindFromJSON(object) { + switch (object) { + case 0: + case "KIND_UNSPECIFIED": + return "KIND_UNSPECIFIED" /* KIND_UNSPECIFIED */; + case 1: + case "ORDERED": + return "ORDERED" /* ORDERED */; + case 2: + case "UNORDERED": + return "UNORDERED" /* UNORDERED */; + case 3: + case "DESCRIPTION": + return "DESCRIPTION" /* DESCRIPTION */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function listNode_KindToNumber(object) { + switch (object) { + case "KIND_UNSPECIFIED" /* KIND_UNSPECIFIED */: + return 0; + case "ORDERED" /* ORDERED */: + return 1; + case "UNORDERED" /* UNORDERED */: + return 2; + case "DESCRIPTION" /* DESCRIPTION */: + return 3; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseParseMarkdownRequest2() { + return { markdown: "" }; +} +var ParseMarkdownRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.markdown !== "") { + writer.uint32(10).string(message.markdown); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseParseMarkdownRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.markdown = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ParseMarkdownRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseParseMarkdownRequest2(); + message.markdown = (_a = object.markdown) != null ? _a : ""; + return message; + } +}; +function createBaseParseMarkdownResponse2() { + return { nodes: [] }; +} +var ParseMarkdownResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.nodes) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseParseMarkdownResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.nodes.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ParseMarkdownResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseParseMarkdownResponse2(); + message.nodes = ((_a = object.nodes) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseRestoreMarkdownNodesRequest() { + return { nodes: [] }; +} +var RestoreMarkdownNodesRequest = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.nodes) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRestoreMarkdownNodesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.nodes.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RestoreMarkdownNodesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseRestoreMarkdownNodesRequest(); + message.nodes = ((_a = object.nodes) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseRestoreMarkdownNodesResponse() { + return { markdown: "" }; +} +var RestoreMarkdownNodesResponse = { + encode(message, writer = new BinaryWriter()) { + if (message.markdown !== "") { + writer.uint32(10).string(message.markdown); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRestoreMarkdownNodesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.markdown = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RestoreMarkdownNodesResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseRestoreMarkdownNodesResponse(); + message.markdown = (_a = object.markdown) != null ? _a : ""; + return message; + } +}; +function createBaseStringifyMarkdownNodesRequest() { + return { nodes: [] }; +} +var StringifyMarkdownNodesRequest = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.nodes) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseStringifyMarkdownNodesRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.nodes.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return StringifyMarkdownNodesRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseStringifyMarkdownNodesRequest(); + message.nodes = ((_a = object.nodes) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseStringifyMarkdownNodesResponse() { + return { plainText: "" }; +} +var StringifyMarkdownNodesResponse = { + encode(message, writer = new BinaryWriter()) { + if (message.plainText !== "") { + writer.uint32(10).string(message.plainText); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseStringifyMarkdownNodesResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.plainText = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return StringifyMarkdownNodesResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseStringifyMarkdownNodesResponse(); + message.plainText = (_a = object.plainText) != null ? _a : ""; + return message; + } +}; +function createBaseGetLinkMetadataRequest2() { + return { link: "" }; +} +var GetLinkMetadataRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.link !== "") { + writer.uint32(10).string(message.link); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetLinkMetadataRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.link = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetLinkMetadataRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetLinkMetadataRequest2(); + message.link = (_a = object.link) != null ? _a : ""; + return message; + } +}; +function createBaseLinkMetadata2() { + return { title: "", description: "", image: "" }; +} +var LinkMetadata2 = { + encode(message, writer = new BinaryWriter()) { + if (message.title !== "") { + writer.uint32(10).string(message.title); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.image !== "") { + writer.uint32(26).string(message.image); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLinkMetadata2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.title = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.image = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return LinkMetadata2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseLinkMetadata2(); + message.title = (_a = object.title) != null ? _a : ""; + message.description = (_b = object.description) != null ? _b : ""; + message.image = (_c = object.image) != null ? _c : ""; + return message; + } +}; +function createBaseNode2() { + return { + type: "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */, + lineBreakNode: void 0, + paragraphNode: void 0, + codeBlockNode: void 0, + headingNode: void 0, + horizontalRuleNode: void 0, + blockquoteNode: void 0, + listNode: void 0, + orderedListItemNode: void 0, + unorderedListItemNode: void 0, + taskListItemNode: void 0, + mathBlockNode: void 0, + tableNode: void 0, + embeddedContentNode: void 0, + textNode: void 0, + boldNode: void 0, + italicNode: void 0, + boldItalicNode: void 0, + codeNode: void 0, + imageNode: void 0, + linkNode: void 0, + autoLinkNode: void 0, + tagNode: void 0, + strikethroughNode: void 0, + escapingCharacterNode: void 0, + mathNode: void 0, + highlightNode: void 0, + subscriptNode: void 0, + superscriptNode: void 0, + referencedContentNode: void 0, + spoilerNode: void 0, + htmlElementNode: void 0 + }; +} +var Node2 = { + encode(message, writer = new BinaryWriter()) { + if (message.type !== "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */) { + writer.uint32(8).int32(nodeTypeToNumber2(message.type)); + } + if (message.lineBreakNode !== void 0) { + LineBreakNode2.encode(message.lineBreakNode, writer.uint32(90).fork()).join(); + } + if (message.paragraphNode !== void 0) { + ParagraphNode2.encode(message.paragraphNode, writer.uint32(98).fork()).join(); + } + if (message.codeBlockNode !== void 0) { + CodeBlockNode2.encode(message.codeBlockNode, writer.uint32(106).fork()).join(); + } + if (message.headingNode !== void 0) { + HeadingNode2.encode(message.headingNode, writer.uint32(114).fork()).join(); + } + if (message.horizontalRuleNode !== void 0) { + HorizontalRuleNode2.encode(message.horizontalRuleNode, writer.uint32(122).fork()).join(); + } + if (message.blockquoteNode !== void 0) { + BlockquoteNode2.encode(message.blockquoteNode, writer.uint32(130).fork()).join(); + } + if (message.listNode !== void 0) { + ListNode.encode(message.listNode, writer.uint32(138).fork()).join(); + } + if (message.orderedListItemNode !== void 0) { + OrderedListItemNode.encode(message.orderedListItemNode, writer.uint32(146).fork()).join(); + } + if (message.unorderedListItemNode !== void 0) { + UnorderedListItemNode.encode(message.unorderedListItemNode, writer.uint32(154).fork()).join(); + } + if (message.taskListItemNode !== void 0) { + TaskListItemNode.encode(message.taskListItemNode, writer.uint32(162).fork()).join(); + } + if (message.mathBlockNode !== void 0) { + MathBlockNode2.encode(message.mathBlockNode, writer.uint32(170).fork()).join(); + } + if (message.tableNode !== void 0) { + TableNode2.encode(message.tableNode, writer.uint32(178).fork()).join(); + } + if (message.embeddedContentNode !== void 0) { + EmbeddedContentNode2.encode(message.embeddedContentNode, writer.uint32(186).fork()).join(); + } + if (message.textNode !== void 0) { + TextNode2.encode(message.textNode, writer.uint32(410).fork()).join(); + } + if (message.boldNode !== void 0) { + BoldNode2.encode(message.boldNode, writer.uint32(418).fork()).join(); + } + if (message.italicNode !== void 0) { + ItalicNode2.encode(message.italicNode, writer.uint32(426).fork()).join(); + } + if (message.boldItalicNode !== void 0) { + BoldItalicNode2.encode(message.boldItalicNode, writer.uint32(434).fork()).join(); + } + if (message.codeNode !== void 0) { + CodeNode2.encode(message.codeNode, writer.uint32(442).fork()).join(); + } + if (message.imageNode !== void 0) { + ImageNode2.encode(message.imageNode, writer.uint32(450).fork()).join(); + } + if (message.linkNode !== void 0) { + LinkNode2.encode(message.linkNode, writer.uint32(458).fork()).join(); + } + if (message.autoLinkNode !== void 0) { + AutoLinkNode2.encode(message.autoLinkNode, writer.uint32(466).fork()).join(); + } + if (message.tagNode !== void 0) { + TagNode2.encode(message.tagNode, writer.uint32(474).fork()).join(); + } + if (message.strikethroughNode !== void 0) { + StrikethroughNode2.encode(message.strikethroughNode, writer.uint32(482).fork()).join(); + } + if (message.escapingCharacterNode !== void 0) { + EscapingCharacterNode2.encode(message.escapingCharacterNode, writer.uint32(490).fork()).join(); + } + if (message.mathNode !== void 0) { + MathNode2.encode(message.mathNode, writer.uint32(498).fork()).join(); + } + if (message.highlightNode !== void 0) { + HighlightNode2.encode(message.highlightNode, writer.uint32(506).fork()).join(); + } + if (message.subscriptNode !== void 0) { + SubscriptNode2.encode(message.subscriptNode, writer.uint32(514).fork()).join(); + } + if (message.superscriptNode !== void 0) { + SuperscriptNode2.encode(message.superscriptNode, writer.uint32(522).fork()).join(); + } + if (message.referencedContentNode !== void 0) { + ReferencedContentNode2.encode(message.referencedContentNode, writer.uint32(530).fork()).join(); + } + if (message.spoilerNode !== void 0) { + SpoilerNode2.encode(message.spoilerNode, writer.uint32(538).fork()).join(); + } + if (message.htmlElementNode !== void 0) { + HTMLElementNode.encode(message.htmlElementNode, writer.uint32(546).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.type = nodeTypeFromJSON2(reader.int32()); + continue; + } + case 11: { + if (tag !== 90) { + break; + } + message.lineBreakNode = LineBreakNode2.decode(reader, reader.uint32()); + continue; + } + case 12: { + if (tag !== 98) { + break; + } + message.paragraphNode = ParagraphNode2.decode(reader, reader.uint32()); + continue; + } + case 13: { + if (tag !== 106) { + break; + } + message.codeBlockNode = CodeBlockNode2.decode(reader, reader.uint32()); + continue; + } + case 14: { + if (tag !== 114) { + break; + } + message.headingNode = HeadingNode2.decode(reader, reader.uint32()); + continue; + } + case 15: { + if (tag !== 122) { + break; + } + message.horizontalRuleNode = HorizontalRuleNode2.decode(reader, reader.uint32()); + continue; + } + case 16: { + if (tag !== 130) { + break; + } + message.blockquoteNode = BlockquoteNode2.decode(reader, reader.uint32()); + continue; + } + case 17: { + if (tag !== 138) { + break; + } + message.listNode = ListNode.decode(reader, reader.uint32()); + continue; + } + case 18: { + if (tag !== 146) { + break; + } + message.orderedListItemNode = OrderedListItemNode.decode(reader, reader.uint32()); + continue; + } + case 19: { + if (tag !== 154) { + break; + } + message.unorderedListItemNode = UnorderedListItemNode.decode(reader, reader.uint32()); + continue; + } + case 20: { + if (tag !== 162) { + break; + } + message.taskListItemNode = TaskListItemNode.decode(reader, reader.uint32()); + continue; + } + case 21: { + if (tag !== 170) { + break; + } + message.mathBlockNode = MathBlockNode2.decode(reader, reader.uint32()); + continue; + } + case 22: { + if (tag !== 178) { + break; + } + message.tableNode = TableNode2.decode(reader, reader.uint32()); + continue; + } + case 23: { + if (tag !== 186) { + break; + } + message.embeddedContentNode = EmbeddedContentNode2.decode(reader, reader.uint32()); + continue; + } + case 51: { + if (tag !== 410) { + break; + } + message.textNode = TextNode2.decode(reader, reader.uint32()); + continue; + } + case 52: { + if (tag !== 418) { + break; + } + message.boldNode = BoldNode2.decode(reader, reader.uint32()); + continue; + } + case 53: { + if (tag !== 426) { + break; + } + message.italicNode = ItalicNode2.decode(reader, reader.uint32()); + continue; + } + case 54: { + if (tag !== 434) { + break; + } + message.boldItalicNode = BoldItalicNode2.decode(reader, reader.uint32()); + continue; + } + case 55: { + if (tag !== 442) { + break; + } + message.codeNode = CodeNode2.decode(reader, reader.uint32()); + continue; + } + case 56: { + if (tag !== 450) { + break; + } + message.imageNode = ImageNode2.decode(reader, reader.uint32()); + continue; + } + case 57: { + if (tag !== 458) { + break; + } + message.linkNode = LinkNode2.decode(reader, reader.uint32()); + continue; + } + case 58: { + if (tag !== 466) { + break; + } + message.autoLinkNode = AutoLinkNode2.decode(reader, reader.uint32()); + continue; + } + case 59: { + if (tag !== 474) { + break; + } + message.tagNode = TagNode2.decode(reader, reader.uint32()); + continue; + } + case 60: { + if (tag !== 482) { + break; + } + message.strikethroughNode = StrikethroughNode2.decode(reader, reader.uint32()); + continue; + } + case 61: { + if (tag !== 490) { + break; + } + message.escapingCharacterNode = EscapingCharacterNode2.decode(reader, reader.uint32()); + continue; + } + case 62: { + if (tag !== 498) { + break; + } + message.mathNode = MathNode2.decode(reader, reader.uint32()); + continue; + } + case 63: { + if (tag !== 506) { + break; + } + message.highlightNode = HighlightNode2.decode(reader, reader.uint32()); + continue; + } + case 64: { + if (tag !== 514) { + break; + } + message.subscriptNode = SubscriptNode2.decode(reader, reader.uint32()); + continue; + } + case 65: { + if (tag !== 522) { + break; + } + message.superscriptNode = SuperscriptNode2.decode(reader, reader.uint32()); + continue; + } + case 66: { + if (tag !== 530) { + break; + } + message.referencedContentNode = ReferencedContentNode2.decode(reader, reader.uint32()); + continue; + } + case 67: { + if (tag !== 538) { + break; + } + message.spoilerNode = SpoilerNode2.decode(reader, reader.uint32()); + continue; + } + case 68: { + if (tag !== 546) { + break; + } + message.htmlElementNode = HTMLElementNode.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Node2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseNode2(); + message.type = (_a = object.type) != null ? _a : "NODE_UNSPECIFIED" /* NODE_UNSPECIFIED */; + message.lineBreakNode = object.lineBreakNode !== void 0 && object.lineBreakNode !== null ? LineBreakNode2.fromPartial(object.lineBreakNode) : void 0; + message.paragraphNode = object.paragraphNode !== void 0 && object.paragraphNode !== null ? ParagraphNode2.fromPartial(object.paragraphNode) : void 0; + message.codeBlockNode = object.codeBlockNode !== void 0 && object.codeBlockNode !== null ? CodeBlockNode2.fromPartial(object.codeBlockNode) : void 0; + message.headingNode = object.headingNode !== void 0 && object.headingNode !== null ? HeadingNode2.fromPartial(object.headingNode) : void 0; + message.horizontalRuleNode = object.horizontalRuleNode !== void 0 && object.horizontalRuleNode !== null ? HorizontalRuleNode2.fromPartial(object.horizontalRuleNode) : void 0; + message.blockquoteNode = object.blockquoteNode !== void 0 && object.blockquoteNode !== null ? BlockquoteNode2.fromPartial(object.blockquoteNode) : void 0; + message.listNode = object.listNode !== void 0 && object.listNode !== null ? ListNode.fromPartial(object.listNode) : void 0; + message.orderedListItemNode = object.orderedListItemNode !== void 0 && object.orderedListItemNode !== null ? OrderedListItemNode.fromPartial(object.orderedListItemNode) : void 0; + message.unorderedListItemNode = object.unorderedListItemNode !== void 0 && object.unorderedListItemNode !== null ? UnorderedListItemNode.fromPartial(object.unorderedListItemNode) : void 0; + message.taskListItemNode = object.taskListItemNode !== void 0 && object.taskListItemNode !== null ? TaskListItemNode.fromPartial(object.taskListItemNode) : void 0; + message.mathBlockNode = object.mathBlockNode !== void 0 && object.mathBlockNode !== null ? MathBlockNode2.fromPartial(object.mathBlockNode) : void 0; + message.tableNode = object.tableNode !== void 0 && object.tableNode !== null ? TableNode2.fromPartial(object.tableNode) : void 0; + message.embeddedContentNode = object.embeddedContentNode !== void 0 && object.embeddedContentNode !== null ? EmbeddedContentNode2.fromPartial(object.embeddedContentNode) : void 0; + message.textNode = object.textNode !== void 0 && object.textNode !== null ? TextNode2.fromPartial(object.textNode) : void 0; + message.boldNode = object.boldNode !== void 0 && object.boldNode !== null ? BoldNode2.fromPartial(object.boldNode) : void 0; + message.italicNode = object.italicNode !== void 0 && object.italicNode !== null ? ItalicNode2.fromPartial(object.italicNode) : void 0; + message.boldItalicNode = object.boldItalicNode !== void 0 && object.boldItalicNode !== null ? BoldItalicNode2.fromPartial(object.boldItalicNode) : void 0; + message.codeNode = object.codeNode !== void 0 && object.codeNode !== null ? CodeNode2.fromPartial(object.codeNode) : void 0; + message.imageNode = object.imageNode !== void 0 && object.imageNode !== null ? ImageNode2.fromPartial(object.imageNode) : void 0; + message.linkNode = object.linkNode !== void 0 && object.linkNode !== null ? LinkNode2.fromPartial(object.linkNode) : void 0; + message.autoLinkNode = object.autoLinkNode !== void 0 && object.autoLinkNode !== null ? AutoLinkNode2.fromPartial(object.autoLinkNode) : void 0; + message.tagNode = object.tagNode !== void 0 && object.tagNode !== null ? TagNode2.fromPartial(object.tagNode) : void 0; + message.strikethroughNode = object.strikethroughNode !== void 0 && object.strikethroughNode !== null ? StrikethroughNode2.fromPartial(object.strikethroughNode) : void 0; + message.escapingCharacterNode = object.escapingCharacterNode !== void 0 && object.escapingCharacterNode !== null ? EscapingCharacterNode2.fromPartial(object.escapingCharacterNode) : void 0; + message.mathNode = object.mathNode !== void 0 && object.mathNode !== null ? MathNode2.fromPartial(object.mathNode) : void 0; + message.highlightNode = object.highlightNode !== void 0 && object.highlightNode !== null ? HighlightNode2.fromPartial(object.highlightNode) : void 0; + message.subscriptNode = object.subscriptNode !== void 0 && object.subscriptNode !== null ? SubscriptNode2.fromPartial(object.subscriptNode) : void 0; + message.superscriptNode = object.superscriptNode !== void 0 && object.superscriptNode !== null ? SuperscriptNode2.fromPartial(object.superscriptNode) : void 0; + message.referencedContentNode = object.referencedContentNode !== void 0 && object.referencedContentNode !== null ? ReferencedContentNode2.fromPartial(object.referencedContentNode) : void 0; + message.spoilerNode = object.spoilerNode !== void 0 && object.spoilerNode !== null ? SpoilerNode2.fromPartial(object.spoilerNode) : void 0; + message.htmlElementNode = object.htmlElementNode !== void 0 && object.htmlElementNode !== null ? HTMLElementNode.fromPartial(object.htmlElementNode) : void 0; + return message; + } +}; +function createBaseLineBreakNode2() { + return {}; +} +var LineBreakNode2 = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLineBreakNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return LineBreakNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseLineBreakNode2(); + return message; + } +}; +function createBaseParagraphNode2() { + return { children: [] }; +} +var ParagraphNode2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.children) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseParagraphNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ParagraphNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseParagraphNode2(); + message.children = ((_a = object.children) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseCodeBlockNode2() { + return { language: "", content: "" }; +} +var CodeBlockNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.language !== "") { + writer.uint32(10).string(message.language); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCodeBlockNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.language = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CodeBlockNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseCodeBlockNode2(); + message.language = (_a = object.language) != null ? _a : ""; + message.content = (_b = object.content) != null ? _b : ""; + return message; + } +}; +function createBaseHeadingNode2() { + return { level: 0, children: [] }; +} +var HeadingNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.level !== 0) { + writer.uint32(8).int32(message.level); + } + for (const v of message.children) { + Node2.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHeadingNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.level = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HeadingNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseHeadingNode2(); + message.level = (_a = object.level) != null ? _a : 0; + message.children = ((_b = object.children) == null ? void 0 : _b.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseHorizontalRuleNode2() { + return { symbol: "" }; +} +var HorizontalRuleNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHorizontalRuleNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HorizontalRuleNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseHorizontalRuleNode2(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + return message; + } +}; +function createBaseBlockquoteNode2() { + return { children: [] }; +} +var BlockquoteNode2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.children) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseBlockquoteNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return BlockquoteNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseBlockquoteNode2(); + message.children = ((_a = object.children) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseListNode() { + return { kind: "KIND_UNSPECIFIED" /* KIND_UNSPECIFIED */, indent: 0, children: [] }; +} +var ListNode = { + encode(message, writer = new BinaryWriter()) { + if (message.kind !== "KIND_UNSPECIFIED" /* KIND_UNSPECIFIED */) { + writer.uint32(8).int32(listNode_KindToNumber(message.kind)); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node2.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.kind = listNode_KindFromJSON(reader.int32()); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseListNode(); + message.kind = (_a = object.kind) != null ? _a : "KIND_UNSPECIFIED" /* KIND_UNSPECIFIED */; + message.indent = (_b = object.indent) != null ? _b : 0; + message.children = ((_c = object.children) == null ? void 0 : _c.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseOrderedListItemNode() { + return { number: "", indent: 0, children: [] }; +} +var OrderedListItemNode = { + encode(message, writer = new BinaryWriter()) { + if (message.number !== "") { + writer.uint32(10).string(message.number); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node2.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseOrderedListItemNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.number = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return OrderedListItemNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseOrderedListItemNode(); + message.number = (_a = object.number) != null ? _a : ""; + message.indent = (_b = object.indent) != null ? _b : 0; + message.children = ((_c = object.children) == null ? void 0 : _c.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseUnorderedListItemNode() { + return { symbol: "", indent: 0, children: [] }; +} +var UnorderedListItemNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + for (const v of message.children) { + Node2.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUnorderedListItemNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UnorderedListItemNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseUnorderedListItemNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.indent = (_b = object.indent) != null ? _b : 0; + message.children = ((_c = object.children) == null ? void 0 : _c.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseTaskListItemNode() { + return { symbol: "", indent: 0, complete: false, children: [] }; +} +var TaskListItemNode = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.indent !== 0) { + writer.uint32(16).int32(message.indent); + } + if (message.complete !== false) { + writer.uint32(24).bool(message.complete); + } + for (const v of message.children) { + Node2.encode(v, writer.uint32(34).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTaskListItemNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.indent = reader.int32(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.complete = reader.bool(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TaskListItemNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseTaskListItemNode(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.indent = (_b = object.indent) != null ? _b : 0; + message.complete = (_c = object.complete) != null ? _c : false; + message.children = ((_d = object.children) == null ? void 0 : _d.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseMathBlockNode2() { + return { content: "" }; +} +var MathBlockNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMathBlockNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MathBlockNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseMathBlockNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseTableNode2() { + return { header: [], delimiter: [], rows: [] }; +} +var TableNode2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.header) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + for (const v of message.delimiter) { + writer.uint32(18).string(v); + } + for (const v of message.rows) { + TableNode_Row2.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTableNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.header.push(Node2.decode(reader, reader.uint32())); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.delimiter.push(reader.string()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.rows.push(TableNode_Row2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TableNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseTableNode2(); + message.header = ((_a = object.header) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + message.delimiter = ((_b = object.delimiter) == null ? void 0 : _b.map((e) => e)) || []; + message.rows = ((_c = object.rows) == null ? void 0 : _c.map((e) => TableNode_Row2.fromPartial(e))) || []; + return message; + } +}; +function createBaseTableNode_Row2() { + return { cells: [] }; +} +var TableNode_Row2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.cells) { + Node2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTableNode_Row2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.cells.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TableNode_Row2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseTableNode_Row2(); + message.cells = ((_a = object.cells) == null ? void 0 : _a.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseEmbeddedContentNode2() { + return { resourceName: "", params: "" }; +} +var EmbeddedContentNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.resourceName !== "") { + writer.uint32(10).string(message.resourceName); + } + if (message.params !== "") { + writer.uint32(18).string(message.params); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseEmbeddedContentNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resourceName = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.params = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return EmbeddedContentNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseEmbeddedContentNode2(); + message.resourceName = (_a = object.resourceName) != null ? _a : ""; + message.params = (_b = object.params) != null ? _b : ""; + return message; + } +}; +function createBaseTextNode2() { + return { content: "" }; +} +var TextNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTextNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TextNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseTextNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseBoldNode2() { + return { symbol: "", children: [] }; +} +var BoldNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + for (const v of message.children) { + Node2.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseBoldNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.children.push(Node2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return BoldNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseBoldNode2(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.children = ((_b = object.children) == null ? void 0 : _b.map((e) => Node2.fromPartial(e))) || []; + return message; + } +}; +function createBaseItalicNode2() { + return { symbol: "", content: "" }; +} +var ItalicNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseItalicNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ItalicNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseItalicNode2(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.content = (_b = object.content) != null ? _b : ""; + return message; + } +}; +function createBaseBoldItalicNode2() { + return { symbol: "", content: "" }; +} +var BoldItalicNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + if (message.content !== "") { + writer.uint32(18).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseBoldItalicNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return BoldItalicNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseBoldItalicNode2(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + message.content = (_b = object.content) != null ? _b : ""; + return message; + } +}; +function createBaseCodeNode2() { + return { content: "" }; +} +var CodeNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCodeNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CodeNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseCodeNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseImageNode2() { + return { altText: "", url: "" }; +} +var ImageNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.altText !== "") { + writer.uint32(10).string(message.altText); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseImageNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.altText = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.url = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ImageNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseImageNode2(); + message.altText = (_a = object.altText) != null ? _a : ""; + message.url = (_b = object.url) != null ? _b : ""; + return message; + } +}; +function createBaseLinkNode2() { + return { text: "", url: "" }; +} +var LinkNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.text !== "") { + writer.uint32(10).string(message.text); + } + if (message.url !== "") { + writer.uint32(18).string(message.url); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLinkNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.text = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.url = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return LinkNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseLinkNode2(); + message.text = (_a = object.text) != null ? _a : ""; + message.url = (_b = object.url) != null ? _b : ""; + return message; + } +}; +function createBaseAutoLinkNode2() { + return { url: "", isRawText: false }; +} +var AutoLinkNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.url !== "") { + writer.uint32(10).string(message.url); + } + if (message.isRawText !== false) { + writer.uint32(16).bool(message.isRawText); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseAutoLinkNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.url = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.isRawText = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return AutoLinkNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseAutoLinkNode2(); + message.url = (_a = object.url) != null ? _a : ""; + message.isRawText = (_b = object.isRawText) != null ? _b : false; + return message; + } +}; +function createBaseTagNode2() { + return { content: "" }; +} +var TagNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseTagNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return TagNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseTagNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseStrikethroughNode2() { + return { content: "" }; +} +var StrikethroughNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseStrikethroughNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return StrikethroughNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseStrikethroughNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseEscapingCharacterNode2() { + return { symbol: "" }; +} +var EscapingCharacterNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.symbol !== "") { + writer.uint32(10).string(message.symbol); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseEscapingCharacterNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.symbol = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return EscapingCharacterNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseEscapingCharacterNode2(); + message.symbol = (_a = object.symbol) != null ? _a : ""; + return message; + } +}; +function createBaseMathNode2() { + return { content: "" }; +} +var MathNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMathNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MathNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseMathNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseHighlightNode2() { + return { content: "" }; +} +var HighlightNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHighlightNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HighlightNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseHighlightNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseSubscriptNode2() { + return { content: "" }; +} +var SubscriptNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSubscriptNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SubscriptNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSubscriptNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseSuperscriptNode2() { + return { content: "" }; +} +var SuperscriptNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSuperscriptNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SuperscriptNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSuperscriptNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseReferencedContentNode2() { + return { resourceName: "", params: "" }; +} +var ReferencedContentNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.resourceName !== "") { + writer.uint32(10).string(message.resourceName); + } + if (message.params !== "") { + writer.uint32(18).string(message.params); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseReferencedContentNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resourceName = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.params = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ReferencedContentNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseReferencedContentNode2(); + message.resourceName = (_a = object.resourceName) != null ? _a : ""; + message.params = (_b = object.params) != null ? _b : ""; + return message; + } +}; +function createBaseSpoilerNode2() { + return { content: "" }; +} +var SpoilerNode2 = { + encode(message, writer = new BinaryWriter()) { + if (message.content !== "") { + writer.uint32(10).string(message.content); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSpoilerNode2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.content = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SpoilerNode2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseSpoilerNode2(); + message.content = (_a = object.content) != null ? _a : ""; + return message; + } +}; +function createBaseHTMLElementNode() { + return { tagName: "", attributes: {} }; +} +var HTMLElementNode = { + encode(message, writer = new BinaryWriter()) { + if (message.tagName !== "") { + writer.uint32(10).string(message.tagName); + } + Object.entries(message.attributes).forEach(([key, value]) => { + HTMLElementNode_AttributesEntry.encode({ key, value }, writer.uint32(18).fork()).join(); + }); + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHTMLElementNode(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.tagName = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + const entry2 = HTMLElementNode_AttributesEntry.decode(reader, reader.uint32()); + if (entry2.value !== void 0) { + message.attributes[entry2.key] = entry2.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HTMLElementNode.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseHTMLElementNode(); + message.tagName = (_a = object.tagName) != null ? _a : ""; + message.attributes = Object.entries((_b = object.attributes) != null ? _b : {}).reduce( + (acc, [key, value]) => { + if (value !== void 0) { + acc[key] = globalThis.String(value); + } + return acc; + }, + {} + ); + return message; + } +}; +function createBaseHTMLElementNode_AttributesEntry() { + return { key: "", value: "" }; +} +var HTMLElementNode_AttributesEntry = { + encode(message, writer = new BinaryWriter()) { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== "") { + writer.uint32(18).string(message.value); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHTMLElementNode_AttributesEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.key = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.value = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HTMLElementNode_AttributesEntry.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseHTMLElementNode_AttributesEntry(); + message.key = (_a = object.key) != null ? _a : ""; + message.value = (_b = object.value) != null ? _b : ""; + return message; + } +}; +var MarkdownServiceDefinition2 = { + name: "MarkdownService", + fullName: "memos.api.v1.MarkdownService", + methods: { + /** ParseMarkdown parses the given markdown content and returns a list of nodes. */ + parseMarkdown: { + name: "ParseMarkdown", + requestType: ParseMarkdownRequest2, + requestStream: false, + responseType: ParseMarkdownResponse2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 27, + 58, + 1, + 42, + 34, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 58, + 112, + 97, + 114, + 115, + 101 + ]) + ] + } + } + }, + /** RestoreMarkdownNodes restores the given nodes to markdown content. */ + restoreMarkdownNodes: { + name: "RestoreMarkdownNodes", + requestType: RestoreMarkdownNodesRequest, + requestStream: false, + responseType: RestoreMarkdownNodesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 34, + 58, + 1, + 42, + 34, + 29, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 110, + 111, + 100, + 101, + 58, + 114, + 101, + 115, + 116, + 111, + 114, + 101 + ]) + ] + } + } + }, + /** StringifyMarkdownNodes stringify the given nodes to plain text content. */ + stringifyMarkdownNodes: { + name: "StringifyMarkdownNodes", + requestType: StringifyMarkdownNodesRequest, + requestStream: false, + responseType: StringifyMarkdownNodesResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 36, + 58, + 1, + 42, + 34, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 110, + 111, + 100, + 101, + 58, + 115, + 116, + 114, + 105, + 110, + 103, + 105, + 102, + 121 + ]) + ] + } + } + }, + /** GetLinkMetadata returns metadata for a given link. */ + getLinkMetadata: { + name: "GetLinkMetadata", + requestType: GetLinkMetadataRequest2, + requestStream: false, + responseType: LinkMetadata2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 97, + 114, + 107, + 100, + 111, + 119, + 110, + 47, + 108, + 105, + 110, + 107, + 58, + 109, + 101, + 116, + 97, + 100, + 97, + 116, + 97 + ]) + ] + } + } + } + } +}; + +// src/api/memos-proto-v0.24.0/gen/api/v1/memo_relation_service.ts +function memoRelation_TypeFromJSON2(object) { + switch (object) { + case 0: + case "TYPE_UNSPECIFIED": + return "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */; + case 1: + case "REFERENCE": + return "REFERENCE" /* REFERENCE */; + case 2: + case "COMMENT": + return "COMMENT" /* COMMENT */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function memoRelation_TypeToNumber2(object) { + switch (object) { + case "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */: + return 0; + case "REFERENCE" /* REFERENCE */: + return 1; + case "COMMENT" /* COMMENT */: + return 2; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseMemoRelation2() { + return { memo: void 0, relatedMemo: void 0, type: "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */ }; +} +var MemoRelation2 = { + encode(message, writer = new BinaryWriter()) { + if (message.memo !== void 0) { + MemoRelation_Memo.encode(message.memo, writer.uint32(10).fork()).join(); + } + if (message.relatedMemo !== void 0) { + MemoRelation_Memo.encode(message.relatedMemo, writer.uint32(18).fork()).join(); + } + if (message.type !== "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */) { + writer.uint32(24).int32(memoRelation_TypeToNumber2(message.type)); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemoRelation2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memo = MemoRelation_Memo.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.relatedMemo = MemoRelation_Memo.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.type = memoRelation_TypeFromJSON2(reader.int32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MemoRelation2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseMemoRelation2(); + message.memo = object.memo !== void 0 && object.memo !== null ? MemoRelation_Memo.fromPartial(object.memo) : void 0; + message.relatedMemo = object.relatedMemo !== void 0 && object.relatedMemo !== null ? MemoRelation_Memo.fromPartial(object.relatedMemo) : void 0; + message.type = (_a = object.type) != null ? _a : "TYPE_UNSPECIFIED" /* TYPE_UNSPECIFIED */; + return message; + } +}; +function createBaseMemoRelation_Memo() { + return { name: "", uid: "", snippet: "" }; +} +var MemoRelation_Memo = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.uid !== "") { + writer.uint32(18).string(message.uid); + } + if (message.snippet !== "") { + writer.uint32(26).string(message.snippet); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemoRelation_Memo(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.uid = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.snippet = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MemoRelation_Memo.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseMemoRelation_Memo(); + message.name = (_a = object.name) != null ? _a : ""; + message.uid = (_b = object.uid) != null ? _b : ""; + message.snippet = (_c = object.snippet) != null ? _c : ""; + return message; + } +}; + +// src/api/memos-proto-v0.24.0/gen/api/v1/reaction_service.ts +function createBaseReaction2() { + return { id: 0, creator: "", contentId: "", reactionType: "" }; +} +var Reaction2 = { + encode(message, writer = new BinaryWriter()) { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + if (message.creator !== "") { + writer.uint32(18).string(message.creator); + } + if (message.contentId !== "") { + writer.uint32(26).string(message.contentId); + } + if (message.reactionType !== "") { + writer.uint32(34).string(message.reactionType); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseReaction2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.id = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.creator = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.contentId = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.reactionType = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Reaction2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseReaction2(); + message.id = (_a = object.id) != null ? _a : 0; + message.creator = (_b = object.creator) != null ? _b : ""; + message.contentId = (_c = object.contentId) != null ? _c : ""; + message.reactionType = (_d = object.reactionType) != null ? _d : ""; + return message; + } +}; + +// src/api/memos-proto-v0.24.0/gen/google/protobuf/any.ts +function createBaseAny2() { + return { typeUrl: "", value: new Uint8Array(0) }; +} +var Any2 = { + encode(message, writer = new BinaryWriter()) { + if (message.typeUrl !== "") { + writer.uint32(10).string(message.typeUrl); + } + if (message.value.length !== 0) { + writer.uint32(18).bytes(message.value); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseAny2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.typeUrl = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.value = reader.bytes(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Any2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseAny2(); + message.typeUrl = (_a = object.typeUrl) != null ? _a : ""; + message.value = (_b = object.value) != null ? _b : new Uint8Array(0); + return message; + } +}; + +// src/api/memos-proto-v0.24.0/gen/google/api/httpbody.ts +function createBaseHttpBody2() { + return { contentType: "", data: new Uint8Array(0), extensions: [] }; +} +var HttpBody2 = { + encode(message, writer = new BinaryWriter()) { + if (message.contentType !== "") { + writer.uint32(10).string(message.contentType); + } + if (message.data.length !== 0) { + writer.uint32(18).bytes(message.data); + } + for (const v of message.extensions) { + Any2.encode(v, writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseHttpBody2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.contentType = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.data = reader.bytes(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.extensions.push(Any2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return HttpBody2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseHttpBody2(); + message.contentType = (_a = object.contentType) != null ? _a : ""; + message.data = (_b = object.data) != null ? _b : new Uint8Array(0); + message.extensions = ((_c = object.extensions) == null ? void 0 : _c.map((e) => Any2.fromPartial(e))) || []; + return message; + } +}; + +// src/api/memos-proto-v0.24.0/gen/api/v1/resource_service.ts +function createBaseResource2() { + return { + name: "", + createTime: void 0, + filename: "", + content: new Uint8Array(0), + externalLink: "", + type: "", + size: 0, + memo: void 0 + }; +} +var Resource2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.createTime !== void 0) { + Timestamp2.encode(toTimestamp4(message.createTime), writer.uint32(26).fork()).join(); + } + if (message.filename !== "") { + writer.uint32(34).string(message.filename); + } + if (message.content.length !== 0) { + writer.uint32(42).bytes(message.content); + } + if (message.externalLink !== "") { + writer.uint32(50).string(message.externalLink); + } + if (message.type !== "") { + writer.uint32(58).string(message.type); + } + if (message.size !== 0) { + writer.uint32(64).int64(message.size); + } + if (message.memo !== void 0) { + writer.uint32(74).string(message.memo); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseResource2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.createTime = fromTimestamp4(Timestamp2.decode(reader, reader.uint32())); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.filename = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.content = reader.bytes(); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.externalLink = reader.string(); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.type = reader.string(); + continue; + } + case 8: { + if (tag !== 64) { + break; + } + message.size = longToNumber4(reader.int64()); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.memo = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Resource2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h; + const message = createBaseResource2(); + message.name = (_a = object.name) != null ? _a : ""; + message.createTime = (_b = object.createTime) != null ? _b : void 0; + message.filename = (_c = object.filename) != null ? _c : ""; + message.content = (_d = object.content) != null ? _d : new Uint8Array(0); + message.externalLink = (_e = object.externalLink) != null ? _e : ""; + message.type = (_f = object.type) != null ? _f : ""; + message.size = (_g = object.size) != null ? _g : 0; + message.memo = (_h = object.memo) != null ? _h : void 0; + return message; + } +}; +function createBaseCreateResourceRequest2() { + return { resource: void 0 }; +} +var CreateResourceRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.resource !== void 0) { + Resource2.encode(message.resource, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateResourceRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resource = Resource2.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateResourceRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + const message = createBaseCreateResourceRequest2(); + message.resource = object.resource !== void 0 && object.resource !== null ? Resource2.fromPartial(object.resource) : void 0; + return message; + } +}; +function createBaseListResourcesRequest2() { + return {}; +} +var ListResourcesRequest2 = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListResourcesRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListResourcesRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseListResourcesRequest2(); + return message; + } +}; +function createBaseListResourcesResponse2() { + return { resources: [] }; +} +var ListResourcesResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.resources) { + Resource2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListResourcesResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resources.push(Resource2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListResourcesResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListResourcesResponse2(); + message.resources = ((_a = object.resources) == null ? void 0 : _a.map((e) => Resource2.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetResourceRequest2() { + return { name: "" }; +} +var GetResourceRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetResourceRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetResourceRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetResourceRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseGetResourceBinaryRequest2() { + return { name: "", filename: "", thumbnail: false }; +} +var GetResourceBinaryRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.filename !== "") { + writer.uint32(18).string(message.filename); + } + if (message.thumbnail !== false) { + writer.uint32(24).bool(message.thumbnail); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetResourceBinaryRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.filename = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.thumbnail = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetResourceBinaryRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseGetResourceBinaryRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.filename = (_b = object.filename) != null ? _b : ""; + message.thumbnail = (_c = object.thumbnail) != null ? _c : false; + return message; + } +}; +function createBaseUpdateResourceRequest2() { + return { resource: void 0, updateMask: void 0 }; +} +var UpdateResourceRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.resource !== void 0) { + Resource2.encode(message.resource, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask2.encode(FieldMask2.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateResourceRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resource = Resource2.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask2.unwrap(FieldMask2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateResourceRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateResourceRequest2(); + message.resource = object.resource !== void 0 && object.resource !== null ? Resource2.fromPartial(object.resource) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseDeleteResourceRequest2() { + return { name: "" }; +} +var DeleteResourceRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteResourceRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteResourceRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteResourceRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +var ResourceServiceDefinition2 = { + name: "ResourceService", + fullName: "memos.api.v1.ResourceService", + methods: { + /** CreateResource creates a new resource. */ + createResource: { + name: "CreateResource", + requestType: CreateResourceRequest2, + requestStream: false, + responseType: Resource2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 29, + 58, + 8, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 34, + 17, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115 + ]) + ] + } + } + }, + /** ListResources lists all resources. */ + listResources: { + name: "ListResources", + requestType: ListResourcesRequest2, + requestStream: false, + responseType: ListResourcesResponse2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([19, 18, 17, 47, 97, 112, 105, 47, 118, 49, 47, 114, 101, 115, 111, 117, 114, 99, 101, 115]) + ] + } + } + }, + /** GetResource returns a resource by name. */ + getResource: { + name: "GetResource", + requestType: GetResourceRequest2, + requestStream: false, + responseType: Resource2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 28, + 18, + 26, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** GetResourceBinary returns a resource binary by name. */ + getResourceBinary: { + name: "GetResourceBinary", + requestType: GetResourceBinaryRequest2, + requestStream: false, + responseType: HttpBody2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([13, 110, 97, 109, 101, 44, 102, 105, 108, 101, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 18, + 35, + 47, + 102, + 105, + 108, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125, + 47, + 123, + 102, + 105, + 108, + 101, + 110, + 97, + 109, + 101, + 125 + ]) + ] + } + } + }, + /** UpdateResource updates a resource. */ + updateResource: { + name: "UpdateResource", + requestType: UpdateResourceRequest2, + requestStream: false, + responseType: Resource2, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 20, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107 + ]) + ], + 578365826: [ + new Uint8Array([ + 47, + 58, + 8, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 50, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 46, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** DeleteResource deletes a resource by name. */ + deleteResource: { + name: "DeleteResource", + requestType: DeleteResourceRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 28, + 42, + 26, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115, + 47, + 42, + 125 + ]) + ] + } + } + } + } +}; +function toTimestamp4(date) { + const seconds = Math.trunc(date.getTime() / 1e3); + const nanos = date.getTime() % 1e3 * 1e6; + return { seconds, nanos }; +} +function fromTimestamp4(t) { + let millis = (t.seconds || 0) * 1e3; + millis += (t.nanos || 0) / 1e6; + return new globalThis.Date(millis); +} +function longToNumber4(int64) { + const num = globalThis.Number(int64.toString()); + if (num > globalThis.Number.MAX_SAFE_INTEGER) { + throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + } + if (num < globalThis.Number.MIN_SAFE_INTEGER) { + throw new globalThis.Error("Value is smaller than Number.MIN_SAFE_INTEGER"); + } + return num; +} + +// src/api/memos-proto-v0.24.0/gen/api/v1/memo_service.ts +function visibilityFromJSON2(object) { + switch (object) { + case 0: + case "VISIBILITY_UNSPECIFIED": + return "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */; + case 1: + case "PRIVATE": + return "PRIVATE" /* PRIVATE */; + case 2: + case "PROTECTED": + return "PROTECTED" /* PROTECTED */; + case 3: + case "PUBLIC": + return "PUBLIC" /* PUBLIC */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function visibilityToNumber2(object) { + switch (object) { + case "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */: + return 0; + case "PRIVATE" /* PRIVATE */: + return 1; + case "PROTECTED" /* PROTECTED */: + return 2; + case "PUBLIC" /* PUBLIC */: + return 3; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseMemo2() { + return { + name: "", + state: "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */, + creator: "", + createTime: void 0, + updateTime: void 0, + displayTime: void 0, + content: "", + nodes: [], + visibility: "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */, + tags: [], + pinned: false, + resources: [], + relations: [], + reactions: [], + property: void 0, + parent: void 0, + snippet: "", + location: void 0 + }; +} +var Memo2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.state !== "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */) { + writer.uint32(24).int32(stateToNumber(message.state)); + } + if (message.creator !== "") { + writer.uint32(34).string(message.creator); + } + if (message.createTime !== void 0) { + Timestamp2.encode(toTimestamp5(message.createTime), writer.uint32(42).fork()).join(); + } + if (message.updateTime !== void 0) { + Timestamp2.encode(toTimestamp5(message.updateTime), writer.uint32(50).fork()).join(); + } + if (message.displayTime !== void 0) { + Timestamp2.encode(toTimestamp5(message.displayTime), writer.uint32(58).fork()).join(); + } + if (message.content !== "") { + writer.uint32(66).string(message.content); + } + for (const v of message.nodes) { + Node2.encode(v, writer.uint32(74).fork()).join(); + } + if (message.visibility !== "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */) { + writer.uint32(80).int32(visibilityToNumber2(message.visibility)); + } + for (const v of message.tags) { + writer.uint32(90).string(v); + } + if (message.pinned !== false) { + writer.uint32(96).bool(message.pinned); + } + for (const v of message.resources) { + Resource2.encode(v, writer.uint32(114).fork()).join(); + } + for (const v of message.relations) { + MemoRelation2.encode(v, writer.uint32(122).fork()).join(); + } + for (const v of message.reactions) { + Reaction2.encode(v, writer.uint32(130).fork()).join(); + } + if (message.property !== void 0) { + MemoProperty2.encode(message.property, writer.uint32(138).fork()).join(); + } + if (message.parent !== void 0) { + writer.uint32(146).string(message.parent); + } + if (message.snippet !== "") { + writer.uint32(154).string(message.snippet); + } + if (message.location !== void 0) { + Location.encode(message.location, writer.uint32(162).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemo2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.state = stateFromJSON(reader.int32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.creator = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.createTime = fromTimestamp5(Timestamp2.decode(reader, reader.uint32())); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.updateTime = fromTimestamp5(Timestamp2.decode(reader, reader.uint32())); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.displayTime = fromTimestamp5(Timestamp2.decode(reader, reader.uint32())); + continue; + } + case 8: { + if (tag !== 66) { + break; + } + message.content = reader.string(); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.nodes.push(Node2.decode(reader, reader.uint32())); + continue; + } + case 10: { + if (tag !== 80) { + break; + } + message.visibility = visibilityFromJSON2(reader.int32()); + continue; + } + case 11: { + if (tag !== 90) { + break; + } + message.tags.push(reader.string()); + continue; + } + case 12: { + if (tag !== 96) { + break; + } + message.pinned = reader.bool(); + continue; + } + case 14: { + if (tag !== 114) { + break; + } + message.resources.push(Resource2.decode(reader, reader.uint32())); + continue; + } + case 15: { + if (tag !== 122) { + break; + } + message.relations.push(MemoRelation2.decode(reader, reader.uint32())); + continue; + } + case 16: { + if (tag !== 130) { + break; + } + message.reactions.push(Reaction2.decode(reader, reader.uint32())); + continue; + } + case 17: { + if (tag !== 138) { + break; + } + message.property = MemoProperty2.decode(reader, reader.uint32()); + continue; + } + case 18: { + if (tag !== 146) { + break; + } + message.parent = reader.string(); + continue; + } + case 19: { + if (tag !== 154) { + break; + } + message.snippet = reader.string(); + continue; + } + case 20: { + if (tag !== 162) { + break; + } + message.location = Location.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Memo2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p; + const message = createBaseMemo2(); + message.name = (_a = object.name) != null ? _a : ""; + message.state = (_b = object.state) != null ? _b : "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */; + message.creator = (_c = object.creator) != null ? _c : ""; + message.createTime = (_d = object.createTime) != null ? _d : void 0; + message.updateTime = (_e = object.updateTime) != null ? _e : void 0; + message.displayTime = (_f = object.displayTime) != null ? _f : void 0; + message.content = (_g = object.content) != null ? _g : ""; + message.nodes = ((_h = object.nodes) == null ? void 0 : _h.map((e) => Node2.fromPartial(e))) || []; + message.visibility = (_i = object.visibility) != null ? _i : "VISIBILITY_UNSPECIFIED" /* VISIBILITY_UNSPECIFIED */; + message.tags = ((_j = object.tags) == null ? void 0 : _j.map((e) => e)) || []; + message.pinned = (_k = object.pinned) != null ? _k : false; + message.resources = ((_l = object.resources) == null ? void 0 : _l.map((e) => Resource2.fromPartial(e))) || []; + message.relations = ((_m = object.relations) == null ? void 0 : _m.map((e) => MemoRelation2.fromPartial(e))) || []; + message.reactions = ((_n = object.reactions) == null ? void 0 : _n.map((e) => Reaction2.fromPartial(e))) || []; + message.property = object.property !== void 0 && object.property !== null ? MemoProperty2.fromPartial(object.property) : void 0; + message.parent = (_o = object.parent) != null ? _o : void 0; + message.snippet = (_p = object.snippet) != null ? _p : ""; + message.location = object.location !== void 0 && object.location !== null ? Location.fromPartial(object.location) : void 0; + return message; + } +}; +function createBaseMemoProperty2() { + return { hasLink: false, hasTaskList: false, hasCode: false, hasIncompleteTasks: false }; +} +var MemoProperty2 = { + encode(message, writer = new BinaryWriter()) { + if (message.hasLink !== false) { + writer.uint32(8).bool(message.hasLink); + } + if (message.hasTaskList !== false) { + writer.uint32(16).bool(message.hasTaskList); + } + if (message.hasCode !== false) { + writer.uint32(24).bool(message.hasCode); + } + if (message.hasIncompleteTasks !== false) { + writer.uint32(32).bool(message.hasIncompleteTasks); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseMemoProperty2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.hasLink = reader.bool(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.hasTaskList = reader.bool(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.hasCode = reader.bool(); + continue; + } + case 4: { + if (tag !== 32) { + break; + } + message.hasIncompleteTasks = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return MemoProperty2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseMemoProperty2(); + message.hasLink = (_a = object.hasLink) != null ? _a : false; + message.hasTaskList = (_b = object.hasTaskList) != null ? _b : false; + message.hasCode = (_c = object.hasCode) != null ? _c : false; + message.hasIncompleteTasks = (_d = object.hasIncompleteTasks) != null ? _d : false; + return message; + } +}; +function createBaseLocation() { + return { placeholder: "", latitude: 0, longitude: 0 }; +} +var Location = { + encode(message, writer = new BinaryWriter()) { + if (message.placeholder !== "") { + writer.uint32(10).string(message.placeholder); + } + if (message.latitude !== 0) { + writer.uint32(17).double(message.latitude); + } + if (message.longitude !== 0) { + writer.uint32(25).double(message.longitude); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseLocation(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.placeholder = reader.string(); + continue; + } + case 2: { + if (tag !== 17) { + break; + } + message.latitude = reader.double(); + continue; + } + case 3: { + if (tag !== 25) { + break; + } + message.longitude = reader.double(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Location.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseLocation(); + message.placeholder = (_a = object.placeholder) != null ? _a : ""; + message.latitude = (_b = object.latitude) != null ? _b : 0; + message.longitude = (_c = object.longitude) != null ? _c : 0; + return message; + } +}; +function createBaseCreateMemoRequest2() { + return { memo: void 0 }; +} +var CreateMemoRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.memo !== void 0) { + Memo2.encode(message.memo, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateMemoRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memo = Memo2.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateMemoRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + const message = createBaseCreateMemoRequest2(); + message.memo = object.memo !== void 0 && object.memo !== null ? Memo2.fromPartial(object.memo) : void 0; + return message; + } +}; +function createBaseListMemosRequest2() { + return { + parent: "", + pageSize: 0, + pageToken: "", + state: "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */, + sort: "", + direction: "DIRECTION_UNSPECIFIED" /* DIRECTION_UNSPECIFIED */, + filter: "", + oldFilter: "" + }; +} +var ListMemosRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.pageSize !== 0) { + writer.uint32(16).int32(message.pageSize); + } + if (message.pageToken !== "") { + writer.uint32(26).string(message.pageToken); + } + if (message.state !== "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */) { + writer.uint32(32).int32(stateToNumber(message.state)); + } + if (message.sort !== "") { + writer.uint32(42).string(message.sort); + } + if (message.direction !== "DIRECTION_UNSPECIFIED" /* DIRECTION_UNSPECIFIED */) { + writer.uint32(48).int32(directionToNumber(message.direction)); + } + if (message.filter !== "") { + writer.uint32(58).string(message.filter); + } + if (message.oldFilter !== "") { + writer.uint32(66).string(message.oldFilter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemosRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.pageSize = reader.int32(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.pageToken = reader.string(); + continue; + } + case 4: { + if (tag !== 32) { + break; + } + message.state = stateFromJSON(reader.int32()); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.sort = reader.string(); + continue; + } + case 6: { + if (tag !== 48) { + break; + } + message.direction = directionFromJSON(reader.int32()); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.filter = reader.string(); + continue; + } + case 8: { + if (tag !== 66) { + break; + } + message.oldFilter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemosRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h; + const message = createBaseListMemosRequest2(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.pageSize = (_b = object.pageSize) != null ? _b : 0; + message.pageToken = (_c = object.pageToken) != null ? _c : ""; + message.state = (_d = object.state) != null ? _d : "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */; + message.sort = (_e = object.sort) != null ? _e : ""; + message.direction = (_f = object.direction) != null ? _f : "DIRECTION_UNSPECIFIED" /* DIRECTION_UNSPECIFIED */; + message.filter = (_g = object.filter) != null ? _g : ""; + message.oldFilter = (_h = object.oldFilter) != null ? _h : ""; + return message; + } +}; +function createBaseListMemosResponse2() { + return { memos: [], nextPageToken: "" }; +} +var ListMemosResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.memos) { + Memo2.encode(v, writer.uint32(10).fork()).join(); + } + if (message.nextPageToken !== "") { + writer.uint32(18).string(message.nextPageToken); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemosResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memos.push(Memo2.decode(reader, reader.uint32())); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.nextPageToken = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemosResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseListMemosResponse2(); + message.memos = ((_a = object.memos) == null ? void 0 : _a.map((e) => Memo2.fromPartial(e))) || []; + message.nextPageToken = (_b = object.nextPageToken) != null ? _b : ""; + return message; + } +}; +function createBaseGetMemoRequest2() { + return { name: "" }; +} +var GetMemoRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetMemoRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetMemoRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetMemoRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUpdateMemoRequest2() { + return { memo: void 0, updateMask: void 0 }; +} +var UpdateMemoRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.memo !== void 0) { + Memo2.encode(message.memo, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask2.encode(FieldMask2.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateMemoRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memo = Memo2.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask2.unwrap(FieldMask2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateMemoRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateMemoRequest2(); + message.memo = object.memo !== void 0 && object.memo !== null ? Memo2.fromPartial(object.memo) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseDeleteMemoRequest2() { + return { name: "" }; +} +var DeleteMemoRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteMemoRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteMemoRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseRenameMemoTagRequest2() { + return { parent: "", oldTag: "", newTag: "" }; +} +var RenameMemoTagRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.oldTag !== "") { + writer.uint32(18).string(message.oldTag); + } + if (message.newTag !== "") { + writer.uint32(26).string(message.newTag); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseRenameMemoTagRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.oldTag = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.newTag = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return RenameMemoTagRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseRenameMemoTagRequest2(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.oldTag = (_b = object.oldTag) != null ? _b : ""; + message.newTag = (_c = object.newTag) != null ? _c : ""; + return message; + } +}; +function createBaseDeleteMemoTagRequest2() { + return { parent: "", tag: "", deleteRelatedMemos: false }; +} +var DeleteMemoTagRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.tag !== "") { + writer.uint32(18).string(message.tag); + } + if (message.deleteRelatedMemos !== false) { + writer.uint32(24).bool(message.deleteRelatedMemos); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoTagRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.tag = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.deleteRelatedMemos = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteMemoTagRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseDeleteMemoTagRequest2(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.tag = (_b = object.tag) != null ? _b : ""; + message.deleteRelatedMemos = (_c = object.deleteRelatedMemos) != null ? _c : false; + return message; + } +}; +function createBaseSetMemoResourcesRequest2() { + return { name: "", resources: [] }; +} +var SetMemoResourcesRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.resources) { + Resource2.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSetMemoResourcesRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.resources.push(Resource2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SetMemoResourcesRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseSetMemoResourcesRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.resources = ((_b = object.resources) == null ? void 0 : _b.map((e) => Resource2.fromPartial(e))) || []; + return message; + } +}; +function createBaseListMemoResourcesRequest2() { + return { name: "" }; +} +var ListMemoResourcesRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoResourcesRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoResourcesRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoResourcesRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoResourcesResponse2() { + return { resources: [] }; +} +var ListMemoResourcesResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.resources) { + Resource2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoResourcesResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.resources.push(Resource2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoResourcesResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoResourcesResponse2(); + message.resources = ((_a = object.resources) == null ? void 0 : _a.map((e) => Resource2.fromPartial(e))) || []; + return message; + } +}; +function createBaseSetMemoRelationsRequest2() { + return { name: "", relations: [] }; +} +var SetMemoRelationsRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.relations) { + MemoRelation2.encode(v, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSetMemoRelationsRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.relations.push(MemoRelation2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SetMemoRelationsRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseSetMemoRelationsRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.relations = ((_b = object.relations) == null ? void 0 : _b.map((e) => MemoRelation2.fromPartial(e))) || []; + return message; + } +}; +function createBaseListMemoRelationsRequest2() { + return { name: "" }; +} +var ListMemoRelationsRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoRelationsRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoRelationsRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoRelationsRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoRelationsResponse2() { + return { relations: [] }; +} +var ListMemoRelationsResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.relations) { + MemoRelation2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoRelationsResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.relations.push(MemoRelation2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoRelationsResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoRelationsResponse2(); + message.relations = ((_a = object.relations) == null ? void 0 : _a.map((e) => MemoRelation2.fromPartial(e))) || []; + return message; + } +}; +function createBaseCreateMemoCommentRequest2() { + return { name: "", comment: void 0 }; +} +var CreateMemoCommentRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.comment !== void 0) { + Memo2.encode(message.comment, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateMemoCommentRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.comment = Memo2.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateMemoCommentRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseCreateMemoCommentRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.comment = object.comment !== void 0 && object.comment !== null ? Memo2.fromPartial(object.comment) : void 0; + return message; + } +}; +function createBaseListMemoCommentsRequest2() { + return { name: "" }; +} +var ListMemoCommentsRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoCommentsRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoCommentsRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoCommentsRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoCommentsResponse2() { + return { memos: [] }; +} +var ListMemoCommentsResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.memos) { + Memo2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoCommentsResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.memos.push(Memo2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoCommentsResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoCommentsResponse2(); + message.memos = ((_a = object.memos) == null ? void 0 : _a.map((e) => Memo2.fromPartial(e))) || []; + return message; + } +}; +function createBaseListMemoReactionsRequest2() { + return { name: "" }; +} +var ListMemoReactionsRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoReactionsRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoReactionsRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoReactionsRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListMemoReactionsResponse2() { + return { reactions: [] }; +} +var ListMemoReactionsResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.reactions) { + Reaction2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListMemoReactionsResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.reactions.push(Reaction2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListMemoReactionsResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListMemoReactionsResponse2(); + message.reactions = ((_a = object.reactions) == null ? void 0 : _a.map((e) => Reaction2.fromPartial(e))) || []; + return message; + } +}; +function createBaseUpsertMemoReactionRequest2() { + return { name: "", reaction: void 0 }; +} +var UpsertMemoReactionRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.reaction !== void 0) { + Reaction2.encode(message.reaction, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpsertMemoReactionRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.reaction = Reaction2.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpsertMemoReactionRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpsertMemoReactionRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.reaction = object.reaction !== void 0 && object.reaction !== null ? Reaction2.fromPartial(object.reaction) : void 0; + return message; + } +}; +function createBaseDeleteMemoReactionRequest2() { + return { id: 0 }; +} +var DeleteMemoReactionRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.id !== 0) { + writer.uint32(8).int32(message.id); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteMemoReactionRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.id = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteMemoReactionRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteMemoReactionRequest2(); + message.id = (_a = object.id) != null ? _a : 0; + return message; + } +}; +var MemoServiceDefinition2 = { + name: "MemoService", + fullName: "memos.api.v1.MemoService", + methods: { + /** CreateMemo creates a memo. */ + createMemo: { + name: "CreateMemo", + requestType: CreateMemoRequest2, + requestStream: false, + responseType: Memo2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 58, + 4, + 109, + 101, + 109, + 111, + 34, + 13, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115 + ]) + ] + } + } + }, + /** ListMemos lists memos with pagination and filter. */ + listMemos: { + name: "ListMemos", + requestType: ListMemosRequest2, + requestStream: false, + responseType: ListMemosResponse2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 49, + 90, + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 109, + 101, + 109, + 111, + 115, + 18, + 13, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 109, + 101, + 109, + 111, + 115 + ]) + ] + } + } + }, + /** GetMemo gets a memo. */ + getMemo: { + name: "GetMemo", + requestType: GetMemoRequest2, + requestStream: false, + responseType: Memo2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** UpdateMemo updates a memo. */ + updateMemo: { + name: "UpdateMemo", + requestType: UpdateMemoRequest2, + requestStream: false, + responseType: Memo2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([16, 109, 101, 109, 111, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 35, + 58, + 4, + 109, + 101, + 109, + 111, + 50, + 27, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 109, + 101, + 109, + 111, + 46, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** DeleteMemo deletes a memo. */ + deleteMemo: { + name: "DeleteMemo", + requestType: DeleteMemoRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** RenameMemoTag renames a tag for a memo. */ + renameMemoTag: { + name: "RenameMemoTag", + requestType: RenameMemoTagRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 41, + 58, + 1, + 42, + 50, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + 58, + 114, + 101, + 110, + 97, + 109, + 101 + ]) + ] + } + } + }, + /** DeleteMemoTag deletes a tag for a memo. */ + deleteMemoTag: { + name: "DeleteMemoTag", + requestType: DeleteMemoTagRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 37, + 42, + 35, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 116, + 97, + 103, + 115, + 47, + 123, + 116, + 97, + 103, + 125 + ]) + ] + } + } + }, + /** SetMemoResources sets resources for a memo. */ + setMemoResources: { + name: "SetMemoResources", + requestType: SetMemoResourcesRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 50, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115 + ]) + ] + } + } + }, + /** ListMemoResources lists resources for a memo. */ + listMemoResources: { + name: "ListMemoResources", + requestType: ListMemoResourcesRequest2, + requestStream: false, + responseType: ListMemoResourcesResponse2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 115, + 111, + 117, + 114, + 99, + 101, + 115 + ]) + ] + } + } + }, + /** SetMemoRelations sets relations for a memo. */ + setMemoRelations: { + name: "SetMemoRelations", + requestType: SetMemoRelationsRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 50, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 108, + 97, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** ListMemoRelations lists relations for a memo. */ + listMemoRelations: { + name: "ListMemoRelations", + requestType: ListMemoRelationsRequest2, + requestStream: false, + responseType: ListMemoRelationsResponse2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 108, + 97, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** CreateMemoComment creates a comment for a memo. */ + createMemoComment: { + name: "CreateMemoComment", + requestType: CreateMemoCommentRequest2, + requestStream: false, + responseType: Memo2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 42, + 58, + 7, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 34, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 115 + ]) + ] + } + } + }, + /** ListMemoComments lists comments for a memo. */ + listMemoComments: { + name: "ListMemoComments", + requestType: ListMemoCommentsRequest2, + requestStream: false, + responseType: ListMemoCommentsResponse2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 33, + 18, + 31, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 99, + 111, + 109, + 109, + 101, + 110, + 116, + 115 + ]) + ] + } + } + }, + /** ListMemoReactions lists reactions for a memo. */ + listMemoReactions: { + name: "ListMemoReactions", + requestType: ListMemoReactionsRequest2, + requestStream: false, + responseType: ListMemoReactionsResponse2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 34, + 18, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** UpsertMemoReaction upserts a reaction for a memo. */ + upsertMemoReaction: { + name: "UpsertMemoReaction", + requestType: UpsertMemoReactionRequest2, + requestStream: false, + responseType: Reaction2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 37, + 58, + 1, + 42, + 34, + 32, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 109, + 101, + 109, + 111, + 115, + 47, + 42, + 125, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115 + ]) + ] + } + } + }, + /** DeleteMemoReaction deletes a reaction for a memo. */ + deleteMemoReaction: { + name: "DeleteMemoReaction", + requestType: DeleteMemoReactionRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([2, 105, 100])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 114, + 101, + 97, + 99, + 116, + 105, + 111, + 110, + 115, + 47, + 123, + 105, + 100, + 125 + ]) + ] + } + } + } + } +}; +function toTimestamp5(date) { + const seconds = Math.trunc(date.getTime() / 1e3); + const nanos = date.getTime() % 1e3 * 1e6; + return { seconds, nanos }; +} +function fromTimestamp5(t) { + let millis = (t.seconds || 0) * 1e3; + millis += (t.nanos || 0) / 1e6; + return new globalThis.Date(millis); +} + +// src/api/memos-proto-v0.24.0/gen/api/v1/user_service.ts +function user_RoleFromJSON2(object) { + switch (object) { + case 0: + case "ROLE_UNSPECIFIED": + return "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */; + case 1: + case "HOST": + return "HOST" /* HOST */; + case 2: + case "ADMIN": + return "ADMIN" /* ADMIN */; + case 3: + case "USER": + return "USER" /* USER */; + case -1: + case "UNRECOGNIZED": + default: + return "UNRECOGNIZED" /* UNRECOGNIZED */; + } +} +function user_RoleToNumber2(object) { + switch (object) { + case "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */: + return 0; + case "HOST" /* HOST */: + return 1; + case "ADMIN" /* ADMIN */: + return 2; + case "USER" /* USER */: + return 3; + case "UNRECOGNIZED" /* UNRECOGNIZED */: + default: + return -1; + } +} +function createBaseUser2() { + return { + name: "", + role: "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */, + username: "", + email: "", + nickname: "", + avatarUrl: "", + description: "", + password: "", + state: "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */, + createTime: void 0, + updateTime: void 0 + }; +} +var User2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.role !== "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */) { + writer.uint32(24).int32(user_RoleToNumber2(message.role)); + } + if (message.username !== "") { + writer.uint32(34).string(message.username); + } + if (message.email !== "") { + writer.uint32(42).string(message.email); + } + if (message.nickname !== "") { + writer.uint32(50).string(message.nickname); + } + if (message.avatarUrl !== "") { + writer.uint32(58).string(message.avatarUrl); + } + if (message.description !== "") { + writer.uint32(66).string(message.description); + } + if (message.password !== "") { + writer.uint32(74).string(message.password); + } + if (message.state !== "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */) { + writer.uint32(80).int32(stateToNumber(message.state)); + } + if (message.createTime !== void 0) { + Timestamp2.encode(toTimestamp6(message.createTime), writer.uint32(90).fork()).join(); + } + if (message.updateTime !== void 0) { + Timestamp2.encode(toTimestamp6(message.updateTime), writer.uint32(98).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUser2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.role = user_RoleFromJSON2(reader.int32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.username = reader.string(); + continue; + } + case 5: { + if (tag !== 42) { + break; + } + message.email = reader.string(); + continue; + } + case 6: { + if (tag !== 50) { + break; + } + message.nickname = reader.string(); + continue; + } + case 7: { + if (tag !== 58) { + break; + } + message.avatarUrl = reader.string(); + continue; + } + case 8: { + if (tag !== 66) { + break; + } + message.description = reader.string(); + continue; + } + case 9: { + if (tag !== 74) { + break; + } + message.password = reader.string(); + continue; + } + case 10: { + if (tag !== 80) { + break; + } + message.state = stateFromJSON(reader.int32()); + continue; + } + case 11: { + if (tag !== 90) { + break; + } + message.createTime = fromTimestamp6(Timestamp2.decode(reader, reader.uint32())); + continue; + } + case 12: { + if (tag !== 98) { + break; + } + message.updateTime = fromTimestamp6(Timestamp2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return User2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k; + const message = createBaseUser2(); + message.name = (_a = object.name) != null ? _a : ""; + message.role = (_b = object.role) != null ? _b : "ROLE_UNSPECIFIED" /* ROLE_UNSPECIFIED */; + message.username = (_c = object.username) != null ? _c : ""; + message.email = (_d = object.email) != null ? _d : ""; + message.nickname = (_e = object.nickname) != null ? _e : ""; + message.avatarUrl = (_f = object.avatarUrl) != null ? _f : ""; + message.description = (_g = object.description) != null ? _g : ""; + message.password = (_h = object.password) != null ? _h : ""; + message.state = (_i = object.state) != null ? _i : "STATE_UNSPECIFIED" /* STATE_UNSPECIFIED */; + message.createTime = (_j = object.createTime) != null ? _j : void 0; + message.updateTime = (_k = object.updateTime) != null ? _k : void 0; + return message; + } +}; +function createBaseListUsersRequest2() { + return {}; +} +var ListUsersRequest2 = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUsersRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUsersRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseListUsersRequest2(); + return message; + } +}; +function createBaseListUsersResponse2() { + return { users: [] }; +} +var ListUsersResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.users) { + User2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUsersResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.users.push(User2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUsersResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListUsersResponse2(); + message.users = ((_a = object.users) == null ? void 0 : _a.map((e) => User2.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetUserRequest2() { + return { name: "" }; +} +var GetUserRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseGetUserByUsernameRequest() { + return { username: "" }; +} +var GetUserByUsernameRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserByUsernameRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.username = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserByUsernameRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserByUsernameRequest(); + message.username = (_a = object.username) != null ? _a : ""; + return message; + } +}; +function createBaseGetUserAvatarBinaryRequest2() { + return { name: "", httpBody: void 0 }; +} +var GetUserAvatarBinaryRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.httpBody !== void 0) { + HttpBody2.encode(message.httpBody, writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserAvatarBinaryRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.httpBody = HttpBody2.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserAvatarBinaryRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserAvatarBinaryRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.httpBody = object.httpBody !== void 0 && object.httpBody !== null ? HttpBody2.fromPartial(object.httpBody) : void 0; + return message; + } +}; +function createBaseCreateUserRequest2() { + return { user: void 0 }; +} +var CreateUserRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.user !== void 0) { + User2.encode(message.user, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateUserRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.user = User2.decode(reader, reader.uint32()); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateUserRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + const message = createBaseCreateUserRequest2(); + message.user = object.user !== void 0 && object.user !== null ? User2.fromPartial(object.user) : void 0; + return message; + } +}; +function createBaseUpdateUserRequest2() { + return { user: void 0, updateMask: void 0 }; +} +var UpdateUserRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.user !== void 0) { + User2.encode(message.user, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask2.encode(FieldMask2.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateUserRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.user = User2.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask2.unwrap(FieldMask2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateUserRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateUserRequest2(); + message.user = object.user !== void 0 && object.user !== null ? User2.fromPartial(object.user) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseDeleteUserRequest2() { + return { name: "" }; +} +var DeleteUserRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteUserRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteUserRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseDeleteUserRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUserStats() { + return { name: "", memoDisplayTimestamps: [], memoTypeStats: void 0, tagCount: {} }; +} +var UserStats = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + for (const v of message.memoDisplayTimestamps) { + Timestamp2.encode(toTimestamp6(v), writer.uint32(18).fork()).join(); + } + if (message.memoTypeStats !== void 0) { + UserStats_MemoTypeStats.encode(message.memoTypeStats, writer.uint32(26).fork()).join(); + } + Object.entries(message.tagCount).forEach(([key, value]) => { + UserStats_TagCountEntry.encode({ key, value }, writer.uint32(34).fork()).join(); + }); + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserStats(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.memoDisplayTimestamps.push(fromTimestamp6(Timestamp2.decode(reader, reader.uint32()))); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.memoTypeStats = UserStats_MemoTypeStats.decode(reader, reader.uint32()); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + const entry4 = UserStats_TagCountEntry.decode(reader, reader.uint32()); + if (entry4.value !== void 0) { + message.tagCount[entry4.key] = entry4.value; + } + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserStats.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseUserStats(); + message.name = (_a = object.name) != null ? _a : ""; + message.memoDisplayTimestamps = ((_b = object.memoDisplayTimestamps) == null ? void 0 : _b.map((e) => e)) || []; + message.memoTypeStats = object.memoTypeStats !== void 0 && object.memoTypeStats !== null ? UserStats_MemoTypeStats.fromPartial(object.memoTypeStats) : void 0; + message.tagCount = Object.entries((_c = object.tagCount) != null ? _c : {}).reduce((acc, [key, value]) => { + if (value !== void 0) { + acc[key] = globalThis.Number(value); + } + return acc; + }, {}); + return message; + } +}; +function createBaseUserStats_TagCountEntry() { + return { key: "", value: 0 }; +} +var UserStats_TagCountEntry = { + encode(message, writer = new BinaryWriter()) { + if (message.key !== "") { + writer.uint32(10).string(message.key); + } + if (message.value !== 0) { + writer.uint32(16).int32(message.value); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserStats_TagCountEntry(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.key = reader.string(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.value = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserStats_TagCountEntry.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseUserStats_TagCountEntry(); + message.key = (_a = object.key) != null ? _a : ""; + message.value = (_b = object.value) != null ? _b : 0; + return message; + } +}; +function createBaseUserStats_MemoTypeStats() { + return { linkCount: 0, codeCount: 0, todoCount: 0, undoCount: 0 }; +} +var UserStats_MemoTypeStats = { + encode(message, writer = new BinaryWriter()) { + if (message.linkCount !== 0) { + writer.uint32(8).int32(message.linkCount); + } + if (message.codeCount !== 0) { + writer.uint32(16).int32(message.codeCount); + } + if (message.todoCount !== 0) { + writer.uint32(24).int32(message.todoCount); + } + if (message.undoCount !== 0) { + writer.uint32(32).int32(message.undoCount); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserStats_MemoTypeStats(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.linkCount = reader.int32(); + continue; + } + case 2: { + if (tag !== 16) { + break; + } + message.codeCount = reader.int32(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.todoCount = reader.int32(); + continue; + } + case 4: { + if (tag !== 32) { + break; + } + message.undoCount = reader.int32(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserStats_MemoTypeStats.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseUserStats_MemoTypeStats(); + message.linkCount = (_a = object.linkCount) != null ? _a : 0; + message.codeCount = (_b = object.codeCount) != null ? _b : 0; + message.todoCount = (_c = object.todoCount) != null ? _c : 0; + message.undoCount = (_d = object.undoCount) != null ? _d : 0; + return message; + } +}; +function createBaseListAllUserStatsRequest() { + return {}; +} +var ListAllUserStatsRequest = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListAllUserStatsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListAllUserStatsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseListAllUserStatsRequest(); + return message; + } +}; +function createBaseListAllUserStatsResponse() { + return { userStats: [] }; +} +var ListAllUserStatsResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.userStats) { + UserStats.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListAllUserStatsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.userStats.push(UserStats.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListAllUserStatsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListAllUserStatsResponse(); + message.userStats = ((_a = object.userStats) == null ? void 0 : _a.map((e) => UserStats.fromPartial(e))) || []; + return message; + } +}; +function createBaseGetUserStatsRequest() { + return { name: "" }; +} +var GetUserStatsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserStatsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserStatsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserStatsRequest(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUserSetting2() { + return { name: "", locale: "", appearance: "", memoVisibility: "" }; +} +var UserSetting2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.locale !== "") { + writer.uint32(18).string(message.locale); + } + if (message.appearance !== "") { + writer.uint32(26).string(message.appearance); + } + if (message.memoVisibility !== "") { + writer.uint32(34).string(message.memoVisibility); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserSetting2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.locale = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.appearance = reader.string(); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.memoVisibility = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserSetting2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseUserSetting2(); + message.name = (_a = object.name) != null ? _a : ""; + message.locale = (_b = object.locale) != null ? _b : ""; + message.appearance = (_c = object.appearance) != null ? _c : ""; + message.memoVisibility = (_d = object.memoVisibility) != null ? _d : ""; + return message; + } +}; +function createBaseGetUserSettingRequest2() { + return { name: "" }; +} +var GetUserSettingRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetUserSettingRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetUserSettingRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseGetUserSettingRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseUpdateUserSettingRequest2() { + return { setting: void 0, updateMask: void 0 }; +} +var UpdateUserSettingRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.setting !== void 0) { + UserSetting2.encode(message.setting, writer.uint32(10).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask2.encode(FieldMask2.wrap(message.updateMask), writer.uint32(18).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateUserSettingRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.setting = UserSetting2.decode(reader, reader.uint32()); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.updateMask = FieldMask2.unwrap(FieldMask2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateUserSettingRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseUpdateUserSettingRequest2(); + message.setting = object.setting !== void 0 && object.setting !== null ? UserSetting2.fromPartial(object.setting) : void 0; + message.updateMask = (_a = object.updateMask) != null ? _a : void 0; + return message; + } +}; +function createBaseUserAccessToken2() { + return { accessToken: "", description: "", issuedAt: void 0, expiresAt: void 0 }; +} +var UserAccessToken2 = { + encode(message, writer = new BinaryWriter()) { + if (message.accessToken !== "") { + writer.uint32(10).string(message.accessToken); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.issuedAt !== void 0) { + Timestamp2.encode(toTimestamp6(message.issuedAt), writer.uint32(26).fork()).join(); + } + if (message.expiresAt !== void 0) { + Timestamp2.encode(toTimestamp6(message.expiresAt), writer.uint32(34).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUserAccessToken2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.accessToken = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.issuedAt = fromTimestamp6(Timestamp2.decode(reader, reader.uint32())); + continue; + } + case 4: { + if (tag !== 34) { + break; + } + message.expiresAt = fromTimestamp6(Timestamp2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UserAccessToken2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c, _d; + const message = createBaseUserAccessToken2(); + message.accessToken = (_a = object.accessToken) != null ? _a : ""; + message.description = (_b = object.description) != null ? _b : ""; + message.issuedAt = (_c = object.issuedAt) != null ? _c : void 0; + message.expiresAt = (_d = object.expiresAt) != null ? _d : void 0; + return message; + } +}; +function createBaseListUserAccessTokensRequest2() { + return { name: "" }; +} +var ListUserAccessTokensRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUserAccessTokensRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUserAccessTokensRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListUserAccessTokensRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + return message; + } +}; +function createBaseListUserAccessTokensResponse2() { + return { accessTokens: [] }; +} +var ListUserAccessTokensResponse2 = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.accessTokens) { + UserAccessToken2.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListUserAccessTokensResponse2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.accessTokens.push(UserAccessToken2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListUserAccessTokensResponse2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListUserAccessTokensResponse2(); + message.accessTokens = ((_a = object.accessTokens) == null ? void 0 : _a.map((e) => UserAccessToken2.fromPartial(e))) || []; + return message; + } +}; +function createBaseCreateUserAccessTokenRequest2() { + return { name: "", description: "", expiresAt: void 0 }; +} +var CreateUserAccessTokenRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.description !== "") { + writer.uint32(18).string(message.description); + } + if (message.expiresAt !== void 0) { + Timestamp2.encode(toTimestamp6(message.expiresAt), writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateUserAccessTokenRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.description = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.expiresAt = fromTimestamp6(Timestamp2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateUserAccessTokenRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseCreateUserAccessTokenRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.description = (_b = object.description) != null ? _b : ""; + message.expiresAt = (_c = object.expiresAt) != null ? _c : void 0; + return message; + } +}; +function createBaseDeleteUserAccessTokenRequest2() { + return { name: "", accessToken: "" }; +} +var DeleteUserAccessTokenRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.name !== "") { + writer.uint32(10).string(message.name); + } + if (message.accessToken !== "") { + writer.uint32(18).string(message.accessToken); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteUserAccessTokenRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.name = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.accessToken = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteUserAccessTokenRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseDeleteUserAccessTokenRequest2(); + message.name = (_a = object.name) != null ? _a : ""; + message.accessToken = (_b = object.accessToken) != null ? _b : ""; + return message; + } +}; +function createBaseShortcut() { + return { id: "", title: "", filter: "" }; +} +var Shortcut = { + encode(message, writer = new BinaryWriter()) { + if (message.id !== "") { + writer.uint32(10).string(message.id); + } + if (message.title !== "") { + writer.uint32(18).string(message.title); + } + if (message.filter !== "") { + writer.uint32(26).string(message.filter); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseShortcut(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.id = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.title = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.filter = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return Shortcut.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseShortcut(); + message.id = (_a = object.id) != null ? _a : ""; + message.title = (_b = object.title) != null ? _b : ""; + message.filter = (_c = object.filter) != null ? _c : ""; + return message; + } +}; +function createBaseListShortcutsRequest() { + return { parent: "" }; +} +var ListShortcutsRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListShortcutsRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListShortcutsRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListShortcutsRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + return message; + } +}; +function createBaseListShortcutsResponse() { + return { shortcuts: [] }; +} +var ListShortcutsResponse = { + encode(message, writer = new BinaryWriter()) { + for (const v of message.shortcuts) { + Shortcut.encode(v, writer.uint32(10).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseListShortcutsResponse(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.shortcuts.push(Shortcut.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return ListShortcutsResponse.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a; + const message = createBaseListShortcutsResponse(); + message.shortcuts = ((_a = object.shortcuts) == null ? void 0 : _a.map((e) => Shortcut.fromPartial(e))) || []; + return message; + } +}; +function createBaseCreateShortcutRequest() { + return { parent: "", shortcut: void 0, validateOnly: false }; +} +var CreateShortcutRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.shortcut !== void 0) { + Shortcut.encode(message.shortcut, writer.uint32(18).fork()).join(); + } + if (message.validateOnly !== false) { + writer.uint32(24).bool(message.validateOnly); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseCreateShortcutRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.shortcut = Shortcut.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.validateOnly = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return CreateShortcutRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseCreateShortcutRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.shortcut = object.shortcut !== void 0 && object.shortcut !== null ? Shortcut.fromPartial(object.shortcut) : void 0; + message.validateOnly = (_b = object.validateOnly) != null ? _b : false; + return message; + } +}; +function createBaseUpdateShortcutRequest() { + return { parent: "", shortcut: void 0, updateMask: void 0 }; +} +var UpdateShortcutRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.shortcut !== void 0) { + Shortcut.encode(message.shortcut, writer.uint32(18).fork()).join(); + } + if (message.updateMask !== void 0) { + FieldMask2.encode(FieldMask2.wrap(message.updateMask), writer.uint32(26).fork()).join(); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseUpdateShortcutRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.shortcut = Shortcut.decode(reader, reader.uint32()); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.updateMask = FieldMask2.unwrap(FieldMask2.decode(reader, reader.uint32())); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return UpdateShortcutRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseUpdateShortcutRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.shortcut = object.shortcut !== void 0 && object.shortcut !== null ? Shortcut.fromPartial(object.shortcut) : void 0; + message.updateMask = (_b = object.updateMask) != null ? _b : void 0; + return message; + } +}; +function createBaseDeleteShortcutRequest() { + return { parent: "", id: "" }; +} +var DeleteShortcutRequest = { + encode(message, writer = new BinaryWriter()) { + if (message.parent !== "") { + writer.uint32(10).string(message.parent); + } + if (message.id !== "") { + writer.uint32(18).string(message.id); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseDeleteShortcutRequest(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.parent = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.id = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return DeleteShortcutRequest.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseDeleteShortcutRequest(); + message.parent = (_a = object.parent) != null ? _a : ""; + message.id = (_b = object.id) != null ? _b : ""; + return message; + } +}; +var UserServiceDefinition2 = { + name: "UserService", + fullName: "memos.api.v1.UserService", + methods: { + /** ListUsers returns a list of users. */ + listUsers: { + name: "ListUsers", + requestType: ListUsersRequest2, + requestStream: false, + responseType: ListUsersResponse2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [new Uint8Array([15, 18, 13, 47, 97, 112, 105, 47, 118, 49, 47, 117, 115, 101, 114, 115])] + } + } + }, + /** GetUser gets a user by name. */ + getUser: { + name: "GetUser", + requestType: GetUserRequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** GetUserByUsername gets a user by username. */ + getUserByUsername: { + name: "GetUserByUsername", + requestType: GetUserByUsernameRequest, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([8, 117, 115, 101, 114, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 18, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115, + 58, + 117, + 115, + 101, + 114, + 110, + 97, + 109, + 101 + ]) + ] + } + } + }, + /** GetUserAvatarBinary gets the avatar of a user. */ + getUserAvatarBinary: { + name: "GetUserAvatarBinary", + requestType: GetUserAvatarBinaryRequest2, + requestStream: false, + responseType: HttpBody2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 29, + 18, + 27, + 47, + 102, + 105, + 108, + 101, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 118, + 97, + 116, + 97, + 114 + ]) + ] + } + } + }, + /** CreateUser creates a new user. */ + createUser: { + name: "CreateUser", + requestType: CreateUserRequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 117, 115, 101, 114])], + 578365826: [ + new Uint8Array([ + 21, + 58, + 4, + 117, + 115, + 101, + 114, + 34, + 13, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115 + ]) + ] + } + } + }, + /** UpdateUser updates a user. */ + updateUser: { + name: "UpdateUser", + requestType: UpdateUserRequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([16, 117, 115, 101, 114, 44, 117, 112, 100, 97, 116, 101, 95, 109, 97, 115, 107])], + 578365826: [ + new Uint8Array([ + 35, + 58, + 4, + 117, + 115, + 101, + 114, + 50, + 27, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 117, + 115, + 101, + 114, + 46, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** DeleteUser deletes a user. */ + deleteUser: { + name: "DeleteUser", + requestType: DeleteUserRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 24, + 42, + 22, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125 + ]) + ] + } + } + }, + /** ListAllUserStats returns all user stats. */ + listAllUserStats: { + name: "ListAllUserStats", + requestType: ListAllUserStatsRequest, + requestStream: false, + responseType: ListAllUserStatsResponse, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 23, + 34, + 21, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 117, + 115, + 101, + 114, + 115, + 47, + 45, + 47, + 115, + 116, + 97, + 116, + 115 + ]) + ] + } + } + }, + /** GetUserStats returns the stats of a user. */ + getUserStats: { + name: "GetUserStats", + requestType: GetUserStatsRequest, + requestStream: false, + responseType: UserStats, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 30, + 18, + 28, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 116, + 97, + 116, + 115 + ]) + ] + } + } + }, + /** GetUserSetting gets the setting of a user. */ + getUserSetting: { + name: "GetUserSetting", + requestType: GetUserSettingRequest2, + requestStream: false, + responseType: UserSetting2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 32, + 18, + 30, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 101, + 116, + 116, + 105, + 110, + 103 + ]) + ] + } + } + }, + /** UpdateUserSetting updates the setting of a user. */ + updateUserSetting: { + name: "UpdateUserSetting", + requestType: UpdateUserSettingRequest2, + requestStream: false, + responseType: UserSetting2, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 19, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107 + ]) + ], + 578365826: [ + new Uint8Array([ + 49, + 58, + 7, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 50, + 38, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 46, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 47, + 115, + 101, + 116, + 116, + 105, + 110, + 103, + 125 + ]) + ] + } + } + }, + /** ListUserAccessTokens returns a list of access tokens for a user. */ + listUserAccessTokens: { + name: "ListUserAccessTokens", + requestType: ListUserAccessTokensRequest2, + requestStream: false, + responseType: ListUserAccessTokensResponse2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 38, + 18, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115 + ]) + ] + } + } + }, + /** CreateUserAccessToken creates a new access token for a user. */ + createUserAccessToken: { + name: "CreateUserAccessToken", + requestType: CreateUserAccessTokenRequest2, + requestStream: false, + responseType: UserAccessToken2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([4, 110, 97, 109, 101])], + 578365826: [ + new Uint8Array([ + 41, + 58, + 1, + 42, + 34, + 36, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115 + ]) + ] + } + } + }, + /** DeleteUserAccessToken deletes an access token for a user. */ + deleteUserAccessToken: { + name: "DeleteUserAccessToken", + requestType: DeleteUserAccessTokenRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([17, 110, 97, 109, 101, 44, 97, 99, 99, 101, 115, 115, 95, 116, 111, 107, 101, 110])], + 578365826: [ + new Uint8Array([ + 53, + 42, + 51, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 110, + 97, + 109, + 101, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 115, + 47, + 123, + 97, + 99, + 99, + 101, + 115, + 115, + 95, + 116, + 111, + 107, + 101, + 110, + 125 + ]) + ] + } + } + }, + /** ListShortcuts returns a list of shortcuts for a user. */ + listShortcuts: { + name: "ListShortcuts", + requestType: ListShortcutsRequest, + requestStream: false, + responseType: ListShortcutsResponse, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([6, 112, 97, 114, 101, 110, 116])], + 578365826: [ + new Uint8Array([ + 36, + 18, + 34, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 115 + ]) + ] + } + } + }, + /** CreateShortcut creates a new shortcut for a user. */ + createShortcut: { + name: "CreateShortcut", + requestType: CreateShortcutRequest, + requestStream: false, + responseType: Shortcut, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([15, 112, 97, 114, 101, 110, 116, 44, 115, 104, 111, 114, 116, 99, 117, 116])], + 578365826: [ + new Uint8Array([ + 46, + 58, + 8, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 34, + 34, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 115 + ]) + ] + } + } + }, + /** UpdateShortcut updates a shortcut for a user. */ + updateShortcut: { + name: "UpdateShortcut", + requestType: UpdateShortcutRequest, + requestStream: false, + responseType: Shortcut, + responseStream: false, + options: { + _unknownFields: { + 8410: [ + new Uint8Array([ + 27, + 112, + 97, + 114, + 101, + 110, + 116, + 44, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 44, + 117, + 112, + 100, + 97, + 116, + 101, + 95, + 109, + 97, + 115, + 107 + ]) + ], + 578365826: [ + new Uint8Array([ + 60, + 58, + 8, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 50, + 48, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 115, + 47, + 123, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 46, + 105, + 100, + 125 + ]) + ] + } + } + }, + /** DeleteShortcut deletes a shortcut for a user. */ + deleteShortcut: { + name: "DeleteShortcut", + requestType: DeleteShortcutRequest, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 8410: [new Uint8Array([9, 112, 97, 114, 101, 110, 116, 44, 105, 100])], + 578365826: [ + new Uint8Array([ + 41, + 42, + 39, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 123, + 112, + 97, + 114, + 101, + 110, + 116, + 61, + 117, + 115, + 101, + 114, + 115, + 47, + 42, + 125, + 47, + 115, + 104, + 111, + 114, + 116, + 99, + 117, + 116, + 115, + 47, + 123, + 105, + 100, + 125 + ]) + ] + } + } + } + } +}; +function toTimestamp6(date) { + const seconds = Math.trunc(date.getTime() / 1e3); + const nanos = date.getTime() % 1e3 * 1e6; + return { seconds, nanos }; +} +function fromTimestamp6(t) { + let millis = (t.seconds || 0) * 1e3; + millis += (t.nanos || 0) / 1e6; + return new globalThis.Date(millis); +} + +// src/api/memos-proto-v0.24.0/gen/api/v1/auth_service.ts +function createBaseGetAuthStatusRequest2() { + return {}; +} +var GetAuthStatusRequest2 = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseGetAuthStatusRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return GetAuthStatusRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseGetAuthStatusRequest2(); + return message; + } +}; +function createBaseSignInRequest2() { + return { username: "", password: "", neverExpire: false }; +} +var SignInRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + if (message.password !== "") { + writer.uint32(18).string(message.password); + } + if (message.neverExpire !== false) { + writer.uint32(24).bool(message.neverExpire); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignInRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.username = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.password = reader.string(); + continue; + } + case 3: { + if (tag !== 24) { + break; + } + message.neverExpire = reader.bool(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignInRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseSignInRequest2(); + message.username = (_a = object.username) != null ? _a : ""; + message.password = (_b = object.password) != null ? _b : ""; + message.neverExpire = (_c = object.neverExpire) != null ? _c : false; + return message; + } +}; +function createBaseSignInWithSSORequest2() { + return { idpId: 0, code: "", redirectUri: "" }; +} +var SignInWithSSORequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.idpId !== 0) { + writer.uint32(8).int32(message.idpId); + } + if (message.code !== "") { + writer.uint32(18).string(message.code); + } + if (message.redirectUri !== "") { + writer.uint32(26).string(message.redirectUri); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignInWithSSORequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 8) { + break; + } + message.idpId = reader.int32(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.code = reader.string(); + continue; + } + case 3: { + if (tag !== 26) { + break; + } + message.redirectUri = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignInWithSSORequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b, _c; + const message = createBaseSignInWithSSORequest2(); + message.idpId = (_a = object.idpId) != null ? _a : 0; + message.code = (_b = object.code) != null ? _b : ""; + message.redirectUri = (_c = object.redirectUri) != null ? _c : ""; + return message; + } +}; +function createBaseSignUpRequest2() { + return { username: "", password: "" }; +} +var SignUpRequest2 = { + encode(message, writer = new BinaryWriter()) { + if (message.username !== "") { + writer.uint32(10).string(message.username); + } + if (message.password !== "") { + writer.uint32(18).string(message.password); + } + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignUpRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + if (tag !== 10) { + break; + } + message.username = reader.string(); + continue; + } + case 2: { + if (tag !== 18) { + break; + } + message.password = reader.string(); + continue; + } + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignUpRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(object) { + var _a, _b; + const message = createBaseSignUpRequest2(); + message.username = (_a = object.username) != null ? _a : ""; + message.password = (_b = object.password) != null ? _b : ""; + return message; + } +}; +function createBaseSignOutRequest2() { + return {}; +} +var SignOutRequest2 = { + encode(_, writer = new BinaryWriter()) { + return writer; + }, + decode(input, length) { + const reader = input instanceof BinaryReader ? input : new BinaryReader(input); + let end = length === void 0 ? reader.len : reader.pos + length; + const message = createBaseSignOutRequest2(); + while (reader.pos < end) { + const tag = reader.uint32(); + switch (tag >>> 3) { + } + if ((tag & 7) === 4 || tag === 0) { + break; + } + reader.skip(tag & 7); + } + return message; + }, + create(base) { + return SignOutRequest2.fromPartial(base != null ? base : {}); + }, + fromPartial(_) { + const message = createBaseSignOutRequest2(); + return message; + } +}; +var AuthServiceDefinition2 = { + name: "AuthService", + fullName: "memos.api.v1.AuthService", + methods: { + /** GetAuthStatus returns the current auth status of the user. */ + getAuthStatus: { + name: "GetAuthStatus", + requestType: GetAuthStatusRequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 116, + 97, + 116, + 117, + 115 + ]) + ] + } + } + }, + /** SignIn signs in the user with the given username and password. */ + signIn: { + name: "SignIn", + requestType: SignInRequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 105, + 110 + ]) + ] + } + } + }, + /** SignInWithSSO signs in the user with the given SSO code. */ + signInWithSSO: { + name: "SignInWithSSO", + requestType: SignInWithSSORequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 25, + 34, + 23, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 105, + 110, + 47, + 115, + 115, + 111 + ]) + ] + } + } + }, + /** SignUp signs up the user with the given username and password. */ + signUp: { + name: "SignUp", + requestType: SignUpRequest2, + requestStream: false, + responseType: User2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 21, + 34, + 19, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 117, + 112 + ]) + ] + } + } + }, + /** SignOut signs out the user. */ + signOut: { + name: "SignOut", + requestType: SignOutRequest2, + requestStream: false, + responseType: Empty2, + responseStream: false, + options: { + _unknownFields: { + 578365826: [ + new Uint8Array([ + 22, + 34, + 20, + 47, + 97, + 112, + 105, + 47, + 118, + 49, + 47, + 97, + 117, + 116, + 104, + 47, + 115, + 105, + 103, + 110, + 111, + 117, + 116 + ]) + ] + } + } + } + } +}; + +// src/api/memos-v0.24.0.ts +var MemoListPaginator2 = class { + constructor(memoCli) { + this.memoCli = memoCli; + } + listMemos(pageSize, pageToken, currentUser) { + return this.memoCli.listMemos({ + parent: currentUser.name, + pageSize, + pageToken + }); + } +}; +function new0240Clients(endpoint, token) { + const channel = (0, import_nice_grpc_web3.createChannel)( + endpoint, + (0, import_nice_grpc_web3.FetchTransport)({ credentials: "include" }) + ); + const clientFactory = (0, import_nice_grpc_web3.createClientFactory)().use(loggingMiddleware).use(bearerAuthMiddleware(token)); + return { + memoListPaginator: new MemoListPaginator2( + clientFactory.create(MemoServiceDefinition2, channel) + ), + resourceCli: clientFactory.create( + ResourceServiceDefinition2, + channel + ), + authCli: clientFactory.create( + AuthServiceDefinition2, + channel + ) + }; +} + +// src/services/DailyMemos/MemosVersionFactory.ts +var MemosAbstractFactory = class { + constructor(settings) { + this.settings = settings; + this.createMemosPaginator = (lastTime, filter) => { + return this.inner.createMemosPaginator(lastTime, filter); + }; + this.createResourceFetcher = () => { + return this.inner.createResourceFetcher(); + }; + if (this.settings.memosAPIVersion === "v0.22.0") { + this.inner = new MemosFactory0220(this.settings, new0220Clients); + return; + } + if (this.settings.memosAPIVersion === "v0.24.0") { + this.inner = new MemosFactory0220(this.settings, new0240Clients); + return; + } + this.inner = new MemosFactory0191(this.settings); + } +}; +var MemosFactory0191 = class { + constructor(settings) { + this.settings = settings; + this.createMemosPaginator = (lastTime, filter) => { + return new MemosPaginator0191(this.client, lastTime, filter); + }; + this.createResourceFetcher = () => { + return new MemosResourceFetcher0191(this.client); + }; + const apiUrl = this.settings.memosAPIURL.endsWith("/") ? this.settings.memosAPIURL.slice(0, -1) : this.settings.memosAPIURL; + this.client = new MemosClient0191(apiUrl, this.settings.memosAPIToken); + } +}; +var MemosFactory0220 = class { + constructor(settings, newClients) { + this.settings = settings; + this.createMemosPaginator = (lastTime, filter) => { + return new MemosPaginator0220( + this.memoListPaginator, + this.authCli, + lastTime, + filter + ); + }; + this.createResourceFetcher = () => { + return new MemosResourceFetcher0220(this.resourceCli); + }; + const apiUrl = this.settings.memosAPIURL.endsWith("/") ? this.settings.memosAPIURL.slice(0, -1) : this.settings.memosAPIURL; + const { memoListPaginator, resourceCli, authCli } = newClients( + apiUrl, + this.settings.memosAPIToken + ); + this.memoListPaginator = memoListPaginator; + this.resourceCli = resourceCli; + this.authCli = authCli; + } +}; + +// src/services/DailyMemos/DailyMemos.ts +var DailyNoteManager = class { + constructor() { + this.getOrCreateDailyNote = async (date) => { + const dailyNote = (0, import_obsidian_daily_notes_interface.getDailyNote)(date, this.allDailyNotes); + if (!dailyNote) { + info(`Failed to find daily note for ${date}, creating...`); + const newDailyNote = await (0, import_obsidian_daily_notes_interface.createDailyNote)(date); + this.allDailyNotes = (0, import_obsidian_daily_notes_interface.getAllDailyNotes)(); + return newDailyNote; + } + return dailyNote; + }; + this.reload = () => { + this.allDailyNotes = (0, import_obsidian_daily_notes_interface.getAllDailyNotes)(); + }; + this.allDailyNotes = (0, import_obsidian_daily_notes_interface.getAllDailyNotes)(); + } +}; +var DailyMemos = class { + constructor(app, settings) { + /** + * Force syncing daily memos, ignore the lastTime. + * After syncing, save the lastTime to localStorage, and reload the memosPaginator. + */ + this.forceSync = async () => { + info("Force syncing daily memos..."); + const forcePaginator = this.memosFactory.createMemosPaginator(""); + this.downloadResource(); + this.insertDailyMemos(forcePaginator); + this.memosPaginator = forcePaginator; + }; + /** + * Sync daily memos, only sync the memos after the lastTime. + * After syncing, save the lastTime to localStorage. + */ + this.sync = async () => { + info("Syncing daily memos..."); + this.downloadResource(); + this.insertDailyMemos(this.memosPaginator); + }; + /** + * Sync daily memos for the current daily note file. + * If the current file is not a daily note, do nothing. + */ + this.syncForCurrentFile = async () => { + var _a; + const view = this.app.workspace.getActiveViewOfType(import_obsidian3.MarkdownView); + if (!view) { + debug("No active view found."); + return; + } + if (!(view.file instanceof import_obsidian3.TFile)) { + debug("Active view is not a file."); + return; + } + const file = view.file; + const currentDate = (_a = (0, import_obsidian_daily_notes_interface.getDateFromFile)(file, "day")) == null ? void 0 : _a.format("YYYY-MM-DD"); + if (!currentDate) { + debug("Failed to get date from file."); + return; + } + const currentMomentMmemosPaginator = this.memosFactory.createMemosPaginator( + "", + (date) => date === currentDate + ); + this.downloadResource(); + this.insertDailyMemos(currentMomentMmemosPaginator); + }; + /** + * Download resources to attachments folder. + */ + this.downloadResource = async () => { + const { origin: origin2 } = new URL(this.settings.memosAPIURL); + const resourceList = await this.memosResourceFetcher.listResources(); + if (!resourceList) { + debug(`No resources found: ${origin2}/resource`); + return; + } + const folder = this.settings.attachmentFolder; + if (!this.app.vault.getFolderByPath(folder)) { + info(`Creating folder: ${folder}`); + await this.app.vault.createFolder(folder); + } + await Promise.all( + resourceList.map(async (resource) => { + if (resource.externalLink) { + debug( + `External resource, skip download: ${resource.externalLink}` + ); + return; + } + const resourcePath = (0, import_obsidian3.normalizePath)( + `${folder}/${generateResourceName(resource)}` + ); + const isResourceExists = await this.app.vault.adapter.exists( + resourcePath + ); + if (isResourceExists) { + debug( + `Resource exists, skip download: ${resourcePath}` + ); + return; + } + const data = await this.memosResourceFetcher.fetchResource( + resource + ); + if (!data) { + warn(`Failed to fetch resource: ${resource}`); + return; + } + debug(`Download resource: ${resourcePath}`); + await this.app.vault.adapter.writeBinary(resourcePath, data); + }) + ); + }; + this.insertDailyMemos = async (memosPaginator) => { + const dailyNoteManager = new DailyNoteManager(); + const dailyNoteModifier = new DailyNoteModifier( + this.settings.dailyMemosHeader + ); + const lastTime = await memosPaginator.foreach( + async ([today, dailyMemosForToday]) => { + const momentDay = window.moment(today); + const targetFile = await dailyNoteManager.getOrCreateDailyNote( + momentDay + ); + await this.app.vault.process(targetFile, (originFileContent) => { + const modifiedFileContent = dailyNoteModifier.modifyDailyNote( + originFileContent, + today, + dailyMemosForToday + ); + if (!modifiedFileContent) { + return originFileContent; + } + return modifiedFileContent; + }); + } + ); + info(`Synced daily memos, lastTime: ${lastTime}`); + window.localStorage.setItem(this.localKey, lastTime); + }; + if (!settings.memosAPIURL) { + error( + "Please set the usememosAPI setting in the plugin settings." + ); + return; + } + this.app = app; + this.settings = settings; + this.memosFactory = new MemosAbstractFactory(this.settings); + this.localKey = `obsidian-memos-sync-last-time-${this.settings.memosAPIToken}`; + const lastTime = window.localStorage.getItem(this.localKey) || ""; + this.memosPaginator = this.memosFactory.createMemosPaginator(lastTime); + this.memosResourceFetcher = this.memosFactory.createResourceFetcher(); + } +}; + +// src/main.ts +var import_obsidian_daily_notes_interface2 = __toESM(require_main()); +var MEMOS_SYNC_DEFAULT_SETTINGS = { + dailyMemosHeader: "Memos", + memosAPIVersion: "v0.19.1", + memosAPIURL: "https://usememos.com", + memosAPIToken: "", + attachmentFolder: "Attachments" +}; +var MemosSyncPlugin = class extends import_obsidian4.Plugin { + constructor() { + super(...arguments); + this.loadSettings = async () => { + this.settings = Object.assign( + {}, + MEMOS_SYNC_DEFAULT_SETTINGS, + await this.loadData() + ); + }; + this.saveSettings = async () => { + await this.saveData(this.settings); + this.loadDailyMemos(); + }; + this.loadDailyMemos = async () => { + this.dailyMemos = new DailyMemos(this.app, this.settings); + this.addCommand({ + id: "memos-sync-daily-memos", + name: "Sync daily memos", + callback: this.dailyMemos.sync + }); + this.addCommand({ + id: "memos-force-sync-daily-memos", + name: "Force sync daily memos", + callback: this.dailyMemos.forceSync + }); + this.addCommand({ + id: "memos-sync-force-current-daily-memos", + name: "Force sync current daily memos", + callback: this.dailyMemos.syncForCurrentFile + }); + }; + } + async onload() { + await this.loadSettings(); + await this.loadDailyMemos(); + this.addSettingTab(new MemosSyncSettingTab(this.app, this)); + } + onunload() { + } +}; +var MemosSyncSettingTab = class extends import_obsidian4.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.saveSettings = (newSettings) => { + this.plugin.settings = { + ...this.plugin.settings, + ...newSettings + }; + this.plugin.saveSettings(); + }; + this.plugin = plugin; + } + display() { + this.containerEl.empty(); + const dailyNotesEnabled = (0, import_obsidian_daily_notes_interface2.appHasDailyNotesPluginLoaded)(); + if (!dailyNotesEnabled) { + this.containerEl.createEl("h3", { + text: "Attention: Daily Notes is not enabled.", + attr: { + style: "color: red" + } + }); + this.containerEl.createEl("p", { + text: "Daily Notes feature is not enabled.", + attr: { + style: "color: red" + } + }); + this.containerEl.createEl("p", { + text: "Please enable the official Daily Notes plugin or daily notes feature in Periodic Notes plugin. Otherwise, this plugin will not work properly.", + attr: { + style: "color: red" + } + }); + } + new import_obsidian4.Setting(this.containerEl).setName("Daily memos header").setDesc("The header for the daily memos section.").addText((textfield) => { + textfield.setPlaceholder( + MEMOS_SYNC_DEFAULT_SETTINGS.dailyMemosHeader + ); + textfield.setValue(this.plugin.settings.dailyMemosHeader); + textfield.onChange((value) => { + this.saveSettings({ + dailyMemosHeader: value + }); + }); + }); + new import_obsidian4.Setting(this.containerEl).setName("Attachment folder").setDesc("The folder for attachments.").addText((textfield) => { + textfield.setPlaceholder( + MEMOS_SYNC_DEFAULT_SETTINGS.attachmentFolder + ); + textfield.setValue(this.plugin.settings.attachmentFolder); + textfield.onChange((value) => { + this.saveSettings({ + attachmentFolder: value + }); + }); + }); + new import_obsidian4.Setting(this.containerEl).setName("Memos API").setHeading(); + new import_obsidian4.Setting(this.containerEl).setName("Memos API version").setDesc("Which version your Memos server.").addDropdown((dropDown) => { + dropDown.addOptions({ + "v0.19.1": "before v0.21.x", + "v0.22.0": "v0.22.x ~ v0.23.x", + "v0.24.0": "after v0.24.x" + }); + dropDown.setValue(this.plugin.settings.memosAPIVersion); + dropDown.onChange((value) => { + this.saveSettings({ + memosAPIVersion: value + }); + }); + }); + new import_obsidian4.Setting(this.containerEl).setName("Memos API URL").setDesc("Memos API URL, e.g. http://localhost:5230").addText((textfield) => { + textfield.setPlaceholder( + MEMOS_SYNC_DEFAULT_SETTINGS.memosAPIURL + ); + textfield.setValue(this.plugin.settings.memosAPIURL); + textfield.onChange((value) => { + this.saveSettings({ + memosAPIURL: value + }); + }); + }); + new import_obsidian4.Setting(this.containerEl).setName("Memos API token").setDesc("Memos API token.").addText((textfield) => { + textfield.setPlaceholder( + MEMOS_SYNC_DEFAULT_SETTINGS.memosAPIToken + ); + textfield.setValue(this.plugin.settings.memosAPIToken); + textfield.onChange((value) => { + this.saveSettings({ + memosAPIToken: value + }); + }); + }); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/memos-sync/manifest.json b/.obsidian/plugins/memos-sync/manifest.json new file mode 100644 index 0000000..7bf183f --- /dev/null +++ b/.obsidian/plugins/memos-sync/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "memos-sync", + "name": "Memos Sync", + "version": "0.5.2", + "minAppVersion": "1.5.12", + "description": "Syncing memos from a [Memos](https://github.com/usememos/memos) server to your daily note. Fully compatible with official Daily Notes plugin, Calendar plugin and Periodic Notes plugin.", + "author": "RyoJerryYu", + "authorUrl": "https://github.com/RyoJerryYu", + "isDesktopOnly": true +} \ No newline at end of file diff --git a/.obsidian/plugins/memos-sync/styles.css b/.obsidian/plugins/memos-sync/styles.css new file mode 100644 index 0000000..71cc60f --- /dev/null +++ b/.obsidian/plugins/memos-sync/styles.css @@ -0,0 +1,8 @@ +/* + +This CSS file will be included with your plugin, and +available in the app when your plugin is enabled. + +If your plugin does not need CSS, delete this file. + +*/ diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 497f00f..f66a311 100755 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,39 +4,24 @@ "type": "split", "children": [ { - "id": "24a6b53bf2557798", + "id": "d21dc296bccb4add", "type": "tabs", "children": [ { - "id": "def54ecce4ded17c", + "id": "0ed7e2b47382c9c6", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "100-project/AI/Manus/Manus 简介使用.md", + "file": "000-inbox/clippings/2023/03/《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "Manus 简介使用" - } - }, - { - "id": "10fa2a0fe62c3929", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "conflict-files-obsidian-git.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "conflict-files-obsidian-git" + "title": "《软件供应商手册:SBOM的生成和提供》解读 - FreeBuf网络安全行业门户" } } - ], - "currentTab": 1 + ] } ], "direction": "vertical" @@ -269,8 +254,9 @@ "smart-connections:Smart Connections: Open random connection": false } }, - "active": "10fa2a0fe62c3929", + "active": "0ed7e2b47382c9c6", "lastOpenFiles": [ + "000-inbox/Memos", "100-project/AI/Manus/Manus 简介使用.md", "conflict-files-obsidian-git.md", "tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc", @@ -306,7 +292,6 @@ "400-archive/_duplicates/System Architec/架构目标(Architecture Goals).md", "400-archive/_duplicates/System Architec/决策方法.md", "400-archive/_duplicates/System Architec/产出(Deliverables).md", - "400-archive/_duplicates/System Architec/_README.md", "300-resources/Personal Knowledge Management/arc42/images/arc42-logo.png", "300-resources/Personal Knowledge Management/arc42/images/08-Crosscutting-Concepts-Structure-EN.png", "300-resources/Personal Knowledge Management/arc42/images/05_building_blocks-EN.png", diff --git a/.smart-env/event_logs/event_logs.ajson b/.smart-env/event_logs/event_logs.ajson index 41908a1..b61f417 100644 --- a/.smart-env/event_logs/event_logs.ajson +++ b/.smart-env/event_logs/event_logs.ajson @@ -1,58 +1,35 @@ -"event_logs:settings:changed": {"key":"settings:changed","ct":11,"first_at":1766986874718,"last_at":1766986877791,"class_name":"EventLog"}, -"event_logs:event_log:first": {"key":"event_log:first","ct":3,"first_at":1767163587383,"last_at":1767163587458,"class_name":"EventLog"}, -"event_logs:source:initial_scan_started": {"key":"source:initial_scan_started","ct":1,"first_at":1767163587383,"last_at":1767163587383,"class_name":"EventLog"}, -"event_logs:source:initial_scan_completed": {"key":"source:initial_scan_completed","ct":1,"first_at":1767163587457,"last_at":1767163587457,"class_name":"EventLog"}, -"event_logs:collection:load_started": {"key":"collection:load_started","ct":9,"first_at":1766986877733,"last_at":1766994014452,"class_name":"EventLog"}, -"event_logs:collection:load_completed": {"key":"collection:load_completed","ct":5,"first_at":1766986877736,"last_at":1766994016401,"class_name":"EventLog"}, -"event_logs:collection:load_halted": {"key":"collection:load_halted","ct":5,"first_at":1766986877737,"last_at":1766994014446,"class_name":"EventLog"}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1215,"first_at":1766986877786,"last_at":1766998685630,"class_name":"EventLog"}, -"event_logs:model:changed": {"key":"model:changed","ct":1,"first_at":1766986877791,"last_at":1766986877791,"class_name":"EventLog"}, -"event_logs:embed_model:load_failed": {"key":"embed_model:load_failed","ct":2,"first_at":1766986882626,"last_at":1766994021678,"class_name":"EventLog"}, -"event_logs:sources:import_completed": {"key":"sources:import_completed","ct":2,"first_at":1766986882852,"last_at":1766994021786,"class_name":"EventLog"}, -"event_logs:blocks:cleaned": {"key":"blocks:cleaned","ct":2,"first_at":1766986882899,"last_at":1766994021801,"class_name":"EventLog"}, -"event_logs:connections:opened": {"key":"connections:opened","ct":13,"first_at":1766986884102,"last_at":1766995048933,"class_name":"EventLog"}, -"event_logs:sources:created": {"key":"sources:created","ct":357,"first_at":1766987075389,"last_at":1766998533332,"class_name":"EventLog","event_sources":{"obsidian:vault.create":357}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":609,"first_at":1766987077711,"last_at":1766998674635,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":136,"obsidian:workspace.editor-change":473}}, -"event_logs:sources:deleted": {"key":"sources:deleted","ct":346,"first_at":1766987089766,"last_at":1766993568315,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":346}}, -"event_logs:sources:opened": {"key":"sources:opened","ct":41,"first_at":1766987105710,"last_at":1766998610941,"class_name":"EventLog","event_sources":{"active-leaf-change":41}}, -"event_logs:sources:renamed": {"key":"sources:renamed","ct":1,"first_at":1766998541874,"last_at":1766998541874,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":1}}, -"event_logs:event_log:first": {"key":"event_log:first","ct":3,"first_at":1767163587383,"last_at":1767163587458,"class_name":"EventLog"}, +"event_logs:settings:changed": {"key":"settings:changed","ct":8,"first_at":1767492337372,"last_at":1767492337447,"class_name":"EventLog"}, +"event_logs:event_log:first": {"key":"event_log:first","ct":4,"first_at":1767492337372,"last_at":1767492337445,"class_name":"EventLog"}, +"event_logs:source:initial_scan_started": {"key":"source:initial_scan_started","ct":1,"first_at":1767492337372,"last_at":1767492337372,"class_name":"EventLog"}, +"event_logs:source:initial_scan_completed": {"key":"source:initial_scan_completed","ct":1,"first_at":1767492337445,"last_at":1767492337445,"class_name":"EventLog"}, "event_logs:collection:load_started": {"key":"collection:load_started","ct":13,"first_at":1766986877733,"last_at":1767163590474,"class_name":"EventLog"}, "event_logs:collection:load_completed": {"key":"collection:load_completed","ct":8,"first_at":1766986877736,"last_at":1767163590699,"class_name":"EventLog"}, "event_logs:collection:load_halted": {"key":"collection:load_halted","ct":7,"first_at":1766986877737,"last_at":1767163590473,"class_name":"EventLog"}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1664,"first_at":1766986877786,"last_at":1767163590791,"class_name":"EventLog"}, +"event_logs:sources:imported": {"key":"sources:imported","ct":1882,"first_at":1766986877786,"last_at":1767170791265,"class_name":"EventLog"}, +"event_logs:model:changed": {"key":"model:changed","ct":1,"first_at":1766986877791,"last_at":1766986877791,"class_name":"EventLog"}, "event_logs:embed_model:load_failed": {"key":"embed_model:load_failed","ct":3,"first_at":1766986882626,"last_at":1767163592342,"class_name":"EventLog"}, "event_logs:sources:import_completed": {"key":"sources:import_completed","ct":3,"first_at":1766986882852,"last_at":1767163592384,"class_name":"EventLog"}, "event_logs:blocks:cleaned": {"key":"blocks:cleaned","ct":3,"first_at":1766986882899,"last_at":1767163592386,"class_name":"EventLog"}, -"event_logs:sources:created": {"key":"sources:created","ct":358,"first_at":1766987075389,"last_at":1767163605118,"class_name":"EventLog","event_sources":{"obsidian:vault.create":358}}, -"event_logs:sources:renamed": {"key":"sources:renamed","ct":2,"first_at":1766998541874,"last_at":1767163608996,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":2}}, -"event_logs:sources:created": {"key":"sources:created","ct":359,"first_at":1766987075389,"last_at":1767163612741,"class_name":"EventLog","event_sources":{"obsidian:vault.create":359}}, -"event_logs:sources:opened": {"key":"sources:opened","ct":42,"first_at":1766987105710,"last_at":1767163612778,"class_name":"EventLog","event_sources":{"active-leaf-change":42}}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1665,"first_at":1766986877786,"last_at":1767163625908,"class_name":"EventLog"}, -"event_logs:sources:modified": {"key":"sources:modified","ct":611,"first_at":1766987077711,"last_at":1767163633724,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":136,"obsidian:workspace.editor-change":475}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":612,"first_at":1766987077711,"last_at":1767163635708,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":137,"obsidian:workspace.editor-change":475}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":629,"first_at":1766987077711,"last_at":1767163645018,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":137,"obsidian:workspace.editor-change":492}}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1666,"first_at":1766986877786,"last_at":1767163646711,"class_name":"EventLog"}, -"event_logs:sources:modified": {"key":"sources:modified","ct":639,"first_at":1766987077711,"last_at":1767163648423,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":139,"obsidian:workspace.editor-change":500}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":641,"first_at":1766987077711,"last_at":1767163651281,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":139,"obsidian:workspace.editor-change":502}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":654,"first_at":1766987077711,"last_at":1767163655475,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":140,"obsidian:workspace.editor-change":514}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":655,"first_at":1766987077711,"last_at":1767163657373,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":141,"obsidian:workspace.editor-change":514}}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1667,"first_at":1766986877786,"last_at":1767163659797,"class_name":"EventLog"}, -"event_logs:sources:modified": {"key":"sources:modified","ct":669,"first_at":1766987077711,"last_at":1767163661635,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":142,"obsidian:workspace.editor-change":527}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":679,"first_at":1766987077711,"last_at":1767163664338,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":143,"obsidian:workspace.editor-change":536}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":680,"first_at":1766987077711,"last_at":1767163665518,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":144,"obsidian:workspace.editor-change":536}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":682,"first_at":1766987077711,"last_at":1767163669779,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":144,"obsidian:workspace.editor-change":538}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":688,"first_at":1766987077711,"last_at":1767163671707,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":145,"obsidian:workspace.editor-change":543}}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1668,"first_at":1766986877786,"last_at":1767163673215,"class_name":"EventLog"}, -"event_logs:sources:modified": {"key":"sources:modified","ct":693,"first_at":1766987077711,"last_at":1767163674582,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":145,"obsidian:workspace.editor-change":548}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":695,"first_at":1766987077711,"last_at":1767163675964,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":146,"obsidian:workspace.editor-change":549}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":696,"first_at":1766987077711,"last_at":1767163677967,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":147,"obsidian:workspace.editor-change":549}}, -"event_logs:sources:renamed": {"key":"sources:renamed","ct":3,"first_at":1766998541874,"last_at":1767163684484,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":3}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":698,"first_at":1766987077711,"last_at":1767163687474,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":147,"obsidian:workspace.editor-change":551}}, -"event_logs:sources:modified": {"key":"sources:modified","ct":699,"first_at":1766987077711,"last_at":1767163688850,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":148,"obsidian:workspace.editor-change":551}}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1670,"first_at":1766986877786,"last_at":1767163697507,"class_name":"EventLog"}, +"event_logs:connections:opened": {"key":"connections:opened","ct":13,"first_at":1766986884102,"last_at":1766995048933,"class_name":"EventLog"}, "event_logs:sources:created": {"key":"sources:created","ct":598,"first_at":1766987075389,"last_at":1767170770210,"class_name":"EventLog","event_sources":{"obsidian:vault.create":598}}, "event_logs:sources:modified": {"key":"sources:modified","ct":722,"first_at":1766987077711,"last_at":1767170769899,"class_name":"EventLog","event_sources":{"obsidian:vault.modify":171,"obsidian:workspace.editor-change":551}}, -"event_logs:sources:deleted": {"key":"sources:deleted","ct":356,"first_at":1766987089766,"last_at":1767170771066,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":356}}, +"event_logs:sources:deleted": {"key":"sources:deleted","ct":357,"first_at":1766987089766,"last_at":1767170795682,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":357}}, "event_logs:sources:opened": {"key":"sources:opened","ct":43,"first_at":1766987105710,"last_at":1767170772447,"class_name":"EventLog","event_sources":{"active-leaf-change":43}}, -"event_logs:sources:imported": {"key":"sources:imported","ct":1882,"first_at":1766986877786,"last_at":1767170791265,"class_name":"EventLog"}, \ No newline at end of file +"event_logs:sources:renamed": {"key":"sources:renamed","ct":3,"first_at":1766998541874,"last_at":1767163684484,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":3}}, +"event_logs:event_log:first": {"key":"event_log:first","ct":4,"first_at":1767492337372,"last_at":1767492337445,"class_name":"EventLog"}, +"event_logs:collection:load_started": {"key":"collection:load_started","ct":13,"first_at":1766986877733,"last_at":1767163590474,"class_name":"EventLog"}, +"event_logs:settings:changed": {"key":"settings:changed","ct":11,"first_at":1767492337372,"last_at":1767492342665,"class_name":"EventLog"}, +"event_logs:collection:load_started": {"key":"collection:load_started","ct":17,"first_at":1766986877733,"last_at":1767492342193,"class_name":"EventLog"}, +"event_logs:collection:load_completed": {"key":"collection:load_completed","ct":10,"first_at":1766986877736,"last_at":1767492342660,"class_name":"EventLog"}, +"event_logs:collection:load_halted": {"key":"collection:load_halted","ct":10,"first_at":1766986877737,"last_at":1767492342193,"class_name":"EventLog"}, +"event_logs:sources:imported": {"key":"sources:imported","ct":2512,"first_at":1766986877786,"last_at":1767492345363,"class_name":"EventLog"}, +"event_logs:model:changed": {"key":"model:changed","ct":2,"first_at":1766986877791,"last_at":1767492342665,"class_name":"EventLog"}, +"event_logs:embed_model:load_failed": {"key":"embed_model:load_failed","ct":4,"first_at":1766986882626,"last_at":1767492347020,"class_name":"EventLog"}, +"event_logs:sources:import_completed": {"key":"sources:import_completed","ct":4,"first_at":1766986882852,"last_at":1767492347250,"class_name":"EventLog"}, +"event_logs:blocks:cleaned": {"key":"blocks:cleaned","ct":4,"first_at":1766986882899,"last_at":1767492347303,"class_name":"EventLog"}, +"event_logs:event_log:first": {"key":"event_log:first","ct":5,"first_at":1767492337372,"last_at":1767492351211,"class_name":"EventLog"}, +"event_logs:plugin:new_version_available": {"key":"plugin:new_version_available","ct":1,"first_at":1767492351211,"last_at":1767492351211,"class_name":"EventLog"}, +"event_logs:sources:created": {"key":"sources:created","ct":599,"first_at":1766987075389,"last_at":1767492820300,"class_name":"EventLog","event_sources":{"obsidian:vault.create":599}}, +"event_logs:sources:renamed": {"key":"sources:renamed","ct":4,"first_at":1766998541874,"last_at":1767492823208,"class_name":"EventLog","event_sources":{"obsidian:vault.rename":4}}, +"event_logs:sources:opened": {"key":"sources:opened","ct":44,"first_at":1766987105710,"last_at":1767492830312,"class_name":"EventLog","event_sources":{"active-leaf-change":44}}, +"event_logs:sources:deleted": {"key":"sources:deleted","ct":362,"first_at":1766987089766,"last_at":1767493491926,"class_name":"EventLog","event_sources":{"obsidian:vault.delete":362}}, \ No newline at end of file diff --git a/ReadItLater Inbox/MiniCPM-oREADME_zh.md at main · OpenBMBMiniCPM-o.md b/ReadItLater Inbox/MiniCPM-oREADME_zh.md at main · OpenBMBMiniCPM-o.md deleted file mode 100755 index 7b8dcca..0000000 --- a/ReadItLater Inbox/MiniCPM-oREADME_zh.md at main · OpenBMBMiniCPM-o.md +++ /dev/null @@ -1,1055 +0,0 @@ -[[ReadItLater]] [[Article]] - -# [MiniCPM-o/README_zh.md at main · OpenBMB/MiniCPM-o](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md) - -**MiniCPM-o** 是从 MiniCPM-V 升级的最新端侧多模态大模型系列。该系列模型可以以端到端方式,接受图像、视频、文本、音频作为输入,并生成高质量文本和语音输出。自2024年2月以来,我们以实现高性能和高效部署为目标,发布了6个版本的模型。目前系列中最值得关注的模型包括: - -- **MiniCPM-o 2.6**: 🔥🔥🔥 MiniCPM-o 系列的最新、性能最佳模型。总参数量 8B,**视觉、语音和多模态流式能力达到了 GPT-4o-202405 级别**,是开源社区中模态支持最丰富、性能最佳的模型之一。在新的语音模式中,MiniCPM-o 2.6 **支持可配置声音的中英双语语音对话,还具备情感/语速/风格控制、端到端声音克隆、角色扮演等进阶能力**。模型也进一步提升了 MiniCPM-V 2.6 的 **OCR、可信行为、多语言支持和视频理解等视觉能力**。基于其领先的视觉 token 密度,MiniCPM-V 2.6 成为了**首个支持在 iPad 等端侧设备上进行多模态实时流式交互**的多模态大模型。 - -- **MiniCPM-V 2.6**: MiniCPM-V 系列中性能最佳的模型。总参数量 8B,单图、多图和视频理解性能**超越了 GPT-4V**。它取得了优于 **GPT-4o mini、Gemini 1.5 Pro 和 Claude 3.5 Sonnet**等的单图理解表现,并成为了首个支持在 iPad 等端侧设备上进行实时视频理解的多模态大模型。 - - -## 更新日志 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97-) - -#### 📌 置顶 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#-%E7%BD%AE%E9%A1%B6) - -- \[2025.01.24\] 📢📢📢 MiniCPM-o 2.6 技术报告已发布! 欢迎点击[这里](https://openbmb.notion.site/MiniCPM-o-2-6-A-GPT-4o-Level-MLLM-for-Vision-Speech-and-Multimodal-Live-Streaming-on-Your-Phone-185ede1b7a558042b5d5e45e6b237da9)查看. - -- \[2025.01.23\] 💡💡💡 MiniCPM-o 2.6 现在已被北大团队开发的 [Align-Anything](https://github.com/PKU-Alignment/align-anything),一个用于对齐全模态大模型的框架集成,支持 DPO 和 SFT 在视觉和音频模态上的微调。欢迎试用! - -- \[2025.01.19\] 📢 **注意!** 我们正在努力将 MiniCPM-o 2.6 的支持合并到 llama.cpp、ollama、vLLM 的官方仓库,但还未完成。请大家暂时先使用我们提供的 fork 来进行部署:[llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpm-omni/examples/llava/README-minicpmo2.6.md)、[ollama](https://github.com/OpenBMB/ollama/blob/minicpm-v2.6/examples/minicpm-v2.6/README.md)、[vllm](https://github.com/OpenBMB/MiniCPM-o?tab=readme-ov-file#efficient-inference-with-llamacpp-ollama-vllm)。 **合并完成前,使用官方仓库可能会导致不可预期的问题**。 - -- \[2025.01.19\] ⭐️⭐️⭐️ MiniCPM-o 在 GitHub Trending 上登顶, Hugging Face Trending 上也达到了第二! - -- \[2025.01.17\] 我们更新了 MiniCPM-o 2.6 int4 量化版本的使用方式,解决了模型初始化的问题,欢迎点击[这里](https://huggingface.co/openbmb/MiniCPM-o-2_6-int4)试用! - -- \[2025.01.13\] 🔥🔥🔥 我们开源了 MiniCPM-o 2.6,该模型视觉、语音和多模态流式能力达到了 GPT-4o-202405 级别,进一步优化了 MiniCPM-V 2.6 的众多亮点能力,还支持了很多有趣的新功能。欢迎试用! - -- \[2024.08.17\] 🚀🚀🚀 llama.cpp [官方仓库](https://github.com/ggerganov/llama.cpp)正式支持 MiniCPM-V 2.6 啦!点击[这里](https://huggingface.co/openbmb/MiniCPM-V-2_6-gguf)查看各种大小的 GGUF 版本。 - -- \[2024.08.06\] 🔥🔥🔥 我们开源了 MiniCPM-V 2.6,该模型在单图、多图和视频理解方面取得了优于 GPT-4V 的表现。我们还进一步提升了 MiniCPM-Llama3-V 2.5 的多项亮点能力,并首次支持了 iPad 上的实时视频理解。欢迎试用! - -- \[2024.08.03\] MiniCPM-Llama3-V 2.5 技术报告已发布!欢迎点击[这里](https://arxiv.org/abs/2408.01800)查看。 - -- \[2024.05.23\] 🔥🔥🔥 MiniCPM-V 在 GitHub Trending 和 Hugging Face Trending 上登顶!MiniCPM-Llama3-V 2.5 Demo 被 Hugging Face 的 Gradio 官方账户推荐,欢迎点击[这里](https://huggingface.co/spaces/openbmb/MiniCPM-Llama3-V-2_5)体验! - - - -点击查看完整更新日志。 - -- \[2024.08.15\] MiniCPM-V 2.6 现在支持多图像 SFT。有关更多详细信息,请参阅[微调文档](https://github.com/OpenBMB/MiniCPM-V/tree/main/finetune) -- \[2024.08.14\] MiniCPM-V 2.6 现在可以通过 SWIFT 框架 [微调](https://github.com/modelscope/ms-swift/issues/1613) 了! -- \[2024.08.10\] 🚀🚀🚀 llama.cpp [官方仓库](https://github.com/ggerganov/llama.cpp)正式支持 MiniCPM-Llama3-V 2.5 啦!点击[这里](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf/tree/main)查看各种大小的 GGUF 版本。 -- \[2024.07.19\] MiniCPM-Llama3-V 2.5 现已支持[vLLM](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#vllm-%E9%83%A8%E7%BD%B2-) ! -- \[2024.06.03\] 现在,你可以利用多张低显存显卡(12G/16G)进行GPU串行推理。详情请参见该[文档](https://github.com/OpenBMB/MiniCPM-V/blob/main/docs/inference_on_multiple_gpus.md)配置。 -- \[2024.05.28\] 💫 我们现在支持 MiniCPM-Llama3-V 2.5 的 LoRA 微调,更多内存使用统计信息可以在[这里](https://github.com/OpenBMB/MiniCPM-V/tree/main/finetune#model-fine-tuning-memory-usage-statistics)找到。 -- \[2024.05.28\] 💥 MiniCPM-Llama3-V 2.5 现在在 llama.cpp 和 ollama 中完全支持其功能!**请拉取我们最新的 fork 来使用**:[llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpm-v2.5/examples/minicpmv/README.md) & [ollama](https://github.com/OpenBMB/ollama/tree/minicpm-v2.5/examples/minicpm-v2.5)。我们还发布了各种大小的 GGUF 版本,请点击[这里](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf/tree/main)查看。请注意,**目前官方仓库尚未支持 MiniCPM-Llama3-V 2.5**,我们也正积极推进将这些功能合并到 llama.cpp & ollama 官方仓库,敬请关注! -- \[2024.05.25\] MiniCPM-Llama3-V 2.5 [支持流式输出和自定义系统提示词](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5#usage)了,欢迎试用! -- \[2024.05.24\] 我们开源了 MiniCPM-Llama3-V 2.5 [gguf](https://huggingface.co/openbmb/MiniCPM-Llama3-V-2_5-gguf),支持 [llama.cpp](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#llamacpp-%E9%83%A8%E7%BD%B2) 推理!实现端侧 6-8 tokens/s 的流畅解码,欢迎试用! -- \[2024.05.23\] 🔍 我们添加了Phi-3-vision-128k-instruct 与 MiniCPM-Llama3-V 2.5的全面对比,包括基准测试评估、多语言能力和推理效率 🌟📊🌍🚀。点击[这里](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/compare_with_phi-3_vision.md)查看详细信息。 -- \[2024.05.20\] 我们开源了 MiniCPM-Llama3-V 2.5,增强了 OCR 能力,支持 30 多种语言,并首次在端侧实现了 GPT-4V 级的多模态能力!我们提供了[高效推理](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%89%8B%E6%9C%BA%E7%AB%AF%E9%83%A8%E7%BD%B2)和[简易微调](https://github.com/OpenBMB/MiniCPM-o/blob/main/finetune/readme.md)的支持,欢迎试用! -- \[2024.04.23\] 我们增加了MiniCPM-V 2.0对 [vLLM](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#vllm-%E9%83%A8%E7%BD%B2-) 的支持,欢迎体验! -- \[2024.04.18\] 我们在 HuggingFace Space 新增了 MiniCPM-V 2.0 的 [demo](https://huggingface.co/spaces/openbmb/MiniCPM-V-2),欢迎体验! -- \[2024.04.17\] MiniCPM-V 2.0 现在支持用户部署本地 [WebUI Demo](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9C%AC%E5%9C%B0webui-demo%E9%83%A8%E7%BD%B2) 了,欢迎试用! -- \[2024.04.15\] MiniCPM-V 2.0 现在可以通过 SWIFT 框架 [微调](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v-2%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md) 了,支持流式输出! -- \[2024.04.12\] 我们开源了 MiniCPM-V 2.0,该模型刷新了 OCRBench 开源模型最佳成绩,在场景文字识别能力上比肩 Gemini Pro,同时还在综合了 11 个主流多模态大模型评测基准的 [OpenCompass](https://rank.opencompass.org.cn/leaderboard-multimodal) 榜单上超过了 Qwen-VL-Chat 10B、CogVLM-Chat 17B 和 Yi-VL 34B 等更大参数规模的模型!点击[这里](https://openbmb.vercel.app/minicpm-v-2)查看 MiniCPM-V 2.0 技术博客。 -- \[2024.03.14\] MiniCPM-V 现在支持 SWIFT 框架下的[微调](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md)了,感谢 [Jintao](https://github.com/Jintao-Huang) 的贡献! -- \[2024.03.01\] MiniCPM-V 现在支持在 Mac 电脑上进行部署! -- \[2024.02.01\] 我们开源了 MiniCPM-V 和 OmniLMM-12B,分别可以支持高效的端侧部署和同规模领先的多模态能力! - -## 目录 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E7%9B%AE%E5%BD%95-) - -- [MiniCPM-o 2.6](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#minicpm-o-26) -- [MiniCPM-V 2.6](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#minicpm-v-26) -- [Chat with Our Demo on Gradio 🤗](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#chat-with-our-demo-on-gradio-) -- [推理](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%8E%A8%E7%90%86) - - [模型库](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%A8%A1%E5%9E%8B%E5%BA%93) - - [多轮对话](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E8%BD%AE%E5%AF%B9%E8%AF%9D) - - [多图对话](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E5%9B%BE%E5%AF%B9%E8%AF%9D) - - [少样本上下文对话](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%B0%91%E6%A0%B7%E6%9C%AC%E4%B8%8A%E4%B8%8B%E6%96%87%E5%AF%B9%E8%AF%9D) - - [视频对话](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E8%A7%86%E9%A2%91%E5%AF%B9%E8%AF%9D) - - [语音对话](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E8%AF%AD%E9%9F%B3%E5%AF%B9%E8%AF%9D) - - [Mimick](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#mimick) - - [可配置声音的语音对话](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%8F%AF%E9%85%8D%E7%BD%AE%E5%A3%B0%E9%9F%B3%E7%9A%84%E8%AF%AD%E9%9F%B3%E5%AF%B9%E8%AF%9D) - - [更多语音任务](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9B%B4%E5%A4%9A%E8%AF%AD%E9%9F%B3%E4%BB%BB%E5%8A%A1) - - [多模态流式交互](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E6%A8%A1%E6%80%81%E6%B5%81%E5%BC%8F%E4%BA%A4%E4%BA%92) - - [多卡推理](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E5%8D%A1%E6%8E%A8%E7%90%86) - - [Mac 推理](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#mac-%E6%8E%A8%E7%90%86) - - [基于 llama.cpp、ollama、vLLM 的高效推理](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%9F%BA%E4%BA%8E-llamacppollamavllm-%E7%9A%84%E9%AB%98%E6%95%88%E6%8E%A8%E7%90%86) -- [微调](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%BE%AE%E8%B0%83) -- [FAQs](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#faqs) -- [模型局限性](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%A8%A1%E5%9E%8B%E5%B1%80%E9%99%90%E6%80%A7) - -MiniCPM-o 2.6 是 MiniCPM-o 系列的最新、性能最佳模型。该模型基于 SigLip-400M、Whisper-medium-300M、ChatTTS-200M 和 Qwen2.5-7B 构建,共 8B 参数,通过端到端方式训练和推理。相比 MiniCPM-V 2.6,该模型在性能上有了显著提升,并支持了实时语音对话和多模态流式交互的新功能。MiniCPM-o 2.6 的主要特性包括: - -- 🔥 **领先的视觉能力。** MiniCPM-o 2.6 在 OpenCompass 榜单上(综合 8 个主流多模态评测基准)平均得分 70.2,**以 8B 量级的大小在单图理解方面超越了 GPT-4o-202405、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等主流商用闭源多模态大模型**。此外,它的多图和视频理解表现也**优于 GPT-4V 和 Claude 3.5 Sonnet**,并展现出了优秀的上下文学习能力。 - -- 🎙 **出色的语音能力。** MiniCPM-o 2.6 **支持可配置声音的中英双语实时对话**。MiniCPM-o 2.6 在语音理解任务(如 ASR 和 STT 等)**优于 GPT-4o-realtime**,并在语音对话的语义和声学评估中展现了**开源模型中最高的语音生成性能**。它还支持情绪/语速/风格控制、语音克隆、角色扮演等进阶能力。 - -- 🎬 **强大的多模态流式交互能力。** 作为一项新功能,MiniCPM-o 2.6 能够**接受连续的视频和音频流,并和用户进行实时语音交互**。在针对实时视频理解、全模态视音频理解、多模态上下文理解的综合评测基准 StreamingBench 中,MiniCPM-o 2.6 取得开源社区最佳水平,并**超过了 GPT-4o-202408 和 Claude 3.5 Sonnet**。 - -- 💪 **强大的 OCR 能力及其他功能。** MiniCPM-o 2.6 进一步优化了 MiniCPM-V 2.6 的众多视觉理解能力,其可以处理任意长宽比的图像,像素数可达 180 万(如 1344x1344)。在 OCRBench 上取得**25B 以下最佳水平,超过 GPT-4o-202405 等商用闭源模型**。基于最新的 [RLHF-V](https://rlhf-v.github.io/)、[RLAIF-V](https://github.com/RLHF-V/RLAIF-V/) 和 [VisCPM](https://github.com/OpenBMB/VisCPM) 技术,其具备了**可信的多模态行为**,在 MMHal-Bench 上超过了 GPT-4o 和 Claude 3.5,并支持英语、中文、德语、法语、意大利语、韩语等**30多种语言**。 - -- 🚀 **卓越的效率。** 除了对个人用户友好的模型大小,MiniCPM-o 2.6 还表现出**最先进的视觉 token 密度**(即每个视觉 token 编码的像素数量)。它**仅需 640 个 token 即可处理 180 万像素图像,比大多数模型少 75%**。这一特性优化了模型的推理速度、首 token 延迟、内存占用和功耗。因此,MiniCPM-o 2.6 可以支持 iPad 等终端设备上的高效**多模态实时流式交互**。 - -- 💫 **易于使用。** MiniCPM-o 2.6 可以通过多种方式轻松使用:(1) [llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpm-omni/examples/llava/README-minicpmo2.6.md) 支持在本地设备上进行高效的 CPU 推理,(2) [int4](https://huggingface.co/openbmb/MiniCPM-V-2_6-int4) 和 [GGUF](https://huggingface.co/openbmb/MiniCPM-V-2_6-gguf) 格式的量化模型,有 16 种尺寸,(3) [vLLM](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%9F%BA%E4%BA%8E-llamacppollamavllm-%E7%9A%84%E9%AB%98%E6%95%88%E6%8E%A8%E7%90%86) 支持高吞吐量和内存高效的推理,(4) 通过[LLaMA-Factory](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/llamafactory_train_and_infer.md)框架针对新领域和任务进行微调,(5) 使用 [Gradio](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9C%AC%E5%9C%B0-webui-demo-) 快速设置本地 WebUI 演示,(6) 部署于服务器的在线 [demo](https://minicpm-omni-webdemo-us.modelbest.cn/)。 - - -**模型架构。** - -- **端到端全模态架构。** 通过**端到端**的方式连接和训练不同模态的编/解码模块以充分利用丰富的多模态知识。模型完全使用 CE 损失端到端训练。 -- **全模态流式机制。** (1) 我们将不同模态的离线编/解码器改造为适用于**流式输入/输出**的在线模块。 (2) 我们针对大语言模型基座设计了**时分复用的全模态流式信息处理机制**,将平行的不同模态的信息流拆分重组为周期性时间片序列。 -- **可配置的声音方案。** 我们设计了新的多模态系统提示,包含传统文本系统提示词,和**用于指定模型声音的语音系统提示词**。模型可在推理时灵活地通过文字或语音样例控制声音风格,并支持端到端声音克隆和音色创建等高级能力。 - -[![](ReadItLater%20Inbox/assets/minicpm-o-26-framework-v2.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpm-o-26-framework-v2.png) - -### 性能评估 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%80%A7%E8%83%BD%E8%AF%84%E4%BC%B0--) - -[![](ReadItLater%20Inbox/assets/radar.jpg)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/radar.jpg) - -点击查看视觉理解能力详细评测结果。 - -**图像理解能力** - -| Model | Size | Token Density+ | OpenCompass | OCRBench | MathVista mini | ChartQA | MMVet | MMStar | MME | MMB1.1 test | AI2D | MMMU val | HallusionBench | TextVQA val | DocVQA test | MathVerse mini | MathVision | MMHal Score | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| **Proprietary** | | | | | | | | | | | | | | | | | | | -| GPT-4o-20240513 | \- | 1088 | 69.9 | 736 | 61.3 | 85.7 | **69.1** | 63.9 | 2328.7 | 82.2 | 84.6 | **69.2** | **55.0** | \- | 92.8 | **50.2** | **30.4** | 3.6 | -| Claude3.5-Sonnet | \- | 750 | 67.9 | 788 | 61.6 | **90.8** | 66.0 | 62.2 | 1920.0 | 78.5 | 80.2 | 65.9 | 49.9 | \- | **95.2** | \- | \- | 3.4 | -| Gemini 1.5 Pro | \- | \- | 64.4 | 754 | 57.7 | 81.3 | 64.0 | 59.1 | 2110.6 | 73.9 | 79.1 | 60.6 | 45.6 | 73.5 | 86.5 | \- | 19.2 | \- | -| GPT-4o-mini-20240718 | \- | 1088 | 64.1 | 785 | 52.4 | \- | 66.9 | 54.8 | 2003.4 | 76.0 | 77.8 | 60.0 | 46.1 | \- | \- | \- | \- | 3.3 | -| **Open Source** | | | | | | | | | | | | | | | | | | | -| Cambrian-34B | 34B | 1820 | 58.3 | 591 | 50.3 | 75.6 | 53.2 | 54.2 | 2049.9 | 77.8 | 79.5 | 50.4 | 41.6 | 76.7 | 75.5 | \- | \- | \- | -| GLM-4V-9B | 13B | 784 | 59.1 | 776 | 51.1 | \- | 58.0 | 54.8 | 2018.8 | 67.9 | 71.2 | 46.9 | 45.0 | \- | \- | \- | \- | \- | -| Pixtral-12B | 12B | 256 | 61.0 | 685 | 56.9 | 81.8 | 58.5 | 54.5 | \- | 72.7 | 79.0 | 51.1 | 47.0 | 75.7 | 90.7 | \- | \- | \- | -| DeepSeek-VL2-27B (4B) | 27B | 672 | 66.4 | 809 | 63.9 | 86.0 | 60.0 | 61.9 | 2253.0 | 81.2 | 83.8 | 54.0 | 45.3 | 84.2 | 93.3 | \- | \- | 3.0 | -| Qwen2-VL-7B | 8B | 784 | 67.1 | 866 | 58.2 | 83.0 | 62.0 | 60.7 | 2326.0 | 81.8 | 83.0 | 54.1 | 50.6 | **84.3** | 94.5 | 31.9 | 16.3 | 3.2 | -| LLaVA-OneVision-72B | 72B | 182 | 68.1 | 741 | 67.5 | 83.7 | 60.6 | **65.8** | 2261.0 | **85.0** | 85.6 | 56.8 | 49.0 | 80.5 | 91.3 | 39.1 | \- | 3.5 | -| InternVL2.5-8B | 8B | 706 | 68.3 | 822 | 64.4 | 84.8 | 62.8 | 62.8 | 2344.0 | 83.6 | 84.5 | 56.0 | 50.1 | 79.1 | 93.0 | 39.5 | 19.7 | 3.4 | -| MiniCPM-V 2.6 | 8B | **2822** | 65.2 | 852\* | 60.6 | 79.4 | 60.0 | 57.5 | 2348.4\* | 78.0 | 82.1 | 49.8\* | 48.1\* | 80.1 | 90.8 | 25.7 | 18.3 | 3.6 | -| MiniCPM-o 2.6 | 8B | **2822** | **70.2** | **897\*** | **71.9\*** | 86.9\* | 67.5 | 64.0 | **2372.0\*** | 80.5 | **85.8** | 50.4\* | 51.9 | 82.0 | 93.5 | 41.4\* | 23.1\* | **3.8** | - -\* 我们使用思维链提示词来评估这些基准,对于 MME 我们只在 Cognition 任务上使用了思维链。 + Token Density:每个视觉 token 在最大分辨率下编码的像素数,即最大分辨率下的像素数 / 视觉 token 数。 - -注意:闭源模型的 Token Density 由 API 收费方式估算得到。 - -**多图和视频理解能力** - -| Model | Size | BLINK val | Mantis Eval | MIRB | Video-MME (wo / w subs) | -| --- | --- | --- | --- | --- | --- | -| **Proprietary** | | | | | | -| GPT-4o-20240513 | \- | **68** | \- | \- | **71.9/77.2** | -| GPT4V | \- | 54.6 | 62.7 | 53.1 | 59.9/63.3 | -| **Open-source** | | | | | | -| LLaVA-NeXT-Interleave 14B | 14B | 52.6 | 66.4 | 30.2 | \- | -| LLaVA-OneVision-72B | 72B | 55.4 | **77.6** | \- | 66.2/69.5 | -| MANTIS 8B | 8B | 49.1 | 59.5 | 34.8 | \- | -| Qwen2-VL-7B | 8B | 53.2 | 69.6\* | **67.6\*** | 63.3/69.0 | -| InternVL2.5-8B | 8B | 54.8 | 67.7 | 52.5 | 64.2/66.9 | -| MiniCPM-V 2.6 | 8B | 53 | 69.1 | 53.8 | 60.9/63.6 | -| MiniCPM-o 2.6 | 8B | 56.7 | 71.9 | 58.6 | 63.9/67.9 | - -\* 正式开源模型权重的评测结果。 点击查看语音理解和生成能力的详细评测结果。 - -**语音理解能力** - -| Task | Size | ASR (zh) | | | ASR (en) | | | AST | | Emotion | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| Metric | | CER↓ | | | WER↓ | | | BLEU↑ | | ACC↑ | -| Dataset | | AISHELL-1 | Fleurs zh | WenetSpeech test-net | LibriSpeech test-clean | GigaSpeech | TED-LIUM | CoVoST en2zh | CoVoST zh2en | MELD emotion | -| **Proprietary** | | | | | | | | | | | -| GPT-4o-Realtime | \- | 7.3\* | 5.4\* | 28.9\* | 2.6\* | 12.9\* | 4.8\* | 37.1\* | 15.7\* | 33.2\* | -| Gemini 1.5 Pro | \- | 4.5\* | 5.9\* | 14.3\* | 2.9\* | 10.6\* | **3.0\*** | 47.3\* | 22.6\* | 48.4\* | -| **Open-Source** | | | | | | | | | | | -| Qwen2-Audio-7B | 8B | \- | 7.5 | \- | **1.6** | \- | \- | 45.2 | 24.4 | **55.3** | -| Qwen2-Audio-7B-Instruct | 8B | 2.6\* | 6.9\* | 10.3\* | 3.1\* | 9.7\* | 5.9\* | 39.5\* | 22.9\* | 17.4\* | -| GLM-4-Voice-Base | 9B | 2.5 | \- | \- | 2.8 | \- | \- | \- | \- | -| MiniCPM-o 2.6 | 8B | **1.6** | **4.4** | **6.9** | 1.7 | **8.7** | **3.0** | **48.2** | **27.2** | 52.4 | - -\* 正式开源模型权重的评测结果。 - -**语音生成能力。** - -| Task | Size | SpeechQA | | | | | | | | | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| Metric | | ACC↑ | | | G-Eval (10 point)↑ | Semantic ELO score↑ | Acoustic ELO score↑ | Overall ELO score↑ | UTMOS↑ | ASR-WER↓ | -| Dataset | | Speech Llama Q. | Speech Web Q. | Speech Trivia QA | Speech AlpacaEval | AudioArena | | | | | -| **Proprietary** | | | | | | | | | | | -| GPT-4o-Realtime | | **71.7** | **51.6** | **69.7** | **7.4** | **1157** | **1203** | **1200** | **4.2** | **2.3** | -| **Open-Source** | | | | | | | | | | | -| GLM-4-Voice | 9B | 50.0 | 32.0 | 36.4 | 5.1 | 999 | 1147 | 1035 | 4.1 | 11.7 | -| Llama-Omni | 8B | 45.3 | 22.9 | 10.7 | 3.9 | 960 | 878 | 897 | 3.2 | 24.3 | -| VITA-1.5 | 8B | 46.7 | 28.1 | 23.3 | 2.0 | \- | \- | \- | \- | \- | -| Moshi | 7B | 43.7 | 23.8 | 16.7 | 2.4 | 871 | 808 | 875 | 2.8 | 8.2 | -| Mini-Omni | 1B | 22.0 | 12.8 | 6.9 | 2.5 | 926 | 803 | 865 | 3.4 | 10.0 | -| MiniCPM-o 2.6 | 8B | 61.0 | 40.0 | 40.2 | 5.1 | 1088 | 1163 | 1131 | **4.2** | 9.8 | - -所有的结果都基于 [AudioEvals](https://github.com/OpenBMB/UltraEval-Audio)。 - -**端到端声音克隆能力。** - -| Task | TTS | | -| --- | --- | --- | -| Metric | SIMO↑ | SIMO↑ | -| Dataset | Seed-TTS test-zh | Seed-TTS test-en | -| F5-TTS | **76** | **67** | -| CosyVoice | 75 | 64 | -| FireRedTTS | 63 | 46 | -| MiniCPM-o 2.6 | 57 | 47 | - -点击查看多模态流式交互能力评测详细结果。 - -**多模态流式交互能力**: StreamingBench 分数 - -| Model | Size | Real-Time Video Understanding | Omni-Source Understanding | Contextual Understanding | Overall | -| --- | --- | --- | --- | --- | --- | -| **Proprietary** | | | | | | | -| Gemini 1.5 Pro | \- | 77.4 | **67.8** | **51.1** | **70.3** | -| GPT-4o-202408 | \- | 74.5 | 51.0 | 48.0 | 64.1 | -| Claude-3.5-Sonnet | \- | 74.0 | 41.4 | 37.8 | 59.7 | -| **Open-source** | | | | | | | | | -| VILA-1.5 | 8B | 61.5 | 37.5 | 26.7 | 49.5 | -| LongVA | 7B | 63.1 | 35.9 | 30.2 | 50.7 | -| LLaVA-Next-Video-34B | 34B | 69.8 | 41.7 | 34.3 | 56.7 | -| Qwen2-VL-7B | 8B | 71.2 | 40.7 | 33.1 | 57.0 | -| InternVL2-8B | 8B | 70.1 | 42.7 | 34.1 | 57.0 | -| VITA-1.5 | 8B | 70.9 | 40.8 | 35.8 | 57.4 | -| LLaVA-OneVision-7B | 8B | 74.3 | 40.8 | 31.0 | 58.4 | -| InternLM-XC2.5-OL-7B | 8B | 75.4 | 46.2 | 33.6 | 60.8 | -| MiniCPM-V 2.6 | 8B | 72.4 | 40.2 | 33.4 | 57.7 | -| MiniCPM-o 2.6 | 8B | **79.9** | 53.4 | 38.5 | 66.0 | - -### 典型示例 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%85%B8%E5%9E%8B%E7%A4%BA%E4%BE%8B-) - -以下为 MiniCPM-o 2.6 的 iPad Pro 实机演示和 web demo 演示样例: - -[![](ReadItLater%20Inbox/assets/2dot6_o_demo_video_img.png)](https://www.youtube.com/watch?v=vRIMbxJzStY&t=2s) - -[![math](ReadItLater%20Inbox/assets/math.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmo2_6/minicpmo2_6_math_intersect.png) [![diagram](ReadItLater%20Inbox/assets/diagram.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmo2_6/minicpmo2_6_diagram_train_NN.png) [![bike](ReadItLater%20Inbox/assets/bike-1.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmo2_6/minicpmo2_6_multi-image_bike.png) - -Click to view more details of MiniCPM-V 2.6 - -## MiniCPM-V 2.6 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#minicpm-v-26) - -**MiniCPM-V 2.6** 是 MiniCPM-V 系列中最新、性能最佳的模型。该模型基于 SigLip-400M 和 Qwen2-7B 构建,共 8B 参数。与 MiniCPM-Llama3-V 2.5 相比,MiniCPM-V 2.6 性能提升显著,并引入了多图和视频理解的新功能。MiniCPM-V 2.6 的主要特点包括: - -- 🔥 **领先的性能。** MiniCPM-V 2.6 在最新版本 OpenCompass 榜单上(综合 8 个主流多模态评测基准)平均得分 65.2,**以8B量级的大小在单图理解方面超越了 GPT-4o mini、GPT-4V、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等主流商用闭源多模态大模型**。 - -- 🖼️ **多图理解和上下文学习。** MiniCPM-V 2.6 还支持**多图对话和推理**。它在 Mantis-Eval、BLINK、Mathverse mv 和 Sciverse mv 等主流多图评测基准中取得了**最佳水平**,并展现出了优秀的上下文学习能力。 - -- 🎬 **视频理解。** MiniCPM-V 2.6 还可以**接受视频输入**,进行对话和提供涵盖时序和空间信息的详细视频描述。模型在 有/无字幕 评测场景下的 Video-MME 表现均超过了 **GPT-4V、Claude 3.5 Sonnet 和 LLaVA-NeXT-Video-34B**等商用闭源模型。 - -- 💪 **强大的 OCR 能力及其他功能。** MiniCPM-V 2.6 可以处理任意长宽比的图像,像素数可达 180 万(如 1344x1344)。在 OCRBench 上取得**最佳水平,超过 GPT-4o、GPT-4V 和 Gemini 1.5 Pro 等商用闭源模型**。基于最新的 [RLAIF-V](https://github.com/RLHF-V/RLAIF-V/) 和 [VisCPM](https://github.com/OpenBMB/VisCPM) 技术,其具备了**可信的多模态行为**,在 Object HalBench 上的幻觉率显著低于 GPT-4o 和 GPT-4V,并支持英语、中文、德语、法语、意大利语、韩语等**多种语言**。 - -- 🚀 **卓越的效率。** 除了对个人用户友好的模型大小,MiniCPM-V 2.6 还表现出**最先进的视觉 token 密度**(即每个视觉 token 编码的像素数量)。它**仅需 640 个 token 即可处理 180 万像素图像,比大多数模型少 75%**。这一特性优化了模型的推理速度、首 token 延迟、内存占用和功耗。因此,MiniCPM-V 2.6 可以支持 iPad 等终端设备上的高效**实时视频理解**。 - -- 💫 **易于使用。** MiniCPM-V 2.6 可以通过多种方式轻松使用:(1) [llama.cpp](https://github.com/OpenBMB/llama.cpp/blob/minicpmv-main/examples/llava/README-minicpmv2.6.md) 和 [ollama](https://github.com/OpenBMB/ollama/blob/minicpm-v2.6/examples/minicpm-v2.6/README.md) 支持在本地设备上进行高效的 CPU 推理,(2) [int4](https://huggingface.co/openbmb/MiniCPM-V-2_6-int4) 和 [GGUF](https://huggingface.co/openbmb/MiniCPM-V-2_6-gguf) 格式的量化模型,有 16 种尺寸,(3) [vLLM](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#vllm-%E9%83%A8%E7%BD%B2-) 支持高吞吐量和内存高效的推理,(4) 针对新领域和任务进行微调,(5) 使用 [Gradio](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9C%AC%E5%9C%B0-webui-demo-) 快速设置本地 WebUI 演示,(6) 在线[demo](http://120.92.209.146:8887/)即可体验。 - - -### 性能评估 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%80%A7%E8%83%BD%E8%AF%84%E4%BC%B0---1) - -[![](ReadItLater%20Inbox/assets/radar_final.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/radar_final.png) - -点击查看 OpenCompass, MME, MMVet, OCRBench, MMMU, MathVista, MMB, AI2D, TextVQA, DocVQA, HallusionBench, Object HalBench 上的单图评测结果详情。 - -| Model | Size | Token Density+ | OpenCompass | MME | MMVet | OCRBench | MMMU val | MathVista mini | MMB1.1 test | AI2D | TextVQA val | DocVQA test | HallusionBench | Object HalBench | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| **Proprietary** | | | | | | | | | | | | | | | -| GPT-4o | \- | 1088 | 69.9 | 2328.7 | 69.1 | 736 | 69.2 | 61.3 | 82.2 | 84.6 | \- | 92.8 | 55.0 | 17.6 | -| Claude 3.5 Sonnet | \- | 750 | 67.9 | 1920.0 | 66.0 | 788 | 65.9 | 61.6 | 78.5 | 80.2 | \- | 95.2 | 49.9 | 13.8 | -| Gemini 1.5 Pro | \- | \- | 64.4 | 2110.6 | 64.0 | 754 | 60.6 | 57.7 | 73.9 | 79.1 | 73.5 | 86.5 | 45.6 | \- | -| GPT-4o mini | \- | 1088 | 64.1 | 2003.4 | 66.9 | 785 | 60.0 | 52.4 | 76.0 | 77.8 | \- | \- | 46.1 | 12.4 | -| GPT-4V | \- | 1088 | 63.5 | 2070.2 | 67.5 | 656 | 61.7 | 54.7 | 79.8 | 78.6 | 78.0 | 87.2 | 43.9 | 14.2 | -| Step-1V | \- | \- | 59.5 | 2206.4 | 63.3 | 625 | 49.9 | 44.8 | 78.0 | 79.2 | 71.6 | \- | 48.4 | \- | -| Qwen-VL-Max | \- | 784 | 58.3 | 2281.7 | 61.8 | 684 | 52.0 | 43.4 | 74.6 | 75.7 | 79.5 | 93.1 | 41.2 | 13.4 | -| **Open-source** | | | | | | | | | | | | | | | -| LLaVA-NeXT-Yi-34B | 34B | 157 | 55.0 | 2006.5 | 50.7 | 574 | 48.8 | 40.4 | 77.8 | 78.9 | 69.3 | \- | 34.8 | 12.6 | -| Mini-Gemini-HD-34B | 34B | 157 | \- | 2141 | 59.3 | 518 | 48.0 | 43.3 | \- | 80.5 | 74.1 | 78.9 | \- | \- | -| Cambrian-34B | 34B | 1820 | 58.3 | 2049.9 | 53.2 | 591 | 50.4 | 50.3 | 77.8 | 79.5 | 76.7 | 75.5 | 41.6 | 14.7 | -| GLM-4V-9B | 13B | 784 | 59.1 | 2018.8 | 58.0 | 776 | 46.9 | 51.1 | 67.9 | 71.2 | \- | \- | 45.0 | \- | -| InternVL2-8B | 8B | 706 | 64.1 | 2215.1 | 54.3 | 794 | **51.2** | 58.3 | **79.4** | **83.6** | 77.4 | **91.6** | 45.0 | 21.3 | -| MiniCPM-Llama-V 2.5 | 8B | 1882 | 58.8 | 2024.6 | 52.8 | 725 | 45.8 | 54.3 | 72.0 | 78.4 | 76.6 | 84.8 | 42.4 | 10.3 | -| MiniCPM-V 2.6 | 8B | **2822** | **65.2** | **2348.4**\* | **60.0** | **852**\* | 49.8\* | **60.6** | 78.0 | 82.1 | **80.1** | 90.8 | **48.1**\* | **8.2** | - -\* 我们使用思维链提示词来评估这些基准。 - -+ Token Density:每个视觉 token 在最大分辨率下编码的像素数,即最大分辨率下的像素数 / 视觉 token 数。 - -注意:闭源模型的 Token Density 由 API 收费方式估算得到。 - -点击查看 Mantis Eval, BLINK, Mathverse mv, Sciverse mv, MIRB 上的多图评测结果详情。 - -| Model | Size | Mantis Eval | BLINK val | Mathverse mv | Sciverse mv | MIRB | -| --- | --- | --- | --- | --- | --- | --- | -| **Proprietary** | | | | | | | -| GPT-4V | \- | 62.7 | 54.6 | 60.3 | 66.9 | 53.1 | -| LLaVA-NeXT-Interleave-14B | 14B | 66.4 | 52.6 | 32.7 | 30.2 | \- | -| **Open-source** | | | | | | | -| Emu2-Chat | 37B | 37.8 | 36.2 | \- | 27.2 | \- | -| CogVLM | 17B | 45.2 | 41.1 | \- | \- | \- | -| VPG-C | 7B | 52.4 | 43.1 | 24.3 | 23.1 | \- | -| VILA 8B | 8B | 51.2 | 39.3 | \- | 36.5 | \- | -| InternLM-XComposer-2.5 | 8B | 53.1\* | 48.9 | 32.1\* | \- | 42.5 | -| InternVL2-8B | 8B | 59.0\* | 50.9 | 30.5\* | 34.4\* | **56.9\*** | -| MiniCPM-V 2.6 | 8B | **69.1** | **53.0** | **84.9** | **74.9** | 53.8 | - -\* 正式开源模型权重的评测结果。 点击查看 Video-MME 和 Video-ChatGPT 上的视频评测结果详情。 - -| Model | Size | Video-MME | | Video-ChatGPT | | | | | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | -| | | w/o subs | w subs | Correctness | Detail | Context | Temporal | Consistency | -| **Proprietary** | | | | | | | | | -| Claude 3.5 Sonnet | \- | 60.0 | 62.9 | \- | \- | \- | \- | \- | -| GPT-4V | \- | 59.9 | 63.3 | \- | \- | \- | \- | \- | -| **Open-source** | | | | | | | | | -| LLaVA-NeXT-7B | 7B | \- | \- | 3.39 | 3.29 | 3.92 | 2.60 | 3.12 | -| LLaVA-NeXT-34B | 34B | \- | \- | 3.29 | 3.23 | 3.83 | 2.51 | 3.47 | -| CogVLM2-Video | 12B | \- | \- | 3.49 | **3.46** | 3.23 | **2.98** | **3.64** | -| LongVA | 7B | 52.4 | 54.3 | 3.05 | 3.09 | 3.77 | 2.44 | **3.64** | -| InternVL2-8B | 8B | 54.0 | 56.9 | \- | \- | \- | \- | \- | -| InternLM-XComposer-2.5 | 8B | 55.8 | \- | \- | \- | \- | \- | \- | -| LLaVA-NeXT-Video | 32B | 60.2 | 63.0 | 3.48 | 3.37 | **3.95** | 2.64 | 3.28 | -| MiniCPM-V 2.6 | 8B | **60.9** | **63.6** | **3.59** | 3.28 | 3.93 | 2.73 | 3.62 | - -点击查看 TextVQA, VizWiz, VQAv2, OK-VQA上的少样本评测结果详情。 - -| Model | Size | Shot | TextVQA val | VizWiz test-dev | VQAv2 test-dev | OK-VQA val | -| --- | --- | --- | --- | --- | --- | --- | -| Flamingo | 80B | 0\* | 35.0 | 31.6 | 56.3 | 40.6 | -| 4 | 36.5 | 39.6 | 63.1 | **57.4** | -| 8 | 37.3 | 44.8 | 65.6 | 57.5 | -| IDEFICS | 80B | 0\* | 30.9 | 36.0 | 60.0 | 45.2 | -| 4 | 34.3 | 40.4 | 63.6 | 52.4 | -| 8 | 35.7 | 46.1 | 64.8 | 55.1 | -| OmniCorpus | 7B | 0\* | 43.0 | 49.8 | 63.2 | 45.5 | -| 4 | 45.4 | 51.3 | 64.5 | 46.5 | -| 8 | 45.6 | 52.2 | 64.7 | 46.6 | -| Emu2 | 37B | 0 | 26.4 | 40.4 | 33.5 | 26.7 | -| 4 | 48.2 | 54.6 | 67.0 | 53.2 | -| 8 | 49.3 | 54.7 | 67.8 | 54.1 | -| MM1 | 30B | 0 | 26.2 | 40.4 | 48.9 | 26.7 | -| 8 | 49.3 | 54.7 | **70.9** | 54.1 | -| MiniCPM-V 2.6+ | 8B | 0 | 43.9 | 33.8 | 45.4 | 23.9 | -| 4 | 63.6 | 60.5 | 65.5 | 50.1 | -| 8 | **64.6** | **63.4** | 68.2 | 51.4 | - -\* 使用 Flamingo 方式 zero image shot 和 two additional text shots 评估零样本性能。 - -+ 我们在没有进行监督微调 (SFT) 的情况下评估预训练的模型权重 (ckpt)。 - -### 典型示例 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%85%B8%E5%9E%8B%E7%A4%BA%E4%BE%8B--1) - -[![Bike](ReadItLater%20Inbox/assets/Bike.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/multi_img-bike.png) [![Menu](ReadItLater%20Inbox/assets/Menu-1.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/multi_img-menu.png) [![Code](ReadItLater%20Inbox/assets/Code.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/multi_img-code.png) [![Mem](ReadItLater%20Inbox/assets/Mem.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/ICL-Mem.png) [![medal](ReadItLater%20Inbox/assets/medal.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/multiling-medal.png) - -点击查看更多示例。 - -[![elec](ReadItLater%20Inbox/assets/elec.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/ICL-elec.png) [![Menu](ReadItLater%20Inbox/assets/Menu.png)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmv2_6/multiling-olympic.png) - -我们将 MiniCPM-V 2.6 部署在iPad Pro上,并录制了以下演示视频。 - -[![](ReadItLater%20Inbox/assets/ai.gif)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/gif_cases/ai.gif)      [![](ReadItLater%20Inbox/assets/beer.gif)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/gif_cases/beer.gif) - -rabbit.mp4 - -## 历史版本模型 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%8E%86%E5%8F%B2%E7%89%88%E6%9C%AC%E6%A8%A1%E5%9E%8B--) - -| 模型 | 介绍信息和使用教程 | -| --- | --- | -| MiniCPM-Llama3-V 2.5 | [文档](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/minicpm_llama3_v2dot5.md) | -| MiniCPM-V 2.0 | [文档](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/minicpm_v2.md) | -| MiniCPM-V 1.0 | [文档](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/minicpm_v1.md) | -| OmniLMM-12B | [文档](https://github.com/OpenBMB/MiniCPM-o/blob/main/omnilmm.md) | - -## Chat with Our Demo on Gradio 🤗 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#chat-with-our-demo-on-gradio-) - -我们提供由 Hugging Face Gradio [![](https://camo.githubusercontent.com/0aad2cc35d9b929ec7344ece3bbe7884c9618b501d29c029fffc324932e3f50d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f67726164696f2d6170702f67726164696f)](https://github.com/gradio-app/gradio) 支持的在线和本地 Demo。Gradio 是目前最流行的模型部署框架,支持流式输出、进度条、process bars 和其他常用功能。 - -### Online Demo - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#online-demo-) - -欢迎试用 Online Demo: [MiniCPM-V 2.6](http://120.92.209.146:8887/) | [MiniCPM-Llama3-V 2.5](https://huggingface.co/spaces/openbmb/MiniCPM-Llama3-V-2_5) | [MiniCPM-V 2.0](https://huggingface.co/spaces/openbmb/MiniCPM-V-2) 。 - -### 本地 WebUI Demo - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9C%AC%E5%9C%B0-webui-demo-) - -您可以使用以下命令轻松构建自己的本地 WebUI Demo。更详细的部署教程请参考[文档](https://modelbest.feishu.cn/wiki/RnjjwnUT7idMSdklQcacd2ktnyN)。 - -**实时流式视频/语音通话demo:** - -1. 启动model server: - -pip install -r requirements\_o2.6.txt - -python web\_demos/minicpm-o\_2.6/model\_server.py - -请确保 `transformers==4.44.2`,其他版本目前可能会有兼容性问题,我们正在解决。 如果你使用的低版本的 Pytorch,你可能会遇到这个错误`"weight_norm_fwd_first_dim_kernel" not implemented for 'BFloat16'`, 请在模型初始化的时候添加 `self.minicpmo_model.tts.float()` - -2. 启动web server: - -# Make sure Node and PNPM is installed. -sudo apt-get update -sudo apt-get install nodejs npm -npm install -g pnpm - -cd web\_demos/minicpm-o\_2.6/web\_server -# 为https创建自签名证书, 要申请浏览器摄像头和麦克风权限须启动https. -bash ./make\_ssl\_cert.sh # output key.pem and cert.pem - -pnpm install # install requirements -pnpm run dev # start server - -浏览器打开`https://localhost:8088/`,开始体验实时流式视频/语音通话. - -**Chatbot图文对话demo:** - -pip install -r requirements\_o2.6.txt - -python web\_demos/minicpm-o\_2.6/chatbot\_web\_demo\_o2.6.py - -浏览器打开`http://localhost:8000/`,开始体验图文对话Chatbot. - -## 推理 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%8E%A8%E7%90%86) - -### 模型库 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%A8%A1%E5%9E%8B%E5%BA%93) - -| 模型 | 设备 | 资源 |          简介 | 下载链接 | -| --- | --- | --- | --- | --- | -| MiniCPM-o 2.6 | GPU | 18 GB | 最新版本,提供端侧 GPT-4o 级的视觉、语音、多模态流式交互能力。 | [🤗](https://huggingface.co/openbmb/MiniCPM-o-2_6)    [![](ReadItLater%20Inbox/assets/modelscope_logo.png)](https://modelscope.cn/models/OpenBMB/MiniCPM-o-2_6) | -| MiniCPM-o 2.6 gguf | CPU | 8 GB | gguf 版本,更低的内存占用和更高的推理效率。 | [🤗](https://huggingface.co/openbmb/MiniCPM-o-2_6-gguf)    [![](ReadItLater%20Inbox/assets/modelscope_logo.png)](https://modelscope.cn/models/OpenBMB/MiniCPM-o-2_6-gguf) | -| MiniCPM-o 2.6 int4 | GPU | 9 GB | int4量化版,更低显存占用。 | [🤗](https://huggingface.co/openbmb/MiniCPM-o-2_6-int4)    [![](ReadItLater%20Inbox/assets/modelscope_logo.png)](https://modelscope.cn/models/OpenBMB/MiniCPM-o-2_6-int4) | -| MiniCPM-V 2.6 | GPU | 17 GB | 提供出色的端侧单图、多图、视频理解能力。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2_6)    [![](ReadItLater%20Inbox/assets/modelscope_logo.png)](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2_6) | -| MiniCPM-V 2.6 gguf | CPU | 6 GB | gguf 版本,更低的内存占用和更高的推理效率。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2_6-gguf)    [![](ReadItLater%20Inbox/assets/modelscope_logo.png)](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2_6-gguf) | -| MiniCPM-V 2.6 int4 | GPU | 7 GB | int4量化版,更低显存占用。 | [🤗](https://huggingface.co/openbmb/MiniCPM-V-2_6-int4)    [![](ReadItLater%20Inbox/assets/modelscope_logo.png)](https://modelscope.cn/models/OpenBMB/MiniCPM-V-2_6-int4) | - -更多[历史版本模型](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#legacy-models) - -### 多轮对话 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E8%BD%AE%E5%AF%B9%E8%AF%9D) - -请确保 `transformers==4.44.2`,其他版本目前可能会有兼容性问题 - -pip install -r requirements\_o2.6.txt - -[![](ReadItLater%20Inbox/assets/show_demo.jpg)](https://github.com/OpenBMB/MiniCPM-o/blob/main/assets/minicpmo2_6/show_demo.jpg) - -import torch -from PIL import Image -from transformers import AutoModel, AutoTokenizer - -torch.manual\_seed(100) - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True, - attn\_implementation\='sdpa', torch\_dtype\=torch.bfloat16) \# sdpa or flash\_attention\_2, no eager -model \= model.eval().cuda() -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True) - -image \= Image.open('./assets/minicpmo2\_6/show\_demo.jpg').convert('RGB') - -\# First round chat -question \= "What is the landform in the picture?" -msgs \= \[{'role': 'user', 'content': \[image, question\]}\] - -answer \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer -) -print(answer) - -\# Second round chat, pass history context of multi-turn conversation -msgs.append({"role": "assistant", "content": \[answer\]}) -msgs.append({"role": "user", "content": \["What should I pay attention to when traveling here?"\]}) - -answer \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer -) -print(answer) - -你可以得到如下推理结果: - -``` -"The landform in the picture is a mountain range. The mountains appear to be karst formations, characterized by their steep, rugged peaks and smooth, rounded shapes. These types of mountains are often found in regions with limestone bedrock and are shaped by processes such as erosion and weathering. The reflection of the mountains in the water adds to the scenic beauty of the landscape." - -"When traveling to this scenic location, it's important to pay attention to the weather conditions, as the area appears to be prone to fog and mist, especially during sunrise or sunset. Additionally, ensure you have proper footwear for navigating the potentially slippery terrain around the water. Lastly, respect the natural environment by not disturbing the local flora and fauna." -``` - -#### 多图对话 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E5%9B%BE%E5%AF%B9%E8%AF%9D) - -点击查看 MiniCPM-o 2.6 多图输入的 Python 代码。 - -import torch -from PIL import Image -from transformers import AutoModel, AutoTokenizer - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True, - attn\_implementation\='sdpa', torch\_dtype\=torch.bfloat16) \# sdpa or flash\_attention\_2, no eager -model \= model.eval().cuda() -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True) - -image1 \= Image.open('image1.jpg').convert('RGB') -image2 \= Image.open('image2.jpg').convert('RGB') -question \= 'Compare image 1 and image 2, tell me about the differences between image 1 and image 2.' - -msgs \= \[{'role': 'user', 'content': \[image1, image2, question\]}\] - -answer \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer -) -print(answer) - -#### 少样本上下文对话 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%B0%91%E6%A0%B7%E6%9C%AC%E4%B8%8A%E4%B8%8B%E6%96%87%E5%AF%B9%E8%AF%9D) - -点击查看 MiniCPM-o 2.6 少样本上下文对话的 Python 代码。 - -import torch -from PIL import Image -from transformers import AutoModel, AutoTokenizer - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True, - attn\_implementation\='sdpa', torch\_dtype\=torch.bfloat16) \# sdpa or flash\_attention\_2, no eager -model \= model.eval().cuda() -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True) - -question \= "production date" -image1 \= Image.open('example1.jpg').convert('RGB') -answer1 \= "2023.08.04" -image2 \= Image.open('example2.jpg').convert('RGB') -answer2 \= "2007.04.24" -image\_test \= Image.open('test.jpg').convert('RGB') - -msgs \= \[ - {'role': 'user', 'content': \[image1, question\]}, {'role': 'assistant', 'content': \[answer1\]}, - {'role': 'user', 'content': \[image2, question\]}, {'role': 'assistant', 'content': \[answer2\]}, - {'role': 'user', 'content': \[image\_test, question\]} -\] - -answer \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer -) -print(answer) - -#### 视频对话 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E8%A7%86%E9%A2%91%E5%AF%B9%E8%AF%9D) - -点击查看 MiniCPM-o 2.6 视频输入的 Python 代码。 - -import torch -from PIL import Image -from transformers import AutoModel, AutoTokenizer -from decord import VideoReader, cpu \# pip install decord - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True, - attn\_implementation\='sdpa', torch\_dtype\=torch.bfloat16) \# sdpa or flash\_attention\_2, no eager -model \= model.eval().cuda() -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True) - -MAX\_NUM\_FRAMES\=64 \# if cuda OOM set a smaller number - -def encode\_video(video\_path): - def uniform\_sample(l, n): - gap \= len(l) / n - idxs \= \[int(i \* gap + gap / 2) for i in range(n)\] - return \[l\[i\] for i in idxs\] - - vr \= VideoReader(video\_path, ctx\=cpu(0)) - sample\_fps \= round(vr.get\_avg\_fps() / 1) \# FPS - frame\_idx \= \[i for i in range(0, len(vr), sample\_fps)\] - if len(frame\_idx) \> MAX\_NUM\_FRAMES: - frame\_idx \= uniform\_sample(frame\_idx, MAX\_NUM\_FRAMES) - frames \= vr.get\_batch(frame\_idx).asnumpy() - frames \= \[Image.fromarray(v.astype('uint8')) for v in frames\] - print('num frames:', len(frames)) - return frames - -video\_path\="video\_test.mp4" -frames \= encode\_video(video\_path) -question \= "Describe the video" -msgs \= \[ - {'role': 'user', 'content': frames + \[question\]}, -\] - -\# Set decode params for video -params \= {} -params\["use\_image\_id"\] \= False -params\["max\_slice\_nums"\] \= 2 \# use 1 if cuda OOM and video resolution > 448\*448 - -answer \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - \*\*params -) -print(answer) - -#### 语音对话 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E8%AF%AD%E9%9F%B3%E5%AF%B9%E8%AF%9D) - -初始化模型 - -import torch -import librosa -from transformers import AutoModel, AutoTokenizer - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True, - attn\_implementation\='sdpa', torch\_dtype\=torch.bfloat16) \# sdpa or flash\_attention\_2, no eager -model \= model.eval().cuda() -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True) - -model.init\_tts() -model.tts.float() - -##### Mimick - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#mimick) - -点击查看 MiniCPM-o 2.6 端到端语音理解生成的 Python 代码。 - -- `Mimick` 任务反映了模型的端到端语音建模能力。模型接受音频输入,输出语音识别(ASR)转录结果,并随后以高相似度重建原始音频。重建的音频相似度和原始音频越高,表明模型有越高的语音端到端建模基础能力。 - -mimick\_prompt \= "Please repeat each user's speech, including voice style and speech content." -audio\_input, \_ \= librosa.load('xxx.wav', sr\=16000, mono\=True) -msgs \= \[{'role': 'user', 'content': \[mimick\_prompt,audio\_input\]}\] -res \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - sampling\=True, - max\_new\_tokens\=128, - use\_tts\_template\=True, - temperature\=0.3, - generate\_audio\=True, - output\_audio\_path\='output.wav', \# save the tts result to output\_audio\_path -) - -##### 可配置声音的语音对话 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%8F%AF%E9%85%8D%E7%BD%AE%E5%A3%B0%E9%9F%B3%E7%9A%84%E8%AF%AD%E9%9F%B3%E5%AF%B9%E8%AF%9D) - -点击查看个性化配置 MiniCPM-o 2.6 对话声音的 Python 代码。 - -ref\_audio, \_ \= librosa.load('./assets/voice\_01.wav', sr\=16000, mono\=True) \# load the reference audio - -\# Audio RolePlay: # With this mode, model will role-play the character based on the audio prompt. -sys\_prompt \= model.get\_sys\_prompt(ref\_audio\=ref\_audio, mode\='audio\_roleplay', language\='en') -user\_question \= {'role': 'user', 'content': \[librosa.load('xxx.wav', sr\=16000, mono\=True)\[0\]\]} - -\# Audio Assistant: # With this mode, model will speak with the voice in ref\_audio as a AI assistant. -\# sys\_prompt = model.get\_sys\_prompt(ref\_audio=ref\_audio, mode='audio\_assistant', language='en') -\# user\_question = {'role': 'user', 'content': \[librosa.load('xxx.wav', sr=16000, mono=True)\[0\]\]} # Try to ask something! - -msgs \= \[sys\_prompt, user\_question\] -res \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - sampling\=True, - max\_new\_tokens\=128, - use\_tts\_template\=True, - generate\_audio\=True, - temperature\=0.3, - output\_audio\_path\='result.wav', -) - -\# round two -history \= msgs.append({'role': 'assistant', 'content': res}) -user\_question \= {'role': 'user', 'content': \[librosa.load('xxx.wav', sr\=16000, mono\=True)\[0\]\]} -msgs \= history.append(user\_question) -res \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - sampling\=True, - max\_new\_tokens\=128, - use\_tts\_template\=True, - generate\_audio\=True, - temperature\=0.3, - output\_audio\_path\='result\_round\_2.wav', -) -print(res) - -##### 更多语音任务 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9B%B4%E5%A4%9A%E8%AF%AD%E9%9F%B3%E4%BB%BB%E5%8A%A1) - -点击查看 MiniCPM-o 2.6 完成更多语音任务的 Python 代码。 - -''' -Audio Understanding Task Prompt: -Speech: - ASR with ZH(same as AST en2zh): 请仔细听这段音频片段,并将其内容逐字记录。 - ASR with EN(same as AST zh2en): Please listen to the audio snippet carefully and transcribe the content. - Speaker Analysis: Based on the speaker's content, speculate on their gender, condition, age range, and health status. -General Audio: - Audio Caption: Summarize the main content of the audio. - Sound Scene Tagging: Utilize one keyword to convey the audio's content or the associated scene. -''' -task\_prompt \= "\\n" -audio\_input, \_ \= librosa.load('xxx.wav', sr\=16000, mono\=True) - -msgs \= \[{'role': 'user', 'content': \[task\_prompt,audio\_input\]}\] - -res \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - sampling\=True, - max\_new\_tokens\=128, - use\_tts\_template\=True, - generate\_audio\=True, - temperature\=0.3, - output\_audio\_path\='result.wav', -) -print(res) - -''' -Speech Generation Task Prompt: - Human Instruction-to-Speech: see https://voxinstruct.github.io/VoxInstruct/ - Example: - # 在新闻中,一个年轻男性兴致勃勃地说:“祝福亲爱的祖国母亲美丽富强!”他用低音调和低音量,慢慢地说出了这句话。 - # Delighting in a surprised tone, an adult male with low pitch and low volume comments:"One even gave my little dog a biscuit" This dialogue takes place at a leisurely pace, delivering a sense of excitement and surprise in the context. - Voice Cloning or Voice Creation: With this mode, model will act like a TTS model. -''' -\# Human Instruction-to-Speech: -task\_prompt \= '' #Try to make some Human Instruction-to-Speech prompt -msgs \= \[{'role': 'user', 'content': \[task\_prompt\]}\] \# you can try to use the same audio question - -\# Voice Cloning mode: With this mode, model will act like a TTS model. -\# sys\_prompt = model.get\_sys\_prompt(ref\_audio=ref\_audio, mode='voice\_cloning', language='en') -\# text\_prompt = f"Please read the text below." -\# user\_question = {'role': 'user', 'content': \[text\_prompt, "content that you want to read"\]} # using same voice in sys\_prompt to read the text. (Voice Cloning) -\# user\_question = {'role': 'user', 'content': \[text\_prompt, librosa.load('xxx.wav', sr=16000, mono=True)\[0\]\]} # using same voice in sys\_prompt to read 'xxx.wav'. (Voice Creation) - -msgs \= \[sys\_prompt, user\_question\] -res \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - sampling\=True, - max\_new\_tokens\=128, - use\_tts\_template\=True, - generate\_audio\=True, - temperature\=0.3, - output\_audio\_path\='result.wav', -) - -#### 多模态流式交互 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E6%A8%A1%E6%80%81%E6%B5%81%E5%BC%8F%E4%BA%A4%E4%BA%92) - -点击查看 MiniCPM-o 2.6 多模态流式交互的 Python 代码。 - -import math -import numpy as np -from PIL import Image -from moviepy.editor import VideoFileClip -import tempfile -import librosa -import soundfile as sf -import torch -from transformers import AutoModel, AutoTokenizer - -def get\_video\_chunk\_content(video\_path, flatten\=True): - video \= VideoFileClip(video\_path) - print('video\_duration:', video.duration) - - with tempfile.NamedTemporaryFile(suffix\=".wav", delete\=True) as temp\_audio\_file: - temp\_audio\_file\_path \= temp\_audio\_file.name - video.audio.write\_audiofile(temp\_audio\_file\_path, codec\="pcm\_s16le", fps\=16000) - audio\_np, sr \= librosa.load(temp\_audio\_file\_path, sr\=16000, mono\=True) - num\_units \= math.ceil(video.duration) - - \# 1 frame + 1s audio chunk - contents\= \[\] - for i in range(num\_units): - frame \= video.get\_frame(i+1) - image \= Image.fromarray((frame).astype(np.uint8)) - audio \= audio\_np\[sr\*i:sr\*(i+1)\] - if flatten: - contents.extend(\["", image, audio\]) - else: - contents.append(\["", image, audio\]) - - return contents - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True, - attn\_implementation\='sdpa', torch\_dtype\=torch.bfloat16) -model \= model.eval().cuda() -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-o-2\_6', trust\_remote\_code\=True) - -model.init\_tts() - -\# If you are using an older version of PyTorch, you might encounter this issue "weight\_norm\_fwd\_first\_dim\_kernel" not implemented for 'BFloat16', Please convert the TTS to float32 type. -\# model.tts.float() - -\# https://huggingface.co/openbmb/MiniCPM-o-2\_6/blob/main/assets/Skiing.mp4 -video\_path\="assets/Skiing.mp4" -sys\_msg \= model.get\_sys\_prompt(mode\='omni', language\='en') -\# if use voice clone prompt, please set ref\_audio -\# ref\_audio\_path = '/path/to/ref\_audio' -\# ref\_audio, \_ = librosa.load(ref\_audio\_path, sr=16000, mono=True) -\# sys\_msg = model.get\_sys\_prompt(ref\_audio=ref\_audio, mode='omni', language='en') - -contents \= get\_video\_chunk\_content(video\_path) -msg \= {"role":"user", "content": contents} -msgs \= \[sys\_msg, msg\] - -\# please set generate\_audio=True and output\_audio\_path to save the tts result -generate\_audio \= True -output\_audio\_path \= 'output.wav' - -res \= model.chat( - msgs\=msgs, - tokenizer\=tokenizer, - sampling\=True, - temperature\=0.5, - max\_new\_tokens\=4096, - omni\_input\=True, \# please set omni\_input=True when omni inference - use\_tts\_template\=True, - generate\_audio\=generate\_audio, - output\_audio\_path\=output\_audio\_path, - max\_slice\_nums\=1, - use\_image\_id\=False, - return\_dict\=True -) -print(res) - -点击查看多模态流式推理设置。 - -注意:流式推理存在轻微的性能下降,因为音频编码并非全局的。 - -\# a new conversation need reset session first, it will reset the kv-cache -model.reset\_session() - -contents \= get\_video\_chunk\_content(video\_path, flatten\=False) -session\_id \= '123' -generate\_audio \= True - -\# 1. prefill system prompt -res \= model.streaming\_prefill( - session\_id\=session\_id, - msgs\=\[sys\_msg\], - tokenizer\=tokenizer -) - -\# 2. prefill video/audio chunks -for content in contents: - msgs \= \[{"role":"user", "content": content}\] - res \= model.streaming\_prefill( - session\_id\=session\_id, - msgs\=msgs, - tokenizer\=tokenizer - ) - -\# 3. generate -res \= model.streaming\_generate( - session\_id\=session\_id, - tokenizer\=tokenizer, - temperature\=0.5, - generate\_audio\=generate\_audio -) - -audios \= \[\] -text \= "" - -if generate\_audio: - for r in res: - audio\_wav \= r.audio\_wav - sampling\_rate \= r.sampling\_rate - txt \= r.text - - audios.append(audio\_wav) - text += txt - - res \= np.concatenate(audios) - sf.write("output.wav", res, samplerate\=sampling\_rate) - print("text:", text) - print("audio saved to output.wav") -else: - for r in res: - text += r\['text'\] - print("text:", text) - -### 多卡推理 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A4%9A%E5%8D%A1%E6%8E%A8%E7%90%86) - -您可以通过将模型的层分布在多个低显存显卡(12 GB 或 16 GB)上,运行 MiniCPM-Llama3-V 2.5。请查看该[教程](https://github.com/OpenBMB/MiniCPM-V/blob/main/docs/inference_on_multiple_gpus.md),详细了解如何使用多张低显存显卡载入模型并进行推理。 - -### Mac 推理 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#mac-%E6%8E%A8%E7%90%86) - -点击查看 MiniCPM-Llama3-V 2.5 / MiniCPM-V 2.0 基于Mac MPS运行 (Apple silicon 或 AMD GPUs)的示例。 - -\# test.py Need more than 16GB memory to run. -import torch -from PIL import Image -from transformers import AutoModel, AutoTokenizer - -model \= AutoModel.from\_pretrained('openbmb/MiniCPM-Llama3-V-2\_5', trust\_remote\_code\=True, low\_cpu\_mem\_usage\=True) -model \= model.to(device\='mps') - -tokenizer \= AutoTokenizer.from\_pretrained('openbmb/MiniCPM-Llama3-V-2\_5', trust\_remote\_code\=True) -model.eval() - -image \= Image.open('./assets/hk\_OCR.jpg').convert('RGB') -question \= 'Where is this photo taken?' -msgs \= \[{'role': 'user', 'content': question}\] - -answer, context, \_ \= model.chat( - image\=image, - msgs\=msgs, - context\=None, - tokenizer\=tokenizer, - sampling\=True -) -print(answer) - -运行: - -PYTORCH\_ENABLE\_MPS\_FALLBACK=1 python test.py - -### 基于 llama.cpp、ollama、vLLM 的高效推理 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%9F%BA%E4%BA%8E-llamacppollamavllm-%E7%9A%84%E9%AB%98%E6%95%88%E6%8E%A8%E7%90%86) - -llama.cpp 用法请参考[我们的fork llama.cpp](https://github.com/OpenBMB/llama.cpp/tree/minicpmv-main/examples/llava/README-minicpmv2.6.md), 在iPad上可以支持 16~18 token/s 的流畅推理(测试环境:iPad Pro + M4)。 - -ollama 用法请参考[我们的fork ollama](https://github.com/OpenBMB/ollama/blob/minicpm-v2.6/examples/minicpm-v2.6/README.md), 在iPad上可以支持 16~18 token/s 的流畅推理(测试环境:iPad Pro + M4)。 - -点击查看, vLLM 现已官方支持MiniCPM-o 2.6、MiniCPM-V 2.6、MiniCPM-Llama3-V 2.5 和 MiniCPM-V 2.0。 1\. 安装 vLLM(>=0.7.1): - -2. 运行示例代码:(注意:如果使用本地路径的模型,请确保模型代码已更新到Hugging Face上的最新版) - -- [图文示例](https://docs.vllm.ai/en/latest/getting_started/examples/vision_language.html) -- [音频示例](https://docs.vllm.ai/en/latest/getting_started/examples/audio_language.html) - -## 微调 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%BE%AE%E8%B0%83) - -### 简易微调 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E7%AE%80%E6%98%93%E5%BE%AE%E8%B0%83-) - -我们支持使用 Huggingface Transformers 库简易地微调 MiniCPM-o 2.6、MiniCPM-V 2.6、MiniCPM-Llama3-V 2.5 和 MiniCPM-V 2.0 模型。 - -[参考文档](https://github.com/OpenBMB/MiniCPM-o/blob/main/finetune/readme.md) - -### 使用 Align-Anything - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E4%BD%BF%E7%94%A8-align-anything-) - -我们支持使用北大团队开发的 [Align-Anything](https://github.com/PKU-Alignment/align-anything) 框架微调 MiniCPM-o 系列模型,同时支持 DPO 和 SFT 在视觉和音频模态上的微调。Align-Anything 是一个用于对齐全模态大模型的高度可扩展框架,开源了[数据集、模型和评测](https://huggingface.co/datasets/PKU-Alignment/align-anything)。它支持了 30+ 开源基准,40+ 模型,以及包含SFT、SimPO、RLHF在内的多种算法,并提供了 30+ 直接可运行的脚本,适合初学者快速上手。 - -最佳实践: [MiniCPM-o 2.6](https://github.com/PKU-Alignment/align-anything/tree/main/scripts). - -### 使用 LLaMA-Factory - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E4%BD%BF%E7%94%A8-llama-factory-) - -我们支持使用 LLaMA-Factory 微调 MiniCPM-o 2.6 和 MiniCPM-V 2.6。LLaMA-Factory 提供了一种灵活定制 200 多个大型语言模型(LLM)微调(Lora/Full/Qlora)解决方案,无需编写代码,通过内置的 Web 用户界面 LLaMABoard 即可实现训练/推理/评估。它支持多种训练方法,如 sft/ppo/dpo/kto,并且还支持如 Galore/BAdam/LLaMA-Pro/Pissa/LongLoRA 等高级算法。 - -最佳实践: [MiniCPM-o 2.6 | MiniCPM-V 2.6](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/llamafactory_train_and_infer.md). - -### 使用 SWIFT 框架 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E4%BD%BF%E7%94%A8-swift-%E6%A1%86%E6%9E%B6-) - -我们支持使用 SWIFT 框架微调 MiniCPM-V 系列模型。SWIFT 支持近 200 种大语言模型和多模态大模型的训练、推理、评测和部署。支持 PEFT 提供的轻量训练方案和完整的 Adapters 库支持的最新训练技术如 NEFTune、LoRA+、LLaMA-PRO 等。 - -参考文档:[MiniCPM-V 1.0](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md),[MiniCPM-V 2.0](https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/minicpm-v-2%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md) [MiniCPM-V 2.6](https://github.com/modelscope/ms-swift/issues/1613). - -## FAQs - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#faqs) - -点击查看 [FAQs](https://github.com/OpenBMB/MiniCPM-o/blob/main/docs/faqs.md) - -## 模型局限性 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%A8%A1%E5%9E%8B%E5%B1%80%E9%99%90%E6%80%A7) - -我们实验发现 MiniCPM-o 2.6 存在一些显著的局限性,需要进一步研究和改进: - -- **不稳定的语音输出。** 语音生成可能会受到背景噪音和无意义声音的影响,表现不稳定。 -- **重复响应。** 当遇到连续相似的用户请求时,模型往往会重复相同的回答。 -- **Web Demo 延迟较高。** 用户在使用远程服务器上部署的 web demo 时可能会产生较高延迟。我们推荐用户在本地部署来获得更低延迟的体验。 - -## 模型协议 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%A8%A1%E5%9E%8B%E5%8D%8F%E8%AE%AE-) - -- 本仓库中代码依照 [Apache-2.0](https://github.com/OpenBMB/MiniCPM/blob/main/LICENSE) 协议开源 -- MiniCPM-o/V 模型权重的使用则需要遵循 [“MiniCPM模型商用许可协议.md”](https://github.com/OpenBMB/MiniCPM/blob/main/MiniCPM%E6%A8%A1%E5%9E%8B%E5%95%86%E7%94%A8%E8%AE%B8%E5%8F%AF%E5%8D%8F%E8%AE%AE.md)。 -- MiniCPM 模型权重对学术研究完全开放,在填写[“问卷”](https://modelbest.feishu.cn/share/base/form/shrcnpV5ZT9EJ6xYjh3Kx0J6v8g)进行登记后亦允许免费商业使用。 - -## 声明 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%A3%B0%E6%98%8E-) - -作为多模态大模型,MiniCPM-o/V 系列模型(包括 OmniLMM)通过学习大量的多模态数据来生成内容,但它无法理解、表达个人观点或价值判断,它所输出的任何内容都不代表模型开发者的观点和立场。 - -因此用户在使用本项目的系列模型生成的内容时,应自行负责对其进行评估和验证。如果由于使用本项目的系列开源模型而导致的任何问题,包括但不限于数据安全问题、公共舆论风险,或模型被误导、滥用、传播或不当利用所带来的任何风险和问题,我们将不承担任何责任。 - -## 机构 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%9C%BA%E6%9E%84-) - -本项目由以下机构共同开发: - -## 🌟 Star History - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#-star-history-) - - ![Star History Chart](https://camo.githubusercontent.com/81c0177bdfeaa118be4e602dea7caac117e91c835e412c3750f74290f21d6150/68747470733a2f2f6170692e737461722d686973746f72792e636f6d2f7376673f7265706f733d4f70656e424d422f4d696e6943504d2d6f26747970653d44617465) - -## 支持技术和其他多模态项目 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E6%94%AF%E6%8C%81%E6%8A%80%E6%9C%AF%E5%92%8C%E5%85%B6%E4%BB%96%E5%A4%9A%E6%A8%A1%E6%80%81%E9%A1%B9%E7%9B%AE-) - -👏 欢迎了解 MiniCPM-o/V 背后的支持技术和更多我们的多模态项目! - -[VisCPM](https://github.com/OpenBMB/VisCPM/tree/main) | [RLHF-V](https://github.com/RLHF-V/RLHF-V) | [LLaVA-UHD](https://github.com/thunlp/LLaVA-UHD) | [RLAIF-V](https://github.com/RLHF-V/RLAIF-V) - -## 引用 - -[](https://github.com/OpenBMB/MiniCPM-o/blob/main/README_zh.md#%E5%BC%95%E7%94%A8-) - -如果您觉得我们模型/代码/论文有帮助,请给我们 ⭐ 和 引用 📝,感谢! - -@article{yao2024minicpm, - title\={MiniCPM-V: A GPT-4V Level MLLM on Your Phone}, - author\={Yao, Yuan and Yu, Tianyu and Zhang, Ao and Wang, Chongyi and Cui, Junbo and Zhu, Hongji and Cai, Tianchi and Li, Haoyu and Zhao, Weilin and He, Zhihui and others}, - journal\={arXiv preprint arXiv:2408.01800}, - year\={2024} -} \ No newline at end of file diff --git a/ReadItLater Inbox/Note 2024-12-31 15-23-42.md b/ReadItLater Inbox/Note 2024-12-31 15-23-42.md deleted file mode 100755 index c66a844..0000000 --- a/ReadItLater Inbox/Note 2024-12-31 15-23-42.md +++ /dev/null @@ -1,2 +0,0 @@ -[[ReadItLater]] [[Textsnippet]] - diff --git a/ReadItLater Inbox/Note 2025-12-01 09-50-38.md b/ReadItLater Inbox/Note 2025-12-01 09-50-38.md deleted file mode 100644 index c66a844..0000000 --- a/ReadItLater Inbox/Note 2025-12-01 09-50-38.md +++ /dev/null @@ -1,2 +0,0 @@ -[[ReadItLater]] [[Textsnippet]] - diff --git a/conflict-files-obsidian-git.md b/conflict-files-obsidian-git.md deleted file mode 100644 index 60a9e2f..0000000 --- a/conflict-files-obsidian-git.md +++ /dev/null @@ -1,38 +0,0 @@ -# Conflicts -Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push` -(This file will automatically be deleted before commit) -[[#Additional Instructions]] available below file list - -- Not a file: .obsidian/workspace.json -- Not a file: .smart-env/event_logs/event_logs.ajson -- Not a file: .smart-env/multi/200-area_Blog_Blog_md.ajson -- Not a file: .smart-env/multi/200-area_Finance_Finance_md.ajson -- Not a file: .smart-env/multi/200-area_Health_Health_md.ajson -- Not a file: .smart-env/multi/200-area_Health_自行车_md.ajson -- Not a file: .smart-env/multi/200-area_House_Brand_and_models_md.ajson -- Not a file: .smart-env/multi/200-area_House_House_md.ajson -- Not a file: .smart-env/multi/200-area_Personal_Development_Design_Your_Habits_md.ajson -- Not a file: .smart-env/multi/200-area_Personal_Development_Personal_Development_md.ajson -- Not a file: .smart-env/multi/200-area_Productivity_Productivity_md.ajson -- Not a file: .smart-env/multi/200-area_Productivity_Task_triage_md.ajson -- Not a file: .smart-env/multi/300-resources_Community_Community_md.ajson -- Not a file: .smart-env/multi/300-resources_Cooking_Cooking_md.ajson -- Not a file: .smart-env/multi/300-resources_Development_Development_md.ajson -- Not a file: .smart-env/multi/300-resources_Drawing_Drawing_md.ajson -- Not a file: .smart-env/multi/300-resources_Gaming_Gaming_md.ajson -- Not a file: .smart-env/multi/300-resources_Marketing_Marketing_md.ajson -- Not a file: .smart-env/multi/300-resources_Personal_Knowledge_Management_Personal_Knowledge_Management_md.ajson -- Not a file: .smart-env/multi/300-resources_Productivity_Productivity_md.ajson -- Not a file: .smart-env/multi/300-resources_Travel_Travel_md.ajson -- Not a file: .smart-env/multi/300-resources_Writing_Writing_md.ajson - -# Additional Instructions -I strongly recommend to use "Source mode" for viewing the conflicted files. For simple conflicts, in each file listed above replace every occurrence of the following text blocks with the desired text. - -```diff -<<<<<<< HEAD - File changes in local repository -======= - File changes in remote repository ->>>>>>> origin/main -``` \ No newline at end of file