@kubun/graphql 0.10.0 → 0.10.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.
- package/lib/context.js +1 -1
- package/package.json +5 -5
package/lib/context.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defer as e}from"@enkaku/async";import{withSpan as t}from"@enkaku/otel";import{DocumentID as o}from"@kubun/id";import{KubunAttributeKeys as r,KubunSpanNames as n}from"@kubun/protocol";export function createReadContext(l){let{store:a,viewerDID:i,accessChecker:s,viewerReadAccess:u}=l;function c(e,o,r){return null!=l.tracer?t(l.tracer,e,{attributes:o},async()=>r()):r()}function m(t,o){let r=!1,n=null,a=[];if(null==l.events)throw Error("Subscriptions require a document event emitter");let i=l.events.on("document:saved",e=>{if(t(e)){let t=o(e);null==n?a.push(t):(n.resolve(t),n=null)}}),s=()=>(i(),r=!0,Promise.resolve({done:!0,value:void 0}));return{[Symbol.asyncDispose]:()=>(i(),r=!0,Promise.resolve()),[Symbol.asyncIterator](){return this},next:()=>{if(r)return Promise.resolve({done:!0,value:void 0});let t=a.shift();return null!=t?Promise.resolve({value:t,done:!1}):(n=e()).promise.then(e=>({value:e,done:!1}))},return:s,throw:s}}return{getViewer:()=>i,async loadDocument(e){let t=`document:${e}`,i=l.complexity?.resolverTimings!=null?performance.now():0,u=await c(n.DATA_QUERY,{[r.DOCUMENT_ID]:e},async()=>{let t=await a.getDocument(o.fromString(e));return t?s&&!await s(t,"read")?(null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e}`,code:"KB07"}),null):(null!=l.complexity&&(l.complexity.resolverCount++,l.complexity.documentsScanned++),t):null});if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,o=l.complexity.resolverTimings.get(t)??0;l.complexity.resolverTimings.set(t,o+e)}return u},searchDocuments:async(e,t,o)=>await a.searchDocuments({query:e,modelIDs:t,first:o}),async resolveConnection(e,t){let o=`connection:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,u={modelIDs:e,filter:t.filter,owner:t.owner,catalogID:l.catalogID},m=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>{if(null!=t.search&&""!==t.search.trim()){let o=await a.searchDocuments({query:t.search,modelIDs:e,first:200});if(0===o.length){if(null!=l.complexity)for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);return{edges:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1,startCursor:null,endCursor:null}}}let r=o.map(e=>e.documentID),n=await a.listDocuments({modelIDs:e,docIDs:r}),i=n;if(s)for(let e of(i=[],n))await s(e,"read")?i.push(e):null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.id}`,code:"KB07"});let u=new Map(o.map(e=>[e.documentID,e.rank]));i.sort((e,t)=>Math.abs(u.get(t.id)??0)-Math.abs(u.get(e.id)??0));let c=i.slice(0,t.first??50);if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=c.length}return{edges:c.map((e,t)=>({cursor:String(t),node:e})),pageInfo:{hasNextPage:i.length>c.length,hasPreviousPage:!1,startCursor:c.length>0?"0":null,endCursor:c.length>0?String(c.length-1):null}}}if(null==s){let{entries:o,hasMore:r}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID});if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=o.length}return{edges:o.map(e=>({cursor:e.cursor,node:e.document})),pageInfo:{hasNextPage:!!t.first&&r,hasPreviousPage:!t.first&&r,endCursor:o.at(-1)?.cursor??null,startCursor:o.at(0)?.cursor??null}}}let o=[],r=0,n=0;if(null==t.first&&null==t.last){let{entries:n}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID});for(let e of n)await s(e.document,"read")?o.push(e):null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.document.id}`,code:"KB07"});r=o.length}else if(null!=t.first){let i=2*(r=t.first),u=t.after;for(;o.length<r&&n<10;){let{entries:c,hasMore:m}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID,first:i,after:u});if(0===c.length&&!m)break;for(let e of c)if(await s(e.document,"read")){if(o.push(e),o.length>=r)break}else null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.document.id}`,code:"KB07"});if(!m)break;u=c.at(-1)?.cursor??null,n++}}else if(null!=t.last){let i=2*(r=t.last),u=t.before;for(;o.length<r&&n<10;){let{entries:c,hasMore:m}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID,last:i,before:u});if(0===c.length&&!m)break;for(let e of[...c].reverse())if(await s(e.document,"read")){if(o.unshift(e),o.length>=r)break}else null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.document.id}`,code:"KB07"});if(!m)break;u=c.at(0)?.cursor??null,n++}}let i=o.slice(0,r),u=o.length>r;if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=i.length}return{edges:i.map(e=>({cursor:e.cursor,node:e.document})),pageInfo:{hasNextPage:!!t.first&&u,hasPreviousPage:!t.first&&u,endCursor:i.at(-1)?.cursor??null,startCursor:i.at(0)?.cursor??null}}});if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return{...m,aggregateScope:u}},async resolveList(e,t){let o=`list:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,u=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>{let o=await a.listDocuments({modelIDs:e,docIDs:t});if(!s){if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=o.length}return o}let r=[];for(let e of o)await s(e,"read")?r.push(e):null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.id}`,code:"KB07"});if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=r.length}return r});if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return u},async resolveAggregate(e,t){let o=`aggregate:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,s=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>(null!=l.complexity&&l.complexity.resolverCount++,await a.aggregateDocuments({modelIDs:e,filter:t.filter,owner:t.owner,catalogID:t.catalogID??l.catalogID,count:t.count,aggregates:t.aggregates,readAccess:u})));if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return s},async resolveGroupedAggregate(e,t){let o=`grouped-aggregate:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,s=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>(null!=l.complexity&&l.complexity.resolverCount++,await a.groupedAggregateDocuments({modelIDs:e,filter:t.filter,owner:t.owner,catalogID:t.catalogID??l.catalogID,count:t.count,aggregates:t.aggregates,groupBy:t.groupBy,having:t.having,orderBy:t.orderBy,limit:t.limit,readAccess:u})));if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return s},subscribeToDocumentCreated(e,t){let o=m(o=>"create"===o.type&&e.includes(o.document.model)&&(null==t||o.document.owner===t),e=>e.document);return s?async function*(){for await(let e of o)await s(e,"read")&&(yield e)}():o},subscribeToDocumentChanged(e){let t=m(t=>"update"===t.type&&t.document.id===e&&null!==t.document.data,e=>e.document);return s?async function*(){for await(let e of t)await s(e,"read")&&(yield e)}():t},subscribeToDocumentRemoved:()=>m(e=>"update"===e.type&&null===e.document.data,e=>e.document.id),subscribeToDocumentEdgeAdded(e,t){let o=m(o=>null!==o.document.data&&e.includes(o.document.model)&&t(o.document.data)&&("create"===o.type||null!==o.previous.data&&t(o.previous.data)),e=>({cursor:e.getCursor(),node:e.document}));return s?async function*(){for await(let e of o)await s(e.node,"read")&&(yield e)}():o},subscribeToDocumentEdgeRemoved:(e,t)=>m(o=>"update"===o.type&&e.includes(o.document.model)&&null!==o.previous.data&&t(o.previous.data)&&(null===o.document.data||!t(o.document.data)),e=>e.document.id)}}
|
|
1
|
+
import{defer as e}from"@enkaku/async";import{withSpan as t}from"@enkaku/otel";import{DocumentID as o}from"@kubun/id";import{KubunAttributeKeys as r,KubunSpanNames as n}from"@kubun/protocol";export function createReadContext(l){let{store:a,viewerDID:i,accessChecker:s,viewerReadAccess:u}=l;function c(e,o,r){return null!=l.tracer?t(l.tracer,e,{attributes:o},async()=>r()):r()}function m(t,o){let r=!1,n=null,a=[];if(null==l.events)throw Error("Subscriptions require a document event emitter");let i=l.events.on("document:saved",e=>{if(t(e)){let t=o(e);null==n?a.push(t):(n.resolve(t),n=null)}}),s=()=>(i(),r=!0,Promise.resolve({done:!0,value:void 0}));return{[Symbol.asyncDispose]:()=>(i(),r=!0,Promise.resolve()),[Symbol.asyncIterator](){return this},next:()=>{if(r)return Promise.resolve({done:!0,value:void 0});let t=a.shift();return null!=t?Promise.resolve({value:t,done:!1}):(n=e()).promise.then(e=>({value:e,done:!1}))},return:s,throw:s}}return{getViewer:()=>i,async loadDocument(e){let t=`document:${e}`,i=l.complexity?.resolverTimings!=null?performance.now():0,u=await c(n.DATA_QUERY,{[r.DOCUMENT_ID]:e},async()=>{let t=await a.getDocument(o.fromString(e));return t&&null!=t.data?s&&!await s(t,"read")?(null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e}`,code:"KB07"}),null):(null!=l.complexity&&(l.complexity.resolverCount++,l.complexity.documentsScanned++),t):null});if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,o=l.complexity.resolverTimings.get(t)??0;l.complexity.resolverTimings.set(t,o+e)}return u},searchDocuments:async(e,t,o)=>await a.searchDocuments({query:e,modelIDs:t,first:o}),async resolveConnection(e,t){let o=`connection:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,u={modelIDs:e,filter:t.filter,owner:t.owner,catalogID:l.catalogID},m=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>{if(null!=t.search&&""!==t.search.trim()){let o=await a.searchDocuments({query:t.search,modelIDs:e,first:200});if(0===o.length){if(null!=l.complexity)for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);return{edges:[],pageInfo:{hasNextPage:!1,hasPreviousPage:!1,startCursor:null,endCursor:null}}}let r=o.map(e=>e.documentID),n=await a.listDocuments({modelIDs:e,docIDs:r}),i=n;if(s)for(let e of(i=[],n))await s(e,"read")?i.push(e):null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.id}`,code:"KB07"});let u=new Map(o.map(e=>[e.documentID,e.rank]));i.sort((e,t)=>Math.abs(u.get(t.id)??0)-Math.abs(u.get(e.id)??0));let c=i.slice(0,t.first??50);if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=c.length}return{edges:c.map((e,t)=>({cursor:String(t),node:e})),pageInfo:{hasNextPage:i.length>c.length,hasPreviousPage:!1,startCursor:c.length>0?"0":null,endCursor:c.length>0?String(c.length-1):null}}}if(null==s){let{entries:o,hasMore:r}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID});if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=o.length}return{edges:o.map(e=>({cursor:e.cursor,node:e.document})),pageInfo:{hasNextPage:!!t.first&&r,hasPreviousPage:!t.first&&r,endCursor:o.at(-1)?.cursor??null,startCursor:o.at(0)?.cursor??null}}}let o=[],r=0,n=0;if(null==t.first&&null==t.last){let{entries:n}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID});for(let e of n)await s(e.document,"read")?o.push(e):null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.document.id}`,code:"KB07"});r=o.length}else if(null!=t.first){let i=2*(r=t.first),u=t.after;for(;o.length<r&&n<10;){let{entries:c,hasMore:m}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID,first:i,after:u});if(0===c.length&&!m)break;for(let e of c)if(await s(e.document,"read")){if(o.push(e),o.length>=r)break}else null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.document.id}`,code:"KB07"});if(!m)break;u=c.at(-1)?.cursor??null,n++}}else if(null!=t.last){let i=2*(r=t.last),u=t.before;for(;o.length<r&&n<10;){let{entries:c,hasMore:m}=await a.queryDocuments({...t,modelIDs:e,catalogID:l.catalogID,last:i,before:u});if(0===c.length&&!m)break;for(let e of[...c].reverse())if(await s(e.document,"read")){if(o.unshift(e),o.length>=r)break}else null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.document.id}`,code:"KB07"});if(!m)break;u=c.at(0)?.cursor??null,n++}}let i=o.slice(0,r),u=o.length>r;if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=i.length}return{edges:i.map(e=>({cursor:e.cursor,node:e.document})),pageInfo:{hasNextPage:!!t.first&&u,hasPreviousPage:!t.first&&u,endCursor:i.at(-1)?.cursor??null,startCursor:i.at(0)?.cursor??null}}});if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return{...m,aggregateScope:u}},async resolveList(e,t){let o=`list:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,u=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>{let o=await a.listDocuments({modelIDs:e,docIDs:t});if(!s){if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=o.length}return o}let r=[];for(let e of o)await s(e,"read")?r.push(e):null!=l.warnings&&l.warnings.push({message:`Access denied for document ${e.id}`,code:"KB07"});if(null!=l.complexity){for(let t of(l.complexity.resolverCount++,e))l.complexity.modelsQueried.add(t);l.complexity.documentsScanned+=r.length}return r});if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return u},async resolveAggregate(e,t){let o=`aggregate:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,s=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>(null!=l.complexity&&l.complexity.resolverCount++,await a.aggregateDocuments({modelIDs:e,filter:t.filter,owner:t.owner,catalogID:t.catalogID??l.catalogID,count:t.count,aggregates:t.aggregates,readAccess:u})));if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return s},async resolveGroupedAggregate(e,t){let o=`grouped-aggregate:${e.join(",")}`,i=l.complexity?.resolverTimings!=null?performance.now():0,s=await c(n.DATA_QUERY,{[r.MODEL_ID]:e.join(",")},async()=>(null!=l.complexity&&l.complexity.resolverCount++,await a.groupedAggregateDocuments({modelIDs:e,filter:t.filter,owner:t.owner,catalogID:t.catalogID??l.catalogID,count:t.count,aggregates:t.aggregates,groupBy:t.groupBy,having:t.having,orderBy:t.orderBy,limit:t.limit,readAccess:u})));if(l.complexity?.resolverTimings!=null){let e=Math.round((performance.now()-i)*100)/100,t=l.complexity.resolverTimings.get(o)??0;l.complexity.resolverTimings.set(o,t+e)}return s},subscribeToDocumentCreated(e,t){let o=m(o=>"create"===o.type&&e.includes(o.document.model)&&(null==t||o.document.owner===t),e=>e.document);return s?async function*(){for await(let e of o)await s(e,"read")&&(yield e)}():o},subscribeToDocumentChanged(e){let t=m(t=>"update"===t.type&&t.document.id===e&&null!==t.document.data,e=>e.document);return s?async function*(){for await(let e of t)await s(e,"read")&&(yield e)}():t},subscribeToDocumentRemoved:()=>m(e=>"update"===e.type&&null===e.document.data,e=>e.document.id),subscribeToDocumentEdgeAdded(e,t){let o=m(o=>null!==o.document.data&&e.includes(o.document.model)&&t(o.document.data)&&("create"===o.type||null!==o.previous.data&&t(o.previous.data)),e=>({cursor:e.getCursor(),node:e.document}));return s?async function*(){for await(let e of o)await s(e.node,"read")&&(yield e)}():o},subscribeToDocumentEdgeRemoved:(e,t)=>m(o=>"update"===o.type&&e.includes(o.document.model)&&null!==o.previous.data&&t(o.previous.data)&&(null===o.document.data||!t(o.document.data)),e=>e.document.id)}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubun/graphql",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"license": "see LICENSE.md",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"type": "module",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@enkaku/event": "^0.16.0",
|
|
21
21
|
"@enkaku/otel": "^0.16.0",
|
|
22
22
|
"change-case": "^5.4.4",
|
|
23
|
-
"graphql": "^16.
|
|
23
|
+
"graphql": "^16.14.1",
|
|
24
24
|
"graphql-relay": "^0.10.2",
|
|
25
25
|
"graphql-scalars": "^1.25.0",
|
|
26
26
|
"multiformats": "^14.0.0",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@enkaku/capability": "^0.16.0",
|
|
33
33
|
"@enkaku/token": "^0.16.0",
|
|
34
|
-
"@kubun/
|
|
35
|
-
"@kubun/db-better-sqlite": "^0.10.0",
|
|
34
|
+
"@kubun/db": "^0.10.0",
|
|
36
35
|
"@kubun/test-utils": "^0.10.0",
|
|
37
|
-
"@kubun/
|
|
36
|
+
"@kubun/store-graph": "^0.10.1",
|
|
37
|
+
"@kubun/db-better-sqlite": "^0.10.0"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build:clean": "del lib",
|