refactor: improve tree-shaking

This commit is contained in:
Simon Chan 2024-10-24 04:28:55 +08:00
parent ef0e1c6bcf
commit a29268426d
No known key found for this signature in database
GPG key ID: A8B69F750B9BCEDD
13 changed files with 107 additions and 96 deletions

View file

@ -33,7 +33,7 @@
},
"dependencies": {
"@yume-chan/adb": "workspace:^",
"@yume-chan/async": "^2.2.0",
"@yume-chan/async": "^4.0.0",
"@yume-chan/event": "workspace:^",
"@yume-chan/scrcpy": "workspace:^",
"@yume-chan/stream-extra": "workspace:^",

View file

@ -32,7 +32,7 @@
"test": "run-test"
},
"dependencies": {
"@yume-chan/async": "^2.2.0",
"@yume-chan/async": "^4.0.0",
"@yume-chan/event": "workspace:^",
"@yume-chan/no-data-view": "workspace:^",
"@yume-chan/stream-extra": "workspace:^",

View file

@ -33,7 +33,7 @@ export type LogId = (typeof LogId)[keyof typeof LogId];
const LogIdName =
/* #__PURE__ */
Object.fromEntries(Object.entries(LogId).map(([k, v]) => [v, k]));
(() => Object.fromEntries(Object.entries(LogId).map(([k, v]) => [v, k])))();
// https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/android/log.h;l=73;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
export const AndroidLogPriority = {
@ -96,7 +96,7 @@ export interface LogcatOptions {
ids?: LogId[];
}
const NANOSECONDS_PER_SECOND = BigInt(1e9);
const NANOSECONDS_PER_SECOND = /* #__PURE__ */ BigInt(1e9);
// https://cs.android.com/android/platform/superproject/+/master:system/logging/liblog/include/log/log_read.h;l=39;drc=82b5738732161dbaafb2e2f25cce19cd26b9157d
export const LoggerEntry =

View file

@ -33,7 +33,7 @@
"test": "run-test"
},
"dependencies": {
"@yume-chan/async": "^2.2.0"
"@yume-chan/async": "^4.0.0"
},
"devDependencies": {
"@types/node": "^22.7.7",

View file

@ -33,7 +33,7 @@
"prepublishOnly": "npm run build"
},
"dependencies": {
"@yume-chan/async": "^2.2.0",
"@yume-chan/async": "^4.0.0",
"@yume-chan/event": "workspace:^",
"@yume-chan/scrcpy": "workspace:^",
"@yume-chan/stream-extra": "workspace:^",

View file

@ -33,7 +33,7 @@
"test": "run-test"
},
"dependencies": {
"@yume-chan/async": "^2.2.0",
"@yume-chan/async": "^4.0.0",
"@yume-chan/no-data-view": "workspace:^",
"@yume-chan/stream-extra": "workspace:^",
"@yume-chan/struct": "workspace:^"

View file

@ -32,7 +32,7 @@
"test": "run-test"
},
"dependencies": {
"@yume-chan/async": "^2.2.0",
"@yume-chan/async": "^4.0.0",
"@yume-chan/struct": "workspace:^"
},
"devDependencies": {

View file

@ -47,9 +47,17 @@ export class BigIntFieldVariant {
this.serialize = serialize;
}
static readonly Int64 = new BigIntFieldVariant(8, getInt64, setInt64);
static readonly Int64 = /* #__PURE__ */ new BigIntFieldVariant(
8,
getInt64,
setInt64,
);
static readonly Uint64 = new BigIntFieldVariant(8, getUint64, setUint64);
static readonly Uint64 = /* #__PURE__ */ new BigIntFieldVariant(
8,
getUint64,
setUint64,
);
}
export class BigIntFieldDefinition<

View file

@ -53,7 +53,8 @@ export abstract class BufferFieldConverter<
export class Uint8ArrayBufferFieldConverter<
TTypeScriptType = Uint8Array,
> extends BufferFieldConverter<Uint8Array, TTypeScriptType> {
static readonly Instance = new Uint8ArrayBufferFieldConverter();
static readonly Instance =
/* #__PURE__ */ new Uint8ArrayBufferFieldConverter();
protected constructor() {
super();
@ -76,7 +77,7 @@ export class Uint8ArrayBufferFieldConverter<
export class StringBufferFieldConverter<
TTypeScriptType = string,
> extends BufferFieldConverter<string, TTypeScriptType> {
static readonly Instance = new StringBufferFieldConverter();
static readonly Instance = /* #__PURE__ */ new StringBufferFieldConverter();
override toBuffer(value: string): Uint8Array {
return encodeUtf8(value);

View file

@ -0,0 +1,70 @@
import {
getInt16,
getInt32,
getInt8,
getUint16,
getUint32,
setInt16,
setInt32,
setUint16,
setUint32,
} from "@yume-chan/no-data-view";
import type { NumberFieldVariant } from "./number-reexports.js";
export const Uint8: NumberFieldVariant = {
signed: false,
size: 1,
deserialize(array) {
return array[0]!;
},
serialize(array, offset, value) {
array[offset] = value;
},
};
export const Int8: NumberFieldVariant = {
signed: true,
size: 1,
deserialize(array) {
return getInt8(array, 0);
},
serialize(array, offset, value) {
array[offset] = value;
},
};
export const Uint16: NumberFieldVariant = {
signed: false,
size: 2,
deserialize(array, littleEndian) {
return getUint16(array, 0, littleEndian);
},
serialize: setUint16,
};
export const Int16: NumberFieldVariant = {
signed: true,
size: 2,
deserialize(array, littleEndian) {
return getInt16(array, 0, littleEndian);
},
serialize: setInt16,
};
export const Uint32: NumberFieldVariant = {
signed: false,
size: 4,
deserialize(array, littleEndian) {
return getUint32(array, 0, littleEndian);
},
serialize: setUint32,
};
export const Int32: NumberFieldVariant = {
signed: true,
size: 4,
deserialize(array, littleEndian) {
return getInt32(array, 0, littleEndian);
},
serialize: setInt32,
};

View file

@ -0,0 +1,13 @@
export * as NumberFieldVariant from "./number-namespace.js";
export interface NumberFieldVariant {
signed: boolean;
size: number;
deserialize(array: Uint8Array, littleEndian: boolean): number;
serialize(
array: Uint8Array,
offset: number,
value: number,
littleEndian: boolean,
): void;
}

View file

@ -1,15 +1,3 @@
import {
getInt16,
getInt32,
getInt8,
getUint16,
getUint32,
setInt16,
setInt32,
setUint16,
setUint32,
} from "@yume-chan/no-data-view";
import type {
AsyncExactReadable,
ExactReadable,
@ -19,78 +7,9 @@ import type {
import { StructFieldDefinition, StructFieldValue } from "../basic/index.js";
import { SyncPromise } from "../sync-promise.js";
import type { ValueOrPromise } from "../utils.js";
import type { NumberFieldVariant } from "./number-reexports.js";
export interface NumberFieldVariant {
signed: boolean;
size: number;
deserialize(array: Uint8Array, littleEndian: boolean): number;
serialize(
array: Uint8Array,
offset: number,
value: number,
littleEndian: boolean,
): void;
}
export namespace NumberFieldVariant {
export const Uint8: NumberFieldVariant = {
signed: false,
size: 1,
deserialize(array) {
return array[0]!;
},
serialize(array, offset, value) {
array[offset] = value;
},
};
export const Int8: NumberFieldVariant = {
signed: true,
size: 1,
deserialize(array) {
return getInt8(array, 0);
},
serialize(array, offset, value) {
array[offset] = value;
},
};
export const Uint16: NumberFieldVariant = {
signed: false,
size: 2,
deserialize(array, littleEndian) {
return getUint16(array, 0, littleEndian);
},
serialize: setUint16,
};
export const Int16: NumberFieldVariant = {
signed: true,
size: 2,
deserialize(array, littleEndian) {
return getInt16(array, 0, littleEndian);
},
serialize: setInt16,
};
export const Uint32: NumberFieldVariant = {
signed: false,
size: 4,
deserialize(array, littleEndian) {
return getUint32(array, 0, littleEndian);
},
serialize: setUint32,
};
export const Int32: NumberFieldVariant = {
signed: true,
size: 4,
deserialize(array, littleEndian) {
return getInt32(array, 0, littleEndian);
},
serialize: setInt32,
};
}
export * from "./number-reexports.js";
export class NumberFieldDefinition<
TVariant extends NumberFieldVariant = NumberFieldVariant,

View file

@ -13,7 +13,7 @@
"eslint": "^9.13.0",
"eslint-plugin-import-x": "^4.3.1",
"typescript": "^5.6.3",
"typescript-eslint": "^8.10.0"
"typescript-eslint": "^8.11.0"
},
"devDependencies": {
"prettier": "^3.3.3"