@blinkk/root-cms 1.0.0-beta.3 → 1.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/app.js CHANGED
@@ -83,13 +83,17 @@ async function renderApp(req, res, options) {
83
83
  const ctx = {
84
84
  rootConfig: {
85
85
  projectId: cmsConfig.id || "default",
86
- domain: rootConfig.domain || "https://example.com"
86
+ projectName: cmsConfig.name || cmsConfig.id || "",
87
+ domain: rootConfig.domain || "https://example.com",
88
+ gci: cmsConfig.gci ?? "https://gci.rootjs.dev"
87
89
  },
88
90
  firebaseConfig: options.firebaseConfig,
89
91
  collections
90
92
  };
93
+ const projectName = cmsConfig.name || cmsConfig.id || "";
94
+ const title = projectName ? `${projectName} \u2013 Root.js CMS` : "Root.js CMS";
91
95
  const mainHtml = renderToString(/* @__PURE__ */ jsx(App, {
92
- title: "Root.js CMS",
96
+ title,
93
97
  ctx
94
98
  }));
95
99
  let html = `<!doctype html>
@@ -110,6 +114,9 @@ function SignIn(props) {
110
114
  children: [
111
115
  /* @__PURE__ */ jsxs("head", {
112
116
  children: [
117
+ /* @__PURE__ */ jsx("meta", {
118
+ charset: "utf-8"
119
+ }),
113
120
  /* @__PURE__ */ jsx("title", {
114
121
  children: props.title
115
122
  }),
@@ -117,6 +124,10 @@ function SignIn(props) {
117
124
  rel: "preconnect",
118
125
  href: "https://fonts.googleapis.com"
119
126
  }),
127
+ /* @__PURE__ */ jsx("meta", {
128
+ name: "viewport",
129
+ content: "width=device-width, initial-scale=1.0"
130
+ }),
120
131
  /* @__PURE__ */ jsx("link", {
121
132
  rel: "preconnect",
122
133
  href: "https://fonts.gstatic.com",
@@ -187,4 +198,4 @@ export {
187
198
  renderApp,
188
199
  renderSignIn
189
200
  };
190
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9hcHAudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge1JlcXVlc3QsIFJlc3BvbnNlfSBmcm9tICdAYmxpbmtrL3Jvb3QnO1xuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tICcuL3NjaGVtYS5qcyc7XG5pbXBvcnQge3JlbmRlciBhcyByZW5kZXJUb1N0cmluZ30gZnJvbSAncHJlYWN0LXJlbmRlci10by1zdHJpbmcnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuaW50ZXJmYWNlIEFwcFByb3BzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY3R4OiBhbnk7XG59XG5cbmZ1bmN0aW9uIEFwcChwcm9wczogQXBwUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8dGl0bGU+e3Byb3BzLnRpdGxlfTwvdGl0bGU+XG4gICAgICAgIDxsaW5rIHJlbD1cInByZWNvbm5lY3RcIiBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbVwiIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwicHJlY29ubmVjdFwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb21cIlxuICAgICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmtcbiAgICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7OTAwJmRpc3BsYXk9c3dhcFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwic3R5bGVzaGVldFwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9R29vZ2xlK1NhbnM6d2dodEA1MDAmZGlzcGxheT1zd2FwXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJ7Q1NTX1VSTH1cIiAvPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxkaXYgaWQ9XCJyb290XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib290c3RyYXBcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJib290c3RyYXBfX2xvYWRpbmdcIj5Mb2FkaW5nLi4uPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9vdHN0cmFwLWVycm9yXCI+XG4gICAgICAgICAgICAgIElmIHRoaXMgcGFnZSBmYWlscyB0byBsb2FkLCB0cnkgYSBmb3JjZSByZWZyZXNoIGJ5IGhvbGRpbmcgdGhlXG4gICAgICAgICAgICAgIHNoaWZ0IGtleSB3aGlsZSByZWZyZXNoaW5nIHRoZSBwYWdlLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYHdpbmRvdy5fX1JPT1RfQ1RYID0gJHtKU09OLnN0cmluZ2lmeShwcm9wcy5jdHgpfWAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwie0pTX1VSTH1cIj48L3NjcmlwdD5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJBcHAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBvcHRpb25zOiBhbnkpIHtcbiAgY29uc3QgY29sbGVjdGlvbk1vZHVsZXMgPSBpbXBvcnQubWV0YS5nbG9iKCcvY29sbGVjdGlvbnMvKi5zY2hlbWEudHMnLCB7XG4gICAgZWFnZXI6IHRydWUsXG4gIH0pIGFzIGFueTtcbiAgY29uc3QgY29sbGVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb24+ID0ge307XG4gIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25Nb2R1bGVzKS5mb3JFYWNoKChtb2R1bGVJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY29sbGVjdGlvbklkID0gcGF0aC5wYXJzZShtb2R1bGVJZCkuYmFzZS5zcGxpdCgnLicpWzBdO1xuICAgIGNvbnN0IG1vZHVsZSA9IGNvbGxlY3Rpb25Nb2R1bGVzW21vZHVsZUlkXTtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gbW9kdWxlLmRlZmF1bHQgYXMgQ29sbGVjdGlvbjtcbiAgICBjb2xsZWN0aW9uc1tjb2xsZWN0aW9uSWRdID0gY29sbGVjdGlvbjtcbiAgfSk7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBvcHRpb25zLnJvb3RDb25maWcgfHwge307XG4gIGNvbnN0IGNtc0NvbmZpZyA9IG9wdGlvbnMuY21zQ29uZmlnIHx8IHt9O1xuICBjb25zdCBjdHggPSB7XG4gICAgcm9vdENvbmZpZzoge1xuICAgICAgcHJvamVjdElkOiBjbXNDb25maWcuaWQgfHwgJ2RlZmF1bHQnLFxuICAgICAgZG9tYWluOiByb290Q29uZmlnLmRvbWFpbiB8fCAnaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gICAgfSxcbiAgICBmaXJlYmFzZUNvbmZpZzogb3B0aW9ucy5maXJlYmFzZUNvbmZpZyxcbiAgICBjb2xsZWN0aW9uczogY29sbGVjdGlvbnMsXG4gIH07XG4gIGNvbnN0IG1haW5IdG1sID0gcmVuZGVyVG9TdHJpbmcoPEFwcCB0aXRsZT1cIlJvb3QuanMgQ01TXCIgY3R4PXtjdHh9IC8+KTtcbiAgbGV0IGh0bWwgPSBgPCFkb2N0eXBlIGh0bWw+XFxuJHttYWluSHRtbH1gO1xuICBpZiAocmVxLnZpdGVTZXJ2ZXIpIHtcbiAgICBjb25zdCB1aUNzc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndWkvdWkuY3NzJyk7XG4gICAgY29uc3QgdWlKc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndWkvdWkuanMnKTtcbiAgICBjb25zdCB0cGwgPSBodG1sXG4gICAgICAucmVwbGFjZSgne0NTU19VUkx9JywgYC9AZnMke3VpQ3NzUGF0aH1gKVxuICAgICAgLnJlcGxhY2UoJ3tKU19VUkx9JywgYC9AZnMke3VpSnNQYXRofWApO1xuICAgIGh0bWwgPSBhd2FpdCByZXEudml0ZVNlcnZlciEudHJhbnNmb3JtSW5kZXhIdG1sKHJlcS5vcmlnaW5hbFVybCwgdHBsKTtcbiAgfSBlbHNlIHtcbiAgICBodG1sID0gaHRtbFxuICAgICAgLnJlcGxhY2UoJ3tDU1NfVVJMfScsICcvY21zL3N0YXRpYy91aS5jc3MnKVxuICAgICAgLnJlcGxhY2UoJ3tKU19VUkx9JywgJy9jbXMvc3RhdGljL3VpLmpzJyk7XG4gIH1cbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpO1xuICByZXMuc2VuZChodG1sKTtcbn1cblxuaW50ZXJmYWNlIFNpZ25JblByb3BzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY3R4OiBhbnk7XG59XG5cbmZ1bmN0aW9uIFNpZ25Jbihwcm9wczogU2lnbkluUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8dGl0bGU+e3Byb3BzLnRpdGxlfTwvdGl0bGU+XG4gICAgICAgIDxsaW5rIHJlbD1cInByZWNvbm5lY3RcIiBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbVwiIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwicHJlY29ubmVjdFwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb21cIlxuICAgICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmtcbiAgICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7OTAwJmRpc3BsYXk9c3dhcFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwie0NTU19VUkx9XCIgLz5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICA8ZGl2IGlkPVwicm9vdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9vdHN0cmFwXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwiYm9vdHN0cmFwX19sb2FkaW5nXCI+TG9hZGluZy4uLjwvaDE+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvb3RzdHJhcC1lcnJvclwiPlxuICAgICAgICAgICAgICBJZiB0aGlzIHBhZ2UgZmFpbHMgdG8gbG9hZCwgdHJ5IGEgZm9yY2UgcmVmcmVzaCBieSBob2xkaW5nIHRoZVxuICAgICAgICAgICAgICBzaGlmdCBrZXkgd2hpbGUgcmVmcmVzaGluZyB0aGUgcGFnZS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNjcmlwdFxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICBfX2h0bWw6IGB3aW5kb3cuX19ST09UX0NUWCA9ICR7SlNPTi5zdHJpbmdpZnkocHJvcHMuY3R4KX1gLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICAgIDxzY3JpcHQgdHlwZT1cIm1vZHVsZVwiIHNyYz1cIntKU19VUkx9XCI+PC9zY3JpcHQ+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclNpZ25JbihyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG9wdGlvbnM6IGFueSkge1xuICBjb25zdCBjdHggPSB7ZmlyZWJhc2VDb25maWc6IG9wdGlvbnMuZmlyZWJhc2VDb25maWd9O1xuICBjb25zdCBtYWluSHRtbCA9IHJlbmRlclRvU3RyaW5nKDxTaWduSW4gdGl0bGU9XCJTaWduIGluXCIgY3R4PXtjdHh9IC8+KTtcbiAgbGV0IGh0bWwgPSBgPCFkb2N0eXBlIGh0bWw+XFxuJHttYWluSHRtbH1gO1xuICBpZiAocmVxLnZpdGVTZXJ2ZXIpIHtcbiAgICBjb25zdCBjc3NQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJ3VpL3NpZ25pbi5jc3MnKTtcbiAgICBjb25zdCBqc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndWkvc2lnbmluLmpzJyk7XG4gICAgY29uc3QgdHBsID0gaHRtbFxuICAgICAgLnJlcGxhY2UoJ3tDU1NfVVJMfScsIGAvQGZzJHtjc3NQYXRofWApXG4gICAgICAucmVwbGFjZSgne0pTX1VSTH0nLCBgL0BmcyR7anNQYXRofWApO1xuICAgIGh0bWwgPSBhd2FpdCByZXEudml0ZVNlcnZlciEudHJhbnNmb3JtSW5kZXhIdG1sKHJlcS5vcmlnaW5hbFVybCwgdHBsKTtcbiAgfSBlbHNlIHtcbiAgICBodG1sID0gaHRtbFxuICAgICAgLnJlcGxhY2UoJ3tDU1NfVVJMfScsICcvY21zL3N0YXRpYy9zaWduaW4uY3NzJylcbiAgICAgIC5yZXBsYWNlKCd7SlNfVVJMfScsICcvY21zL3N0YXRpYy9zaWduaW4uanMnKTtcbiAgfVxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJyk7XG4gIHJlcy5zZW5kKGh0bWwpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVBLFNBQVEsVUFBVSxzQkFB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
201
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9hcHAudHN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge1JlcXVlc3QsIFJlc3BvbnNlfSBmcm9tICdAYmxpbmtrL3Jvb3QnO1xuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tICcuL3NjaGVtYS5qcyc7XG5pbXBvcnQge3JlbmRlciBhcyByZW5kZXJUb1N0cmluZ30gZnJvbSAncHJlYWN0LXJlbmRlci10by1zdHJpbmcnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxuaW50ZXJmYWNlIEFwcFByb3BzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY3R4OiBhbnk7XG59XG5cbmZ1bmN0aW9uIEFwcChwcm9wczogQXBwUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8dGl0bGU+e3Byb3BzLnRpdGxlfTwvdGl0bGU+XG4gICAgICAgIDxsaW5rIHJlbD1cInByZWNvbm5lY3RcIiBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbVwiIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwicHJlY29ubmVjdFwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb21cIlxuICAgICAgICAgIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmtcbiAgICAgICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7OTAwJmRpc3BsYXk9c3dhcFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsaW5rXG4gICAgICAgICAgcmVsPVwic3R5bGVzaGVldFwiXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9R29vZ2xlK1NhbnM6d2dodEA1MDAmZGlzcGxheT1zd2FwXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJ7Q1NTX1VSTH1cIiAvPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxkaXYgaWQ9XCJyb290XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib290c3RyYXBcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJib290c3RyYXBfX2xvYWRpbmdcIj5Mb2FkaW5nLi4uPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9vdHN0cmFwLWVycm9yXCI+XG4gICAgICAgICAgICAgIElmIHRoaXMgcGFnZSBmYWlscyB0byBsb2FkLCB0cnkgYSBmb3JjZSByZWZyZXNoIGJ5IGhvbGRpbmcgdGhlXG4gICAgICAgICAgICAgIHNoaWZ0IGtleSB3aGlsZSByZWZyZXNoaW5nIHRoZSBwYWdlLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYHdpbmRvdy5fX1JPT1RfQ1RYID0gJHtKU09OLnN0cmluZ2lmeShwcm9wcy5jdHgpfWAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwie0pTX1VSTH1cIj48L3NjcmlwdD5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJBcHAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBvcHRpb25zOiBhbnkpIHtcbiAgY29uc3QgY29sbGVjdGlvbk1vZHVsZXMgPSBpbXBvcnQubWV0YS5nbG9iKCcvY29sbGVjdGlvbnMvKi5zY2hlbWEudHMnLCB7XG4gICAgZWFnZXI6IHRydWUsXG4gIH0pIGFzIGFueTtcbiAgY29uc3QgY29sbGVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbGxlY3Rpb24+ID0ge307XG4gIE9iamVjdC5rZXlzKGNvbGxlY3Rpb25Nb2R1bGVzKS5mb3JFYWNoKChtb2R1bGVJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY29sbGVjdGlvbklkID0gcGF0aC5wYXJzZShtb2R1bGVJZCkuYmFzZS5zcGxpdCgnLicpWzBdO1xuICAgIGNvbnN0IG1vZHVsZSA9IGNvbGxlY3Rpb25Nb2R1bGVzW21vZHVsZUlkXTtcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gbW9kdWxlLmRlZmF1bHQgYXMgQ29sbGVjdGlvbjtcbiAgICBjb2xsZWN0aW9uc1tjb2xsZWN0aW9uSWRdID0gY29sbGVjdGlvbjtcbiAgfSk7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBvcHRpb25zLnJvb3RDb25maWcgfHwge307XG4gIGNvbnN0IGNtc0NvbmZpZyA9IG9wdGlvbnMuY21zQ29uZmlnIHx8IHt9O1xuICBjb25zdCBjdHggPSB7XG4gICAgcm9vdENvbmZpZzoge1xuICAgICAgcHJvamVjdElkOiBjbXNDb25maWcuaWQgfHwgJ2RlZmF1bHQnLFxuICAgICAgcHJvamVjdE5hbWU6IGNtc0NvbmZpZy5uYW1lIHx8IGNtc0NvbmZpZy5pZCB8fCAnJyxcbiAgICAgIGRvbWFpbjogcm9vdENvbmZpZy5kb21haW4gfHwgJ2h0dHBzOi8vZXhhbXBsZS5jb20nLFxuICAgICAgZ2NpOiBjbXNDb25maWcuZ2NpID8/ICdodHRwczovL2djaS5yb290anMuZGV2JyxcbiAgICB9LFxuICAgIGZpcmViYXNlQ29uZmlnOiBvcHRpb25zLmZpcmViYXNlQ29uZmlnLFxuICAgIGNvbGxlY3Rpb25zOiBjb2xsZWN0aW9ucyxcbiAgfTtcbiAgY29uc3QgcHJvamVjdE5hbWUgPSBjbXNDb25maWcubmFtZSB8fCBjbXNDb25maWcuaWQgfHwgJyc7XG4gIGNvbnN0IHRpdGxlID0gcHJvamVjdE5hbWUgPyBgJHtwcm9qZWN0TmFtZX0gXHUyMDEzIFJvb3QuanMgQ01TYCA6ICdSb290LmpzIENNUyc7XG5cbiAgY29uc3QgbWFpbkh0bWwgPSByZW5kZXJUb1N0cmluZyg8QXBwIHRpdGxlPXt0aXRsZX0gY3R4PXtjdHh9IC8+KTtcbiAgbGV0IGh0bWwgPSBgPCFkb2N0eXBlIGh0bWw+XFxuJHttYWluSHRtbH1gO1xuICBpZiAocmVxLnZpdGVTZXJ2ZXIpIHtcbiAgICBjb25zdCB1aUNzc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndWkvdWkuY3NzJyk7XG4gICAgY29uc3QgdWlKc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndWkvdWkuanMnKTtcbiAgICBjb25zdCB0cGwgPSBodG1sXG4gICAgICAucmVwbGFjZSgne0NTU19VUkx9JywgYC9AZnMke3VpQ3NzUGF0aH1gKVxuICAgICAgLnJlcGxhY2UoJ3tKU19VUkx9JywgYC9AZnMke3VpSnNQYXRofWApO1xuICAgIGh0bWwgPSBhd2FpdCByZXEudml0ZVNlcnZlciEudHJhbnNmb3JtSW5kZXhIdG1sKHJlcS5vcmlnaW5hbFVybCwgdHBsKTtcbiAgfSBlbHNlIHtcbiAgICBodG1sID0gaHRtbFxuICAgICAgLnJlcGxhY2UoJ3tDU1NfVVJMfScsICcvY21zL3N0YXRpYy91aS5jc3MnKVxuICAgICAgLnJlcGxhY2UoJ3tKU19VUkx9JywgJy9jbXMvc3RhdGljL3VpLmpzJyk7XG4gIH1cbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbCcpO1xuICByZXMuc2VuZChodG1sKTtcbn1cblxuaW50ZXJmYWNlIFNpZ25JblByb3BzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgY3R4OiBhbnk7XG59XG5cbmZ1bmN0aW9uIFNpZ25Jbihwcm9wczogU2lnbkluUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8bWV0YSBjaGFyc2V0PVwidXRmLThcIiAvPlxuICAgICAgICA8dGl0bGU+e3Byb3BzLnRpdGxlfTwvdGl0bGU+XG4gICAgICAgIDxsaW5rIHJlbD1cInByZWNvbm5lY3RcIiBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbVwiIC8+XG4gICAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wXCIgLz5cbiAgICAgICAgPGxpbmtcbiAgICAgICAgICByZWw9XCJwcmVjb25uZWN0XCJcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbVwiXG4gICAgICAgICAgY3Jvc3NPcmlnaW49XCJhbm9ueW1vdXNcIlxuICAgICAgICAvPlxuICAgICAgICA8bGlua1xuICAgICAgICAgIHJlbD1cInN0eWxlc2hlZXRcIlxuICAgICAgICAgIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMDs5MDAmZGlzcGxheT1zd2FwXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJ7Q1NTX1VSTH1cIiAvPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxkaXYgaWQ9XCJyb290XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib290c3RyYXBcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJib290c3RyYXBfX2xvYWRpbmdcIj5Mb2FkaW5nLi4uPC9oMT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9vdHN0cmFwLWVycm9yXCI+XG4gICAgICAgICAgICAgIElmIHRoaXMgcGFnZSBmYWlscyB0byBsb2FkLCB0cnkgYSBmb3JjZSByZWZyZXNoIGJ5IGhvbGRpbmcgdGhlXG4gICAgICAgICAgICAgIHNoaWZ0IGtleSB3aGlsZSByZWZyZXNoaW5nIHRoZSBwYWdlLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYHdpbmRvdy5fX1JPT1RfQ1RYID0gJHtKU09OLnN0cmluZ2lmeShwcm9wcy5jdHgpfWAsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAgPHNjcmlwdCB0eXBlPVwibW9kdWxlXCIgc3JjPVwie0pTX1VSTH1cIj48L3NjcmlwdD5cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyU2lnbkluKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgb3B0aW9uczogYW55KSB7XG4gIGNvbnN0IGN0eCA9IHtmaXJlYmFzZUNvbmZpZzogb3B0aW9ucy5maXJlYmFzZUNvbmZpZ307XG4gIGNvbnN0IG1haW5IdG1sID0gcmVuZGVyVG9TdHJpbmcoPFNpZ25JbiB0aXRsZT1cIlNpZ24gaW5cIiBjdHg9e2N0eH0gLz4pO1xuICBsZXQgaHRtbCA9IGA8IWRvY3R5cGUgaHRtbD5cXG4ke21haW5IdG1sfWA7XG4gIGlmIChyZXEudml0ZVNlcnZlcikge1xuICAgIGNvbnN0IGNzc1BhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndWkvc2lnbmluLmNzcycpO1xuICAgIGNvbnN0IGpzUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICd1aS9zaWduaW4uanMnKTtcbiAgICBjb25zdCB0cGwgPSBodG1sXG4gICAgICAucmVwbGFjZSgne0NTU19VUkx9JywgYC9AZnMke2Nzc1BhdGh9YClcbiAgICAgIC5yZXBsYWNlKCd7SlNfVVJMfScsIGAvQGZzJHtqc1BhdGh9YCk7XG4gICAgaHRtbCA9IGF3YWl0IHJlcS52aXRlU2VydmVyIS50cmFuc2Zvcm1JbmRleEh0bWwocmVxLm9yaWdpbmFsVXJsLCB0cGwpO1xuICB9IGVsc2Uge1xuICAgIGh0bWwgPSBodG1sXG4gICAgICAucmVwbGFjZSgne0NTU19VUkx9JywgJy9jbXMvc3RhdGljL3NpZ25pbi5jc3MnKVxuICAgICAgLnJlcGxhY2UoJ3tKU19VUkx9JywgJy9jbXMvc3RhdGljL3NpZ25pbi5qcycpO1xuICB9XG4gIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgcmVzLnNlbmQoaHRtbCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBRUEsU0FBUSxVQUFVLHNCQUFxQjtBQUN2QyxPQUFPLFVBQVU7QUFDakIsU0FBUSxxQkFBb0I7QUFZdEIsU0FDRSxLQURGO0FBVk4sSUFBTSxZQUFZLEtBQUssUUFBUSxjQUFjLFlBQVksR0FBRyxDQUFDO0FBTzdELFNBQVMsSUFBSSxPQUFpQjtBQUM1QixTQUNFLHFCQUFDO0FBQUEsSUFDQztBQUFBLDJCQUFDO0FBQUEsUUFDQztBQUFBLDhCQUFDO0FBQUEsWUFBTyxnQkFBTTtBQUFBLFdBQU07QUFBQSxVQUNwQixvQkFBQztBQUFBLFlBQUssS0FBSTtBQUFBLFlBQWEsTUFBSztBQUFBLFdBQStCO0FBQUEsVUFDM0Qsb0JBQUM7QUFBQSxZQUNDLEtBQUk7QUFBQSxZQUNKLE1BQUs7QUFBQSxZQUNMLGFBQVk7QUFBQSxXQUNkO0FBQUEsVUFDQSxvQkFBQztBQUFBLFlBQ0MsS0FBSTtBQUFBLFlBQ0osTUFBSztBQUFBLFdBQ1A7QUFBQSxVQUNBLG9CQUFDO0FBQUEsWUFDQyxLQUFJO0FBQUEsWUFDSixNQUFLO0FBQUEsV0FDUDtBQUFBLFVBQ0Esb0JBQUM7QUFBQSxZQUFLLEtBQUk7QUFBQSxZQUFhLE1BQUs7QUFBQSxXQUFZO0FBQUE7QUFBQSxPQUMxQztBQUFBLE1B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QUFBQSxVQUNBLG9CQUFDO0FBQUEsWUFDQyxLQUFJO0FBQUEsWUFDSixNQUFLO0FBQUEsV0FDUDtBQUFBLFVBQ0Esb0JBQUM7QUFBQSxZQUFLLEtBQUk7QUFBQSxZQUFhLE1BQUs7QUFBQSxXQUFZO0FBQUE7QUFBQSxPQUMxQztBQUFBLE1BQ0EscUJBQUM7QUFBQSxRQUNDO0FBQUEsOEJBQUM7QUFBQSxZQUFJLElBQUc7QUFBQSxZQUNOLCtCQUFDO0FBQUEsY0FBSSxXQUFVO0FBQUEsY0FDYjtBQUFBLG9DQUFDO0FBQUEsa0JBQUcsV0FBVTtBQUFBLGtCQUFxQjtBQUFBLGlCQUFVO0FBQUEsZ0JBQzdDLG9CQUFDO0FBQUEsa0JBQUksV0FBVTtBQUFBLGtCQUFrQjtBQUFBLGlCQUdqQztBQUFBO0FBQUEsYUFDRjtBQUFBLFdBQ0Y7QUFBQSxVQUNBLG9CQUFDO0FBQUEsWUFDQyx5QkFBeUI7QUFBQSxjQUN2QixRQUFRLHVCQUF1QixLQUFLLFVBQVUsTUFBTSxHQUFHO0FBQUEsWUFDekQ7QUFBQSxXQUNGO0FBQUEsVUFDQSxvQkFBQztBQUFBLFlBQU8sTUFBSztBQUFBLFlBQVMsS0FBSTtBQUFBLFdBQVc7QUFBQTtBQUFBLE9BQ3ZDO0FBQUE7QUFBQSxHQUNGO0FBRUo7QUFDQSxlQUFzQixhQUFhLEtBQWMsS0FBZSxTQUFjO0FBQzVFLFFBQU0sTUFBTSxFQUFDLGdCQUFnQixRQUFRLGVBQWM7QUFDbkQsUUFBTSxXQUFXLGVBQWUsb0JBQUM7QUFBQSxJQUFPLE9BQU07QUFBQSxJQUFVO0FBQUEsR0FBVSxDQUFFO0FBQ3BFLE1BQUksT0FBTztBQUFBLEVBQW9CO0FBQy9CLE1BQUksSUFBSSxZQUFZO0FBQ2xCLFVBQU0sVUFBVSxLQUFLLEtBQUssV0FBVyxlQUFlO0FBQ3BELFVBQU0sU0FBUyxLQUFLLEtBQUssV0FBVyxjQUFjO0FBQ2xELFVBQU0sTUFBTSxLQUNULFFBQVEsYUFBYSxPQUFPLFNBQVMsRUFDckMsUUFBUSxZQUFZLE9BQU8sUUFBUTtBQUN0QyxXQUFPLE1BQU0sSUFBSSxXQUFZLG1CQUFtQixJQUFJLGFBQWEsR0FBRztBQUFBLEVBQ3RFLE9BQU87QUFDTCxXQUFPLEtBQ0osUUFBUSxhQUFhLHdCQUF3QixFQUM3QyxRQUFRLFlBQVksdUJBQXVCO0FBQUEsRUFDaEQ7QUFDQSxNQUFJLFVBQVUsZ0JBQWdCLFdBQVc7QUFDekMsTUFBSSxLQUFLLElBQUk7QUFDZjsiLAogICJuYW1lcyI6IFtdCn0K
package/dist/core.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { s as schema } from './schema-f8000274.js';
1
+ export { s as schema } from './schema-e7beb758.js';
2
2
  import * as firebase_admin_app from 'firebase-admin/app';
3
3
  import { RootConfig } from '@blinkk/root';
4
4
  import { CMSPlugin } from './plugin.js';
package/dist/core.js CHANGED
@@ -135,4 +135,4 @@ export {
135
135
  normalizeData,
136
136
  schema_exports as schema
137
137
  };
138
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9zY2hlbWEudHMiLCAiLi4vY29yZS9ydW50aW1lLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge0Z1bmN0aW9uYWxDb21wb25lbnR9IGZyb20gJ3ByZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRmllbGRQcm9wcyB7XG4gIHR5cGU6IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoZWxwPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZGVmYXVsdD86IGFueTtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGVwcmVjYXRlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ0ZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ3N0cmluZyc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG4gIHRyYW5zbGF0ZT86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnaW5wdXQnIHwgJ3RleHRhcmVhJztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcoZmllbGQ6IE9taXQ8U3RyaW5nRmllbGQsICd0eXBlJz4pOiBTdHJpbmdGaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdzdHJpbmcnfTtcbn1cblxuZXhwb3J0IHR5cGUgTnVtYmVyRmllbGQgPSBDb21tb25GaWVsZFByb3BzICYge1xuICB0eXBlOiAnbnVtYmVyJztcbiAgZGVmYXVsdD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXIoZmllbGQ6IE9taXQ8TnVtYmVyRmllbGQsICd0eXBlJz4pOiBOdW1iZXJGaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdudW1iZXInfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZUZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ2RhdGUnO1xuICBkZWZhdWx0Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoZmllbGQ6IE9taXQ8RGF0ZUZpZWxkLCAndHlwZSc+KTogRGF0ZUZpZWxkIHtcbiAgcmV0dXJuIHsuLi5maWVsZCwgdHlwZTogJ2RhdGUnfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZVRpbWVGaWVsZCA9IENvbW1vbkZpZWxkUHJvcHMgJiB7XG4gIHR5cGU6ICdkYXRldGltZSc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWUoZmllbGQ6IE9taXQ8RGF0ZVRpbWVGaWVsZCwgJ3R5cGUnPik6IERhdGVUaW1lRmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnZGF0ZXRpbWUnfTtcbn1cblxuZXhwb3J0IHR5cGUgQm9vbGVhbkZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ2Jvb2xlYW4nO1xuICBkZWZhdWx0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBib29sZWFuKGZpZWxkOiBPbWl0PEJvb2xlYW5GaWVsZCwgJ3R5cGUnPik6IEJvb2xlYW5GaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdib29sZWFuJ307XG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ3NlbGVjdCc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBcnJheTx7dmFsdWU6IHN0cmluZzsgbGFiZWw/OiBzdHJpbmd9PiB8IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChmaWVsZDogT21pdDxTZWxlY3RGaWVsZCwgJ3R5cGUnPik6IFNlbGVjdEZpZWxkIHtcbiAgcmV0dXJuIHsuLi5maWVsZCwgdHlwZTogJ3NlbGVjdCd9O1xufVxuXG5leHBvcnQgdHlwZSBNdWx0aVNlbGVjdEZpZWxkID0gT21pdDxTZWxlY3RGaWVsZCwgJ3R5cGUnPiAmIHtcbiAgdHlwZTogJ211bHRpc2VsZWN0JztcbiAgLyoqIFNldCB0byBgdHJ1ZWAgdG8gYWxsb3cgdXNlcnMgdG8gY3JlYXRlIGFyYml0cmFyeSB2YWx1ZXMuICovXG4gIGNyZWF0YWJsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlzZWxlY3QoXG4gIGZpZWxkOiBPbWl0PE11bHRpU2VsZWN0RmllbGQsICd0eXBlJz5cbik6IE11bHRpU2VsZWN0RmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnbXVsdGlzZWxlY3QnfTtcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VGaWVsZCA9IENvbW1vbkZpZWxkUHJvcHMgJiB7XG4gIHR5cGU6ICdpbWFnZSc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2UoZmllbGQ6IE9taXQ8SW1hZ2VGaWVsZCwgJ3R5cGUnPik6IEltYWdlRmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnaW1hZ2UnfTtcbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0RmllbGQgPSBDb21tb25GaWVsZFByb3BzICYge1xuICB0eXBlOiAnb2JqZWN0JztcbiAgZmllbGRzOiBGaWVsZFdpdGhJZFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdChmaWVsZDogT21pdDxPYmplY3RGaWVsZCwgJ3R5cGUnPik6IE9iamVjdEZpZWxkIHtcbiAgcmV0dXJuIHsuLi5maWVsZCwgdHlwZTogJ29iamVjdCd9O1xufVxuXG5leHBvcnQgdHlwZSBBcnJheUZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ2FycmF5JztcbiAgZGVmYXVsdD86IGFueVtdO1xuICAvKipcbiAgICogU3RyaW5nIGZvcm1hdCBmb3IgdGhlIHByZXZpZXcgbGluZSBvZiBhbiBpdGVtIGluIHRoZSBhcnJheS4gUGxhY2Vob2xkZXJcbiAgICogdmFsdWVzIHNob3VsZCB1c2UgYnJhY2tldHMsIGUuZy4gYG17X2luZGV4OjAyfToge190eXBlfWAuXG4gICAqXG4gICAqIE11bHRpcGxlIHZhbHVlcyBjYW4gYmUgcHJvdmlkZWQsIGluIHdoaWNoIGNhc2UgdGhlIGZpcnN0IHByZXZpZXcgbGluZSB3aXRoXG4gICAqIG5vIG1pc3NpbmcgcGxhY2Vob2xkZXIgdmFsdWVzIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogU3lzdGVtIGFkZGVkIHBsYWNlaG9sZGVyIHZhbHVlczpcbiAgICpcbiAgICogLSBfaW5kZXg6IFRoZSAwLWJhc2VkIGluZGV4LlxuICAgKiAtIF9pbmRleDowMjogQSBsZWZ0LXBhZGRlZCB2ZXJzaW9uIG9mIF9pbmRleCB0byAyIGRpZ2l0cy5cbiAgICogLSBfaW5kZXg6MDM6IEEgbGVmdC1wYWRkZWQgdmVyc2lvbiBvZiBfaW5kZXggdG8gMyBkaWdpdHMuXG4gICAqIC0gX3R5cGU6IEZvciBhcnJheSBvZiBvbmUtb2YgZmllbGRzLCB0aGUgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgZmllbGQuXG4gICAqL1xuICBwcmV2aWV3Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8vIE5PVEUoc3RldmVubGUpOiB0aGUgYXJyYXkgZmllbGQgc2hvdWxkIG9ubHkgYWNjZXB0IG9iamVjdCB2YWx1ZXMgdG8ga2VlcFxuICAvLyB0aGUgc2NoZW1hcyBmdXR1cmUtZnJpZW5kbHkuIEZvciBleGFtcGxlLCBpZiB3ZSB3ZXJlIHRvIGFjY2VwdCBwcmltYXRpdmVzXG4gIC8vIChlLmcuIEFycmF5PHN0cmluZz4pIGFuZCB0aGUgZGV2ZWxvcGVyIGRlY2lkZXMgaW4gdGhlIGZ1dHVyZSB0aGF0IHRoZXlcbiAgLy8gbmVlZCB0byBhZGQgZXh0cmEgZmllbGRzIHRvIHRoYXQgYXJyYXkgdHlwZSwgdGhleSB3b3VsZCBoYXZlIHRvIGNyZWF0ZSBhXG4gIC8vIG5ldyBmaWVsZCwgY3JlYXRlIGEgbmV3IHNjaGVtYSBmaWVsZCwgYW5kIHRoZW4gcGVyZm9ybSBhIGRiIG1pZ3JhdGlvbiB0b1xuICAvLyB1cGRhdGUgZnJvbSB0aGUgb2xkIGZpZWxkIHR5cGUgdG8gdGhlIG5ldyBmaWVsZCB0eXBlLiBCdXQgaWYgd2UgZW5mb3JjZVxuICAvLyBvYmplY3RzIGhlcmUsIGEgZGV2ZWxvcGVyIHNob3VsZCB0ZWNobmljYWxseSBiZSBhYmxlIHRvIGFkZCBmaWVsZHMgdG8gdGhlXG4gIC8vIG5lc3RlZCBmaWVsZCBkZWZpbml0aW9uIHdpdGhvdXQgYnJlYWtpbmcgYW55IGV4aXN0aW5nIGRiIGVudHJpZXMuXG4gIG9mOiBPYmplY3RMaWtlRmllbGQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXkoZmllbGQ6IE9taXQ8QXJyYXlGaWVsZCwgJ3R5cGUnPik6IEFycmF5RmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnYXJyYXknfTtcbn1cblxuZXhwb3J0IHR5cGUgT25lT2ZGaWVsZCA9IENvbW1vbkZpZWxkUHJvcHMgJiB7XG4gIHR5cGU6ICdvbmVvZic7XG4gIHR5cGVzOiBTY2hlbWFbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmVPZihmaWVsZDogT21pdDxPbmVPZkZpZWxkLCAndHlwZSc+KTogT25lT2ZGaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdvbmVvZid9O1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZCA9XG4gIHwgU3RyaW5nRmllbGRcbiAgfCBOdW1iZXJGaWVsZFxuICB8IERhdGVGaWVsZFxuICB8IERhdGVUaW1lRmllbGRcbiAgfCBCb29sZWFuRmllbGRcbiAgfCBTZWxlY3RGaWVsZFxuICB8IE11bHRpU2VsZWN0RmllbGRcbiAgfCBJbWFnZUZpZWxkXG4gIHwgT2JqZWN0RmllbGRcbiAgfCBBcnJheUZpZWxkXG4gIHwgT25lT2ZGaWVsZDtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIHtAbGluayBGaWVsZH0gYnV0IHdpdGggYSByZXF1aXJlZCBgaWRgLlxuICogVE9ETyhzdGV2ZW5sZSk6IGZpeCB0aGlzLlxuICovXG5leHBvcnQgdHlwZSBGaWVsZFdpdGhJZCA9IEZpZWxkO1xuXG5leHBvcnQgdHlwZSBPYmplY3RMaWtlRmllbGQgPSBJbWFnZUZpZWxkIHwgT2JqZWN0RmllbGQgfCBPbmVPZkZpZWxkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRXaXRoSWRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVNjaGVtYShzY2hlbWE6IFNjaGVtYSk6IFNjaGVtYSB7XG4gIHJldHVybiBzY2hlbWE7XG59XG5cbi8qKiBEZWZpbmVzIHRoZSBzY2hlbWEgZm9yIGEgY29sbGVjdGlvbiBvciByZXVzYWJsZSBjb21wb25lbnQuICovXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZGVmaW5lU2NoZW1hO1xuXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uID0gU2NoZW1hICYge1xuICAvKiogVVJMIHBhdGggd2hlcmUgdGhlIGNvbGxlY3Rpb24gc2VydmVzIGZyb20uICovXG4gIHVybD86IHN0cmluZztcbiAgLyoqIFBhZ2UgY29tcG9uZW50IHRvIHJlbmRlciB0aGUgY29sbGVjdGlvbiBmb3IgaW5zdGFudCBwcmV2aWV3cyAqL1xuICBDb21wb25lbnQ/OiBGdW5jdGlvbmFsQ29tcG9uZW50O1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgZmllbGRzIHRvIHVzZSBmb3IgZG9jdW1lbnQgcHJldmlldy4gRGVmYXVsdHMgdG8gXCJ0aXRsZVwiIGFuZFxuICAgKiBcImltYWdlXCIuIFVzZSBkb3Qgbm90YXRpb24gZm9yIG5lc3RlZCBmaWVsZHMsIGUuZy4gXCJtZXRhLnRpdGxlXCIuXG4gICAqL1xuICBwcmV2aWV3Pzoge1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIGltYWdlPzogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29sbGVjdGlvbik6IENvbGxlY3Rpb24ge1xuICByZXR1cm4gY29sbGVjdGlvbjtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbGxlY3Rpb24gPSBkZWZpbmVDb2xsZWN0aW9uO1xuIiwgImltcG9ydCB7UGx1Z2luLCBSb290Q29uZmlnfSBmcm9tICdAYmxpbmtrL3Jvb3QnO1xuaW1wb3J0IHtpbml0aWFsaXplQXBwLCBnZXRBcHBzLCBhcHBsaWNhdGlvbkRlZmF1bHR9IGZyb20gJ2ZpcmViYXNlLWFkbWluL2FwcCc7XG5pbXBvcnQge2dldEZpcmVzdG9yZX0gZnJvbSAnZmlyZWJhc2UtYWRtaW4vZmlyZXN0b3JlJztcbmltcG9ydCB7Q01TUGx1Z2lufSBmcm9tICcuL3BsdWdpbi5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaXJlYmFzZUFwcChnY3BQcm9qZWN0SWQ6IHN0cmluZykge1xuICBjb25zdCBhcHBzID0gZ2V0QXBwcygpO1xuICBpZiAoYXBwcy5sZW5ndGggPiAwICYmIGFwcHNbMF0pIHtcbiAgICByZXR1cm4gYXBwc1swXTtcbiAgfVxuICByZXR1cm4gaW5pdGlhbGl6ZUFwcCh7XG4gICAgcHJvamVjdElkOiBnY3BQcm9qZWN0SWQsXG4gICAgY3JlZGVudGlhbDogYXBwbGljYXRpb25EZWZhdWx0KCksXG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyBhIGRvYyBmcm9tIFJvb3QuanMgQ01TLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RG9jPFQ+KFxuICByb290Q29uZmlnOiBSb290Q29uZmlnLFxuICBjb2xsZWN0aW9uSWQ6IHN0cmluZyxcbiAgc2x1Zzogc3RyaW5nLFxuICBvcHRpb25zOiB7bW9kZTogJ2RyYWZ0JyB8ICdwdWJsaXNoZWQnfVxuKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICBjb25zdCBjbXNQbHVnaW4gPSBnZXRDbXNQbHVnaW4ocm9vdENvbmZpZyk7XG4gIGNvbnN0IGNtc1BsdWdpbk9wdGlvbnMgPSBjbXNQbHVnaW4uZ2V0Q29uZmlnKCk7XG4gIGNvbnN0IHByb2plY3RJZCA9IGNtc1BsdWdpbk9wdGlvbnMuaWQgfHwgJ2RlZmF1bHQnO1xuICBjb25zdCBnY3BQcm9qZWN0SWQgPSBjbXNQbHVnaW5PcHRpb25zLmZpcmViYXNlQ29uZmlnLnByb2plY3RJZDtcbiAgY29uc3QgbW9kZSA9IG9wdGlvbnMubW9kZTtcbiAgY29uc3QgbW9kZUNvbGxlY3Rpb24gPSBtb2RlID09PSAnZHJhZnQnID8gJ0RyYWZ0cycgOiAnUHVibGlzaGVkJztcbiAgY29uc3QgYXBwID0gZ2V0RmlyZWJhc2VBcHAoZ2NwUHJvamVjdElkKTtcbiAgY29uc3QgZGIgPSBnZXRGaXJlc3RvcmUoYXBwKTtcbiAgLy8gU2x1Z3Mgd2l0aCBzbGFzaGVzIGFyZSBlbmNvZGVkIGFzIGAtLWAgaW4gdGhlIERCLlxuICBzbHVnID0gc2x1Zy5yZXBsYWNlQWxsKCcvJywgJy0tJyk7XG4gIGNvbnN0IGRiUGF0aCA9IGBQcm9qZWN0cy8ke3Byb2plY3RJZH0vQ29sbGVjdGlvbnMvJHtjb2xsZWN0aW9uSWR9LyR7bW9kZUNvbGxlY3Rpb259LyR7c2x1Z31gO1xuICBjb25zdCBkb2NSZWYgPSBkYi5kb2MoZGJQYXRoKTtcbiAgY29uc3QgZG9jID0gYXdhaXQgZG9jUmVmLmdldCgpO1xuICBpZiAoZG9jLmV4aXN0cykge1xuICAgIGNvbnN0IGRhdGEgPSBkb2MuZGF0YSgpO1xuICAgIHJldHVybiBub3JtYWxpemVEYXRhKGRhdGEpIGFzIFQ7XG4gIH1cbiAgY29uc29sZS5sb2coYGRvYyBub3QgZm91bmQ6ICR7ZGJQYXRofWApO1xuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBXYWxrcyB0aGUgZGF0YSB0cmVlIGFuZCBjb252ZXJ0cyBhbnkgVGltZXN0YW1wIG9iamVjdHMgdG8gbWlsbGlzIGFuZCBhbnlcbiAqIF9hcnJheSBtYXBzIHRvIG5vcm1hbCBhcnJheXMuXG4gKlxuICogRS5nLjpcbiAqXG4gKiBub3JtYWxpemVEYXRhKHtcbiAqICAgc3lzOiB7bW9kaWZpZWRBdDogVGltZXN0YW1wKDEyMyl9LFxuICogICBmaWVsZHM6IHtcbiAqICAgICBfYXJyYXk6IFsnYXNkZiddLFxuICogICAgIGFzZGY6IHt0aXRsZTogJ2hlbGxvJ31cbiAqICAgfVxuICogfSlcbiAqIC8vID0+IHtzeXM6IHttb2RpZmllZEF0OiAxMjN9LCBmaWVsZHM6IHtmb286IFt7dGl0bGU6ICdoZWxsbyd9XX19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVEYXRhKGRhdGE6IGFueSk6IGFueSB7XG4gIGNvbnN0IHJlc3VsdDogYW55ID0ge307XG4gIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICBjb25zdCB2YWwgPSBkYXRhW2tleV07XG4gICAgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICAgIGlmICh2YWwudG9NaWxsaXMpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWwudG9NaWxsaXMoKTtcbiAgICAgIH0gZWxzZSBpZiAoT2JqZWN0Lmhhc093bih2YWwsICdfYXJyYXknKSAmJiBBcnJheS5pc0FycmF5KHZhbC5fYXJyYXkpKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHZhbC5fYXJyYXkubWFwKChrOiBzdHJpbmcpID0+IHZhbFtrXSB8fCB7fSk7XG4gICAgICAgIHJlc3VsdFtrZXldID0gYXJyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBub3JtYWxpemVEYXRhKHZhbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc09iamVjdChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShkYXRhKSAmJiBkYXRhICE9PSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q21zUGx1Z2luKHJvb3RDb25maWc6IFJvb3RDb25maWcpOiBDTVNQbHVnaW4ge1xuICBjb25zdCBwbHVnaW5zOiBQbHVnaW5bXSA9IHJvb3RDb25maWcucGx1Z2lucyB8fCBbXTtcbiAgY29uc3QgcGx1Z2luID0gcGx1Z2lucy5maW5kKChwbHVnaW4pID0+IHBsdWdpbi5uYW1lID09PSAncm9vdC1jbXMnKTtcbiAgaWYgKCFwbHVnaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIHJvb3QtY21zIHBsdWdpbiBjb25maWcgaW4gcm9vdC5jb25maWcudHMnKTtcbiAgfVxuICByZXR1cm4gcGx1Z2luIGFzIENNU1BsdWdpbjtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQk8sU0FBUyxPQUFPLE9BQStDO0FBQ3BFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxTQUFRO0FBQ2xDO0FBT08sU0FBUyxPQUFPLE9BQStDO0FBQ3BFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxTQUFRO0FBQ2xDO0FBT08sU0FBUyxLQUFLLE9BQTJDO0FBQzlELFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxPQUFNO0FBQ2hDO0FBT08sU0FBUyxTQUFTLE9BQW1EO0FBQzFFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxXQUFVO0FBQ3BDO0FBT08sU0FBUyxRQUFRLE9BQWlEO0FBQ3ZFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxVQUFTO0FBQ25DO0FBUU8sU0FBUyxPQUFPLE9BQStDO0FBQ3BFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxTQUFRO0FBQ2xDO0FBUU8sU0FBUyxZQUNkLE9BQ2tCO0FBQ2xCLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxjQUFhO0FBQ3ZDO0FBTU8sU0FBUyxNQUFNLE9BQTZDO0FBQ2pFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxRQUFPO0FBQ2pDO0FBT08sU0FBUyxPQUFPLE9BQStDO0FBQ3BFLFNBQU8sRUFBQyxHQUFHLE9BQU8sTUFBTSxTQUFRO0FBQ2xDO0FBK0JPLFNBQVMsTUFBTSxPQUE2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
138
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9zY2hlbWEudHMiLCAiLi4vY29yZS9ydW50aW1lLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge0Z1bmN0aW9uYWxDb21wb25lbnR9IGZyb20gJ3ByZWFjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uRmllbGRQcm9wcyB7XG4gIHR5cGU6IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBoZWxwPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZGVmYXVsdD86IGFueTtcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGVwcmVjYXRlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFN0cmluZ0ZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ3N0cmluZyc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG4gIHRyYW5zbGF0ZT86IGJvb2xlYW47XG4gIHZhcmlhbnQ/OiAnaW5wdXQnIHwgJ3RleHRhcmVhJztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcoZmllbGQ6IE9taXQ8U3RyaW5nRmllbGQsICd0eXBlJz4pOiBTdHJpbmdGaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdzdHJpbmcnfTtcbn1cblxuZXhwb3J0IHR5cGUgTnVtYmVyRmllbGQgPSBDb21tb25GaWVsZFByb3BzICYge1xuICB0eXBlOiAnbnVtYmVyJztcbiAgZGVmYXVsdD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXIoZmllbGQ6IE9taXQ8TnVtYmVyRmllbGQsICd0eXBlJz4pOiBOdW1iZXJGaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdudW1iZXInfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZUZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ2RhdGUnO1xuICBkZWZhdWx0Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoZmllbGQ6IE9taXQ8RGF0ZUZpZWxkLCAndHlwZSc+KTogRGF0ZUZpZWxkIHtcbiAgcmV0dXJuIHsuLi5maWVsZCwgdHlwZTogJ2RhdGUnfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZVRpbWVGaWVsZCA9IENvbW1vbkZpZWxkUHJvcHMgJiB7XG4gIHR5cGU6ICdkYXRldGltZSc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWUoZmllbGQ6IE9taXQ8RGF0ZVRpbWVGaWVsZCwgJ3R5cGUnPik6IERhdGVUaW1lRmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnZGF0ZXRpbWUnfTtcbn1cblxuZXhwb3J0IHR5cGUgQm9vbGVhbkZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ2Jvb2xlYW4nO1xuICBkZWZhdWx0PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBib29sZWFuKGZpZWxkOiBPbWl0PEJvb2xlYW5GaWVsZCwgJ3R5cGUnPik6IEJvb2xlYW5GaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdib29sZWFuJ307XG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdEZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ3NlbGVjdCc7XG4gIGRlZmF1bHQ/OiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBcnJheTx7dmFsdWU6IHN0cmluZzsgbGFiZWw/OiBzdHJpbmd9PiB8IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdChmaWVsZDogT21pdDxTZWxlY3RGaWVsZCwgJ3R5cGUnPik6IFNlbGVjdEZpZWxkIHtcbiAgcmV0dXJuIHsuLi5maWVsZCwgdHlwZTogJ3NlbGVjdCd9O1xufVxuXG5leHBvcnQgdHlwZSBNdWx0aVNlbGVjdEZpZWxkID0gT21pdDxTZWxlY3RGaWVsZCwgJ3R5cGUnPiAmIHtcbiAgdHlwZTogJ211bHRpc2VsZWN0JztcbiAgLyoqIFNldCB0byBgdHJ1ZWAgdG8gYWxsb3cgdXNlcnMgdG8gY3JlYXRlIGFyYml0cmFyeSB2YWx1ZXMuICovXG4gIGNyZWF0YWJsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbXVsdGlzZWxlY3QoXG4gIGZpZWxkOiBPbWl0PE11bHRpU2VsZWN0RmllbGQsICd0eXBlJz5cbik6IE11bHRpU2VsZWN0RmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnbXVsdGlzZWxlY3QnfTtcbn1cblxuZXhwb3J0IHR5cGUgSW1hZ2VGaWVsZCA9IENvbW1vbkZpZWxkUHJvcHMgJiB7XG4gIHR5cGU6ICdpbWFnZSc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2UoZmllbGQ6IE9taXQ8SW1hZ2VGaWVsZCwgJ3R5cGUnPik6IEltYWdlRmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnaW1hZ2UnfTtcbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0RmllbGQgPSBDb21tb25GaWVsZFByb3BzICYge1xuICB0eXBlOiAnb2JqZWN0JztcbiAgZmllbGRzOiBGaWVsZFdpdGhJZFtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdChmaWVsZDogT21pdDxPYmplY3RGaWVsZCwgJ3R5cGUnPik6IE9iamVjdEZpZWxkIHtcbiAgcmV0dXJuIHsuLi5maWVsZCwgdHlwZTogJ29iamVjdCd9O1xufVxuXG5leHBvcnQgdHlwZSBBcnJheUZpZWxkID0gQ29tbW9uRmllbGRQcm9wcyAmIHtcbiAgdHlwZTogJ2FycmF5JztcbiAgZGVmYXVsdD86IGFueVtdO1xuICAvKipcbiAgICogU3RyaW5nIGZvcm1hdCBmb3IgdGhlIHByZXZpZXcgbGluZSBvZiBhbiBpdGVtIGluIHRoZSBhcnJheS4gUGxhY2Vob2xkZXJcbiAgICogdmFsdWVzIHNob3VsZCB1c2UgYnJhY2tldHMsIGUuZy4gYG17X2luZGV4OjAyfToge190eXBlfWAuXG4gICAqXG4gICAqIE11bHRpcGxlIHZhbHVlcyBjYW4gYmUgcHJvdmlkZWQsIGluIHdoaWNoIGNhc2UgdGhlIGZpcnN0IHByZXZpZXcgbGluZSB3aXRoXG4gICAqIG5vIG1pc3NpbmcgcGxhY2Vob2xkZXIgdmFsdWVzIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogU3lzdGVtIGFkZGVkIHBsYWNlaG9sZGVyIHZhbHVlczpcbiAgICpcbiAgICogLSBfaW5kZXg6IFRoZSAwLWJhc2VkIGluZGV4LlxuICAgKiAtIF9pbmRleDowMjogQSBsZWZ0LXBhZGRlZCB2ZXJzaW9uIG9mIF9pbmRleCB0byAyIGRpZ2l0cy5cbiAgICogLSBfaW5kZXg6MDM6IEEgbGVmdC1wYWRkZWQgdmVyc2lvbiBvZiBfaW5kZXggdG8gMyBkaWdpdHMuXG4gICAqIC0gX3R5cGU6IEZvciBhcnJheSBvZiBvbmUtb2YgZmllbGRzLCB0aGUgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgZmllbGQuXG4gICAqL1xuICBwcmV2aWV3Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8vIE5PVEUoc3RldmVubGUpOiB0aGUgYXJyYXkgZmllbGQgc2hvdWxkIG9ubHkgYWNjZXB0IG9iamVjdCB2YWx1ZXMgdG8ga2VlcFxuICAvLyB0aGUgc2NoZW1hcyBmdXR1cmUtZnJpZW5kbHkuIEZvciBleGFtcGxlLCBpZiB3ZSB3ZXJlIHRvIGFjY2VwdCBwcmltYXRpdmVzXG4gIC8vIChlLmcuIEFycmF5PHN0cmluZz4pIGFuZCB0aGUgZGV2ZWxvcGVyIGRlY2lkZXMgaW4gdGhlIGZ1dHVyZSB0aGF0IHRoZXlcbiAgLy8gbmVlZCB0byBhZGQgZXh0cmEgZmllbGRzIHRvIHRoYXQgYXJyYXkgdHlwZSwgdGhleSB3b3VsZCBoYXZlIHRvIGNyZWF0ZSBhXG4gIC8vIG5ldyBmaWVsZCwgY3JlYXRlIGEgbmV3IHNjaGVtYSBmaWVsZCwgYW5kIHRoZW4gcGVyZm9ybSBhIGRiIG1pZ3JhdGlvbiB0b1xuICAvLyB1cGRhdGUgZnJvbSB0aGUgb2xkIGZpZWxkIHR5cGUgdG8gdGhlIG5ldyBmaWVsZCB0eXBlLiBCdXQgaWYgd2UgZW5mb3JjZVxuICAvLyBvYmplY3RzIGhlcmUsIGEgZGV2ZWxvcGVyIHNob3VsZCB0ZWNobmljYWxseSBiZSBhYmxlIHRvIGFkZCBmaWVsZHMgdG8gdGhlXG4gIC8vIG5lc3RlZCBmaWVsZCBkZWZpbml0aW9uIHdpdGhvdXQgYnJlYWtpbmcgYW55IGV4aXN0aW5nIGRiIGVudHJpZXMuXG4gIG9mOiBPYmplY3RMaWtlRmllbGQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXkoZmllbGQ6IE9taXQ8QXJyYXlGaWVsZCwgJ3R5cGUnPik6IEFycmF5RmllbGQge1xuICByZXR1cm4gey4uLmZpZWxkLCB0eXBlOiAnYXJyYXknfTtcbn1cblxuZXhwb3J0IHR5cGUgT25lT2ZGaWVsZCA9IENvbW1vbkZpZWxkUHJvcHMgJiB7XG4gIHR5cGU6ICdvbmVvZic7XG4gIHR5cGVzOiBTY2hlbWFbXTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBvbmVPZihmaWVsZDogT21pdDxPbmVPZkZpZWxkLCAndHlwZSc+KTogT25lT2ZGaWVsZCB7XG4gIHJldHVybiB7Li4uZmllbGQsIHR5cGU6ICdvbmVvZid9O1xufVxuXG5leHBvcnQgdHlwZSBGaWVsZCA9XG4gIHwgU3RyaW5nRmllbGRcbiAgfCBOdW1iZXJGaWVsZFxuICB8IERhdGVGaWVsZFxuICB8IERhdGVUaW1lRmllbGRcbiAgfCBCb29sZWFuRmllbGRcbiAgfCBTZWxlY3RGaWVsZFxuICB8IE11bHRpU2VsZWN0RmllbGRcbiAgfCBJbWFnZUZpZWxkXG4gIHwgT2JqZWN0RmllbGRcbiAgfCBBcnJheUZpZWxkXG4gIHwgT25lT2ZGaWVsZDtcblxuLyoqXG4gKiBTaW1pbGFyIHRvIHtAbGluayBGaWVsZH0gYnV0IHdpdGggYSByZXF1aXJlZCBgaWRgLlxuICogVE9ETyhzdGV2ZW5sZSk6IGZpeCB0aGlzLlxuICovXG5leHBvcnQgdHlwZSBGaWVsZFdpdGhJZCA9IEZpZWxkO1xuXG5leHBvcnQgdHlwZSBPYmplY3RMaWtlRmllbGQgPSBJbWFnZUZpZWxkIHwgT2JqZWN0RmllbGQgfCBPbmVPZkZpZWxkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGZpZWxkczogRmllbGRXaXRoSWRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVNjaGVtYShzY2hlbWE6IFNjaGVtYSk6IFNjaGVtYSB7XG4gIHJldHVybiBzY2hlbWE7XG59XG5cbi8qKiBEZWZpbmVzIHRoZSBzY2hlbWEgZm9yIGEgY29sbGVjdGlvbiBvciByZXVzYWJsZSBjb21wb25lbnQuICovXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZGVmaW5lU2NoZW1hO1xuXG5leHBvcnQgdHlwZSBDb2xsZWN0aW9uID0gU2NoZW1hICYge1xuICAvKiogVVJMIHBhdGggd2hlcmUgdGhlIGNvbGxlY3Rpb24gc2VydmVzIGZyb20uICovXG4gIHVybD86IHN0cmluZztcbiAgLyoqXG4gICAqIFVSTCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlbmRlciBhIHByZXZpZXcgcGFnZS4gVXNlZCBieSB0aGUgc2lkZS1ieS1zaWRlXG4gICAqIGVkaXRvciB0byByZW5kZXIgaW5zdGFudCBwcmV2aWV3cy4gSWYgYmxhbmssIGRlZmF1bHRzIHRvIHRoZSBgdXJsYCBjb25maWcuXG4gICAqL1xuICBwcmV2aWV3VXJsPzogc3RyaW5nO1xuICAvKiogUGFnZSBjb21wb25lbnQgdG8gcmVuZGVyIHRoZSBjb2xsZWN0aW9uIGZvciBpbnN0YW50IHByZXZpZXdzICovXG4gIENvbXBvbmVudD86IEZ1bmN0aW9uYWxDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBmaWVsZHMgdG8gdXNlIGZvciBkb2N1bWVudCBwcmV2aWV3LiBEZWZhdWx0cyB0byBcInRpdGxlXCIgYW5kXG4gICAqIFwiaW1hZ2VcIi4gVXNlIGRvdCBub3RhdGlvbiBmb3IgbmVzdGVkIGZpZWxkcywgZS5nLiBcIm1ldGEudGl0bGVcIi5cbiAgICovXG4gIHByZXZpZXc/OiB7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgaW1hZ2U/OiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQ29sbGVjdGlvbihjb2xsZWN0aW9uOiBDb2xsZWN0aW9uKTogQ29sbGVjdGlvbiB7XG4gIHJldHVybiBjb2xsZWN0aW9uO1xufVxuXG5leHBvcnQgY29uc3QgY29sbGVjdGlvbiA9IGRlZmluZUNvbGxlY3Rpb247XG4iLCAiaW1wb3J0IHtQbHVnaW4sIFJvb3RDb25maWd9IGZyb20gJ0BibGlua2svcm9vdCc7XG5pbXBvcnQge2luaXRpYWxpemVBcHAsIGdldEFwcHMsIGFwcGxpY2F0aW9uRGVmYXVsdH0gZnJvbSAnZmlyZWJhc2UtYWRtaW4vYXBwJztcbmltcG9ydCB7Z2V0RmlyZXN0b3JlfSBmcm9tICdmaXJlYmFzZS1hZG1pbi9maXJlc3RvcmUnO1xuaW1wb3J0IHtDTVNQbHVnaW59IGZyb20gJy4vcGx1Z2luLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcmViYXNlQXBwKGdjcFByb2plY3RJZDogc3RyaW5nKSB7XG4gIGNvbnN0IGFwcHMgPSBnZXRBcHBzKCk7XG4gIGlmIChhcHBzLmxlbmd0aCA+IDAgJiYgYXBwc1swXSkge1xuICAgIHJldHVybiBhcHBzWzBdO1xuICB9XG4gIHJldHVybiBpbml0aWFsaXplQXBwKHtcbiAgICBwcm9qZWN0SWQ6IGdjcFByb2plY3RJZCxcbiAgICBjcmVkZW50aWFsOiBhcHBsaWNhdGlvbkRlZmF1bHQoKSxcbiAgfSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIGEgZG9jIGZyb20gUm9vdC5qcyBDTVMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREb2M8VD4oXG4gIHJvb3RDb25maWc6IFJvb3RDb25maWcsXG4gIGNvbGxlY3Rpb25JZDogc3RyaW5nLFxuICBzbHVnOiBzdHJpbmcsXG4gIG9wdGlvbnM6IHttb2RlOiAnZHJhZnQnIHwgJ3B1Ymxpc2hlZCd9XG4pOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gIGNvbnN0IGNtc1BsdWdpbiA9IGdldENtc1BsdWdpbihyb290Q29uZmlnKTtcbiAgY29uc3QgY21zUGx1Z2luT3B0aW9ucyA9IGNtc1BsdWdpbi5nZXRDb25maWcoKTtcbiAgY29uc3QgcHJvamVjdElkID0gY21zUGx1Z2luT3B0aW9ucy5pZCB8fCAnZGVmYXVsdCc7XG4gIGNvbnN0IGdjcFByb2plY3RJZCA9IGNtc1BsdWdpbk9wdGlvbnMuZmlyZWJhc2VDb25maWcucHJvamVjdElkO1xuICBjb25zdCBtb2RlID0gb3B0aW9ucy5tb2RlO1xuICBjb25zdCBtb2RlQ29sbGVjdGlvbiA9IG1vZGUgPT09ICdkcmFmdCcgPyAnRHJhZnRzJyA6ICdQdWJsaXNoZWQnO1xuICBjb25zdCBhcHAgPSBnZXRGaXJlYmFzZUFwcChnY3BQcm9qZWN0SWQpO1xuICBjb25zdCBkYiA9IGdldEZpcmVzdG9yZShhcHApO1xuICAvLyBTbHVncyB3aXRoIHNsYXNoZXMgYXJlIGVuY29kZWQgYXMgYC0tYCBpbiB0aGUgREIuXG4gIHNsdWcgPSBzbHVnLnJlcGxhY2VBbGwoJy8nLCAnLS0nKTtcbiAgY29uc3QgZGJQYXRoID0gYFByb2plY3RzLyR7cHJvamVjdElkfS9Db2xsZWN0aW9ucy8ke2NvbGxlY3Rpb25JZH0vJHttb2RlQ29sbGVjdGlvbn0vJHtzbHVnfWA7XG4gIGNvbnN0IGRvY1JlZiA9IGRiLmRvYyhkYlBhdGgpO1xuICBjb25zdCBkb2MgPSBhd2FpdCBkb2NSZWYuZ2V0KCk7XG4gIGlmIChkb2MuZXhpc3RzKSB7XG4gICAgY29uc3QgZGF0YSA9IGRvYy5kYXRhKCk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZURhdGEoZGF0YSkgYXMgVDtcbiAgfVxuICBjb25zb2xlLmxvZyhgZG9jIG5vdCBmb3VuZDogJHtkYlBhdGh9YCk7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFdhbGtzIHRoZSBkYXRhIHRyZWUgYW5kIGNvbnZlcnRzIGFueSBUaW1lc3RhbXAgb2JqZWN0cyB0byBtaWxsaXMgYW5kIGFueVxuICogX2FycmF5IG1hcHMgdG8gbm9ybWFsIGFycmF5cy5cbiAqXG4gKiBFLmcuOlxuICpcbiAqIG5vcm1hbGl6ZURhdGEoe1xuICogICBzeXM6IHttb2RpZmllZEF0OiBUaW1lc3RhbXAoMTIzKX0sXG4gKiAgIGZpZWxkczoge1xuICogICAgIF9hcnJheTogWydhc2RmJ10sXG4gKiAgICAgYXNkZjoge3RpdGxlOiAnaGVsbG8nfVxuICogICB9XG4gKiB9KVxuICogLy8gPT4ge3N5czoge21vZGlmaWVkQXQ6IDEyM30sIGZpZWxkczoge2ZvbzogW3t0aXRsZTogJ2hlbGxvJ31dfX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEoZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgIGNvbnN0IHZhbCA9IGRhdGFba2V5XTtcbiAgICBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAgaWYgKHZhbC50b01pbGxpcykge1xuICAgICAgICByZXN1bHRba2V5XSA9IHZhbC50b01pbGxpcygpO1xuICAgICAgfSBlbHNlIGlmIChPYmplY3QuaGFzT3duKHZhbCwgJ19hcnJheScpICYmIEFycmF5LmlzQXJyYXkodmFsLl9hcnJheSkpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdmFsLl9hcnJheS5tYXAoKGs6IHN0cmluZykgPT4gdmFsW2tdIHx8IHt9KTtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBhcnI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRba2V5XSA9IG5vcm1hbGl6ZURhdGEodmFsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGRhdGE6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGRhdGEpICYmIGRhdGEgIT09IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbXNQbHVnaW4ocm9vdENvbmZpZzogUm9vdENvbmZpZyk6IENNU1BsdWdpbiB7XG4gIGNvbnN0IHBsdWdpbnM6IFBsdWdpbltdID0gcm9vdENvbmZpZy5wbHVnaW5zIHx8IFtdO1xuICBjb25zdCBwbHVnaW4gPSBwbHVnaW5zLmZpbmQoKHBsdWdpbikgPT4gcGx1Z2luLm5hbWUgPT09ICdyb290LWNtcycpO1xuICBpZiAoIXBsdWdpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgcm9vdC1jbXMgcGx1Z2luIGNvbmZpZyBpbiByb290LmNvbmZpZy50cycpO1xuICB9XG4gIHJldHVybiBwbHVnaW4gYXMgQ01TUGx1Z2luO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9CTyxTQUFTLE9BQU8sT0FBK0M7QUFDcEUsU0FBTyxFQUFDLEdBQUcsT0FBTyxNQUFNLFNBQVE7QUFDbEM7QUFPTyxTQUFTLE9BQU8sT0FBK0M7QUFDcEUsU0FBTyxFQUFDLEdBQUcsT0FBTyxNQUFNLFNBQVE7QUFDbEM7QUFPTyxTQUFTLEtBQUssT0FBMkM7QUFDOUQsU0FBTyxFQUFDLEdBQUcsT0FBTyxNQUFNLE9BQU07QUFDaEM7QUFPTyxTQUFTLFNBQVMsT0FBbUQ7QUFDMUUsU0FBTyxFQUFDLEdBQUcsT0FBTyxNQUFNLFdBQVU7QUFDcEM7QUFPTyxTQUFTLFFBQVEsT0FBaUQ7QUFDdkUsU0FBTyxFQUFDLEdBQUcsT0FBTyxNQUFNLFVBQVM7QUFDbkM7QUFRTyxTQUFTLE9BQU8sT0FBK0M7QUFDcEUsU0FBTyxFQUFDLEdBQUcsT0FBTyxNQUFNLFNBQVE7QUFDbEM7QUFRTyxTQUFTLFlB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
package/dist/plugin.d.ts CHANGED
@@ -30,6 +30,12 @@ type CMSPluginOptions = {
30
30
  cookieSecret?: string | string[];
31
31
  /** Function called to check if a user should have access to the CMS. */
32
32
  isUserAuthorized?: (req: Request, user: CMSUser) => boolean | Promise<boolean>;
33
+ /**
34
+ * URL to GCI service for transforming uploaded GCS images to a Google App
35
+ * Engine Images API serving URL. Defaults to "https://gci.rootjs.dev". To
36
+ * disable, set this value to `false`.
37
+ */
38
+ gci?: string | boolean;
33
39
  };
34
40
  type CMSPlugin = Plugin & {
35
41
  name: 'root-cms';
package/dist/plugin.js CHANGED
@@ -210,4 +210,4 @@ function fileExists(filepath) {
210
210
  export {
211
211
  cmsPlugin
212
212
  };
213
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cHJvbWlzZXMgYXMgZnN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJlU2VydmVyT3B0aW9ucyxcbiAgTmV4dEZ1bmN0aW9uLFxuICBQbHVnaW4sXG4gIFJlcXVlc3QsXG4gIFJlc3BvbnNlLFxuICBTZXJ2ZXIsXG59IGZyb20gJ0BibGlua2svcm9vdCc7XG5pbXBvcnQgYm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5pbXBvcnQgY29va2llUGFyc2VyIGZyb20gJ2Nvb2tpZS1wYXJzZXInO1xuaW1wb3J0IHthcHBsaWNhdGlvbkRlZmF1bHQsIGluaXRpYWxpemVBcHB9IGZyb20gJ2ZpcmViYXNlLWFkbWluL2FwcCc7XG5pbXBvcnQge2dldEF1dGgsIERlY29kZWRJZFRva2VufSBmcm9tICdmaXJlYmFzZS1hZG1pbi9hdXRoJztcbmltcG9ydCBzaXJ2IGZyb20gJ3NpcnYnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxudHlwZSBBcHBNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCcuL2FwcC5qcycpO1xuXG5jb25zdCBTRVNTSU9OX0NPT0tJRSA9ICdfcm9vdGpzX2Ntcyc7XG5cbmV4cG9ydCB0eXBlIENNU1VzZXIgPSBEZWNvZGVkSWRUb2tlbjtcblxuZXhwb3J0IHR5cGUgQ01TUGx1Z2luT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcHJvamVjdC4gRGF0YSB3aWxsIGJlIHN0b3JlZCB1bmRlciB0aGUgbmFtZXNwYWNlXG4gICAqIGBQcm9qZWN0cy8ke2lkfWAgaW4gZmlyZXN0b3JlLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LiBVc2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIENNUyB0byBoZWxwIGlkZW50aWZ5XG4gICAqIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRmlyZWJhc2UgY29uZmlnIG9iamVjdCwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGluIHRoZSBGaXJlYmFzZSBDb25zb2xlIGJ5XG4gICAqIGdvaW5nIHRvIFwiUHJvamVjdCBTZXR0aW5nc1wiLlxuICAgKi9cbiAgZmlyZWJhc2VDb25maWc6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgYXBpS2V5OiBzdHJpbmc7XG4gICAgYXV0aERvbWFpbjogc3RyaW5nO1xuICAgIHByb2plY3RJZDogc3RyaW5nO1xuICAgIHN0b3JhZ2VCdWNrZXQ6IHN0cmluZztcbiAgICBtZXNzYWdpbmdTZW5kZXJJZDogc3RyaW5nO1xuICAgIGFwcElkOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqIFNlY3JldCB2YWx1ZShzKSB1c2VkIGZvciBzaWduaW5nIHRoZSB1c2VyIGF1dGhlbnRpY2F0aW9uIGNvb2tpZS4gKi9cbiAgY29va2llU2VjcmV0Pzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqIEZ1bmN0aW9uIGNhbGxlZCB0byBjaGVjayBpZiBhIHVzZXIgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIHRoZSBDTVMuICovXG4gIGlzVXNlckF1dGhvcml6ZWQ/OiAoXG4gICAgcmVxOiBSZXF1ZXN0LFxuICAgIHVzZXI6IENNU1VzZXJcbiAgKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcbn07XG5cbmV4cG9ydCB0eXBlIENNU1BsdWdpbiA9IFBsdWdpbiAmIHtcbiAgbmFtZTogJ3Jvb3QtY21zJztcbiAgZ2V0Q29uZmlnOiAoKSA9PiBDTVNQbHVnaW5PcHRpb25zO1xufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXQoKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGNvbnN0IGNoYXJzID1cbiAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDM2OyBpKyspIHtcbiAgICBjb25zdCByYW5kID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKTtcbiAgICByZXN1bHQucHVzaChjaGFycy5jaGFyQXQocmFuZCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGlzRXhwaXJlZChkZWNvZGVkSWRUb2tlbjogRGVjb2RlZElkVG9rZW4pIHtcbiAgY29uc3QgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG4gIHJldHVybiB0cyAtIGRlY29kZWRJZFRva2VuLmF1dGhfdGltZSA+IDUgKiA2MDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNtc1BsdWdpbihvcHRpb25zOiBDTVNQbHVnaW5PcHRpb25zKTogQ01TUGx1Z2luIHtcbiAgY29uc3QgZmlyZWJhc2VDb25maWcgPSBvcHRpb25zLmZpcmViYXNlQ29uZmlnO1xuICBjb25zdCBjb29raWVTZWNyZXQgPSBvcHRpb25zLmNvb2tpZVNlY3JldCB8fCBnZW5lcmF0ZVNlY3JldCgpO1xuICBjb25zdCBhcHAgPSBpbml0aWFsaXplQXBwKHtcbiAgICBwcm9qZWN0SWQ6IGZpcmViYXNlQ29uZmlnLnByb2plY3RJZCxcbiAgICBjcmVkZW50aWFsOiBhcHBsaWNhdGlvbkRlZmF1bHQoKSxcbiAgfSk7XG4gIGNvbnN0IGF1dGggPSBnZXRBdXRoKGFwcCk7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBsb2dpbiBpcyByZXF1aXJlZCBmb3IgdGhlIHJlcXVlc3QuIEN1cnJlbnRseSByZXR1cm5zIGB0cnVlYCBpZlxuICAgKiB0aGUgVVJMIHBhdGggc3RhcnRzIHdpdGggL2NtcyBvciBpZiA/cHJldmlldz10cnVlIGlzIGluIHRoZSBVUkwuXG4gICAqL1xuICBmdW5jdGlvbiBsb2dpblJlcXVpcmVkKHJlcTogUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIGlmIChyZXEub3JpZ2luYWxVcmwuc3RhcnRzV2l0aCgnL2NtcycpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFN0cmluZyhyZXEucXVlcnkucHJldmlldykgPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBhIG5ldyBsb2dpbiByZXF1ZXN0IGZvciBhIHVzZXIuIFRoZSByZXF1ZXN0IGJvZHkgc2hvdWxkIGNvbnRhaW5cbiAgICogYW4gaWRUb2tlbiwgd2hpY2ggaXMgdmVyaWZpZWQgb24gcHJvZCB1c2luZyBGaXJlYmFzZSBBZG1pbiBhbmQgSWRlbnRpdHlcbiAgICogVG9vbGtpdC4gSWYgYSBgaXNVc2VyQXV0aG9yaXplZCgpYCBjb25maWcgaXMgc2V0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzb1xuICAgKiB2ZXJpZnkgdmlhIHRoYXQgZnVuY3Rpb24uIFJldHVybnMgdHJ1ZSBpZiB0aGUgbG9naW4gdmVyaWZpY2F0aW9uIHN1Y2NlZWRzLlxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5VXNlckxvZ2luKHJlcTogUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGlkVG9rZW4gPSByZXEuYm9keT8uaWRUb2tlbjtcbiAgICBpZiAoIWlkVG9rZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbiBsb2NhbCBkZXYsIHNpbXBseSB2ZXJpZnkgdGhhdCBhbiBpZFRva2VuIGlzIHNldC4gVGhlIGlkZW50aXR5IHRvb2xraXRcbiAgICAvLyB0aGF0IHZlcmlmaWVzIGlkIHRva2VucyByZXF1aXJlcyBhIHNlcnZpY2UgYWNjb3VudCwgd2hpY2ggd2Ugd2FudCB0b1xuICAgIC8vIGF2b2lkIGhhdmluZyB0byBzZXQgdXAgd2hlbiB1c2VycyBhcmUgZG9pbmcgbG9jYWwgZGV2ZWxvcG1lbnQuXG4gICAgLy8gQXV0aGVudGljYXRpb24gaXMgc3RpbGwgcmVxdWlyZWQgYnkgdGhlIGZyb250ZW5kIHVzaW5nIEZpcmViYXNlIEF1dGgsXG4gICAgLy8gdGhpcyBqdXN0IGJ5cGFzc2VzIHRoZSBpbml0aWFsIHNlcnZlciBjaGVjayBiZWZvcmUgdGhlIHVpIGlzIHJlbmRlcmVkLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oaWRUb2tlbik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGp3dCA9IGF3YWl0IGF1dGgudmVyaWZ5SWRUb2tlbihpZFRva2VuLCB0cnVlKTtcbiAgICAgIGlmIChpc0V4cGlyZWQoand0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWp3dC5lbWFpbCB8fCAhand0LmVtYWlsX3ZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmlzVXNlckF1dGhvcml6ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9wdGlvbnMuaXNVc2VyQXV0aG9yaXplZChyZXEsIGp3dCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdmYWlsZWQgdG8gdmVyaWZ5IGp3dCB0b2tlbicpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUT0RPKHN0ZXZlbmxlKTogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBlbmZvcmNlIGBpc1VzZXJBdXRob3JpemVkKClgLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uIHNob3VsZCBiZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGVcbiAgICogQ01TLiBSZXR1cm5zIHRydWUgaWYgYWNjZXNzIGlzIGdyYW50ZWQuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlVc2VyU2Vzc2lvbihyZXE6IFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZXNzaW9uQ29va2llID0gU3RyaW5nKHJlcS5jb29raWVzW1NFU1NJT05fQ09PS0lFXSB8fCAnJyk7XG4gICAgaWYgKCFzZXNzaW9uQ29va2llKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT24gbG9jYWwgZGV2LCBzaW1wbHkgdmVyaWZ5IHRoYXQgYW4gc2Vzc2lvbiBjb29raWUgaXMgc2V0LiBTZWUgbm90ZVxuICAgIC8vIGFib3ZlIGluIGB2ZXJpZnlVc2VyTG9naW4oKWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihzZXNzaW9uQ29va2llKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgand0ID0gYXdhaXQgYXV0aC52ZXJpZnlTZXNzaW9uQ29va2llKHNlc3Npb25Db29raWUsIHRydWUpO1xuICAgICAgaWYgKGlzRXhwaXJlZChqd3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghand0LmVtYWlsIHx8ICFqd3QuZW1haWxfdmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuaXNVc2VyQXV0aG9yaXplZCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgb3B0aW9ucy5pc1VzZXJBdXRob3JpemVkKHJlcSwgand0KTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE8oc3RldmVubGUpOiBkZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGVuZm9yY2UgYGlzVXNlckF1dGhvcml6ZWQoKWAuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ZhaWxlZCB0byB2ZXJpZnkgand0IHRva2VuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncm9vdC1jbXMnLFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY29uZmlnIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBwbHVnaW4uXG4gICAgICovXG4gICAgZ2V0Q29uZmlnOiAoKSA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQSBtYXAgb2Ygc3NyIGZpbGVzIHRvIGluY2x1ZGUgd2hlbiBydW5uaW5nIGByb290IGJ1aWxkYC5cbiAgICAgKi9cbiAgICBzc3JJbnB1dDogKCkgPT4gKHtcbiAgICAgIGNtczogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vYXBwLmpzJyksXG4gICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBDTVMtc3BlY2lmaWMgbWlkZGxld2FyZSB0byB0aGUgUm9vdC5qcyBzZXJ2ZXIuXG4gICAgICovXG4gICAgY29uZmlndXJlU2VydmVyOiBhc3luYyAoXG4gICAgICBzZXJ2ZXI6IFNlcnZlcixcbiAgICAgIHNlcnZlck9wdGlvbnM6IENvbmZpZ3VyZVNlcnZlck9wdGlvbnNcbiAgICApID0+IHtcbiAgICAgIHNlcnZlci51c2UoY29va2llUGFyc2VyKGNvb2tpZVNlY3JldCkpO1xuICAgICAgc2VydmVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlbmRlcmVyKHJlcTogUmVxdWVzdCk6IFByb21pc2U8QXBwTW9kdWxlPiB7XG4gICAgICAgIGlmIChzZXJ2ZXJPcHRpb25zLnR5cGUgPT09ICdkZXYnKSB7XG4gICAgICAgICAgY29uc3QgYXBwRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9hcHAuanMnKTtcbiAgICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgcmVxLnZpdGVTZXJ2ZXIhLnNzckxvYWRNb2R1bGUoXG4gICAgICAgICAgICBhcHBGaWxlUGF0aFxuICAgICAgICAgICkpIGFzIEFwcE1vZHVsZTtcbiAgICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwSW1wb3J0UGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICByZXEucm9vdENvbmZpZyEucm9vdERpcixcbiAgICAgICAgICAnZGlzdC9zZXJ2ZXIvY21zLmpzJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoIShhd2FpdCBmaWxlRXhpc3RzKGFwcEltcG9ydFBhdGgpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdkaXN0L3NlcnZlci9jbXMuanMgbm90IGZvdW5kLiBydW4gYHJvb3QgYnVpbGRgIHRvIGNyZWF0ZSBpdC4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgaW1wb3J0KGFwcEltcG9ydFBhdGgpKSBhcyBBcHBNb2R1bGU7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXRpY0RpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd1aScpO1xuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9zdGF0aWMnLCBzaXJ2KHN0YXRpY0Rpciwge2RldjogZmFsc2V9KSk7XG5cbiAgICAgIC8vIExvZ2luIGhhbmRsZXIuXG4gICAgICBzZXJ2ZXIudXNlKCcvY21zL2xvZ2luJywgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVxLm1ldGhvZCA9PT0gJ1BVVCcgJiZcbiAgICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gYXdhaXQgdmVyaWZ5VXNlckxvZ2luKHJlcSk7XG4gICAgICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICAgICAgICByZXMuc3RhdHVzKDQwMSkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnTk9UX0FVVEhPUklaRUQnfSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2V0IHNlc3Npb24gZXhwaXJhdGlvbiB0byA1IGRheXMuXG4gICAgICAgICAgICBjb25zdCBleHBpcmVzSW4gPSA2MCAqIDYwICogMjQgKiA1ICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSByZXEuYm9keS5pZFRva2VuITtcblxuICAgICAgICAgICAgbGV0IHNlc3Npb25Db29raWU6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICBzZXNzaW9uQ29va2llID0gaWRUb2tlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlc3Npb25Db29raWUgPSBhd2FpdCBhdXRoLmNyZWF0ZVNlc3Npb25Db29raWUoaWRUb2tlbiwge1xuICAgICAgICAgICAgICAgIGV4cGlyZXNJbixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuY29va2llKFNFU1NJT05fQ09PS0lFLCBzZXNzaW9uQ29va2llLCB7XG4gICAgICAgICAgICAgIG1heEFnZTogZXhwaXJlc0luLFxuICAgICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXMuanNvbih7c3VjY2VzczogdHJ1ZX0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNcbiAgICAgICAgICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAgICAgICAgIC5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdVTktOT1dOX1NFUlZFUl9FUlJPUid9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBnZXRSZW5kZXJlcihyZXEpO1xuICAgICAgICAgIGFwcC5yZW5kZXJTaWduSW4ocmVxLCByZXMsIG9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCgnVU5LTk9XTiBTRVJWRVIgRVJST1InKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvZ291dCBoYW5kbGVyLlxuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9sb2dvdXQnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJlcy5jbGVhckNvb2tpZShTRVNTSU9OX0NPT0tJRSk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCgnL2Ntcy9sb2dpbicpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNhZmVndWFyZCB0byB2ZXJpZnkgdXNlciBsb2dpbiBiZWZvcmUgcmVuZGVyaW5nIGFueSBDTVMgcGFnZS5cbiAgICAgIHNlcnZlci51c2UoYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGlmICghbG9naW5SZXF1aXJlZChyZXEpKSB7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VySXNMb2dnZWRJbiA9IGF3YWl0IHZlcmlmeVVzZXJTZXNzaW9uKHJlcSk7XG4gICAgICAgIGlmICh1c2VySXNMb2dnZWRJbikge1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgICAgY29udGludWU6IHJlcS5vcmlnaW5hbFVybCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcy5yZWRpcmVjdChgL2Ntcy9sb2dpbj8ke3BhcmFtcy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlbmRlciB0aGUgQ01TIFNQQS5cbiAgICAgIHNlcnZlci51c2UoJy9jbXMnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZ2V0UmVuZGVyZXIocmVxKTtcbiAgICAgICAgICBhd2FpdCBhcHAucmVuZGVyQXBwKHJlcSwgcmVzLCB7XG4gICAgICAgICAgICByb290Q29uZmlnOiByZXEucm9vdENvbmZpZyxcbiAgICAgICAgICAgIGNtc0NvbmZpZzogb3B0aW9ucyxcbiAgICAgICAgICAgIGZpcmViYXNlQ29uZmlnOiBvcHRpb25zLmZpcmViYXNlQ29uZmlnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBUT0RPKHN0ZXZlbmxlKTogcmVuZGVyIGEgY3VzdG9tIGVycm9yIHBhZ2UuXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKCdVTktOT1dOIFNFUlZFUiBFUlJPUicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGZzXG4gICAgLmFjY2VzcyhmaWxlcGF0aClcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUSxZQUFZLFVBQVM7QUFDN0IsT0FBTyxVQUFVO0FBQ2pCLFNBQVEscUJBQW9CO0FBUzVCLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sa0JBQWtCO0FBQ3pCLFNBQVEsb0JBQW9CLHFCQUFvQjtBQUNoRCxTQUFRLGVBQThCO0FBQ3RDLE9BQU8sVUFBVTtBQUVqQixJQUFNLFlBQVksS0FBSyxRQUFRLGNBQWMsWUFBWSxHQUFHLENBQUM7QUFJN0QsSUFBTSxpQkFBaUI7QUE4Q3ZCLFNBQVMsaUJBQXlCO0FBQ2hDLFFBQU0sU0FBUyxDQUFDO0FBQ2hCLFFBQU0sUUFDSjtBQUNGLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxLQUFLO0FBQzNCLFVBQU0sT0FBTyxLQUFLLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxNQUFNO0FBQ3BELFdBQU8sS0FBSyxNQUFNLE9BQU8sSUFBSSxDQUFDO0FBQUEsRUFDaEM7QUFDQSxTQUFPLE9BQU8sS0FBSyxFQUFFO0FBQ3ZCO0FBRUEsU0FBUyxVQUFVLGdCQUFnQztBQUNqRCxRQUFNLEtBQUssSUFBSSxLQUFL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LE9BQU87QUFDYixzQkFBUSxNQUFNLElBQUksS0FBSztBQUFBLFlBQ3pCO0FBQ0EsZ0JBQ0csT0FBTyxHQUFHLEVBQ1YsS0FBSyxFQUFDLFNBQVMsT0FBTyxPQUFPLHVCQUFzQixDQUFDO0FBQUEsVUFDekQ7QUFDQTtBQUFBLFFBQ0Y7QUFFQSxZQUFJO0FBQ0YsZ0JBQU1BLE9BQU0sTUFBTSxZQUFZLEdBQUc7QUFDakMsVUFBQUEsS0FBSSxhQUFhLEtBQUssS0FBSyxPQUFPO0FBQUEsUUFDcEMsU0FBUyxLQUFQO0FBQ0Esa0JBQVEsTUFBTSxHQUFHO0FBQ2pCLGNBQUksSUFBSSxPQUFPO0FBQ2Isb0JBQVEsTUFBTSxJQUFJLEtBQUs7QUFBQSxVQUN6QjtBQUNBLGNBQUksT0FBTyxHQUFHLEVBQUUsS0FBSyxzQkFBc0I7QUFBQSxRQUM3QztBQUFBLE1BQ0YsQ0FBQztBQUdELGFBQU8sSUFBSSxlQUFlLE9BQU8sS0FBYyxRQUFrQjtBQUMvRCxZQUFJLFlBQVksY0FBYztBQUM5QixZQUFJLFNBQVMsWUFBWTtBQUFBLE1BQzNCLENBQUM7QUFHRCxhQUFPLElBQUksT0FBTyxLQUFjLEtBQWUsU0FBdUI7QUFDcEUsWUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHO0FBQ3ZCLGVBQUs7QUFDTDtBQUFBLFFBQ0Y7QUFDQSxjQUFNLGlCQUFpQixNQUFNLGtCQUFrQixHQUFHO0FBQ2xELFlBQUksZ0JBQWdCO0FBQ2xCLGVBQUs7QUFDTDtBQUFBLFFBQ0Y7QUFDQSxjQUFNLFNBQVMsSUFBSSxnQkFBZ0I7QUFBQSxVQUNqQyxVQUFVLElBQUk7QUFBQSxRQUNoQixDQUFDO0FBQ0QsWUFBSSxTQUFTLGNBQWMsT0FBTyxTQUFTLEdBQUc7QUFBQSxNQUNoRCxDQUFDO0FBR0QsYUFBTyxJQUFJLFFBQVEsT0FBTyxLQUFjLFFBQWtCO0FBQ3hELFlBQUk7QUFDRixnQkFBTUEsT0FBTSxNQUFNLFlBQVksR0FBRztBQUNqQyxnQkFBTUEsS0FBSSxVQUFVLEtBQUssS0FBSztBQUFBLFlBQzVCLFlBQVksSUFBSTtBQUFBLFlBQ2hCLFdBQVc7QUFBQSxZQUNYLGdCQUFnQixRQUFRO0FBQUEsVUFDMUIsQ0FBQztBQUFBLFFBQ0gsU0FBUyxLQUFQO0FBRUEsa0JBQVEsTUFBTSxHQUFHO0FBQ2pCLGNBQUksT0FBTyxHQUFHLEVBQUUsS0FBSyxzQkFBc0I7QUFBQSxRQUM3QztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7QUFFQSxTQUFTLFdBQVcsVUFBb0M7QUFDdEQsU0FBTyxHQUNKLE9BQU8sUUFBUSxFQUNmLEtBQUssTUFBTSxJQUFJLEVBQ2YsTUFBTSxNQUFNLEtBQUs7QUFDdEI7IiwKICAibmFtZXMiOiBbImFwcCJdCn0K
213
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vY29yZS9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cHJvbWlzZXMgYXMgZnN9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7ZmlsZVVSTFRvUGF0aH0gZnJvbSAnbm9kZTp1cmwnO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJlU2VydmVyT3B0aW9ucyxcbiAgTmV4dEZ1bmN0aW9uLFxuICBQbHVnaW4sXG4gIFJlcXVlc3QsXG4gIFJlc3BvbnNlLFxuICBTZXJ2ZXIsXG59IGZyb20gJ0BibGlua2svcm9vdCc7XG5pbXBvcnQgYm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5pbXBvcnQgY29va2llUGFyc2VyIGZyb20gJ2Nvb2tpZS1wYXJzZXInO1xuaW1wb3J0IHthcHBsaWNhdGlvbkRlZmF1bHQsIGluaXRpYWxpemVBcHB9IGZyb20gJ2ZpcmViYXNlLWFkbWluL2FwcCc7XG5pbXBvcnQge2dldEF1dGgsIERlY29kZWRJZFRva2VufSBmcm9tICdmaXJlYmFzZS1hZG1pbi9hdXRoJztcbmltcG9ydCBzaXJ2IGZyb20gJ3NpcnYnO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpKTtcblxudHlwZSBBcHBNb2R1bGUgPSB0eXBlb2YgaW1wb3J0KCcuL2FwcC5qcycpO1xuXG5jb25zdCBTRVNTSU9OX0NPT0tJRSA9ICdfcm9vdGpzX2Ntcyc7XG5cbmV4cG9ydCB0eXBlIENNU1VzZXIgPSBEZWNvZGVkSWRUb2tlbjtcblxuZXhwb3J0IHR5cGUgQ01TUGx1Z2luT3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcHJvamVjdC4gRGF0YSB3aWxsIGJlIHN0b3JlZCB1bmRlciB0aGUgbmFtZXNwYWNlXG4gICAqIGBQcm9qZWN0cy8ke2lkfWAgaW4gZmlyZXN0b3JlLlxuICAgKi9cbiAgaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9qZWN0LiBVc2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIENNUyB0byBoZWxwIGlkZW50aWZ5XG4gICAqIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRmlyZWJhc2UgY29uZmlnIG9iamVjdCwgd2hpY2ggY2FuIGJlIG9idGFpbmVkIGluIHRoZSBGaXJlYmFzZSBDb25zb2xlIGJ5XG4gICAqIGdvaW5nIHRvIFwiUHJvamVjdCBTZXR0aW5nc1wiLlxuICAgKi9cbiAgZmlyZWJhc2VDb25maWc6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgYXBpS2V5OiBzdHJpbmc7XG4gICAgYXV0aERvbWFpbjogc3RyaW5nO1xuICAgIHByb2plY3RJZDogc3RyaW5nO1xuICAgIHN0b3JhZ2VCdWNrZXQ6IHN0cmluZztcbiAgICBtZXNzYWdpbmdTZW5kZXJJZDogc3RyaW5nO1xuICAgIGFwcElkOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqIFNlY3JldCB2YWx1ZShzKSB1c2VkIGZvciBzaWduaW5nIHRoZSB1c2VyIGF1dGhlbnRpY2F0aW9uIGNvb2tpZS4gKi9cbiAgY29va2llU2VjcmV0Pzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqIEZ1bmN0aW9uIGNhbGxlZCB0byBjaGVjayBpZiBhIHVzZXIgc2hvdWxkIGhhdmUgYWNjZXNzIHRvIHRoZSBDTVMuICovXG4gIGlzVXNlckF1dGhvcml6ZWQ/OiAoXG4gICAgcmVxOiBSZXF1ZXN0LFxuICAgIHVzZXI6IENNU1VzZXJcbiAgKSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogVVJMIHRvIEdDSSBzZXJ2aWNlIGZvciB0cmFuc2Zvcm1pbmcgdXBsb2FkZWQgR0NTIGltYWdlcyB0byBhIEdvb2dsZSBBcHBcbiAgICogRW5naW5lIEltYWdlcyBBUEkgc2VydmluZyBVUkwuIERlZmF1bHRzIHRvIFwiaHR0cHM6Ly9nY2kucm9vdGpzLmRldlwiLiBUb1xuICAgKiBkaXNhYmxlLCBzZXQgdGhpcyB2YWx1ZSB0byBgZmFsc2VgLlxuICAgKi9cbiAgZ2NpPzogc3RyaW5nIHwgYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENNU1BsdWdpbiA9IFBsdWdpbiAmIHtcbiAgbmFtZTogJ3Jvb3QtY21zJztcbiAgZ2V0Q29uZmlnOiAoKSA9PiBDTVNQbHVnaW5PcHRpb25zO1xufTtcblxuZnVuY3Rpb24gZ2VuZXJhdGVTZWNyZXQoKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGNvbnN0IGNoYXJzID1cbiAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDM2OyBpKyspIHtcbiAgICBjb25zdCByYW5kID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKTtcbiAgICByZXN1bHQucHVzaChjaGFycy5jaGFyQXQocmFuZCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGlzRXhwaXJlZChkZWNvZGVkSWRUb2tlbjogRGVjb2RlZElkVG9rZW4pIHtcbiAgY29uc3QgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDA7XG4gIHJldHVybiB0cyAtIGRlY29kZWRJZFRva2VuLmF1dGhfdGltZSA+IDUgKiA2MDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNtc1BsdWdpbihvcHRpb25zOiBDTVNQbHVnaW5PcHRpb25zKTogQ01TUGx1Z2luIHtcbiAgY29uc3QgZmlyZWJhc2VDb25maWcgPSBvcHRpb25zLmZpcmViYXNlQ29uZmlnO1xuICBjb25zdCBjb29raWVTZWNyZXQgPSBvcHRpb25zLmNvb2tpZVNlY3JldCB8fCBnZW5lcmF0ZVNlY3JldCgpO1xuICBjb25zdCBhcHAgPSBpbml0aWFsaXplQXBwKHtcbiAgICBwcm9qZWN0SWQ6IGZpcmViYXNlQ29uZmlnLnByb2plY3RJZCxcbiAgICBjcmVkZW50aWFsOiBhcHBsaWNhdGlvbkRlZmF1bHQoKSxcbiAgfSk7XG4gIGNvbnN0IGF1dGggPSBnZXRBdXRoKGFwcCk7XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBsb2dpbiBpcyByZXF1aXJlZCBmb3IgdGhlIHJlcXVlc3QuIEN1cnJlbnRseSByZXR1cm5zIGB0cnVlYCBpZlxuICAgKiB0aGUgVVJMIHBhdGggc3RhcnRzIHdpdGggL2NtcyBvciBpZiA/cHJldmlldz10cnVlIGlzIGluIHRoZSBVUkwuXG4gICAqL1xuICBmdW5jdGlvbiBsb2dpblJlcXVpcmVkKHJlcTogUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIGlmIChyZXEub3JpZ2luYWxVcmwuc3RhcnRzV2l0aCgnL2NtcycpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKFN0cmluZyhyZXEucXVlcnkucHJldmlldykgPT09ICd0cnVlJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBhIG5ldyBsb2dpbiByZXF1ZXN0IGZvciBhIHVzZXIuIFRoZSByZXF1ZXN0IGJvZHkgc2hvdWxkIGNvbnRhaW5cbiAgICogYW4gaWRUb2tlbiwgd2hpY2ggaXMgdmVyaWZpZWQgb24gcHJvZCB1c2luZyBGaXJlYmFzZSBBZG1pbiBhbmQgSWRlbnRpdHlcbiAgICogVG9vbGtpdC4gSWYgYSBgaXNVc2VyQXV0aG9yaXplZCgpYCBjb25maWcgaXMgc2V0LCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzb1xuICAgKiB2ZXJpZnkgdmlhIHRoYXQgZnVuY3Rpb24uIFJldHVybnMgdHJ1ZSBpZiB0aGUgbG9naW4gdmVyaWZpY2F0aW9uIHN1Y2NlZWRzLlxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5VXNlckxvZ2luKHJlcTogUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGlkVG9rZW4gPSByZXEuYm9keT8uaWRUb2tlbjtcbiAgICBpZiAoIWlkVG9rZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbiBsb2NhbCBkZXYsIHNpbXBseSB2ZXJpZnkgdGhhdCBhbiBpZFRva2VuIGlzIHNldC4gVGhlIGlkZW50aXR5IHRvb2xraXRcbiAgICAvLyB0aGF0IHZlcmlmaWVzIGlkIHRva2VucyByZXF1aXJlcyBhIHNlcnZpY2UgYWNjb3VudCwgd2hpY2ggd2Ugd2FudCB0b1xuICAgIC8vIGF2b2lkIGhhdmluZyB0byBzZXQgdXAgd2hlbiB1c2VycyBhcmUgZG9pbmcgbG9jYWwgZGV2ZWxvcG1lbnQuXG4gICAgLy8gQXV0aGVudGljYXRpb24gaXMgc3RpbGwgcmVxdWlyZWQgYnkgdGhlIGZyb250ZW5kIHVzaW5nIEZpcmViYXNlIEF1dGgsXG4gICAgLy8gdGhpcyBqdXN0IGJ5cGFzc2VzIHRoZSBpbml0aWFsIHNlcnZlciBjaGVjayBiZWZvcmUgdGhlIHVpIGlzIHJlbmRlcmVkLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oaWRUb2tlbik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGp3dCA9IGF3YWl0IGF1dGgudmVyaWZ5SWRUb2tlbihpZFRva2VuLCB0cnVlKTtcbiAgICAgIGlmIChpc0V4cGlyZWQoand0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIWp3dC5lbWFpbCB8fCAhand0LmVtYWlsX3ZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLmlzVXNlckF1dGhvcml6ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9wdGlvbnMuaXNVc2VyQXV0aG9yaXplZChyZXEsIGp3dCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdmYWlsZWQgdG8gdmVyaWZ5IGp3dCB0b2tlbicpO1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUT0RPKHN0ZXZlbmxlKTogZGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBlbmZvcmNlIGBpc1VzZXJBdXRob3JpemVkKClgLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBzZXNzaW9uIHNob3VsZCBiZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGVcbiAgICogQ01TLiBSZXR1cm5zIHRydWUgaWYgYWNjZXNzIGlzIGdyYW50ZWQuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlVc2VyU2Vzc2lvbihyZXE6IFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZXNzaW9uQ29va2llID0gU3RyaW5nKHJlcS5jb29raWVzW1NFU1NJT05fQ09PS0lFXSB8fCAnJyk7XG4gICAgaWYgKCFzZXNzaW9uQ29va2llKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT24gbG9jYWwgZGV2LCBzaW1wbHkgdmVyaWZ5IHRoYXQgYW4gc2Vzc2lvbiBjb29raWUgaXMgc2V0LiBTZWUgbm90ZVxuICAgIC8vIGFib3ZlIGluIGB2ZXJpZnlVc2VyTG9naW4oKWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihzZXNzaW9uQ29va2llKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgand0ID0gYXdhaXQgYXV0aC52ZXJpZnlTZXNzaW9uQ29va2llKHNlc3Npb25Db29raWUsIHRydWUpO1xuICAgICAgaWYgKGlzRXhwaXJlZChqd3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICghand0LmVtYWlsIHx8ICFqd3QuZW1haWxfdmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMuaXNVc2VyQXV0aG9yaXplZCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgb3B0aW9ucy5pc1VzZXJBdXRob3JpemVkKHJlcSwgand0KTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE8oc3RldmVubGUpOiBkZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGVuZm9yY2UgYGlzVXNlckF1dGhvcml6ZWQoKWAuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2ZhaWxlZCB0byB2ZXJpZnkgand0IHRva2VuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncm9vdC1jbXMnLFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY29uZmlnIG9wdGlvbnMgcGFzc2VkIHRvIHRoZSBwbHVnaW4uXG4gICAgICovXG4gICAgZ2V0Q29uZmlnOiAoKSA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQSBtYXAgb2Ygc3NyIGZpbGVzIHRvIGluY2x1ZGUgd2hlbiBydW5uaW5nIGByb290IGJ1aWxkYC5cbiAgICAgKi9cbiAgICBzc3JJbnB1dDogKCkgPT4gKHtcbiAgICAgIGNtczogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vYXBwLmpzJyksXG4gICAgfSksXG5cbiAgICAvKipcbiAgICAgKiBBdHRhY2hlcyBDTVMtc3BlY2lmaWMgbWlkZGxld2FyZSB0byB0aGUgUm9vdC5qcyBzZXJ2ZXIuXG4gICAgICovXG4gICAgY29uZmlndXJlU2VydmVyOiBhc3luYyAoXG4gICAgICBzZXJ2ZXI6IFNlcnZlcixcbiAgICAgIHNlcnZlck9wdGlvbnM6IENvbmZpZ3VyZVNlcnZlck9wdGlvbnNcbiAgICApID0+IHtcbiAgICAgIHNlcnZlci51c2UoY29va2llUGFyc2VyKGNvb2tpZVNlY3JldCkpO1xuICAgICAgc2VydmVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlbmRlcmVyKHJlcTogUmVxdWVzdCk6IFByb21pc2U8QXBwTW9kdWxlPiB7XG4gICAgICAgIGlmIChzZXJ2ZXJPcHRpb25zLnR5cGUgPT09ICdkZXYnKSB7XG4gICAgICAgICAgY29uc3QgYXBwRmlsZVBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9hcHAuanMnKTtcbiAgICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgcmVxLnZpdGVTZXJ2ZXIhLnNzckxvYWRNb2R1bGUoXG4gICAgICAgICAgICBhcHBGaWxlUGF0aFxuICAgICAgICAgICkpIGFzIEFwcE1vZHVsZTtcbiAgICAgICAgICByZXR1cm4gYXBwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwSW1wb3J0UGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICByZXEucm9vdENvbmZpZyEucm9vdERpcixcbiAgICAgICAgICAnZGlzdC9zZXJ2ZXIvY21zLmpzJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoIShhd2FpdCBmaWxlRXhpc3RzKGFwcEltcG9ydFBhdGgpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdkaXN0L3NlcnZlci9jbXMuanMgbm90IGZvdW5kLiBydW4gYHJvb3QgYnVpbGRgIHRvIGNyZWF0ZSBpdC4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcHAgPSAoYXdhaXQgaW1wb3J0KGFwcEltcG9ydFBhdGgpKSBhcyBBcHBNb2R1bGU7XG4gICAgICAgIHJldHVybiBhcHA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXRpY0RpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd1aScpO1xuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9zdGF0aWMnLCBzaXJ2KHN0YXRpY0Rpciwge2RldjogZmFsc2V9KSk7XG5cbiAgICAgIC8vIExvZ2luIGhhbmRsZXIuXG4gICAgICBzZXJ2ZXIudXNlKCcvY21zL2xvZ2luJywgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVxLm1ldGhvZCA9PT0gJ1BVVCcgJiZcbiAgICAgICAgICByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgaXNBdXRob3JpemVkID0gYXdhaXQgdmVyaWZ5VXNlckxvZ2luKHJlcSk7XG4gICAgICAgICAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgICAgICAgICByZXMuc3RhdHVzKDQwMSkuanNvbih7c3VjY2VzczogZmFsc2UsIGVycm9yOiAnTk9UX0FVVEhPUklaRUQnfSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2V0IHNlc3Npb24gZXhwaXJhdGlvbiB0byA1IGRheXMuXG4gICAgICAgICAgICBjb25zdCBleHBpcmVzSW4gPSA2MCAqIDYwICogMjQgKiA1ICogMTAwMDtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSByZXEuYm9keS5pZFRva2VuITtcblxuICAgICAgICAgICAgbGV0IHNlc3Npb25Db29raWU6IHN0cmluZztcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICBzZXNzaW9uQ29va2llID0gaWRUb2tlbjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNlc3Npb25Db29raWUgPSBhd2FpdCBhdXRoLmNyZWF0ZVNlc3Npb25Db29raWUoaWRUb2tlbiwge1xuICAgICAgICAgICAgICAgIGV4cGlyZXNJbixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuY29va2llKFNFU1NJT05fQ09PS0lFLCBzZXNzaW9uQ29va2llLCB7XG4gICAgICAgICAgICAgIG1heEFnZTogZXhwaXJlc0luLFxuICAgICAgICAgICAgICBodHRwT25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgc2VjdXJlOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXMuanNvbih7c3VjY2VzczogdHJ1ZX0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVyci5zdGFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNcbiAgICAgICAgICAgICAgLnN0YXR1cyg1MDApXG4gICAgICAgICAgICAgIC5qc29uKHtzdWNjZXNzOiBmYWxzZSwgZXJyb3I6ICdVTktOT1dOX1NFUlZFUl9FUlJPUid9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBhcHAgPSBhd2FpdCBnZXRSZW5kZXJlcihyZXEpO1xuICAgICAgICAgIGFwcC5yZW5kZXJTaWduSW4ocmVxLCByZXMsIG9wdGlvbnMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIuc3RhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCgnVU5LTk9XTiBTRVJWRVIgRVJST1InKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvZ291dCBoYW5kbGVyLlxuICAgICAgc2VydmVyLnVzZSgnL2Ntcy9sb2dvdXQnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJlcy5jbGVhckNvb2tpZShTRVNTSU9OX0NPT0tJRSk7XG4gICAgICAgIHJlcy5yZWRpcmVjdCgnL2Ntcy9sb2dpbicpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFNhZmVndWFyZCB0byB2ZXJpZnkgdXNlciBsb2dpbiBiZWZvcmUgcmVuZGVyaW5nIGFueSBDTVMgcGFnZS5cbiAgICAgIHNlcnZlci51c2UoYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgIGlmICghbG9naW5SZXF1aXJlZChyZXEpKSB7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VySXNMb2dnZWRJbiA9IGF3YWl0IHZlcmlmeVVzZXJTZXNzaW9uKHJlcSk7XG4gICAgICAgIGlmICh1c2VySXNMb2dnZWRJbikge1xuICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICAgICAgY29udGludWU6IHJlcS5vcmlnaW5hbFVybCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlcy5yZWRpcmVjdChgL2Ntcy9sb2dpbj8ke3BhcmFtcy50b1N0cmluZygpfWApO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlbmRlciB0aGUgQ01TIFNQQS5cbiAgICAgIHNlcnZlci51c2UoJy9jbXMnLCBhc3luYyAocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgYXBwID0gYXdhaXQgZ2V0UmVuZGVyZXIocmVxKTtcbiAgICAgICAgICBhd2FpdCBhcHAucmVuZGVyQXBwKHJlcSwgcmVzLCB7XG4gICAgICAgICAgICByb290Q29uZmlnOiByZXEucm9vdENvbmZpZyxcbiAgICAgICAgICAgIGNtc0NvbmZpZzogb3B0aW9ucyxcbiAgICAgICAgICAgIGZpcmViYXNlQ29uZmlnOiBvcHRpb25zLmZpcmViYXNlQ29uZmlnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAvLyBUT0RPKHN0ZXZlbmxlKTogcmVuZGVyIGEgY3VzdG9tIGVycm9yIHBhZ2UuXG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKCdVTktOT1dOIFNFUlZFUiBFUlJPUicpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVwYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGZzXG4gICAgLmFjY2VzcyhmaWxlcGF0aClcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsU0FBUSxZQUFZLFVBQVM7QUFDN0IsT0FBTyxVQUFVO0FBQ2pCLFNBQVEscUJBQW9CO0FBUzVCLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sa0JBQWtCO0FBQ3pCLFNBQVEsb0JBQW9CLHFCQUFvQjtBQUNoRCxTQUFRLGVBQThCO0FBQ3RDLE9BQU8sVUFBVTtBQUVqQixJQUFNLFlBQVksS0FBSyxRQUFRLGNBQWMsWUFBWSxHQUFHLENBQUM7QUFJN0QsSUFBTSxpQkFBaUI7QUFxRHZCLFNBQVMsaUJBQXlCO0FBQ2hD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
package/dist/project.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { S as Schema } from './schema-f8000274.js';
1
+ import { S as Schema } from './schema-e7beb758.js';
2
2
  import 'preact';
3
3
 
4
4
  /**
@@ -105,6 +105,11 @@ declare const define: typeof defineSchema;
105
105
  type Collection = Schema & {
106
106
  /** URL path where the collection serves from. */
107
107
  url?: string;
108
+ /**
109
+ * URL that can be used to render a preview page. Used by the side-by-side
110
+ * editor to render instant previews. If blank, defaults to the `url` config.
111
+ */
112
+ previewUrl?: string;
108
113
  /** Page component to render the collection for instant previews */
109
114
  Component?: FunctionalComponent;
110
115
  /**
package/dist/ui/ui.css CHANGED
@@ -83,6 +83,12 @@
83
83
  padding: 0 4px;
84
84
  border-radius: 2px;
85
85
  }
86
+ .Layout__top__project {
87
+ font-size: 13px;
88
+ line-height: 1;
89
+ font-weight: 600;
90
+ margin-left: 12px;
91
+ }
86
92
  .Layout__top__logo:hover {
87
93
  background-color: var(--button-background-hover);
88
94
  }
package/dist/ui/ui.js CHANGED
@@ -35580,9 +35580,6 @@ This typically indicates that your device does not have a healthy Internet conne
35580
35580
  (e3 = getModularInstance(e3)) || e3 instanceof Rh ? Kh(r4, "updateDoc", t4._key, e3, n3, s4) : Uh(r4, "updateDoc", t4._key, e3);
35581
35581
  return nf(i3, [o5.toMutation(t4._key, Hn.exists(true))]);
35582
35582
  }
35583
- function Zl(t4) {
35584
- return nf(Ua2(t4.firestore, rh), [new cs(t4._key, Hn.none())]);
35585
- }
35586
35583
  function tf(t4, ...e3) {
35587
35584
  var n3, s4, i3;
35588
35585
  t4 = getModularInstance(t4);
@@ -37367,6 +37364,18 @@ ${this.customData.serverResponse}`;
37367
37364
  ["path", { d: "M12 9l0 6", key: "svg-2" }]
37368
37365
  ]);
37369
37366
 
37367
+ // ../../node_modules/.pnpm/@tabler+icons-preact@2.7.0_preact@10.11.0/node_modules/@tabler/icons-preact/dist/esm/icons/IconCloudOff.js
37368
+ var IconCloudOff = createPreactComponent("cloud-off", "IconCloudOff", [
37369
+ ["path", { d: "M3 3l18 18", key: "svg-0" }],
37370
+ [
37371
+ "path",
37372
+ {
37373
+ d: "M18 18h-11c-2.598 0 -4.705 -2.015 -4.705 -4.5s2.107 -4.5 4.705 -4.5c.112 -.5 .305 -.973 .568 -1.408m2.094 -1.948c.329 -.174 .68 -.319 1.05 -.43c1.9 -.576 4 -.194 5.5 1c1.503 1.192 2.185 3.017 1.788 4.786h1a3.5 3.5 0 0 1 2.212 6.212",
37374
+ key: "svg-1"
37375
+ }
37376
+ ]
37377
+ ]);
37378
+
37370
37379
  // ../../node_modules/.pnpm/@tabler+icons-preact@2.7.0_preact@10.11.0/node_modules/@tabler/icons-preact/dist/esm/icons/IconCopy.js
37371
37380
  var IconCopy = createPreactComponent("copy", "IconCopy", [
37372
37381
  [
@@ -39857,7 +39866,7 @@ ${content}</tr>
39857
39866
  // package.json
39858
39867
  var package_default = {
39859
39868
  name: "@blinkk/root-cms",
39860
- version: "1.0.0-beta.3",
39869
+ version: "1.0.0-beta.5",
39861
39870
  author: "s@blinkk.com",
39862
39871
  license: "MIT",
39863
39872
  engines: {
@@ -39947,7 +39956,7 @@ ${content}</tr>
39947
39956
  vitest: "^0.18.1"
39948
39957
  },
39949
39958
  peerDependencies: {
39950
- "@blinkk/root": "1.0.0-beta.3",
39959
+ "@blinkk/root": "1.0.0-beta.5",
39951
39960
  "firebase-admin": ">=11",
39952
39961
  preact: "*"
39953
39962
  }
@@ -39964,6 +39973,7 @@ ${content}</tr>
39964
39973
  ] });
39965
39974
  }
39966
39975
  Layout.Top = (props) => {
39976
+ const projectName = window.__ROOT_CTX.rootConfig.projectName || window.__ROOT_CTX.rootConfig.projectId;
39967
39977
  return /* @__PURE__ */ o4("div", { className: "Layout__top", children: [
39968
39978
  /* @__PURE__ */ o4("a", { className: "Layout__top__logo", href: "/cms", children: [
39969
39979
  /* @__PURE__ */ o4(IconSitemap, { size: 14 }),
@@ -39972,7 +39982,8 @@ ${content}</tr>
39972
39982
  /* @__PURE__ */ o4("div", { className: "Layout__top__version", children: [
39973
39983
  "v",
39974
39984
  package_default.version
39975
- ] })
39985
+ ] }),
39986
+ /* @__PURE__ */ o4("div", { className: "Layout__top__project", children: projectName })
39976
39987
  ] });
39977
39988
  };
39978
39989
  Layout.Side = (props) => {
@@ -40406,7 +40417,7 @@ ${content}</tr>
40406
40417
  const projectId = window.__ROOT_CTX.rootConfig.projectId;
40407
40418
  const db3 = window.firebase.db;
40408
40419
  const [collectionId, slug] = docId.split("/");
40409
- const draftRef = Za(
40420
+ const draftDocRef = Za(
40410
40421
  db3,
40411
40422
  "Projects",
40412
40423
  projectId,
@@ -40415,7 +40426,58 @@ ${content}</tr>
40415
40426
  "Drafts",
40416
40427
  slug
40417
40428
  );
40418
- await Zl(draftRef);
40429
+ const publishedDocRef = Za(
40430
+ db3,
40431
+ "Projects",
40432
+ projectId,
40433
+ "Collections",
40434
+ collectionId,
40435
+ "Published",
40436
+ slug
40437
+ );
40438
+ await lf(db3, async (transaction) => {
40439
+ transaction.delete(draftDocRef);
40440
+ transaction.delete(publishedDocRef);
40441
+ });
40442
+ }
40443
+ async function cmsUnpublishDoc(docId) {
40444
+ const projectId = window.__ROOT_CTX.rootConfig.projectId;
40445
+ const db3 = window.firebase.db;
40446
+ const [collectionId, slug] = docId.split("/");
40447
+ const draftDocRef = Za(
40448
+ db3,
40449
+ "Projects",
40450
+ projectId,
40451
+ "Collections",
40452
+ collectionId,
40453
+ "Drafts",
40454
+ slug
40455
+ );
40456
+ const publishedDocRef = Za(
40457
+ db3,
40458
+ "Projects",
40459
+ projectId,
40460
+ "Collections",
40461
+ collectionId,
40462
+ "Published",
40463
+ slug
40464
+ );
40465
+ await lf(db3, async (transaction) => {
40466
+ const draftDoc = await Kl(draftDocRef);
40467
+ if (!draftDoc.exists()) {
40468
+ throw new Error(`${draftDocRef.id} does not exist`);
40469
+ }
40470
+ const data = { ...draftDoc.data() };
40471
+ const sys = data.sys ?? {};
40472
+ sys.modifiedAt = df();
40473
+ sys.modifiedBy = window.firebase.user.email;
40474
+ delete sys.publishedAt;
40475
+ delete sys.publishedBy;
40476
+ delete sys.firstPublishedAt;
40477
+ delete sys.firstPublishedBy;
40478
+ transaction.update(draftDocRef, { sys });
40479
+ transaction.delete(publishedDocRef);
40480
+ });
40419
40481
  }
40420
40482
 
40421
40483
  // ui/components/Text/Text.tsx
@@ -40449,11 +40511,55 @@ ${content}</tr>
40449
40511
  // ui/components/DocActionsMenu/DocActionsMenu.tsx
40450
40512
  function DocActionsMenu(props) {
40451
40513
  const docId = props.docId;
40514
+ const data = props.data || {};
40515
+ const sys = data.sys || {};
40452
40516
  const modals = useModals();
40453
40517
  const onCopyDoc = () => {
40454
40518
  if (props.onCopy) {
40455
40519
  props.onCopy();
40456
40520
  }
40521
+ if (props.onAction) {
40522
+ props.onAction({ action: "copy" });
40523
+ }
40524
+ };
40525
+ const onUnpublishDoc = () => {
40526
+ const notificationId = `unpublish-doc-${docId}`;
40527
+ const modalId = modals.openConfirmModal({
40528
+ title: "unpublish doc",
40529
+ centered: true,
40530
+ children: /* @__PURE__ */ o4(Text2, { size: "body-sm", weight: "semi-bold", children: [
40531
+ "Are you sure you want to unpublish ",
40532
+ /* @__PURE__ */ o4("code", { children: docId }),
40533
+ "? There is no undo."
40534
+ ] }),
40535
+ labels: { confirm: "Unpublish", cancel: "Cancel" },
40536
+ confirmProps: { color: "red" },
40537
+ onCancel: () => console.log("Cancel"),
40538
+ closeOnConfirm: false,
40539
+ onConfirm: async () => {
40540
+ showNotification({
40541
+ id: notificationId,
40542
+ title: "Unpublishing doc",
40543
+ message: `Requesting unpublish of ${docId}...`,
40544
+ loading: true,
40545
+ autoClose: false
40546
+ });
40547
+ await cmsUnpublishDoc(docId);
40548
+ updateNotification({
40549
+ id: notificationId,
40550
+ title: "Unpublished!",
40551
+ message: `Successfully unpublished ${docId}!`,
40552
+ loading: false,
40553
+ autoClose: 5e3
40554
+ });
40555
+ modals.closeModal(modalId);
40556
+ if (props.onAction) {
40557
+ props.onAction({
40558
+ action: "unpublish"
40559
+ });
40560
+ }
40561
+ }
40562
+ });
40457
40563
  };
40458
40564
  const onDeleteDoc = () => {
40459
40565
  const notificationId = `delete-doc-${docId}`;
@@ -40489,6 +40595,9 @@ ${content}</tr>
40489
40595
  if (props.onDelete) {
40490
40596
  props.onDelete();
40491
40597
  }
40598
+ if (props.onAction) {
40599
+ props.onAction({ action: "delete" });
40600
+ }
40492
40601
  }
40493
40602
  });
40494
40603
  };
@@ -40500,6 +40609,14 @@ ${content}</tr>
40500
40609
  control: /* @__PURE__ */ o4(ActionIcon, { className: "DocEditor__ArrayField__item__header__controls__dots", children: /* @__PURE__ */ o4(IconDotsVertical, { size: 16 }) }),
40501
40610
  children: [
40502
40611
  /* @__PURE__ */ o4(Menu.Item, { icon: /* @__PURE__ */ o4(IconCopy, { size: 20 }), onClick: () => onCopyDoc(), children: "Copy" }),
40612
+ sys.firstPublishedAt && /* @__PURE__ */ o4(
40613
+ Menu.Item,
40614
+ {
40615
+ icon: /* @__PURE__ */ o4(IconCloudOff, { size: 20 }),
40616
+ onClick: () => onUnpublishDoc(),
40617
+ children: "Unpublish"
40618
+ }
40619
+ ),
40503
40620
  /* @__PURE__ */ o4(Menu.Item, { icon: /* @__PURE__ */ o4(IconTrash, { size: 20 }), onClick: () => onDeleteDoc(), children: "Delete" })
40504
40621
  ]
40505
40622
  }
@@ -40752,7 +40869,12 @@ ${content}</tr>
40752
40869
  DocActionsMenu,
40753
40870
  {
40754
40871
  docId: doc.id,
40755
- onDelete: () => props.reloadDocs()
40872
+ data: doc,
40873
+ onAction: (e3) => {
40874
+ if (e3.action === "delete" || e3.action === "unpublish") {
40875
+ props.reloadDocs();
40876
+ }
40877
+ }
40756
40878
  }
40757
40879
  ) })
40758
40880
  ]
@@ -41260,11 +41382,11 @@ ${content}</tr>
41260
41382
  draft.onSaveStateChange((newSaveState) => setSaveState(newSaveState));
41261
41383
  draft.start();
41262
41384
  document.addEventListener("visibilitychange", () => {
41263
- if (document.visibilityState === "visible") {
41385
+ if (document.hidden || document.visibilityState !== "visible") {
41386
+ draft.stop();
41387
+ } else {
41264
41388
  setLoading(true);
41265
41389
  draft.start();
41266
- } else {
41267
- draft.stop();
41268
41390
  }
41269
41391
  });
41270
41392
  return () => draft.dispose();
@@ -41497,7 +41619,14 @@ ${content}</tr>
41497
41619
  children: "Publish"
41498
41620
  }
41499
41621
  ) }),
41500
- /* @__PURE__ */ o4("div", { className: "DocEditor__statusBar__actionsMenu", children: /* @__PURE__ */ o4(DocActionsMenu, { docId: props.docId, onDelete: () => goBack() }) })
41622
+ /* @__PURE__ */ o4("div", { className: "DocEditor__statusBar__actionsMenu", children: /* @__PURE__ */ o4(
41623
+ DocActionsMenu,
41624
+ {
41625
+ docId: props.docId,
41626
+ data,
41627
+ onDelete: () => goBack()
41628
+ }
41629
+ ) })
41501
41630
  ] }),
41502
41631
  /* @__PURE__ */ o4("div", { className: "DocEditor__fields", children: fields.map((field) => /* @__PURE__ */ o4(
41503
41632
  DocEditor.Field,
@@ -41612,9 +41741,12 @@ ${content}</tr>
41612
41741
  };
41613
41742
  }
41614
41743
  async function getGciUrl(gcsPath) {
41615
- console.log(gcsPath);
41744
+ const gciDomain = window.__ROOT_CTX.rootConfig.gci;
41745
+ if (!gciDomain) {
41746
+ return "";
41747
+ }
41616
41748
  const params = new URLSearchParams({ gcs: gcsPath });
41617
- const url = `https://gci.rootjs.dev/_/serving_url?${params.toString()}`;
41749
+ const url = `${gciDomain}/_/serving_url?${params.toString()}`;
41618
41750
  const res = await window.fetch(url);
41619
41751
  if (res.status !== 200) {
41620
41752
  const text = await res.text();
@@ -41655,23 +41787,50 @@ ${content}</tr>
41655
41787
  return unsubscribe;
41656
41788
  }, []);
41657
41789
  async function onFileChange(e3) {
41658
- setLoading(true);
41659
- const inputEl = e3.target;
41660
- const files = inputEl.files || [];
41661
- const file = files[0];
41662
- const img2 = await uploadFileToGCS(file);
41663
- props.draft.updateKey(props.deepKey, img2);
41664
- setImg(img2);
41665
- setLoading(false);
41790
+ try {
41791
+ setLoading(true);
41792
+ const inputEl = e3.target;
41793
+ const files = inputEl.files || [];
41794
+ const file = files[0];
41795
+ const img2 = await uploadFileToGCS(file);
41796
+ props.draft.updateKey(props.deepKey, img2);
41797
+ setImg(img2);
41798
+ setLoading(false);
41799
+ } catch (err) {
41800
+ console.error("image upload failed");
41801
+ console.error(err);
41802
+ setLoading(false);
41803
+ showNotification({
41804
+ title: "Image upload failed",
41805
+ message: "Failed to upload image: " + String(err),
41806
+ color: "red",
41807
+ autoClose: false
41808
+ });
41809
+ }
41666
41810
  if (inputRef.current) {
41667
- const inputEl2 = inputRef.current;
41668
- inputEl2.value = "";
41811
+ const inputEl = inputRef.current;
41812
+ inputEl.value = "";
41669
41813
  }
41670
41814
  }
41671
41815
  return /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField", children: [
41672
41816
  img && img.src ? /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview", children: [
41673
- /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview__image", children: /* @__PURE__ */ o4("img", { src: img.gciUrl, width: img.width, height: img.height }) }),
41674
- /* @__PURE__ */ o4(TextInput, { size: "xs", radius: 0, value: img.gciUrl, disabled: true })
41817
+ /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__imagePreview__image", children: /* @__PURE__ */ o4(
41818
+ "img",
41819
+ {
41820
+ src: img.gciUrl || img.src,
41821
+ width: img.width,
41822
+ height: img.height
41823
+ }
41824
+ ) }),
41825
+ /* @__PURE__ */ o4(
41826
+ TextInput,
41827
+ {
41828
+ size: "xs",
41829
+ radius: 0,
41830
+ value: img.gciUrl || img.src,
41831
+ disabled: true
41832
+ }
41833
+ )
41675
41834
  ] }) : /* @__PURE__ */ o4("div", { className: "DocEditor__ImageField__noImage", children: "No image" }),
41676
41835
  /* @__PURE__ */ o4(
41677
41836
  "label",
@@ -42207,6 +42366,30 @@ ${content}</tr>
42207
42366
  }
42208
42367
  return servingPath;
42209
42368
  }
42369
+ function getDocPreviewPath(docIdOrCollection, slug) {
42370
+ let collectionId = docIdOrCollection;
42371
+ if (!slug) {
42372
+ [collectionId, slug] = docIdOrCollection.split("/");
42373
+ }
42374
+ const rootCollection = window.__ROOT_CTX.collections[collectionId];
42375
+ if (!rootCollection) {
42376
+ throw new Error(`collection not found: ${collectionId}`);
42377
+ }
42378
+ let previewPath = "";
42379
+ const previewPathConfig = rootCollection?.previewUrl || rootCollection?.url;
42380
+ if (previewPathConfig) {
42381
+ if (slug) {
42382
+ let urlPath = previewPathConfig.replace(/\[.*slug\]/, slug).replaceAll("--", "/");
42383
+ if (urlPath === "/index") {
42384
+ urlPath = "/";
42385
+ }
42386
+ previewPath = `${urlPath}`;
42387
+ } else {
42388
+ previewPath = `${previewPathConfig}`;
42389
+ }
42390
+ }
42391
+ return previewPath;
42392
+ }
42210
42393
 
42211
42394
  // ui/pages/DocumentPage/DocumentPage.tsx
42212
42395
  function DocumentPage(props) {
@@ -42236,7 +42419,7 @@ ${content}</tr>
42236
42419
  DocumentPage.Preview = (props) => {
42237
42420
  const domain2 = window.__ROOT_CTX.rootConfig.domain || "https://example.com";
42238
42421
  const servingPath = getDocServingPath(props.docId);
42239
- const previewPath = `${servingPath}?preview=true`;
42422
+ const previewPath = `${getDocPreviewPath(props.docId)}?preview=true`;
42240
42423
  const servingUrl = `${domain2}${servingPath}`;
42241
42424
  const [iframeUrl, setIframeUrl] = y2(servingUrl);
42242
42425
  const [device, setDevice] = y2("");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinkk/root-cms",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.0-beta.5",
4
4
  "author": "s@blinkk.com",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -49,7 +49,7 @@
49
49
  "//": "NOTE(stevenle): due to compat issues with mantine and preact, mantine is pinned to v4.2.12",
50
50
  "devDependencies": {
51
51
  "@babel/core": "^7.17.9",
52
- "@blinkk/root": "1.0.0-beta.3",
52
+ "@blinkk/root": "1.0.0-beta.5",
53
53
  "@emotion/react": "^11.10.5",
54
54
  "@firebase/rules-unit-testing": "^2.0.3",
55
55
  "@mantine/core": "4.2.12",
@@ -77,7 +77,7 @@
77
77
  "vitest": "^0.18.1"
78
78
  },
79
79
  "peerDependencies": {
80
- "@blinkk/root": "1.0.0-beta.3",
80
+ "@blinkk/root": "1.0.0-beta.5",
81
81
  "firebase-admin": ">=11",
82
82
  "preact": "*"
83
83
  },