ts-flp 1.0.3 → 1.0.5

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.
@@ -1,6 +1,13 @@
1
1
  /**
2
2
  * FL Studio .flp file parser and serializer
3
3
  * Conservative patch approach: preserves all unknown data byte-for-byte
4
+ *
5
+ * Uses look-ahead scoring to handle events in the DWORD range (128-191)
6
+ * that may use either fixed 4-byte encoding or VarInt-encoded variable
7
+ * length payloads. For each unknown event in this range, both
8
+ * interpretations are scored by parsing ahead ~200 bytes and counting
9
+ * how many TEXT/DATA events (with valid VarInt sizes) are reachable.
10
+ * The interpretation producing more valid TEXT/DATA events wins.
4
11
  */
5
12
  /**
6
13
  * Represents a single event in an FLP file
@@ -10,7 +17,7 @@ export interface FlpEvent {
10
17
  /** Event ID (0-255) */
11
18
  id: number;
12
19
  /** Data type classification */
13
- kind: "u8" | "i8" | "u16" | "i16" | "u32" | "i32" | "f32" | "text" | "data" | "unknown";
20
+ kind: 'u8' | 'i8' | 'u16' | 'i16' | 'u32' | 'i32' | 'f32' | 'text' | 'data' | 'unknown';
14
21
  /** Original header bytes (ID + size for variable-length events) */
15
22
  header: Buffer;
16
23
  /** Event payload data */
@@ -51,7 +58,10 @@ export declare function parseFlp(buffer: Buffer): ParsedFlp;
51
58
  */
52
59
  export declare function serializeFlp(parsed: ParsedFlp): Buffer;
53
60
  /**
54
- * Creates a new event with the given ID and payload
61
+ * Creates a new event with the given ID and payload.
62
+ *
63
+ * For TEXT/DATA events (id >= 192) the header includes a VarInt size prefix.
64
+ * For BYTE/WORD/DWORD events the header is a single byte (the event ID).
55
65
  */
56
66
  export declare function createEvent(id: number, payload: Buffer): FlpEvent;
57
67
  /**
@@ -86,5 +96,5 @@ export declare function getEventNumber(event: FlpEvent): number;
86
96
  /**
87
97
  * Creates a numeric payload
88
98
  */
89
- export declare function createNumberPayload(value: number, kind: "u8" | "i8" | "u16" | "i16" | "u32" | "i32" | "f32"): Buffer;
99
+ export declare function createNumberPayload(value: number, kind: 'u8' | 'i8' | 'u16' | 'i16' | 'u32' | 'i32' | 'f32'): Buffer;
90
100
  //# sourceMappingURL=FlpParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlpParser.d.ts","sourceRoot":"","sources":["../../../src/parser/FlpParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxF,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,wDAAwD;IACxD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;CACrB;AASD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CA0HlD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAgCtD;AAuBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAiBjE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,GACpD,SAAS,CAsBX;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAc3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAM3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAqBtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACxD,MAAM,CA4BR"}
1
+ {"version":3,"file":"FlpParser.d.ts","sourceRoot":"","sources":["../../../src/parser/FlpParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxF,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,wDAAwD;IACxD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;CACrB;AA+ED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAgJlD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAgCtD;AA2BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAgBjE;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,GACpD,SAAS,CAuBX;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAEzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEvF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAc3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,CAM3E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAqBtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACxD,MAAM,CA4BR"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dump-all-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump-all-info.d.ts","sourceRoot":"","sources":["../../test/dump-all-info.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-flp",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Minimalist TypeScript library for parsing and modifying FL Studio project files (.flp)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,6 +27,7 @@
27
27
  "typecheck": "tsc --noEmit",
28
28
  "test": "vitest run",
29
29
  "test:watch": "vitest",
30
+ "test:dump-info": "node --loader ts-node/esm test/dump-all-info.ts",
30
31
  "lint": "eslint .",
31
32
  "format": "prettier -w .",
32
33
  "commit": "git add . && git commit -m",