@synopackageland/sdk 0.50.5 → 0.50.7
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/README.md +4 -0
- package/dist/index.js +303 -239
- package/dist/src/index.d.ts +1 -0
- package/dist/src/media.d.ts +30 -0
- package/dist/vue.js +23 -22
- package/executor-manifest.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -747,3 +747,7 @@ Do not add root/executor access to browser-only Apps such as OpenList.
|
|
|
747
747
|
current administrator's DSM session. Start it after rendering the App. Refusal,
|
|
748
748
|
missing session and timeout return `[]`; use package-account `dsmservices`
|
|
749
749
|
reading on the backend independently. See [service ports](../docs/dsm-service-ports.md).
|
|
750
|
+
|
|
751
|
+
For private native `<audio>` / `<video>` playback, use `mediaUrl(ctx, {asset})`
|
|
752
|
+
with the Go media service. It renews a stable, session-bound URL without resetting
|
|
753
|
+
playback. See [media grants](../docs/media.md) for backend hooks and cleanup.
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as I } from "./context-DWEbBTIr.js";
|
|
2
|
-
import { D as
|
|
2
|
+
import { D as EF, i as RF } from "./context-DWEbBTIr.js";
|
|
3
3
|
const w = { status: "unsupported" };
|
|
4
4
|
function De(e = {}) {
|
|
5
5
|
const t = { web: !0, host: "standalone-web", dsmStandalone: null, dsmLanguage: null, appLocale: null, systemVersion: null, fullVersion: null, theme: null, ...e }, a = /* @__PURE__ */ new Set();
|
|
@@ -83,12 +83,12 @@ function Me(e) {
|
|
|
83
83
|
}
|
|
84
84
|
function c(d) {
|
|
85
85
|
return o = !0, a = new Promise(function(u) {
|
|
86
|
-
var
|
|
87
|
-
function f
|
|
88
|
-
|
|
86
|
+
var g = new AbortController(), m = !1;
|
|
87
|
+
function p(f) {
|
|
88
|
+
m || (m = !0, clearTimeout(h), u(f));
|
|
89
89
|
}
|
|
90
90
|
var h = setTimeout(function() {
|
|
91
|
-
|
|
91
|
+
g.abort(), p(void 0);
|
|
92
92
|
}, 302e3);
|
|
93
93
|
try {
|
|
94
94
|
e.fetch("webman/login.cgi?enable_syno_token=yes", {
|
|
@@ -97,28 +97,28 @@ function Me(e) {
|
|
|
97
97
|
mode: "same-origin",
|
|
98
98
|
redirect: "error",
|
|
99
99
|
cache: "no-store",
|
|
100
|
-
signal:
|
|
101
|
-
}).then(function(
|
|
102
|
-
return
|
|
103
|
-
}).then(function(
|
|
104
|
-
if (!
|
|
100
|
+
signal: g.signal
|
|
101
|
+
}).then(function(f) {
|
|
102
|
+
return f.ok ? f.json() : void 0;
|
|
103
|
+
}).then(function(f) {
|
|
104
|
+
if (!m) {
|
|
105
105
|
var v = s();
|
|
106
106
|
if (v && v !== d) {
|
|
107
|
-
|
|
107
|
+
p(v);
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
-
var $ =
|
|
110
|
+
var $ = f && f.success === !0 ? i(f.SynoToken) : void 0;
|
|
111
111
|
if ($ === d && ($ = void 0), $) {
|
|
112
112
|
var b = i(e.read());
|
|
113
113
|
e.write && e.write($), n = b, t = $;
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
p($);
|
|
116
116
|
}
|
|
117
117
|
}).catch(function() {
|
|
118
|
-
|
|
118
|
+
p(void 0);
|
|
119
119
|
});
|
|
120
120
|
} catch {
|
|
121
|
-
|
|
121
|
+
p(void 0);
|
|
122
122
|
}
|
|
123
123
|
}).finally(function() {
|
|
124
124
|
a = void 0;
|
|
@@ -158,7 +158,7 @@ async function Te(e) {
|
|
|
158
158
|
function B(e) {
|
|
159
159
|
throw { code: { 106: "session_required", 107: "session_required", 119: "session_required", 105: "denied", 403: "denied", 407: "denied", 408: "denied", 414: "conflict", 1805: "conflict", 400: "invalid-request" }[String(e)] ?? "unavailable" };
|
|
160
160
|
}
|
|
161
|
-
function
|
|
161
|
+
function R(e) {
|
|
162
162
|
if (typeof e != "string" || e.length < 2 || e.length > 4096 || !e.startsWith("/") || /[\u0000-\u001f\u007f\\,"]/.test(e) || e.split("/").slice(1).some((t) => !t || t === "." || t === "..")) throw { code: "invalid-request" };
|
|
163
163
|
}
|
|
164
164
|
function te(e) {
|
|
@@ -178,20 +178,20 @@ function he(e = {}) {
|
|
|
178
178
|
}
|
|
179
179
|
async function n(i, s, r, l, c, d = !1, u) {
|
|
180
180
|
if (c.aborted) throw { code: "canceled" };
|
|
181
|
-
const
|
|
182
|
-
let
|
|
183
|
-
const h = () =>
|
|
184
|
-
c.addEventListener("abort", h, { once: !0 }), c.aborted &&
|
|
185
|
-
const
|
|
186
|
-
|
|
181
|
+
const g = new AbortController();
|
|
182
|
+
let m = !1, p = !1;
|
|
183
|
+
const h = () => g.abort();
|
|
184
|
+
c.addEventListener("abort", h, { once: !0 }), c.aborted && g.abort();
|
|
185
|
+
const f = setTimeout(() => {
|
|
186
|
+
p = !0, g.abort();
|
|
187
187
|
}, e.timeout ?? I());
|
|
188
188
|
let v = () => {
|
|
189
189
|
};
|
|
190
190
|
try {
|
|
191
191
|
const $ = async () => {
|
|
192
|
-
if (
|
|
192
|
+
if (g.signal.aborted) throw { code: "canceled" };
|
|
193
193
|
if (e.webApi && !u) {
|
|
194
|
-
|
|
194
|
+
m = !0;
|
|
195
195
|
try {
|
|
196
196
|
return await e.webApi(i, s, r, l);
|
|
197
197
|
} catch (C) {
|
|
@@ -199,58 +199,58 @@ function he(e = {}) {
|
|
|
199
199
|
throw A && B(A[1]), C;
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
-
const
|
|
203
|
-
if (
|
|
202
|
+
const E = await a(g.signal);
|
|
203
|
+
if (g.signal.aborted) throw { code: "canceled" };
|
|
204
204
|
const D = u ? new FormData() : new URLSearchParams();
|
|
205
205
|
for (const [C, A] of Object.entries({ api: i, method: s, version: r, ...l })) D.append(C, typeof A == "string" ? A : JSON.stringify(A));
|
|
206
|
-
u && D.append("file", u),
|
|
207
|
-
const P = await fetch(pe, { method: "POST", body: D, credentials: "same-origin", mode: "same-origin", redirect: "error", cache: "no-store", signal:
|
|
206
|
+
u && D.append("file", u), m = !0;
|
|
207
|
+
const P = await fetch(pe, { method: "POST", body: D, credentials: "same-origin", mode: "same-origin", redirect: "error", cache: "no-store", signal: g.signal, headers: { "X-SYNO-TOKEN": E } });
|
|
208
208
|
if (!P.ok) throw Error();
|
|
209
209
|
const M = await Te(P);
|
|
210
210
|
if (M?.success === !1 && B(M.error?.code), M?.success !== !0) throw Error();
|
|
211
211
|
return M.data;
|
|
212
|
-
}, b = new Promise((
|
|
213
|
-
v = () => D({ code:
|
|
212
|
+
}, b = new Promise((E, D) => {
|
|
213
|
+
v = () => D({ code: p ? "timeout" : "canceled" }), g.signal.addEventListener("abort", v, { once: !0 }), g.signal.aborted && v();
|
|
214
214
|
}), z = await Promise.race([$(), b]);
|
|
215
215
|
if (z?.error || Array.isArray(z?.errors) && z.errors.length) throw { code: "denied" };
|
|
216
216
|
return z;
|
|
217
217
|
} catch ($) {
|
|
218
218
|
const b = $?.code;
|
|
219
|
-
throw typeof b == "number" && [106, 107, 119, 105, 403, 407, 408, 414, 1805, 400].includes(b) && B(b), typeof b == "string" && ["canceled", "timeout"].includes(b) ? { code: d &&
|
|
219
|
+
throw typeof b == "number" && [106, 107, 119, 105, 403, 407, 408, 414, 1805, 400].includes(b) && B(b), typeof b == "string" && ["canceled", "timeout"].includes(b) ? { code: d && m ? "commit-uncertain" : b } : typeof b == "string" && ["session_required", "dsm_session_required", "denied", "not_found", "conflict", "invalid-request", "unavailable", "commit-uncertain"].includes(b) ? { code: b } : { code: d && m ? "commit-uncertain" : p ? "timeout" : c.aborted ? "canceled" : "unavailable" };
|
|
220
220
|
} finally {
|
|
221
|
-
clearTimeout(
|
|
221
|
+
clearTimeout(f), c.removeEventListener("abort", h), g.signal.removeEventListener("abort", v);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
async function o(i, s, r, l) {
|
|
225
|
-
i !== void 0 &&
|
|
225
|
+
i !== void 0 && R(i);
|
|
226
226
|
const c = r.limit ?? 100, d = r.sortBy ?? "name", u = r.sortDirection ?? "ASC";
|
|
227
227
|
if (!Number.isSafeInteger(s) || s < 0 || s > 1e6 || !Number.isSafeInteger(c) || c < 1 || c > 100 || !["name", "size", "type", "mtime"].includes(d) || !["ASC", "DESC"].includes(u)) throw { code: "invalid-request" };
|
|
228
|
-
const
|
|
229
|
-
if (!Array.isArray(
|
|
230
|
-
return
|
|
228
|
+
const g = await n("SYNO.FileStation.List", i === void 0 ? "list_share" : "list", 2, { offset: s, limit: c, sort_by: d, sort_direction: u, additional: ["size"], ...i === void 0 ? {} : { folder_path: i } }, l), m = i === void 0 ? g?.shares ?? g?.files : g?.files;
|
|
229
|
+
if (!Array.isArray(m) || m.length > c || !Number.isSafeInteger(g.total) || g.total < 0 || g.offset !== s || s + m.length > g.total || !m.length && s < g.total) throw { code: "unavailable" };
|
|
230
|
+
return m.forEach(ee), g;
|
|
231
231
|
}
|
|
232
232
|
return {
|
|
233
233
|
token: a,
|
|
234
234
|
shares: (i, s) => o(void 0, i, {}, s),
|
|
235
235
|
list: (i, s, r) => o(i, s.offset ?? 0, s, r),
|
|
236
236
|
async info(i, s) {
|
|
237
|
-
|
|
237
|
+
R(i);
|
|
238
238
|
const r = await n("SYNO.FileStation.List", "getinfo", 2, { path: [i], additional: ["size"] }, s);
|
|
239
239
|
if (!Array.isArray(r?.files) || r.files.length !== 1 || r.files[0]?.path !== i) throw { code: "not_found" };
|
|
240
240
|
return ee(r.files[0]);
|
|
241
241
|
},
|
|
242
242
|
async createFolder(i, s, r) {
|
|
243
|
-
return
|
|
243
|
+
return R(i), te(s), await n("SYNO.FileStation.CreateFolder", "create", 2, { folder_path: [i], name: [s], force_parent: !1 }, r, !0), { created: !0 };
|
|
244
244
|
},
|
|
245
245
|
// Display/preview only. A successful browser result never authorizes a
|
|
246
246
|
// backend write or grant; the executor independently checks its subject.
|
|
247
247
|
async checkPermission(i, s) {
|
|
248
|
-
|
|
248
|
+
R(i);
|
|
249
249
|
const r = Array.from(crypto.getRandomValues(new Uint8Array(16)), (c) => c.toString(16).padStart(2, "0")).join("");
|
|
250
250
|
if ((await n("SYNO.FileStation.CheckPermission", "write", 3, { path: i, filename: `.synopkgland-permission-probe-${r}`, overwrite: !1, size: 0 }, s))?.blSkip !== !1) throw { code: "denied" };
|
|
251
251
|
},
|
|
252
252
|
async upload(i, s, r) {
|
|
253
|
-
if (
|
|
253
|
+
if (R(i), te(s.name), !Number.isSafeInteger(s.size) || s.size < 0 || s.size > qe) throw { code: "upload_size_required" };
|
|
254
254
|
await n("SYNO.FileStation.Upload", "upload", 2, { path: i, create_parents: !1, overwrite: !1, size: s.size }, r, !0, s);
|
|
255
255
|
}
|
|
256
256
|
};
|
|
@@ -863,7 +863,7 @@ function Ze(e = {}) {
|
|
|
863
863
|
let o = !1;
|
|
864
864
|
return {
|
|
865
865
|
async download(i) {
|
|
866
|
-
if (
|
|
866
|
+
if (R(i), o) throw { code: "canceled" };
|
|
867
867
|
const s = await t.token();
|
|
868
868
|
if (o) throw { code: "canceled" };
|
|
869
869
|
const r = document.createElement("iframe");
|
|
@@ -875,9 +875,9 @@ function Ze(e = {}) {
|
|
|
875
875
|
c.httpEquiv = "Content-Security-Policy", c.content = "default-src 'none'; form-action 'self'; base-uri 'none'", l.head.append(c);
|
|
876
876
|
const d = l.createElement("form");
|
|
877
877
|
d.method = "POST", d.action = `${location.origin}${pe}?${new URLSearchParams({ SynoToken: s })}`;
|
|
878
|
-
for (const [u,
|
|
879
|
-
const
|
|
880
|
-
|
|
878
|
+
for (const [u, g] of Object.entries({ api: "SYNO.FileStation.Download", method: "download", version: "2", path: JSON.stringify([i]), mode: "download" })) {
|
|
879
|
+
const m = l.createElement("input");
|
|
880
|
+
m.type = "hidden", m.name = u, m.value = g, d.append(m);
|
|
881
881
|
}
|
|
882
882
|
l.body.append(d);
|
|
883
883
|
try {
|
|
@@ -935,35 +935,35 @@ function Qe(e) {
|
|
|
935
935
|
}
|
|
936
936
|
async function r(l, c, d, u = !1) {
|
|
937
937
|
(t || d.aborted) && _("canceled");
|
|
938
|
-
let
|
|
938
|
+
let g = () => {
|
|
939
939
|
};
|
|
940
|
-
const
|
|
940
|
+
const m = new Promise((v, $) => {
|
|
941
941
|
const b = () => $({ code: u ? "commit-uncertain" : "canceled" }), z = setTimeout(() => $({ code: u ? "commit-uncertain" : "timeout" }), I(e.requestTimeout));
|
|
942
|
-
d.addEventListener("abort", b, { once: !0 }), a.signal.addEventListener("abort", b, { once: !0 }),
|
|
942
|
+
d.addEventListener("abort", b, { once: !0 }), a.signal.addEventListener("abort", b, { once: !0 }), g = () => {
|
|
943
943
|
clearTimeout(z), d.removeEventListener("abort", b), a.signal.removeEventListener("abort", b);
|
|
944
944
|
};
|
|
945
|
-
}),
|
|
945
|
+
}), p = new AbortController(), h = () => p.abort();
|
|
946
946
|
d.addEventListener("abort", h, { once: !0 }), a.signal.addEventListener("abort", h, { once: !0 });
|
|
947
|
-
async function
|
|
948
|
-
switch (await s(),
|
|
947
|
+
async function f() {
|
|
948
|
+
switch (await s(), p.signal.aborted && _("canceled"), l) {
|
|
949
949
|
case "nas.files.shares":
|
|
950
|
-
return o.shares(c.offset,
|
|
950
|
+
return o.shares(c.offset, p.signal);
|
|
951
951
|
case "nas.files.list":
|
|
952
|
-
return o.list(c.path, c,
|
|
952
|
+
return o.list(c.path, c, p.signal);
|
|
953
953
|
case "nas.files.info":
|
|
954
|
-
return o.info(c.path,
|
|
954
|
+
return o.info(c.path, p.signal);
|
|
955
955
|
case "nas.files.create_folder":
|
|
956
|
-
return o.createFolder(c.parent, c.name,
|
|
956
|
+
return o.createFolder(c.parent, c.name, p.signal);
|
|
957
957
|
}
|
|
958
958
|
_("unsupported");
|
|
959
959
|
}
|
|
960
960
|
try {
|
|
961
|
-
return await Promise.race([
|
|
961
|
+
return await Promise.race([f(), m]);
|
|
962
962
|
} catch (v) {
|
|
963
963
|
const $ = v?.code;
|
|
964
964
|
J(v) && _(J(v)), [407, 408, "407", "408", "denied"].includes($) && _("denied"), ($ === "cross_origin" || $ === "origin_required") && _("origin-refused"), ($ === "request_timeout" || $ === "request_canceled") && _(u ? "commit-uncertain" : $ === "request_timeout" ? "timeout" : "canceled"), _(typeof $ == "string" && ["session_required", "dsm_session_required", "auth_unavailable", "denied", "not_found", "conflict", "invalid-request", "unavailable", "unknown_method", "unsupported", "commit-uncertain", "canceled", "timeout"].includes($) ? $ : u ? "commit-uncertain" : "unavailable");
|
|
965
965
|
} finally {
|
|
966
|
-
|
|
966
|
+
g(), p.abort(), d.removeEventListener("abort", h), a.signal.removeEventListener("abort", h);
|
|
967
967
|
}
|
|
968
968
|
}
|
|
969
969
|
return {
|
|
@@ -977,8 +977,8 @@ function Qe(e) {
|
|
|
977
977
|
return ae(await r("nas.files.shares", { offset: l }, c), l, 100);
|
|
978
978
|
},
|
|
979
979
|
async list(l, c, d) {
|
|
980
|
-
const u = c.offset ?? 0,
|
|
981
|
-
return ae(await r("nas.files.list", { path: l, ...c, offset: u, limit:
|
|
980
|
+
const u = c.offset ?? 0, g = c.limit ?? 100;
|
|
981
|
+
return ae(await r("nas.files.list", { path: l, ...c, offset: u, limit: g }, d), u, g);
|
|
982
982
|
},
|
|
983
983
|
async info(l, c) {
|
|
984
984
|
return ve(await r("nas.files.info", { path: l }, c));
|
|
@@ -3244,7 +3244,7 @@ const Sj = "Speichern im Hintergrund", _j = "Nach Ihrer Abmeldung speichert dies
|
|
|
3244
3244
|
approve: kx,
|
|
3245
3245
|
confirmChange: Dx,
|
|
3246
3246
|
password: Cx
|
|
3247
|
-
}, Mx = "Guardados en segundo plano", qx = "Después de cerrar sesión, esta aplicación sigue guardando archivos completos en la carpeta que elija. Los archivos existentes nunca se reemplazan", Tx = "Permitir que esta aplicación guarde aquí después de cerrar sesión, hasta que revoque el acceso", Ex = "Revocar acceso", Rx = "Elegir carpeta", Lx = "Un administrador debe aprobar los guardados en segundo plano antes de que pueda elegir una carpeta", Ix = "Activar guardados en segundo plano", jx = "Los guardados en segundo plano están desactivados. Un administrador puede activarlos; después deberá elegir de nuevo un destino", xx = "El resultado es desconocido. Revise esta tarea original y el destino antes de realizar otra acción. Esta aplicación no volverá a guardarlo automáticamente", Nx = "Se denegó el acceso. Compruebe los permisos de la carpeta y vuelva a elegir el destino", Ux = "No tiene permiso para escribir en esta carpeta. Cuando se restablezca el permiso, vuelva a guardar; no necesita elegir la carpeta de nuevo", Ox = "No tiene permiso para escribir en esta carpeta, por lo que no se autorizó. Elija otra carpeta o vuelva a elegir esta cuando se restablezca el permiso", Fx = "La carpeta de destino ya no existe. Vuelva a moverla a su sitio para guardar allí de nuevo, o elija otro destino", Hx = "Los privilegios de aplicaciones de DSM no le permiten usar esta aplicación desde esta dirección. Pida a un administrador que cambie la regla o vuelva a guardar desde una dirección permitida", Bx = "Los privilegios de aplicaciones de DSM no le permiten usar esta aplicación desde esta dirección. Pida a un administrador que cambie la regla o vuelva a elegir la carpeta desde una dirección permitida", Wx = "Vuelva a iniciar sesión en DSM y luego actualice", Vx = "Ya existe un archivo con este nombre. Revise el destino y elija otro nombre para una tarea nueva", Jx = "No hay suficiente espacio. Revise el destino antes de iniciar una tarea nueva", Kx = "No se pudo confirmar la acción. Actualice para comprobar el resultado actual antes de realizar otra acción", Gx = "El ámbito permitido cambió. Vuelva a elegir su carpeta de guardado. Los archivos guardados se conservan", Zx = "Guardar archivo de ejemplo", Yx = "Guarde un pequeño archivo de ejemplo en el destino activo con sus propios permisos", Qx = "Volver a intentar", Xx = "Carpeta de guardado",
|
|
3247
|
+
}, Mx = "Guardados en segundo plano", qx = "Después de cerrar sesión, esta aplicación sigue guardando archivos completos en la carpeta que elija. Los archivos existentes nunca se reemplazan", Tx = "Permitir que esta aplicación guarde aquí después de cerrar sesión, hasta que revoque el acceso", Ex = "Revocar acceso", Rx = "Elegir carpeta", Lx = "Un administrador debe aprobar los guardados en segundo plano antes de que pueda elegir una carpeta", Ix = "Activar guardados en segundo plano", jx = "Los guardados en segundo plano están desactivados. Un administrador puede activarlos; después deberá elegir de nuevo un destino", xx = "El resultado es desconocido. Revise esta tarea original y el destino antes de realizar otra acción. Esta aplicación no volverá a guardarlo automáticamente", Nx = "Se denegó el acceso. Compruebe los permisos de la carpeta y vuelva a elegir el destino", Ux = "No tiene permiso para escribir en esta carpeta. Cuando se restablezca el permiso, vuelva a guardar; no necesita elegir la carpeta de nuevo", Ox = "No tiene permiso para escribir en esta carpeta, por lo que no se autorizó. Elija otra carpeta o vuelva a elegir esta cuando se restablezca el permiso", Fx = "La carpeta de destino ya no existe. Vuelva a moverla a su sitio para guardar allí de nuevo, o elija otro destino", Hx = "Los privilegios de aplicaciones de DSM no le permiten usar esta aplicación desde esta dirección. Pida a un administrador que cambie la regla o vuelva a guardar desde una dirección permitida", Bx = "Los privilegios de aplicaciones de DSM no le permiten usar esta aplicación desde esta dirección. Pida a un administrador que cambie la regla o vuelva a elegir la carpeta desde una dirección permitida", Wx = "Vuelva a iniciar sesión en DSM y luego actualice", Vx = "Ya existe un archivo con este nombre. Revise el destino y elija otro nombre para una tarea nueva", Jx = "No hay suficiente espacio. Revise el destino antes de iniciar una tarea nueva", Kx = "No se pudo confirmar la acción. Actualice para comprobar el resultado actual antes de realizar otra acción", Gx = "El ámbito permitido cambió. Vuelva a elegir su carpeta de guardado. Los archivos guardados se conservan", Zx = "Guardar archivo de ejemplo", Yx = "Guarde un pequeño archivo de ejemplo en el destino activo con sus propios permisos", Qx = "Volver a intentar", Xx = "Carpeta de guardado", e0 = "Sin elegir", t0 = "Cancelar", n0 = "Cambiar la carpeta de destino requiere su contraseña de usuario y revoca las autorizaciones de destino de todos los usuarios. Los archivos guardados se conservan", o0 = "Los usuarios solo pueden elegir dónde guardar dentro de esta carpeta", a0 = "Aprobar", i0 = "Confirmar cambio", s0 = "Contraseña de usuario", r0 = {
|
|
3248
3248
|
title: Mx,
|
|
3249
3249
|
help: qx,
|
|
3250
3250
|
selection: Tx,
|
|
@@ -3269,114 +3269,114 @@ const Sj = "Speichern im Hintergrund", _j = "Nach Ihrer Abmeldung speichert dies
|
|
|
3269
3269
|
exampleHelp: Yx,
|
|
3270
3270
|
retry: Qx,
|
|
3271
3271
|
folder: Xx,
|
|
3272
|
-
folderNone:
|
|
3273
|
-
cancelChange:
|
|
3274
|
-
changeHelp:
|
|
3275
|
-
approveHelp:
|
|
3276
|
-
approve:
|
|
3277
|
-
confirmChange:
|
|
3278
|
-
password:
|
|
3279
|
-
},
|
|
3280
|
-
title:
|
|
3281
|
-
help:
|
|
3282
|
-
selection:
|
|
3283
|
-
revoke:
|
|
3284
|
-
choose:
|
|
3285
|
-
needs:
|
|
3286
|
-
enable:
|
|
3287
|
-
disabled:
|
|
3288
|
-
uncertainHelp:
|
|
3289
|
-
denied: $
|
|
3290
|
-
permission:
|
|
3291
|
-
permissionSelect:
|
|
3292
|
-
missing:
|
|
3293
|
-
appPrivilege:
|
|
3294
|
-
appPrivilegeSelect:
|
|
3295
|
-
session:
|
|
3296
|
-
conflict:
|
|
3297
|
-
space:
|
|
3298
|
-
error:
|
|
3299
|
-
reselect:
|
|
3300
|
-
example:
|
|
3301
|
-
exampleHelp:
|
|
3302
|
-
retry:
|
|
3303
|
-
folder:
|
|
3304
|
-
folderNone:
|
|
3305
|
-
cancelChange:
|
|
3306
|
-
changeHelp:
|
|
3307
|
-
approveHelp:
|
|
3308
|
-
approve:
|
|
3309
|
-
confirmChange:
|
|
3310
|
-
password:
|
|
3311
|
-
},
|
|
3312
|
-
title:
|
|
3313
|
-
help:
|
|
3314
|
-
selection:
|
|
3315
|
-
revoke:
|
|
3316
|
-
choose:
|
|
3317
|
-
needs:
|
|
3318
|
-
enable:
|
|
3319
|
-
disabled:
|
|
3320
|
-
uncertainHelp:
|
|
3321
|
-
denied:
|
|
3322
|
-
permission:
|
|
3323
|
-
permissionSelect:
|
|
3324
|
-
missing:
|
|
3325
|
-
appPrivilege:
|
|
3326
|
-
appPrivilegeSelect:
|
|
3327
|
-
session:
|
|
3328
|
-
conflict:
|
|
3329
|
-
space:
|
|
3330
|
-
error:
|
|
3331
|
-
reselect:
|
|
3332
|
-
example:
|
|
3333
|
-
exampleHelp:
|
|
3334
|
-
retry:
|
|
3335
|
-
folder:
|
|
3336
|
-
folderNone:
|
|
3337
|
-
cancelChange:
|
|
3338
|
-
changeHelp:
|
|
3339
|
-
approveHelp:
|
|
3340
|
-
approve:
|
|
3341
|
-
confirmChange:
|
|
3342
|
-
password:
|
|
3343
|
-
},
|
|
3344
|
-
title:
|
|
3345
|
-
help:
|
|
3346
|
-
selection:
|
|
3347
|
-
revoke:
|
|
3348
|
-
choose:
|
|
3349
|
-
needs:
|
|
3350
|
-
enable:
|
|
3351
|
-
disabled:
|
|
3352
|
-
uncertainHelp:
|
|
3353
|
-
denied:
|
|
3354
|
-
permission:
|
|
3355
|
-
permissionSelect:
|
|
3356
|
-
missing:
|
|
3357
|
-
appPrivilege:
|
|
3358
|
-
appPrivilegeSelect:
|
|
3359
|
-
session:
|
|
3360
|
-
conflict:
|
|
3361
|
-
space:
|
|
3362
|
-
error:
|
|
3363
|
-
reselect:
|
|
3364
|
-
example:
|
|
3365
|
-
exampleHelp:
|
|
3366
|
-
retry:
|
|
3367
|
-
folder:
|
|
3368
|
-
folderNone:
|
|
3369
|
-
cancelChange:
|
|
3370
|
-
changeHelp:
|
|
3371
|
-
approveHelp:
|
|
3372
|
-
approve:
|
|
3373
|
-
confirmChange:
|
|
3374
|
-
password:
|
|
3375
|
-
},
|
|
3376
|
-
title:
|
|
3377
|
-
help:
|
|
3378
|
-
selection:
|
|
3379
|
-
revoke:
|
|
3272
|
+
folderNone: e0,
|
|
3273
|
+
cancelChange: t0,
|
|
3274
|
+
changeHelp: n0,
|
|
3275
|
+
approveHelp: o0,
|
|
3276
|
+
approve: a0,
|
|
3277
|
+
confirmChange: i0,
|
|
3278
|
+
password: s0
|
|
3279
|
+
}, c0 = "Enregistrements en arrière-plan", l0 = "Après votre déconnexion, cette application continue d’enregistrer des fichiers entiers dans le dossier choisi. Les fichiers existants ne sont jamais remplacés", d0 = "Autoriser cette application à enregistrer ici après votre déconnexion, jusqu’à ce que vous révoquiez l’accès", u0 = "Révoquer l’accès", p0 = "Choisir un dossier", h0 = "Un administrateur doit approuver les enregistrements en arrière-plan avant que vous puissiez choisir un dossier", g0 = "Activer les enregistrements en arrière-plan", m0 = "Les enregistrements en arrière-plan sont désactivés. Un administrateur peut les activer ; vous devrez ensuite choisir à nouveau une destination", f0 = "Le résultat est inconnu. Vérifiez cette tâche d’origine et la destination avant toute autre action. Cette application ne l’enregistrera pas à nouveau automatiquement", $0 = "L’accès a été refusé. Vérifiez les autorisations du dossier, puis choisissez à nouveau la destination", v0 = "Vous n'avez pas l'autorisation d'écrire dans ce dossier. Une fois l'autorisation rétablie, enregistrez à nouveau ; inutile de choisir à nouveau le dossier", b0 = "Vous n'avez pas l'autorisation d'écrire dans ce dossier ; il n’a donc pas été autorisé. Choisissez un autre dossier, ou choisissez à nouveau celui-ci une fois l'autorisation rétablie", S0 = "Le dossier de destination n'existe plus. Remettez-le en place pour y enregistrer à nouveau, ou choisissez une autre destination", _0 = "Les privilèges d’application de DSM ne vous autorisent pas à utiliser cette application depuis cette adresse. Demandez à un administrateur de modifier la règle ou enregistrez à nouveau depuis une adresse autorisée", z0 = "Les privilèges d’application de DSM ne vous autorisent pas à utiliser cette application depuis cette adresse. Demandez à un administrateur de modifier la règle ou choisissez à nouveau le dossier depuis une adresse autorisée", y0 = "Reconnectez-vous à DSM, puis actualisez", A0 = "Un fichier portant ce nom existe déjà. Vérifiez la destination et choisissez un autre nom pour une nouvelle tâche", w0 = "L’espace est insuffisant. Vérifiez la destination avant de lancer une nouvelle tâche", k0 = "L’action n’a pas pu être confirmée. Actualisez pour vérifier le résultat actuel avant toute autre action", D0 = "La portée autorisée a changé. Choisissez à nouveau votre dossier d’enregistrement. Les fichiers enregistrés sont conservés", C0 = "Enregistrer un fichier d’exemple", P0 = "Enregistrez un petit fichier exemple dans la destination active avec vos propres autorisations", M0 = "Réessayer", q0 = "Dossier d’enregistrement", T0 = "Non choisi", E0 = "Annuler", R0 = "La modification du dossier nécessite votre mot de passe utilisateur et révoque les autorisations de destination de tous les utilisateurs. Les fichiers enregistrés sont conservés", L0 = "Les utilisateurs ne peuvent choisir un emplacement d’enregistrement que dans ce dossier", I0 = "Approuver", j0 = "Confirmer la modification", x0 = "Mot de passe utilisateur", N0 = {
|
|
3280
|
+
title: c0,
|
|
3281
|
+
help: l0,
|
|
3282
|
+
selection: d0,
|
|
3283
|
+
revoke: u0,
|
|
3284
|
+
choose: p0,
|
|
3285
|
+
needs: h0,
|
|
3286
|
+
enable: g0,
|
|
3287
|
+
disabled: m0,
|
|
3288
|
+
uncertainHelp: f0,
|
|
3289
|
+
denied: $0,
|
|
3290
|
+
permission: v0,
|
|
3291
|
+
permissionSelect: b0,
|
|
3292
|
+
missing: S0,
|
|
3293
|
+
appPrivilege: _0,
|
|
3294
|
+
appPrivilegeSelect: z0,
|
|
3295
|
+
session: y0,
|
|
3296
|
+
conflict: A0,
|
|
3297
|
+
space: w0,
|
|
3298
|
+
error: k0,
|
|
3299
|
+
reselect: D0,
|
|
3300
|
+
example: C0,
|
|
3301
|
+
exampleHelp: P0,
|
|
3302
|
+
retry: M0,
|
|
3303
|
+
folder: q0,
|
|
3304
|
+
folderNone: T0,
|
|
3305
|
+
cancelChange: E0,
|
|
3306
|
+
changeHelp: R0,
|
|
3307
|
+
approveHelp: L0,
|
|
3308
|
+
approve: I0,
|
|
3309
|
+
confirmChange: j0,
|
|
3310
|
+
password: x0
|
|
3311
|
+
}, U0 = "Salvataggi in background", O0 = "Dopo la disconnessione, questa app continua a salvare file interi nella cartella scelta. I file esistenti non vengono mai sostituiti", F0 = "Consentire a questa app di salvare qui dopo la disconnessione, fino alla revoca dell’accesso", H0 = "Revoca accesso", B0 = "Scegli cartella", W0 = "Un amministratore deve approvare i salvataggi in background prima di poter scegliere una cartella", V0 = "Attiva salvataggi in background", J0 = "I salvataggi in background sono disattivati. Un amministratore può attivarli; sarà poi necessario scegliere di nuovo una destinazione", K0 = "Il risultato è sconosciuto. Controllare questo processo originale e la destinazione prima di intraprendere altre azioni. Questa app non lo salverà di nuovo automaticamente", G0 = "Accesso negato. Controllare le autorizzazioni della cartella, quindi scegliere di nuovo la destinazione", Z0 = "Autorizzazione di scrittura mancante per questa cartella. Dopo il ripristino dell'autorizzazione, salvare di nuovo; non è necessario scegliere di nuovo la cartella", Y0 = "Autorizzazione di scrittura mancante per questa cartella, quindi la cartella non è stata autorizzata. Scegliere un'altra cartella oppure sceglierla di nuovo dopo il ripristino dell'autorizzazione", Q0 = "La cartella di destinazione non esiste più. Riportarla al suo posto per salvarvi di nuovo, oppure scegliere un'altra destinazione", X0 = "I privilegi delle applicazioni DSM non consentono di usare questa app da questo indirizzo. Chiedere a un amministratore di modificare la regola oppure salvare di nuovo da un indirizzo consentito", eN = "I privilegi delle applicazioni DSM non consentono di usare questa app da questo indirizzo. Chiedere a un amministratore di modificare la regola oppure scegliere di nuovo la cartella da un indirizzo consentito", tN = "Accedere di nuovo a DSM, quindi aggiornare", nN = "Esiste già un file con questo nome. Controllare la destinazione e scegliere un altro nome per un nuovo processo", oN = "Spazio insufficiente. Controllare la destinazione prima di avviare un nuovo processo", aN = "Impossibile confermare l’azione. Aggiornare per controllare il risultato attuale prima di intraprendere altre azioni", iN = "L’ambito consentito è cambiato. Scegliere di nuovo la cartella di salvataggio. I file salvati restano", sN = "Salva file di esempio", rN = "Salvare un piccolo file di esempio nella destinazione attiva con le proprie autorizzazioni", cN = "Riprova", lN = "Cartella di salvataggio", dN = "Non scelta", uN = "Annulla", pN = "La modifica della cartella richiede la password utente e revoca le autorizzazioni di destinazione di tutti gli utenti. I file salvati rimangono", hN = "Gli utenti possono scegliere dove salvare solo all’interno di questa cartella", gN = "Approva", mN = "Conferma modifica", fN = "Password utente", $N = {
|
|
3312
|
+
title: U0,
|
|
3313
|
+
help: O0,
|
|
3314
|
+
selection: F0,
|
|
3315
|
+
revoke: H0,
|
|
3316
|
+
choose: B0,
|
|
3317
|
+
needs: W0,
|
|
3318
|
+
enable: V0,
|
|
3319
|
+
disabled: J0,
|
|
3320
|
+
uncertainHelp: K0,
|
|
3321
|
+
denied: G0,
|
|
3322
|
+
permission: Z0,
|
|
3323
|
+
permissionSelect: Y0,
|
|
3324
|
+
missing: Q0,
|
|
3325
|
+
appPrivilege: X0,
|
|
3326
|
+
appPrivilegeSelect: eN,
|
|
3327
|
+
session: tN,
|
|
3328
|
+
conflict: nN,
|
|
3329
|
+
space: oN,
|
|
3330
|
+
error: aN,
|
|
3331
|
+
reselect: iN,
|
|
3332
|
+
example: sN,
|
|
3333
|
+
exampleHelp: rN,
|
|
3334
|
+
retry: cN,
|
|
3335
|
+
folder: lN,
|
|
3336
|
+
folderNone: dN,
|
|
3337
|
+
cancelChange: uN,
|
|
3338
|
+
changeHelp: pN,
|
|
3339
|
+
approveHelp: hN,
|
|
3340
|
+
approve: gN,
|
|
3341
|
+
confirmChange: mN,
|
|
3342
|
+
password: fN
|
|
3343
|
+
}, vN = "バックグラウンド保存", bN = "サインアウト後も、このアプリは選択したフォルダにファイル全体を保存し続けます。既存のファイルは置き換えられません", SN = "アクセスを取り消すまで、サインアウト後もこのアプリがここに保存することを許可します", _N = "アクセスを取り消す", zN = "フォルダを選択", yN = "フォルダを選択するには、管理者がバックグラウンド保存を承認する必要があります", AN = "バックグラウンド保存を有効にする", wN = "バックグラウンド保存は無効です。管理者が有効にできます。その後、保存先を選び直す必要があります", kN = "結果が不明です。次の操作を行う前に、この元のジョブと保存先を確認してください。このアプリが自動的に再保存することはありません", DN = "アクセスが拒否されました。フォルダの権限を確認してから、保存先を選び直してください", CN = "このフォルダへの書き込み権限がありません。権限が戻ったらもう一度保存してください。フォルダを選び直す必要はありません", PN = "このフォルダへの書き込み権限がないため、このフォルダは承認されませんでした。別のフォルダを選ぶか、権限が戻ってからこのフォルダを選び直してください", MN = "保存先フォルダが存在しません。元の場所に戻すと再び保存できます。または別の保存先を選択してください", qN = "DSM のアプリケーション権限で、このアドレスからこのアプリを使用することが許可されていません。管理者にルールの変更を依頼するか、許可されたアドレスからもう一度保存してください", TN = "DSM のアプリケーション権限で、このアドレスからこのアプリを使用することが許可されていません。管理者にルールの変更を依頼するか、許可されたアドレスからフォルダを選び直してください", EN = "DSM に再度サインインしてから、最新の情報に更新してください", RN = "同じ名前のファイルがすでに存在します。保存先を確認し、新しいジョブには別の名前を選んでください", LN = "空き容量が不足しています。新しいジョブを開始する前に保存先を確認してください", IN = "操作の結果を確認できませんでした。次の操作を行う前に、最新の情報に更新して現在の結果を確認してください", jN = "許可する範囲が変更されました。保存フォルダを選び直してください。保存済みのファイルは残ります", xN = "サンプルファイルを保存", NN = "自分の権限で小さなサンプルファイルを現在の保存先に保存します", UN = "再試行", ON = "保存フォルダ", FN = "未選択", HN = "キャンセル", BN = "保存先フォルダの変更には ユーザーパスワードが必要です。すべてのユーザーの保存先の承認が解除されます。保存済みのファイルは残ります", WN = "ユーザーは、このフォルダ内でのみ保存先を選択できます", VN = "承認", JN = "変更を確定", KN = "ユーザーパスワード", GN = {
|
|
3344
|
+
title: vN,
|
|
3345
|
+
help: bN,
|
|
3346
|
+
selection: SN,
|
|
3347
|
+
revoke: _N,
|
|
3348
|
+
choose: zN,
|
|
3349
|
+
needs: yN,
|
|
3350
|
+
enable: AN,
|
|
3351
|
+
disabled: wN,
|
|
3352
|
+
uncertainHelp: kN,
|
|
3353
|
+
denied: DN,
|
|
3354
|
+
permission: CN,
|
|
3355
|
+
permissionSelect: PN,
|
|
3356
|
+
missing: MN,
|
|
3357
|
+
appPrivilege: qN,
|
|
3358
|
+
appPrivilegeSelect: TN,
|
|
3359
|
+
session: EN,
|
|
3360
|
+
conflict: RN,
|
|
3361
|
+
space: LN,
|
|
3362
|
+
error: IN,
|
|
3363
|
+
reselect: jN,
|
|
3364
|
+
example: xN,
|
|
3365
|
+
exampleHelp: NN,
|
|
3366
|
+
retry: UN,
|
|
3367
|
+
folder: ON,
|
|
3368
|
+
folderNone: FN,
|
|
3369
|
+
cancelChange: HN,
|
|
3370
|
+
changeHelp: BN,
|
|
3371
|
+
approveHelp: WN,
|
|
3372
|
+
approve: VN,
|
|
3373
|
+
confirmChange: JN,
|
|
3374
|
+
password: KN
|
|
3375
|
+
}, ZN = "백그라운드 저장", YN = "로그아웃한 후에도 이 앱은 선택한 폴더에 전체 파일을 계속 저장합니다. 기존 파일은 덮어쓰지 않습니다", QN = "액세스를 취소할 때까지 로그아웃한 후에도 이 앱이 여기에 저장하도록 허용합니다", XN = "액세스 취소", eU = "폴더 선택", tU = "폴더를 선택하려면 먼저 관리자가 백그라운드 저장을 승인해야 합니다", nU = "백그라운드 저장 활성화", oU = "백그라운드 저장이 비활성화되었습니다. 관리자가 활성화할 수 있으며, 그 후 대상을 다시 선택해야 합니다", aU = "결과를 알 수 없습니다. 다른 작업을 하기 전에 이 원래 작업과 대상을 확인하십시오. 이 앱은 자동으로 다시 저장하지 않습니다", iU = "액세스가 거부되었습니다. 폴더 권한을 확인한 후 대상을 다시 선택하십시오", sU = "이 폴더에 쓸 권한이 없습니다. 권한이 복원되면 다시 저장하십시오. 폴더를 다시 선택할 필요는 없습니다", rU = "이 폴더에 쓸 권한이 없으므로 이 폴더가 승인되지 않았습니다. 다른 폴더를 선택하거나 권한이 복원된 후 이 폴더를 다시 선택하십시오", cU = "대상 폴더가 더 이상 없습니다. 원래 위치로 되돌리면 다시 저장할 수 있으며, 다른 대상을 선택할 수도 있습니다", lU = "DSM 응용 프로그램 권한 규칙에서 이 주소의 앱 사용을 허용하지 않습니다. 관리자에게 규칙 변경을 요청하거나 허용된 주소에서 다시 저장하십시오", dU = "DSM 응용 프로그램 권한 규칙에서 이 주소의 앱 사용을 허용하지 않습니다. 관리자에게 규칙 변경을 요청하거나 허용된 주소에서 폴더를 다시 선택하십시오", uU = "DSM에 다시 로그인한 후 새로 고치십시오", pU = "같은 이름의 파일이 이미 있습니다. 대상을 확인하고 새 작업에는 다른 이름을 선택하십시오", hU = "공간이 부족합니다. 새 작업을 시작하기 전에 대상을 확인하십시오", gU = "작업 결과를 확인할 수 없습니다. 다른 작업을 하기 전에 새로 고쳐 현재 결과를 확인하십시오", mU = "허용 범위가 변경되었습니다. 저장 폴더를 다시 선택하십시오. 저장된 파일은 유지됩니다", fU = "예제 파일 저장", $U = "자신의 권한으로 작은 예제 파일을 현재 대상에 저장합니다", vU = "재시도", bU = "저장 폴더", SU = "선택 안 함", _U = "취소", zU = "저장 폴더를 변경하려면 사용자 비밀번호가 필요하며 모든 사용자의 대상 권한이 해제됩니다. 이미 저장된 파일은 유지됩니다", yU = "사용자는 이 폴더 안에서만 저장 위치를 선택할 수 있습니다", AU = "승인", wU = "변경 확인", kU = "사용자 비밀번호", DU = {
|
|
3376
|
+
title: ZN,
|
|
3377
|
+
help: YN,
|
|
3378
|
+
selection: QN,
|
|
3379
|
+
revoke: XN,
|
|
3380
3380
|
choose: eU,
|
|
3381
3381
|
needs: tU,
|
|
3382
3382
|
enable: nU,
|
|
@@ -3468,7 +3468,7 @@ const Sj = "Speichern im Hintergrund", _j = "Nach Ihrer Abmeldung speichert dies
|
|
|
3468
3468
|
approve: R4,
|
|
3469
3469
|
confirmChange: L4,
|
|
3470
3470
|
password: I4
|
|
3471
|
-
}, Ae = /* @__PURE__ */ k(/* @__PURE__ */ Object.assign({ "../../i18n/save/de.json": Yj, "../../i18n/save/en.json": Px, "../../i18n/save/es.json":
|
|
3471
|
+
}, Ae = /* @__PURE__ */ k(/* @__PURE__ */ Object.assign({ "../../i18n/save/de.json": Yj, "../../i18n/save/en.json": Px, "../../i18n/save/es.json": r0, "../../i18n/save/fr.json": N0, "../../i18n/save/it.json": $N, "../../i18n/save/ja.json": GN, "../../i18n/save/ko.json": DU, "../../i18n/save/zh-CN.json": i4, "../../i18n/save/zh-TW.json": j4 }));
|
|
3472
3472
|
function x4(e = "en") {
|
|
3473
3473
|
return Ae[y(e)];
|
|
3474
3474
|
}
|
|
@@ -3815,9 +3815,9 @@ const se = /^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/, A6 = [
|
|
|
3815
3815
|
"synologymeet"
|
|
3816
3816
|
], re = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/, w6 = ["registered", "unregistered", "cleanup-required"], k6 = { dsm_4100: "portal_alias_invalid", dsm_4102: "portal_alias_reserved", dsm_4103: "portal_alias_in_use", dsm_105: "admin_required" }, ce = (e) => e?.code;
|
|
3817
3817
|
function bF(e) {
|
|
3818
|
-
function t(h,
|
|
3818
|
+
function t(h, f, v) {
|
|
3819
3819
|
const $ = { state: h, canManage: v === !0, controlPanel: v !== void 0, defaultAlias: e.defaultAlias };
|
|
3820
|
-
return h === "active" &&
|
|
3820
|
+
return h === "active" && f && ($.alias = f, $.url = `${e.location.protocol}//${e.location.host}/${encodeURIComponent(f)}/`), $;
|
|
3821
3821
|
}
|
|
3822
3822
|
function a(h) {
|
|
3823
3823
|
return h?.state === "active" && typeof h.alias == "string" && re.test(h.alias) ? t("active", h.alias) : t(h?.state === "inactive" ? "inactive" : "unavailable");
|
|
@@ -3832,9 +3832,9 @@ function bF(e) {
|
|
|
3832
3832
|
async function o() {
|
|
3833
3833
|
try {
|
|
3834
3834
|
if (!(((await e.send("SYNO.API.Info", "query", 1, { query: "SYNO.Core.AppPortal" }))?.["SYNO.Core.AppPortal"]?.maxVersion ?? 0) >= 2)) return t("unavailable", void 0, !1);
|
|
3835
|
-
const
|
|
3836
|
-
if (
|
|
3837
|
-
const v = typeof
|
|
3835
|
+
const f = await e.send("SYNO.Core.AppPortal", "get", 2, { id: e.appId, additional: ["default_setting"] });
|
|
3836
|
+
if (f?.id !== e.appId) return t("unavailable", void 0, !1);
|
|
3837
|
+
const v = typeof f.alias == "string" && re.test(f.alias) ? f.alias : "", $ = t(v ? "active" : "inactive", v, !0), b = f.additional?.default_setting?.alias;
|
|
3838
3838
|
return typeof b == "string" && se.test(b) && ($.defaultAlias = b), $;
|
|
3839
3839
|
} catch {
|
|
3840
3840
|
return t("unavailable", void 0, !1);
|
|
@@ -3848,60 +3848,60 @@ function bF(e) {
|
|
|
3848
3848
|
return e.isAdmin() ? t("unavailable", void 0, !1) : t("unavailable");
|
|
3849
3849
|
}
|
|
3850
3850
|
if (!e.isAdmin()) return a(h);
|
|
3851
|
-
const
|
|
3852
|
-
if (!
|
|
3853
|
-
if (
|
|
3851
|
+
const f = w6.find(($) => $ === h?.entry);
|
|
3852
|
+
if (!f) return t("unavailable", void 0, !1);
|
|
3853
|
+
if (f === "registered") return { ...await o(), entry: f };
|
|
3854
3854
|
const v = a(h);
|
|
3855
|
-
return { ...t(
|
|
3855
|
+
return { ...t(f === "unregistered" ? "inactive" : v.state, v.alias, !0), entry: f };
|
|
3856
3856
|
}
|
|
3857
3857
|
let s = Promise.resolve(), r, l, c = 0;
|
|
3858
3858
|
async function d() {
|
|
3859
3859
|
const h = ++c;
|
|
3860
3860
|
await s;
|
|
3861
|
-
const
|
|
3862
|
-
return h === c && (r =
|
|
3861
|
+
const f = e.entry ? await i() : e.isAdmin() ? await o() : await n();
|
|
3862
|
+
return h === c && (r = f), f;
|
|
3863
3863
|
}
|
|
3864
3864
|
function u() {
|
|
3865
3865
|
return l ??= d().finally(() => {
|
|
3866
3866
|
l = void 0;
|
|
3867
3867
|
});
|
|
3868
3868
|
}
|
|
3869
|
-
async function
|
|
3869
|
+
async function g(h) {
|
|
3870
3870
|
if (!e.isAdmin()) throw { code: "admin_required" };
|
|
3871
|
-
const
|
|
3872
|
-
s =
|
|
3871
|
+
const f = e.call(h, {});
|
|
3872
|
+
s = f.catch(() => {
|
|
3873
3873
|
}), l = void 0;
|
|
3874
3874
|
try {
|
|
3875
|
-
await
|
|
3875
|
+
await f;
|
|
3876
3876
|
} catch (v) {
|
|
3877
3877
|
throw { code: ce(v) === "ADMIN_REQUIRED" ? "admin_required" : "PORTAL_FAILED" };
|
|
3878
3878
|
}
|
|
3879
3879
|
return d();
|
|
3880
3880
|
}
|
|
3881
|
-
async function
|
|
3881
|
+
async function m(h) {
|
|
3882
3882
|
if (!e.isAdmin()) throw { code: "admin_required" };
|
|
3883
3883
|
try {
|
|
3884
3884
|
await e.send("SYNO.Core.AppPortal", "set", 2, { id: e.appId, alias: h });
|
|
3885
|
-
} catch (
|
|
3886
|
-
throw { code: k6[ce(
|
|
3885
|
+
} catch (f) {
|
|
3886
|
+
throw { code: k6[ce(f) ?? ""] ?? "portal_unavailable" };
|
|
3887
3887
|
}
|
|
3888
3888
|
return d();
|
|
3889
3889
|
}
|
|
3890
|
-
const
|
|
3890
|
+
const p = {
|
|
3891
3891
|
messages: G4(e.locale),
|
|
3892
3892
|
status: u,
|
|
3893
3893
|
lastStatus: () => r,
|
|
3894
3894
|
async apply(h) {
|
|
3895
3895
|
if (typeof h != "string" || !se.test(h)) throw { code: "portal_alias_invalid" };
|
|
3896
3896
|
if (A6.includes(h)) throw { code: "portal_alias_reserved" };
|
|
3897
|
-
return
|
|
3897
|
+
return m(h);
|
|
3898
3898
|
},
|
|
3899
|
-
disable: () =>
|
|
3899
|
+
disable: () => m(null),
|
|
3900
3900
|
openControlPanel() {
|
|
3901
3901
|
e.launch("SYNO.SDS.AdminCenter.Application", { fn: "SYNO.SDS.AdminCenter.Login.Main", tab: "applications" });
|
|
3902
3902
|
}
|
|
3903
3903
|
};
|
|
3904
|
-
return e.entry && (
|
|
3904
|
+
return e.entry && (p.register = () => g("portal.register"), p.unregister = () => g("portal.unregister")), u(), p;
|
|
3905
3905
|
}
|
|
3906
3906
|
const D6 = {
|
|
3907
3907
|
"sharedfolder.title": "Freigegebene Ordner",
|
|
@@ -4244,17 +4244,17 @@ function _F(e) {
|
|
|
4244
4244
|
const t = e.locale ?? "en", a = we({ call: e.call, locale: t, isAdmin: () => !1 }), n = /* @__PURE__ */ new Set();
|
|
4245
4245
|
let o = [], i, s, r = 0;
|
|
4246
4246
|
function l(u) {
|
|
4247
|
-
const
|
|
4248
|
-
for (const
|
|
4249
|
-
o = [...
|
|
4250
|
-
for (const
|
|
4247
|
+
const g = /* @__PURE__ */ new Map();
|
|
4248
|
+
for (const m of u) g.set(JSON.stringify([m.account, m.share, m.required]), m);
|
|
4249
|
+
o = [...g.values()];
|
|
4250
|
+
for (const m of n) m(o);
|
|
4251
4251
|
}
|
|
4252
4252
|
function c(u) {
|
|
4253
4253
|
if (s) return s;
|
|
4254
|
-
const
|
|
4255
|
-
return s = a.status().then((
|
|
4256
|
-
const
|
|
4257
|
-
u &&
|
|
4254
|
+
const g = r;
|
|
4255
|
+
return s = a.status().then((m) => {
|
|
4256
|
+
const p = m.folders.filter((h) => h.state === "pending" && h.required !== "none").map((h) => ({ account: m.account, share: h.name, required: h.required }));
|
|
4257
|
+
u && g === r ? l(p) : p.length && l([...p, ...o]);
|
|
4258
4258
|
}).finally(() => {
|
|
4259
4259
|
s = void 0;
|
|
4260
4260
|
}), s;
|
|
@@ -4269,14 +4269,14 @@ function _F(e) {
|
|
|
4269
4269
|
return c(!0);
|
|
4270
4270
|
},
|
|
4271
4271
|
handle(u) {
|
|
4272
|
-
const
|
|
4273
|
-
return
|
|
4272
|
+
const g = U6(u);
|
|
4273
|
+
return g ? (r++, l([...o, g]), !0) : !1;
|
|
4274
4274
|
},
|
|
4275
|
-
async call(u,
|
|
4275
|
+
async call(u, g, m) {
|
|
4276
4276
|
try {
|
|
4277
|
-
return await e.call(u,
|
|
4278
|
-
} catch (
|
|
4279
|
-
throw d.handle(
|
|
4277
|
+
return await e.call(u, g, m);
|
|
4278
|
+
} catch (p) {
|
|
4279
|
+
throw d.handle(p), p;
|
|
4280
4280
|
}
|
|
4281
4281
|
},
|
|
4282
4282
|
subscribe(u) {
|
|
@@ -4497,19 +4497,19 @@ function wF(e, t, a) {
|
|
|
4497
4497
|
}
|
|
4498
4498
|
};
|
|
4499
4499
|
}
|
|
4500
|
-
const K = /* @__PURE__ */ new WeakMap(),
|
|
4500
|
+
const K = /* @__PURE__ */ new WeakMap(), T = "[redacted]";
|
|
4501
4501
|
class ke {
|
|
4502
4502
|
constructor(t) {
|
|
4503
4503
|
K.set(this, t), Object.freeze(this);
|
|
4504
4504
|
}
|
|
4505
4505
|
toString() {
|
|
4506
|
-
return
|
|
4506
|
+
return T;
|
|
4507
4507
|
}
|
|
4508
4508
|
toJSON() {
|
|
4509
|
-
return
|
|
4509
|
+
return T;
|
|
4510
4510
|
}
|
|
4511
4511
|
[Symbol.toPrimitive]() {
|
|
4512
|
-
return
|
|
4512
|
+
return T;
|
|
4513
4513
|
}
|
|
4514
4514
|
clear() {
|
|
4515
4515
|
K.delete(this);
|
|
@@ -4533,14 +4533,14 @@ function W6(e, t = []) {
|
|
|
4533
4533
|
}
|
|
4534
4534
|
}
|
|
4535
4535
|
function DF(e, t = [], a = []) {
|
|
4536
|
-
const n = ["password", "passwd", "passphrase", "otp", "token", "secret", "authorization", "cookie", "synotoken", "sid"], o = (l) => n.includes(l.toLowerCase()) || l.toLowerCase() === "x-syno-token" || a.includes(l), i = [...t].filter(Boolean).sort((l, c) => c.length - l.length), s = (l) => i.reduce((c, d) => c.split(d).join(
|
|
4536
|
+
const n = ["password", "passwd", "passphrase", "otp", "token", "secret", "authorization", "cookie", "synotoken", "sid", "media_grant", "set-cookie"], o = (l) => n.includes(l.toLowerCase()) || l.toLowerCase() === "x-syno-token" || a.includes(l), i = [...t].filter(Boolean).sort((l, c) => c.length - l.length), s = (l) => i.reduce((c, d) => c.split(d).join(T), l.replace(/([?&]media_grant=)[^&#\s]*/gi, `$1${T}`));
|
|
4537
4537
|
function r(l) {
|
|
4538
|
-
return typeof l == "string" ? s(l) : Array.isArray(l) ? l.map(r) : l && typeof l == "object" ? Object.fromEntries(Object.entries(l).map(([c, d]) => [s(c), o(c) ?
|
|
4538
|
+
return typeof l == "string" ? s(l) : Array.isArray(l) ? l.map(r) : l && typeof l == "object" ? Object.fromEntries(Object.entries(l).map(([c, d]) => [s(c), o(c) ? T : r(d)])) : l;
|
|
4539
4539
|
}
|
|
4540
4540
|
try {
|
|
4541
4541
|
return r(JSON.parse(JSON.stringify(e)));
|
|
4542
4542
|
} catch {
|
|
4543
|
-
return
|
|
4543
|
+
return T;
|
|
4544
4544
|
}
|
|
4545
4545
|
}
|
|
4546
4546
|
function V6(e) {
|
|
@@ -4564,44 +4564,44 @@ function V6(e) {
|
|
|
4564
4564
|
function CF(e) {
|
|
4565
4565
|
const t = e.fetch ?? globalThis.fetch, a = e.sessionRetry?.session, n = a?.token ?? e.token, o = a?.ready ?? e.ready, i = new Set(Object.entries(e.sessionRetry?.operations ?? {}).filter(([, r]) => r?.effect === "read" && r.kind === "rpc").map(([r]) => r));
|
|
4566
4566
|
async function s(r, l, c) {
|
|
4567
|
-
const d = [], u = new AbortController(),
|
|
4568
|
-
let
|
|
4569
|
-
const
|
|
4570
|
-
|
|
4567
|
+
const d = [], u = new AbortController(), g = { code: "request_canceled", message: "request canceled" };
|
|
4568
|
+
let m;
|
|
4569
|
+
const p = () => {
|
|
4570
|
+
m = g, u.abort();
|
|
4571
4571
|
}, h = setTimeout(() => {
|
|
4572
|
-
|
|
4573
|
-
}, I(e.requestTimeout)),
|
|
4574
|
-
if (
|
|
4575
|
-
throw clearTimeout(h),
|
|
4576
|
-
|
|
4572
|
+
m = { code: "request_timeout", message: "request timeout" }, u.abort();
|
|
4573
|
+
}, I(e.requestTimeout)), f = l?.signal;
|
|
4574
|
+
if (f?.aborted)
|
|
4575
|
+
throw clearTimeout(h), g;
|
|
4576
|
+
f?.addEventListener("abort", p);
|
|
4577
4577
|
let v;
|
|
4578
|
-
const $ = new Promise((z,
|
|
4579
|
-
v = () =>
|
|
4578
|
+
const $ = new Promise((z, E) => {
|
|
4579
|
+
v = () => E(m ?? g), u.signal.addEventListener("abort", v, { once: !0 });
|
|
4580
4580
|
}), b = (z) => Promise.race([z, $]);
|
|
4581
4581
|
try {
|
|
4582
|
-
const z = W6(r, d),
|
|
4582
|
+
const z = W6(r, d), E = d.length > 0;
|
|
4583
4583
|
o && !n?.() && await b(o());
|
|
4584
4584
|
for (let D = 0; D < 2; D++) {
|
|
4585
|
-
if (
|
|
4585
|
+
if (m) throw m;
|
|
4586
4586
|
const P = n?.(), M = await b(t(e.endpoint, { method: "POST", mode: "same-origin", credentials: "same-origin", redirect: "error", cache: "no-store", headers: { "Content-Type": "application/json", ...P ? { "X-SYNO-TOKEN": P } : {} }, body: z, signal: u.signal })), C = await b(M.json());
|
|
4587
4587
|
if (M.ok === !1 || !C || typeof C != "object" || !("success" in C)) throw { code: "bad_response", message: "unexpected response" };
|
|
4588
4588
|
const A = C;
|
|
4589
4589
|
if (A.success === !0) return A.data;
|
|
4590
4590
|
const j = A.error ?? { code: "bad_response", message: "unexpected response" };
|
|
4591
|
-
if (
|
|
4591
|
+
if (E || A.success !== !1 || j.code !== "session_required" || D !== 0 || !a || !c || !i.has(c)) throw j;
|
|
4592
4592
|
let H;
|
|
4593
4593
|
try {
|
|
4594
4594
|
H = await b(a.refresh(P));
|
|
4595
4595
|
} catch {
|
|
4596
|
-
throw
|
|
4596
|
+
throw m ?? j;
|
|
4597
4597
|
}
|
|
4598
|
-
if (
|
|
4598
|
+
if (m) throw m;
|
|
4599
4599
|
if (!H || H === P) throw j;
|
|
4600
4600
|
}
|
|
4601
4601
|
} catch (z) {
|
|
4602
|
-
throw
|
|
4602
|
+
throw m ?? z;
|
|
4603
4603
|
} finally {
|
|
4604
|
-
clearTimeout(h),
|
|
4604
|
+
clearTimeout(h), f?.removeEventListener("abort", p), u.signal.removeEventListener("abort", v);
|
|
4605
4605
|
}
|
|
4606
4606
|
}
|
|
4607
4607
|
return { call: (r, l, c) => s({ method: r, params: l ?? {} }, c, r), batch: V6(s) };
|
|
@@ -4639,21 +4639,21 @@ async function J6(e, t) {
|
|
|
4639
4639
|
const l = (c) => typeof c == "string" ? c.trim() : "";
|
|
4640
4640
|
return r.port_info.flatMap((c) => {
|
|
4641
4641
|
if (!c || typeof c != "object") return [];
|
|
4642
|
-
const d = c, u = l(d.port_id),
|
|
4642
|
+
const d = c, u = l(d.port_id), g = l(d.protocol);
|
|
4643
4643
|
if (!u || !Array.isArray(d.dst_port)) return [];
|
|
4644
|
-
const
|
|
4645
|
-
const h = /^(\d{1,5})(?:[-:](\d{1,5}))?$/.exec(l(
|
|
4644
|
+
const m = d.dst_port.flatMap((p) => {
|
|
4645
|
+
const h = /^(\d{1,5})(?:[-:](\d{1,5}))?$/.exec(l(p));
|
|
4646
4646
|
if (!h) return [];
|
|
4647
|
-
const
|
|
4648
|
-
return
|
|
4647
|
+
const f = Number(h[1]), v = Number(h[2] ?? h[1]);
|
|
4648
|
+
return f >= 1 && v <= 65535 && v >= f ? [{ first: f, last: v }] : [];
|
|
4649
4649
|
});
|
|
4650
4650
|
return [{
|
|
4651
4651
|
id: u,
|
|
4652
4652
|
name: l(d.name),
|
|
4653
4653
|
desc: l(d.desc),
|
|
4654
|
-
protocol:
|
|
4655
|
-
ports: d.dst_port.map(l).filter((
|
|
4656
|
-
ranges:
|
|
4654
|
+
protocol: g,
|
|
4655
|
+
ports: d.dst_port.map(l).filter((p) => /^\d{1,5}$/.test(p)).map(Number).filter((p) => p >= 1 && p <= 65535),
|
|
4656
|
+
ranges: m
|
|
4657
4657
|
}];
|
|
4658
4658
|
});
|
|
4659
4659
|
} catch {
|
|
@@ -4677,8 +4677,71 @@ async function PF(e, t, a) {
|
|
|
4677
4677
|
const l = n?.keepLaunchApp ? i.searchParams.get("launchApp") : null, c = l ? i.searchParams.get("launchParam") : null;
|
|
4678
4678
|
return i.protocol = "https:", i.port = String(r[0]), i.pathname = "/webman/", i.search = "", i.hash = "", l && (i.searchParams.set("launchApp", l), c !== null && i.searchParams.set("launchParam", c)), i.href;
|
|
4679
4679
|
}
|
|
4680
|
+
async function MF(e, t) {
|
|
4681
|
+
const a = t.prefix ?? "media", n = new AbortController(), o = () => ({ code: "request_canceled", message: "media renewal disposed" });
|
|
4682
|
+
let i = !1, s, r, l;
|
|
4683
|
+
const c = () => {
|
|
4684
|
+
i = !0, clearTimeout(s), n.abort(), t.signal?.removeEventListener("abort", c);
|
|
4685
|
+
};
|
|
4686
|
+
t.signal?.addEventListener("abort", c, { once: !0 }), t.signal?.aborted && c();
|
|
4687
|
+
function d(p) {
|
|
4688
|
+
if (!p || !/^[a-f0-9]{64}$/.test(p.media_grant) || typeof p.url != "string" || !p.url.startsWith("/") || p.url.startsWith("//") || p.url.includes("\\")) throw { code: "bad_response", message: "invalid media grant" };
|
|
4689
|
+
const h = new URL(p.url, "https://media.invalid");
|
|
4690
|
+
if (h.hash || h.username || h.password || h.searchParams.size !== 2 || h.searchParams.get("method") !== `${a}.content` || h.searchParams.get("media_grant") !== p.media_grant || !Number.isFinite(p.ttl_ms) || p.ttl_ms <= 0 || p.ttl_ms / 2 > 2147483647 || !Number.isFinite(Date.parse(p.expires_at))) throw { code: "bad_response", message: "invalid media grant" };
|
|
4691
|
+
}
|
|
4692
|
+
let u;
|
|
4693
|
+
try {
|
|
4694
|
+
if (i || (u = await e.call(`${a}.issue`, { asset: t.asset }, { signal: n.signal }), d(u), i)) throw o();
|
|
4695
|
+
} catch (p) {
|
|
4696
|
+
throw c(), p;
|
|
4697
|
+
}
|
|
4698
|
+
function g() {
|
|
4699
|
+
clearTimeout(s), i || (s = setTimeout(() => {
|
|
4700
|
+
m().catch((p) => {
|
|
4701
|
+
if (!i) {
|
|
4702
|
+
r = p;
|
|
4703
|
+
try {
|
|
4704
|
+
t.onError?.(p);
|
|
4705
|
+
} catch {
|
|
4706
|
+
}
|
|
4707
|
+
}
|
|
4708
|
+
});
|
|
4709
|
+
}, u.ttl_ms / 2));
|
|
4710
|
+
}
|
|
4711
|
+
function m() {
|
|
4712
|
+
return i ? Promise.reject(o()) : l || (clearTimeout(s), l = (async () => {
|
|
4713
|
+
const p = await e.call(`${a}.renew`, { media_grant: u.media_grant }, { signal: n.signal });
|
|
4714
|
+
if (d(p), i) throw o();
|
|
4715
|
+
if (p.url !== u.url || p.media_grant !== u.media_grant) throw { code: "bad_response", message: "media renewal changed the URL" };
|
|
4716
|
+
u = p, r = void 0, g();
|
|
4717
|
+
})().catch((p) => {
|
|
4718
|
+
throw r = p, p;
|
|
4719
|
+
}).finally(() => {
|
|
4720
|
+
l = void 0;
|
|
4721
|
+
}), l);
|
|
4722
|
+
}
|
|
4723
|
+
return g(), {
|
|
4724
|
+
get url() {
|
|
4725
|
+
return u.url;
|
|
4726
|
+
},
|
|
4727
|
+
get media_grant() {
|
|
4728
|
+
return u.media_grant;
|
|
4729
|
+
},
|
|
4730
|
+
get expiresAt() {
|
|
4731
|
+
return u.expires_at;
|
|
4732
|
+
},
|
|
4733
|
+
get error() {
|
|
4734
|
+
return r;
|
|
4735
|
+
},
|
|
4736
|
+
renew: m,
|
|
4737
|
+
async revoke() {
|
|
4738
|
+
c(), await e.call(`${a}.revoke`, { media_grant: u.media_grant });
|
|
4739
|
+
},
|
|
4740
|
+
dispose: c
|
|
4741
|
+
};
|
|
4742
|
+
}
|
|
4680
4743
|
export {
|
|
4681
|
-
|
|
4744
|
+
EF as DEFAULT_REQUEST_TIMEOUT,
|
|
4682
4745
|
V as FILE_STATION_APP,
|
|
4683
4746
|
Fy as LIFECYCLE_RETRY_MAX_MS,
|
|
4684
4747
|
Hy as LIFECYCLE_STARTING_RETRY_MAX_MS,
|
|
@@ -4721,13 +4784,14 @@ export {
|
|
|
4721
4784
|
Be as format,
|
|
4722
4785
|
jC as identityCatalogs,
|
|
4723
4786
|
gF as identityCopy,
|
|
4724
|
-
|
|
4787
|
+
RF as isFullPage,
|
|
4725
4788
|
tF as joinSentences,
|
|
4726
4789
|
eF as labelSeparator,
|
|
4727
4790
|
X as launchRoute,
|
|
4728
4791
|
By as lifecycleCopy,
|
|
4729
4792
|
Z as lifecycleRefusal,
|
|
4730
4793
|
dF as lifecycleRetryDelay,
|
|
4794
|
+
MF as mediaUrl,
|
|
4731
4795
|
X6 as mergeCatalogs,
|
|
4732
4796
|
ze as nasCatalogs,
|
|
4733
4797
|
uF as nasCopy,
|
package/dist/src/index.d.ts
CHANGED
|
@@ -42,3 +42,4 @@ export { createClient, type Batch, type BatchCall, type BatchResult, type Client
|
|
|
42
42
|
export { readDsmPorts, type DsmPort, type DsmPortRange } from './dsm/service-ports';
|
|
43
43
|
export { readDsmHttpsURL, type DsmHttpsURLOptions } from './dsm/https';
|
|
44
44
|
export { requestSecret, RequestSecret, redactSecrets } from './secret';
|
|
45
|
+
export { mediaUrl, type MediaGrant, type MediaOptions, type MediaURL } from './media';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Context } from './context';
|
|
2
|
+
export interface MediaGrant {
|
|
3
|
+
media_grant: string;
|
|
4
|
+
url: string;
|
|
5
|
+
expires_at: string;
|
|
6
|
+
ttl_ms: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MediaOptions {
|
|
9
|
+
asset: string;
|
|
10
|
+
/** App permission prefix, matching the Go media.Config; defaults to media. */
|
|
11
|
+
prefix?: string;
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
/** Renewal stops on failure. The App can show the error and explicitly renew. */
|
|
14
|
+
onError?: (error: unknown) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface MediaURL {
|
|
17
|
+
/** Stable across renewals: assign to audio/video.src once. */
|
|
18
|
+
readonly url: string;
|
|
19
|
+
readonly media_grant: string;
|
|
20
|
+
readonly expiresAt: string;
|
|
21
|
+
readonly error: unknown;
|
|
22
|
+
renew(): Promise<void>;
|
|
23
|
+
revoke(): Promise<void>;
|
|
24
|
+
/** Stops renewal; does not revoke the grant or unload the media element. */
|
|
25
|
+
dispose(): void;
|
|
26
|
+
}
|
|
27
|
+
/** Obtain an owner-checked native media URL and renew without replacing src.
|
|
28
|
+
* Uses the normal authenticated ctx.call transport. No token enters the URL.
|
|
29
|
+
* Dispose on unmount; pause/unload the element yourself to release bytes. */
|
|
30
|
+
export declare function mediaUrl(ctx: Pick<Context, 'call'>, options: MediaOptions): Promise<MediaURL>;
|
package/dist/vue.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { D as dt, i as Ba } from "./context-DWEbBTIr.js";
|
|
2
2
|
import { c as Io } from "./context-DWEbBTIr.js";
|
|
3
3
|
import { appRefusal as va, appDenial as He, delegateCopy as Ie, createDsmFileStation as ct, appLifecycle as Pe, lifecycleRetryDelay as Ca, joinSentences as Fa, lifecycleCopy as Oe, shellCopy as oa, uiLocale as Oa, format as Ge, nasCopy as Ve, nasErrorCopy as qa, saveCopy as $a, saveError as ia, createNasProvider as Ma, labelSeparator as Sa, identityCopy as Ka, backgroundCopy as vt, createBackgroundPickerProvider as ft, backgroundErrorCopy as pt, requestKey as _a, lifecycleRefusal as mt, errorCopy as yt, scopedPicker as bt, authorizationCopy as Ha, createEntryCheck as gt } from "./index.js";
|
|
4
|
-
import { FILE_STATION_APP as Lo, LIFECYCLE_RETRY_MAX_MS as No, LIFECYCLE_STARTING_RETRY_MAX_MS as Vo, MAX_LAUNCH_ROUTE as Bo, RequestSecret as Fo, activePage as Oo, authorizationCatalogs as qo, backgroundCatalogs as Mo, bridgeCatalogs as Ko, bridgeErrorCopy as Ho, catalogs as Xo, createBackgroundSaveFacade as Go, createClient as Wo, createDsmSession as Jo, createFileTransfers as Yo, createPortalAccess as Qo, createSharedFolderAccess as Zo, createSharedFolderPermission as jo, createStandaloneContext as ei, createStandaloneHost as ai, decodeResponse as ti, delegateCatalogs as li, dsmLaunchURL as ni, encodeRequest as si, fileStationPath as oi, followLaunchRoute as ii, identityCatalogs as ui, launchRoute as ri,
|
|
4
|
+
import { FILE_STATION_APP as Lo, LIFECYCLE_RETRY_MAX_MS as No, LIFECYCLE_STARTING_RETRY_MAX_MS as Vo, MAX_LAUNCH_ROUTE as Bo, RequestSecret as Fo, activePage as Oo, authorizationCatalogs as qo, backgroundCatalogs as Mo, bridgeCatalogs as Ko, bridgeErrorCopy as Ho, catalogs as Xo, createBackgroundSaveFacade as Go, createClient as Wo, createDsmSession as Jo, createFileTransfers as Yo, createPortalAccess as Qo, createSharedFolderAccess as Zo, createSharedFolderPermission as jo, createStandaloneContext as ei, createStandaloneHost as ai, decodeResponse as ti, delegateCatalogs as li, dsmLaunchURL as ni, encodeRequest as si, fileStationPath as oi, followLaunchRoute as ii, identityCatalogs as ui, launchRoute as ri, mediaUrl as di, mergeCatalogs as ci, nasCatalogs as vi, openFileInFileStation as fi, openFolderInFileStation as pi, portalCatalogs as mi, portalMessages as yi, protocolCodes as bi, protocolOps as gi, protocolSchemas as hi, readDsmHttpsURL as ki, readDsmPorts as _i, redactSecrets as wi, requestSecret as xi, saveCatalogs as Ci, sharedFolderAccessFor as $i, sharedFolderCatalogs as Si, sharedFolderMessages as Ei, sharedFolderPermissionMessage as Pi, shellCatalogs as Ai, shellPages as Ti, uiLocales as zi } from "./index.js";
|
|
5
5
|
import { inject as ze, ref as b, computed as C, onBeforeUnmount as ke, Comment as ht, Text as kt, Fragment as ee, watch as We, onMounted as xe, defineComponent as ve, openBlock as l, createElementBlock as w, createElementVNode as x, toDisplayString as o, createCommentVNode as y, renderList as me, normalizeClass as Re, createVNode as p, unref as e, createTextVNode as h, createBlock as g, renderSlot as ge, withCtx as s, resolveDynamicComponent as je, normalizeProps as ua, mergeProps as Ea, withModifiers as Je, isRef as ra, provide as Xe, useTemplateRef as Ne, watchEffect as la, useSlots as Xa, guardReactiveProps as za, createSlots as fa, Teleport as Ga, markRaw as _t, h as wt, useId as xt, shallowRef as Ct, onUnmounted as Wa, nextTick as $t } from "vue";
|
|
6
6
|
import { Timer as St, Info as Et, ShieldCheck as Ja, ChevronRight as Ya, LogOut as Pt, ChevronLeft as At, RotateCw as Tt } from "@lucide/vue";
|
|
7
7
|
import { SettingsSection as we, Callout as j, Button as D, SettingsRow as $e, Skeleton as Be, Badge as ea, PathDisplay as Fe, Form as Ye, FormItem as Ae, Select as Pa, Input as Ue, Dialog as qe, ensureDeviceViewport as zt, AppRoot as Rt, ConfigProvider as Ut, PageContent as Ra, PageHeader as Ua, AppLayout as It, LoadingArea as Qa, AppSidebar as Dt, AppSidebarUser as Lt, IconButton as sa, AppToolbar as Nt, InfoTip as Za, FileTypeIcon as ha, Breadcrumb as Vt, FilePicker as Bt, TreeView as Ft, DataGrid as Ot, Link as wa, FormActions as pa, Card as Ia, Checkbox as qt, ListItem as Da } from "@synopackageland/ui";
|
|
@@ -4434,35 +4434,36 @@ export {
|
|
|
4434
4434
|
Oe as lifecycleCopy,
|
|
4435
4435
|
mt as lifecycleRefusal,
|
|
4436
4436
|
Ca as lifecycleRetryDelay,
|
|
4437
|
-
di as
|
|
4438
|
-
ci as
|
|
4437
|
+
di as mediaUrl,
|
|
4438
|
+
ci as mergeCatalogs,
|
|
4439
|
+
vi as nasCatalogs,
|
|
4439
4440
|
Ve as nasCopy,
|
|
4440
4441
|
qa as nasErrorCopy,
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4442
|
+
fi as openFileInFileStation,
|
|
4443
|
+
pi as openFolderInFileStation,
|
|
4444
|
+
mi as portalCatalogs,
|
|
4445
|
+
yi as portalMessages,
|
|
4446
|
+
bi as protocolCodes,
|
|
4447
|
+
gi as protocolOps,
|
|
4448
|
+
hi as protocolSchemas,
|
|
4449
|
+
ki as readDsmHttpsURL,
|
|
4450
|
+
_i as readDsmPorts,
|
|
4451
|
+
wi as redactSecrets,
|
|
4451
4452
|
_a as requestKey,
|
|
4452
|
-
|
|
4453
|
-
|
|
4453
|
+
xi as requestSecret,
|
|
4454
|
+
Ci as saveCatalogs,
|
|
4454
4455
|
$a as saveCopy,
|
|
4455
4456
|
ia as saveError,
|
|
4456
4457
|
bt as scopedPicker,
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4458
|
+
$i as sharedFolderAccessFor,
|
|
4459
|
+
Si as sharedFolderCatalogs,
|
|
4460
|
+
Ei as sharedFolderMessages,
|
|
4461
|
+
Pi as sharedFolderPermissionMessage,
|
|
4462
|
+
Ai as shellCatalogs,
|
|
4462
4463
|
oa as shellCopy,
|
|
4463
|
-
|
|
4464
|
+
Ti as shellPages,
|
|
4464
4465
|
Oa as uiLocale,
|
|
4465
|
-
|
|
4466
|
+
zi as uiLocales,
|
|
4466
4467
|
ao as useAuthorization,
|
|
4467
4468
|
Mt as useExecutorPreload,
|
|
4468
4469
|
et as useExecutorSetup,
|
package/executor-manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synopackageland/sdk",
|
|
3
|
-
"version": "0.50.
|
|
3
|
+
"version": "0.50.7",
|
|
4
4
|
"description": "Frontend SDK for DSM packages built with synopkgland: headless client and Vue components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/synopackageland/syno-pkg-land-sdk/tree/main/ts#readme",
|