solid-logic 6.0.1-4 → 6.0.1-5

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.
@@ -1,2 +1,2 @@
1
- const e=require("../util/ns.cjs.js"),t=require("../acl/aclLogic.cjs.js"),n=require("./resourceHttp.cjs.js"),r=require("./resourceMetadata.cjs.js");let i=require("rdflib");function a(a,o,s,c){function l(e){return s.createContainer(e)}function u(e){return s.isContainer(e)}function d(e){return s.getContainerMemberCount(e)}function f(e){return s.getContainerElements(e)}function p(e){let t=e.uri.endsWith(`/`)?e.uri:`${e.uri}/`;return a.sym(`${t}index.ttl#this`)}function m(t){return a.holds(t,e.ns.ldp(`contains`),p(t).doc())}function h(t){return a.holds(t,e.ns.rdf(`type`),e.ns.space(`Storage`),t.doc())}function g(e){let t=e.dir();if(!t)return!1;let n=e.uri.slice(t.uri.length);return n.startsWith(`.`)||n.endsWith(`.acl`)||n.endsWith(`.meta`)||n.endsWith(`~`)}function _(e){let t=typeof e==`string`?e:e.value;try{let e=new URL(t);return e.hash===`#me`&&/\/profile\/card\.ttl$/.test(e.pathname)}catch{return!1}}function v(n,i){let o,s=!1,c=!1,l=!1,u=!1,d,f;if(i.headers){o=i.headers.get(`content-type`)?.split(`;`)[0]??void 0;let t=r.readWacAccessInfo(i.headers.get(`wac-allow`));s=t.canEdit,c=t.canManageAccess,l=t.isPublic,u=t.isPublicKnown,d=i.headers.get(`etag`)??void 0,f=a.anyValue(n,e.ns.dct(`modified`))||a.anyValue(n,e.ns.dc(`modified`))||void 0}(!i.headers||!i.headers.get(`content-type`))&&(!i.headers||!i.headers.get(`wac-allow`)||!i.headers.get(`etag`))&&a.each(null,a.sym(`http://www.w3.org/2007/ont/link#requestedURI`),n).map(t=>{let i=a.any(t,a.sym(`http://www.w3.org/2007/ont/link#response`));if(i&&i.termType===`NamedNode`){let t=a.anyValue(i,e.ns.httph(`content-type`))||void 0;o===void 0&&(o=t);let p=a.anyValue(i,e.ns.httph(`wac-allow`))||a.anyValue(i,e.ns.httph(`WAC-Allow`)),m=r.readWacAccessInfo(p);s||=m.canEdit,c||=m.canManageAccess,l||=m.isPublic,u||=m.isPublicKnown;let h=a.anyValue(i,e.ns.httph(`etag`))||void 0;d===void 0&&(d=h),f=a.anyValue(n,e.ns.dct(`modified`))||a.anyValue(n,e.ns.dc(`modified`))||void 0}});let p=a.any(n,t.ACL_LINK)?.value||void 0;return{contentType:o,access:{canEdit:s,canManageAccess:c,isPublic:l,isPublicKnown:u},aclUri:p,eTag:d,modified:f}}async function y(e){let t=await a.fetcher.webOperation(`HEAD`,e.uri);return n.assertSuccessfulHttpResponse(t,`HEAD`),v(e,t)}async function b(t){let n=a.any(t,e.ns.ldp(`contains`))||t.dir();if(!n||n.termType!==`NamedNode`)return!1;try{return(await y(n)).access.canEdit}catch{return!1}}async function x(e){return b(e)}async function S(e){return y(e)}async function C(e){try{let t=await a.fetcher.webOperation(`GET`,e.uri);n.assertSuccessfulHttpResponse(t,`GET`);let r=t.responseText;if(r===void 0)throw Error(`No text in response object`);let i=v(e,t);if(!i.contentType)throw Error(`No content-type available`);return{content:r,metadata:i}}catch(e){throw Error(`Error reading file: ${e instanceof Error?e.message:String(e)}`)}}async function w(e){let t;try{t=await y(e)}catch{t={contentType:void 0,access:{canEdit:!1,canManageAccess:!1,isPublic:!1},aclUri:void 0,eTag:void 0,modified:void 0}}let n=await x(e),r={canEdit:t.access?.canEdit??!1,canManageAccess:t.access?.canManageAccess??!1,isPublic:t.access?.isPublic??!1,isPublicKnown:t.access?.isPublicKnown??!1,canDelete:n};return{...t,access:r}}async function T(e,t){if(t)try{await c.deleteTypeIndexRegistrationForResource(e,t)}catch{}}async function E(t,r={}){let o=t.dir();if(u(t)){let e=await s.getContainerMembers(t);await Promise.all(e.map(e=>E((0,i.sym)(e),r)))}let c;try{c=await a.fetcher._fetch(t.value,{method:`DELETE`}),n.assertSuccessfulHttpResponse(c,`DELETE`,{allowNotFound:!0})}catch(e){if(!n.isMissingError(e))throw e}return r.deleteTypeIndexes&&await T(t,r.user),o&&a.removeMatches(o,e.ns.ldp(`contains`),t,o.doc()),a.removeDocument(t),a.fetcher.unload(t.doc()),c}async function D(e,t){await E(e,{deleteTypeIndexes:!0,user:t})}return{recursiveDelete:E,deleteResourceAndTypeIndexIfExists:D,fetchMetadata:S,fetchMetadataWithDelete:w,fetchContentAndMetadata:C,createContainer:l,isContainer:u,getContainerMembers:f,getContainerMemberCount:d,getContainerIndexThing:p,containerHasIndexDocument:m,isStorageRoot:h,isHiddenFile:g,isWebId:_}}exports.createResourceLogic=a;
1
+ const e=require("../util/ns.cjs.js"),t=require("../acl/aclLogic.cjs.js"),n=require("./resourceHttp.cjs.js"),r=require("./resourceMetadata.cjs.js");let i=require("rdflib");function a(a,o,s,c){function l(e){return s.createContainer(e)}function u(e){return s.isContainer(e)}function d(e){return s.getContainerMemberCount(e)}function f(e){return s.getContainerElements(e)}function p(e){let t=e.uri.endsWith(`/`)?e.uri:`${e.uri}/`;return a.sym(`${t}index.ttl#this`)}function m(t){return a.holds(t,e.ns.ldp(`contains`),p(t).doc())}function h(t){return a.holds(t,e.ns.rdf(`type`),e.ns.space(`Storage`),t.doc())}function g(e){let t=e.dir();if(!t)return!1;let n=e.uri.slice(t.uri.length);return n.startsWith(`.`)||n.endsWith(`.acl`)||n.endsWith(`.meta`)||n.endsWith(`~`)}function _(e,t){let n=a.findTypeURIs(e),r=t.toLowerCase(),o=i.Util.mediaTypeClass(`${r}/*`).uri.split(`*`)[0];return Object.keys(n).some(e=>e.startsWith(o))||{audio:`http://purl.org/dc/dcmitype/Sound`,image:`http://purl.org/dc/dcmitype/Image`,video:`http://purl.org/dc/dcmitype/MovingImage`}[r]in n?!0:(a.fetcher.getHeader(e,`content-type`)||[]).some(e=>e.split(`;`,1)[0].trim().toLowerCase().startsWith(`${r}/`))}function v(e){return _(e,`image`)}function y(e){return _(e,`audio`)}function b(e){return _(e,`video`)}function x(e){let t=typeof e==`string`?e:e.value;try{let e=new URL(t);return e.hash===`#me`&&/\/profile\/card\.ttl$/.test(e.pathname)}catch{return!1}}function S(n,i){let o,s=!1,c=!1,l=!1,u=!1,d,f;if(i.headers){o=i.headers.get(`content-type`)?.split(`;`)[0]??void 0;let t=r.readWacAccessInfo(i.headers.get(`wac-allow`));s=t.canEdit,c=t.canManageAccess,l=t.isPublic,u=t.isPublicKnown,d=i.headers.get(`etag`)??void 0,f=a.anyValue(n,e.ns.dct(`modified`))||a.anyValue(n,e.ns.dc(`modified`))||void 0}(!i.headers||!i.headers.get(`content-type`))&&(!i.headers||!i.headers.get(`wac-allow`)||!i.headers.get(`etag`))&&a.each(null,a.sym(`http://www.w3.org/2007/ont/link#requestedURI`),n).map(t=>{let i=a.any(t,a.sym(`http://www.w3.org/2007/ont/link#response`));if(i&&i.termType===`NamedNode`){let t=a.anyValue(i,e.ns.httph(`content-type`))||void 0;o===void 0&&(o=t);let p=a.anyValue(i,e.ns.httph(`wac-allow`))||a.anyValue(i,e.ns.httph(`WAC-Allow`)),m=r.readWacAccessInfo(p);s||=m.canEdit,c||=m.canManageAccess,l||=m.isPublic,u||=m.isPublicKnown;let h=a.anyValue(i,e.ns.httph(`etag`))||void 0;d===void 0&&(d=h),f=a.anyValue(n,e.ns.dct(`modified`))||a.anyValue(n,e.ns.dc(`modified`))||void 0}});let p=a.any(n,t.ACL_LINK)?.value||void 0;return{contentType:o,access:{canEdit:s,canManageAccess:c,isPublic:l,isPublicKnown:u},aclUri:p,eTag:d,modified:f}}async function C(e){let t=await a.fetcher.webOperation(`HEAD`,e.uri);return n.assertSuccessfulHttpResponse(t,`HEAD`),S(e,t)}async function w(t){let n=a.any(t,e.ns.ldp(`contains`))||t.dir();if(!n||n.termType!==`NamedNode`)return!1;try{return(await C(n)).access.canEdit}catch{return!1}}async function T(e){return w(e)}async function E(e){return C(e)}async function D(e){try{let t=await a.fetcher.webOperation(`GET`,e.uri);n.assertSuccessfulHttpResponse(t,`GET`);let r=t.responseText;if(r===void 0)throw Error(`No text in response object`);let i=S(e,t);if(!i.contentType)throw Error(`No content-type available`);return{content:r,metadata:i}}catch(e){throw Error(`Error reading file: ${e instanceof Error?e.message:String(e)}`)}}async function O(e){let t;try{t=await C(e)}catch{t={contentType:void 0,access:{canEdit:!1,canManageAccess:!1,isPublic:!1},aclUri:void 0,eTag:void 0,modified:void 0}}let n=await T(e),r={canEdit:t.access?.canEdit??!1,canManageAccess:t.access?.canManageAccess??!1,isPublic:t.access?.isPublic??!1,isPublicKnown:t.access?.isPublicKnown??!1,canDelete:n};return{...t,access:r}}async function k(e,t){if(t)try{await c.deleteTypeIndexRegistrationForResource(e,t)}catch{}}async function A(t,r={}){let o=t.dir();if(u(t)){let e=await s.getContainerMembers(t);await Promise.all(e.map(e=>A((0,i.sym)(e),r)))}let c;try{c=await a.fetcher._fetch(t.value,{method:`DELETE`}),n.assertSuccessfulHttpResponse(c,`DELETE`,{allowNotFound:!0})}catch(e){if(!n.isMissingError(e))throw e}return r.deleteTypeIndexes&&await k(t,r.user),o&&a.removeMatches(o,e.ns.ldp(`contains`),t,o.doc()),a.removeDocument(t),a.fetcher.unload(t.doc()),c}async function j(e,t){await A(e,{deleteTypeIndexes:!0,user:t})}return{recursiveDelete:A,deleteResourceAndTypeIndexIfExists:j,fetchMetadata:E,fetchMetadataWithDelete:O,fetchContentAndMetadata:D,createContainer:l,isContainer:u,getContainerMembers:f,getContainerMemberCount:d,getContainerIndexThing:p,containerHasIndexDocument:m,isStorageRoot:h,isHiddenFile:g,isMediaType:_,isImage:v,isAudio:y,isVideo:b,isWebId:x}}exports.createResourceLogic=a;
2
2
  //# sourceMappingURL=resourceLogic.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceLogic.cjs.js","names":["ns","readWacAccessInfo","ACL_LINK","sym","isMissingError","require_ns","require_aclLogic","require_resourceHttp","require_resourceMetadata","rdflib","createResourceLogic","createContainer","containerLogic","url","isContainer","resourceNode","getContainerMemberCount","getContainerMembers","getContainerIndexThing","folderUri","containerNode","store","containerHasIndexDocument","isStorageRoot","isHiddenFile","directory","pathEnd","isWebId","uri","resource","parsed","readMetadata","contentType","canEdit","canManageAccess","isPublic","isPublicKnown","eTag","modified","response","accessFlags","subject","responseNode","req","responseContentType","wacAllow","responseETag","aclUri","fetchHeadMetadata","userCanWriteToContainingContainer","userCanDeleteResource","fetchMetadata","fetchContentAndMetadata","content","metadata","error","fetchMetadataWithDelete","resourceMetadata","canDelete","access","deleteTypeIndexesForResource","user","typeIndexLogic","recursiveDelete","resourceParent","containerMembers","options","deleted","deleteResourceAndTypeIndexIfExists"],"sources":["../../src/resource/resourceLogic.ts"],"sourcesContent":["import { NamedNode, sym } from 'rdflib'\nimport { ACL_LINK } from '../acl/aclLogic'\nimport { ns } from '../util/ns'\nimport { assertSuccessfulHttpResponse, isMissingError } from './resourceHttp'\nimport { readWacAccessInfo } from './resourceMetadata'\nimport { type ResourceAccess, type ResourceAccessWithDelete, type ResourceContent, type ResourceDeleteOptions, type ResourceLogic, type ResourceMetadata, type ResourceMetadataWithDelete, type TypeIndexLogic } from '../types'\nimport type { AclLogic } from '../types'\n\nexport function createResourceLogic(store, aclLogic: AclLogic, containerLogic, typeIndexLogic: TypeIndexLogic): ResourceLogic {\n function createContainer(url: string) {\n return containerLogic.createContainer(url)\n }\n\n function isContainer(resourceNode: NamedNode) {\n return containerLogic.isContainer(resourceNode)\n }\n\n function getContainerMemberCount(resourceNode: NamedNode) {\n return containerLogic.getContainerMemberCount(resourceNode)\n }\n\n function getContainerMembers(resourceNode: NamedNode) {\n return containerLogic.getContainerElements(resourceNode)\n }\n\n function getContainerIndexThing(containerNode: NamedNode) {\n const folderUri = containerNode.uri.endsWith('/') ? containerNode.uri : `${containerNode.uri}/`\n return store.sym(`${folderUri}index.ttl#this`)\n }\n\n function containerHasIndexDocument(containerNode: NamedNode) {\n return store.holds(\n containerNode,\n ns.ldp('contains'),\n getContainerIndexThing(containerNode).doc()\n )\n }\n\n function isStorageRoot(resourceNode: NamedNode) {\n return store.holds(\n resourceNode,\n ns.rdf('type'),\n ns.space('Storage'),\n resourceNode.doc()\n )\n }\n\n function isHiddenFile(resourceNode: NamedNode) {\n const directory = resourceNode.dir()\n if (!directory) {\n return false\n }\n\n const pathEnd = resourceNode.uri.slice(directory.uri.length)\n return pathEnd.startsWith('.') || pathEnd.endsWith('.acl') || pathEnd.endsWith('.meta') || pathEnd.endsWith('~')\n }\n\n function isWebId(resource: string | NamedNode) {\n const uri = typeof resource === 'string' ? resource : resource.value\n\n try {\n const parsed = new URL(uri)\n return parsed.hash === '#me' && /\\/profile\\/card\\.ttl$/.test(parsed.pathname)\n } catch (_error) {\n return false\n }\n }\n\n function readMetadata(subject: NamedNode, response: Response): ResourceMetadata {\n let contentType: string | undefined\n let canEdit = false\n let canManageAccess = false\n let isPublic = false\n let isPublicKnown = false\n let eTag: string | undefined\n let modified: string | undefined\n\n if (response.headers) {\n const contentTypeHeader = response.headers.get('content-type')\n contentType = contentTypeHeader?.split(';')[0] ?? undefined\n\n const accessFlags = readWacAccessInfo(response.headers.get('wac-allow'))\n canEdit = accessFlags.canEdit\n canManageAccess = accessFlags.canManageAccess\n isPublic = accessFlags.isPublic\n isPublicKnown = accessFlags.isPublicKnown\n eTag = response.headers.get('etag') ?? undefined\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n\n if ((!response.headers || !response.headers.get('content-type')) && (!response.headers || !response.headers.get('wac-allow') || !response.headers.get('etag'))) {\n const reqs = store.each(\n null,\n store.sym('http://www.w3.org/2007/ont/link#requestedURI'),\n subject\n )\n reqs.map((req: any) => {\n const responseNode = store.any(\n req as any,\n store.sym('http://www.w3.org/2007/ont/link#response')\n )\n if (responseNode && responseNode.termType === 'NamedNode') {\n const responseContentType = store.anyValue(responseNode as any, ns.httph('content-type')) || undefined\n if (contentType === undefined) {\n contentType = responseContentType\n }\n const wacAllow = (store.anyValue(responseNode as any, ns.httph('wac-allow')) as string | undefined) ||\n (store.anyValue(responseNode as any, ns.httph('WAC-Allow')) as string | undefined)\n const accessFlags = readWacAccessInfo(wacAllow)\n canEdit = canEdit || accessFlags.canEdit\n canManageAccess = canManageAccess || accessFlags.canManageAccess\n isPublic = isPublic || accessFlags.isPublic\n isPublicKnown = isPublicKnown || accessFlags.isPublicKnown\n const responseETag = store.anyValue(responseNode as any, ns.httph('etag')) || undefined\n if (eTag === undefined) {\n eTag = responseETag\n }\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n })\n }\n\n const aclUri = store.any(subject, ACL_LINK)?.value || undefined\n const access: ResourceAccess = { canEdit, canManageAccess, isPublic, isPublicKnown }\n return { contentType, access, aclUri, eTag, modified }\n }\n\n async function fetchHeadMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n const response = await store.fetcher.webOperation('HEAD', subject.uri)\n assertSuccessfulHttpResponse(response, 'HEAD')\n return readMetadata(subject, response)\n }\n\n async function userCanWriteToContainingContainer(resourceNode: NamedNode): Promise<boolean> {\n const containerNode = store.any(resourceNode, ns.ldp('contains')) || resourceNode.dir()\n if (!containerNode || containerNode.termType !== 'NamedNode') {\n return false\n }\n\n try {\n const containerMetadata = await fetchHeadMetadata(containerNode as NamedNode)\n return containerMetadata.access.canEdit\n } catch (_error) {\n return false\n }\n }\n\n async function userCanDeleteResource(resourceNode: NamedNode): Promise<boolean> {\n return userCanWriteToContainingContainer(resourceNode)\n }\n\n async function fetchMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n return fetchHeadMetadata(subject)\n }\n\n async function fetchContentAndMetadata(subject: NamedNode): Promise<ResourceContent> {\n try {\n const response = await store.fetcher.webOperation('GET', subject.uri)\n assertSuccessfulHttpResponse(response, 'GET')\n\n const content = (response as Response & { responseText?: string }).responseText\n if (content === undefined) {\n throw new Error('No text in response object')\n }\n\n const metadata = readMetadata(subject, response)\n if (!metadata.contentType) {\n throw new Error('No content-type available')\n }\n\n return { content, metadata }\n } catch (error) {\n throw new Error(`Error reading file: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n async function fetchMetadataWithDelete(subject: NamedNode): Promise<ResourceMetadataWithDelete> {\n let resourceMetadata: ResourceMetadata\n\n try {\n resourceMetadata = await fetchHeadMetadata(subject)\n } catch (_error) {\n resourceMetadata = {\n contentType: undefined,\n access: { canEdit: false, canManageAccess: false, isPublic: false },\n aclUri: undefined,\n eTag: undefined,\n modified: undefined\n }\n }\n\n const canDelete = await userCanDeleteResource(subject)\n const access: ResourceAccessWithDelete = {\n canEdit: resourceMetadata.access?.canEdit ?? false,\n canManageAccess: resourceMetadata.access?.canManageAccess ?? false,\n isPublic: resourceMetadata.access?.isPublic ?? false,\n isPublicKnown: resourceMetadata.access?.isPublicKnown ?? false,\n canDelete\n }\n return { ...resourceMetadata, access }\n }\n\n async function deleteTypeIndexesForResource(resourceNode: NamedNode, user?: NamedNode | null) {\n if (!user) return\n\n try {\n await typeIndexLogic.deleteTypeIndexRegistrationForResource(resourceNode, user)\n } catch (_error) {\n // Keep resource deletion best-effort even if type-index cleanup fails.\n }\n }\n\n async function recursiveDelete(resourceNode: NamedNode, options: ResourceDeleteOptions = {}) {\n const resourceParent = resourceNode.dir()\n\n if (isContainer(resourceNode)) {\n const containerMembers = await containerLogic.getContainerMembers(resourceNode)\n await Promise.all(containerMembers.map((url) => recursiveDelete(sym(url), options)))\n }\n\n let deleted\n try {\n deleted = await store.fetcher._fetch(resourceNode.value, { method: 'DELETE' })\n assertSuccessfulHttpResponse(deleted, 'DELETE', { allowNotFound: true })\n } catch (error) {\n if (!isMissingError(error)) {\n throw error\n }\n }\n\n if (options.deleteTypeIndexes) {\n await deleteTypeIndexesForResource(resourceNode, options.user)\n }\n\n if (resourceParent) {\n store.removeMatches(resourceParent, ns.ldp('contains'), resourceNode, resourceParent.doc())\n }\n\n store.removeDocument(resourceNode)\n store.fetcher.unload(resourceNode.doc())\n return deleted\n }\n\n async function deleteResourceAndTypeIndexIfExists(resourceNode: NamedNode, user?: NamedNode | null) {\n await recursiveDelete(resourceNode, { deleteTypeIndexes: true, user })\n }\n\n return {\n recursiveDelete,\n deleteResourceAndTypeIndexIfExists,\n fetchMetadata,\n fetchMetadataWithDelete,\n fetchContentAndMetadata,\n createContainer,\n isContainer,\n getContainerMembers,\n getContainerMemberCount,\n getContainerIndexThing,\n containerHasIndexDocument,\n isStorageRoot,\n isHiddenFile,\n isWebId\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resourceLogic.cjs.js","names":["ns","Util","readWacAccessInfo","ACL_LINK","sym","isMissingError","require_ns","require_aclLogic","require_resourceHttp","require_resourceMetadata","rdflib","createResourceLogic","createContainer","containerLogic","url","isContainer","resourceNode","getContainerMemberCount","getContainerMembers","getContainerIndexThing","folderUri","containerNode","store","containerHasIndexDocument","isStorageRoot","isHiddenFile","directory","pathEnd","isMediaType","typeURIs","normalizedMediaType","mediaType","mediaTypePrefix","typeURI","contentType","isImage","isAudio","isVideo","isWebId","uri","resource","parsed","readMetadata","canEdit","canManageAccess","isPublic","isPublicKnown","eTag","modified","response","accessFlags","subject","responseNode","req","responseContentType","wacAllow","responseETag","aclUri","fetchHeadMetadata","userCanWriteToContainingContainer","userCanDeleteResource","fetchMetadata","fetchContentAndMetadata","content","metadata","error","fetchMetadataWithDelete","resourceMetadata","canDelete","access","deleteTypeIndexesForResource","user","typeIndexLogic","recursiveDelete","resourceParent","containerMembers","options","deleted","deleteResourceAndTypeIndexIfExists"],"sources":["../../src/resource/resourceLogic.ts"],"sourcesContent":["import { NamedNode, sym, Util } from 'rdflib'\nimport { ACL_LINK } from '../acl/aclLogic'\nimport { ns } from '../util/ns'\nimport { assertSuccessfulHttpResponse, isMissingError } from './resourceHttp'\nimport { readWacAccessInfo } from './resourceMetadata'\nimport { type ResourceAccess, type ResourceAccessWithDelete, type ResourceContent, type ResourceDeleteOptions, type ResourceLogic, type ResourceMetadata, type ResourceMetadataWithDelete, type TypeIndexLogic } from '../types'\nimport type { AclLogic } from '../types'\n\nexport function createResourceLogic(store, aclLogic: AclLogic, containerLogic, typeIndexLogic: TypeIndexLogic): ResourceLogic {\n function createContainer(url: string) {\n return containerLogic.createContainer(url)\n }\n\n function isContainer(resourceNode: NamedNode) {\n return containerLogic.isContainer(resourceNode)\n }\n\n function getContainerMemberCount(resourceNode: NamedNode) {\n return containerLogic.getContainerMemberCount(resourceNode)\n }\n\n function getContainerMembers(resourceNode: NamedNode) {\n return containerLogic.getContainerElements(resourceNode)\n }\n\n function getContainerIndexThing(containerNode: NamedNode) {\n const folderUri = containerNode.uri.endsWith('/') ? containerNode.uri : `${containerNode.uri}/`\n return store.sym(`${folderUri}index.ttl#this`)\n }\n\n function containerHasIndexDocument(containerNode: NamedNode) {\n return store.holds(\n containerNode,\n ns.ldp('contains'),\n getContainerIndexThing(containerNode).doc()\n )\n }\n\n function isStorageRoot(resourceNode: NamedNode) {\n return store.holds(\n resourceNode,\n ns.rdf('type'),\n ns.space('Storage'),\n resourceNode.doc()\n )\n }\n\n function isHiddenFile(resourceNode: NamedNode) {\n const directory = resourceNode.dir()\n if (!directory) {\n return false\n }\n\n const pathEnd = resourceNode.uri.slice(directory.uri.length)\n return pathEnd.startsWith('.') || pathEnd.endsWith('.acl') || pathEnd.endsWith('.meta') || pathEnd.endsWith('~')\n }\n\n function isMediaType(resourceNode: NamedNode, mediaType: string) {\n const typeURIs = store.findTypeURIs(resourceNode as any)\n const normalizedMediaType = mediaType.toLowerCase()\n const mediaTypePrefix = Util.mediaTypeClass(`${normalizedMediaType}/*`).uri.split('*')[0]\n\n if (Object.keys(typeURIs).some(typeURI => typeURI.startsWith(mediaTypePrefix))) {\n return true\n }\n\n const mediaTypeClasses: Record<string, string> = {\n audio: 'http://purl.org/dc/dcmitype/Sound',\n image: 'http://purl.org/dc/dcmitype/Image',\n video: 'http://purl.org/dc/dcmitype/MovingImage'\n }\n if (mediaTypeClasses[normalizedMediaType] in typeURIs) {\n return true\n }\n\n const contentTypes = store.fetcher.getHeader(resourceNode, 'content-type') || []\n return contentTypes.some((contentType: string) =>\n contentType.split(';', 1)[0].trim().toLowerCase().startsWith(`${normalizedMediaType}/`)\n )\n }\n\n function isImage(resourceNode: NamedNode) {\n return isMediaType(resourceNode, 'image')\n }\n\n function isAudio(resourceNode: NamedNode) {\n return isMediaType(resourceNode, 'audio')\n }\n\n function isVideo(resourceNode: NamedNode) {\n return isMediaType(resourceNode, 'video')\n }\n\n function isWebId(resource: string | NamedNode) {\n const uri = typeof resource === 'string' ? resource : resource.value\n\n try {\n const parsed = new URL(uri)\n return parsed.hash === '#me' && /\\/profile\\/card\\.ttl$/.test(parsed.pathname)\n } catch (_error) {\n return false\n }\n }\n\n function readMetadata(subject: NamedNode, response: Response): ResourceMetadata {\n let contentType: string | undefined\n let canEdit = false\n let canManageAccess = false\n let isPublic = false\n let isPublicKnown = false\n let eTag: string | undefined\n let modified: string | undefined\n\n if (response.headers) {\n const contentTypeHeader = response.headers.get('content-type')\n contentType = contentTypeHeader?.split(';')[0] ?? undefined\n\n const accessFlags = readWacAccessInfo(response.headers.get('wac-allow'))\n canEdit = accessFlags.canEdit\n canManageAccess = accessFlags.canManageAccess\n isPublic = accessFlags.isPublic\n isPublicKnown = accessFlags.isPublicKnown\n eTag = response.headers.get('etag') ?? undefined\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n\n if ((!response.headers || !response.headers.get('content-type')) && (!response.headers || !response.headers.get('wac-allow') || !response.headers.get('etag'))) {\n const reqs = store.each(\n null,\n store.sym('http://www.w3.org/2007/ont/link#requestedURI'),\n subject\n )\n reqs.map((req: any) => {\n const responseNode = store.any(\n req as any,\n store.sym('http://www.w3.org/2007/ont/link#response')\n )\n if (responseNode && responseNode.termType === 'NamedNode') {\n const responseContentType = store.anyValue(responseNode as any, ns.httph('content-type')) || undefined\n if (contentType === undefined) {\n contentType = responseContentType\n }\n const wacAllow = (store.anyValue(responseNode as any, ns.httph('wac-allow')) as string | undefined) ||\n (store.anyValue(responseNode as any, ns.httph('WAC-Allow')) as string | undefined)\n const accessFlags = readWacAccessInfo(wacAllow)\n canEdit = canEdit || accessFlags.canEdit\n canManageAccess = canManageAccess || accessFlags.canManageAccess\n isPublic = isPublic || accessFlags.isPublic\n isPublicKnown = isPublicKnown || accessFlags.isPublicKnown\n const responseETag = store.anyValue(responseNode as any, ns.httph('etag')) || undefined\n if (eTag === undefined) {\n eTag = responseETag\n }\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n })\n }\n\n const aclUri = store.any(subject, ACL_LINK)?.value || undefined\n const access: ResourceAccess = { canEdit, canManageAccess, isPublic, isPublicKnown }\n return { contentType, access, aclUri, eTag, modified }\n }\n\n async function fetchHeadMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n const response = await store.fetcher.webOperation('HEAD', subject.uri)\n assertSuccessfulHttpResponse(response, 'HEAD')\n return readMetadata(subject, response)\n }\n\n async function userCanWriteToContainingContainer(resourceNode: NamedNode): Promise<boolean> {\n const containerNode = store.any(resourceNode, ns.ldp('contains')) || resourceNode.dir()\n if (!containerNode || containerNode.termType !== 'NamedNode') {\n return false\n }\n\n try {\n const containerMetadata = await fetchHeadMetadata(containerNode as NamedNode)\n return containerMetadata.access.canEdit\n } catch (_error) {\n return false\n }\n }\n\n async function userCanDeleteResource(resourceNode: NamedNode): Promise<boolean> {\n return userCanWriteToContainingContainer(resourceNode)\n }\n\n async function fetchMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n return fetchHeadMetadata(subject)\n }\n\n async function fetchContentAndMetadata(subject: NamedNode): Promise<ResourceContent> {\n try {\n const response = await store.fetcher.webOperation('GET', subject.uri)\n assertSuccessfulHttpResponse(response, 'GET')\n\n const content = (response as Response & { responseText?: string }).responseText\n if (content === undefined) {\n throw new Error('No text in response object')\n }\n\n const metadata = readMetadata(subject, response)\n if (!metadata.contentType) {\n throw new Error('No content-type available')\n }\n\n return { content, metadata }\n } catch (error) {\n throw new Error(`Error reading file: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n async function fetchMetadataWithDelete(subject: NamedNode): Promise<ResourceMetadataWithDelete> {\n let resourceMetadata: ResourceMetadata\n\n try {\n resourceMetadata = await fetchHeadMetadata(subject)\n } catch (_error) {\n resourceMetadata = {\n contentType: undefined,\n access: { canEdit: false, canManageAccess: false, isPublic: false },\n aclUri: undefined,\n eTag: undefined,\n modified: undefined\n }\n }\n\n const canDelete = await userCanDeleteResource(subject)\n const access: ResourceAccessWithDelete = {\n canEdit: resourceMetadata.access?.canEdit ?? false,\n canManageAccess: resourceMetadata.access?.canManageAccess ?? false,\n isPublic: resourceMetadata.access?.isPublic ?? false,\n isPublicKnown: resourceMetadata.access?.isPublicKnown ?? false,\n canDelete\n }\n return { ...resourceMetadata, access }\n }\n\n async function deleteTypeIndexesForResource(resourceNode: NamedNode, user?: NamedNode | null) {\n if (!user) return\n\n try {\n await typeIndexLogic.deleteTypeIndexRegistrationForResource(resourceNode, user)\n } catch (_error) {\n // Keep resource deletion best-effort even if type-index cleanup fails.\n }\n }\n\n async function recursiveDelete(resourceNode: NamedNode, options: ResourceDeleteOptions = {}) {\n const resourceParent = resourceNode.dir()\n\n if (isContainer(resourceNode)) {\n const containerMembers = await containerLogic.getContainerMembers(resourceNode)\n await Promise.all(containerMembers.map((url) => recursiveDelete(sym(url), options)))\n }\n\n let deleted\n try {\n deleted = await store.fetcher._fetch(resourceNode.value, { method: 'DELETE' })\n assertSuccessfulHttpResponse(deleted, 'DELETE', { allowNotFound: true })\n } catch (error) {\n if (!isMissingError(error)) {\n throw error\n }\n }\n\n if (options.deleteTypeIndexes) {\n await deleteTypeIndexesForResource(resourceNode, options.user)\n }\n\n if (resourceParent) {\n store.removeMatches(resourceParent, ns.ldp('contains'), resourceNode, resourceParent.doc())\n }\n\n store.removeDocument(resourceNode)\n store.fetcher.unload(resourceNode.doc())\n return deleted\n }\n\n async function deleteResourceAndTypeIndexIfExists(resourceNode: NamedNode, user?: NamedNode | null) {\n await recursiveDelete(resourceNode, { deleteTypeIndexes: true, user })\n }\n\n return {\n recursiveDelete,\n deleteResourceAndTypeIndexIfExists,\n fetchMetadata,\n fetchMetadataWithDelete,\n fetchContentAndMetadata,\n createContainer,\n isContainer,\n getContainerMembers,\n getContainerMemberCount,\n getContainerIndexThing,\n containerHasIndexDocument,\n isStorageRoot,\n isHiddenFile,\n isMediaType,\n isImage,\n isAudio,\n isVideo,\n isWebId\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resourceLogic.d.ts","sourceRoot":"","sources":["../../src/resource/resourceLogic.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwG,KAAK,aAAa,EAA0D,KAAK,cAAc,EAAE,MAAM,UAAU,CAAA;AAChO,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,wBAAgB,mBAAmB,CAAC,KAAK,KAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,KAAA,EAAE,cAAc,EAAE,cAAc,GAAG,aAAa,CA+P5H"}
1
+ {"version":3,"file":"resourceLogic.d.ts","sourceRoot":"","sources":["../../src/resource/resourceLogic.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwG,KAAK,aAAa,EAA0D,KAAK,cAAc,EAAE,MAAM,UAAU,CAAA;AAChO,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,wBAAgB,mBAAmB,CAAC,KAAK,KAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,KAAA,EAAE,cAAc,EAAE,cAAc,GAAG,aAAa,CAuS5H"}
@@ -2,38 +2,55 @@ import { ns as e } from "../util/ns.esm.js";
2
2
  import { ACL_LINK as t } from "../acl/aclLogic.esm.js";
3
3
  import { assertSuccessfulHttpResponse as n, isMissingError as r } from "./resourceHttp.esm.js";
4
4
  import { readWacAccessInfo as i } from "./resourceMetadata.esm.js";
5
- import { sym as a } from "rdflib";
5
+ import { Util as a, sym as o } from "rdflib";
6
6
  //#region src/resource/resourceLogic.ts
7
- function o(o, s, c, l) {
8
- function u(e) {
9
- return c.createContainer(e);
10
- }
7
+ function s(s, c, l, u) {
11
8
  function d(e) {
12
- return c.isContainer(e);
9
+ return l.createContainer(e);
13
10
  }
14
11
  function f(e) {
15
- return c.getContainerMemberCount(e);
12
+ return l.isContainer(e);
16
13
  }
17
14
  function p(e) {
18
- return c.getContainerElements(e);
15
+ return l.getContainerMemberCount(e);
19
16
  }
20
17
  function m(e) {
21
- let t = e.uri.endsWith("/") ? e.uri : `${e.uri}/`;
22
- return o.sym(`${t}index.ttl#this`);
18
+ return l.getContainerElements(e);
23
19
  }
24
- function h(t) {
25
- return o.holds(t, e.ldp("contains"), m(t).doc());
20
+ function h(e) {
21
+ let t = e.uri.endsWith("/") ? e.uri : `${e.uri}/`;
22
+ return s.sym(`${t}index.ttl#this`);
26
23
  }
27
24
  function g(t) {
28
- return o.holds(t, e.rdf("type"), e.space("Storage"), t.doc());
25
+ return s.holds(t, e.ldp("contains"), h(t).doc());
29
26
  }
30
- function _(e) {
27
+ function _(t) {
28
+ return s.holds(t, e.rdf("type"), e.space("Storage"), t.doc());
29
+ }
30
+ function v(e) {
31
31
  let t = e.dir();
32
32
  if (!t) return !1;
33
33
  let n = e.uri.slice(t.uri.length);
34
34
  return n.startsWith(".") || n.endsWith(".acl") || n.endsWith(".meta") || n.endsWith("~");
35
35
  }
36
- function v(e) {
36
+ function y(e, t) {
37
+ let n = s.findTypeURIs(e), r = t.toLowerCase(), i = a.mediaTypeClass(`${r}/*`).uri.split("*")[0];
38
+ return Object.keys(n).some((e) => e.startsWith(i)) || {
39
+ audio: "http://purl.org/dc/dcmitype/Sound",
40
+ image: "http://purl.org/dc/dcmitype/Image",
41
+ video: "http://purl.org/dc/dcmitype/MovingImage"
42
+ }[r] in n ? !0 : (s.fetcher.getHeader(e, "content-type") || []).some((e) => e.split(";", 1)[0].trim().toLowerCase().startsWith(`${r}/`));
43
+ }
44
+ function b(e) {
45
+ return y(e, "image");
46
+ }
47
+ function x(e) {
48
+ return y(e, "audio");
49
+ }
50
+ function S(e) {
51
+ return y(e, "video");
52
+ }
53
+ function C(e) {
37
54
  let t = typeof e == "string" ? e : e.value;
38
55
  try {
39
56
  let e = new URL(t);
@@ -42,29 +59,29 @@ function o(o, s, c, l) {
42
59
  return !1;
43
60
  }
44
61
  }
45
- function y(n, r) {
46
- let a, s = !1, c = !1, l = !1, u = !1, d, f;
62
+ function w(n, r) {
63
+ let a, o = !1, c = !1, l = !1, u = !1, d, f;
47
64
  if (r.headers) {
48
65
  a = r.headers.get("content-type")?.split(";")[0] ?? void 0;
49
66
  let t = i(r.headers.get("wac-allow"));
50
- s = t.canEdit, c = t.canManageAccess, l = t.isPublic, u = t.isPublicKnown, d = r.headers.get("etag") ?? void 0, f = o.anyValue(n, e.dct("modified")) || o.anyValue(n, e.dc("modified")) || void 0;
67
+ o = t.canEdit, c = t.canManageAccess, l = t.isPublic, u = t.isPublicKnown, d = r.headers.get("etag") ?? void 0, f = s.anyValue(n, e.dct("modified")) || s.anyValue(n, e.dc("modified")) || void 0;
51
68
  }
52
- (!r.headers || !r.headers.get("content-type")) && (!r.headers || !r.headers.get("wac-allow") || !r.headers.get("etag")) && o.each(null, o.sym("http://www.w3.org/2007/ont/link#requestedURI"), n).map((t) => {
53
- let r = o.any(t, o.sym("http://www.w3.org/2007/ont/link#response"));
69
+ (!r.headers || !r.headers.get("content-type")) && (!r.headers || !r.headers.get("wac-allow") || !r.headers.get("etag")) && s.each(null, s.sym("http://www.w3.org/2007/ont/link#requestedURI"), n).map((t) => {
70
+ let r = s.any(t, s.sym("http://www.w3.org/2007/ont/link#response"));
54
71
  if (r && r.termType === "NamedNode") {
55
- let t = o.anyValue(r, e.httph("content-type")) || void 0;
72
+ let t = s.anyValue(r, e.httph("content-type")) || void 0;
56
73
  a === void 0 && (a = t);
57
- let p = o.anyValue(r, e.httph("wac-allow")) || o.anyValue(r, e.httph("WAC-Allow")), m = i(p);
58
- s ||= m.canEdit, c ||= m.canManageAccess, l ||= m.isPublic, u ||= m.isPublicKnown;
59
- let h = o.anyValue(r, e.httph("etag")) || void 0;
60
- d === void 0 && (d = h), f = o.anyValue(n, e.dct("modified")) || o.anyValue(n, e.dc("modified")) || void 0;
74
+ let p = s.anyValue(r, e.httph("wac-allow")) || s.anyValue(r, e.httph("WAC-Allow")), m = i(p);
75
+ o ||= m.canEdit, c ||= m.canManageAccess, l ||= m.isPublic, u ||= m.isPublicKnown;
76
+ let h = s.anyValue(r, e.httph("etag")) || void 0;
77
+ d === void 0 && (d = h), f = s.anyValue(n, e.dct("modified")) || s.anyValue(n, e.dc("modified")) || void 0;
61
78
  }
62
79
  });
63
- let p = o.any(n, t)?.value || void 0;
80
+ let p = s.any(n, t)?.value || void 0;
64
81
  return {
65
82
  contentType: a,
66
83
  access: {
67
- canEdit: s,
84
+ canEdit: o,
68
85
  canManageAccess: c,
69
86
  isPublic: l,
70
87
  isPublicKnown: u
@@ -74,32 +91,32 @@ function o(o, s, c, l) {
74
91
  modified: f
75
92
  };
76
93
  }
77
- async function b(e) {
78
- let t = await o.fetcher.webOperation("HEAD", e.uri);
79
- return n(t, "HEAD"), y(e, t);
94
+ async function T(e) {
95
+ let t = await s.fetcher.webOperation("HEAD", e.uri);
96
+ return n(t, "HEAD"), w(e, t);
80
97
  }
81
- async function x(t) {
82
- let n = o.any(t, e.ldp("contains")) || t.dir();
98
+ async function E(t) {
99
+ let n = s.any(t, e.ldp("contains")) || t.dir();
83
100
  if (!n || n.termType !== "NamedNode") return !1;
84
101
  try {
85
- return (await b(n)).access.canEdit;
102
+ return (await T(n)).access.canEdit;
86
103
  } catch {
87
104
  return !1;
88
105
  }
89
106
  }
90
- async function S(e) {
91
- return x(e);
107
+ async function D(e) {
108
+ return E(e);
92
109
  }
93
- async function C(e) {
94
- return b(e);
110
+ async function O(e) {
111
+ return T(e);
95
112
  }
96
- async function w(e) {
113
+ async function k(e) {
97
114
  try {
98
- let t = await o.fetcher.webOperation("GET", e.uri);
115
+ let t = await s.fetcher.webOperation("GET", e.uri);
99
116
  n(t, "GET");
100
117
  let r = t.responseText;
101
118
  if (r === void 0) throw Error("No text in response object");
102
- let i = y(e, t);
119
+ let i = w(e, t);
103
120
  if (!i.contentType) throw Error("No content-type available");
104
121
  return {
105
122
  content: r,
@@ -109,10 +126,10 @@ function o(o, s, c, l) {
109
126
  throw Error(`Error reading file: ${e instanceof Error ? e.message : String(e)}`);
110
127
  }
111
128
  }
112
- async function T(e) {
129
+ async function A(e) {
113
130
  let t;
114
131
  try {
115
- t = await b(e);
132
+ t = await T(e);
116
133
  } catch {
117
134
  t = {
118
135
  contentType: void 0,
@@ -126,7 +143,7 @@ function o(o, s, c, l) {
126
143
  modified: void 0
127
144
  };
128
145
  }
129
- let n = await S(e), r = {
146
+ let n = await D(e), r = {
130
147
  canEdit: t.access?.canEdit ?? !1,
131
148
  canManageAccess: t.access?.canManageAccess ?? !1,
132
149
  isPublic: t.access?.isPublic ?? !1,
@@ -138,49 +155,53 @@ function o(o, s, c, l) {
138
155
  access: r
139
156
  };
140
157
  }
141
- async function E(e, t) {
158
+ async function j(e, t) {
142
159
  if (t) try {
143
- await l.deleteTypeIndexRegistrationForResource(e, t);
160
+ await u.deleteTypeIndexRegistrationForResource(e, t);
144
161
  } catch {}
145
162
  }
146
- async function D(t, i = {}) {
147
- let s = t.dir();
148
- if (d(t)) {
149
- let e = await c.getContainerMembers(t);
150
- await Promise.all(e.map((e) => D(a(e), i)));
163
+ async function M(t, i = {}) {
164
+ let a = t.dir();
165
+ if (f(t)) {
166
+ let e = await l.getContainerMembers(t);
167
+ await Promise.all(e.map((e) => M(o(e), i)));
151
168
  }
152
- let l;
169
+ let c;
153
170
  try {
154
- l = await o.fetcher._fetch(t.value, { method: "DELETE" }), n(l, "DELETE", { allowNotFound: !0 });
171
+ c = await s.fetcher._fetch(t.value, { method: "DELETE" }), n(c, "DELETE", { allowNotFound: !0 });
155
172
  } catch (e) {
156
173
  if (!r(e)) throw e;
157
174
  }
158
- return i.deleteTypeIndexes && await E(t, i.user), s && o.removeMatches(s, e.ldp("contains"), t, s.doc()), o.removeDocument(t), o.fetcher.unload(t.doc()), l;
175
+ return i.deleteTypeIndexes && await j(t, i.user), a && s.removeMatches(a, e.ldp("contains"), t, a.doc()), s.removeDocument(t), s.fetcher.unload(t.doc()), c;
159
176
  }
160
- async function O(e, t) {
161
- await D(e, {
177
+ async function N(e, t) {
178
+ await M(e, {
162
179
  deleteTypeIndexes: !0,
163
180
  user: t
164
181
  });
165
182
  }
166
183
  return {
167
- recursiveDelete: D,
168
- deleteResourceAndTypeIndexIfExists: O,
169
- fetchMetadata: C,
170
- fetchMetadataWithDelete: T,
171
- fetchContentAndMetadata: w,
172
- createContainer: u,
173
- isContainer: d,
174
- getContainerMembers: p,
175
- getContainerMemberCount: f,
176
- getContainerIndexThing: m,
177
- containerHasIndexDocument: h,
178
- isStorageRoot: g,
179
- isHiddenFile: _,
180
- isWebId: v
184
+ recursiveDelete: M,
185
+ deleteResourceAndTypeIndexIfExists: N,
186
+ fetchMetadata: O,
187
+ fetchMetadataWithDelete: A,
188
+ fetchContentAndMetadata: k,
189
+ createContainer: d,
190
+ isContainer: f,
191
+ getContainerMembers: m,
192
+ getContainerMemberCount: p,
193
+ getContainerIndexThing: h,
194
+ containerHasIndexDocument: g,
195
+ isStorageRoot: _,
196
+ isHiddenFile: v,
197
+ isMediaType: y,
198
+ isImage: b,
199
+ isAudio: x,
200
+ isVideo: S,
201
+ isWebId: C
181
202
  };
182
203
  }
183
204
  //#endregion
184
- export { o as createResourceLogic };
205
+ export { s as createResourceLogic };
185
206
 
186
207
  //# sourceMappingURL=resourceLogic.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceLogic.esm.js","names":["createResourceLogic","createContainer","containerLogic","url","isContainer","resourceNode","getContainerMemberCount","getContainerMembers","getContainerIndexThing","folderUri","containerNode","store","containerHasIndexDocument","ns","isStorageRoot","isHiddenFile","directory","pathEnd","isWebId","uri","resource","parsed","readMetadata","contentType","canEdit","canManageAccess","isPublic","isPublicKnown","eTag","modified","response","accessFlags","readWacAccessInfo","subject","responseNode","req","responseContentType","wacAllow","responseETag","aclUri","ACL_LINK","fetchHeadMetadata","assertSuccessfulHttpResponse","userCanWriteToContainingContainer","userCanDeleteResource","fetchMetadata","fetchContentAndMetadata","content","metadata","error","fetchMetadataWithDelete","resourceMetadata","canDelete","access","deleteTypeIndexesForResource","user","typeIndexLogic","recursiveDelete","resourceParent","containerMembers","sym","options","deleted","isMissingError","deleteResourceAndTypeIndexIfExists"],"sources":["../../src/resource/resourceLogic.ts"],"sourcesContent":["import { NamedNode, sym } from 'rdflib'\nimport { ACL_LINK } from '../acl/aclLogic'\nimport { ns } from '../util/ns'\nimport { assertSuccessfulHttpResponse, isMissingError } from './resourceHttp'\nimport { readWacAccessInfo } from './resourceMetadata'\nimport { type ResourceAccess, type ResourceAccessWithDelete, type ResourceContent, type ResourceDeleteOptions, type ResourceLogic, type ResourceMetadata, type ResourceMetadataWithDelete, type TypeIndexLogic } from '../types'\nimport type { AclLogic } from '../types'\n\nexport function createResourceLogic(store, aclLogic: AclLogic, containerLogic, typeIndexLogic: TypeIndexLogic): ResourceLogic {\n function createContainer(url: string) {\n return containerLogic.createContainer(url)\n }\n\n function isContainer(resourceNode: NamedNode) {\n return containerLogic.isContainer(resourceNode)\n }\n\n function getContainerMemberCount(resourceNode: NamedNode) {\n return containerLogic.getContainerMemberCount(resourceNode)\n }\n\n function getContainerMembers(resourceNode: NamedNode) {\n return containerLogic.getContainerElements(resourceNode)\n }\n\n function getContainerIndexThing(containerNode: NamedNode) {\n const folderUri = containerNode.uri.endsWith('/') ? containerNode.uri : `${containerNode.uri}/`\n return store.sym(`${folderUri}index.ttl#this`)\n }\n\n function containerHasIndexDocument(containerNode: NamedNode) {\n return store.holds(\n containerNode,\n ns.ldp('contains'),\n getContainerIndexThing(containerNode).doc()\n )\n }\n\n function isStorageRoot(resourceNode: NamedNode) {\n return store.holds(\n resourceNode,\n ns.rdf('type'),\n ns.space('Storage'),\n resourceNode.doc()\n )\n }\n\n function isHiddenFile(resourceNode: NamedNode) {\n const directory = resourceNode.dir()\n if (!directory) {\n return false\n }\n\n const pathEnd = resourceNode.uri.slice(directory.uri.length)\n return pathEnd.startsWith('.') || pathEnd.endsWith('.acl') || pathEnd.endsWith('.meta') || pathEnd.endsWith('~')\n }\n\n function isWebId(resource: string | NamedNode) {\n const uri = typeof resource === 'string' ? resource : resource.value\n\n try {\n const parsed = new URL(uri)\n return parsed.hash === '#me' && /\\/profile\\/card\\.ttl$/.test(parsed.pathname)\n } catch (_error) {\n return false\n }\n }\n\n function readMetadata(subject: NamedNode, response: Response): ResourceMetadata {\n let contentType: string | undefined\n let canEdit = false\n let canManageAccess = false\n let isPublic = false\n let isPublicKnown = false\n let eTag: string | undefined\n let modified: string | undefined\n\n if (response.headers) {\n const contentTypeHeader = response.headers.get('content-type')\n contentType = contentTypeHeader?.split(';')[0] ?? undefined\n\n const accessFlags = readWacAccessInfo(response.headers.get('wac-allow'))\n canEdit = accessFlags.canEdit\n canManageAccess = accessFlags.canManageAccess\n isPublic = accessFlags.isPublic\n isPublicKnown = accessFlags.isPublicKnown\n eTag = response.headers.get('etag') ?? undefined\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n\n if ((!response.headers || !response.headers.get('content-type')) && (!response.headers || !response.headers.get('wac-allow') || !response.headers.get('etag'))) {\n const reqs = store.each(\n null,\n store.sym('http://www.w3.org/2007/ont/link#requestedURI'),\n subject\n )\n reqs.map((req: any) => {\n const responseNode = store.any(\n req as any,\n store.sym('http://www.w3.org/2007/ont/link#response')\n )\n if (responseNode && responseNode.termType === 'NamedNode') {\n const responseContentType = store.anyValue(responseNode as any, ns.httph('content-type')) || undefined\n if (contentType === undefined) {\n contentType = responseContentType\n }\n const wacAllow = (store.anyValue(responseNode as any, ns.httph('wac-allow')) as string | undefined) ||\n (store.anyValue(responseNode as any, ns.httph('WAC-Allow')) as string | undefined)\n const accessFlags = readWacAccessInfo(wacAllow)\n canEdit = canEdit || accessFlags.canEdit\n canManageAccess = canManageAccess || accessFlags.canManageAccess\n isPublic = isPublic || accessFlags.isPublic\n isPublicKnown = isPublicKnown || accessFlags.isPublicKnown\n const responseETag = store.anyValue(responseNode as any, ns.httph('etag')) || undefined\n if (eTag === undefined) {\n eTag = responseETag\n }\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n })\n }\n\n const aclUri = store.any(subject, ACL_LINK)?.value || undefined\n const access: ResourceAccess = { canEdit, canManageAccess, isPublic, isPublicKnown }\n return { contentType, access, aclUri, eTag, modified }\n }\n\n async function fetchHeadMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n const response = await store.fetcher.webOperation('HEAD', subject.uri)\n assertSuccessfulHttpResponse(response, 'HEAD')\n return readMetadata(subject, response)\n }\n\n async function userCanWriteToContainingContainer(resourceNode: NamedNode): Promise<boolean> {\n const containerNode = store.any(resourceNode, ns.ldp('contains')) || resourceNode.dir()\n if (!containerNode || containerNode.termType !== 'NamedNode') {\n return false\n }\n\n try {\n const containerMetadata = await fetchHeadMetadata(containerNode as NamedNode)\n return containerMetadata.access.canEdit\n } catch (_error) {\n return false\n }\n }\n\n async function userCanDeleteResource(resourceNode: NamedNode): Promise<boolean> {\n return userCanWriteToContainingContainer(resourceNode)\n }\n\n async function fetchMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n return fetchHeadMetadata(subject)\n }\n\n async function fetchContentAndMetadata(subject: NamedNode): Promise<ResourceContent> {\n try {\n const response = await store.fetcher.webOperation('GET', subject.uri)\n assertSuccessfulHttpResponse(response, 'GET')\n\n const content = (response as Response & { responseText?: string }).responseText\n if (content === undefined) {\n throw new Error('No text in response object')\n }\n\n const metadata = readMetadata(subject, response)\n if (!metadata.contentType) {\n throw new Error('No content-type available')\n }\n\n return { content, metadata }\n } catch (error) {\n throw new Error(`Error reading file: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n async function fetchMetadataWithDelete(subject: NamedNode): Promise<ResourceMetadataWithDelete> {\n let resourceMetadata: ResourceMetadata\n\n try {\n resourceMetadata = await fetchHeadMetadata(subject)\n } catch (_error) {\n resourceMetadata = {\n contentType: undefined,\n access: { canEdit: false, canManageAccess: false, isPublic: false },\n aclUri: undefined,\n eTag: undefined,\n modified: undefined\n }\n }\n\n const canDelete = await userCanDeleteResource(subject)\n const access: ResourceAccessWithDelete = {\n canEdit: resourceMetadata.access?.canEdit ?? false,\n canManageAccess: resourceMetadata.access?.canManageAccess ?? false,\n isPublic: resourceMetadata.access?.isPublic ?? false,\n isPublicKnown: resourceMetadata.access?.isPublicKnown ?? false,\n canDelete\n }\n return { ...resourceMetadata, access }\n }\n\n async function deleteTypeIndexesForResource(resourceNode: NamedNode, user?: NamedNode | null) {\n if (!user) return\n\n try {\n await typeIndexLogic.deleteTypeIndexRegistrationForResource(resourceNode, user)\n } catch (_error) {\n // Keep resource deletion best-effort even if type-index cleanup fails.\n }\n }\n\n async function recursiveDelete(resourceNode: NamedNode, options: ResourceDeleteOptions = {}) {\n const resourceParent = resourceNode.dir()\n\n if (isContainer(resourceNode)) {\n const containerMembers = await containerLogic.getContainerMembers(resourceNode)\n await Promise.all(containerMembers.map((url) => recursiveDelete(sym(url), options)))\n }\n\n let deleted\n try {\n deleted = await store.fetcher._fetch(resourceNode.value, { method: 'DELETE' })\n assertSuccessfulHttpResponse(deleted, 'DELETE', { allowNotFound: true })\n } catch (error) {\n if (!isMissingError(error)) {\n throw error\n }\n }\n\n if (options.deleteTypeIndexes) {\n await deleteTypeIndexesForResource(resourceNode, options.user)\n }\n\n if (resourceParent) {\n store.removeMatches(resourceParent, ns.ldp('contains'), resourceNode, resourceParent.doc())\n }\n\n store.removeDocument(resourceNode)\n store.fetcher.unload(resourceNode.doc())\n return deleted\n }\n\n async function deleteResourceAndTypeIndexIfExists(resourceNode: NamedNode, user?: NamedNode | null) {\n await recursiveDelete(resourceNode, { deleteTypeIndexes: true, user })\n }\n\n return {\n recursiveDelete,\n deleteResourceAndTypeIndexIfExists,\n fetchMetadata,\n fetchMetadataWithDelete,\n fetchContentAndMetadata,\n createContainer,\n isContainer,\n getContainerMembers,\n getContainerMemberCount,\n getContainerIndexThing,\n containerHasIndexDocument,\n isStorageRoot,\n isHiddenFile,\n isWebId\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"resourceLogic.esm.js","names":["createResourceLogic","createContainer","containerLogic","url","isContainer","resourceNode","getContainerMemberCount","getContainerMembers","getContainerIndexThing","folderUri","containerNode","store","containerHasIndexDocument","ns","isStorageRoot","isHiddenFile","directory","pathEnd","isMediaType","typeURIs","normalizedMediaType","mediaType","mediaTypePrefix","Util","typeURI","contentType","isImage","isAudio","isVideo","isWebId","uri","resource","parsed","readMetadata","canEdit","canManageAccess","isPublic","isPublicKnown","eTag","modified","response","accessFlags","readWacAccessInfo","subject","responseNode","req","responseContentType","wacAllow","responseETag","aclUri","ACL_LINK","fetchHeadMetadata","assertSuccessfulHttpResponse","userCanWriteToContainingContainer","userCanDeleteResource","fetchMetadata","fetchContentAndMetadata","content","metadata","error","fetchMetadataWithDelete","resourceMetadata","canDelete","access","deleteTypeIndexesForResource","user","typeIndexLogic","recursiveDelete","resourceParent","containerMembers","sym","options","deleted","isMissingError","deleteResourceAndTypeIndexIfExists"],"sources":["../../src/resource/resourceLogic.ts"],"sourcesContent":["import { NamedNode, sym, Util } from 'rdflib'\nimport { ACL_LINK } from '../acl/aclLogic'\nimport { ns } from '../util/ns'\nimport { assertSuccessfulHttpResponse, isMissingError } from './resourceHttp'\nimport { readWacAccessInfo } from './resourceMetadata'\nimport { type ResourceAccess, type ResourceAccessWithDelete, type ResourceContent, type ResourceDeleteOptions, type ResourceLogic, type ResourceMetadata, type ResourceMetadataWithDelete, type TypeIndexLogic } from '../types'\nimport type { AclLogic } from '../types'\n\nexport function createResourceLogic(store, aclLogic: AclLogic, containerLogic, typeIndexLogic: TypeIndexLogic): ResourceLogic {\n function createContainer(url: string) {\n return containerLogic.createContainer(url)\n }\n\n function isContainer(resourceNode: NamedNode) {\n return containerLogic.isContainer(resourceNode)\n }\n\n function getContainerMemberCount(resourceNode: NamedNode) {\n return containerLogic.getContainerMemberCount(resourceNode)\n }\n\n function getContainerMembers(resourceNode: NamedNode) {\n return containerLogic.getContainerElements(resourceNode)\n }\n\n function getContainerIndexThing(containerNode: NamedNode) {\n const folderUri = containerNode.uri.endsWith('/') ? containerNode.uri : `${containerNode.uri}/`\n return store.sym(`${folderUri}index.ttl#this`)\n }\n\n function containerHasIndexDocument(containerNode: NamedNode) {\n return store.holds(\n containerNode,\n ns.ldp('contains'),\n getContainerIndexThing(containerNode).doc()\n )\n }\n\n function isStorageRoot(resourceNode: NamedNode) {\n return store.holds(\n resourceNode,\n ns.rdf('type'),\n ns.space('Storage'),\n resourceNode.doc()\n )\n }\n\n function isHiddenFile(resourceNode: NamedNode) {\n const directory = resourceNode.dir()\n if (!directory) {\n return false\n }\n\n const pathEnd = resourceNode.uri.slice(directory.uri.length)\n return pathEnd.startsWith('.') || pathEnd.endsWith('.acl') || pathEnd.endsWith('.meta') || pathEnd.endsWith('~')\n }\n\n function isMediaType(resourceNode: NamedNode, mediaType: string) {\n const typeURIs = store.findTypeURIs(resourceNode as any)\n const normalizedMediaType = mediaType.toLowerCase()\n const mediaTypePrefix = Util.mediaTypeClass(`${normalizedMediaType}/*`).uri.split('*')[0]\n\n if (Object.keys(typeURIs).some(typeURI => typeURI.startsWith(mediaTypePrefix))) {\n return true\n }\n\n const mediaTypeClasses: Record<string, string> = {\n audio: 'http://purl.org/dc/dcmitype/Sound',\n image: 'http://purl.org/dc/dcmitype/Image',\n video: 'http://purl.org/dc/dcmitype/MovingImage'\n }\n if (mediaTypeClasses[normalizedMediaType] in typeURIs) {\n return true\n }\n\n const contentTypes = store.fetcher.getHeader(resourceNode, 'content-type') || []\n return contentTypes.some((contentType: string) =>\n contentType.split(';', 1)[0].trim().toLowerCase().startsWith(`${normalizedMediaType}/`)\n )\n }\n\n function isImage(resourceNode: NamedNode) {\n return isMediaType(resourceNode, 'image')\n }\n\n function isAudio(resourceNode: NamedNode) {\n return isMediaType(resourceNode, 'audio')\n }\n\n function isVideo(resourceNode: NamedNode) {\n return isMediaType(resourceNode, 'video')\n }\n\n function isWebId(resource: string | NamedNode) {\n const uri = typeof resource === 'string' ? resource : resource.value\n\n try {\n const parsed = new URL(uri)\n return parsed.hash === '#me' && /\\/profile\\/card\\.ttl$/.test(parsed.pathname)\n } catch (_error) {\n return false\n }\n }\n\n function readMetadata(subject: NamedNode, response: Response): ResourceMetadata {\n let contentType: string | undefined\n let canEdit = false\n let canManageAccess = false\n let isPublic = false\n let isPublicKnown = false\n let eTag: string | undefined\n let modified: string | undefined\n\n if (response.headers) {\n const contentTypeHeader = response.headers.get('content-type')\n contentType = contentTypeHeader?.split(';')[0] ?? undefined\n\n const accessFlags = readWacAccessInfo(response.headers.get('wac-allow'))\n canEdit = accessFlags.canEdit\n canManageAccess = accessFlags.canManageAccess\n isPublic = accessFlags.isPublic\n isPublicKnown = accessFlags.isPublicKnown\n eTag = response.headers.get('etag') ?? undefined\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n\n if ((!response.headers || !response.headers.get('content-type')) && (!response.headers || !response.headers.get('wac-allow') || !response.headers.get('etag'))) {\n const reqs = store.each(\n null,\n store.sym('http://www.w3.org/2007/ont/link#requestedURI'),\n subject\n )\n reqs.map((req: any) => {\n const responseNode = store.any(\n req as any,\n store.sym('http://www.w3.org/2007/ont/link#response')\n )\n if (responseNode && responseNode.termType === 'NamedNode') {\n const responseContentType = store.anyValue(responseNode as any, ns.httph('content-type')) || undefined\n if (contentType === undefined) {\n contentType = responseContentType\n }\n const wacAllow = (store.anyValue(responseNode as any, ns.httph('wac-allow')) as string | undefined) ||\n (store.anyValue(responseNode as any, ns.httph('WAC-Allow')) as string | undefined)\n const accessFlags = readWacAccessInfo(wacAllow)\n canEdit = canEdit || accessFlags.canEdit\n canManageAccess = canManageAccess || accessFlags.canManageAccess\n isPublic = isPublic || accessFlags.isPublic\n isPublicKnown = isPublicKnown || accessFlags.isPublicKnown\n const responseETag = store.anyValue(responseNode as any, ns.httph('etag')) || undefined\n if (eTag === undefined) {\n eTag = responseETag\n }\n modified = store.anyValue(subject as any, ns.dct('modified')) || store.anyValue(subject as any, ns.dc('modified')) || undefined\n }\n })\n }\n\n const aclUri = store.any(subject, ACL_LINK)?.value || undefined\n const access: ResourceAccess = { canEdit, canManageAccess, isPublic, isPublicKnown }\n return { contentType, access, aclUri, eTag, modified }\n }\n\n async function fetchHeadMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n const response = await store.fetcher.webOperation('HEAD', subject.uri)\n assertSuccessfulHttpResponse(response, 'HEAD')\n return readMetadata(subject, response)\n }\n\n async function userCanWriteToContainingContainer(resourceNode: NamedNode): Promise<boolean> {\n const containerNode = store.any(resourceNode, ns.ldp('contains')) || resourceNode.dir()\n if (!containerNode || containerNode.termType !== 'NamedNode') {\n return false\n }\n\n try {\n const containerMetadata = await fetchHeadMetadata(containerNode as NamedNode)\n return containerMetadata.access.canEdit\n } catch (_error) {\n return false\n }\n }\n\n async function userCanDeleteResource(resourceNode: NamedNode): Promise<boolean> {\n return userCanWriteToContainingContainer(resourceNode)\n }\n\n async function fetchMetadata(subject: NamedNode): Promise<ResourceMetadata> {\n return fetchHeadMetadata(subject)\n }\n\n async function fetchContentAndMetadata(subject: NamedNode): Promise<ResourceContent> {\n try {\n const response = await store.fetcher.webOperation('GET', subject.uri)\n assertSuccessfulHttpResponse(response, 'GET')\n\n const content = (response as Response & { responseText?: string }).responseText\n if (content === undefined) {\n throw new Error('No text in response object')\n }\n\n const metadata = readMetadata(subject, response)\n if (!metadata.contentType) {\n throw new Error('No content-type available')\n }\n\n return { content, metadata }\n } catch (error) {\n throw new Error(`Error reading file: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n async function fetchMetadataWithDelete(subject: NamedNode): Promise<ResourceMetadataWithDelete> {\n let resourceMetadata: ResourceMetadata\n\n try {\n resourceMetadata = await fetchHeadMetadata(subject)\n } catch (_error) {\n resourceMetadata = {\n contentType: undefined,\n access: { canEdit: false, canManageAccess: false, isPublic: false },\n aclUri: undefined,\n eTag: undefined,\n modified: undefined\n }\n }\n\n const canDelete = await userCanDeleteResource(subject)\n const access: ResourceAccessWithDelete = {\n canEdit: resourceMetadata.access?.canEdit ?? false,\n canManageAccess: resourceMetadata.access?.canManageAccess ?? false,\n isPublic: resourceMetadata.access?.isPublic ?? false,\n isPublicKnown: resourceMetadata.access?.isPublicKnown ?? false,\n canDelete\n }\n return { ...resourceMetadata, access }\n }\n\n async function deleteTypeIndexesForResource(resourceNode: NamedNode, user?: NamedNode | null) {\n if (!user) return\n\n try {\n await typeIndexLogic.deleteTypeIndexRegistrationForResource(resourceNode, user)\n } catch (_error) {\n // Keep resource deletion best-effort even if type-index cleanup fails.\n }\n }\n\n async function recursiveDelete(resourceNode: NamedNode, options: ResourceDeleteOptions = {}) {\n const resourceParent = resourceNode.dir()\n\n if (isContainer(resourceNode)) {\n const containerMembers = await containerLogic.getContainerMembers(resourceNode)\n await Promise.all(containerMembers.map((url) => recursiveDelete(sym(url), options)))\n }\n\n let deleted\n try {\n deleted = await store.fetcher._fetch(resourceNode.value, { method: 'DELETE' })\n assertSuccessfulHttpResponse(deleted, 'DELETE', { allowNotFound: true })\n } catch (error) {\n if (!isMissingError(error)) {\n throw error\n }\n }\n\n if (options.deleteTypeIndexes) {\n await deleteTypeIndexesForResource(resourceNode, options.user)\n }\n\n if (resourceParent) {\n store.removeMatches(resourceParent, ns.ldp('contains'), resourceNode, resourceParent.doc())\n }\n\n store.removeDocument(resourceNode)\n store.fetcher.unload(resourceNode.doc())\n return deleted\n }\n\n async function deleteResourceAndTypeIndexIfExists(resourceNode: NamedNode, user?: NamedNode | null) {\n await recursiveDelete(resourceNode, { deleteTypeIndexes: true, user })\n }\n\n return {\n recursiveDelete,\n deleteResourceAndTypeIndexIfExists,\n fetchMetadata,\n fetchMetadataWithDelete,\n fetchContentAndMetadata,\n createContainer,\n isContainer,\n getContainerMembers,\n getContainerMemberCount,\n getContainerIndexThing,\n containerHasIndexDocument,\n isStorageRoot,\n isHiddenFile,\n isMediaType,\n isImage,\n isAudio,\n isVideo,\n isWebId\n }\n}\n"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -158,6 +158,10 @@ export interface ResourceLogic {
158
158
  containerHasIndexDocument: (container: NamedNode) => boolean;
159
159
  isStorageRoot: (resource: NamedNode) => boolean;
160
160
  isHiddenFile: (resource: NamedNode) => boolean;
161
+ isMediaType: (resource: NamedNode, mediaType: string) => boolean;
162
+ isImage: (resource: NamedNode) => boolean;
163
+ isAudio: (resource: NamedNode) => boolean;
164
+ isVideo: (resource: NamedNode) => boolean;
161
165
  isWebId: (resource: string | NamedNode) => boolean;
162
166
  }
163
167
  export interface TypeIndexLogic {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-logic",
3
- "version": "6.0.1-4",
3
+ "version": "6.0.1-5",
4
4
  "description": "Core business logic of SolidOS",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",