@joystick.js/test-canary 0.0.0-canary.1 → 0.0.0-canary.3

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/TODO CHANGED
@@ -1,4 +1,4 @@
1
- - [ ] Turn this into a package
1
+ - [x] Turn this into a package
2
2
  - [ ] Wire up the Ava stuff in joystick test command
3
3
  - [ ] Start writing a mock test suite against current API implementation
4
4
  - [ ] Work through implementation alongside suite so you know it's right
package/_package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@joystick.js/test",
3
3
  "type": "module",
4
- "version": "1.0.0-beta.0",
4
+ "version": "1.0.0-beta.1",
5
5
  "description": "Isomorphic testing framework for the Joystick JavaScript framework.",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
@@ -13,9 +13,5 @@
13
13
  },
14
14
  "keywords": [],
15
15
  "author": "",
16
- "license": "SAUCR",
17
- "devDependencies": {
18
- "ava": "^5.3.1",
19
- "esbuild": "^0.18.17"
20
- }
16
+ "license": "SAUCR"
21
17
  }
package/dist/index.js CHANGED
@@ -1,9 +1,12 @@
1
- var A={};var E={};var v={};var $={};var N={};import se from"fs";var B=(r=0)=>e=>`\x1B[${e+r}m`,I=(r=0)=>e=>`\x1B[${38+r};5;${e}m`,M=(r=0)=>(e,t,o)=>`\x1B[${38+r};2;${e};${t};${o}m`,s={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},de=Object.keys(s.modifier),W=Object.keys(s.color),K=Object.keys(s.bgColor),ge=[...W,...K];function z(){let r=new Map;for(let[e,t]of Object.entries(s)){for(let[o,n]of Object.entries(t))s[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[o]=s[o],r.set(n[0],n[1]);Object.defineProperty(s,e,{value:t,enumerable:!1})}return Object.defineProperty(s,"codes",{value:r,enumerable:!1}),s.color.close="\x1B[39m",s.bgColor.close="\x1B[49m",s.color.ansi=B(),s.color.ansi256=I(),s.color.ansi16m=M(),s.bgColor.ansi=B(10),s.bgColor.ansi256=I(10),s.bgColor.ansi16m=M(10),Object.defineProperties(s,{rgbToAnsi256:{value(e,t,o){return e===t&&t===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[o]=t;o.length===3&&(o=[...o].map(l=>l+l).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>s.rgbToAnsi256(...s.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,o,n;if(e>=232)t=((e-232)*10+8)/255,o=t,n=t;else{e-=16;let m=e%36;t=Math.floor(e/36)/5,o=Math.floor(m/6)/5,n=m%6/5}let l=Math.max(t,o,n)*2;if(l===0)return 30;let a=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(t));return l===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,o)=>s.ansi256ToAnsi(s.rgbToAnsi256(e,t,o)),enumerable:!1},hexToAnsi:{value:e=>s.ansi256ToAnsi(s.hexToAnsi256(e)),enumerable:!1}}),s}var H=z(),f=H;import T from"node:process";import q from"node:os";import S from"node:tty";function u(r,e=globalThis.Deno?globalThis.Deno.args:T.argv){let t=r.startsWith("-")?"":r.length===1?"-":"--",o=e.indexOf(t+r),n=e.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:i}=T,p;u("no-color")||u("no-colors")||u("color=false")||u("color=never")?p=0:(u("color")||u("colors")||u("color=true")||u("color=always"))&&(p=1);function Q(){if("FORCE_COLOR"in i)return i.FORCE_COLOR==="true"?1:i.FORCE_COLOR==="false"?0:i.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(i.FORCE_COLOR,10),3)}function J(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function X(r,{streamIsTTY:e,sniffFlags:t=!0}={}){let o=Q();o!==void 0&&(p=o);let n=t?p:o;if(n===0)return 0;if(t){if(u("color=16m")||u("color=full")||u("color=truecolor"))return 3;if(u("color=256"))return 2}if("TF_BUILD"in i&&"AGENT_NAME"in i)return 1;if(r&&!e&&n===void 0)return 0;let l=n||0;if(i.TERM==="dumb")return l;if(T.platform==="win32"){let a=q.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in i)return"GITHUB_ACTIONS"in i||"GITEA_ACTIONS"in i?3:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in i)||i.CI_NAME==="codeship"?1:l;if("TEAMCITY_VERSION"in i)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(i.TEAMCITY_VERSION)?1:0;if(i.COLORTERM==="truecolor"||i.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in i){let a=Number.parseInt((i.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(i.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(i.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(i.TERM)||"COLORTERM"in i?1:l}function w(r,e={}){let t=X(r,{streamIsTTY:r&&r.isTTY,...e});return J(t)}var Z={stdout:w({isTTY:S.isatty(1)}),stderr:w({isTTY:S.isatty(2)})},F=Z;function k(r,e,t){let o=r.indexOf(e);if(o===-1)return r;let n=e.length,l=0,a="";do a+=r.slice(l,o)+e+t,l=o+n,o=r.indexOf(e,l);while(o!==-1);return a+=r.slice(l),a}function j(r,e,t,o){let n=0,l="";do{let a=r[o-1]==="\r";l+=r.slice(n,a?o-1:o)+e+(a?`\r
1
+ var se=Object.create;var M=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ce=Object.getPrototypeOf,ue=Object.prototype.hasOwnProperty;var m=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var C=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var fe=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ae(e))!ue.call(r,n)&&n!==t&&M(r,n,{get:()=>e[n],enumerable:!(o=ie(e,n))||o.enumerable});return r};var de=(r,e,t)=>(t=r!=null?se(ce(r)):{},fe(e||!r||!r.__esModule?M(t,"default",{value:r,enumerable:!0}):t,r));var w=C(y=>{"use strict";var ge=m("node:process"),{isMainThread:he}=m("node:worker_threads");y.isRunningInThread=he===!1;y.isRunningInChildProcess=typeof ge.send=="function"});var S=C(()=>{"use strict";var me=m("node:path"),x=m("node:process"),{isRunningInThread:pe,isRunningInChildProcess:be}=w();if(!be&&!pe)if(x.argv[1]){let r=me.relative(".",x.argv[1]);console.log(),console.error(`Test files must be run with the AVA CLI:
2
+
3
+ $ ava ${r}
4
+ `),x.exit(1)}else throw new Error("The \u2019ava\u2019 module can only be imported in test files")});var F=C(p=>{"use strict";p.flags={loadedMain:!1};p.refs={runnerChain:null};p.sharedWorkerTeardowns=[];p.waitForReady=[]});var j=C((Ye,_)=>{"use strict";S();var Oe=m("node:assert"),{flags:Ce,refs:k}=F();Oe(k.runnerChain);Ce.loadedMain=!0;_.exports=k.runnerChain});var A=de(j(),1);var v=class{constructor(){}that(e="",t=null){return(0,A.default)(e,t)}},P=new v;var L={};var G={};var Y={};var D={};var q={};import ke from"fs";var U=(r=0)=>e=>`\x1B[${e+r}m`,V=(r=0)=>e=>`\x1B[${38+r};5;${e}m`,W=(r=0)=>(e,t,o)=>`\x1B[${38+r};2;${e};${t};${o}m`,s={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Qe=Object.keys(s.modifier),Te=Object.keys(s.color),Re=Object.keys(s.bgColor),Je=[...Te,...Re];function ye(){let r=new Map;for(let[e,t]of Object.entries(s)){for(let[o,n]of Object.entries(t))s[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[o]=s[o],r.set(n[0],n[1]);Object.defineProperty(s,e,{value:t,enumerable:!1})}return Object.defineProperty(s,"codes",{value:r,enumerable:!1}),s.color.close="\x1B[39m",s.bgColor.close="\x1B[49m",s.color.ansi=U(),s.color.ansi256=V(),s.color.ansi16m=W(),s.bgColor.ansi=U(10),s.bgColor.ansi256=V(10),s.bgColor.ansi16m=W(10),Object.defineProperties(s,{rgbToAnsi256:{value(e,t,o){return e===t&&t===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[o]=t;o.length===3&&(o=[...o].map(l=>l+l).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>s.rgbToAnsi256(...s.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,o,n;if(e>=232)t=((e-232)*10+8)/255,o=t,n=t;else{e-=16;let h=e%36;t=Math.floor(e/36)/5,o=Math.floor(h/6)/5,n=h%6/5}let l=Math.max(t,o,n)*2;if(l===0)return 30;let a=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(t));return l===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,o)=>s.ansi256ToAnsi(s.rgbToAnsi256(e,t,o)),enumerable:!1},hexToAnsi:{value:e=>s.ansi256ToAnsi(s.hexToAnsi256(e)),enumerable:!1}}),s}var xe=ye(),f=xe;import E from"node:process";import Ae from"node:os";import K from"node:tty";function u(r,e=globalThis.Deno?globalThis.Deno.args:E.argv){let t=r.startsWith("-")?"":r.length===1?"-":"--",o=e.indexOf(t+r),n=e.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:i}=E,T;u("no-color")||u("no-colors")||u("color=false")||u("color=never")?T=0:(u("color")||u("colors")||u("color=true")||u("color=always"))&&(T=1);function ve(){if("FORCE_COLOR"in i)return i.FORCE_COLOR==="true"?1:i.FORCE_COLOR==="false"?0:i.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(i.FORCE_COLOR,10),3)}function Ee(r){return r===0?!1:{level:r,hasBasic:!0,has256:r>=2,has16m:r>=3}}function $e(r,{streamIsTTY:e,sniffFlags:t=!0}={}){let o=ve();o!==void 0&&(T=o);let n=t?T:o;if(n===0)return 0;if(t){if(u("color=16m")||u("color=full")||u("color=truecolor"))return 3;if(u("color=256"))return 2}if("TF_BUILD"in i&&"AGENT_NAME"in i)return 1;if(r&&!e&&n===void 0)return 0;let l=n||0;if(i.TERM==="dumb")return l;if(E.platform==="win32"){let a=Ae.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in i)return"GITHUB_ACTIONS"in i||"GITEA_ACTIONS"in i?3:["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in i)||i.CI_NAME==="codeship"?1:l;if("TEAMCITY_VERSION"in i)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(i.TEAMCITY_VERSION)?1:0;if(i.COLORTERM==="truecolor"||i.TERM==="xterm-kitty")return 3;if("TERM_PROGRAM"in i){let a=Number.parseInt((i.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(i.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(i.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(i.TERM)||"COLORTERM"in i?1:l}function z(r,e={}){let t=$e(r,{streamIsTTY:r&&r.isTTY,...e});return Ee(t)}var Ie={stdout:z({isTTY:K.isatty(1)}),stderr:z({isTTY:K.isatty(2)})},H=Ie;function Q(r,e,t){let o=r.indexOf(e);if(o===-1)return r;let n=e.length,l=0,a="";do a+=r.slice(l,o)+e+t,l=o+n,o=r.indexOf(e,l);while(o!==-1);return a+=r.slice(l),a}function J(r,e,t,o){let n=0,l="";do{let a=r[o-1]==="\r";l+=r.slice(n,a?o-1:o)+e+(a?`\r
2
5
  `:`
3
6
  `)+t,n=o+1,o=r.indexOf(`
4
- `,n)}while(o!==-1);return l+=r.slice(n),l}var{stdout:_,stderr:P}=F,C=Symbol("GENERATOR"),d=Symbol("STYLER"),b=Symbol("IS_EMPTY"),L=["ansi","ansi","ansi256","ansi16m"],g=Object.create(null),ee=(r,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=_?_.level:0;r.level=e.level===void 0?t:e.level};var re=r=>{let e=(...t)=>t.join(" ");return ee(e,r),Object.setPrototypeOf(e,h.prototype),e};function h(r){return re(r)}Object.setPrototypeOf(h.prototype,Function.prototype);for(let[r,e]of Object.entries(f))g[r]={get(){let t=O(this,R(e.open,e.close,this[d]),this[b]);return Object.defineProperty(this,r,{value:t}),t}};g.visible={get(){let r=O(this,this[d],!0);return Object.defineProperty(this,"visible",{value:r}),r}};var y=(r,e,t,...o)=>r==="rgb"?e==="ansi16m"?f[t].ansi16m(...o):e==="ansi256"?f[t].ansi256(f.rgbToAnsi256(...o)):f[t].ansi(f.rgbToAnsi(...o)):r==="hex"?y("rgb",e,t,...f.hexToRgb(...o)):f[t][r](...o),oe=["rgb","hex","ansi256"];for(let r of oe){g[r]={get(){let{level:t}=this;return function(...o){let n=R(y(r,L[t],"color",...o),f.color.close,this[d]);return O(this,n,this[b])}}};let e="bg"+r[0].toUpperCase()+r.slice(1);g[e]={get(){let{level:t}=this;return function(...o){let n=R(y(r,L[t],"bgColor",...o),f.bgColor.close,this[d]);return O(this,n,this[b])}}}}var te=Object.defineProperties(()=>{},{...g,level:{enumerable:!0,get(){return this[C].level},set(r){this[C].level=r}}}),R=(r,e,t)=>{let o,n;return t===void 0?(o=r,n=e):(o=t.openAll+r,n=e+t.closeAll),{open:r,close:e,openAll:o,closeAll:n,parent:t}},O=(r,e,t)=>{let o=(...n)=>ne(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,te),o[C]=r,o[d]=e,o[b]=t,o},ne=(r,e)=>{if(r.level<=0||!e)return r[b]?"":e;let t=r[d];if(t===void 0)return e;let{openAll:o,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=k(e,t.close,t.open),t=t.parent;let l=e.indexOf(`
5
- `);return l!==-1&&(e=j(e,n,o,l)),o+e+n};Object.defineProperties(h.prototype,g);var le=h(),xe=h({level:P?P.level:0});var c=le;var x=()=>`${c.red("=")}${c.green("=")}${c.blue("=")}${c.red("=")}${c.green("=")}${c.blue("=")}`;var G=(r="",e={})=>{let t={info:"blue",success:"green",warning:"yellowBright",danger:"red"},o={info:"\u2771 Info",success:"\u2771 Ok",warning:"\u2771 Warning",danger:"\u2771 Error"},n=e.level?t[e.level]:"gray",l=e.level?o[e.level]:"Log",a=e.docs||"https://cheatcode.co/docs/joystick";console.log(`
6
- ${e.padding||""}${x()}
7
+ `,n)}while(o!==-1);return l+=r.slice(n),l}var{stdout:X,stderr:Z}=H,$=Symbol("GENERATOR"),d=Symbol("STYLER"),b=Symbol("IS_EMPTY"),ee=["ansi","ansi","ansi256","ansi16m"],g=Object.create(null),Ne=(r,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=X?X.level:0;r.level=e.level===void 0?t:e.level};var Be=r=>{let e=(...t)=>t.join(" ");return Ne(e,r),Object.setPrototypeOf(e,O.prototype),e};function O(r){return Be(r)}Object.setPrototypeOf(O.prototype,Function.prototype);for(let[r,e]of Object.entries(f))g[r]={get(){let t=R(this,N(e.open,e.close,this[d]),this[b]);return Object.defineProperty(this,r,{value:t}),t}};g.visible={get(){let r=R(this,this[d],!0);return Object.defineProperty(this,"visible",{value:r}),r}};var I=(r,e,t,...o)=>r==="rgb"?e==="ansi16m"?f[t].ansi16m(...o):e==="ansi256"?f[t].ansi256(f.rgbToAnsi256(...o)):f[t].ansi(f.rgbToAnsi(...o)):r==="hex"?I("rgb",e,t,...f.hexToRgb(...o)):f[t][r](...o),Me=["rgb","hex","ansi256"];for(let r of Me){g[r]={get(){let{level:t}=this;return function(...o){let n=N(I(r,ee[t],"color",...o),f.color.close,this[d]);return R(this,n,this[b])}}};let e="bg"+r[0].toUpperCase()+r.slice(1);g[e]={get(){let{level:t}=this;return function(...o){let n=N(I(r,ee[t],"bgColor",...o),f.bgColor.close,this[d]);return R(this,n,this[b])}}}}var we=Object.defineProperties(()=>{},{...g,level:{enumerable:!0,get(){return this[$].level},set(r){this[$].level=r}}}),N=(r,e,t)=>{let o,n;return t===void 0?(o=r,n=e):(o=t.openAll+r,n=e+t.closeAll),{open:r,close:e,openAll:o,closeAll:n,parent:t}},R=(r,e,t)=>{let o=(...n)=>Se(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,we),o[$]=r,o[d]=e,o[b]=t,o},Se=(r,e)=>{if(r.level<=0||!e)return r[b]?"":e;let t=r[d];if(t===void 0)return e;let{openAll:o,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=Q(e,t.close,t.open),t=t.parent;let l=e.indexOf(`
8
+ `);return l!==-1&&(e=J(e,n,o,l)),o+e+n};Object.defineProperties(O.prototype,g);var Fe=O(),ir=O({level:Z?Z.level:0});var c=Fe;var B=()=>`${c.red("=")}${c.green("=")}${c.blue("=")}${c.red("=")}${c.green("=")}${c.blue("=")}`;var re=(r="",e={})=>{let t={info:"blue",success:"green",warning:"yellowBright",danger:"red"},o={info:"\u2771 Info",success:"\u2771 Ok",warning:"\u2771 Warning",danger:"\u2771 Error"},n=e.level?t[e.level]:"gray",l=e.level?o[e.level]:"Log",a=e.docs||"https://cheatcode.co/docs/joystick";console.log(`
9
+ ${e.padding||""}${B()}
7
10
  `),console.log(`${e.padding||""}${c[n](`${l}:`)}
8
11
  `),console.log(`${e.padding||""}${c.white(r)}
9
12
  `),console.log(`${e.padding||""}${c.grey("---")}
@@ -12,6 +15,6 @@ ${e.padding||""}${x()}
12
15
  `),console.log(`${e.padding||""}${c.white("Stuck? Ask a Question:")}
13
16
  `),console.log(`${e.padding||""}${c.blue("https://github.com/cheatcode/joystick/discussions")}
14
17
  `),e.tools&&Array.isArray(e.tools)&&(console.log(`${e.padding||""}${c.white("Helpful Tools:")}
15
- `),e.tools.forEach(m=>{console.log(`${e.padding||""}${c.blue(`${m.title} \u2014 ${m.url}`)}
16
- `)})),console.log(`${e.padding||""}${x()}
17
- `)};var Y=async(r="",e={})=>{let o=`.joystick/build/${r?.charAt(0)==="/"?r.substring(1,r.length):r}`;if(!se.existsSync(o))return G(`[test.load] Path at ${o} not found.`,{level:"warning",docs:"https://cheatcode.co/docs/joystick/test/load"}),null;let l=await import(o);return l?.default&&e?.default?l.default:l};var D={};var U={};var V={};var We={api:A,component:E,databases:v,email:$,load:Y,queues:N,routes:D,uploaders:U,websockets:V},Ke=await test.load("lib/someFunction.js");export{We as default};
18
+ `),e.tools.forEach(h=>{console.log(`${e.padding||""}${c.blue(`${h.title} \u2014 ${h.url}`)}
19
+ `)})),console.log(`${e.padding||""}${B()}
20
+ `)};var te=async(r="",e={})=>{let o=`.joystick/build/${r?.charAt(0)==="/"?r.substring(1,r.length):r}`;if(!ke.existsSync(o))return re(`[test.load] Path at ${o} not found.`,{level:"warning",docs:"https://cheatcode.co/docs/joystick/test/load"}),null;let l=await import(o);return l?.default&&e?.default?l.default:l};var oe={};var ne={};var le={};var Br={api:L,component:G,databases:Y,email:D,load:te,queues:q,routes:oe,that:P.that,uploaders:ne,websockets:le};export{Br as default};
package/dist/test.js ADDED
@@ -0,0 +1,4 @@
1
+ var C=Object.create;var f=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var t=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,n)=>(typeof require<"u"?require:r)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var o=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var x=(e,r,n,d)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of I(r))!T.call(e,s)&&s!==n&&f(e,s,{get:()=>r[s],enumerable:!(d=v(r,s))||d.enumerable});return e};var y=(e,r,n)=>(n=e!=null?C(R(e)):{},x(r||!e||!e.__esModule?f(n,"default",{value:e,enumerable:!0}):n,e));var h=o(a=>{"use strict";var M=t("node:process"),{isMainThread:b}=t("node:worker_threads");a.isRunningInThread=b===!1;a.isRunningInChildProcess=typeof M.send=="function"});var p=o(()=>{"use strict";var A=t("node:path"),u=t("node:process"),{isRunningInThread:P,isRunningInChildProcess:$}=h();if(!$&&!P)if(u.argv[1]){let e=A.relative(".",u.argv[1]);console.log(),console.error(`Test files must be run with the AVA CLI:
2
+
3
+ $ ava ${e}
4
+ `),u.exit(1)}else throw new Error("The \u2019ava\u2019 module can only be imported in test files")});var g=o(i=>{"use strict";i.flags={loadedMain:!1};i.refs={runnerChain:null};i.sharedWorkerTeardowns=[];i.waitForReady=[]});var w=o((z,m)=>{"use strict";p();var k=t("node:assert"),{flags:E,refs:q}=g();k(q.runnerChain);E.loadedMain=!0;m.exports=q.runnerChain});var l=y(w(),1);var c=class{constructor(){}that(r="",n=null){return(0,l.default)(r,n)}},G=new c;export{G as default};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@joystick.js/test-canary",
3
3
  "type": "module",
4
- "version": "0.0.0-canary.1",
4
+ "version": "0.0.0-canary.3",
5
5
  "description": "Isomorphic testing framework for the Joystick JavaScript framework.",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
package/release.js ADDED
@@ -0,0 +1,40 @@
1
+ import { execSync } from "child_process";
2
+ import semver from "semver";
3
+ import { createRequire } from "module";
4
+ import fs from 'fs';
5
+
6
+ const require = createRequire(import.meta.url);
7
+ const packageJSON = require("./package.json");
8
+ const canaryJSON = require('./canary.json');
9
+
10
+ const updatePackageJSONVersion = (packageJSON, originalVersion) => {
11
+ packageJSON.version = originalVersion;
12
+ fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2));
13
+ };
14
+
15
+ const updatePackageJSONDependencies = (packageJSON, canaryJSON) => {
16
+ packageJSON.dependencies = canaryJSON?.dependencies;
17
+ packageJSON.devDependencies = canaryJSON?.devDependencies;
18
+ fs.writeFileSync('package.json', JSON.stringify(packageJSON, null, 2));
19
+ };
20
+
21
+ updatePackageJSONDependencies(packageJSON, canaryJSON);
22
+
23
+ const originalVersion = `${packageJSON.version}`;
24
+
25
+ const version = semver.inc(packageJSON.version,
26
+ "prerelease",
27
+ "beta"
28
+ );
29
+
30
+ try {
31
+ execSync(
32
+ `npm version ${version} --allow-same-version && npm publish --access public`
33
+ );
34
+ } catch (exception) {
35
+ updatePackageJSONVersion(originalVersion, version);
36
+ }
37
+
38
+ if (process.env.NODE_ENV === 'production') {
39
+ execSync(`git add . && git commit -m "release @joystick.js/test@${version}"`);
40
+ }
package/src/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import test from './test.js';
1
2
  import api from './helpers/api/index.js';
2
3
  import component from './helpers/component/index.js';
3
4
  import databases from './helpers/databases/index.js';
@@ -7,7 +8,7 @@ import load from './helpers/load/index.js';
7
8
  import routes from './helpers/routes/index.js';
8
9
  import uploaders from './helpers/uploaders/index.js';
9
10
  import websockets from './helpers/websockets/index.js';
10
-
11
+
11
12
  export default {
12
13
  api,
13
14
  component,
@@ -16,9 +17,7 @@ export default {
16
17
  load,
17
18
  queues,
18
19
  routes,
20
+ that: test.that,
19
21
  uploaders,
20
22
  websockets,
21
23
  };
22
-
23
-
24
- const functionToTest = await test.load('lib/someFunction.js');
package/src/test.js ADDED
@@ -0,0 +1,13 @@
1
+ import test from 'ava';
2
+
3
+ class Test {
4
+ constructor() {
5
+
6
+ }
7
+
8
+ that(description = '', callback = null) {
9
+ return test(description, callback);
10
+ }
11
+ }
12
+
13
+ export default new Test();