ink-testing-library
Advanced tools
Comparing version 2.1.0 to 3.0.0
@@ -1,3 +0,3 @@ | ||
/// <reference types="node" /> | ||
import { EventEmitter } from 'events'; | ||
/// <reference types="node" resolution-mode="require"/> | ||
import { EventEmitter } from 'node:events'; | ||
import type { ReactElement } from 'react'; | ||
@@ -25,3 +25,3 @@ declare class Stdout extends EventEmitter { | ||
} | ||
interface Instance { | ||
type Instance = { | ||
rerender: (tree: ReactElement) => void; | ||
@@ -35,5 +35,5 @@ unmount: () => void; | ||
lastFrame: () => string | undefined; | ||
} | ||
}; | ||
export declare const render: (tree: ReactElement) => Instance; | ||
export declare const cleanup: () => void; | ||
export {}; |
@@ -1,17 +0,33 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.cleanup = exports.render = void 0; | ||
const events_1 = require("events"); | ||
const ink_1 = require("ink"); | ||
class Stdout extends events_1.EventEmitter { | ||
import { EventEmitter } from 'node:events'; | ||
import { render as inkRender } from 'ink'; | ||
class Stdout extends EventEmitter { | ||
constructor() { | ||
super(...arguments); | ||
this.frames = []; | ||
this.write = (frame) => { | ||
this.frames.push(frame); | ||
this._lastFrame = frame; | ||
}; | ||
this.lastFrame = () => { | ||
return this._lastFrame; | ||
}; | ||
Object.defineProperty(this, "frames", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: [] | ||
}); | ||
Object.defineProperty(this, "_lastFrame", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: void 0 | ||
}); | ||
Object.defineProperty(this, "write", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: (frame) => { | ||
this.frames.push(frame); | ||
this._lastFrame = frame; | ||
} | ||
}); | ||
Object.defineProperty(this, "lastFrame", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: () => this._lastFrame | ||
}); | ||
} | ||
@@ -22,22 +38,52 @@ get columns() { | ||
} | ||
class Stderr extends events_1.EventEmitter { | ||
class Stderr extends EventEmitter { | ||
constructor() { | ||
super(...arguments); | ||
this.frames = []; | ||
this.write = (frame) => { | ||
this.frames.push(frame); | ||
this._lastFrame = frame; | ||
}; | ||
this.lastFrame = () => { | ||
return this._lastFrame; | ||
}; | ||
Object.defineProperty(this, "frames", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: [] | ||
}); | ||
Object.defineProperty(this, "_lastFrame", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: void 0 | ||
}); | ||
Object.defineProperty(this, "write", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: (frame) => { | ||
this.frames.push(frame); | ||
this._lastFrame = frame; | ||
} | ||
}); | ||
Object.defineProperty(this, "lastFrame", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: () => this._lastFrame | ||
}); | ||
} | ||
} | ||
class Stdin extends events_1.EventEmitter { | ||
class Stdin extends EventEmitter { | ||
constructor() { | ||
super(...arguments); | ||
this.isTTY = true; | ||
this.write = (data) => { | ||
this.emit('data', data); | ||
}; | ||
// eslint-disable-next-line @typescript-eslint/naming-convention | ||
Object.defineProperty(this, "isTTY", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: true | ||
}); | ||
Object.defineProperty(this, "write", { | ||
enumerable: true, | ||
configurable: true, | ||
writable: true, | ||
value: (data) => { | ||
this.emit('data', data); | ||
} | ||
}); | ||
} | ||
@@ -58,9 +104,12 @@ setEncoding() { | ||
const instances = []; | ||
exports.render = (tree) => { | ||
export const render = (tree) => { | ||
const stdout = new Stdout(); | ||
const stderr = new Stderr(); | ||
const stdin = new Stdin(); | ||
const instance = ink_1.render(tree, { | ||
const instance = inkRender(tree, { | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment | ||
stdout: stdout, | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment | ||
stderr: stderr, | ||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment | ||
stdin: stdin, | ||
@@ -83,3 +132,3 @@ debug: true, | ||
}; | ||
exports.cleanup = () => { | ||
export const cleanup = () => { | ||
for (const instance of instances) { | ||
@@ -86,0 +135,0 @@ instance.unmount(); |
{ | ||
"name": "ink-testing-library", | ||
"version": "2.1.0", | ||
"version": "3.0.0", | ||
"description": "Utilities for testing Ink apps", | ||
@@ -9,9 +9,12 @@ "license": "MIT", | ||
"name": "Vadim Demedes", | ||
"email": "vdemedes@gmail.com", | ||
"url": "github.com/vadimdemedes/ink-testing-library" | ||
"email": "vadimdemedes@hey.com", | ||
"url": "https://github.com/vadimdemedes" | ||
}, | ||
"main": "build", | ||
"types": "build/index.d.ts", | ||
"type": "module", | ||
"exports": { | ||
"types": "./build/index.d.ts", | ||
"default": "./build/index.js" | ||
}, | ||
"engines": { | ||
"node": ">=10" | ||
"node": ">=14.16" | ||
}, | ||
@@ -32,20 +35,19 @@ "scripts": { | ||
"devDependencies": { | ||
"@ava/babel": "^1.0.1", | ||
"@babel/preset-react": "^7.0.0", | ||
"@sindresorhus/tsconfig": "^0.7.0", | ||
"@types/node": "^14.0.13", | ||
"@types/react": "^16.9.38", | ||
"ava": "^3.9.0", | ||
"delay": "^4.3.0", | ||
"eslint-config-xo-react": "^0.19.0", | ||
"eslint-plugin-ava": "^10.3.1", | ||
"eslint-plugin-react": "^7.12.4", | ||
"eslint-plugin-react-hooks": "^1.4.0", | ||
"ink": "^3.0.0-1", | ||
"react": "^16.8.4", | ||
"typescript": "^3.9.5", | ||
"xo": "^0.32.0" | ||
"@sindresorhus/tsconfig": "^3.0.1", | ||
"@types/react": "^18.0.0", | ||
"@vdemedes/prettier-config": "^1.0.1", | ||
"ava": "^5.1.1", | ||
"delay": "^5.0.0", | ||
"eslint-config-xo-react": "^0.27.0", | ||
"eslint-plugin-react": "^7.32.2", | ||
"eslint-plugin-react-hooks": "^4.6.0", | ||
"ink": "^4.0.0", | ||
"prettier": "^2.0.4", | ||
"react": "^18.0.0", | ||
"ts-node": "^10.9.1", | ||
"typescript": "^4.9.4", | ||
"xo": "^0.53.0" | ||
}, | ||
"peerDependencies": { | ||
"@types/react": ">=16.8.0" | ||
"@types/react": ">=18.0.0" | ||
}, | ||
@@ -58,13 +60,15 @@ "peerDependenciesMeta": { | ||
"ava": { | ||
"babel": { | ||
"testOptions": { | ||
"presets": [ | ||
"@babel/preset-react" | ||
] | ||
} | ||
} | ||
"extensions": { | ||
"ts": "module", | ||
"tsx": "module" | ||
}, | ||
"nodeArguments": [ | ||
"--loader=ts-node/esm" | ||
] | ||
}, | ||
"xo": { | ||
"extends": "xo-react" | ||
} | ||
"extends": "xo-react", | ||
"prettier": true | ||
}, | ||
"prettier": "@vdemedes/prettier-config" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
11719
14
172
Yes