solid-logic 6.0.1-0 → 6.0.1-1

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("./accessControlSubjects.cjs.js");let n=require("rdflib"),r=require("@dokieli/web-access-control");var i=[`Owner`,`Editor`,`No Access`,`Viewer`,`Poster`,`Submitter`],a=(0,n.sym)(`http://www.iana.org/assignments/link-relations/acl`);function o(i){let o=e.ns,s=[{label:`Owner`,modes:[`Read`,`Write`,`Control`]},{label:`Editor`,modes:[`Read`,`Write`]},{label:`Poster`,modes:[`Append`,`Read`]},{label:`Submitter`,modes:[`Append`]},{label:`Viewer`,modes:[`Read`]},{label:`No Access`,modes:[]}];function c(e){let t=new Set(e);return s.find(e=>e.label!==`No Access`&&e.modes.every(e=>t.has(e)))?.label??`No Access`}function l(e){return[...s.find(t=>t.label===e)?.modes??[]]}function u(){let e=i.fetcher,t=e?._fetch??e?.fetch;if(!t)throw Error(`Cannot find effective ACL, store has no fetcher`);return t.bind(e)}async function d(e){await i.fetcher.load(e);let t=i.any(e,a);if(!t)throw Error(`No ACL link discovered for ${e}`);return t.value}async function f(e){let t=typeof e==`string`?e:e.value;return(0,r.findEffectiveACL)(t,{fetch:u()})}async function p(e){return(await f(e)).authorizations}async function m(e,t,n){let i=await f(e);return(0,r.planGrant)(i,t,n)}async function h(e,t){let n=await f(e);return(0,r.planRevoke)(n,t)}async function g(e,t){let n=await f(e);return(0,r.planPublicRead)(n,t)}async function _(e){return(0,r.applyPlan)(e,{fetch:u()})}async function v(e){return t.classifyAccessControlSubject(i,e)}function y(e,t,n){let r=i.any(i.sym(e),a);return Promise.resolve().then(()=>r||b(e).catch(t=>{throw Error(`Error fetching rel=ACL header for ${e}: ${t}`)})).then(r=>{let a=x(e,t,r.uri,n);if(!i.fetcher)throw Error(`Cannot PUT this, store has no fetcher`);return i.fetcher.webOperation(`PUT`,r.uri,{data:a,contentType:`text/turtle`}).then(e=>{if(!e.ok)throw Error(`Error writing ACL text: `+e.error);return r})})}function b(e){let t=i.fetcher;if(!t)throw Error(`Cannot fetch ACL rel, store has no fetcher`);return t.load(e).then(t=>{if(!t.ok)throw Error(`fetchACLRel: While loading:`+t.error);let n=i.any(i.sym(e),a);if(!n)throw Error(`fetchACLRel: No Link rel=ACL header for `+e);return n})}function x(e,t,r,i={}){let a=i.public||[],s=(0,n.graph)(),c=(0,n.Namespace)(`http://www.w3.org/ns/auth/acl#`),l=s.sym(`${r}#a1`),u=s.sym(r),d=s.sym(e);if(s.add(l,o.rdf(`type`),c(`Authorization`),u),s.add(l,c(`accessTo`),d,u),i.defaultForNew&&s.add(l,c(`default`),d,u),s.add(l,c(`agent`),t,u),s.add(l,c(`mode`),c(`Read`),u),s.add(l,c(`mode`),c(`Write`),u),s.add(l,c(`mode`),c(`Control`),u),a.length){l=s.sym(`${r}#a2`),s.add(l,o.rdf(`type`),c(`Authorization`),u),s.add(l,c(`accessTo`),d,u),s.add(l,c(`agentClass`),o.foaf(`Agent`),u);for(let e=0;e<a.length;e++)s.add(l,c(`mode`),c(a[e]),u)}return(0,n.serialize)(u,s,r)}return{findAclDocUrl:d,findEffectiveAcl:f,findAccessGrants:p,roleFromModes:c,modesFromRole:l,planGrant:m,planRevoke:h,planPublicRead:g,applyPlan:_,classifyAccessControlSubject:v,setACLUserPublic:y,genACLText:x}}exports.ACCESS_ROLES=i,exports.ACL_LINK=a,exports.createAclLogic=o;
1
+ const e=require("../util/ns.cjs.js"),t=require("./accessControlSubjects.cjs.js");let n=require("rdflib"),r=require("@dokieli/web-access-control");var i=[`Owner`,`Editor`,`No Access`,`Viewer`,`Poster`,`Submitter`],a=[`No Access`,`Viewer`],o=(0,n.sym)(`http://www.iana.org/assignments/link-relations/acl`);function s(i){let s=e.ns,c=[{label:`Owner`,modes:[`Read`,`Write`,`Control`]},{label:`Editor`,modes:[`Read`,`Write`]},{label:`Poster`,modes:[`Append`,`Read`]},{label:`Submitter`,modes:[`Append`]},{label:`Viewer`,modes:[`Read`]},{label:`No Access`,modes:[]}],l=[{label:`Viewer`,modes:[`Read`]},{label:`No Access`,modes:[]}];function u(e){let t=new Set(e);return c.find(e=>e.label!==`No Access`&&e.modes.every(e=>t.has(e)))?.label??`No Access`}function d(e){return[...c.find(t=>t.label===e)?.modes??[]]}function f(e){let t=new Set(e);return l.find(e=>e.label!==`No Access`&&e.modes.every(e=>t.has(e)))?.label??`No Access`}function p(e){return[...l.find(t=>t.label===e)?.modes??[]]}function m(){let e=i.fetcher,t=e?._fetch??e?.fetch;if(!t)throw Error(`Cannot find effective ACL, store has no fetcher`);return t.bind(e)}async function h(e){await i.fetcher.load(e);let t=i.any(e,o);if(!t)throw Error(`No ACL link discovered for ${e}`);return t.value}async function g(e){let t=typeof e==`string`?e:e.value;return(0,r.findEffectiveACL)(t,{fetch:m()})}async function _(e){return(await g(e)).authorizations}async function v(e,t,n){let i=await g(e);return(0,r.planGrant)(i,t,n)}async function y(e,t){let n=await g(e);return(0,r.planRevoke)(n,t)}async function b(e,t){let n=await g(e);return(0,r.planPublicRead)(n,t)}async function x(e){return(0,r.applyPlan)(e,{fetch:m()})}async function S(e){return t.classifyAccessControlSubject(i,e)}function C(e,t,n){let r=i.any(i.sym(e),o);return Promise.resolve().then(()=>r||w(e).catch(t=>{throw Error(`Error fetching rel=ACL header for ${e}: ${t}`)})).then(r=>{let a=T(e,t,r.uri,n);if(!i.fetcher)throw Error(`Cannot PUT this, store has no fetcher`);return i.fetcher.webOperation(`PUT`,r.uri,{data:a,contentType:`text/turtle`}).then(e=>{if(!e.ok)throw Error(`Error writing ACL text: `+e.error);return r})})}function w(e){let t=i.fetcher;if(!t)throw Error(`Cannot fetch ACL rel, store has no fetcher`);return t.load(e).then(t=>{if(!t.ok)throw Error(`fetchACLRel: While loading:`+t.error);let n=i.any(i.sym(e),o);if(!n)throw Error(`fetchACLRel: No Link rel=ACL header for `+e);return n})}function T(e,t,r,i={}){let a=i.public||[],o=(0,n.graph)(),c=(0,n.Namespace)(`http://www.w3.org/ns/auth/acl#`),l=o.sym(`${r}#a1`),u=o.sym(r),d=o.sym(e);if(o.add(l,s.rdf(`type`),c(`Authorization`),u),o.add(l,c(`accessTo`),d,u),i.defaultForNew&&o.add(l,c(`default`),d,u),o.add(l,c(`agent`),t,u),o.add(l,c(`mode`),c(`Read`),u),o.add(l,c(`mode`),c(`Write`),u),o.add(l,c(`mode`),c(`Control`),u),a.length){l=o.sym(`${r}#a2`),o.add(l,s.rdf(`type`),c(`Authorization`),u),o.add(l,c(`accessTo`),d,u),o.add(l,c(`agentClass`),s.foaf(`Agent`),u);for(let e=0;e<a.length;e++)o.add(l,c(`mode`),c(a[e]),u)}return(0,n.serialize)(u,o,r)}return{findAclDocUrl:h,findEffectiveAcl:g,findAccessGrants:_,roleFromModes:u,modesFromRole:d,publicRoleFromModes:f,modesFromPublicRole:p,planGrant:v,planRevoke:y,planPublicRead:b,applyPlan:x,classifyAccessControlSubject:S,setACLUserPublic:C,genACLText:T,Authenticated:r.Authenticated,Public:r.Public,PUBLIC_ACCESS_ROLES:a}}exports.ACCESS_ROLES=i,exports.ACL_LINK=o,exports.PUBLIC_ACCESS_ROLES=a,exports.createAclLogic=s;
2
2
  //# sourceMappingURL=aclLogic.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aclLogic.cjs.js","names":[],"sources":["../../src/acl/aclLogic.ts"],"sourcesContent":["import { applyPlan as applyAuthorizationPlan, findEffectiveACL, planGrant as planAuthorizationGrant, planPublicRead as planAuthorizationPublicRead, planRevoke as planAuthorizationRevoke, type AccessMode, type AccessSubject, type ACLContext, type Authorization, type PatchPlan } from '@dokieli/web-access-control'\nimport { graph, NamedNode, Namespace, serialize, sym } from 'rdflib'\nimport type { AclLogic } from '../types'\nimport { ns as namespace } from '../util/ns'\nimport * as accessControlSubjects from './accessControlSubjects'\n\n// Will remove the below comment when i'm done with the manage access work\n// Helpers available from @dokieli/web-access-control:\n// - Discovery: findEffectiveACL, parentContainer\n// - ACL context and parsing: buildACLContext, authorizationsFromDataset, parseTurtle\n// - Query helpers: agentsWithMode, hasControl, isPublic, modesFor, subjectsWithMode\n// - Plan helpers: planContainerACL, planGrant, planOwnerControl, planPublicRead, planRevoke\n// - Serialization and application: serializeTerm, toN3Patch, toSparqlUpdate, toTurtle, applyPlan, negotiatePatchContentType\n// - Link and allow parsing: allows, parseWacAllow, linkTargets, parseLinkHeader\n// - Terms and constants: ACCESS_MODES, ACL, Authenticated, FOAF, modeFromIRI, modeIRI, namedNode, Public, quad, RDF_TYPE, variable\n\nexport const ACCESS_ROLES = ['Owner', 'Editor', 'No Access', 'Viewer', 'Poster', 'Submitter'] as const\n\nexport type AccessRole = typeof ACCESS_ROLES[number]\n\nexport const ACL_LINK = sym(\n 'http://www.iana.org/assignments/link-relations/acl'\n)\n\nexport function createAclLogic(store): AclLogic {\n\n const ns = namespace\n const ACCESS_ROLE_RULES: Array<{ label: AccessRole, modes: AccessMode[] }> = [\n { label: 'Owner', modes: ['Read', 'Write', 'Control'] },\n { label: 'Editor', modes: ['Read', 'Write'] },\n { label: 'Poster', modes: ['Append', 'Read'] },\n { label: 'Submitter', modes: ['Append'] },\n { label: 'Viewer', modes: ['Read'] },\n { label: 'No Access', modes: [] }\n ]\n\n function roleFromModes (modes: Iterable<AccessMode>): AccessRole {\n const modeSet = new Set(modes)\n const matchingRule = ACCESS_ROLE_RULES.find(rule => rule.label !== 'No Access' && rule.modes.every(mode => modeSet.has(mode)))\n\n return matchingRule?.label ?? 'No Access'\n }\n\n function modesFromRole (role: AccessRole): AccessMode[] {\n return [...(ACCESS_ROLE_RULES.find(rule => rule.label === role)?.modes ?? [])]\n }\n\n function getFetch() {\n const fetcher = store.fetcher as {\n _fetch?: (url: string, init?: RequestInit) => Promise<Response>\n fetch?: (url: string, init?: RequestInit) => Promise<Response>\n } | undefined\n const fetch = fetcher?._fetch ?? fetcher?.fetch\n if (!fetch) {\n throw new Error('Cannot find effective ACL, store has no fetcher')\n }\n return fetch.bind(fetcher)\n }\n \n async function findAclDocUrl(url: NamedNode) {\n await store.fetcher.load(url)\n const docNode = store.any(url, ACL_LINK)\n if (!docNode) {\n throw new Error(`No ACL link discovered for ${url}`)\n }\n return docNode.value\n }\n\n async function findEffectiveAcl(resourceURL: string | NamedNode): Promise<ACLContext> {\n const url = typeof resourceURL === 'string' ? resourceURL : resourceURL.value\n return findEffectiveACL(url, { fetch: getFetch() })\n }\n\n async function findAccessGrants(resourceURL: string | NamedNode): Promise<Authorization[]> {\n const context = await findEffectiveAcl(resourceURL)\n return context.authorizations\n }\n\n async function planGrant(resourceURL: string | NamedNode, subject: AccessSubject, modes: AccessMode[]): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationGrant(context, subject, modes)\n }\n\n async function planRevoke(resourceURL: string | NamedNode, subject: AccessSubject): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationRevoke(context, subject)\n }\n\n async function planPublicRead(resourceURL: string | NamedNode, enabled: boolean): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationPublicRead(context, enabled)\n }\n\n async function applyPlan(plan: PatchPlan): Promise<Response> {\n return applyAuthorizationPlan(plan, { fetch: getFetch() })\n }\n\n async function classifyAccessControlSubject(principle: string) {\n return accessControlSubjects.classifyAccessControlSubject(store, principle)\n }\n /**\n * Simple Access Control\n *\n * This function sets up a simple default ACL for a resource, with\n * RWC for the owner, and a specified access (default none) for the public.\n * In all cases owner has read write control.\n * Parameter lists modes allowed to public\n *\n * @param options\n * @param options.public eg ['Read', 'Write']\n *\n * @returns Resolves with aclDoc uri on successful write\n */\n function setACLUserPublic ( \n docURI: string,\n me: NamedNode,\n options: {\n defaultForNew?: boolean,\n public?: []\n }\n ): Promise<NamedNode> {\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n return Promise.resolve()\n .then(() => {\n if (aclDoc) {\n return aclDoc as NamedNode\n }\n\n return fetchACLRel(docURI).catch(err => {\n throw new Error(`Error fetching rel=ACL header for ${docURI}: ${err}`)\n })\n })\n .then(aclDoc => {\n const aclText = genACLText(docURI, me, aclDoc.uri, options)\n if (!store.fetcher) {\n throw new Error('Cannot PUT this, store has no fetcher')\n }\n return store.fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(result => {\n if (!result.ok) {\n throw new Error('Error writing ACL text: ' + result.error)\n }\n\n return aclDoc\n })\n })\n }\n\n /**\n * @param docURI\n * @returns\n */\n function fetchACLRel (docURI: string): Promise<NamedNode> {\n const fetcher = store.fetcher\n if (!fetcher) {\n throw new Error('Cannot fetch ACL rel, store has no fetcher')\n }\n\n return fetcher.load(docURI).then(result => {\n if (!result.ok) {\n throw new Error('fetchACLRel: While loading:' + (result as any).error)\n }\n\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n if (!aclDoc) {\n throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI)\n }\n\n return aclDoc as NamedNode\n })\n }\n\n /**\n * @param docURI\n * @param me\n * @param aclURI\n * @param options\n *\n * @returns Serialized ACL\n */\n function genACLText (\n docURI: string,\n me: NamedNode,\n aclURI: string,\n options: {\n defaultForNew?: boolean,\n public?: []\n } = {}\n ): string | undefined {\n const optPublic = options.public || []\n const g = graph()\n const auth = Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(`${aclURI}#a1`)\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n if (options.defaultForNew) {\n g.add(a, auth('default'), doc, acl)\n }\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n if (optPublic.length) {\n a = g.sym(`${aclURI}#a2`)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n for (let p = 0; p < optPublic.length; p++) {\n g.add(a, auth('mode'), auth(optPublic[p]), acl) // Like 'Read' etc\n }\n }\n return serialize(acl, g, aclURI)\n }\n return {\n findAclDocUrl,\n findEffectiveAcl,\n findAccessGrants,\n roleFromModes,\n modesFromRole,\n planGrant,\n planRevoke,\n planPublicRead,\n applyPlan,\n classifyAccessControlSubject,\n setACLUserPublic,\n genACLText\n }\n}"],"mappings":"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"}
1
+ {"version":3,"file":"aclLogic.cjs.js","names":[],"sources":["../../src/acl/aclLogic.ts"],"sourcesContent":["import { applyPlan as applyAuthorizationPlan, Authenticated, findEffectiveACL, planGrant as planAuthorizationGrant, planPublicRead as planAuthorizationPublicRead, planRevoke as planAuthorizationRevoke, Public, type AccessMode, type AccessSubject, type ACLContext, type Authorization, type PatchPlan } from '@dokieli/web-access-control'\nimport { graph, NamedNode, Namespace, serialize, sym } from 'rdflib'\nimport type { AclLogic } from '../types'\nimport { ns as namespace } from '../util/ns'\nimport * as accessControlSubjects from './accessControlSubjects'\n\n// Will remove the below comment when i'm done with the manage access work\n// Helpers available from @dokieli/web-access-control:\n// - Discovery: findEffectiveACL, parentContainer\n// - ACL context and parsing: buildACLContext, authorizationsFromDataset, parseTurtle\n// - Query helpers: agentsWithMode, hasControl, isPublic, modesFor, subjectsWithMode\n// - Plan helpers: planContainerACL, planGrant, planOwnerControl, planPublicRead, planRevoke\n// - Serialization and application: serializeTerm, toN3Patch, toSparqlUpdate, toTurtle, applyPlan, negotiatePatchContentType\n// - Link and allow parsing: allows, parseWacAllow, linkTargets, parseLinkHeader\n// - Terms and constants: ACCESS_MODES, ACL, Authenticated, FOAF, modeFromIRI, modeIRI, namedNode, Public, quad, RDF_TYPE, variable\n\nexport const ACCESS_ROLES = ['Owner', 'Editor', 'No Access', 'Viewer', 'Poster', 'Submitter'] as const\nexport const PUBLIC_ACCESS_ROLES = ['No Access', 'Viewer'] as const\nexport { Authenticated, Public } from '@dokieli/web-access-control'\n\nexport type AccessRole = typeof ACCESS_ROLES[number]\nexport type PublicAccessRole = typeof PUBLIC_ACCESS_ROLES[number]\n\nexport const ACL_LINK = sym(\n 'http://www.iana.org/assignments/link-relations/acl'\n)\n\nexport function createAclLogic(store): AclLogic {\n\n const ns = namespace\n const ACCESS_ROLE_RULES: Array<{ label: AccessRole, modes: AccessMode[] }> = [\n { label: 'Owner', modes: ['Read', 'Write', 'Control'] },\n { label: 'Editor', modes: ['Read', 'Write'] },\n { label: 'Poster', modes: ['Append', 'Read'] },\n { label: 'Submitter', modes: ['Append'] },\n { label: 'Viewer', modes: ['Read'] },\n { label: 'No Access', modes: [] }\n ]\n const PUBLIC_ROLE_RULES: Array<{ label: PublicAccessRole, modes: AccessMode[] }> = [\n { label: 'Viewer', modes: ['Read'] },\n { label: 'No Access', modes: [] }\n ]\n\n function roleFromModes (modes: Iterable<AccessMode>): AccessRole {\n const modeSet = new Set(modes)\n const matchingRule = ACCESS_ROLE_RULES.find(rule => rule.label !== 'No Access' && rule.modes.every(mode => modeSet.has(mode)))\n\n return matchingRule?.label ?? 'No Access'\n }\n\n function modesFromRole (role: AccessRole): AccessMode[] {\n return [...(ACCESS_ROLE_RULES.find(rule => rule.label === role)?.modes ?? [])]\n }\n\n function publicRoleFromModes (modes: Iterable<AccessMode>): PublicAccessRole {\n const modeSet = new Set(modes)\n const matchingRule = PUBLIC_ROLE_RULES.find(rule => rule.label !== 'No Access' && rule.modes.every(mode => modeSet.has(mode)))\n\n return matchingRule?.label ?? 'No Access'\n }\n\n function modesFromPublicRole (role: PublicAccessRole): AccessMode[] {\n return [...(PUBLIC_ROLE_RULES.find(rule => rule.label === role)?.modes ?? [])]\n }\n\n function getFetch() {\n const fetcher = store.fetcher as {\n _fetch?: (url: string, init?: RequestInit) => Promise<Response>\n fetch?: (url: string, init?: RequestInit) => Promise<Response>\n } | undefined\n const fetch = fetcher?._fetch ?? fetcher?.fetch\n if (!fetch) {\n throw new Error('Cannot find effective ACL, store has no fetcher')\n }\n return fetch.bind(fetcher)\n }\n \n async function findAclDocUrl(url: NamedNode) {\n await store.fetcher.load(url)\n const docNode = store.any(url, ACL_LINK)\n if (!docNode) {\n throw new Error(`No ACL link discovered for ${url}`)\n }\n return docNode.value\n }\n\n async function findEffectiveAcl(resourceURL: string | NamedNode): Promise<ACLContext> {\n const url = typeof resourceURL === 'string' ? resourceURL : resourceURL.value\n return findEffectiveACL(url, { fetch: getFetch() })\n }\n\n async function findAccessGrants(resourceURL: string | NamedNode): Promise<Authorization[]> {\n const context = await findEffectiveAcl(resourceURL)\n return context.authorizations\n }\n\n async function planGrant(resourceURL: string | NamedNode, subject: AccessSubject, modes: AccessMode[]): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationGrant(context, subject, modes)\n }\n\n async function planRevoke(resourceURL: string | NamedNode, subject: AccessSubject): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationRevoke(context, subject)\n }\n\n async function planPublicRead(resourceURL: string | NamedNode, enabled: boolean): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationPublicRead(context, enabled)\n }\n\n async function applyPlan(plan: PatchPlan): Promise<Response> {\n return applyAuthorizationPlan(plan, { fetch: getFetch() })\n }\n\n async function classifyAccessControlSubject(principle: string) {\n return accessControlSubjects.classifyAccessControlSubject(store, principle)\n }\n /**\n * Simple Access Control\n *\n * This function sets up a simple default ACL for a resource, with\n * RWC for the owner, and a specified access (default none) for the public.\n * In all cases owner has read write control.\n * Parameter lists modes allowed to public\n *\n * @param options\n * @param options.public eg ['Read', 'Write']\n *\n * @returns Resolves with aclDoc uri on successful write\n */\n function setACLUserPublic ( \n docURI: string,\n me: NamedNode,\n options: {\n defaultForNew?: boolean,\n public?: []\n }\n ): Promise<NamedNode> {\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n return Promise.resolve()\n .then(() => {\n if (aclDoc) {\n return aclDoc as NamedNode\n }\n\n return fetchACLRel(docURI).catch(err => {\n throw new Error(`Error fetching rel=ACL header for ${docURI}: ${err}`)\n })\n })\n .then(aclDoc => {\n const aclText = genACLText(docURI, me, aclDoc.uri, options)\n if (!store.fetcher) {\n throw new Error('Cannot PUT this, store has no fetcher')\n }\n return store.fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(result => {\n if (!result.ok) {\n throw new Error('Error writing ACL text: ' + result.error)\n }\n\n return aclDoc\n })\n })\n }\n\n /**\n * @param docURI\n * @returns\n */\n function fetchACLRel (docURI: string): Promise<NamedNode> {\n const fetcher = store.fetcher\n if (!fetcher) {\n throw new Error('Cannot fetch ACL rel, store has no fetcher')\n }\n\n return fetcher.load(docURI).then(result => {\n if (!result.ok) {\n throw new Error('fetchACLRel: While loading:' + (result as any).error)\n }\n\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n if (!aclDoc) {\n throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI)\n }\n\n return aclDoc as NamedNode\n })\n }\n\n /**\n * @param docURI\n * @param me\n * @param aclURI\n * @param options\n *\n * @returns Serialized ACL\n */\n function genACLText (\n docURI: string,\n me: NamedNode,\n aclURI: string,\n options: {\n defaultForNew?: boolean,\n public?: []\n } = {}\n ): string | undefined {\n const optPublic = options.public || []\n const g = graph()\n const auth = Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(`${aclURI}#a1`)\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n if (options.defaultForNew) {\n g.add(a, auth('default'), doc, acl)\n }\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n if (optPublic.length) {\n a = g.sym(`${aclURI}#a2`)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n for (let p = 0; p < optPublic.length; p++) {\n g.add(a, auth('mode'), auth(optPublic[p]), acl) // Like 'Read' etc\n }\n }\n return serialize(acl, g, aclURI)\n }\n return {\n findAclDocUrl,\n findEffectiveAcl,\n findAccessGrants,\n roleFromModes,\n modesFromRole,\n publicRoleFromModes,\n modesFromPublicRole,\n planGrant,\n planRevoke,\n planPublicRead,\n applyPlan,\n classifyAccessControlSubject,\n setACLUserPublic,\n genACLText,\n Authenticated,\n Public,\n PUBLIC_ACCESS_ROLES\n }\n}"],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { NamedNode } from 'rdflib';
2
2
  import type { AclLogic } from '../types';
3
3
  export declare const ACCESS_ROLES: readonly ["Owner", "Editor", "No Access", "Viewer", "Poster", "Submitter"];
4
+ export declare const PUBLIC_ACCESS_ROLES: readonly ["No Access", "Viewer"];
5
+ export { Authenticated, Public } from '@dokieli/web-access-control';
4
6
  export type AccessRole = typeof ACCESS_ROLES[number];
7
+ export type PublicAccessRole = typeof PUBLIC_ACCESS_ROLES[number];
5
8
  export declare const ACL_LINK: NamedNode;
6
9
  export declare function createAclLogic(store: any): AclLogic;
7
10
  //# sourceMappingURL=aclLogic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aclLogic.d.ts","sourceRoot":"","sources":["../../src/acl/aclLogic.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAA6B,MAAM,QAAQ,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAcxC,eAAO,MAAM,YAAY,4EAA6E,CAAA;AAEtG,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;AAEpD,eAAO,MAAM,QAAQ,WAEpB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,KAAA,GAAG,QAAQ,CA0N9C"}
1
+ {"version":3,"file":"aclLogic.d.ts","sourceRoot":"","sources":["../../src/acl/aclLogic.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,SAAS,EAA6B,MAAM,QAAQ,CAAA;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAcxC,eAAO,MAAM,YAAY,4EAA6E,CAAA;AACtG,eAAO,MAAM,mBAAmB,kCAAmC,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEnE,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;AACpD,MAAM,MAAM,gBAAgB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;AAEjE,eAAO,MAAM,QAAQ,WAEpB,CAAA;AAED,wBAAgB,cAAc,CAAC,KAAK,KAAA,GAAG,QAAQ,CA8O9C"}
@@ -1,18 +1,18 @@
1
1
  import { ns as e } from "../util/ns.esm.js";
2
2
  import { classifyAccessControlSubject as t } from "./accessControlSubjects.esm.js";
3
3
  import { Namespace as n, graph as r, serialize as i, sym as a } from "rdflib";
4
- import { applyPlan as o, findEffectiveACL as s, planGrant as c, planPublicRead as l, planRevoke as u } from "@dokieli/web-access-control";
4
+ import { Authenticated as o, Authenticated as s, Public as c, Public as l, applyPlan as u, findEffectiveACL as d, planGrant as f, planPublicRead as p, planRevoke as m } from "@dokieli/web-access-control";
5
5
  //#region src/acl/aclLogic.ts
6
- var d = [
6
+ var h = [
7
7
  "Owner",
8
8
  "Editor",
9
9
  "No Access",
10
10
  "Viewer",
11
11
  "Poster",
12
12
  "Submitter"
13
- ], f = a("http://www.iana.org/assignments/link-relations/acl");
14
- function p(a) {
15
- let d = e, p = [
13
+ ], g = ["No Access", "Viewer"], _ = a("http://www.iana.org/assignments/link-relations/acl");
14
+ function v(a) {
15
+ let s = e, l = [
16
16
  {
17
17
  label: "Owner",
18
18
  modes: [
@@ -41,56 +41,69 @@ function p(a) {
41
41
  label: "No Access",
42
42
  modes: []
43
43
  }
44
- ];
45
- function m(e) {
44
+ ], h = [{
45
+ label: "Viewer",
46
+ modes: ["Read"]
47
+ }, {
48
+ label: "No Access",
49
+ modes: []
50
+ }];
51
+ function v(e) {
46
52
  let t = new Set(e);
47
- return p.find((e) => e.label !== "No Access" && e.modes.every((e) => t.has(e)))?.label ?? "No Access";
53
+ return l.find((e) => e.label !== "No Access" && e.modes.every((e) => t.has(e)))?.label ?? "No Access";
48
54
  }
49
- function h(e) {
50
- return [...p.find((t) => t.label === e)?.modes ?? []];
55
+ function y(e) {
56
+ return [...l.find((t) => t.label === e)?.modes ?? []];
51
57
  }
52
- function g() {
58
+ function b(e) {
59
+ let t = new Set(e);
60
+ return h.find((e) => e.label !== "No Access" && e.modes.every((e) => t.has(e)))?.label ?? "No Access";
61
+ }
62
+ function x(e) {
63
+ return [...h.find((t) => t.label === e)?.modes ?? []];
64
+ }
65
+ function S() {
53
66
  let e = a.fetcher, t = e?._fetch ?? e?.fetch;
54
67
  if (!t) throw Error("Cannot find effective ACL, store has no fetcher");
55
68
  return t.bind(e);
56
69
  }
57
- async function _(e) {
70
+ async function C(e) {
58
71
  await a.fetcher.load(e);
59
- let t = a.any(e, f);
72
+ let t = a.any(e, _);
60
73
  if (!t) throw Error(`No ACL link discovered for ${e}`);
61
74
  return t.value;
62
75
  }
63
- async function v(e) {
76
+ async function w(e) {
64
77
  let t = typeof e == "string" ? e : e.value;
65
- return s(t, { fetch: g() });
78
+ return d(t, { fetch: S() });
66
79
  }
67
- async function y(e) {
68
- return (await v(e)).authorizations;
80
+ async function T(e) {
81
+ return (await w(e)).authorizations;
69
82
  }
70
- async function b(e, t, n) {
71
- let r = await v(e);
72
- return c(r, t, n);
83
+ async function E(e, t, n) {
84
+ let r = await w(e);
85
+ return f(r, t, n);
73
86
  }
74
- async function x(e, t) {
75
- let n = await v(e);
76
- return u(n, t);
87
+ async function D(e, t) {
88
+ let n = await w(e);
89
+ return m(n, t);
77
90
  }
78
- async function S(e, t) {
79
- let n = await v(e);
80
- return l(n, t);
91
+ async function O(e, t) {
92
+ let n = await w(e);
93
+ return p(n, t);
81
94
  }
82
- async function C(e) {
83
- return o(e, { fetch: g() });
95
+ async function k(e) {
96
+ return u(e, { fetch: S() });
84
97
  }
85
- async function w(e) {
98
+ async function A(e) {
86
99
  return t(a, e);
87
100
  }
88
- function T(e, t, n) {
89
- let r = a.any(a.sym(e), f);
90
- return Promise.resolve().then(() => r || E(e).catch((t) => {
101
+ function j(e, t, n) {
102
+ let r = a.any(a.sym(e), _);
103
+ return Promise.resolve().then(() => r || M(e).catch((t) => {
91
104
  throw Error(`Error fetching rel=ACL header for ${e}: ${t}`);
92
105
  })).then((r) => {
93
- let i = D(e, t, r.uri, n);
106
+ let i = N(e, t, r.uri, n);
94
107
  if (!a.fetcher) throw Error("Cannot PUT this, store has no fetcher");
95
108
  return a.fetcher.webOperation("PUT", r.uri, {
96
109
  data: i,
@@ -101,40 +114,45 @@ function p(a) {
101
114
  });
102
115
  });
103
116
  }
104
- function E(e) {
117
+ function M(e) {
105
118
  let t = a.fetcher;
106
119
  if (!t) throw Error("Cannot fetch ACL rel, store has no fetcher");
107
120
  return t.load(e).then((t) => {
108
121
  if (!t.ok) throw Error("fetchACLRel: While loading:" + t.error);
109
- let n = a.any(a.sym(e), f);
122
+ let n = a.any(a.sym(e), _);
110
123
  if (!n) throw Error("fetchACLRel: No Link rel=ACL header for " + e);
111
124
  return n;
112
125
  });
113
126
  }
114
- function D(e, t, a, o = {}) {
115
- let s = o.public || [], c = r(), l = n("http://www.w3.org/ns/auth/acl#"), u = c.sym(`${a}#a1`), f = c.sym(a), p = c.sym(e);
116
- if (c.add(u, d.rdf("type"), l("Authorization"), f), c.add(u, l("accessTo"), p, f), o.defaultForNew && c.add(u, l("default"), p, f), c.add(u, l("agent"), t, f), c.add(u, l("mode"), l("Read"), f), c.add(u, l("mode"), l("Write"), f), c.add(u, l("mode"), l("Control"), f), s.length) {
117
- u = c.sym(`${a}#a2`), c.add(u, d.rdf("type"), l("Authorization"), f), c.add(u, l("accessTo"), p, f), c.add(u, l("agentClass"), d.foaf("Agent"), f);
118
- for (let e = 0; e < s.length; e++) c.add(u, l("mode"), l(s[e]), f);
127
+ function N(e, t, a, o = {}) {
128
+ let c = o.public || [], l = r(), u = n("http://www.w3.org/ns/auth/acl#"), d = l.sym(`${a}#a1`), f = l.sym(a), p = l.sym(e);
129
+ if (l.add(d, s.rdf("type"), u("Authorization"), f), l.add(d, u("accessTo"), p, f), o.defaultForNew && l.add(d, u("default"), p, f), l.add(d, u("agent"), t, f), l.add(d, u("mode"), u("Read"), f), l.add(d, u("mode"), u("Write"), f), l.add(d, u("mode"), u("Control"), f), c.length) {
130
+ d = l.sym(`${a}#a2`), l.add(d, s.rdf("type"), u("Authorization"), f), l.add(d, u("accessTo"), p, f), l.add(d, u("agentClass"), s.foaf("Agent"), f);
131
+ for (let e = 0; e < c.length; e++) l.add(d, u("mode"), u(c[e]), f);
119
132
  }
120
- return i(f, c, a);
133
+ return i(f, l, a);
121
134
  }
122
135
  return {
123
- findAclDocUrl: _,
124
- findEffectiveAcl: v,
125
- findAccessGrants: y,
126
- roleFromModes: m,
127
- modesFromRole: h,
128
- planGrant: b,
129
- planRevoke: x,
130
- planPublicRead: S,
131
- applyPlan: C,
132
- classifyAccessControlSubject: w,
133
- setACLUserPublic: T,
134
- genACLText: D
136
+ findAclDocUrl: C,
137
+ findEffectiveAcl: w,
138
+ findAccessGrants: T,
139
+ roleFromModes: v,
140
+ modesFromRole: y,
141
+ publicRoleFromModes: b,
142
+ modesFromPublicRole: x,
143
+ planGrant: E,
144
+ planRevoke: D,
145
+ planPublicRead: O,
146
+ applyPlan: k,
147
+ classifyAccessControlSubject: A,
148
+ setACLUserPublic: j,
149
+ genACLText: N,
150
+ Authenticated: o,
151
+ Public: c,
152
+ PUBLIC_ACCESS_ROLES: g
135
153
  };
136
154
  }
137
155
  //#endregion
138
- export { d as ACCESS_ROLES, f as ACL_LINK, p as createAclLogic };
156
+ export { h as ACCESS_ROLES, _ as ACL_LINK, s as Authenticated, g as PUBLIC_ACCESS_ROLES, l as Public, v as createAclLogic };
139
157
 
140
158
  //# sourceMappingURL=aclLogic.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aclLogic.esm.js","names":[],"sources":["../../src/acl/aclLogic.ts"],"sourcesContent":["import { applyPlan as applyAuthorizationPlan, findEffectiveACL, planGrant as planAuthorizationGrant, planPublicRead as planAuthorizationPublicRead, planRevoke as planAuthorizationRevoke, type AccessMode, type AccessSubject, type ACLContext, type Authorization, type PatchPlan } from '@dokieli/web-access-control'\nimport { graph, NamedNode, Namespace, serialize, sym } from 'rdflib'\nimport type { AclLogic } from '../types'\nimport { ns as namespace } from '../util/ns'\nimport * as accessControlSubjects from './accessControlSubjects'\n\n// Will remove the below comment when i'm done with the manage access work\n// Helpers available from @dokieli/web-access-control:\n// - Discovery: findEffectiveACL, parentContainer\n// - ACL context and parsing: buildACLContext, authorizationsFromDataset, parseTurtle\n// - Query helpers: agentsWithMode, hasControl, isPublic, modesFor, subjectsWithMode\n// - Plan helpers: planContainerACL, planGrant, planOwnerControl, planPublicRead, planRevoke\n// - Serialization and application: serializeTerm, toN3Patch, toSparqlUpdate, toTurtle, applyPlan, negotiatePatchContentType\n// - Link and allow parsing: allows, parseWacAllow, linkTargets, parseLinkHeader\n// - Terms and constants: ACCESS_MODES, ACL, Authenticated, FOAF, modeFromIRI, modeIRI, namedNode, Public, quad, RDF_TYPE, variable\n\nexport const ACCESS_ROLES = ['Owner', 'Editor', 'No Access', 'Viewer', 'Poster', 'Submitter'] as const\n\nexport type AccessRole = typeof ACCESS_ROLES[number]\n\nexport const ACL_LINK = sym(\n 'http://www.iana.org/assignments/link-relations/acl'\n)\n\nexport function createAclLogic(store): AclLogic {\n\n const ns = namespace\n const ACCESS_ROLE_RULES: Array<{ label: AccessRole, modes: AccessMode[] }> = [\n { label: 'Owner', modes: ['Read', 'Write', 'Control'] },\n { label: 'Editor', modes: ['Read', 'Write'] },\n { label: 'Poster', modes: ['Append', 'Read'] },\n { label: 'Submitter', modes: ['Append'] },\n { label: 'Viewer', modes: ['Read'] },\n { label: 'No Access', modes: [] }\n ]\n\n function roleFromModes (modes: Iterable<AccessMode>): AccessRole {\n const modeSet = new Set(modes)\n const matchingRule = ACCESS_ROLE_RULES.find(rule => rule.label !== 'No Access' && rule.modes.every(mode => modeSet.has(mode)))\n\n return matchingRule?.label ?? 'No Access'\n }\n\n function modesFromRole (role: AccessRole): AccessMode[] {\n return [...(ACCESS_ROLE_RULES.find(rule => rule.label === role)?.modes ?? [])]\n }\n\n function getFetch() {\n const fetcher = store.fetcher as {\n _fetch?: (url: string, init?: RequestInit) => Promise<Response>\n fetch?: (url: string, init?: RequestInit) => Promise<Response>\n } | undefined\n const fetch = fetcher?._fetch ?? fetcher?.fetch\n if (!fetch) {\n throw new Error('Cannot find effective ACL, store has no fetcher')\n }\n return fetch.bind(fetcher)\n }\n \n async function findAclDocUrl(url: NamedNode) {\n await store.fetcher.load(url)\n const docNode = store.any(url, ACL_LINK)\n if (!docNode) {\n throw new Error(`No ACL link discovered for ${url}`)\n }\n return docNode.value\n }\n\n async function findEffectiveAcl(resourceURL: string | NamedNode): Promise<ACLContext> {\n const url = typeof resourceURL === 'string' ? resourceURL : resourceURL.value\n return findEffectiveACL(url, { fetch: getFetch() })\n }\n\n async function findAccessGrants(resourceURL: string | NamedNode): Promise<Authorization[]> {\n const context = await findEffectiveAcl(resourceURL)\n return context.authorizations\n }\n\n async function planGrant(resourceURL: string | NamedNode, subject: AccessSubject, modes: AccessMode[]): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationGrant(context, subject, modes)\n }\n\n async function planRevoke(resourceURL: string | NamedNode, subject: AccessSubject): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationRevoke(context, subject)\n }\n\n async function planPublicRead(resourceURL: string | NamedNode, enabled: boolean): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationPublicRead(context, enabled)\n }\n\n async function applyPlan(plan: PatchPlan): Promise<Response> {\n return applyAuthorizationPlan(plan, { fetch: getFetch() })\n }\n\n async function classifyAccessControlSubject(principle: string) {\n return accessControlSubjects.classifyAccessControlSubject(store, principle)\n }\n /**\n * Simple Access Control\n *\n * This function sets up a simple default ACL for a resource, with\n * RWC for the owner, and a specified access (default none) for the public.\n * In all cases owner has read write control.\n * Parameter lists modes allowed to public\n *\n * @param options\n * @param options.public eg ['Read', 'Write']\n *\n * @returns Resolves with aclDoc uri on successful write\n */\n function setACLUserPublic ( \n docURI: string,\n me: NamedNode,\n options: {\n defaultForNew?: boolean,\n public?: []\n }\n ): Promise<NamedNode> {\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n return Promise.resolve()\n .then(() => {\n if (aclDoc) {\n return aclDoc as NamedNode\n }\n\n return fetchACLRel(docURI).catch(err => {\n throw new Error(`Error fetching rel=ACL header for ${docURI}: ${err}`)\n })\n })\n .then(aclDoc => {\n const aclText = genACLText(docURI, me, aclDoc.uri, options)\n if (!store.fetcher) {\n throw new Error('Cannot PUT this, store has no fetcher')\n }\n return store.fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(result => {\n if (!result.ok) {\n throw new Error('Error writing ACL text: ' + result.error)\n }\n\n return aclDoc\n })\n })\n }\n\n /**\n * @param docURI\n * @returns\n */\n function fetchACLRel (docURI: string): Promise<NamedNode> {\n const fetcher = store.fetcher\n if (!fetcher) {\n throw new Error('Cannot fetch ACL rel, store has no fetcher')\n }\n\n return fetcher.load(docURI).then(result => {\n if (!result.ok) {\n throw new Error('fetchACLRel: While loading:' + (result as any).error)\n }\n\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n if (!aclDoc) {\n throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI)\n }\n\n return aclDoc as NamedNode\n })\n }\n\n /**\n * @param docURI\n * @param me\n * @param aclURI\n * @param options\n *\n * @returns Serialized ACL\n */\n function genACLText (\n docURI: string,\n me: NamedNode,\n aclURI: string,\n options: {\n defaultForNew?: boolean,\n public?: []\n } = {}\n ): string | undefined {\n const optPublic = options.public || []\n const g = graph()\n const auth = Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(`${aclURI}#a1`)\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n if (options.defaultForNew) {\n g.add(a, auth('default'), doc, acl)\n }\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n if (optPublic.length) {\n a = g.sym(`${aclURI}#a2`)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n for (let p = 0; p < optPublic.length; p++) {\n g.add(a, auth('mode'), auth(optPublic[p]), acl) // Like 'Read' etc\n }\n }\n return serialize(acl, g, aclURI)\n }\n return {\n findAclDocUrl,\n findEffectiveAcl,\n findAccessGrants,\n roleFromModes,\n modesFromRole,\n planGrant,\n planRevoke,\n planPublicRead,\n applyPlan,\n classifyAccessControlSubject,\n setACLUserPublic,\n genACLText\n }\n}"],"mappings":";;;;;AAgBA,IAAa,IAAe;CAAC;CAAS;CAAU;CAAa;CAAU;CAAU;AAAW,GAI/E,IAAW,EACpB,oDACJ;AAEA,SAAgB,EAAe,GAAiB;CAE5C,IAAM,IAAK,GACL,IAAuE;EACzE;GAAE,OAAO;GAAS,OAAO;IAAC;IAAQ;IAAS;GAAS;EAAE;EACtD;GAAE,OAAO;GAAU,OAAO,CAAC,QAAQ,OAAO;EAAE;EAC5C;GAAE,OAAO;GAAU,OAAO,CAAC,UAAU,MAAM;EAAE;EAC7C;GAAE,OAAO;GAAa,OAAO,CAAC,QAAQ;EAAE;EACxC;GAAE,OAAO;GAAU,OAAO,CAAC,MAAM;EAAE;EACnC;GAAE,OAAO;GAAa,OAAO,CAAC;EAAE;CACpC;CAEA,SAAS,EAAe,GAAyC;EAC7D,IAAM,IAAU,IAAI,IAAI,CAAK;EAG7B,OAFqB,EAAkB,MAAK,MAAQ,EAAK,UAAU,eAAe,EAAK,MAAM,OAAM,MAAQ,EAAQ,IAAI,CAAI,CAAC,CAErH,CAAA,EAAc,SAAS;CAClC;CAEA,SAAS,EAAe,GAAgC;EACpD,OAAO,CAAC,GAAI,EAAkB,MAAK,MAAQ,EAAK,UAAU,CAAI,CAAC,EAAE,SAAS,CAAC,CAAE;CACjF;CAEA,SAAS,IAAW;EAChB,IAAM,IAAU,EAAM,SAIhB,IAAQ,GAAS,UAAU,GAAS;EAC1C,IAAI,CAAC,GACD,MAAU,MAAM,iDAAiD;EAErE,OAAO,EAAM,KAAK,CAAO;CAC7B;CAEA,eAAe,EAAc,GAAgB;EACzC,MAAM,EAAM,QAAQ,KAAK,CAAG;EAC5B,IAAM,IAAU,EAAM,IAAI,GAAK,CAAQ;EACvC,IAAI,CAAC,GACD,MAAU,MAAM,8BAA8B,GAAK;EAEvD,OAAO,EAAQ;CACnB;CAEA,eAAe,EAAiB,GAAsD;EAClF,IAAM,IAAM,OAAO,KAAgB,WAAW,IAAc,EAAY;EACxE,OAAO,EAAiB,GAAK,EAAE,OAAO,EAAS,EAAE,CAAC;CACtD;CAEA,eAAe,EAAiB,GAA2D;EAEvF,QAAO,MADe,EAAiB,CAAW,EAAA,CACnC;CACnB;CAEA,eAAe,EAAU,GAAiC,GAAwB,GAAyC;EACvH,IAAM,IAAU,MAAM,EAAiB,CAAW;EAClD,OAAO,EAAuB,GAAS,GAAS,CAAK;CACzD;CAEA,eAAe,EAAW,GAAiC,GAA4C;EACnG,IAAM,IAAU,MAAM,EAAiB,CAAW;EAClD,OAAO,EAAwB,GAAS,CAAO;CACnD;CAEA,eAAe,EAAe,GAAiC,GAAsC;EACjG,IAAM,IAAU,MAAM,EAAiB,CAAW;EAClD,OAAO,EAA4B,GAAS,CAAO;CACvD;CAEA,eAAe,EAAU,GAAoC;EACzD,OAAO,EAAuB,GAAM,EAAE,OAAO,EAAS,EAAE,CAAC;CAC7D;CAEA,eAAe,EAA6B,GAAmB;EAC3D,OAAO,EAAmD,GAAO,CAAS;CAC9E;CAcA,SAAS,EACT,GACA,GACA,GAIsB;EACtB,IAAM,IAAS,EAAM,IACjB,EAAM,IAAI,CAAM,GAChB,CACJ;EAEA,OAAO,QAAQ,QAAQ,CAAC,CACnB,WACG,KAIG,EAAY,CAAM,CAAC,CAAC,OAAM,MAAO;GACpC,MAAU,MAAM,qCAAqC,EAAO,IAAI,GAAK;EACzE,CAAC,CACA,CAAC,CACD,MAAK,MAAU;GAChB,IAAM,IAAU,EAAW,GAAQ,GAAI,EAAO,KAAK,CAAO;GAC1D,IAAI,CAAC,EAAM,SACP,MAAU,MAAM,uCAAuC;GAE3D,OAAO,EAAM,QACR,aAAa,OAAO,EAAO,KAAK;IACjC,MAAM;IACN,aAAa;GACb,CAAC,CAAC,CACD,MAAK,MAAU;IAChB,IAAI,CAAC,EAAO,IACR,MAAU,MAAM,6BAA6B,EAAO,KAAK;IAG7D,OAAO;GACP,CAAC;EACL,CAAC;CACL;CAMA,SAAS,EAAa,GAAoC;EACtD,IAAM,IAAU,EAAM;EACtB,IAAI,CAAC,GACD,MAAU,MAAM,4CAA4C;EAGhE,OAAO,EAAQ,KAAK,CAAM,CAAC,CAAC,MAAK,MAAU;GACvC,IAAI,CAAC,EAAO,IACR,MAAU,MAAM,gCAAiC,EAAe,KAAK;GAGzE,IAAM,IAAS,EAAM,IACrB,EAAM,IAAI,CAAM,GAChB,CACA;GAEA,IAAI,CAAC,GACL,MAAU,MAAM,6CAA6C,CAAM;GAGnE,OAAO;EACX,CAAC;CACL;CAUA,SAAS,EACT,GACA,GACA,GACA,IAGQ,CAAC,GACa;EAClB,IAAM,IAAY,EAAQ,UAAU,CAAC,GAC/B,IAAI,EAAM,GACV,IAAO,EAAU,gCAAgC,GACnD,IAAI,EAAE,IAAI,GAAG,EAAO,IAAI,GACtB,IAAM,EAAE,IAAI,CAAM,GAClB,IAAM,EAAE,IAAI,CAAM;EAWxB,IAVA,EAAE,IAAI,GAAG,EAAG,IAAI,MAAM,GAAG,EAAK,eAAe,GAAG,CAAG,GACnD,EAAE,IAAI,GAAG,EAAK,UAAU,GAAG,GAAK,CAAG,GAC/B,EAAQ,iBACR,EAAE,IAAI,GAAG,EAAK,SAAS,GAAG,GAAK,CAAG,GAEtC,EAAE,IAAI,GAAG,EAAK,OAAO,GAAG,GAAI,CAAG,GAC/B,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,MAAM,GAAG,CAAG,GACxC,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,OAAO,GAAG,CAAG,GACzC,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,SAAS,GAAG,CAAG,GAEvC,EAAU,QAAQ;GAIlB,AAHA,IAAI,EAAE,IAAI,GAAG,EAAO,IAAI,GACxB,EAAE,IAAI,GAAG,EAAG,IAAI,MAAM,GAAG,EAAK,eAAe,GAAG,CAAG,GACnD,EAAE,IAAI,GAAG,EAAK,UAAU,GAAG,GAAK,CAAG,GACnC,EAAE,IAAI,GAAG,EAAK,YAAY,GAAG,EAAG,KAAK,OAAO,GAAG,CAAG;GAClD,KAAK,IAAI,IAAI,GAAG,IAAI,EAAU,QAAQ,KACtC,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,EAAU,EAAE,GAAG,CAAG;EAElD;EACA,OAAO,EAAU,GAAK,GAAG,CAAM;CACnC;CACA,OAAO;EACH;EACA;EACA;EACA;EACA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,WAAA;EACA,8BAAA;EACA;EACA;CACJ;AACJ"}
1
+ {"version":3,"file":"aclLogic.esm.js","names":[],"sources":["../../src/acl/aclLogic.ts"],"sourcesContent":["import { applyPlan as applyAuthorizationPlan, Authenticated, findEffectiveACL, planGrant as planAuthorizationGrant, planPublicRead as planAuthorizationPublicRead, planRevoke as planAuthorizationRevoke, Public, type AccessMode, type AccessSubject, type ACLContext, type Authorization, type PatchPlan } from '@dokieli/web-access-control'\nimport { graph, NamedNode, Namespace, serialize, sym } from 'rdflib'\nimport type { AclLogic } from '../types'\nimport { ns as namespace } from '../util/ns'\nimport * as accessControlSubjects from './accessControlSubjects'\n\n// Will remove the below comment when i'm done with the manage access work\n// Helpers available from @dokieli/web-access-control:\n// - Discovery: findEffectiveACL, parentContainer\n// - ACL context and parsing: buildACLContext, authorizationsFromDataset, parseTurtle\n// - Query helpers: agentsWithMode, hasControl, isPublic, modesFor, subjectsWithMode\n// - Plan helpers: planContainerACL, planGrant, planOwnerControl, planPublicRead, planRevoke\n// - Serialization and application: serializeTerm, toN3Patch, toSparqlUpdate, toTurtle, applyPlan, negotiatePatchContentType\n// - Link and allow parsing: allows, parseWacAllow, linkTargets, parseLinkHeader\n// - Terms and constants: ACCESS_MODES, ACL, Authenticated, FOAF, modeFromIRI, modeIRI, namedNode, Public, quad, RDF_TYPE, variable\n\nexport const ACCESS_ROLES = ['Owner', 'Editor', 'No Access', 'Viewer', 'Poster', 'Submitter'] as const\nexport const PUBLIC_ACCESS_ROLES = ['No Access', 'Viewer'] as const\nexport { Authenticated, Public } from '@dokieli/web-access-control'\n\nexport type AccessRole = typeof ACCESS_ROLES[number]\nexport type PublicAccessRole = typeof PUBLIC_ACCESS_ROLES[number]\n\nexport const ACL_LINK = sym(\n 'http://www.iana.org/assignments/link-relations/acl'\n)\n\nexport function createAclLogic(store): AclLogic {\n\n const ns = namespace\n const ACCESS_ROLE_RULES: Array<{ label: AccessRole, modes: AccessMode[] }> = [\n { label: 'Owner', modes: ['Read', 'Write', 'Control'] },\n { label: 'Editor', modes: ['Read', 'Write'] },\n { label: 'Poster', modes: ['Append', 'Read'] },\n { label: 'Submitter', modes: ['Append'] },\n { label: 'Viewer', modes: ['Read'] },\n { label: 'No Access', modes: [] }\n ]\n const PUBLIC_ROLE_RULES: Array<{ label: PublicAccessRole, modes: AccessMode[] }> = [\n { label: 'Viewer', modes: ['Read'] },\n { label: 'No Access', modes: [] }\n ]\n\n function roleFromModes (modes: Iterable<AccessMode>): AccessRole {\n const modeSet = new Set(modes)\n const matchingRule = ACCESS_ROLE_RULES.find(rule => rule.label !== 'No Access' && rule.modes.every(mode => modeSet.has(mode)))\n\n return matchingRule?.label ?? 'No Access'\n }\n\n function modesFromRole (role: AccessRole): AccessMode[] {\n return [...(ACCESS_ROLE_RULES.find(rule => rule.label === role)?.modes ?? [])]\n }\n\n function publicRoleFromModes (modes: Iterable<AccessMode>): PublicAccessRole {\n const modeSet = new Set(modes)\n const matchingRule = PUBLIC_ROLE_RULES.find(rule => rule.label !== 'No Access' && rule.modes.every(mode => modeSet.has(mode)))\n\n return matchingRule?.label ?? 'No Access'\n }\n\n function modesFromPublicRole (role: PublicAccessRole): AccessMode[] {\n return [...(PUBLIC_ROLE_RULES.find(rule => rule.label === role)?.modes ?? [])]\n }\n\n function getFetch() {\n const fetcher = store.fetcher as {\n _fetch?: (url: string, init?: RequestInit) => Promise<Response>\n fetch?: (url: string, init?: RequestInit) => Promise<Response>\n } | undefined\n const fetch = fetcher?._fetch ?? fetcher?.fetch\n if (!fetch) {\n throw new Error('Cannot find effective ACL, store has no fetcher')\n }\n return fetch.bind(fetcher)\n }\n \n async function findAclDocUrl(url: NamedNode) {\n await store.fetcher.load(url)\n const docNode = store.any(url, ACL_LINK)\n if (!docNode) {\n throw new Error(`No ACL link discovered for ${url}`)\n }\n return docNode.value\n }\n\n async function findEffectiveAcl(resourceURL: string | NamedNode): Promise<ACLContext> {\n const url = typeof resourceURL === 'string' ? resourceURL : resourceURL.value\n return findEffectiveACL(url, { fetch: getFetch() })\n }\n\n async function findAccessGrants(resourceURL: string | NamedNode): Promise<Authorization[]> {\n const context = await findEffectiveAcl(resourceURL)\n return context.authorizations\n }\n\n async function planGrant(resourceURL: string | NamedNode, subject: AccessSubject, modes: AccessMode[]): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationGrant(context, subject, modes)\n }\n\n async function planRevoke(resourceURL: string | NamedNode, subject: AccessSubject): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationRevoke(context, subject)\n }\n\n async function planPublicRead(resourceURL: string | NamedNode, enabled: boolean): Promise<PatchPlan> {\n const context = await findEffectiveAcl(resourceURL)\n return planAuthorizationPublicRead(context, enabled)\n }\n\n async function applyPlan(plan: PatchPlan): Promise<Response> {\n return applyAuthorizationPlan(plan, { fetch: getFetch() })\n }\n\n async function classifyAccessControlSubject(principle: string) {\n return accessControlSubjects.classifyAccessControlSubject(store, principle)\n }\n /**\n * Simple Access Control\n *\n * This function sets up a simple default ACL for a resource, with\n * RWC for the owner, and a specified access (default none) for the public.\n * In all cases owner has read write control.\n * Parameter lists modes allowed to public\n *\n * @param options\n * @param options.public eg ['Read', 'Write']\n *\n * @returns Resolves with aclDoc uri on successful write\n */\n function setACLUserPublic ( \n docURI: string,\n me: NamedNode,\n options: {\n defaultForNew?: boolean,\n public?: []\n }\n ): Promise<NamedNode> {\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n return Promise.resolve()\n .then(() => {\n if (aclDoc) {\n return aclDoc as NamedNode\n }\n\n return fetchACLRel(docURI).catch(err => {\n throw new Error(`Error fetching rel=ACL header for ${docURI}: ${err}`)\n })\n })\n .then(aclDoc => {\n const aclText = genACLText(docURI, me, aclDoc.uri, options)\n if (!store.fetcher) {\n throw new Error('Cannot PUT this, store has no fetcher')\n }\n return store.fetcher\n .webOperation('PUT', aclDoc.uri, {\n data: aclText,\n contentType: 'text/turtle'\n })\n .then(result => {\n if (!result.ok) {\n throw new Error('Error writing ACL text: ' + result.error)\n }\n\n return aclDoc\n })\n })\n }\n\n /**\n * @param docURI\n * @returns\n */\n function fetchACLRel (docURI: string): Promise<NamedNode> {\n const fetcher = store.fetcher\n if (!fetcher) {\n throw new Error('Cannot fetch ACL rel, store has no fetcher')\n }\n\n return fetcher.load(docURI).then(result => {\n if (!result.ok) {\n throw new Error('fetchACLRel: While loading:' + (result as any).error)\n }\n\n const aclDoc = store.any(\n store.sym(docURI),\n ACL_LINK\n )\n\n if (!aclDoc) {\n throw new Error('fetchACLRel: No Link rel=ACL header for ' + docURI)\n }\n\n return aclDoc as NamedNode\n })\n }\n\n /**\n * @param docURI\n * @param me\n * @param aclURI\n * @param options\n *\n * @returns Serialized ACL\n */\n function genACLText (\n docURI: string,\n me: NamedNode,\n aclURI: string,\n options: {\n defaultForNew?: boolean,\n public?: []\n } = {}\n ): string | undefined {\n const optPublic = options.public || []\n const g = graph()\n const auth = Namespace('http://www.w3.org/ns/auth/acl#')\n let a = g.sym(`${aclURI}#a1`)\n const acl = g.sym(aclURI)\n const doc = g.sym(docURI)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n if (options.defaultForNew) {\n g.add(a, auth('default'), doc, acl)\n }\n g.add(a, auth('agent'), me, acl)\n g.add(a, auth('mode'), auth('Read'), acl)\n g.add(a, auth('mode'), auth('Write'), acl)\n g.add(a, auth('mode'), auth('Control'), acl)\n\n if (optPublic.length) {\n a = g.sym(`${aclURI}#a2`)\n g.add(a, ns.rdf('type'), auth('Authorization'), acl)\n g.add(a, auth('accessTo'), doc, acl)\n g.add(a, auth('agentClass'), ns.foaf('Agent'), acl)\n for (let p = 0; p < optPublic.length; p++) {\n g.add(a, auth('mode'), auth(optPublic[p]), acl) // Like 'Read' etc\n }\n }\n return serialize(acl, g, aclURI)\n }\n return {\n findAclDocUrl,\n findEffectiveAcl,\n findAccessGrants,\n roleFromModes,\n modesFromRole,\n publicRoleFromModes,\n modesFromPublicRole,\n planGrant,\n planRevoke,\n planPublicRead,\n applyPlan,\n classifyAccessControlSubject,\n setACLUserPublic,\n genACLText,\n Authenticated,\n Public,\n PUBLIC_ACCESS_ROLES\n }\n}"],"mappings":";;;;;AAgBA,IAAa,IAAe;CAAC;CAAS;CAAU;CAAa;CAAU;CAAU;AAAW,GAC/E,IAAsB,CAAC,aAAa,QAAQ,GAM5C,IAAW,EACpB,oDACJ;AAEA,SAAgB,EAAe,GAAiB;CAE5C,IAAM,IAAK,GACL,IAAuE;EACzE;GAAE,OAAO;GAAS,OAAO;IAAC;IAAQ;IAAS;GAAS;EAAE;EACtD;GAAE,OAAO;GAAU,OAAO,CAAC,QAAQ,OAAO;EAAE;EAC5C;GAAE,OAAO;GAAU,OAAO,CAAC,UAAU,MAAM;EAAE;EAC7C;GAAE,OAAO;GAAa,OAAO,CAAC,QAAQ;EAAE;EACxC;GAAE,OAAO;GAAU,OAAO,CAAC,MAAM;EAAE;EACnC;GAAE,OAAO;GAAa,OAAO,CAAC;EAAE;CACpC,GACM,IAA6E,CAC/E;EAAE,OAAO;EAAU,OAAO,CAAC,MAAM;CAAE,GACnC;EAAE,OAAO;EAAa,OAAO,CAAC;CAAE,CACpC;CAEA,SAAS,EAAe,GAAyC;EAC7D,IAAM,IAAU,IAAI,IAAI,CAAK;EAG7B,OAFqB,EAAkB,MAAK,MAAQ,EAAK,UAAU,eAAe,EAAK,MAAM,OAAM,MAAQ,EAAQ,IAAI,CAAI,CAAC,CAErH,CAAA,EAAc,SAAS;CAClC;CAEA,SAAS,EAAe,GAAgC;EACpD,OAAO,CAAC,GAAI,EAAkB,MAAK,MAAQ,EAAK,UAAU,CAAI,CAAC,EAAE,SAAS,CAAC,CAAE;CACjF;CAEA,SAAS,EAAqB,GAA+C;EACzE,IAAM,IAAU,IAAI,IAAI,CAAK;EAG7B,OAFqB,EAAkB,MAAK,MAAQ,EAAK,UAAU,eAAe,EAAK,MAAM,OAAM,MAAQ,EAAQ,IAAI,CAAI,CAAC,CAErH,CAAA,EAAc,SAAS;CAClC;CAEA,SAAS,EAAqB,GAAsC;EAChE,OAAO,CAAC,GAAI,EAAkB,MAAK,MAAQ,EAAK,UAAU,CAAI,CAAC,EAAE,SAAS,CAAC,CAAE;CACjF;CAEA,SAAS,IAAW;EAChB,IAAM,IAAU,EAAM,SAIhB,IAAQ,GAAS,UAAU,GAAS;EAC1C,IAAI,CAAC,GACD,MAAU,MAAM,iDAAiD;EAErE,OAAO,EAAM,KAAK,CAAO;CAC7B;CAEA,eAAe,EAAc,GAAgB;EACzC,MAAM,EAAM,QAAQ,KAAK,CAAG;EAC5B,IAAM,IAAU,EAAM,IAAI,GAAK,CAAQ;EACvC,IAAI,CAAC,GACD,MAAU,MAAM,8BAA8B,GAAK;EAEvD,OAAO,EAAQ;CACnB;CAEA,eAAe,EAAiB,GAAsD;EAClF,IAAM,IAAM,OAAO,KAAgB,WAAW,IAAc,EAAY;EACxE,OAAO,EAAiB,GAAK,EAAE,OAAO,EAAS,EAAE,CAAC;CACtD;CAEA,eAAe,EAAiB,GAA2D;EAEvF,QAAO,MADe,EAAiB,CAAW,EAAA,CACnC;CACnB;CAEA,eAAe,EAAU,GAAiC,GAAwB,GAAyC;EACvH,IAAM,IAAU,MAAM,EAAiB,CAAW;EAClD,OAAO,EAAuB,GAAS,GAAS,CAAK;CACzD;CAEA,eAAe,EAAW,GAAiC,GAA4C;EACnG,IAAM,IAAU,MAAM,EAAiB,CAAW;EAClD,OAAO,EAAwB,GAAS,CAAO;CACnD;CAEA,eAAe,EAAe,GAAiC,GAAsC;EACjG,IAAM,IAAU,MAAM,EAAiB,CAAW;EAClD,OAAO,EAA4B,GAAS,CAAO;CACvD;CAEA,eAAe,EAAU,GAAoC;EACzD,OAAO,EAAuB,GAAM,EAAE,OAAO,EAAS,EAAE,CAAC;CAC7D;CAEA,eAAe,EAA6B,GAAmB;EAC3D,OAAO,EAAmD,GAAO,CAAS;CAC9E;CAcA,SAAS,EACT,GACA,GACA,GAIsB;EACtB,IAAM,IAAS,EAAM,IACjB,EAAM,IAAI,CAAM,GAChB,CACJ;EAEA,OAAO,QAAQ,QAAQ,CAAC,CACnB,WACG,KAIG,EAAY,CAAM,CAAC,CAAC,OAAM,MAAO;GACpC,MAAU,MAAM,qCAAqC,EAAO,IAAI,GAAK;EACzE,CAAC,CACA,CAAC,CACD,MAAK,MAAU;GAChB,IAAM,IAAU,EAAW,GAAQ,GAAI,EAAO,KAAK,CAAO;GAC1D,IAAI,CAAC,EAAM,SACP,MAAU,MAAM,uCAAuC;GAE3D,OAAO,EAAM,QACR,aAAa,OAAO,EAAO,KAAK;IACjC,MAAM;IACN,aAAa;GACb,CAAC,CAAC,CACD,MAAK,MAAU;IAChB,IAAI,CAAC,EAAO,IACR,MAAU,MAAM,6BAA6B,EAAO,KAAK;IAG7D,OAAO;GACP,CAAC;EACL,CAAC;CACL;CAMA,SAAS,EAAa,GAAoC;EACtD,IAAM,IAAU,EAAM;EACtB,IAAI,CAAC,GACD,MAAU,MAAM,4CAA4C;EAGhE,OAAO,EAAQ,KAAK,CAAM,CAAC,CAAC,MAAK,MAAU;GACvC,IAAI,CAAC,EAAO,IACR,MAAU,MAAM,gCAAiC,EAAe,KAAK;GAGzE,IAAM,IAAS,EAAM,IACrB,EAAM,IAAI,CAAM,GAChB,CACA;GAEA,IAAI,CAAC,GACL,MAAU,MAAM,6CAA6C,CAAM;GAGnE,OAAO;EACX,CAAC;CACL;CAUA,SAAS,EACT,GACA,GACA,GACA,IAGQ,CAAC,GACa;EAClB,IAAM,IAAY,EAAQ,UAAU,CAAC,GAC/B,IAAI,EAAM,GACV,IAAO,EAAU,gCAAgC,GACnD,IAAI,EAAE,IAAI,GAAG,EAAO,IAAI,GACtB,IAAM,EAAE,IAAI,CAAM,GAClB,IAAM,EAAE,IAAI,CAAM;EAWxB,IAVA,EAAE,IAAI,GAAG,EAAG,IAAI,MAAM,GAAG,EAAK,eAAe,GAAG,CAAG,GACnD,EAAE,IAAI,GAAG,EAAK,UAAU,GAAG,GAAK,CAAG,GAC/B,EAAQ,iBACR,EAAE,IAAI,GAAG,EAAK,SAAS,GAAG,GAAK,CAAG,GAEtC,EAAE,IAAI,GAAG,EAAK,OAAO,GAAG,GAAI,CAAG,GAC/B,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,MAAM,GAAG,CAAG,GACxC,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,OAAO,GAAG,CAAG,GACzC,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,SAAS,GAAG,CAAG,GAEvC,EAAU,QAAQ;GAIlB,AAHA,IAAI,EAAE,IAAI,GAAG,EAAO,IAAI,GACxB,EAAE,IAAI,GAAG,EAAG,IAAI,MAAM,GAAG,EAAK,eAAe,GAAG,CAAG,GACnD,EAAE,IAAI,GAAG,EAAK,UAAU,GAAG,GAAK,CAAG,GACnC,EAAE,IAAI,GAAG,EAAK,YAAY,GAAG,EAAG,KAAK,OAAO,GAAG,CAAG;GAClD,KAAK,IAAI,IAAI,GAAG,IAAI,EAAU,QAAQ,KACtC,EAAE,IAAI,GAAG,EAAK,MAAM,GAAG,EAAK,EAAU,EAAE,GAAG,CAAG;EAElD;EACA,OAAO,EAAU,GAAK,GAAG,CAAM;CACnC;CACA,OAAO;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAA;EACA,YAAA;EACA,gBAAA;EACA,WAAA;EACA,8BAAA;EACA;EACA;EACA;EACA;EACA;CACJ;AACJ"}
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./authSession/identityState.cjs.js"),t=require("./acl/aclLogic.cjs.js"),n=require("./authn/authUtil.cjs.js"),r=require("./logic/CustomError.cjs.js"),i=require("./typeIndex/typeIndexLogic.cjs.js"),a=require("./directory/directoryLogic.cjs.js"),o=require("./logic/solidLogicSingleton.cjs.js"),s=require("./authn/serverLogout.cjs.js"),c=require("./issuer/issuerLogic.cjs.js");var l=o.solidLogicSingleton.authn,u=o.solidLogicSingleton.authn.authSession,d=o.solidLogicSingleton.store;exports.ACCESS_ROLES=t.ACCESS_ROLES,exports.ACL_LINK=t.ACL_LINK,exports.CrossOriginForbiddenError=r.CrossOriginForbiddenError,exports.DEFAULT_DIRECTORY_CATALOG_URL=a.DEFAULT_DIRECTORY_CATALOG_URL,exports.DEFAULT_DIRECTORY_SOURCES=a.DEFAULT_DIRECTORY_SOURCES,exports.FetchError=r.FetchError,exports.NotEditableError=r.NotEditableError,exports.NotFoundError=r.NotFoundError,exports.SameOriginForbiddenError=r.SameOriginForbiddenError,exports.UnauthorizedError=r.UnauthorizedError,exports.WebOperationError=r.WebOperationError,exports.appContext=n.appContext,exports.authSession=u,exports.authn=l,exports.createDirectoryLogic=a.createDirectoryLogic,exports.createTypeIndexLogic=i.createTypeIndexLogic,exports.getSuggestedIssuers=c.getSuggestedIssuers,exports.offlineTestID=n.offlineTestID,exports.performServerSideLogout=s.performServerSideLogout,exports.reloadOnIdentityReplaced=e.reloadOnIdentityReplaced,exports.solidLogicSingleton=o.solidLogicSingleton,exports.store=d;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./authSession/identityState.cjs.js"),t=require("./acl/aclLogic.cjs.js"),n=require("./authn/authUtil.cjs.js"),r=require("./logic/CustomError.cjs.js"),i=require("./typeIndex/typeIndexLogic.cjs.js"),a=require("./directory/directoryLogic.cjs.js"),o=require("./logic/solidLogicSingleton.cjs.js"),s=require("./authn/serverLogout.cjs.js"),c=require("./issuer/issuerLogic.cjs.js");let l=require("@dokieli/web-access-control");var u=o.solidLogicSingleton.authn,d=o.solidLogicSingleton.authn.authSession,f=o.solidLogicSingleton.store;exports.ACCESS_ROLES=t.ACCESS_ROLES,exports.ACL_LINK=t.ACL_LINK,Object.defineProperty(exports,"Authenticated",{enumerable:!0,get:function(){return l.Authenticated}}),exports.CrossOriginForbiddenError=r.CrossOriginForbiddenError,exports.DEFAULT_DIRECTORY_CATALOG_URL=a.DEFAULT_DIRECTORY_CATALOG_URL,exports.DEFAULT_DIRECTORY_SOURCES=a.DEFAULT_DIRECTORY_SOURCES,exports.FetchError=r.FetchError,exports.NotEditableError=r.NotEditableError,exports.NotFoundError=r.NotFoundError,exports.PUBLIC_ACCESS_ROLES=t.PUBLIC_ACCESS_ROLES,Object.defineProperty(exports,"Public",{enumerable:!0,get:function(){return l.Public}}),exports.SameOriginForbiddenError=r.SameOriginForbiddenError,exports.UnauthorizedError=r.UnauthorizedError,exports.WebOperationError=r.WebOperationError,exports.appContext=n.appContext,exports.authSession=d,exports.authn=u,exports.createDirectoryLogic=a.createDirectoryLogic,exports.createTypeIndexLogic=i.createTypeIndexLogic,exports.getSuggestedIssuers=c.getSuggestedIssuers,exports.offlineTestID=n.offlineTestID,exports.performServerSideLogout=s.performServerSideLogout,exports.reloadOnIdentityReplaced=e.reloadOnIdentityReplaced,exports.solidLogicSingleton=o.solidLogicSingleton,exports.store=f;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// Make these variables directly accessible as it is what you need most of the time\n// This also makes these variable globaly accesible in mashlib\nimport { solidLogicSingleton } from './logic/solidLogicSingleton'\n\nconst authn = solidLogicSingleton.authn\nconst authSession = solidLogicSingleton.authn.authSession\nconst store = solidLogicSingleton.store\n\nexport { ACL_LINK, ACCESS_ROLES } from './acl/aclLogic'\nexport type { AccessRole } from './acl/aclLogic'\nexport { offlineTestID, appContext } from './authn/authUtil'\nexport { performServerSideLogout } from './authn/serverLogout'\nexport { reloadOnIdentityReplaced } from './authSession/identityState'\nexport { getSuggestedIssuers } from './issuer/issuerLogic'\nexport { createTypeIndexLogic } from './typeIndex/typeIndexLogic'\nexport { createDirectoryLogic, DEFAULT_DIRECTORY_CATALOG_URL, DEFAULT_DIRECTORY_SOURCES } from './directory/directoryLogic'\nexport type { AccessControlSubjectKind, AccessControlSubject } from './acl/accessControlSubjects'\nexport type { ACLContext, AccessMode, AccessSubject, Authorization, PatchPlan } from './types'\nexport type { AppDetails, SolidNamespace, AuthenticationContext, SolidLogic, ChatLogic, DirectoryLogic, DirectoryEntry, DirectorySearchOptions, DirectoryRelationshipLabel, DirectorySource } from './types'\nexport { UnauthorizedError, CrossOriginForbiddenError, SameOriginForbiddenError, NotFoundError, FetchError, NotEditableError, WebOperationError } from './logic/CustomError'\n\nexport {\n solidLogicSingleton, // solidLogicSingleton is exported entirely because it is used in solid-panes\n store,\n authn,\n authSession\n}\n"],"mappings":"ycAIA,IAAM,EAAQ,EAAA,oBAAoB,MAC5B,EAAc,EAAA,oBAAoB,MAAM,YACxC,EAAQ,EAAA,oBAAoB"}
1
+ {"version":3,"file":"index.cjs.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// Make these variables directly accessible as it is what you need most of the time\n// This also makes these variable globaly accesible in mashlib\nimport { solidLogicSingleton } from './logic/solidLogicSingleton'\n\nconst authn = solidLogicSingleton.authn\nconst authSession = solidLogicSingleton.authn.authSession\nconst store = solidLogicSingleton.store\n\nexport { ACL_LINK, ACCESS_ROLES, PUBLIC_ACCESS_ROLES, Authenticated, Public } from './acl/aclLogic'\nexport type { AccessRole, PublicAccessRole } from './acl/aclLogic'\nexport { offlineTestID, appContext } from './authn/authUtil'\nexport { performServerSideLogout } from './authn/serverLogout'\nexport { reloadOnIdentityReplaced } from './authSession/identityState'\nexport { getSuggestedIssuers } from './issuer/issuerLogic'\nexport { createTypeIndexLogic } from './typeIndex/typeIndexLogic'\nexport { createDirectoryLogic, DEFAULT_DIRECTORY_CATALOG_URL, DEFAULT_DIRECTORY_SOURCES } from './directory/directoryLogic'\nexport type { AccessControlSubjectKind, AccessControlSubject } from './acl/accessControlSubjects'\nexport type { ACLContext, AccessMode, AccessSubject, Authorization, PatchPlan } from './types'\nexport type { AppDetails, SolidNamespace, AuthenticationContext, SolidLogic, ChatLogic, DirectoryLogic, DirectoryEntry, DirectorySearchOptions, DirectoryRelationshipLabel, DirectorySource } from './types'\nexport { UnauthorizedError, CrossOriginForbiddenError, SameOriginForbiddenError, NotFoundError, FetchError, NotEditableError, WebOperationError } from './logic/CustomError'\n\nexport {\n solidLogicSingleton, // solidLogicSingleton is exported entirely because it is used in solid-panes\n store,\n authn,\n authSession\n}\n"],"mappings":"sfAIA,IAAM,EAAQ,EAAA,oBAAoB,MAC5B,EAAc,EAAA,oBAAoB,MAAM,YACxC,EAAQ,EAAA,oBAAoB"}
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ import { solidLogicSingleton } from './logic/solidLogicSingleton';
2
2
  declare const authn: import("./types").AuthnLogic;
3
3
  declare const authSession: import("./authSession/authSession").SessionWithLegacyEvents;
4
4
  declare const store: import("rdflib").LiveStore;
5
- export { ACL_LINK, ACCESS_ROLES } from './acl/aclLogic';
6
- export type { AccessRole } from './acl/aclLogic';
5
+ export { ACL_LINK, ACCESS_ROLES, PUBLIC_ACCESS_ROLES, Authenticated, Public } from './acl/aclLogic';
6
+ export type { AccessRole, PublicAccessRole } from './acl/aclLogic';
7
7
  export { offlineTestID, appContext } from './authn/authUtil';
8
8
  export { performServerSideLogout } from './authn/serverLogout';
9
9
  export { reloadOnIdentityReplaced } from './authSession/identityState';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,QAAA,MAAM,KAAK,8BAA4B,CAAA;AACvC,QAAA,MAAM,WAAW,6DAAwC,CAAA;AACzD,QAAA,MAAM,KAAK,4BAA4B,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC3H,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACjG,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC9F,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC5M,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5K,OAAO,EACL,mBAAmB,EAAE,6EAA6E;AAClG,KAAK,EACL,KAAK,EACL,WAAW,EACZ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAEjE,QAAA,MAAM,KAAK,8BAA4B,CAAA;AACvC,QAAA,MAAM,WAAW,6DAAwC,CAAA;AACzD,QAAA,MAAM,KAAK,4BAA4B,CAAA;AAEvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACnG,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC3H,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACjG,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC9F,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC5M,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAE5K,OAAO,EACL,mBAAmB,EAAE,6EAA6E;AAClG,KAAK,EACL,KAAK,EACL,WAAW,EACZ,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { reloadOnIdentityReplaced as e } from "./authSession/identityState.esm.js";
2
- import { ACCESS_ROLES as t, ACL_LINK as n } from "./acl/aclLogic.esm.js";
3
- import { appContext as r, offlineTestID as i } from "./authn/authUtil.esm.js";
4
- import { CrossOriginForbiddenError as a, FetchError as o, NotEditableError as s, NotFoundError as c, SameOriginForbiddenError as l, UnauthorizedError as u, WebOperationError as d } from "./logic/CustomError.esm.js";
5
- import { createTypeIndexLogic as f } from "./typeIndex/typeIndexLogic.esm.js";
6
- import { DEFAULT_DIRECTORY_CATALOG_URL as p, DEFAULT_DIRECTORY_SOURCES as m, createDirectoryLogic as h } from "./directory/directoryLogic.esm.js";
7
- import { solidLogicSingleton as g } from "./logic/solidLogicSingleton.esm.js";
8
- import { performServerSideLogout as _ } from "./authn/serverLogout.esm.js";
9
- import { getSuggestedIssuers as v } from "./issuer/issuerLogic.esm.js";
2
+ import { ACCESS_ROLES as t, ACL_LINK as n, Authenticated as r, PUBLIC_ACCESS_ROLES as i, Public as a } from "./acl/aclLogic.esm.js";
3
+ import { appContext as o, offlineTestID as s } from "./authn/authUtil.esm.js";
4
+ import { CrossOriginForbiddenError as c, FetchError as l, NotEditableError as u, NotFoundError as d, SameOriginForbiddenError as f, UnauthorizedError as p, WebOperationError as m } from "./logic/CustomError.esm.js";
5
+ import { createTypeIndexLogic as h } from "./typeIndex/typeIndexLogic.esm.js";
6
+ import { DEFAULT_DIRECTORY_CATALOG_URL as g, DEFAULT_DIRECTORY_SOURCES as _, createDirectoryLogic as v } from "./directory/directoryLogic.esm.js";
7
+ import { solidLogicSingleton as y } from "./logic/solidLogicSingleton.esm.js";
8
+ import { performServerSideLogout as b } from "./authn/serverLogout.esm.js";
9
+ import { getSuggestedIssuers as x } from "./issuer/issuerLogic.esm.js";
10
10
  //#region src/index.ts
11
- var y = g.authn, b = g.authn.authSession, x = g.store;
11
+ var S = y.authn, C = y.authn.authSession, w = y.store;
12
12
  //#endregion
13
- export { t as ACCESS_ROLES, n as ACL_LINK, a as CrossOriginForbiddenError, p as DEFAULT_DIRECTORY_CATALOG_URL, m as DEFAULT_DIRECTORY_SOURCES, o as FetchError, s as NotEditableError, c as NotFoundError, l as SameOriginForbiddenError, u as UnauthorizedError, d as WebOperationError, r as appContext, b as authSession, y as authn, h as createDirectoryLogic, f as createTypeIndexLogic, v as getSuggestedIssuers, i as offlineTestID, _ as performServerSideLogout, e as reloadOnIdentityReplaced, g as solidLogicSingleton, x as store };
13
+ export { t as ACCESS_ROLES, n as ACL_LINK, r as Authenticated, c as CrossOriginForbiddenError, g as DEFAULT_DIRECTORY_CATALOG_URL, _ as DEFAULT_DIRECTORY_SOURCES, l as FetchError, u as NotEditableError, d as NotFoundError, i as PUBLIC_ACCESS_ROLES, a as Public, f as SameOriginForbiddenError, p as UnauthorizedError, m as WebOperationError, o as appContext, C as authSession, S as authn, v as createDirectoryLogic, h as createTypeIndexLogic, x as getSuggestedIssuers, s as offlineTestID, b as performServerSideLogout, e as reloadOnIdentityReplaced, y as solidLogicSingleton, w as store };
14
14
 
15
15
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// Make these variables directly accessible as it is what you need most of the time\n// This also makes these variable globaly accesible in mashlib\nimport { solidLogicSingleton } from './logic/solidLogicSingleton'\n\nconst authn = solidLogicSingleton.authn\nconst authSession = solidLogicSingleton.authn.authSession\nconst store = solidLogicSingleton.store\n\nexport { ACL_LINK, ACCESS_ROLES } from './acl/aclLogic'\nexport type { AccessRole } from './acl/aclLogic'\nexport { offlineTestID, appContext } from './authn/authUtil'\nexport { performServerSideLogout } from './authn/serverLogout'\nexport { reloadOnIdentityReplaced } from './authSession/identityState'\nexport { getSuggestedIssuers } from './issuer/issuerLogic'\nexport { createTypeIndexLogic } from './typeIndex/typeIndexLogic'\nexport { createDirectoryLogic, DEFAULT_DIRECTORY_CATALOG_URL, DEFAULT_DIRECTORY_SOURCES } from './directory/directoryLogic'\nexport type { AccessControlSubjectKind, AccessControlSubject } from './acl/accessControlSubjects'\nexport type { ACLContext, AccessMode, AccessSubject, Authorization, PatchPlan } from './types'\nexport type { AppDetails, SolidNamespace, AuthenticationContext, SolidLogic, ChatLogic, DirectoryLogic, DirectoryEntry, DirectorySearchOptions, DirectoryRelationshipLabel, DirectorySource } from './types'\nexport { UnauthorizedError, CrossOriginForbiddenError, SameOriginForbiddenError, NotFoundError, FetchError, NotEditableError, WebOperationError } from './logic/CustomError'\n\nexport {\n solidLogicSingleton, // solidLogicSingleton is exported entirely because it is used in solid-panes\n store,\n authn,\n authSession\n}\n"],"mappings":";;;;;;;;;;AAIA,IAAM,IAAQ,EAAoB,OAC5B,IAAc,EAAoB,MAAM,aACxC,IAAQ,EAAoB"}
1
+ {"version":3,"file":"index.esm.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["// Make these variables directly accessible as it is what you need most of the time\n// This also makes these variable globaly accesible in mashlib\nimport { solidLogicSingleton } from './logic/solidLogicSingleton'\n\nconst authn = solidLogicSingleton.authn\nconst authSession = solidLogicSingleton.authn.authSession\nconst store = solidLogicSingleton.store\n\nexport { ACL_LINK, ACCESS_ROLES, PUBLIC_ACCESS_ROLES, Authenticated, Public } from './acl/aclLogic'\nexport type { AccessRole, PublicAccessRole } from './acl/aclLogic'\nexport { offlineTestID, appContext } from './authn/authUtil'\nexport { performServerSideLogout } from './authn/serverLogout'\nexport { reloadOnIdentityReplaced } from './authSession/identityState'\nexport { getSuggestedIssuers } from './issuer/issuerLogic'\nexport { createTypeIndexLogic } from './typeIndex/typeIndexLogic'\nexport { createDirectoryLogic, DEFAULT_DIRECTORY_CATALOG_URL, DEFAULT_DIRECTORY_SOURCES } from './directory/directoryLogic'\nexport type { AccessControlSubjectKind, AccessControlSubject } from './acl/accessControlSubjects'\nexport type { ACLContext, AccessMode, AccessSubject, Authorization, PatchPlan } from './types'\nexport type { AppDetails, SolidNamespace, AuthenticationContext, SolidLogic, ChatLogic, DirectoryLogic, DirectoryEntry, DirectorySearchOptions, DirectoryRelationshipLabel, DirectorySource } from './types'\nexport { UnauthorizedError, CrossOriginForbiddenError, SameOriginForbiddenError, NotFoundError, FetchError, NotEditableError, WebOperationError } from './logic/CustomError'\n\nexport {\n solidLogicSingleton, // solidLogicSingleton is exported entirely because it is used in solid-panes\n store,\n authn,\n authSession\n}\n"],"mappings":";;;;;;;;;;AAIA,IAAM,IAAQ,EAAoB,OAC5B,IAAc,EAAoB,MAAM,aACxC,IAAQ,EAAoB"}
package/dist/types.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { SessionWithLegacyEvents } from './authSession/authSession';
2
2
  import type { ACLContext, AccessMode, AccessSubject, Authorization, PatchPlan } from '@dokieli/web-access-control';
3
3
  import { LiveStore, NamedNode, Statement } from 'rdflib';
4
4
  import type { AccessControlSubject } from './acl/accessControlSubjects';
5
- import type { AccessRole } from './acl/aclLogic';
5
+ import type { AccessRole, PublicAccessRole } from './acl/aclLogic';
6
6
  export type AppDetails = {
7
7
  noun: string;
8
8
  appPathSegment: string;
@@ -85,6 +85,8 @@ export interface AclLogic {
85
85
  classifyAccessControlSubject: (principle: string) => Promise<AccessControlSubject | undefined>;
86
86
  roleFromModes: (modes: Iterable<AccessMode>) => AccessRole;
87
87
  modesFromRole: (role: AccessRole) => AccessMode[];
88
+ publicRoleFromModes: (modes: Iterable<AccessMode>) => PublicAccessRole;
89
+ modesFromPublicRole: (role: PublicAccessRole) => AccessMode[];
88
90
  planGrant: (resourceURL: string | NamedNode, subject: AccessSubject, modes: AccessMode[]) => Promise<PatchPlan>;
89
91
  planRevoke: (resourceURL: string | NamedNode, subject: AccessSubject) => Promise<PatchPlan>;
90
92
  planPublicRead: (resourceURL: string | NamedNode, enabled: boolean) => Promise<PatchPlan>;
@@ -97,6 +99,9 @@ export interface AclLogic {
97
99
  defaultForNew?: boolean;
98
100
  public?: [];
99
101
  }) => string | undefined;
102
+ Authenticated: AccessSubject;
103
+ Public: AccessSubject;
104
+ PUBLIC_ACCESS_ROLES: readonly PublicAccessRole[];
100
105
  }
101
106
  export type { ACLContext, AccessMode, AccessSubject, Authorization, PatchPlan };
102
107
  export interface InboxLogic {
@@ -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-0",
3
+ "version": "6.0.1-1",
4
4
  "description": "Core business logic of SolidOS",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -64,7 +64,7 @@
64
64
  "solidos-toolkit": "dev"
65
65
  },
66
66
  "dependencies": {
67
- "@dokieli/web-access-control": "^1.0.0",
67
+ "@dokieli/web-access-control": "^1.1.0",
68
68
  "@uvdsl/solid-oidc-client-browser": "^0.2.3",
69
69
  "solid-namespace": "^0.5.4",
70
70
  "vite": "^8.0.16",