commit 2f4aec654463165f8445c26075e003ff6b105411 Author: MCorange Date: Wed Aug 21 22:16:28 2024 +0300 Initial diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d64059 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/node_modules + diff --git a/README.md b/README.md new file mode 100644 index 0000000..2a05b44 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# rOSs +ross os, yes like bob ross diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4898aa6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,192 @@ +{ + "name": "keypados", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "keypados", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "typescript": "^5.5.2", + "typescript-to-lua": "^1.26.2" + } + }, + "node_modules/@typescript-to-lua/language-extensions": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@typescript-to-lua/language-extensions/-/language-extensions-1.19.0.tgz", + "integrity": "sha512-Os5wOKwviTD4LeqI29N0btYOjokSJ97iCf45EOjIABlb5IwNQy7AE/AqZJobRw3ywHH8+KzJUMkEirWPzh2tUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/typescript": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-to-lua": { + "version": "1.26.2", + "resolved": "https://registry.npmjs.org/typescript-to-lua/-/typescript-to-lua-1.26.2.tgz", + "integrity": "sha512-nmlYhi0mlXOKK5q3GumstC/fk30xPSILQTK5GHcTovSiCzSovLUq0F6NNBnSMskmw9ENjUwdMtHUl2IpfeiGrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-to-lua/language-extensions": "1.19.0", + "enhanced-resolve": "^5.8.2", + "picomatch": "^2.3.1", + "resolve": "^1.15.1", + "source-map": "^0.7.3" + }, + "bin": { + "tstl": "dist/tstl.js" + }, + "engines": { + "node": ">=16.10.0" + }, + "peerDependencies": { + "typescript": "5.5.2" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6449a9a --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "keypados", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "description": "", + "devDependencies": { + "typescript": "^5.5.2", + "typescript-to-lua": "^1.26.2" + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..ad4eef6 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,11 @@ + + + + +function main() { + const d: peripheral = peripheral.wrap("disk") as peripheral; + + +} + +main() diff --git a/src/types/cct.d.ts b/src/types/cct.d.ts new file mode 100644 index 0000000..77694f1 --- /dev/null +++ b/src/types/cct.d.ts @@ -0,0 +1,859 @@ + + +declare function print(s: string): number; +declare function write(s: string): number; +declare function sleep(time: number): void; +declare function printError(...values: any): void; +declare function read(replaceChar?: string, history?: string[], completeFn?: (par: string) => string[]): void; +declare function Command(args: string): [boolean, string[], number|null]; +declare function AsyncCommand(args: string): number; + +declare const _HOST: string; +declare const _CC_DEFAULT_SETTINGS: string; + +type Color = number; +type Coords = [number, number, number]; +type CoordsNullable = [number|null, number|null, number|null]; + +declare class colors { + /// White: Written as **`0`** in paint files and term.blit, has a default terminal color of #F0F0F0 + public static white: Color; + /// Orange: Written as **`1`** in paint files and term.blit, has a default terminal color of #F2B233. + public static orange: Color; + // Magenta: Written as **`2`** in paint files and term.blit, has a default terminal color of #E57FD8. + public static magenta: Color; + // LightBlue: Written as **`3`** in paint files and `term.blit`, has a default terminal color of #99B2F2. + public static lightBlue: Color; + // Yellow: Written as **`4`** in paint files and `term.blit`, has a default terminal color of #DEDE6C. + public static yellow: Color; + // Lime: Written as **`5`** in paint files and `term.blit`, has a default terminal color of #7FCC19. + public static lime: Color; + // Pink: Written as **`6`** in paint files and `term.blit`, has a default terminal color of #F2B2CC. + public static pink: Color; + // Gray: Written as **`7`** in paint files and `term.blit`, has a default terminal color of #4C4C4C. + public static gray: Color; + // LightGray: Written as **`8`** in paint files and `term.blit`, has a default terminal color of #999999. + public static lightGray: Color; + // Cyan: Written as **`9`** in paint files and `term.blit`, has a default terminal color of #4C99B2. + public static cyan: Color; + // Purple: Written as **`a`** in paint files and `term.blit`, has a default terminal color of #B266E5. + public static purple: Color; + // Blue: Written as **`b`** in paint files and `term.blit`, has a default terminal color of #3366CC. + public static blue: Color; + // Brown: Written as **`c`** in paint files and `term.blit`, has a default terminal color of #7F664C. + public static brown: Color; + // Green: Written as **`d`** in paint files and `term.blit`, has a default terminal color of #57A64E. + public static green: Color; + /// Red: Written as **`e`** in paint files and `term.blit`, has a default terminal color of #CC4C4C. + public static red: Color; + /// Black: Written as **`f`** in paint files and `term.blit`, has a default terminal color of #111111. + public static black: Color; + + static combine(...colors: Color[]): Color; + static subtract(from: Color, what: Color): Color; + static test(from: Color, what: Color): boolean; + static packRGB(r: number, g: number, b: number): Color; + static unpackRGB(rgb: Color): [number, number, number]; + static toBlit(color: Color): string; +} + +declare class BlockInfo extends Map { + public static name: string; + public static state: Map; + public static tags: Map; + public static nbt: Map; +} + +declare class native { + static exec(command: string): [boolean, string[], number|null]; + static execAsync(command: string): number; + static list(...subcommand: string[]): string[]; + static getBlockPosition(): Coords; + static getBlockInfos(minX: number, minY: number, minZ: number, + maxX: number, maxY: number, maxZ: number, dimension?: string): BlockInfo[]; + static getBlockInfo(x: number, y: number, z: number, dimension: string): BlockInfo; +} + +declare class async { + static exec(command: string): number; + static execAsync(command: string): number; + static list(...subcommand: string[]): number; + static getBlockPosition(): number; + static getBlockInfos(minX: number, minY: number, minZ: number, + maxX: number, maxY: number, maxZ: number, dimension?: string): number; + static getBlockInfo(x: number, y: number, z: number, dimension: string): number; +} +declare class commands { + public static native: native; + public static async: async; + static exec(command: string): [boolean, string[], number|null]; + static execAsync(command: string): number; + static list(...subcommand: string[]): string[]; + static getBlockPosition(): Coords; + static getBlockInfos(minX: number, minY: number, minZ: number, + maxX: number, maxY: number, maxZ: number, dimension?: string): BlockInfo[]; + static getBlockInfo(x: number, y: number, z: number, dimension: string): BlockInfo; +} + +type AnyPeripheral = command | computer | drive | modem | Monitor | printer | speaker | BigReactors; + +declare class peripheral { + /** + * Provides a list of all peripherals available. + * If a device is located directly next to the system, + * then its name will be listed as the side it is attached to. + * If a device is attached via a Wired Modem, + * then it'll be reported according to its name on the wired network. + */ + static getNames(): string[]; + /** + * Determines if a peripheral is present with the given name. + */ + static isPresent(name: string): boolean; + + static getType(peripheral: string|peripheral): string|null; + + static hasType(peripheral: string|peripheral, peripheral_type: string): boolean|null; + + static getMethods(name: string): string[]|null; + + static getName(peripheral: peripheral): string; + + static call(name: string, method: string, ...arguments: unknown[]): unknown; + + static wrap(name: string): peripheral| null; + + static find(ty: string, + filter: (name: string, wrapped: peripheral) => boolean + ): [peripheral, peripheral|null, peripheral|null, peripheral|null]; +} + +declare class inventory { + static size(): number; + static list(): Map; + static getItemDetail(slot: number): ItemInfo|null; + static getItemLimit(slot: number): number; + static pushItems(toName: string, fromSlot: number, limit: number, toSlot: number): number; + static pullItems(fromName: string, fromSlot: number, limit: number, toSlot: number): number; +} + +declare class fluid_storage { + static tanks(): Map; + static pushFluid(toName: string, limit?: number, fluidName?: string): number; + static pullFluid(fromName: string, limit?: number, fluidName?: string): number; +} + +declare class energy_storage { + static getEnergy(): number; + static getEnergyCapacity(): number; +} + +type Instrument = "harp" | "basedrum" | "snare" | "hat" | "bass" | "flute" | "bell" | "guitar" | "chime" | "xylophone" | + "iron_xylophone" | "cow_bell" | "didgeridoo" | "bit" | "banjo" | "pling"; + +declare class speaker { + static playNote(instrument: Instrument, volume?: number, pitch?: number): boolean; + static playSound(name: string, volume?: number, pitch?: number): boolean; + static playAudio(audio: number[], volume?: number): boolean; + static stop(): void; +} + +declare class printer { + static write(...args: (string|number)[]): void; + static getCursorPos(): [number, number]; + static setCursorPos(x: number, y: number): void; + static getPageSize(): number; + static newPaget(): void; + static endPage(): boolean; + static setPageTitle(s: string): void; + static getInkLevel(): number; + static getPaperLevel(): number; +} + +declare class Monitor extends Redirect { + static getNames(): string[]; + static isPresent(name: string): boolean; + static getType(peripheral: string|peripheral): string|null; + static hasType(peripheral: string|peripheral, peripheral_type: string): boolean|null; + static getMethods(name: string): string[]|null; + static getName(peripheral: peripheral): string; + static call(name: string, method: string, ...arguments: unknown[]): unknown; + static wrap(name: string): peripheral| null; + static find(ty: string, + filter: (name: string, wrapped: peripheral) => boolean + ): [peripheral, peripheral|null, peripheral|null, peripheral|null]; + setTextScale(scale: number): void; + getTextScale(): number; +} + +declare class modem { + static open(channel: number): void; + static isOpen(channel: number): boolean; + static close(channel: number): void; + static closeAll(): void; + static transmit(channel: number, replyChannel: number, payload: any): void; + static isWireless(): boolean; + static getNamesRemote(): string[]; + static isPresentRemote(name: string): boolean; + static getTypeRemote(name: string): string|null; + static hasTypeRemote(name: string, typ: string): boolean; + static getMethodsRemote(name: string): string|null; + static callRemote(remoteName: string, method: string, ...args: any[]): any[]; + static getNameLocal(): string|null; +} + +declare class drive { + static isDiskPresent(): boolean; + static getDiskLabel(): string|null; + static setDiskLabel(l?: string): null; + static hasData(): boolean; + static getMountPath(): string|null; + static hasAudio(): boolean; + static getAudioTitle(name: string): string|"false"|null; + static playAudio(name: string): void; + static stopAudio(name: string): void; + static ejectDisk(name: string): void; + static getDiskID(name: string): string|null; +} + +declare class disk { + static getLabel(name: string): string|null; + static setLabel(name: string, label?: string): void; + static hasData(name: string): boolean; + static getMountPath(name: string): string|null; + static hasAudio(name: string): boolean; + static getAudioTitle(name: string): string|"false"|null; + static playAudio(name: string): void; + static stopAudio(name: string): void; + static eject(name: string): void; + static getID(name: string): string|null; +} + + + +declare class computer { + static turnOn(): void; + static shutdown(): void; + static reboot(): void; + static getID(): number; + static isOn(): boolean; + static getLabel(): string; +} + +declare class command { + static getCommand(): string; + static setCommand(command: string): void; + static runCommand(): [boolean, string|null]; +} + +declare class fs { + static isDriveRoot(path: string): boolean; + static include(path: string, location: string, include_files?: boolean, include_dirs?: boolean): string[]; + static list(path: string): string[]; + static combine(path: string, ...paths: string[]): string; + static getName(path: string): string; + static getDir(path: string): string; + static getSize(path: string): number; + static exists(path: string): boolean; + static isDir(path: string): boolean; + static isReadOnly(path: string): boolean; + static makeDir(path: string): void; + static move(from: string, to: string): void; + static copy(from: string, to: string): void; + static delete(path: string): void; + static open(path: string, mode: "r"): ReadHandle; + static open(path: string, mode: "rb"): BinaryReadHandle; + static open(path: string, mode: "w" | "a"): WriteHandle; + static open(path: string, mode: "wb" | "ab"): BinaryWriteHandle; + static getDrive(path: string): string; + static getFreeSpace(path: string): number|"unlimited"; + static find(path: string): string[]; + static getCapacity(path: string): number|null; + static attributes(path: string): Attributes; +} + +interface Attributes { + size: number; + isDir: boolean; + isReadOnly: boolean; + created: number; + modified: number; +} + +declare class FileHandle { + close(): void; +} + +declare class ReadHandle extends FileHandle { + readLine(withTrailing?: boolean): string|null; + readAll(): string|null; + read(count?: number): string|null; +} + +declare class BinaryReadHandle extends FileHandle { + read(): number; + read(count?: number): string|null; + readLine(withTrailing?: boolean): string|null; + readAll(): string|null; + seek(whence?: "set"|"cur"|"end", offset?: number): [number|null, string|null]; +} + +declare class WriteHandle extends FileHandle { + write(val: string): void; + writeLine(val: string): void; + flush(): void; +} + +declare class BinaryWriteHandle extends FileHandle { + write(val: string|number): void; + flush(): void; + seek(whence?: "set"|"cur"|"end", offset?: number): [number|null, string|null]; +} + +declare class gps { + public static CHANNEL_GPS: number; + static locate(timeout?: number, debug?: boolean): CoordsNullable; +} + +declare class help { + static path(): string; + static setPath(newPath: string): void; + static lookup(topic: string): string|null; + static topics(): string[]; + static completeTopic(prefix: string): string[]; +} + +declare class Request { + public static url: string; + public static body?: string; + public static headers?: Map; + public static binary?: boolean; + public static method?: string; + public static redirect?: boolean; +} + +declare class GetRequest { + public static url: string; + public static headers?: Map; + public static binary?: boolean; + public static method?: string; + public static redirect?: boolean; +} + +declare class http { + static request(request: Request): [boolean, string|null]; + static request(url: string, body?: string, headers?: Map, binary?: boolean): [boolean, string|null]; + static get(request: GetRequest): [Response|null, string|null, Response|null]; + static get(url: string, headers?: Map, binary?: boolean): [Response|null, string|null, Response|null]; + static post(request: Request): [Response|null, string|null, Response|null]; + static post(url: string, body?: string, headers?: Map, binary?: boolean): [Response|null, string|null, Response|null]; + static checkUrl(url: string): [boolean, string|null]; + static checkUrlAsync(url: string): [boolean, string|null]; + static websocket(url: string, headers?: Map): [Websocket | "false", string|null]; + static websocketAsync(url: string, headers?: Map): "true"; +} + +declare class Websocket { + receive(timeout?: number): [string|null, boolean]; + send(message: any, binary?: boolean): void; + close(): void; + getResponseCode(): [number, string]; + getResponseHeaders(): Map; +} + +declare class Response extends BinaryReadHandle {} + +declare class Handle { + close(): ["true"|null, string|null]; + flush(): void; + lines(...params: any[]): () => string|null; + read(...format: ("l" | "L" | "n" | "a" | "*l" | "*L" | "*n" | "*a")[]): [string|null, string|null, string|null, string|null]; + seek(whence?: "set"|"cur"|"end", offset?: number): number; + write(...val: (string|number)[]): [Handle|null, string|null]; +} + +declare class io { + public static stdin: Handle; + public static stdout: Handle; + public static stderr: Handle; + static close(file: Handle): void; + static flush(): void; + static input(file?: Handle|string): Handle; + static lines(filename?: string, ...args: any[]): () => string|null; + static open(filename: string, mode?: "r"|"w"|"a"|"rb"|"wb"|"ab"): [Handle|null, string|null]; + static output(file?: Handle|string): Handle; + static read(...formats: any): [string|null, string|null, string|null, string|null]; + static type(handle: Handle): "file"|"closed file"|null; + static write(...strings: string[]): [Handle|null, string|null]; +} + +interface keys { + a: number; + b: number; + c: number; + d: number; + e: number; + f: number; + g: number; + h: number; + i: number; + j: number; + k: number; + l: number; + m: number; + n: number; + o: number; + p: number; + q: number; + r: number; + s: number; + t: number; + u: number; + v: number; + w: number; + x: number; + y: number; + z: number; + f1: number; + f2: number; + f3: number; + f4: number; + f5: number; + f6: number; + f7: number; + f8: number; + f9: number; + f10: number; + f11: number; + f12: number; + f13: number; + f14: number; + f15: number; + f16: number; + f17: number; + f18: number; + f19: number; + f20: number; + f21: number; + f22: number; + f23: number; + f24: number; + f25: number; + left: number; + leftAlt: number; + leftBracket: number; + leftCtrl: number; + leftShift: number; + leftSuper: number; + right: number; + rightAlt: number; + rightBracket: number; + rightCtrl: number; + rightShift: number; + up: number; + down: number; + pageUp: number; + pageDown: number; + home: number; + en: number; + apostrophe: number; + backslash: number; + comma: number; + equals: number; + grave: number; + minus: number; + period: number; + semicolon: number; + slash: number; + space: number; + tab: number; + numPad0: number; + numPad1: number; + numPad2: number; + numPad3: number; + numPad4: number; + numPad5: number; + numPad6: number; + numPad7: number; + numPad8: number; + numPad9: number; + numLock: number; + numPadAdd: number; + numPadDecimal: number; + numPadDivide: number; + numPadEnter: number; + numPadEqual: number; + numPadMultiply: number; + numPadSubtract: number; + backspace: number; + delete: number; + capsLock: number; + scollLock: number; + scrollLock: number; + enter: number; + return: number; + insert: number; + menu: number; + pause: number; + printScreen: number; + zero: number; + one: number; + two: number; + three: number; + four: number; + five: number; + six: number; + seven: number; + eight: number; + nine: number; + + getName: (code: number) => string|null; +} + +declare class multishell { + static getFocus(): number; + static setFocus(n: number): boolean; + static getTitle(n: number): string|null; + static setTitle(n: number, title: string): void; + static get_current(): number; + static launch(tProgramEnv: Map, sProgramPath: string, ...args: string[]): number; + static getCount(): number; +} + +declare class os { + static pullEvent(filter?: string): [string, unknown, unknown, unknown, unknown]; + static pullEventRaw(filter?: string): [string, unknown, unknown, unknown, unknown]; + static sleep(n: number): void; + static version(): string; + static run(env: Map, path: string, ...args: string[]): boolean; + static queueEvent(name: string, ...args: any[]): void; + static startTimer(time: number): number; + static cancelTimer(token: number): void; + static setAlarm(time: number): number; + static cancelAlarm(token: number): void; + static shutdown(): void; + static reboot(): void; + static getComputerID(): number; + static setComputerLabel(label?: string): void; + static clock(): number; + static time(locale?: "ingame" | "utc" | "local"): number; + static time(locale?: date): number; + static day(locale?: "ingame" | "utc" | "local"): number; + static epoch(locale?: "ingame" | "utc" | "local"): number; + static date(format?: string, time?: number): number; + static date(format?: "*t" | "!*t", time?: number): date; +} + +interface date { + isdst: boolean; + hour: number; + min: number; + sec: number; + day: number; + month: number; + year: number; + wday: number; + yday: number; +} + +type Image = number[][]; + +declare class paintutils { + static parseImage(image: string): Image; + static loadImage(path: string): Image|null; + static drawPixel(xPos: number, yPos: number, color?: Color): void; + static drawBox(startX: number, startY: number, endX: number, endY: number, color: Color): void; + static drawFilledBox(startX: number, startY: number, endX: number, endY: number, color: Color): void; + static drawImage(image: Image, xPos: number, yPos: number): void; +} + +declare class parallel { + static waitForAny(...functions: ((...args: any[]) => any)[]): void; + static waitForAll(...functions: ((...args: any[]) => any)[]): void; +} + +declare class pocket { + static equipBack(): [boolean, string|null]; + static unequipBack(): [boolean, string|null]; +} + +declare class rednet { + public static CHANNEL_BROADCAST: number; + public static CHANNEL_REPEAT: number; + public static MAX_ID_CHANNELS: number; + + static open(modem: string): void; + static close(modem?: string): void; + static isOpen(modem?: string): boolean; + static send(recipient: number, message: any, protocol?: string): boolean; + static broadcast(message: any, protocol?: string): boolean; + static receive(protocol_filter?: string, timeout?: number): [number|null, unknown, string|null]; + static host(protocol: string, hostname: string): void; + static unhost(protocol: string): void; + static lookup(protocol: string, hostname: string): [number|null, number, number, number]; + static run(): void; +} + +type Side = "top"|"bottom"|"left"|"right"|"front"|"back"; + +declare class redstone { + static getSides(): string; + static setOutput(side: Side, on: boolean): void; + static getOutput(side: Side): boolean; + static getInput(side: Side): boolean; + static setAnalogOutput(side: Side, val: number): number; + static getAnalogOutput(side: Side): number; + static getAnalogInput(side: Side): number; + static setBundledOutput(side: Side, val: number): number; + static getBundledOutput(side: Side): number; + static getBundledInput(side: Side): number; + static testBundledInput(side: Side, mask: number): boolean; +} + +declare class settings { + static define(name: string, options: settingsOptions): void; + static undefine(name: string): void; + static set(name: string, value: any): void; + static get(name: string, deflt?: any): unknown; + static getDetails(name: string): settingsDetails; + static unset(name: string): void; + static clear(): void; + static getNames(): string[]; + static load(path?: string): boolean; + static save(path?: string): boolean; +} + +interface settingsOptions { + description?: string; + default?: any; + type?: string; +} + +interface settingsDetails { + description?: string; + default?: any; + type?: string; + value?: any; +} + +type completionFn = (shell: shell, index: number, argument: string, previous: string[]) => string[]|null; + +declare class shell { + static execute(command: string, ...args: string[]): boolean; + static run(...args: string[]): boolean; + static exit(): void; + static dir(): string; + static setDir(dir: string): void; + static path(): string; + static setPath(path: string): void; + static resolve(p: string): void; + static resolveProgram(p: string): string|null; + static programs(include_hidden?: boolean): string[]; + static complete(input: string): string[]; + static completeProgram(program: string): string[]; + static setCompletionFunction(program: string, complete: completionFn): void; + static getCompletionInfo(): Map; + static getRunningProgram(): string; + static setAlias(command: string, program: string): void; + static clearAlias(command: string): void; + static aliases(): Map; + static openTab(...args: string[]): number; + static switchTab(id: number): void; +} + +interface completionInfo { + fnComplete: completionFn; +} + +declare class Redirect { + static write(s: string): void; + static scroll(y: number): void; + static getCursorPos(): [number, number]; + static setCursorPos(x: number, y: number): void; + static getCursorBlink(): boolean; + static setCursorBlink(b: boolean): void; + static getSize(): [number, number]; + static clear(): void; + static clearLine(): void; + static getTextColor(): Color; + static setTextColor(c: Color): void; + static getBackgroundColor(): Color; + static setBackgroundColor(c: Color): void; + static isColor(): boolean; + static blit(text: string, textColor: string, backgroundColor: string): void; + static setPaletteColor(index: number, color: Color): void; + static setPaletteColor(index: number, r: number, g: number, b: number): void; + static getPaletteColor(color: Color): [number, number, number]; +} + +declare class term extends Redirect { + static nativePaletteColor(color: Color): [number, number, number]; + static redirect(target: Redirect): Redirect; + static current(): Redirect; + static native(): Redirect; +} + +declare class turtle { + static forward(): [boolean, string|null]; + static back(): [boolean, string|null]; + static up(): [boolean, string|null]; + static down(): [boolean, string|null]; + static turnLeft(): [boolean, string|null]; + static turnRight(): [boolean, string|null]; + static dig(side?: "left" | "right"): [boolean, string|null]; + static digUp(side?: "left" | "right"): [boolean, string|null]; + static digDown(side?: "left" | "right"): [boolean, string|null]; + static place(text?: string): [boolean, string|null]; + static placeUp(text?: string): [boolean, string|null]; + static placeDown(text?: string): [boolean, string|null]; + static drop(count?: number): [boolean, string|null]; + static dropUp(count?: number): [boolean, string|null]; + static dropDown(count?: number): [boolean, string|null]; + static select(slot: number): boolean; + static getItemCount(slot?: number): number; + static detect(): boolean; + static detectUp(): boolean; + static detectDown(): boolean; + static compare(): boolean; + static compareUp(): boolean; + static compareDown(): boolean; + static attack(side?: "left" | "right"): [boolean, string|null]; + static attackUp(side?: "left" | "right"): [boolean, string|null]; + static attackDown(side?: "left" | "right"): [boolean, string|null]; + static suck(count?: number): [boolean, string|null]; + static suckUp(count?: number): [boolean, string|null]; + static suckDown(count?: number): [boolean, string|null]; + static getFuelLevel(): number|"unlimited"; + static refuel(count?: number): [boolean, string|null]; + static compareTo(slot: number): boolean; + static compareTo(slot: number, count?: number): boolean; + static getSelectedSlot(): number; + static getFuelLimit(): number|"unlimited"; + static equpLeft(): [boolean, string|null]; + static equipRight(): [boolean, string|null]; + static inspect(): [boolean, BlockInfo|string]; + static inspectUp(): [boolean, BlockInfo|string]; + static inspectDown(): [boolean, BlockInfo|string]; + static getItemDetail(slot?: number, detailed?: boolean): ItemInfo | null; + static craft(limit?: number): [boolean, string|null]; +} + +interface ItemInfo { + name: string; + displayName: string; + count: number; + damage?: number; + durability?: number; + maxCount?: number; + maxDamage?: number; + nbt?: string; + tags?: Map; +} + +declare class vector { + static new(x: number, y: number, z: number): Vector; +} + +declare class Vector { + constructor(x: number, y: number, z: number); + + add(v: Vector): Vector; + sub(v: Vector): Vector; + mul(v: Vector): Vector; + unm(): Vector; + dot(v: Vector): Vector; + cross(v: Vector): Vector; + length(): Vector; + normalise(): Vector; + round(tol: number): Vector; + tostring(): string; + equals(v: Vector): boolean; +} + +declare class window { + static new(parent: Redirect, x: number, y: number, w: number, h: number, visible: boolean): Window; +} + +declare class Window extends Redirect { + getLine(y: number): [string, string, string]; + setVisible(v: boolean): void; + isVisible(): boolean; + redraw(): void; + restoreCursor(): void; + getPosition(): [number, number]; + reposition(x: number, y: number, w: number, h: number, parent: Redirect): void; +} + +declare module cc { + // TODO + // +} + +interface EnergyStats { + energyStored: number; + energyCapacity: number; + energyProducedLastTick: number; + energySystem: string; +} + +interface FuelStats { + fuelAmount: number; + fuelCapacity: number; + fuelTemperature: number; + fuelConsumedLastTick: number; + fuelReactivity: number; + wasteAmount: number; +} + +interface HotFluidStats { + fluidType: string; + fluidAmount: number; + fluidCapacity: number; + fluidProducedLastTick: number; +} + +interface CoolantFluidStats { + fluidType: string; + fluidAmount: number; + fluidCapacity: number; +} + + + +declare class BigReactors { + getVariant(): string; + getEnergyStored(): number; + getEnergyStoredAsText(): string; + getNumberOfControllRods(): number; + getActive(): boolean; + getFuelTemperature(): number; + getCasingTemperature(): number; + getFuelAmount(): number; + getWasteAmount(): number; + getFuelAmountMax(): number; + getControllRodName(idx: number): string; + getControllRodLevel(idx: number): number; + getEnergyProducedLastTick(): number; + getHotFluidProducedLastTick(): number; + isActivelyCooled(): boolean; + getCoolantAmount(): number; + getCoolantAmountMax(): number; + getHotFluidAmount(): number; + getHotFluidAmountMax(): number; + getHotFluidType(): string; + getFuelReactivity(): number; + getFuelConsumedLastTick(): number; + getControllRodLocation(idx: number): Coords; + getEnergyCapacity(): number; + getControllRodLevels(): Map; + setControllRodLevels(levels: Map): void; + getEnergyStats(): EnergyStats; + getHotFluidStats(): HotFluidStats; + getCoolantFluidStats(): CoolantFluidStats; + setActive(active: boolean): void; + setControllRodLevel(idx: number, level: number): void; + setAllControllRodLevels(level: number): void; + setControllRodName(idx: number, name: string): void; + doEjectWaste(): void; + doEjectFuel(): void; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1de700a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://raw.githubusercontent.com/TypeScriptToLua/TypeScriptToLua/master/tsconfig-schema.json", + "compilerOptions": { + "target": "ESNext", + "lib": ["ESNext"], + "moduleResolution": "NodeNext", + "module": "NodeNext", + "types": [], + "strict": true + }, + "tstl": { + "luaTarget": "universal", + "luaBundleEntry": "src/index.ts", + "luaBundle": "rOSs.lua" + } +}