mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-12 04:50:18 +00:00
Merge pull request #2144 from RReverser/master
Add definitions for jDataView.
This commit is contained in:
@@ -117,6 +117,7 @@ All definitions files include a header with the author and editors, so at some p
|
||||
* [jake](https://github.com/mde/jake) (by [Kon](http://phyzkit.net/))
|
||||
* [Jasmine](http://pivotal.github.com/jasmine/) (by [Boris Yankov](https://github.com/borisyankov))
|
||||
* [Jasmine-jQuery](https://github.com/velesin/jasmine-jquery) (by [Gregor Stamac](https://github.com/gstamac))
|
||||
* [jDataView](https://github.com/jDataView/jDataView) (by [Ingvar Stepanyan](https://github.com/RReverser))
|
||||
* [JointJS](http://www.jointjs.com/) (by [Aidan Reel](http://github.com/areel))
|
||||
* [jQRangeSlider](http://ghusse.github.com/jQRangeSlider) (by [Dániel Tar](https://github.com/qcz))
|
||||
* [jQuery](http://jquery.com/) (from TypeScript samples)
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
/// <reference path="jdataview.d.ts" />
|
||||
/// <reference path="../jquery/jquery.d.ts" />
|
||||
|
||||
interface TARMetaData {
|
||||
name: string;
|
||||
mode: number;
|
||||
owner: number;
|
||||
group: number;
|
||||
size: number;
|
||||
modtime: number;
|
||||
checksum: number;
|
||||
link: string;
|
||||
name_linked: string;
|
||||
ustar: string;
|
||||
ustar_version: number;
|
||||
owner_name: string;
|
||||
group_name: string;
|
||||
device: number[];
|
||||
name_prefix: string;
|
||||
}
|
||||
|
||||
// Download the file
|
||||
$.get('jquery.tar', function (data) {
|
||||
// Make a view on the data
|
||||
var view = new jDataView(data);
|
||||
|
||||
// console.log(view.getUint32(0, true));
|
||||
// console.log(view.getUint32(0, false));
|
||||
// view.seek(0);
|
||||
|
||||
while (view.tell() < view.byteLength) {
|
||||
// Parse the file meta data
|
||||
var metadata: TARMetaData = {
|
||||
name: view.getString(100).replace(/\0+$/, ''),
|
||||
mode: parseInt(view.getString(8), 8),
|
||||
owner: parseInt(view.getString(8), 8),
|
||||
group: parseInt(view.getString(8), 8),
|
||||
size: parseInt(view.getString(12), 8),
|
||||
modtime: parseInt(view.getString(12), 8),
|
||||
checksum: parseInt(view.getString(8), 8),
|
||||
link: view.getChar(),
|
||||
name_linked: view.getString(100).replace(/\0+$/, ''),
|
||||
ustar: view.getString(6),
|
||||
ustar_version: parseInt(view.getString(2), 8),
|
||||
owner_name: view.getString(32).replace(/\0+$/, ''),
|
||||
group_name: view.getString(32).replace(/\0+$/, ''),
|
||||
device: [parseInt(view.getString(8), 8), parseInt(view.getString(8), 8)],
|
||||
name_prefix: view.getString(155).replace(/\0+$/, '')
|
||||
};
|
||||
|
||||
// Padding
|
||||
if (view.tell() % 512 !== 0) {
|
||||
view.seek(view.tell() + 512 - (view.tell() % 512));
|
||||
}
|
||||
|
||||
// Get the file
|
||||
if (isNaN(metadata.size)) {
|
||||
break;
|
||||
}
|
||||
var content = view.getString(metadata.size);
|
||||
|
||||
// Padding
|
||||
if (view.tell() % 512 != 0) {
|
||||
view.seek(view.tell() + 512 - (view.tell() % 512));
|
||||
}
|
||||
|
||||
// Print the file
|
||||
$(document.body).append($('<pre></pre>').html(JSON.stringify(metadata, null, ' ')));
|
||||
|
||||
if (metadata.size) {
|
||||
$('body').append($('<textarea></textarea>').val(content));
|
||||
}
|
||||
}
|
||||
});
|
||||
Vendored
+105
@@ -0,0 +1,105 @@
|
||||
// Type definitions for jDataView
|
||||
// Project: https://github.com/jDataView/jDataView
|
||||
// Definitions by: Ingvar Stepanyan <https://github.com/RReverser>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare class jDataView implements DataView {
|
||||
constructor(byteCount: number, offset?: number, length?: number, littleEndian?: boolean)
|
||||
constructor(buffer: string, offset?: number, length?: number, littleEndian?: boolean)
|
||||
constructor(buffer: jDataView.Bytes, offset?: number, length?: number, littleEndian?: boolean)
|
||||
buffer: any
|
||||
byteOffset: number
|
||||
byteLength: number
|
||||
|
||||
// 64 bit integers
|
||||
getInt64(byteOffset?: number, littleEndian?: boolean): jDataView.Int64
|
||||
setInt64(byteOffset: number, value: jDataView.Int64, littleEndian?: boolean): void
|
||||
writeInt64(value: jDataView.Int64, littleEndian?: boolean): void
|
||||
getUint64(byteOffset?: number, littleEndian?: boolean): jDataView.Uint64
|
||||
setUint64(byteOffset: number, value: jDataView.Uint64, littleEndian?: boolean): void
|
||||
writeUint64(value: jDataView.Uint64, littleEndian?: boolean): void
|
||||
|
||||
// Bitfields
|
||||
getSigned(bitLength: number, byteOffset?: number): number
|
||||
setSigned(byteOffset: number, value: number, bitLength: number): void
|
||||
writeSigned(value: number, bitLength: number): void
|
||||
getUnsigned(bitLength: number, byteOffset?: number): number
|
||||
setUnsigned(byteOffset: number, value: number, bitLength: number): void
|
||||
writeUnsigned(value: number, bitLength: number): void
|
||||
|
||||
// Internal utilities
|
||||
wrapBuffer(string: string): jDataView.Buffer
|
||||
wrapBuffer(bytes: jDataView.Bytes): jDataView.Buffer
|
||||
wrapBuffer(byteCount: number): jDataView.Buffer
|
||||
createBuffer(...bytes: number[]): jDataView.Buffer
|
||||
|
||||
// Operation control
|
||||
seek(byteOffset: number): number
|
||||
tell(): number
|
||||
skip(byteLength: number): number
|
||||
slice(start: number, end?: number, forceCopy?: boolean): jDataView
|
||||
|
||||
// Specification getters
|
||||
getInt8(byteOffset?: number): number
|
||||
getUint8(byteOffset?: number): number
|
||||
getInt16(byteOffset?: number, littleEndian?: boolean): number
|
||||
getUint16(byteOffset?: number, littleEndian?: boolean): number
|
||||
getInt32(byteOffset?: number, littleEndian?: boolean): number
|
||||
getUint32(byteOffset?: number, littleEndian?: boolean): number
|
||||
getFloat32(byteOffset?: number, littleEndian?: boolean): number
|
||||
getFloat64(byteOffset?: number, littleEndian?: boolean): number
|
||||
|
||||
// Specification setters
|
||||
setInt8(byteOffset: number, value: number): void
|
||||
setUint8(byteOffset: number, value: number): void
|
||||
setInt16(byteOffset: number, value: number, littleEndian?: boolean): void
|
||||
setUint16(byteOffset: number, value: number, littleEndian?: boolean): void
|
||||
setInt32(byteOffset: number, value: number, littleEndian?: boolean): void
|
||||
setUint32(byteOffset: number, value: number, littleEndian?: boolean): void
|
||||
setFloat32(byteOffset: number, value: number, littleEndian?: boolean): void
|
||||
setFloat64(byteOffset: number, value: number, littleEndian?: boolean): void
|
||||
|
||||
// Strings and Blobs
|
||||
getChar(byteOffset?: number): string
|
||||
setChar(byteOffset: number, char: string): void
|
||||
writeChar(char: string): void
|
||||
getString(byteLength: number, byteOffset?: number, encoding?: string): string
|
||||
setString(byteOffset: number, chars: string, encoding?: string): void
|
||||
writeString(chars: string, encoding?: string): void
|
||||
getBytes(length: number, byteOffset?: number, littleEndian?: boolean, toArray?: boolean): number[]
|
||||
setBytes(byteOffset: number, bytes: number[], littleEndian?: boolean): void
|
||||
writeBytes(bytes: number[], littleEndian?: boolean): void
|
||||
|
||||
// writeXXX methods
|
||||
writeInt8(value: number): void
|
||||
writeUint8(value: number): void
|
||||
writeInt16(value: number, littleEndian?: boolean): void
|
||||
writeUint16(value: number, littleEndian?: boolean): void
|
||||
writeInt32(value: number, littleEndian?: boolean): void
|
||||
writeUint32(value: number, littleEndian?: boolean): void
|
||||
writeFloat32(value: number, littleEndian?: boolean): void
|
||||
writeFloat64(value: number, littleEndian?: boolean): void
|
||||
}
|
||||
|
||||
declare module jDataView {
|
||||
interface Bytes {
|
||||
length: number;
|
||||
[index: number]: number;
|
||||
}
|
||||
|
||||
interface Buffer extends Bytes {
|
||||
byteLength: number;
|
||||
}
|
||||
|
||||
class Uint64 {
|
||||
lo: number
|
||||
hi: number
|
||||
constructor(lo: number, hi: number)
|
||||
valueOf(): number
|
||||
static fromNumber(number: number): Uint64
|
||||
}
|
||||
|
||||
class Int64 extends Uint64 {
|
||||
static fromNumber(number: number): Int64
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user