@synopackageland/sdk 0.9.0 → 0.9.2
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 +1 -1
- package/dist/i18n/authorization/de.json +7 -2
- package/dist/i18n/authorization/en.json +6 -1
- package/dist/i18n/authorization/es.json +6 -1
- package/dist/i18n/authorization/fr.json +6 -1
- package/dist/i18n/authorization/it.json +6 -1
- package/dist/i18n/authorization/ja.json +7 -2
- package/dist/i18n/authorization/ko.json +7 -2
- package/dist/i18n/authorization/zh-CN.json +6 -1
- package/dist/i18n/authorization/zh-TW.json +6 -1
- package/dist/i18n/delegate/de.json +2 -0
- package/dist/i18n/delegate/en.json +2 -0
- package/dist/i18n/delegate/es.json +2 -0
- package/dist/i18n/delegate/fr.json +2 -0
- package/dist/i18n/delegate/it.json +2 -0
- package/dist/i18n/delegate/ja.json +2 -0
- package/dist/i18n/delegate/ko.json +2 -0
- package/dist/i18n/delegate/zh-CN.json +2 -0
- package/dist/i18n/delegate/zh-TW.json +2 -0
- package/dist/i18n/files/de.json +5 -2
- package/dist/i18n/files/en.json +5 -2
- package/dist/i18n/files/es.json +5 -2
- package/dist/i18n/files/fr.json +5 -2
- package/dist/i18n/files/it.json +5 -2
- package/dist/i18n/files/ja.json +5 -2
- package/dist/i18n/files/ko.json +5 -2
- package/dist/i18n/files/zh-CN.json +5 -2
- package/dist/i18n/files/zh-TW.json +5 -2
- package/dist/i18n/save/de.json +2 -0
- package/dist/i18n/save/en.json +2 -0
- package/dist/i18n/save/es.json +2 -0
- package/dist/i18n/save/fr.json +2 -0
- package/dist/i18n/save/it.json +2 -0
- package/dist/i18n/save/ja.json +2 -0
- package/dist/i18n/save/ko.json +2 -0
- package/dist/i18n/save/zh-CN.json +2 -0
- package/dist/i18n/save/zh-TW.json +2 -0
- package/dist/index.js +2136 -2029
- package/dist/src/authorization/AuthorizationGate.vue.d.ts +2 -2
- package/dist/src/authorization/AuthorizationSettings.vue.d.ts +3 -0
- package/dist/src/authorization/use-authorization.d.ts +20 -0
- package/dist/src/delegate/copy.d.ts +4 -0
- package/dist/src/delegate/long-running.d.ts +1 -1
- package/dist/src/delegate/save-copy.d.ts +6 -0
- package/dist/src/files/FolderIcon.vue.d.ts +8 -0
- package/dist/src/files/size.d.ts +2 -0
- package/dist/src/i18n.d.ts +3 -2
- package/dist/src/nas/locale.d.ts +3 -0
- package/dist/src/protocol/v1.d.ts +1 -7
- package/dist/src/vue.d.ts +2 -0
- package/dist/style.css +1 -1
- package/dist/vue.js +1335 -1220
- package/package.json +3 -3
- package/spec/protocol/v1/README.md +11 -0
- package/spec/protocol/v1/errors.json +0 -8
|
@@ -3,9 +3,9 @@ type __VLS_Props = {
|
|
|
3
3
|
ctx: Pick<Context, 'locale' | 'displayName' | 'reopen' | 'authorization'>;
|
|
4
4
|
name?: string;
|
|
5
5
|
};
|
|
6
|
-
declare var
|
|
6
|
+
declare var __VLS_1: {};
|
|
7
7
|
type __VLS_Slots = {} & {
|
|
8
|
-
default?: (props: typeof
|
|
8
|
+
default?: (props: typeof __VLS_1) => any;
|
|
9
9
|
};
|
|
10
10
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
11
|
ready: () => any;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ComputedRef, type InjectionKey, type Ref } from 'vue';
|
|
2
|
+
import type { AuthorizationStatus } from '../context';
|
|
3
|
+
/** 'checking' until the background status arrives, and while it is checked again. */
|
|
4
|
+
export type AuthorizationGateState = AuthorizationStatus['state'] | 'checking';
|
|
5
|
+
/** What the Gate shares with the App inside it, so no App repeats its checks. */
|
|
6
|
+
export interface AuthorizationControl {
|
|
7
|
+
state: ComputedRef<AuthorizationGateState>;
|
|
8
|
+
/**
|
|
9
|
+
* Call before a root operation. Resolves true once the authorization is ready;
|
|
10
|
+
* otherwise the Gate's dialog opens, and it resolves true when the user
|
|
11
|
+
* authorizes or false when the dialog is dismissed.
|
|
12
|
+
*/
|
|
13
|
+
requireAuthorization(): Promise<boolean>;
|
|
14
|
+
text: ComputedRef<(key: string) => string>;
|
|
15
|
+
busy: Ref<boolean>;
|
|
16
|
+
canManage(): boolean;
|
|
17
|
+
revoke(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export declare const AuthorizationKey: InjectionKey<AuthorizationControl>;
|
|
20
|
+
export declare function useAuthorization(): AuthorizationControl;
|
|
@@ -10,8 +10,10 @@ export declare const delegateCatalogs: Record<import("..").UiLocale, {
|
|
|
10
10
|
confirmShare: string;
|
|
11
11
|
scopeNeeds: string;
|
|
12
12
|
ready: string;
|
|
13
|
+
confirming: string;
|
|
13
14
|
needs: string;
|
|
14
15
|
blocked: string;
|
|
16
|
+
loading: string;
|
|
15
17
|
details: string;
|
|
16
18
|
refresh: string;
|
|
17
19
|
revoke: string;
|
|
@@ -58,8 +60,10 @@ export declare function delegateCopy(locale?: string): {
|
|
|
58
60
|
confirmShare: string;
|
|
59
61
|
scopeNeeds: string;
|
|
60
62
|
ready: string;
|
|
63
|
+
confirming: string;
|
|
61
64
|
needs: string;
|
|
62
65
|
blocked: string;
|
|
66
|
+
loading: string;
|
|
63
67
|
details: string;
|
|
64
68
|
refresh: string;
|
|
65
69
|
revoke: string;
|
|
@@ -11,7 +11,7 @@ export interface DestinationState {
|
|
|
11
11
|
key: string;
|
|
12
12
|
selection: ScopeSelection | null;
|
|
13
13
|
destination: DestinationGrant | null;
|
|
14
|
-
status: 'active' | 'missing' | 'reselection-required' | 'needs-scope-confirmation' | 'disabled';
|
|
14
|
+
status: 'active' | 'missing' | 'revoked' | 'reselection-required' | 'needs-scope-confirmation' | 'disabled';
|
|
15
15
|
}
|
|
16
16
|
export interface DestinationGrant {
|
|
17
17
|
id: string;
|
|
@@ -29,6 +29,8 @@ export declare const saveCatalogs: Record<import("..").UiLocale, {
|
|
|
29
29
|
interruptedHelp: string;
|
|
30
30
|
loading: string;
|
|
31
31
|
denied: string;
|
|
32
|
+
permission: string;
|
|
33
|
+
missing: string;
|
|
32
34
|
session: string;
|
|
33
35
|
conflict: string;
|
|
34
36
|
space: string;
|
|
@@ -71,6 +73,8 @@ export declare function saveCopy(locale?: string): {
|
|
|
71
73
|
interruptedHelp: string;
|
|
72
74
|
loading: string;
|
|
73
75
|
denied: string;
|
|
76
|
+
permission: string;
|
|
77
|
+
missing: string;
|
|
74
78
|
session: string;
|
|
75
79
|
conflict: string;
|
|
76
80
|
space: string;
|
|
@@ -113,6 +117,8 @@ export declare function saveError(error: unknown, copy?: {
|
|
|
113
117
|
interruptedHelp: string;
|
|
114
118
|
loading: string;
|
|
115
119
|
denied: string;
|
|
120
|
+
permission: string;
|
|
121
|
+
missing: string;
|
|
116
122
|
session: string;
|
|
117
123
|
conflict: string;
|
|
118
124
|
space: string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
size?: number;
|
|
3
|
+
};
|
|
4
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
5
|
+
size: number;
|
|
6
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|
package/dist/src/i18n.d.ts
CHANGED
|
@@ -2,5 +2,6 @@ export type UiLocale = 'en' | 'zh-TW' | 'zh-CN' | 'ja' | 'ko' | 'de' | 'fr' | 'e
|
|
|
2
2
|
export declare const uiLocales: readonly UiLocale[];
|
|
3
3
|
/** The built-in UI locale (shared by these catalogs and the UI's own text) for a DSM or BCP-47 language tag. */
|
|
4
4
|
export declare function uiLocale(locale: string): UiLocale;
|
|
5
|
-
/** The catalogs of one capability by locale, typed by its en catalog.
|
|
6
|
-
|
|
5
|
+
/** The catalogs of one capability by locale, typed by its en catalog. Each
|
|
6
|
+
* capability globs its own folder, so a bundle carries only what it imports. */
|
|
7
|
+
export declare function catalogs<T>(files: Record<string, unknown>, _en: T): Record<UiLocale, T>;
|
package/dist/src/nas/locale.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const nasCatalogs: Record<import("..").UiLocale, {
|
|
|
10
10
|
emptyFolder: string;
|
|
11
11
|
roots: string;
|
|
12
12
|
back: string;
|
|
13
|
+
forward: string;
|
|
13
14
|
select: string;
|
|
14
15
|
open: string;
|
|
15
16
|
selected: string;
|
|
@@ -40,6 +41,8 @@ export declare const nasCatalogs: Record<import("..").UiLocale, {
|
|
|
40
41
|
uploaded: string;
|
|
41
42
|
errorDSM: string;
|
|
42
43
|
errorUploadSize: string;
|
|
44
|
+
location: string;
|
|
45
|
+
fullPath: string;
|
|
43
46
|
}>;
|
|
44
47
|
export declare function nasCopy(locale: string): NasCopy;
|
|
45
48
|
export declare function nasErrorCopy(error: unknown, copy: NasCopy): string;
|
|
@@ -282,12 +282,6 @@ export declare const protocolCodes: {
|
|
|
282
282
|
readonly retryable: false;
|
|
283
283
|
readonly httpStatus: 409;
|
|
284
284
|
};
|
|
285
|
-
/** The grant is inactive. */
|
|
286
|
-
readonly "grant-inactive": {
|
|
287
|
-
readonly kind: "reason";
|
|
288
|
-
readonly retryable: false;
|
|
289
|
-
readonly httpStatus: 409;
|
|
290
|
-
};
|
|
291
285
|
/** The grant failed revalidation against DSM. */
|
|
292
286
|
readonly "validation-denied": {
|
|
293
287
|
readonly kind: "reason";
|
|
@@ -346,7 +340,7 @@ export declare const protocolCodes: {
|
|
|
346
340
|
export type ProtocolCode = keyof typeof protocolCodes;
|
|
347
341
|
export type RefusalCode = "AUTH_DENIED" | "INELIGIBLE" | "APP_DENIED" | "ADMIN_REQUIRED" | "DELEGATION_DENIED" | "SCOPE_DENIED" | "POLICY_DENIED" | "PEER_DENIED" | "PERMISSION_DENIED" | "UNKNOWN_OP" | "INVALID_REQUEST" | "REQUEST_TOO_LARGE" | "EXECUTOR_PAUSED" | "STORAGE_ERROR" | "INTERNAL" | "WRITE_FAILED" | "READ_FAILED" | "DSM_FAILED" | "ROOT_FAILED" | "NO_SPACE" | "SCOPE_APPROVAL_STALE" | "IDENTITY_CHANGED" | "needs-scope-confirmation" | "disabled" | "invalid-destination" | "invalid-size" | "operation-conflict" | "operation-not-found" | "destination-exists" | "invalid-path" | "path-too-deep" | "destination-not-directory" | "name-too-long" | "not-found" | "not-a-file" | "recursive-required" | "recycle-bin-disabled" | "task-not-found" | "too-many-tasks" | "queue-full" | "limit-exceeded";
|
|
348
342
|
export type OutcomeCode = "OPERATION_CANCELED" | "CANCEL_REQUESTED" | "CLEANUP_PENDING";
|
|
349
|
-
export type ReasonCode = "grant-revoked" | "destination-replaced" | "integration-disabled" | "
|
|
343
|
+
export type ReasonCode = "grant-revoked" | "destination-replaced" | "integration-disabled" | "validation-denied" | "scope-changed" | "storage-error" | "operation-canceled-by-user" | "operation-deadline-exceeded";
|
|
350
344
|
export type ClientCode = "EXECUTOR_UNAVAILABLE" | "EXECUTOR_TIMEOUT" | "EXECUTOR_TOO_LARGE" | "EXECUTOR_PROTOCOL";
|
|
351
345
|
/** delegate.audit: Administrator: read the audit log. Since 0.9.0. */
|
|
352
346
|
export interface DelegateAuditParams {
|
package/dist/src/vue.d.ts
CHANGED
|
@@ -13,3 +13,5 @@ export { default as ExecutorSettings } from './delegate/ExecutorSettings.vue';
|
|
|
13
13
|
export { default as DelegatePanel } from './delegate/DelegatePanel.vue';
|
|
14
14
|
export { default as BackgroundSavePanel } from './delegate/BackgroundSavePanel.vue';
|
|
15
15
|
export { default as AuthorizationGate } from './authorization/AuthorizationGate.vue';
|
|
16
|
+
export { useAuthorization, type AuthorizationControl, type AuthorizationGateState } from './authorization/use-authorization';
|
|
17
|
+
export { default as AuthorizationSettings } from './authorization/AuthorizationSettings.vue';
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.app-shell[data-v-05f63ca5]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-05f63ca5]>div{min-height:0}.app-shell[data-v-05f63ca5] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-05f63ca5]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-page-content[data-v-05f63ca5]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-
|
|
1
|
+
.app-shell[data-v-05f63ca5]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-05f63ca5]>div{min-height:0}.app-shell[data-v-05f63ca5] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-05f63ca5]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-page-content[data-v-05f63ca5]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-0b21604d]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-0b21604d]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-0b21604d]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-0b21604d]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-0b21604d]{display:grid;grid-template-columns:minmax(140px,1fr) minmax(0,3fr);gap:var(--ui-space-3, 12px);height:clamp(240px,60vh,400px)}.file-tree[data-v-0b21604d]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-0b21604d]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-0b21604d]{display:flex;flex-direction:column;align-items:center;gap:var(--ui-space-2, 8px);padding-block:var(--ui-space-6, 24px);color:var(--ui-text-muted)}.file-name[data-v-0b21604d]{display:inline-flex;border-radius:var(--ui-radius-sm, 4px);outline:none;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-icon[data-v-0b21604d]{flex:none;color:var(--ui-text-muted)}.file-tree[data-v-0b21604d] [data-tree-node][data-selected]{color:var(--ui-text)}.file-name[data-v-0b21604d]:focus-visible{box-shadow:0 0 0 2px var(--ui-focus-ring)}.file-bytes[data-v-0b21604d]{font-variant-numeric:tabular-nums}.file-selection[data-v-0b21604d]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-0b21604d]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-0b21604d] th:nth-child(2),.file-content[data-v-0b21604d] td:nth-child(2),.file-content[data-v-0b21604d] th:nth-child(3),.file-content[data-v-0b21604d] td:nth-child(3){display:none}.file-tree[data-v-0b21604d]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-0b21604d]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-535a0e54]{max-height:65vh;overflow:auto}.save-message[data-v-535a0e54]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-535a0e54]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-699931fa]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-699931fa]{overflow-wrap:anywhere}.identity-login[data-v-f7afcf5e]{max-width:36rem;margin-inline:auto;padding:var(--ui-space-4, 16px);overflow:auto;max-height:100%;color:var(--ui-text);font-family:var(--ui-font-sans);font-size:13px;line-height:1.5}.identity-login p[data-v-f7afcf5e]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.integration-jobs[data-v-7954713f]{overflow-wrap:anywhere;min-width:0}.bg-schedules[data-v-7954713f]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules .integration-jobs[data-v-7954713f]{display:grid;gap:var(--ui-space-4,16px);padding-inline-start:var(--ui-space-5,20px)}.bg-schedules .integration-jobs li[data-v-7954713f]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-schedules p[data-v-7954713f],.bg-schedules li>span[data-v-7954713f]{min-width:0;max-width:100%}.bg-schedules h3[data-v-7954713f]{font-size:15px;font-weight:600}.bg-schedule-form[data-v-7954713f]{margin-block:var(--ui-space-4,16px)}.delegate-panel[data-v-d79ee942]{min-width:0;overflow-wrap:anywhere}h3[data-v-d79ee942]{font-size:var(--ui-font-size-base,14px);font-weight:600;margin:var(--ui-space-6,24px) 0 var(--ui-space-3,12px)}.section-heading[data-v-d79ee942]{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.records[data-v-d79ee942]{list-style:none;padding:0;margin:0}.records li[data-v-d79ee942]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px);padding-block:var(--ui-space-4,16px);border-bottom:1px solid var(--ui-border)}.records li>div[data-v-d79ee942],.records li>span[data-v-d79ee942],.destination[data-v-d79ee942]{min-width:0;max-width:100%;overflow-wrap:anywhere}.records p[data-v-d79ee942]{margin:var(--ui-space-2,8px) 0 0}.background-save-panel[data-v-c38db985]{min-width:0;overflow-wrap:anywhere}.save-message[data-v-c38db985]{--ui-text-secondary:var(--ui-text)}h3[data-v-c38db985]{font-size:var(--ui-font-size-base,14px);font-weight:600;margin:var(--ui-space-6,24px) 0 var(--ui-space-3,12px)}.save-actions[data-v-c38db985],.save-records li[data-v-c38db985]{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-3,12px)}.save-actions[data-v-c38db985]{justify-content:flex-start}.save-records[data-v-c38db985]{list-style:none;margin:0;padding:0}.save-records li[data-v-c38db985]{padding-block:var(--ui-space-4,16px);border-bottom:1px solid var(--ui-border)}.save-records li>div[data-v-c38db985]{min-width:0;max-width:100%}.save-records p[data-v-c38db985]{margin:var(--ui-space-2,8px) 0}.authorization-view[data-v-e16b5f7d]{display:flex;flex-direction:column;gap:12px}.authorization-body[data-v-e16b5f7d]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-e16b5f7d],.authorization-failed[data-v-e16b5f7d]{color:var(--ui-text)}.authorization-content[data-v-e16b5f7d]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-e16b5f7d] .app-shell{flex:1;min-height:0;height:auto}.authorization-setting[data-v-f031e7c7]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.authorization-revoke-body[data-v-f031e7c7]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text)}.authorization-state[data-v-f031e7c7]{display:inline-flex;align-items:center;gap:6px;color:var(--ui-text)}
|