jsilnet 0.1.0 → 0.2.0
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/README.md +25 -6
- package/REFERENCE.md +4 -0
- package/dist/browser/index.js +345 -0
- package/dist/browser/worker.js +42480 -0
- package/package.json +23 -4
- package/src/assembly/instruction-editing.js +165 -0
- package/src/assembly/method-removal.js +789 -0
- package/src/assembly/pointer-table-editing.js +506 -0
- package/src/assembly/portable-pdb-editing.js +441 -0
- package/src/browser/index.d.ts +123 -0
- package/src/browser/index.js +373 -0
- package/src/browser/worker-runtime.js +287 -0
- package/src/browser/worker.js +47 -0
- package/src/index.d.ts +267 -0
- package/src/index.js +107 -1574
- package/src/metadata/portable-pdb.js +2 -2
- package/src/metadata/strong-name.js +84 -83
- package/src/pe/headers.js +1 -1
- package/src/platform/bytes.js +21 -0
- package/src/platform/compression.js +24 -0
- package/src/platform/crypto.js +17 -0
- package/src/types/assembly/instruction-editing.d.ts +33 -0
- package/src/types/assembly/method-removal.d.ts +3 -0
- package/src/types/assembly/pointer-table-editing.d.ts +3 -0
- package/src/types/assembly/portable-pdb-editing.d.ts +23 -0
- package/src/types/binary/errors.d.ts +7 -0
- package/src/types/binary/reader.d.ts +30 -0
- package/src/types/il/body.d.ts +51 -0
- package/src/types/il/instructions.d.ts +33 -0
- package/src/types/il/opcodes.d.ts +2 -0
- package/src/types/il/rewrite.d.ts +38 -0
- package/src/types/index.d.ts +864 -0
- package/src/types/metadata/classic-pdb.d.ts +688 -0
- package/src/types/metadata/custom-attributes.d.ts +28 -0
- package/src/types/metadata/portable-pdb.d.ts +296 -0
- package/src/types/metadata/resources.d.ts +1 -0
- package/src/types/metadata/root-writer.d.ts +1 -0
- package/src/types/metadata/signatures.d.ts +5 -0
- package/src/types/metadata/streams.d.ts +26 -0
- package/src/types/metadata/strong-name.d.ts +11 -0
- package/src/types/metadata/tables.d.ts +25 -0
- package/src/types/metadata/writer.d.ts +16 -0
- package/src/types/pe/headers.d.ts +160 -0
- package/src/types/platform/bytes.d.ts +3 -0
- package/src/types/platform/compression.d.ts +2 -0
- package/src/types/platform/crypto.d.ts +4 -0
- package/src/types/resolution/module.d.ts +12 -0
- package/src/types/writer/patch.d.ts +4 -0
- package/src/types/writer/pe.d.ts +9 -0
- package/src/types/writer/structural.d.ts +4 -0
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
export interface AssemblyIdentity {
|
|
2
|
+
name: string;
|
|
3
|
+
culture: string;
|
|
4
|
+
version: [number, number, number, number] | number[];
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface ModuleMetadata {
|
|
8
|
+
generation: number;
|
|
9
|
+
name: string;
|
|
10
|
+
mvid: Uint8Array;
|
|
11
|
+
assembly: AssemblyIdentity | null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface MethodParameter {
|
|
15
|
+
rid: number;
|
|
16
|
+
flags: number;
|
|
17
|
+
sequence: number;
|
|
18
|
+
name: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface MethodDefinition {
|
|
22
|
+
rid: number;
|
|
23
|
+
rva: number;
|
|
24
|
+
flags: number;
|
|
25
|
+
implFlags: number;
|
|
26
|
+
name: string;
|
|
27
|
+
signature: Uint8Array;
|
|
28
|
+
parameterRids: number[];
|
|
29
|
+
parameters: MethodParameter[];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface TypeDefinition {
|
|
33
|
+
rid: number;
|
|
34
|
+
flags: number;
|
|
35
|
+
name: string;
|
|
36
|
+
namespace: string;
|
|
37
|
+
extends: MetadataReference | null;
|
|
38
|
+
fieldRids: number[];
|
|
39
|
+
methodRids: number[];
|
|
40
|
+
eventRids: number[];
|
|
41
|
+
propertyRids: number[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface MetadataReference {
|
|
45
|
+
table: number;
|
|
46
|
+
rid: number;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface Opcode {
|
|
50
|
+
code: number;
|
|
51
|
+
name: string;
|
|
52
|
+
operand: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type InstructionOperand =
|
|
56
|
+
| { kind: "branch"; targetOffset: number }
|
|
57
|
+
| { kind: "switch"; targetOffsets: number[] }
|
|
58
|
+
| {
|
|
59
|
+
kind: "u1" | "i1" | "u2" | "i4" | "i8" | "f4" | "f8" | "token";
|
|
60
|
+
value: number | bigint;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export interface Instruction {
|
|
64
|
+
opcode: Opcode;
|
|
65
|
+
offset: number;
|
|
66
|
+
size: number;
|
|
67
|
+
opcodeOffset: number;
|
|
68
|
+
opcodeSize: number;
|
|
69
|
+
operandOffset: number;
|
|
70
|
+
patchOffsets: number[];
|
|
71
|
+
operand: InstructionOperand | null;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface ExceptionClause {
|
|
75
|
+
flags: number;
|
|
76
|
+
tryOffset: number;
|
|
77
|
+
tryLength: number;
|
|
78
|
+
handlerOffset: number;
|
|
79
|
+
handlerLength: number;
|
|
80
|
+
classTokenOrFilterOffset: number;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface MethodDataSection {
|
|
84
|
+
offset: number;
|
|
85
|
+
rva: number;
|
|
86
|
+
size: number;
|
|
87
|
+
fat: boolean;
|
|
88
|
+
moreSections: boolean;
|
|
89
|
+
clauses: ExceptionClause[];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface MethodBody {
|
|
93
|
+
format: "tiny" | "fat";
|
|
94
|
+
headerOffset: number;
|
|
95
|
+
headerSize: number;
|
|
96
|
+
codeOffset: number;
|
|
97
|
+
codeSize: number;
|
|
98
|
+
maxStack: number;
|
|
99
|
+
localVarSigToken: number;
|
|
100
|
+
flags: number;
|
|
101
|
+
instructions: Instruction[];
|
|
102
|
+
sections: MethodDataSection[];
|
|
103
|
+
endOffset: number;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface ParseErrorOptions {
|
|
107
|
+
offset?: number;
|
|
108
|
+
context?: string;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export class FormatError extends Error {
|
|
112
|
+
offset?: number;
|
|
113
|
+
context?: string;
|
|
114
|
+
constructor(message: string, options?: ParseErrorOptions);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export class UnsupportedFormatError extends FormatError {
|
|
118
|
+
constructor(message: string, options?: ParseErrorOptions);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export class Assembly {
|
|
122
|
+
constructor(input: Uint8Array | ArrayBuffer);
|
|
123
|
+
static from(input: Uint8Array | ArrayBuffer): Assembly;
|
|
124
|
+
readonly bytes: Uint8Array;
|
|
125
|
+
readonly modified: boolean;
|
|
126
|
+
readonly module: ModuleMetadata | null;
|
|
127
|
+
readonly types: TypeDefinition[];
|
|
128
|
+
readonly methods: MethodDefinition[];
|
|
129
|
+
|
|
130
|
+
getMethodBody(methodRid: number): MethodBody | null;
|
|
131
|
+
getInstructions(methodRid: number): Instruction[];
|
|
132
|
+
setInstructionOperand(
|
|
133
|
+
methodRid: number,
|
|
134
|
+
instructionOffset: number,
|
|
135
|
+
value: number | bigint | number[]
|
|
136
|
+
): this;
|
|
137
|
+
setInstructionOpcode(
|
|
138
|
+
methodRid: number,
|
|
139
|
+
instructionOffset: number,
|
|
140
|
+
opcodeNameOrCode: string | number
|
|
141
|
+
): this;
|
|
142
|
+
insertInstruction(
|
|
143
|
+
methodRid: number,
|
|
144
|
+
beforeOffset: number,
|
|
145
|
+
opcodeNameOrCode: string | number,
|
|
146
|
+
operand?: number | bigint | number[]
|
|
147
|
+
): Instruction;
|
|
148
|
+
removeInstruction(methodRid: number, instructionOffset: number): Instruction;
|
|
149
|
+
setMethodMaxStack(methodRid: number, maxStack: number): this;
|
|
150
|
+
serialize(): Uint8Array;
|
|
151
|
+
toBuffer(): Uint8Array;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export function parseAssembly(input: Uint8Array | ArrayBuffer): Assembly;
|
|
155
|
+
export function decodeInstructions(
|
|
156
|
+
input: Uint8Array | ArrayBuffer,
|
|
157
|
+
options?: { baseOffset?: number; ilOffset?: number }
|
|
158
|
+
): Instruction[];
|
|
159
|
+
export function encodeInstruction(instruction: Instruction): Uint8Array;
|
|
160
|
+
export function encodeOpcode(opcode: Opcode): Uint8Array;
|
|
161
|
+
export function formatInstruction(instruction: Instruction): string;
|
|
162
|
+
export function encodeOperand(
|
|
163
|
+
instruction: Instruction,
|
|
164
|
+
value: number | bigint | number[]
|
|
165
|
+
): Uint8Array;
|
|
166
|
+
export function getInstructionSize(
|
|
167
|
+
opcode: Opcode,
|
|
168
|
+
operand?: { targetOffsets?: number[] } | null
|
|
169
|
+
): number;
|
|
170
|
+
|
|
171
|
+
import type { Assembly as InferredAssembly } from "./types/index.js";
|
|
172
|
+
|
|
173
|
+
type PublicAssemblySurface = {
|
|
174
|
+
[K in keyof InferredAssembly as K extends `_${string}` ? never : K]:
|
|
175
|
+
InferredAssembly[K];
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
export interface Assembly extends Omit<
|
|
179
|
+
PublicAssemblySurface,
|
|
180
|
+
| "bytes"
|
|
181
|
+
| "modified"
|
|
182
|
+
| "module"
|
|
183
|
+
| "types"
|
|
184
|
+
| "methods"
|
|
185
|
+
| "getMethodBody"
|
|
186
|
+
| "getInstructions"
|
|
187
|
+
| "setInstructionOperand"
|
|
188
|
+
| "setInstructionOpcode"
|
|
189
|
+
| "insertInstruction"
|
|
190
|
+
| "removeInstruction"
|
|
191
|
+
| "setMethodMaxStack"
|
|
192
|
+
| "serialize"
|
|
193
|
+
| "toBuffer"
|
|
194
|
+
> {}
|
|
195
|
+
|
|
196
|
+
export {
|
|
197
|
+
BinaryReader,
|
|
198
|
+
readCompressedInt,
|
|
199
|
+
readCompressedUInt,
|
|
200
|
+
parseMethodBody,
|
|
201
|
+
codedIndexWidth,
|
|
202
|
+
decodeCodedIndex,
|
|
203
|
+
encodeCodedIndex,
|
|
204
|
+
metadataTableNames,
|
|
205
|
+
parseTablesStream,
|
|
206
|
+
tableIndexWidth,
|
|
207
|
+
MetadataHeaps,
|
|
208
|
+
parseMetadataRoot,
|
|
209
|
+
parseClassicPdb,
|
|
210
|
+
insertClassicPdbFileChecksum,
|
|
211
|
+
insertClassicPdbConstantSymbol,
|
|
212
|
+
insertClassicPdbDataSymbol,
|
|
213
|
+
insertClassicPdbLineBlock,
|
|
214
|
+
insertClassicPdbPublicSymbol,
|
|
215
|
+
insertClassicPdbThreadDataSymbol,
|
|
216
|
+
removeClassicPdbFileChecksum,
|
|
217
|
+
removeClassicPdbLineBlock,
|
|
218
|
+
removeClassicPdbSymbol,
|
|
219
|
+
replaceClassicPdbFileChecksum,
|
|
220
|
+
replaceClassicPdbConstantSymbol,
|
|
221
|
+
replaceClassicPdbDataSymbol,
|
|
222
|
+
replaceClassicPdbLineBlock,
|
|
223
|
+
replaceClassicPdbLineInfo,
|
|
224
|
+
replaceClassicPdbModuleNames,
|
|
225
|
+
replaceClassicPdbPublicSymbol,
|
|
226
|
+
replaceClassicPdbStringTableName,
|
|
227
|
+
replaceClassicPdbThreadDataSymbol,
|
|
228
|
+
replaceClassicPdbSymbolName,
|
|
229
|
+
encodeCustomAttribute,
|
|
230
|
+
encodePermissionSet,
|
|
231
|
+
parseCustomAttribute,
|
|
232
|
+
parsePermissionSet,
|
|
233
|
+
appendPortablePdbDocumentName,
|
|
234
|
+
decodePortablePdbDocumentName,
|
|
235
|
+
decodePortablePdbSequencePoints,
|
|
236
|
+
encodePortablePdbDocumentName,
|
|
237
|
+
encodePortablePdbSequencePoints,
|
|
238
|
+
addEmbeddedPortablePdbDocument,
|
|
239
|
+
insertEmbeddedPortablePdbDocument,
|
|
240
|
+
addEmbeddedPortablePdbTypeDefinitionDocuments,
|
|
241
|
+
removeEmbeddedPortablePdbDocument,
|
|
242
|
+
replaceEmbeddedPortablePdbDocumentMetadata,
|
|
243
|
+
replaceEmbeddedPortablePdbTypeDefinitionDocuments,
|
|
244
|
+
replaceEmbeddedPortablePdbDocumentName,
|
|
245
|
+
replaceEmbeddedPortablePdbLocalScope,
|
|
246
|
+
replaceEmbeddedPortablePdbLocalVariable,
|
|
247
|
+
replaceEmbeddedPortablePdbLocalConstant,
|
|
248
|
+
replaceEmbeddedPortablePdbCustomDebugInformation,
|
|
249
|
+
replaceEmbeddedPortablePdbMethodDocument,
|
|
250
|
+
replaceEmbeddedPortablePdbImportScope,
|
|
251
|
+
replaceEmbeddedPortablePdbSequencePoints,
|
|
252
|
+
addEmbeddedPortablePdbSource,
|
|
253
|
+
removeEmbeddedPortablePdbSource,
|
|
254
|
+
removeEmbeddedPortablePdbSourceLink,
|
|
255
|
+
removeEmbeddedPortablePdbCustomDebugInformation,
|
|
256
|
+
replaceEmbeddedPortablePdbSource,
|
|
257
|
+
addEmbeddedPortablePdbSourceLink,
|
|
258
|
+
replaceEmbeddedPortablePdbSourceLink,
|
|
259
|
+
serializeEmbeddedPortablePdb,
|
|
260
|
+
encodeSignature,
|
|
261
|
+
encodeTypeSignature,
|
|
262
|
+
parseSignature,
|
|
263
|
+
parseTypeSignature,
|
|
264
|
+
remapTypeReferences,
|
|
265
|
+
parseCliHeader,
|
|
266
|
+
parsePE
|
|
267
|
+
} from "./types/index.js";
|