buckyos 0.7.138 → 0.7.142
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/cli/core/app.ts +4 -0
- package/cli/core/auth.ts +2 -3
- package/cli/dist/cli.mjs +547 -127
- package/cli/dist/cli.mjs.map +1 -1
- package/cli/modules/aiws.ts +294 -0
- package/cli/modules/executor.ts +98 -0
- package/cli/version.ts +1 -1
- package/dist/account.d.ts +0 -2
- package/dist/account.d.ts.map +1 -1
- package/dist/aiworkspace_client.d.ts +91 -0
- package/dist/aiworkspace_client.d.ts.map +1 -0
- package/dist/app-frame.cjs +1 -1
- package/dist/app-frame.cjs.map +1 -1
- package/dist/app-frame.d.ts +103 -3
- package/dist/app-frame.d.ts.map +1 -1
- package/dist/app-frame.mjs +189 -8
- package/dist/app-frame.mjs.map +1 -1
- package/dist/browser.cjs +1 -1
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.mjs +18 -15
- package/dist/browser.mjs.map +1 -1
- package/dist/content.cjs +1 -1
- package/dist/content.cjs.map +1 -1
- package/dist/content.d.ts +18 -0
- package/dist/content.d.ts.map +1 -1
- package/dist/content.mjs +61 -1
- package/dist/content.mjs.map +1 -1
- package/dist/executor_client-b3ff97ba.js +13 -0
- package/dist/executor_client-b3ff97ba.js.map +1 -0
- package/dist/{ndm_proxy-6b03b9ec.mjs → executor_client-eb372968.mjs} +901 -396
- package/dist/executor_client-eb372968.mjs.map +1 -0
- package/dist/executor_client.d.ts +138 -0
- package/dist/executor_client.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +23 -15
- package/dist/index.mjs.map +1 -1
- package/dist/internal/hash_worker.d.ts +2 -1
- package/dist/internal/hash_worker.d.ts.map +1 -1
- package/dist/internal/tus_client.d.ts +3 -0
- package/dist/internal/tus_client.d.ts.map +1 -1
- package/dist/namelib.d.ts +1 -10
- package/dist/namelib.d.ts.map +1 -1
- package/dist/ndm_client.d.ts +56 -7
- package/dist/ndm_client.d.ts.map +1 -1
- package/dist/ndn_types-08dc9ef1.js +2 -0
- package/dist/ndn_types-08dc9ef1.js.map +1 -0
- package/dist/{ndn_types-ac9c1e48.mjs → ndn_types-bbb1f6a6.mjs} +53 -100
- package/dist/ndn_types-bbb1f6a6.mjs.map +1 -0
- package/dist/nfsp.cjs +1 -1
- package/dist/nfsp.cjs.map +1 -1
- package/dist/nfsp.d.ts +16 -0
- package/dist/nfsp.d.ts.map +1 -1
- package/dist/nfsp.mjs +6 -0
- package/dist/nfsp.mjs.map +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +2 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.mjs +18 -15
- package/dist/node.mjs.map +1 -1
- package/dist/provision.cjs +2 -2
- package/dist/provision.cjs.map +1 -1
- package/dist/provision.mjs +18 -12
- package/dist/provision.mjs.map +1 -1
- package/dist/provision_activate.d.ts.map +1 -1
- package/dist/runtime.d.ts +3 -4
- package/dist/runtime.d.ts.map +1 -1
- package/dist/sdk_core.d.ts +4 -0
- package/dist/sdk_core.d.ts.map +1 -1
- package/dist/{tus_client-2b915a81.js → tus_client-65c5fc5e.js} +4 -4
- package/dist/tus_client-65c5fc5e.js.map +1 -0
- package/dist/{tus_client-19baa342.mjs → tus_client-d313689e.mjs} +40 -2
- package/dist/tus_client-d313689e.mjs.map +1 -0
- package/dist/types.d.ts +0 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/verify-hub-client.d.ts +1 -9
- package/dist/verify-hub-client.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/ndm_proxy-67651066.js +0 -13
- package/dist/ndm_proxy-67651066.js.map +0 -1
- package/dist/ndm_proxy-6b03b9ec.mjs.map +0 -1
- package/dist/ndn_types-324121ae.js +0 -2
- package/dist/ndn_types-324121ae.js.map +0 -1
- package/dist/ndn_types-ac9c1e48.mjs.map +0 -1
- package/dist/tus_client-19baa342.mjs.map +0 -1
- package/dist/tus_client-2b915a81.js.map +0 -1
package/dist/content.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
package/dist/content.mjs
CHANGED
|
@@ -139,6 +139,20 @@ function extensionOf(name) {
|
|
|
139
139
|
function mediaTypeFromExtension(ext) {
|
|
140
140
|
return MEDIA_TYPE_BY_EXTENSION[ext.toLowerCase()];
|
|
141
141
|
}
|
|
142
|
+
function readContentHints(value) {
|
|
143
|
+
if (!value || typeof value !== "object")
|
|
144
|
+
return {};
|
|
145
|
+
const v = value;
|
|
146
|
+
const hints = {};
|
|
147
|
+
if (typeof v.name === "string" && v.name && v.name.length <= 255 && !/[\/\\\0]/.test(v.name))
|
|
148
|
+
hints.name = v.name;
|
|
149
|
+
if (typeof v.mime === "string" && /^[\w.+-]+\/[\w.+-]+$/.test(v.mime))
|
|
150
|
+
hints.mime = v.mime.toLowerCase();
|
|
151
|
+
const size = typeof v.size === "string" ? Number(v.size) : v.size;
|
|
152
|
+
if (typeof size === "number" && Number.isSafeInteger(size) && size >= 0)
|
|
153
|
+
hints.size = size;
|
|
154
|
+
return hints;
|
|
155
|
+
}
|
|
142
156
|
const previewHandler = {
|
|
143
157
|
provider: "system",
|
|
144
158
|
handler_id: "preview",
|
|
@@ -297,6 +311,48 @@ function expandOpenPath(path, request, modes = ["view", "edit"]) {
|
|
|
297
311
|
const expanded = path.replace(/\{(source|mode|session)\}/g, (_, key) => encodeURIComponent(params[key]));
|
|
298
312
|
return expanded + (expanded.includes("?") ? "&" : "?") + "requestId=" + encodeURIComponent(request.requestId);
|
|
299
313
|
}
|
|
314
|
+
function systemOpenUrl(systemOrigin, open) {
|
|
315
|
+
const url = new URL("/", systemOrigin);
|
|
316
|
+
url.searchParams.set("open", contentRefString(open.request.source));
|
|
317
|
+
url.searchParams.set("intent", open.target);
|
|
318
|
+
const session = encodeSession(open.request.session, open.request.source);
|
|
319
|
+
if (session)
|
|
320
|
+
url.searchParams.set("session", session);
|
|
321
|
+
if (open.request.mode)
|
|
322
|
+
url.searchParams.set("mode", open.request.mode);
|
|
323
|
+
for (const key of ["name", "mime", "size"])
|
|
324
|
+
if (open.hints[key] !== void 0)
|
|
325
|
+
url.searchParams.set(key, String(open.hints[key]));
|
|
326
|
+
if (open.from)
|
|
327
|
+
url.searchParams.set("from", open.from);
|
|
328
|
+
return url.href;
|
|
329
|
+
}
|
|
330
|
+
function parseSystemOpen(params) {
|
|
331
|
+
const value = params.get("open");
|
|
332
|
+
if (!value)
|
|
333
|
+
return void 0;
|
|
334
|
+
const source = value.startsWith("obj://") ? { kind: "object-id", objectId: value.slice(6) } : { kind: "cyfs-path", path: value };
|
|
335
|
+
if (!isTransferableRef(source))
|
|
336
|
+
return void 0;
|
|
337
|
+
const intent = params.get("intent");
|
|
338
|
+
const target = intent === "preview" || intent === "chooser" ? intent : "default";
|
|
339
|
+
const request = { source };
|
|
340
|
+
const mode = params.get("mode");
|
|
341
|
+
if (mode === "view" || mode === "edit")
|
|
342
|
+
request.mode = mode;
|
|
343
|
+
const encoded = params.get("session");
|
|
344
|
+
if (encoded) {
|
|
345
|
+
try {
|
|
346
|
+
const session = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(encoded.replace(/-/g, "+").replace(/_/g, "/")), (c) => c.charCodeAt(0))));
|
|
347
|
+
if (isTransferableSession(session))
|
|
348
|
+
request.session = session;
|
|
349
|
+
} catch {
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
const from = params.get("from");
|
|
353
|
+
return { request, target, hints: readContentHints({ name: params.get("name") ?? void 0, mime: params.get("mime") ?? void 0, size: params.get("size") ?? void 0 }), from: from && /^[\w.@-]+$/.test(from) ? from : void 0 };
|
|
354
|
+
}
|
|
355
|
+
const handlerOfApp = (plan, appId) => !!plan.appInstanceId && plan.appInstanceId.split("@")[0] === appId.split("@")[0];
|
|
300
356
|
class ContentRegistryClient {
|
|
301
357
|
constructor(config, userId) {
|
|
302
358
|
this.config = config;
|
|
@@ -349,13 +405,17 @@ export {
|
|
|
349
405
|
encodeSession,
|
|
350
406
|
expandOpenPath,
|
|
351
407
|
extensionOf,
|
|
408
|
+
handlerOfApp,
|
|
352
409
|
isOpenRequest,
|
|
353
410
|
isTransferableRef,
|
|
354
411
|
isTransferableSession,
|
|
355
412
|
matchSelector,
|
|
356
413
|
mediaTypeFromExtension,
|
|
357
414
|
parentSource,
|
|
415
|
+
parseSystemOpen,
|
|
358
416
|
previewHandler,
|
|
359
|
-
|
|
417
|
+
readContentHints,
|
|
418
|
+
resolveContentHandlers,
|
|
419
|
+
systemOpenUrl
|
|
360
420
|
};
|
|
361
421
|
//# sourceMappingURL=content.mjs.map
|
package/dist/content.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.mjs","sources":["../src/content_mime.ts","../src/content.ts"],"sourcesContent":["export const TEXT_CODE_EXTENSIONS = [\n 'txt', 'text', 'log', 'ini', 'conf', 'cfg', 'env', 'csv', 'tsv',\n 'md', 'markdown', 'rst', 'adoc',\n 'json', 'jsonc', 'json5', 'xml', 'yaml', 'yml', 'toml',\n 'ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'rs', 'py', 'go', 'c', 'h', 'cc', 'cpp', 'hpp',\n 'java', 'kt', 'swift', 'rb', 'php', 'sql', 'sh', 'bash', 'zsh', 'ps1', 'bat',\n 'css', 'scss', 'less', 'vue', 'svelte', 'lua', 'dart', 'r', 'scala', 'ex', 'exs',\n 'dockerfile', 'makefile', 'gitignore', 'editorconfig', 'lock',\n]\n\nconst MEDIA_TYPE_BY_EXTENSION: Record<string, string> = {\n png: 'image/png',\n apng: 'image/apng',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n jfif: 'image/jpeg',\n gif: 'image/gif',\n webp: 'image/webp',\n bmp: 'image/bmp',\n ico: 'image/x-icon',\n avif: 'image/avif',\n heic: 'image/heic',\n heif: 'image/heif',\n tif: 'image/tiff',\n tiff: 'image/tiff',\n psd: 'image/vnd.adobe.photoshop',\n svg: 'image/svg+xml',\n mp4: 'video/mp4',\n m4v: 'video/mp4',\n webm: 'video/webm',\n mov: 'video/quicktime',\n mkv: 'video/x-matroska',\n avi: 'video/x-msvideo',\n ogv: 'video/ogg',\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n flac: 'audio/flac',\n ogg: 'audio/ogg',\n oga: 'audio/ogg',\n opus: 'audio/ogg',\n m4a: 'audio/mp4',\n aac: 'audio/aac',\n pdf: 'application/pdf',\n html: 'text/html',\n htm: 'text/html',\n xhtml: 'application/xhtml+xml',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n doc: 'application/msword',\n xls: 'application/vnd.ms-excel',\n ppt: 'application/vnd.ms-powerpoint',\n odt: 'application/vnd.oasis.opendocument.text',\n zip: 'application/zip',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n '7z': 'application/x-7z-compressed',\n rar: 'application/vnd.rar',\n epub: 'application/epub+zip',\n md: 'text/markdown',\n markdown: 'text/markdown',\n json: 'application/json',\n xml: 'application/xml',\n csv: 'text/csv',\n yaml: 'application/yaml',\n yml: 'application/yaml',\n toml: 'application/toml',\n js: 'text/javascript',\n mjs: 'text/javascript',\n cjs: 'text/javascript',\n css: 'text/css',\n}\n\nfor (const ext of TEXT_CODE_EXTENSIONS) {\n if (!MEDIA_TYPE_BY_EXTENSION[ext]) MEDIA_TYPE_BY_EXTENSION[ext] = `text/x-${ext}`\n}\n\n\nexport function extensionOf(name: string | undefined): string {\n if (!name) return ''\n const base = name.split('/').pop() ?? name\n const dot = base.lastIndexOf('.')\n if (dot <= 0) return ''\n return base.slice(dot + 1).toLowerCase()\n}\n\nexport function mediaTypeFromExtension(ext: string): string | undefined {\n return MEDIA_TYPE_BY_EXTENSION[ext.toLowerCase()]\n}\n","import { extensionOf, mediaTypeFromExtension } from './content_mime'\nexport { extensionOf, mediaTypeFromExtension, TEXT_CODE_EXTENSIONS } from './content_mime'\n\nexport type TransferableContentRef =\n | { kind: 'cyfs-path'; path: string; version?: string }\n | { kind: 'object-id'; objectId: string; version?: string }\nexport type TransferableSessionContext =\n | { kind: 'single' }\n | { kind: 'container'; container: TransferableContentRef; current: TransferableContentRef; sort?: unknown; navigation?: 'wrap' | 'bounded' }\n | { kind: 'list'; sessionId?: string; version?: string; items: Array<{ id?: string; source: TransferableContentRef; title?: string }>; currentIndex: number; navigation?: 'wrap' | 'bounded' }\nexport interface OpenRequest {\n requestId: string\n source: TransferableContentRef\n session?: TransferableSessionContext\n mode?: 'view' | 'edit'\n origin?: { appInstanceId?: string; windowId?: string; hostContext?: string }\n}\nexport interface ContentSelector {\n objType?: string | string[]\n mime?: string | string[]\n schema?: string | string[]\n ext?: string[]\n maxSize?: number\n}\nexport interface ContentDescriptor {\n source: TransferableContentRef\n objType?: string\n mime?: string\n schema?: string\n ext?: string\n name?: string\n size?: number\n}\nexport interface OpenBinding {\n entry: { type: 'web'; path: string } | { type: 'builtin'; target: string }\n modes?: Array<'view' | 'edit'>\n fidelity?: 'full' | 'partial'\n window?: 'reuse' | 'new'\n multiSource?: boolean\n priority?: number\n}\nexport interface ContentHandlerEntry {\n provider: 'app' | 'system'\n app_instance_id?: string\n app_doc_object_id?: string\n app_version?: string\n handler_id: string\n handler_version: number\n selectors: ContentSelector[]\n intents: { open?: OpenBinding }\n permissions?: string[]\n enabled: boolean\n registered_at?: number\n}\nexport interface ContentRegistry { schema_version: 1; updated_at?: number; handlers: Record<string, ContentHandlerEntry> }\nexport interface ContentDefaults { schema_version: 1; defaults: { open?: Record<string, string> }; disabled: string[] }\nexport interface HandlerPlan {\n handlerKey: string\n handlerRef: string\n appInstanceId?: string\n appDocObjectId?: string\n handlerVersion: number\n intent: 'open'\n binding: OpenBinding\n matched: { selector: ContentSelector; specificity: number }\n reason: 'user-default' | 'system-default' | 'ranked'\n}\nexport const previewHandler: ContentHandlerEntry = {\n provider: 'system', handler_id: 'preview', handler_version: 1,\n selectors: [{ mime: '*/*' }], enabled: true,\n intents: { open: { entry: { type: 'builtin', target: 'preview' }, modes: ['view'], fidelity: 'partial', window: 'reuse', priority: 90 } },\n}\nexport const emptyDefaults = (): ContentDefaults => ({ schema_version: 1, defaults: {}, disabled: [] })\nexport const contentRefString = (ref: TransferableContentRef): string => ref.kind === 'cyfs-path' ? ref.path : `obj://${ref.objectId}`\nexport function isTransferableRef(value: unknown): value is TransferableContentRef {\n if (!value || typeof value !== 'object') return false\n const v = value as TransferableContentRef\n return (v.kind === 'cyfs-path' && typeof v.path === 'string' && /^cyfs:\\/\\/\\/[^\\0]*$/.test(v.path)) ||\n (v.kind === 'object-id' && typeof v.objectId === 'string' && /^[\\w.-]+:[\\w-]+$/.test(v.objectId))\n}\nexport function isOpenRequest(value: unknown): value is OpenRequest {\n if (!value || typeof value !== 'object') return false\n const v = value as OpenRequest\n return typeof v.requestId === 'string' && isTransferableRef(v.source) &&\n (v.mode === undefined || v.mode === 'view' || v.mode === 'edit') &&\n (v.session === undefined || isTransferableSession(v.session))\n}\nexport function isTransferableSession(value: unknown): value is TransferableSessionContext {\n if (!value || typeof value !== 'object') return false\n const v = value as TransferableSessionContext\n return v.kind === 'single' ||\n (v.kind === 'container' && isTransferableRef(v.container) && isTransferableRef(v.current)) ||\n (v.kind === 'list' && Array.isArray(v.items) && v.items.every(i => i && isTransferableRef(i.source)) &&\n Number.isInteger(v.currentIndex) && v.currentIndex >= 0 && v.currentIndex < v.items.length)\n}\nexport function contentDescriptor(source: TransferableContentRef, hints: { name?: string; mime?: string; size?: number } = {}): ContentDescriptor {\n const name = hints.name ?? contentRefString(source).split('/').pop() ?? ''\n const ext = extensionOf(name)\n return { source, name, size: hints.size, ext: ext ? `.${ext}` : undefined,\n objType: source.kind === 'cyfs-path' ? 'cyfile' : source.objectId.split(':')[0],\n mime: hints.mime || mediaTypeFromExtension(ext) || 'application/octet-stream' }\n}\nconst values = (v?: string | string[]) => v === undefined ? [] : Array.isArray(v) ? v : [v]\nexport function matchSelector(s: ContentSelector, d: ContentDescriptor): number {\n if (s.maxSize !== undefined && d.size !== undefined && d.size > s.maxSize) return 0\n if (s.objType && !values(s.objType).includes(d.objType ?? '')) return 0\n let score = s.objType ? 2 : 1\n if (s.schema) {\n const matches = values(s.schema).filter(v => v.endsWith('*') ? d.schema?.startsWith(v.slice(0, -1)) : d.schema === v)\n if (!matches.length) return 0\n score = matches.some(v => v === d.schema) ? 7 : 6\n }\n if (s.mime) {\n const mime = (d.mime ?? '').toLowerCase().split(';')[0].trim()\n const scores = values(s.mime).map(v => {\n v = v.toLowerCase()\n if (v === '*/*') return 1\n if (v.split(';')[0].trim() === mime) return s.objType ? 6 : 5\n if (v.includes('/*+') && mime.startsWith(v.split('/')[0] + '/') && mime.endsWith(v.slice(v.indexOf('+')))) return 4\n if (v.endsWith('/*') && mime.startsWith(v.slice(0, -1))) return 3\n return 0\n })\n const best = Math.max(...scores, 0)\n if (!best) return 0\n score = Math.max(score, best)\n }\n if (!s.mime && !s.objType && !s.schema && !s.ext?.includes(d.ext ?? '')) return 0\n return score\n}\nfunction compactSelector(value: string): ContentSelector {\n const out: ContentSelector = {}\n for (const part of value.split(';')) {\n const i = part.indexOf(':'); const key = part.slice(0, i); const v = part.slice(i + 1)\n if (key === 'obj') out.objType = v\n else if (key === 'mime') out.mime = v\n else if (key === 'schema') out.schema = v\n else if (key === 'ext') out.ext = [v]\n else return {}\n }\n return out\n}\nexport function resolveContentHandlers(registry: ContentRegistry, defaults: ContentDefaults, descriptor: ContentDescriptor,\n intent: 'open' = 'open', _host: unknown = {}, availableApps: Iterable<string> = []): HandlerPlan[] {\n const visible = new Set(availableApps)\n const handlers = { ...registry.handlers, 'system#preview': previewHandler }\n const preferred = Object.entries(defaults.defaults.open ?? {})\n .map(([s, key]) => ({ key, score: matchSelector(compactSelector(s), descriptor) }))\n .filter(v => v.score > 0).sort((a, b) => b.score - a.score || a.key.localeCompare(b.key))\n const matches = Object.entries(handlers).flatMap(([key, h]) => {\n const binding = h.intents[intent]\n if (!binding || !h.enabled || (key !== 'system#preview' && defaults.disabled.includes(key))) return []\n if (h.provider === 'app' && (!h.app_instance_id || !visible.has(h.app_instance_id) || binding.entry.type !== 'web')) return []\n const selectors = h.selectors.map(selector => ({ selector, specificity: matchSelector(selector, descriptor) }))\n .filter(s => s.specificity > 0).sort((a, b) => b.specificity - a.specificity)\n if (!selectors.length) return []\n return [{ key, h, binding, matched: selectors[0] }]\n })\n const preferredKey = preferred.find(p => matches.some(m => m.key === p.key))?.key\n matches.sort((a, b) => Number(b.key === preferredKey) - Number(a.key === preferredKey) ||\n Number(b.matched.specificity > 1 || b.h.provider === 'system') - Number(a.matched.specificity > 1 || a.h.provider === 'system') ||\n b.matched.specificity - a.matched.specificity || (b.binding.priority ?? 0) - (a.binding.priority ?? 0) ||\n Number(b.h.provider === 'system') - Number(a.h.provider === 'system') ||\n (a.h.registered_at ?? 0) - (b.h.registered_at ?? 0) || a.key.localeCompare(b.key))\n return matches.map(m => ({ handlerKey: m.key, handlerRef: `${m.h.app_instance_id?.split('@')[0] ?? 'system'}#${m.h.handler_id}`,\n appInstanceId: m.h.app_instance_id, appDocObjectId: m.h.app_doc_object_id, handlerVersion: m.h.handler_version,\n intent, binding: m.binding, matched: m.matched,\n reason: m.key === preferredKey ? 'user-default' : m.h.provider === 'system' ? 'system-default' : 'ranked' }))\n}\nexport function parentSource(source: TransferableContentRef): TransferableContentRef | undefined {\n if (source.kind !== 'cyfs-path') return undefined\n const i = source.path.lastIndexOf('/')\n return i >= 7 ? { kind: 'cyfs-path', path: source.path.slice(0, i) || 'cyfs:///' } : undefined\n}\nexport function encodeSession(session: TransferableSessionContext | undefined, source: TransferableContentRef): string {\n if (!session) return ''\n const encode = (v: TransferableSessionContext) => btoa(Array.from(new TextEncoder().encode(JSON.stringify(v)), b => String.fromCharCode(b)).join(''))\n .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n const encoded = encode(session)\n if (encoded.length <= 2048 || session.kind !== 'list') return encoded\n const parent = parentSource(source)\n if (parent && session.items.every(i => contentRefString(parentSource(i.source) ?? i.source) === contentRefString(parent))) {\n return encode({ kind: 'container', container: parent, current: source })\n }\n return ''\n}\nexport function expandOpenPath(path: string, request: OpenRequest, modes: Array<'view' | 'edit'> = ['view', 'edit']): string {\n if (!path.startsWith('/') || path.startsWith('//') || /(?:\\.\\.|\\\\|[\\r\\n])/.test(decodeURIComponent(path))) throw new Error('Invalid App entry path')\n const params: Record<string, string> = { source: contentRefString(request.source), mode: request.mode ?? (modes.includes('edit') ? 'edit' : 'view'), session: encodeSession(request.session, request.source) }\n const expanded = path.replace(/\\{(source|mode|session)\\}/g, (_, key: string) => encodeURIComponent(params[key]))\n return expanded + (expanded.includes('?') ? '&' : '?') + 'requestId=' + encodeURIComponent(request.requestId)\n}\nexport class ContentRegistryClient {\n registry: ContentRegistry = { schema_version: 1, handlers: {} }\n defaults = emptyDefaults()\n updatedAt = 0\n private listeners = new Set<() => void>()\n constructor(private config: { get(key: string): Promise<{ value: string }>; set(key: string, value: string): Promise<unknown> }, private userId: string) {}\n async refresh(): Promise<void> {\n const [registry, defaults] = await Promise.all([this.config.get('system/content_registry'), this.config.get(`users/${this.userId}/content_defaults`).catch(error => { if (/not found|not_found/i.test(String(error))) return null; throw error })])\n this.registry = JSON.parse(registry.value)\n this.defaults = defaults ? JSON.parse(defaults.value) : emptyDefaults()\n this.updatedAt = Date.now()\n this.listeners.forEach(cb => cb())\n }\n async setDefault(intent: 'open', selector: string, handlerKey: string | null): Promise<void> {\n await this.refresh()\n const next = { ...this.defaults.defaults[intent] }\n if (handlerKey) next[selector] = handlerKey\n else delete next[selector]\n await this.persist({ ...this.defaults, defaults: { ...this.defaults.defaults, [intent]: next } })\n }\n async setEnabled(key: string, enabled: boolean): Promise<void> {\n await this.refresh()\n await this.persist({ ...this.defaults, disabled: [...new Set([...this.defaults.disabled.filter(k => k !== key), ...enabled ? [] : [key]])] })\n }\n onChanged(cb: () => void): () => void { this.listeners.add(cb); return () => this.listeners.delete(cb) }\n private async persist(next: ContentDefaults): Promise<void> {\n await this.config.set(`users/${this.userId}/content_defaults`, JSON.stringify(next))\n this.defaults = next\n this.listeners.forEach(cb => cb())\n }\n}\n"],"names":["_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content.mjs","sources":["../src/content_mime.ts","../src/content.ts"],"sourcesContent":["export const TEXT_CODE_EXTENSIONS = [\n 'txt', 'text', 'log', 'ini', 'conf', 'cfg', 'env', 'csv', 'tsv',\n 'md', 'markdown', 'rst', 'adoc',\n 'json', 'jsonc', 'json5', 'xml', 'yaml', 'yml', 'toml',\n 'ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'rs', 'py', 'go', 'c', 'h', 'cc', 'cpp', 'hpp',\n 'java', 'kt', 'swift', 'rb', 'php', 'sql', 'sh', 'bash', 'zsh', 'ps1', 'bat',\n 'css', 'scss', 'less', 'vue', 'svelte', 'lua', 'dart', 'r', 'scala', 'ex', 'exs',\n 'dockerfile', 'makefile', 'gitignore', 'editorconfig', 'lock',\n]\n\nconst MEDIA_TYPE_BY_EXTENSION: Record<string, string> = {\n png: 'image/png',\n apng: 'image/apng',\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n jfif: 'image/jpeg',\n gif: 'image/gif',\n webp: 'image/webp',\n bmp: 'image/bmp',\n ico: 'image/x-icon',\n avif: 'image/avif',\n heic: 'image/heic',\n heif: 'image/heif',\n tif: 'image/tiff',\n tiff: 'image/tiff',\n psd: 'image/vnd.adobe.photoshop',\n svg: 'image/svg+xml',\n mp4: 'video/mp4',\n m4v: 'video/mp4',\n webm: 'video/webm',\n mov: 'video/quicktime',\n mkv: 'video/x-matroska',\n avi: 'video/x-msvideo',\n ogv: 'video/ogg',\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n flac: 'audio/flac',\n ogg: 'audio/ogg',\n oga: 'audio/ogg',\n opus: 'audio/ogg',\n m4a: 'audio/mp4',\n aac: 'audio/aac',\n pdf: 'application/pdf',\n html: 'text/html',\n htm: 'text/html',\n xhtml: 'application/xhtml+xml',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n doc: 'application/msword',\n xls: 'application/vnd.ms-excel',\n ppt: 'application/vnd.ms-powerpoint',\n odt: 'application/vnd.oasis.opendocument.text',\n zip: 'application/zip',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n '7z': 'application/x-7z-compressed',\n rar: 'application/vnd.rar',\n epub: 'application/epub+zip',\n md: 'text/markdown',\n markdown: 'text/markdown',\n json: 'application/json',\n xml: 'application/xml',\n csv: 'text/csv',\n yaml: 'application/yaml',\n yml: 'application/yaml',\n toml: 'application/toml',\n js: 'text/javascript',\n mjs: 'text/javascript',\n cjs: 'text/javascript',\n css: 'text/css',\n}\n\nfor (const ext of TEXT_CODE_EXTENSIONS) {\n if (!MEDIA_TYPE_BY_EXTENSION[ext]) MEDIA_TYPE_BY_EXTENSION[ext] = `text/x-${ext}`\n}\n\n\nexport function extensionOf(name: string | undefined): string {\n if (!name) return ''\n const base = name.split('/').pop() ?? name\n const dot = base.lastIndexOf('.')\n if (dot <= 0) return ''\n return base.slice(dot + 1).toLowerCase()\n}\n\nexport function mediaTypeFromExtension(ext: string): string | undefined {\n return MEDIA_TYPE_BY_EXTENSION[ext.toLowerCase()]\n}\n","import { extensionOf, mediaTypeFromExtension } from './content_mime'\nexport { extensionOf, mediaTypeFromExtension, TEXT_CODE_EXTENSIONS } from './content_mime'\n\nexport type TransferableContentRef =\n | { kind: 'cyfs-path'; path: string; version?: string }\n | { kind: 'object-id'; objectId: string; version?: string }\nexport type TransferableSessionContext =\n | { kind: 'single' }\n | { kind: 'container'; container: TransferableContentRef; current: TransferableContentRef; sort?: unknown; navigation?: 'wrap' | 'bounded' }\n | { kind: 'list'; sessionId?: string; version?: string; items: Array<{ id?: string; source: TransferableContentRef; title?: string }>; currentIndex: number; navigation?: 'wrap' | 'bounded' }\nexport interface OpenRequest {\n requestId: string\n source: TransferableContentRef\n session?: TransferableSessionContext\n mode?: 'view' | 'edit'\n origin?: { appInstanceId?: string; windowId?: string; hostContext?: string }\n}\nexport type ContentOpenTarget = 'default' | 'preview' | 'chooser'\nexport interface ContentHints { name?: string; mime?: string; size?: number }\nexport function readContentHints(value: unknown): ContentHints {\n if (!value || typeof value !== 'object') return {}\n const v = value as Record<string, unknown>\n const hints: ContentHints = {}\n if (typeof v.name === 'string' && v.name && v.name.length <= 255 && !/[\\/\\\\\\0]/.test(v.name)) hints.name = v.name\n if (typeof v.mime === 'string' && /^[\\w.+-]+\\/[\\w.+-]+$/.test(v.mime)) hints.mime = v.mime.toLowerCase()\n const size = typeof v.size === 'string' ? Number(v.size) : v.size\n if (typeof size === 'number' && Number.isSafeInteger(size) && size >= 0) hints.size = size\n return hints\n}\nexport interface ContentSelector {\n objType?: string | string[]\n mime?: string | string[]\n schema?: string | string[]\n ext?: string[]\n maxSize?: number\n}\nexport interface ContentDescriptor {\n source: TransferableContentRef\n objType?: string\n mime?: string\n schema?: string\n ext?: string\n name?: string\n size?: number\n}\nexport interface OpenBinding {\n entry: { type: 'web'; path: string } | { type: 'builtin'; target: string }\n modes?: Array<'view' | 'edit'>\n fidelity?: 'full' | 'partial'\n window?: 'reuse' | 'new'\n multiSource?: boolean\n priority?: number\n}\nexport interface ContentHandlerEntry {\n provider: 'app' | 'system'\n app_instance_id?: string\n app_doc_object_id?: string\n app_version?: string\n handler_id: string\n handler_version: number\n selectors: ContentSelector[]\n intents: { open?: OpenBinding }\n permissions?: string[]\n enabled: boolean\n registered_at?: number\n}\nexport interface ContentRegistry { schema_version: 1; updated_at?: number; handlers: Record<string, ContentHandlerEntry> }\nexport interface ContentDefaults { schema_version: 1; defaults: { open?: Record<string, string> }; disabled: string[] }\nexport interface HandlerPlan {\n handlerKey: string\n handlerRef: string\n appInstanceId?: string\n appDocObjectId?: string\n handlerVersion: number\n intent: 'open'\n binding: OpenBinding\n matched: { selector: ContentSelector; specificity: number }\n reason: 'user-default' | 'system-default' | 'ranked'\n}\nexport const previewHandler: ContentHandlerEntry = {\n provider: 'system', handler_id: 'preview', handler_version: 1,\n selectors: [{ mime: '*/*' }], enabled: true,\n intents: { open: { entry: { type: 'builtin', target: 'preview' }, modes: ['view'], fidelity: 'partial', window: 'reuse', priority: 90 } },\n}\nexport const emptyDefaults = (): ContentDefaults => ({ schema_version: 1, defaults: {}, disabled: [] })\nexport const contentRefString = (ref: TransferableContentRef): string => ref.kind === 'cyfs-path' ? ref.path : `obj://${ref.objectId}`\nexport function isTransferableRef(value: unknown): value is TransferableContentRef {\n if (!value || typeof value !== 'object') return false\n const v = value as TransferableContentRef\n return (v.kind === 'cyfs-path' && typeof v.path === 'string' && /^cyfs:\\/\\/\\/[^\\0]*$/.test(v.path)) ||\n (v.kind === 'object-id' && typeof v.objectId === 'string' && /^[\\w.-]+:[\\w-]+$/.test(v.objectId))\n}\nexport function isOpenRequest(value: unknown): value is OpenRequest {\n if (!value || typeof value !== 'object') return false\n const v = value as OpenRequest\n return typeof v.requestId === 'string' && isTransferableRef(v.source) &&\n (v.mode === undefined || v.mode === 'view' || v.mode === 'edit') &&\n (v.session === undefined || isTransferableSession(v.session))\n}\nexport function isTransferableSession(value: unknown): value is TransferableSessionContext {\n if (!value || typeof value !== 'object') return false\n const v = value as TransferableSessionContext\n return v.kind === 'single' ||\n (v.kind === 'container' && isTransferableRef(v.container) && isTransferableRef(v.current)) ||\n (v.kind === 'list' && Array.isArray(v.items) && v.items.every(i => i && isTransferableRef(i.source)) &&\n Number.isInteger(v.currentIndex) && v.currentIndex >= 0 && v.currentIndex < v.items.length)\n}\nexport function contentDescriptor(source: TransferableContentRef, hints: { name?: string; mime?: string; size?: number } = {}): ContentDescriptor {\n const name = hints.name ?? contentRefString(source).split('/').pop() ?? ''\n const ext = extensionOf(name)\n return { source, name, size: hints.size, ext: ext ? `.${ext}` : undefined,\n objType: source.kind === 'cyfs-path' ? 'cyfile' : source.objectId.split(':')[0],\n mime: hints.mime || mediaTypeFromExtension(ext) || 'application/octet-stream' }\n}\nconst values = (v?: string | string[]) => v === undefined ? [] : Array.isArray(v) ? v : [v]\nexport function matchSelector(s: ContentSelector, d: ContentDescriptor): number {\n if (s.maxSize !== undefined && d.size !== undefined && d.size > s.maxSize) return 0\n if (s.objType && !values(s.objType).includes(d.objType ?? '')) return 0\n let score = s.objType ? 2 : 1\n if (s.schema) {\n const matches = values(s.schema).filter(v => v.endsWith('*') ? d.schema?.startsWith(v.slice(0, -1)) : d.schema === v)\n if (!matches.length) return 0\n score = matches.some(v => v === d.schema) ? 7 : 6\n }\n if (s.mime) {\n const mime = (d.mime ?? '').toLowerCase().split(';')[0].trim()\n const scores = values(s.mime).map(v => {\n v = v.toLowerCase()\n if (v === '*/*') return 1\n if (v.split(';')[0].trim() === mime) return s.objType ? 6 : 5\n if (v.includes('/*+') && mime.startsWith(v.split('/')[0] + '/') && mime.endsWith(v.slice(v.indexOf('+')))) return 4\n if (v.endsWith('/*') && mime.startsWith(v.slice(0, -1))) return 3\n return 0\n })\n const best = Math.max(...scores, 0)\n if (!best) return 0\n score = Math.max(score, best)\n }\n if (!s.mime && !s.objType && !s.schema && !s.ext?.includes(d.ext ?? '')) return 0\n return score\n}\nfunction compactSelector(value: string): ContentSelector {\n const out: ContentSelector = {}\n for (const part of value.split(';')) {\n const i = part.indexOf(':'); const key = part.slice(0, i); const v = part.slice(i + 1)\n if (key === 'obj') out.objType = v\n else if (key === 'mime') out.mime = v\n else if (key === 'schema') out.schema = v\n else if (key === 'ext') out.ext = [v]\n else return {}\n }\n return out\n}\nexport function resolveContentHandlers(registry: ContentRegistry, defaults: ContentDefaults, descriptor: ContentDescriptor,\n intent: 'open' = 'open', _host: unknown = {}, availableApps: Iterable<string> = []): HandlerPlan[] {\n const visible = new Set(availableApps)\n const handlers = { ...registry.handlers, 'system#preview': previewHandler }\n const preferred = Object.entries(defaults.defaults.open ?? {})\n .map(([s, key]) => ({ key, score: matchSelector(compactSelector(s), descriptor) }))\n .filter(v => v.score > 0).sort((a, b) => b.score - a.score || a.key.localeCompare(b.key))\n const matches = Object.entries(handlers).flatMap(([key, h]) => {\n const binding = h.intents[intent]\n if (!binding || !h.enabled || (key !== 'system#preview' && defaults.disabled.includes(key))) return []\n if (h.provider === 'app' && (!h.app_instance_id || !visible.has(h.app_instance_id) || binding.entry.type !== 'web')) return []\n const selectors = h.selectors.map(selector => ({ selector, specificity: matchSelector(selector, descriptor) }))\n .filter(s => s.specificity > 0).sort((a, b) => b.specificity - a.specificity)\n if (!selectors.length) return []\n return [{ key, h, binding, matched: selectors[0] }]\n })\n const preferredKey = preferred.find(p => matches.some(m => m.key === p.key))?.key\n matches.sort((a, b) => Number(b.key === preferredKey) - Number(a.key === preferredKey) ||\n Number(b.matched.specificity > 1 || b.h.provider === 'system') - Number(a.matched.specificity > 1 || a.h.provider === 'system') ||\n b.matched.specificity - a.matched.specificity || (b.binding.priority ?? 0) - (a.binding.priority ?? 0) ||\n Number(b.h.provider === 'system') - Number(a.h.provider === 'system') ||\n (a.h.registered_at ?? 0) - (b.h.registered_at ?? 0) || a.key.localeCompare(b.key))\n return matches.map(m => ({ handlerKey: m.key, handlerRef: `${m.h.app_instance_id?.split('@')[0] ?? 'system'}#${m.h.handler_id}`,\n appInstanceId: m.h.app_instance_id, appDocObjectId: m.h.app_doc_object_id, handlerVersion: m.h.handler_version,\n intent, binding: m.binding, matched: m.matched,\n reason: m.key === preferredKey ? 'user-default' : m.h.provider === 'system' ? 'system-default' : 'ranked' }))\n}\nexport function parentSource(source: TransferableContentRef): TransferableContentRef | undefined {\n if (source.kind !== 'cyfs-path') return undefined\n const i = source.path.lastIndexOf('/')\n return i >= 7 ? { kind: 'cyfs-path', path: source.path.slice(0, i) || 'cyfs:///' } : undefined\n}\nexport function encodeSession(session: TransferableSessionContext | undefined, source: TransferableContentRef): string {\n if (!session) return ''\n const encode = (v: TransferableSessionContext) => btoa(Array.from(new TextEncoder().encode(JSON.stringify(v)), b => String.fromCharCode(b)).join(''))\n .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '')\n const encoded = encode(session)\n if (encoded.length <= 2048 || session.kind !== 'list') return encoded\n const parent = parentSource(source)\n if (parent && session.items.every(i => contentRefString(parentSource(i.source) ?? i.source) === contentRefString(parent))) {\n return encode({ kind: 'container', container: parent, current: source })\n }\n return ''\n}\nexport function expandOpenPath(path: string, request: OpenRequest, modes: Array<'view' | 'edit'> = ['view', 'edit']): string {\n if (!path.startsWith('/') || path.startsWith('//') || /(?:\\.\\.|\\\\|[\\r\\n])/.test(decodeURIComponent(path))) throw new Error('Invalid App entry path')\n const params: Record<string, string> = { source: contentRefString(request.source), mode: request.mode ?? (modes.includes('edit') ? 'edit' : 'view'), session: encodeSession(request.session, request.source) }\n const expanded = path.replace(/\\{(source|mode|session)\\}/g, (_, key: string) => encodeURIComponent(params[key]))\n return expanded + (expanded.includes('?') ? '&' : '?') + 'requestId=' + encodeURIComponent(request.requestId)\n}\nexport interface SystemOpenRequest {\n request: Omit<OpenRequest, 'requestId'>\n target: ContentOpenTarget\n hints: ContentHints\n /** AppId of the App asking the system to open this content; its own handlers are not offered back to it. */\n from?: string\n}\nexport function systemOpenUrl(systemOrigin: string, open: SystemOpenRequest): string {\n const url = new URL('/', systemOrigin)\n url.searchParams.set('open', contentRefString(open.request.source))\n url.searchParams.set('intent', open.target)\n const session = encodeSession(open.request.session, open.request.source)\n if (session) url.searchParams.set('session', session)\n if (open.request.mode) url.searchParams.set('mode', open.request.mode)\n for (const key of ['name', 'mime', 'size'] as const) if (open.hints[key] !== undefined) url.searchParams.set(key, String(open.hints[key]))\n if (open.from) url.searchParams.set('from', open.from)\n return url.href\n}\nexport function parseSystemOpen(params: URLSearchParams): SystemOpenRequest | undefined {\n const value = params.get('open')\n if (!value) return undefined\n const source: TransferableContentRef = value.startsWith('obj://') ? { kind: 'object-id', objectId: value.slice(6) } : { kind: 'cyfs-path', path: value }\n if (!isTransferableRef(source)) return undefined\n const intent = params.get('intent')\n const target: ContentOpenTarget = intent === 'preview' || intent === 'chooser' ? intent : 'default'\n const request: Omit<OpenRequest, 'requestId'> = { source }\n const mode = params.get('mode')\n if (mode === 'view' || mode === 'edit') request.mode = mode\n const encoded = params.get('session')\n if (encoded) {\n try {\n const session = JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(encoded.replace(/-/g, '+').replace(/_/g, '/')), c => c.charCodeAt(0))))\n if (isTransferableSession(session)) request.session = session\n } catch {}\n }\n const from = params.get('from')\n return { request, target, hints: readContentHints({ name: params.get('name') ?? undefined, mime: params.get('mime') ?? undefined, size: params.get('size') ?? undefined }), from: from && /^[\\w.@-]+$/.test(from) ? from : undefined }\n}\n/** Whether a handler belongs to the App identified by `appId` (an AppId, or an AppInstanceId `<appId>@<owner>`). */\nexport const handlerOfApp = (plan: Pick<HandlerPlan, 'appInstanceId'>, appId: string): boolean =>\n !!plan.appInstanceId && plan.appInstanceId.split('@')[0] === appId.split('@')[0]\nexport class ContentRegistryClient {\n registry: ContentRegistry = { schema_version: 1, handlers: {} }\n defaults = emptyDefaults()\n updatedAt = 0\n private listeners = new Set<() => void>()\n constructor(private config: { get(key: string): Promise<{ value: string }>; set(key: string, value: string): Promise<unknown> }, private userId: string) {}\n async refresh(): Promise<void> {\n const [registry, defaults] = await Promise.all([this.config.get('system/content_registry'), this.config.get(`users/${this.userId}/content_defaults`).catch(error => { if (/not found|not_found/i.test(String(error))) return null; throw error })])\n this.registry = JSON.parse(registry.value)\n this.defaults = defaults ? JSON.parse(defaults.value) : emptyDefaults()\n this.updatedAt = Date.now()\n this.listeners.forEach(cb => cb())\n }\n async setDefault(intent: 'open', selector: string, handlerKey: string | null): Promise<void> {\n await this.refresh()\n const next = { ...this.defaults.defaults[intent] }\n if (handlerKey) next[selector] = handlerKey\n else delete next[selector]\n await this.persist({ ...this.defaults, defaults: { ...this.defaults.defaults, [intent]: next } })\n }\n async setEnabled(key: string, enabled: boolean): Promise<void> {\n await this.refresh()\n await this.persist({ ...this.defaults, disabled: [...new Set([...this.defaults.disabled.filter(k => k !== key), ...enabled ? [] : [key]])] })\n }\n onChanged(cb: () => void): () => void { this.listeners.add(cb); return () => this.listeners.delete(cb) }\n private async persist(next: ContentDefaults): Promise<void> {\n await this.config.set(`users/${this.userId}/content_defaults`, JSON.stringify(next))\n this.defaults = next\n this.listeners.forEach(cb => cb())\n }\n}\n"],"names":["_a"],"mappings":"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"}
|