@synopackageland/sdk 0.10.7 → 0.10.9
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 +22 -0
- package/dist/src/delegate/ExecutorApproval.vue.d.ts +4 -1
- package/dist/src/delegate/use-executor-setup.d.ts +3 -1
- package/dist/src/vue.d.ts +1 -1
- package/dist/style.css +1 -1
- package/dist/vue.js +1354 -1338
- package/package.json +1 -1
- package/spec/protocol/v1/README.md +18 -4
package/README.md
CHANGED
|
@@ -239,6 +239,28 @@ provide(ExecutorSetupKey, ctx.executor!)
|
|
|
239
239
|
</template>
|
|
240
240
|
```
|
|
241
241
|
|
|
242
|
+
With `preload` the App's pages mount while the first status is read, so
|
|
243
|
+
their own reads (`authorization.status`, `session.get`, the first page's data)
|
|
244
|
+
run alongside it instead of after it. They stay hidden (`visibility: hidden`,
|
|
245
|
+
`inert`, `aria-hidden`) behind the loading text until the status reads
|
|
246
|
+
`ready`, which shows that same instance with what it loaded; any other status
|
|
247
|
+
unmounts them and discards it. Nothing is shown before the check: every read
|
|
248
|
+
is still answered by the App's backend under its own authorization. Use it
|
|
249
|
+
for pages whose mount only reads: a page that writes on mount would do so
|
|
250
|
+
before the check ends, and also when it then fails. A dialog or a toast
|
|
251
|
+
leaves the hidden wrapper: `useExecutorPreload()` is `true` while the pages
|
|
252
|
+
are preloaded, so a page waits for `false` before it opens one.
|
|
253
|
+
`AuthorizationGate` does so with its own dialog. When the status is not
|
|
254
|
+
ready it turns `false` before the pages unmount, so `false` does not mean the
|
|
255
|
+
pages show: open a teleported dialog from `watchPostEffect` (or after the
|
|
256
|
+
next render), when an unmounted page no longer runs it.
|
|
257
|
+
|
|
258
|
+
```vue
|
|
259
|
+
<ExecutorApproval preload :admin="ctx.user?.isAdmin ?? false" :locale="ctx.locale" :ctx="ctx">
|
|
260
|
+
<AuthorizationGate :ctx="ctx"><AppContent /></AuthorizationGate>
|
|
261
|
+
</ExecutorApproval>
|
|
262
|
+
```
|
|
263
|
+
|
|
242
264
|
A delegate App keeps its pages while its executor waits for approval (after
|
|
243
265
|
an upgrade that changed its policy, say): only what needs the executor fails,
|
|
244
266
|
with `EXECUTOR_UNAVAILABLE`. `AppShell` given a `ctx` with `executor` shows
|
|
@@ -3,10 +3,13 @@ type __VLS_Props = {
|
|
|
3
3
|
admin: boolean;
|
|
4
4
|
locale?: string;
|
|
5
5
|
ctx?: Pick<Context, 'reopen'> & Partial<Pick<Context, 'displayName' | 'appIcon' | 'fullPage' | 'host'>>;
|
|
6
|
+
preload?: boolean;
|
|
6
7
|
};
|
|
7
|
-
declare var __VLS_1: {};
|
|
8
|
+
declare var __VLS_1: {}, __VLS_3: {};
|
|
8
9
|
type __VLS_Slots = {} & {
|
|
9
10
|
default?: (props: typeof __VLS_1) => any;
|
|
11
|
+
} & {
|
|
12
|
+
default?: (props: typeof __VLS_3) => any;
|
|
10
13
|
};
|
|
11
14
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
15
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { type InjectionKey } from 'vue';
|
|
1
|
+
import { type InjectionKey, type Ref } from 'vue';
|
|
2
2
|
import type { CapabilityStatus, ExecutorSetup } from './executor-setup';
|
|
3
3
|
export declare const ExecutorSetupKey: InjectionKey<ExecutorSetup>;
|
|
4
|
+
export declare const ExecutorPreloadKey: InjectionKey<Readonly<Ref<boolean>>>;
|
|
5
|
+
export declare function useExecutorPreload(): Readonly<Ref<boolean>>;
|
|
4
6
|
export declare function useExecutorSetup(): ExecutorSetup;
|
|
5
7
|
export type ConfirmFailure = 'password_rejected' | 'password_required' | 'password_confirm_failed';
|
|
6
8
|
export declare function confirmFailure(status: CapabilityStatus): ConfirmFailure | undefined;
|
package/dist/src/vue.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './index';
|
|
2
|
-
export { ExecutorSetupKey, useExecutorSetup } from './delegate/use-executor-setup';
|
|
2
|
+
export { ExecutorSetupKey, useExecutorSetup, ExecutorPreloadKey, useExecutorPreload } from './delegate/use-executor-setup';
|
|
3
3
|
export { createSession, type IdentitySession, type SessionSubject } from './identity/session';
|
|
4
4
|
export { useNasRequest } from './nas/use-request';
|
|
5
5
|
export { default as AppShell } from './shell/AppShell.vue';
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.executor-help[data-v-666ac74c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.executor-summary[data-v-666ac74c]:not(:last-child){margin-bottom:var(--ui-space-3,12px)}.executor-form[data-v-666ac74c]{margin-top:var(--ui-space-4,16px);max-width:28rem}.executor-hint[data-v-666ac74c]{font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.executor-reason[data-v-666ac74c]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.executor-alert[data-v-666ac74c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.executor-notice[data-v-1edce327]{margin-bottom:var(--ui-space-4, 16px)}.executor-notice-body[data-v-1edce327]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.app-shell[data-v-61068e94]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-61068e94]>div{min-height:0}.app-shell[data-v-61068e94] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-61068e94]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-denied[data-v-61068e94]{height:100%;overflow-y:auto}.app-page-actions[data-v-61068e94]{display:contents}.app-shell-fill[data-v-61068e94]{max-height:100dvh}.app-page-fill[data-v-61068e94]{display:flex;flex-direction:column;overflow:hidden}.app-page-fill[data-v-61068e94]>[data-page-content-body]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0}.app-page-fill .app-notices[data-v-61068e94]{flex:0 0 auto}.app-page-fill .app-page-content[data-v-61068e94]{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}.app-notices[data-v-61068e94]{display:flex;flex-direction:column;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px)}.app-notices[hidden][data-v-61068e94]{display:none}.app-page-content[data-v-61068e94]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-70c72250]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-70c72250]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-70c72250]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-70c72250]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-70c72250]{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-70c72250]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-70c72250]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-70c72250]{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-70c72250]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-70c72250]{font-variant-numeric:tabular-nums}.file-selection[data-v-70c72250]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-70c72250]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-70c72250] th:nth-child(2),.file-content[data-v-70c72250] td:nth-child(2),.file-content[data-v-70c72250] th:nth-child(3),.file-content[data-v-70c72250] td:nth-child(3){display:none}.file-tree[data-v-70c72250]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-70c72250]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-46817cb6]{max-height:65vh;overflow:auto}.save-message[data-v-46817cb6]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-46817cb6]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-96eb4bab]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-96eb4bab]{display:flex;min-width:0}.identity-login[data-v-1c0358cd]{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-1c0358cd]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.bg-cards[data-v-85b8b7a1]{display:grid;gap:var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.bg-card-body[data-v-85b8b7a1]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-card-body>span[data-v-85b8b7a1]{min-width:0;max-width:100%}.integration-actions[data-v-85b8b7a1]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.bg-schedules[data-v-85b8b7a1]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules p[data-v-85b8b7a1]{min-width:0;max-width:100%}.bg-schedule-form[data-v-85b8b7a1]{margin-block:var(--ui-space-4,16px)}.bg-path[data-v-85b8b7a1]{display:flex;align-items:center;gap:var(--ui-space-2,8px);min-width:0;max-width:100%}.executor-approval[data-v-
|
|
1
|
+
.executor-help[data-v-666ac74c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.executor-summary[data-v-666ac74c]:not(:last-child){margin-bottom:var(--ui-space-3,12px)}.executor-form[data-v-666ac74c]{margin-top:var(--ui-space-4,16px);max-width:28rem}.executor-hint[data-v-666ac74c]{font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.executor-reason[data-v-666ac74c]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.executor-alert[data-v-666ac74c]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.executor-notice[data-v-1edce327]{margin-bottom:var(--ui-space-4, 16px)}.executor-notice-body[data-v-1edce327]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.app-shell[data-v-61068e94]{height:100%;min-width:0;grid-template-rows:minmax(0,1fr)}.app-shell[data-v-61068e94]>div{min-height:0}.app-shell[data-v-61068e94] main{display:flex;flex-direction:column;overflow:hidden}.app-page[data-v-61068e94]{flex:1 1 auto;min-height:0;overflow-y:auto}.app-denied[data-v-61068e94]{height:100%;overflow-y:auto}.app-page-actions[data-v-61068e94]{display:contents}.app-shell-fill[data-v-61068e94]{max-height:100dvh}.app-page-fill[data-v-61068e94]{display:flex;flex-direction:column;overflow:hidden}.app-page-fill[data-v-61068e94]>[data-page-content-body]{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0}.app-page-fill .app-notices[data-v-61068e94]{flex:0 0 auto}.app-page-fill .app-page-content[data-v-61068e94]{display:grid;flex:1 1 auto;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);min-height:0}.app-notices[data-v-61068e94]{display:flex;flex-direction:column;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px)}.app-notices[hidden][data-v-61068e94]{display:none}.app-page-content[data-v-61068e94]{padding-bottom:var(--ui-space-6, 24px)}.file-browser[data-v-70c72250]{min-width:0;color:var(--ui-text)}.file-toolbar[data-v-70c72250]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px);margin-block:var(--ui-space-3, 12px)}.file-location[data-v-70c72250]{flex-wrap:nowrap;align-items:center;gap:var(--ui-space-1, 4px)}.file-path[data-v-70c72250]{flex:1;min-width:0;margin-inline-start:var(--ui-space-2, 8px)}.file-columns[data-v-70c72250]{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-70c72250]{min-width:0;overflow:auto;border-inline-end:1px solid var(--ui-border)}.file-content[data-v-70c72250]{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:auto}.file-empty[data-v-70c72250]{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-70c72250]{display:inline-flex;align-items:center;gap:var(--ui-space-2, 8px);overflow-wrap:anywhere}.file-bytes[data-v-70c72250]{font-variant-numeric:tabular-nums}.file-selection[data-v-70c72250]{overflow-wrap:anywhere}@media(max-width:600px){.file-columns[data-v-70c72250]{grid-template-columns:minmax(0,1fr);height:auto}.file-content[data-v-70c72250] th:nth-child(2),.file-content[data-v-70c72250] td:nth-child(2),.file-content[data-v-70c72250] th:nth-child(3),.file-content[data-v-70c72250] td:nth-child(3){display:none}.file-tree[data-v-70c72250]{height:clamp(96px,25vh,180px);border-inline-end:0;border-bottom:1px solid var(--ui-border)}.file-content[data-v-70c72250]{height:clamp(200px,45vh,360px)}}.nas-picker-content[data-v-46817cb6]{max-height:65vh;overflow:auto}.save-message[data-v-46817cb6]{--ui-text-secondary:var(--ui-text)}.save-consent[data-v-46817cb6]{color:var(--ui-text);margin-block:0 var(--ui-space-4,16px)}.files-actions[data-v-96eb4bab]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2, 8px)}.files-path[data-v-96eb4bab]{display:flex;min-width:0}.identity-login[data-v-1c0358cd]{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-1c0358cd]{margin-block:var(--ui-space-4, 16px);overflow-wrap:anywhere}.bg-cards[data-v-85b8b7a1]{display:grid;gap:var(--ui-space-3,12px);min-width:0;overflow-wrap:anywhere}.bg-card-body[data-v-85b8b7a1]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--ui-space-2,8px);min-width:0}.bg-card-body>span[data-v-85b8b7a1]{min-width:0;max-width:100%}.integration-actions[data-v-85b8b7a1]{display:flex;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.bg-schedules[data-v-85b8b7a1]{margin-block-start:var(--ui-space-6,24px);min-width:0;overflow-wrap:anywhere}.bg-schedules p[data-v-85b8b7a1]{min-width:0;max-width:100%}.bg-schedule-form[data-v-85b8b7a1]{margin-block:var(--ui-space-4,16px)}.bg-path[data-v-85b8b7a1]{display:flex;align-items:center;gap:var(--ui-space-2,8px);min-width:0;max-width:100%}.executor-pages[data-v-bf0dbc7c]{display:contents}.executor-pages.executor-preloading[data-v-bf0dbc7c]{display:block;position:fixed;inset:0;visibility:hidden;overflow:hidden;pointer-events:none}.executor-approval[data-v-bf0dbc7c]{padding:var(--ui-space-6, 24px)}.executor-brand[data-v-bf0dbc7c]{display:flex;align-items:center;gap:var(--ui-space-2, 8px);margin-bottom:var(--ui-space-4, 16px);font-size:16px;font-weight:600;color:var(--ui-text-primary)}.executor-brand img[data-v-bf0dbc7c]{width:24px;height:24px}.delegate-panel[data-v-080a311e]{min-width:0;overflow-wrap:anywhere}.delegate-group[data-v-080a311e]{margin-top:var(--ui-space-6,24px)}.records[data-v-080a311e]{list-style:none;padding:0;margin:0}.records li[data-v-080a311e]{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-080a311e],.records li>span[data-v-080a311e],.destination[data-v-080a311e]{min-width:0;max-width:100%;overflow-wrap:anywhere}.records p[data-v-080a311e]{margin:var(--ui-space-2,8px) 0 0}.destination[data-v-080a311e]{display:flex;align-items:center;gap:var(--ui-space-2,8px)}.save-help[data-v-56f34b37]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-alert[data-v-56f34b37]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);justify-content:space-between}.save-name[data-v-56f34b37]{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-note[data-v-56f34b37]{margin:var(--ui-space-1,4px) 0 0;font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary);white-space:normal}.save-icon[data-v-56f34b37]{width:16px;height:16px}[data-save-operations][data-v-56f34b37] table{table-layout:fixed}[data-save-operations][data-v-56f34b37] th,[data-save-operations][data-v-56f34b37] td{overflow-wrap:normal;white-space:nowrap}[data-save-operations][data-v-56f34b37] td{padding-block:var(--ui-space-2,8px)}.save-pages[data-v-56f34b37]{margin-top:var(--ui-space-3,12px)}.background-save-settings[data-v-d2fd6882]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-d2fd6882]{margin:0 0 var(--ui-space-2,8px);max-width:72ch;color:var(--ui-text-secondary)}.save-form[data-v-d2fd6882]{max-width:44rem}.save-actions[data-v-d2fd6882],.save-alert[data-v-d2fd6882],.save-danger[data-v-d2fd6882]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px)}.save-alert[data-v-d2fd6882],.save-danger[data-v-d2fd6882]{justify-content:space-between}.save-none[data-v-d2fd6882]{color:var(--ui-text-secondary)}.save-reason[data-v-d2fd6882]{display:block;margin-top:var(--ui-space-1,4px);font-size:var(--ui-font-size-sm,12px)}.save-danger[data-v-d2fd6882]{flex:1;padding-top:var(--ui-space-3,12px);border-top:1px solid var(--ui-border)}.save-danger p[data-v-d2fd6882]{margin:0;flex:1 1 20rem;max-width:72ch;font-size:var(--ui-font-size-sm,12px);color:var(--ui-text-secondary)}.background-save-panel[data-v-55770b8c]{min-width:0;overflow-wrap:anywhere}.save-help[data-v-55770b8c]{margin:0 0 var(--ui-space-3,12px);max-width:72ch;color:var(--ui-text-secondary)}.save-actions[data-v-55770b8c]{display:flex;align-items:center;flex-wrap:wrap;gap:var(--ui-space-2,8px);margin-bottom:var(--ui-space-3,12px)}.authorization-view[data-v-59492506]{display:flex;flex-direction:column;gap:12px}.authorization-body[data-v-59492506]{margin:0;font-size:13px;line-height:1.6;color:var(--ui-text);text-wrap:pretty}.authorization-status[data-v-59492506],.authorization-failed[data-v-59492506]{color:var(--ui-text)}.authorization-content[data-v-59492506]{display:flex;flex-direction:column;height:100%;min-height:0}.authorization-content[data-v-59492506] .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)}
|