ciorent 0.3.5 → 0.3.7
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/README.md +10 -10
- package/fiber.js +1 -1
- package/package.json +7 -7
- package/topic.d.ts +1 -1
- package/topic.js +1 -1
    
        package/README.md
    CHANGED
    
    | @@ -32,7 +32,7 @@ Cross-runtime synchronous and asynchronous sleep functions. | |
| 32 32 | 
             
            ```ts
         | 
| 33 33 | 
             
            import * as co from 'ciorent';
         | 
| 34 34 |  | 
| 35 | 
            -
            const logTime = (label: string) => console.log(label | 
| 35 | 
            +
            const logTime = (label: string) => console.log(`${label}: ${Math.floor(performance.now())}ms`);;
         | 
| 36 36 |  | 
| 37 37 | 
             
            logTime('Start');
         | 
| 38 38 |  | 
| @@ -70,7 +70,7 @@ const throttle = co.throttle(500, 2); | |
| 70 70 |  | 
| 71 71 | 
             
            co.spawn(8, async (id) => {
         | 
| 72 72 | 
             
              await throttle();
         | 
| 73 | 
            -
              console.log(id | 
| 73 | 
            +
              console.log(`${id}: ${Math.floor(performance.now())}ms`);
         | 
| 74 74 | 
             
            });
         | 
| 75 75 | 
             
            ```
         | 
| 76 76 |  | 
| @@ -79,7 +79,7 @@ Continue the execution on next tick, allowing other asynchronous tasks to run. | |
| 79 79 | 
             
            ```ts
         | 
| 80 80 | 
             
            import * as co from 'ciorent';
         | 
| 81 81 |  | 
| 82 | 
            -
            const logTime = (label: string) => console.log(label | 
| 82 | 
            +
            const logTime = (label: string) => console.log(`${label}: ${Math.floor(performance.now())}ms`);
         | 
| 83 83 |  | 
| 84 84 | 
             
            // Expensive sync task
         | 
| 85 85 | 
             
            const task1 = async () => {
         | 
| @@ -138,7 +138,7 @@ co.spawn(3, async (id: number) => { | |
| 138 138 |  | 
| 139 139 | 
             
              while (true) {
         | 
| 140 140 | 
             
                // Block until the value is sent
         | 
| 141 | 
            -
                const x = await topic. | 
| 141 | 
            +
                const x = await topic.dispatch(sub);
         | 
| 142 142 | 
             
                if (x == null) break;
         | 
| 143 143 | 
             
                console.log(`Task ${id} recieved: ${x}`);
         | 
| 144 144 | 
             
              }
         | 
| @@ -182,7 +182,7 @@ Wait for a value to be resolved. | |
| 182 182 | 
             
            ```ts
         | 
| 183 183 | 
             
            import * as defer from 'ciorent/defer';
         | 
| 184 184 |  | 
| 185 | 
            -
            const logTime = (label: string) => console.log(label | 
| 185 | 
            +
            const logTime = (label: string) => console.log(`${label}: ${Math.floor(performance.now())}ms`);
         | 
| 186 186 |  | 
| 187 187 | 
             
            const deferredUrl = defer.init<string>();
         | 
| 188 188 |  | 
| @@ -212,24 +212,24 @@ Channel is a synchronization primitive via message passing. A message may be sen | |
| 212 212 | 
             
            import * as channel from 'ciorent/channel';
         | 
| 213 213 | 
             
            import * as co from 'ciorent';
         | 
| 214 214 |  | 
| 215 | 
            -
            const  | 
| 215 | 
            +
            const chan = channel.init<number>();
         | 
| 216 216 |  | 
| 217 217 | 
             
            const run = async () => {
         | 
| 218 218 | 
             
              for (let i = 0; i < 5; i++) {
         | 
| 219 219 | 
             
                await co.sleep(100);
         | 
| 220 | 
            -
                channel.send( | 
| 220 | 
            +
                channel.send(chan, i);
         | 
| 221 221 | 
             
                console.log('Sent', i);
         | 
| 222 222 | 
             
              }
         | 
| 223 223 |  | 
| 224 224 | 
             
              // Resolve all waiting promises with `undefined`
         | 
| 225 225 | 
             
              // This is a way to tell the reciever to not listen to more data
         | 
| 226 | 
            -
              channel.flush( | 
| 226 | 
            +
              channel.flush(chan);
         | 
| 227 227 | 
             
            };
         | 
| 228 228 |  | 
| 229 229 | 
             
            const log = async () => {
         | 
| 230 230 | 
             
              while (true) {
         | 
| 231 231 | 
             
                // Wait until a value is sent to the channel
         | 
| 232 | 
            -
                const x = await channel.recieve( | 
| 232 | 
            +
                const x = await channel.recieve(chan);
         | 
| 233 233 | 
             
                if (x == null) break;
         | 
| 234 234 |  | 
| 235 235 | 
             
                console.log('Recieved', x);
         | 
| @@ -250,7 +250,7 @@ Virtual threads with more controlled execution. | |
| 250 250 | 
             
            import * as co from 'ciorent';
         | 
| 251 251 | 
             
            import * as fiber from 'ciorent/fiber';
         | 
| 252 252 |  | 
| 253 | 
            -
            const logTime = (label: string) => console.log(label | 
| 253 | 
            +
            const logTime = (label: string) => console.log(`${label}: ${Math.floor(performance.now())}ms`);
         | 
| 254 254 |  | 
| 255 255 | 
             
            const f1 = fiber.fn(function* () {
         | 
| 256 256 | 
             
              // Wait for a promise
         | 
    
        package/fiber.js
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            import{sleep}from"./index.js";export let paused=(t)=>t[1]===0;export let resumed=(t)=>t[1]===1;export let completed=(t)=>t[1]===2;export let interrupted=(t)=>t[1]===3;let invoke=async(g,thread)=>{await 0;try{let t=g.next();while(!t.done){let v=await t.value;if(thread[1]===0)thread[1]=await new Promise((res)=>{thread[2]=res});if(thread[1]===3)return;t=g.next(v)}thread[1]=2;return t.value}finally{if(thread[1]!==2)thread[1]=3;thread[3].forEach(interrupt)}};export let fn=(f)=>f;export let spawn=(f,...args)=>{let t=[null,1,null,[]];t[0]=invoke(f(t,...args),t);return t};export let pause=(t)=>{if(t[1]===1)t[1]=0};export let resume=(t)=>{if(t[1]===0)t[2] | 
| 1 | 
            +
            import{sleep}from"./index.js";export let paused=(t)=>t[1]===0;export let resumed=(t)=>t[1]===1;export let completed=(t)=>t[1]===2;export let interrupted=(t)=>t[1]===3;let invoke=async(g,thread)=>{await 0;try{let t=g.next();while(!t.done){let v=await t.value;if(thread[1]===0)thread[1]=await new Promise((res)=>{thread[2]=res});if(thread[1]===3)return;t=g.next(v)}thread[1]=2;return t.value}finally{if(thread[1]!==2)thread[1]=3;thread[3].forEach(interrupt)}};export let fn=(f)=>f;export let spawn=(f,...args)=>{let t=[null,1,null,[]];t[0]=invoke(f(t,...args),t);return t};export let pause=(t)=>{if(t[1]===1)t[1]=0};export let resume=(t)=>{if(t[1]===0){if(t[2]===null)t[1]=1;else t[2](1)}};export let interrupt=(t)=>{if(t[1]!==2){if(t[1]===0&&t[2]!==null)t[2](3);else t[1]=3}};export let timeout=async(t,ms)=>{await sleep(ms);interrupt(t)};export function*join(t){return yield t[0]}export let done=(t)=>t[0];export let mount=(child,parent)=>{parent[3].push(child)};export let control=(t,signal)=>{signal.addEventListener("abort",()=>{interrupt(t)})};export function*unwrap(t){return yield t}
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "ciorent",
         | 
| 3 | 
            -
              "version": "0.3. | 
| 3 | 
            +
              "version": "0.3.7",
         | 
| 4 4 | 
             
              "description": "A lightweight, low-overhead concurrency library",
         | 
| 5 5 | 
             
              "homepage": "https://ciorent.netlify.app",
         | 
| 6 6 | 
             
              "repository": {
         | 
| @@ -18,15 +18,15 @@ | |
| 18 18 | 
             
              "main": "./index.js",
         | 
| 19 19 | 
             
              "types": "./index.d.ts",
         | 
| 20 20 | 
             
              "exports": {
         | 
| 21 | 
            -
                "./sliding-queue": "./sliding-queue.js",
         | 
| 22 21 | 
             
                "./queue": "./queue.js",
         | 
| 23 22 | 
             
                "./channel": "./channel.js",
         | 
| 24 | 
            -
                "./ | 
| 25 | 
            -
                "./defer": "./defer.js",
         | 
| 26 | 
            -
                ".": "./index.js",
         | 
| 27 | 
            -
                "./dropping-queue": "./dropping-queue.js",
         | 
| 23 | 
            +
                "./sliding-queue": "./sliding-queue.js",
         | 
| 28 24 | 
             
                "./topic": "./topic.js",
         | 
| 25 | 
            +
                "./lock": "./lock.js",
         | 
| 26 | 
            +
                ".": "./index.js",
         | 
| 29 27 | 
             
                "./semaphore": "./semaphore.js",
         | 
| 30 | 
            -
                "./ | 
| 28 | 
            +
                "./defer": "./defer.js",
         | 
| 29 | 
            +
                "./dropping-queue": "./dropping-queue.js",
         | 
| 30 | 
            +
                "./fiber": "./fiber.js"
         | 
| 31 31 | 
             
              }
         | 
| 32 32 | 
             
            }
         | 
    
        package/topic.d.ts
    CHANGED
    
    | @@ -54,4 +54,4 @@ export declare const poll: <T extends {}>(t: Subscriber<T>) => T | undefined; | |
| 54 54 | 
             
             * Returns a promise that resolves when the message queue is not empty
         | 
| 55 55 | 
             
             * @param t
         | 
| 56 56 | 
             
             */
         | 
| 57 | 
            -
            export declare const  | 
| 57 | 
            +
            export declare const dispatch: <T extends {}>(t: Subscriber<T>) => Promise<T | undefined>;
         | 
    
        package/topic.js
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            export let init=()=>[[null],[],[]];export let subscribe=(t)=>[t,t[0]];export let publish=(t,value)=>{let head=t[0]=t[0][0]=[null,value];for(let i=0,res=t[1];i<res.length;i++)res[i](head);t[1]=[]};export let flush=(t)=>{let head=t[0]=t[0][0]=[null,undefined];for(let i=0,res=t[1];i<res.length;i++)res[i](head);t[1]=[]};export let poll=(t)=>t[1][0]!==null?(t[1]=t[1][0])[1]:undefined;export let  | 
| 1 | 
            +
            export let init=()=>{let t=[[null],[],(res)=>{t[1].push(res)}];return t};export let subscribe=(t)=>[t,t[0]];export let publish=(t,value)=>{let head=t[0]=t[0][0]=[null,value];for(let i=0,res=t[1];i<res.length;i++)res[i](head);t[1]=[]};export let flush=(t)=>{let head=t[0]=t[0][0]=[null,undefined];for(let i=0,res=t[1];i<res.length;i++)res[i](head);t[1]=[]};export let poll=(t)=>t[1][0]!==null?(t[1]=t[1][0])[1]:undefined;export let dispatch=async(t)=>t[1][0]!==null?(t[1]=t[1][0])[1]:(t[1]=await new Promise(t[0][2]))[1];
         |