@things-factory/figure-library 10.1.147 → 10.1.150
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.
|
@@ -49,7 +49,7 @@ async function keepLibraryFile(tx, domain, user, file, files = (0, exports.libra
|
|
|
49
49
|
encoding: 'binary',
|
|
50
50
|
refType: exports.LIBRARY_FILE_REF_TYPE,
|
|
51
51
|
refBy: file.hash,
|
|
52
|
-
category: file.contentType.startsWith('image/') ? 'image' : 'etc',
|
|
52
|
+
category: file.contentType.startsWith('image/') ? 'image' : file.contentType.startsWith('model/') ? 'model' : 'etc',
|
|
53
53
|
size: String(put.size),
|
|
54
54
|
path: put.path,
|
|
55
55
|
...(put.contents ? { contents: put.contents } : {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library-files.js","sourceRoot":"","sources":["../../../server/service/library/library-files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"library-files.js","sourceRoot":"","sources":["../../../server/service/library/library-files.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from 'crypto'\nimport { Readable } from 'stream'\n\nimport { Attachment, STORAGE } from '@things-factory/attachment-base'\n\n/** Attachments that hold the files imported releases depend on, one per (domain, content hash). */\nexport const LIBRARY_FILE_REF_TYPE = 'figure-library-file'\n\nexport const sha256Of = (bytes: Uint8Array) => createHash('sha256').update(bytes).digest('hex')\n\n/** Where the bytes go: attachment-base's storage. Tests give another. */\nexport interface LibraryFiles {\n put(bytes: Buffer, mimetype: string, name: string, context: any): Promise<{ id: string; path: string; size: number; contents?: Buffer }>\n read(path: string): Promise<Buffer>\n}\n\nexport const attachmentFiles: LibraryFiles = {\n async put(bytes, mimetype, name, context) {\n const file = Promise.resolve({ createReadStream: () => Readable.from([bytes]), filename: name, mimetype, encoding: 'binary' })\n const { id, path, size, contents } = await STORAGE.uploadFile({ file, context })\n return { id, path, size, contents }\n },\n read: async path => Buffer.from(await STORAGE.readFile(path))\n}\n\nlet inUse: LibraryFiles = attachmentFiles\nexport const libraryFiles = (): LibraryFiles => inUse\n/** For tests: use these files until set back; returns the ones it replaced. */\nexport function useLibraryFiles(files: LibraryFiles): LibraryFiles {\n const was = inUse\n inUse = files\n return was\n}\n\ntype Tx = { getRepository: (target: any) => any }\n\n/** The attachment holding this content in this domain, or undefined. */\nexport async function libraryFileOf(tx: Tx, domainId: string, hash: string): Promise<Attachment | undefined> {\n return (await tx.getRepository(Attachment).findOne({ where: { domain: { id: domainId }, refType: LIBRARY_FILE_REF_TYPE, refBy: hash } })) ?? undefined\n}\n\n/** Keeps one dependency file under its hash; a file already kept in this domain is not written again. */\nexport async function keepLibraryFile(\n tx: Tx,\n domain: { id: string },\n user: unknown,\n file: { hash: string; bytes: Uint8Array; contentType: string },\n files: LibraryFiles = libraryFiles()\n): Promise<void> {\n if (await libraryFileOf(tx, domain.id, file.hash)) return\n const ext = file.contentType.split('/')[1]?.split('+')[0] || 'bin'\n const name = `${file.hash}.${ext}`\n const put = await files.put(Buffer.from(file.bytes), file.contentType, name, { state: { domain, user, tx } })\n await tx.getRepository(Attachment).save({\n domain,\n creator: user,\n updater: user,\n id: put.id,\n name,\n mimetype: file.contentType,\n encoding: 'binary',\n refType: LIBRARY_FILE_REF_TYPE,\n refBy: file.hash,\n category: file.contentType.startsWith('image/') ? 'image' : file.contentType.startsWith('model/') ? 'model' : 'etc',\n size: String(put.size),\n path: put.path,\n ...(put.contents ? { contents: put.contents } : {})\n })\n}\n"]}
|