networkwm-js 0.2.2 → 0.2.4

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.
Files changed (49) hide show
  1. package/dist/bytemanip.js +11 -12
  2. package/dist/cli/decrypt-mp3.js +2 -3
  3. package/dist/cli/decrypt-oma.js +1 -2
  4. package/dist/cli/encrypt-oma.js +1 -2
  5. package/dist/cli/sign-device.js +4 -5
  6. package/dist/cli/table-file-info.js +1 -2
  7. package/dist/cli/tagged-oma-info.js +1 -2
  8. package/dist/codecs.d.ts +1 -1
  9. package/dist/codecs.d.ts.map +1 -1
  10. package/dist/codecs.js +5 -5
  11. package/dist/database-abstraction.d.ts +3 -3
  12. package/dist/database-abstraction.d.ts.map +1 -1
  13. package/dist/database-abstraction.js +13 -10
  14. package/dist/databases.d.ts.map +1 -1
  15. package/dist/derive-mp3-key.d.ts +1 -1
  16. package/dist/derive-mp3-key.d.ts.map +1 -1
  17. package/dist/derive-mp3-key.js +3 -4
  18. package/dist/devices.js +2 -2
  19. package/dist/encryption.d.ts +8 -8
  20. package/dist/encryption.d.ts.map +1 -1
  21. package/dist/encryption.js +12 -12
  22. package/dist/filesystem/usb-mass-storage-webusb-filesystem.d.ts +18 -16
  23. package/dist/filesystem/usb-mass-storage-webusb-filesystem.d.ts.map +1 -1
  24. package/dist/filesystem/usb-mass-storage-webusb-filesystem.js +6 -6
  25. package/dist/id3.d.ts +4 -4
  26. package/dist/id3.d.ts.map +1 -1
  27. package/dist/id3.js +7 -8
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -2
  31. package/dist/init-data.d.ts +16 -16
  32. package/dist/init-data.d.ts.map +1 -1
  33. package/dist/initialization.js +2 -3
  34. package/dist/mp3.js +3 -4
  35. package/dist/{helpers.d.ts → node-helpers.d.ts} +1 -2
  36. package/dist/node-helpers.d.ts.map +1 -0
  37. package/dist/{helpers.js → node-helpers.js} +2 -8
  38. package/dist/sort.d.ts +2 -2
  39. package/dist/sort.d.ts.map +1 -1
  40. package/dist/sort.js +2 -3
  41. package/dist/tables.js +2 -3
  42. package/dist/tagged-oma.d.ts +4 -2
  43. package/dist/tagged-oma.d.ts.map +1 -1
  44. package/dist/tagged-oma.js +7 -8
  45. package/dist/utils.d.ts +5 -4
  46. package/dist/utils.d.ts.map +1 -1
  47. package/dist/utils.js +13 -9
  48. package/package.json +3 -3
  49. package/dist/helpers.d.ts.map +0 -1
@@ -119,12 +119,12 @@ class SonyVendorNWJSUSMCDriver extends himd_js_1.SonyVendorUSMCDriver {
119
119
  // mac = 0x9e, 0x29, 0xe4, 0xa3, 0x4f, 0x8d, 0x43, 0xc7
120
120
  const generationBytes = (0, bytemanip_1.writeUint32)(generation);
121
121
  const theSonySoup = new Uint8Array([
122
- 0x00, 0x20, 0x00, 0x98,
123
- ...generationBytes,
124
- 0x00, 0x00, 0x00, 0x00,
125
- 0x00, 0x01, 0x00, 0x21,
126
- ...masterKey,
127
- ...mac,
122
+ 0x00, 0x20, 0x00, 0x98, // Rewrite
123
+ ...generationBytes, // Generation data
124
+ 0x00, 0x00, 0x00, 0x00, // ???
125
+ 0x00, 0x01, 0x00, 0x21, // Authenticate using ekb 00010021
126
+ ...masterKey, // The key
127
+ ...mac, // MAC over the MACLIST, bound to device
128
128
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
129
129
  ]);
130
130
  theSonySoup.set((0, bytemanip_1.writeUint32)(generation), 4);
package/dist/id3.d.ts CHANGED
@@ -22,12 +22,12 @@ export declare function readInitialID3Header(buffer: Uint8Array): {
22
22
  export declare function parse(buffer: Uint8Array): ID3Tags & {
23
23
  size: number;
24
24
  };
25
- export declare function serialize(tags: ID3Tags, constSize?: number): Uint8Array;
26
- export declare function encodeUTF16BEStringEA3(source: string, includeType?: boolean): Uint8Array;
27
- export declare function encodeSonyWeirdString(type: string, data: string): Uint8Array;
25
+ export declare function serialize(tags: ID3Tags, constSize?: number): Uint8Array<ArrayBuffer>;
26
+ export declare function encodeUTF16BEStringEA3(source: string, includeType?: boolean): Uint8Array<ArrayBuffer>;
27
+ export declare function encodeSonyWeirdString(type: string, data: string): Uint8Array<ArrayBuffer>;
28
28
  export declare function createCommonID3Tags(titleInfo: InboundTrackMetadata): {
29
29
  id: string;
30
- contents: Uint8Array;
30
+ contents: Uint8Array<ArrayBuffer>;
31
31
  flags: number;
32
32
  }[];
33
33
  //# sourceMappingURL=id3.d.ts.map
package/dist/id3.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"id3.d.ts","sourceRoot":"","sources":["../src/id3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAGlE,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYnF;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiBtH;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAgDpE;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CA8CvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAO,cAgCxE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAM/D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB;;;;IAYlE"}
1
+ {"version":3,"file":"id3.d.ts","sourceRoot":"","sources":["../src/id3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAiB,MAAM,aAAa,CAAC;AAGlE,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,OAAO;IACpB,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYnF;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiBtH;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAgDpE;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CA8CpF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,UAAO,2BAgCxE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,2BAM/D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,oBAAoB;;;;IAYlE"}
package/dist/id3.js CHANGED
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createCommonID3Tags = exports.encodeSonyWeirdString = exports.encodeUTF16BEStringEA3 = exports.serialize = exports.parse = exports.readInitialID3Header = exports.readSynchsafeInt32 = void 0;
3
+ exports.readSynchsafeInt32 = readSynchsafeInt32;
4
+ exports.readInitialID3Header = readInitialID3Header;
5
+ exports.parse = parse;
6
+ exports.serialize = serialize;
7
+ exports.encodeUTF16BEStringEA3 = encodeUTF16BEStringEA3;
8
+ exports.encodeSonyWeirdString = encodeSonyWeirdString;
9
+ exports.createCommonID3Tags = createCommonID3Tags;
4
10
  const bytemanip_1 = require("./bytemanip");
5
11
  const utils_1 = require("./utils");
6
12
  function readSynchsafeInt32(data, offset) {
@@ -16,7 +22,6 @@ function readSynchsafeInt32(data, offset) {
16
22
  value |= byte & 0x7F;
17
23
  return [value, offset];
18
24
  }
19
- exports.readSynchsafeInt32 = readSynchsafeInt32;
20
25
  ;
21
26
  const textDecoder = new TextDecoder();
22
27
  const textEncoder = new TextEncoder();
@@ -36,7 +41,6 @@ function readInitialID3Header(buffer) {
36
41
  [size, offset] = readSynchsafeInt32(data, offset);
37
42
  return { major, minor, size, flags };
38
43
  }
39
- exports.readInitialID3Header = readInitialID3Header;
40
44
  function parse(buffer) {
41
45
  const data = new DataView(buffer.buffer);
42
46
  let offset = 0;
@@ -79,7 +83,6 @@ function parse(buffer) {
79
83
  size,
80
84
  };
81
85
  }
82
- exports.parse = parse;
83
86
  ;
84
87
  function writeSynchsafeInt32(value) {
85
88
  const array = new Uint8Array(4);
@@ -129,7 +132,6 @@ function serialize(tags, constSize) {
129
132
  }
130
133
  return result;
131
134
  }
132
- exports.serialize = serialize;
133
135
  ;
134
136
  function encodeUTF16BEStringEA3(source, includeType = true) {
135
137
  const rawArr = includeType ? [2] : []; // 2 - marker - UTF16BE
@@ -159,7 +161,6 @@ function encodeUTF16BEStringEA3(source, includeType = true) {
159
161
  }
160
162
  return new Uint8Array(rawArr);
161
163
  }
162
- exports.encodeUTF16BEStringEA3 = encodeUTF16BEStringEA3;
163
164
  function encodeSonyWeirdString(type, data) {
164
165
  return (0, utils_1.concatUint8Arrays)([
165
166
  encodeUTF16BEStringEA3(type),
@@ -167,7 +168,6 @@ function encodeSonyWeirdString(type, data) {
167
168
  encodeUTF16BEStringEA3(data, false),
168
169
  ]);
169
170
  }
170
- exports.encodeSonyWeirdString = encodeSonyWeirdString;
171
171
  function createCommonID3Tags(titleInfo) {
172
172
  var _a;
173
173
  return [
@@ -182,4 +182,3 @@ function createCommonID3Tags(titleInfo) {
182
182
  { id: "TXXX", contents: encodeSonyWeirdString("OMG_TIT2S", titleInfo.title), flags: 0 },
183
183
  ];
184
184
  }
185
- exports.createCommonID3Tags = createCommonID3Tags;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './filesystem';
2
- export * from './helpers';
3
2
  export * from './bytemanip';
4
3
  export * from './databases';
5
4
  export * from './database-abstraction';
@@ -7,5 +6,6 @@ export * from './sort';
7
6
  export * from './tagged-oma';
8
7
  export * from './devices';
9
8
  export * from './derive-mp3-key';
9
+ export { resolvePathFromGlobalIndex } from './utils';
10
10
  export { importKeys, initCrypto } from './encryption';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -14,9 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.initCrypto = exports.importKeys = void 0;
17
+ exports.initCrypto = exports.importKeys = exports.resolvePathFromGlobalIndex = void 0;
18
18
  __exportStar(require("./filesystem"), exports);
19
- __exportStar(require("./helpers"), exports);
20
19
  __exportStar(require("./bytemanip"), exports);
21
20
  __exportStar(require("./databases"), exports);
22
21
  __exportStar(require("./database-abstraction"), exports);
@@ -24,6 +23,8 @@ __exportStar(require("./sort"), exports);
24
23
  __exportStar(require("./tagged-oma"), exports);
25
24
  __exportStar(require("./devices"), exports);
26
25
  __exportStar(require("./derive-mp3-key"), exports);
26
+ var utils_1 = require("./utils");
27
+ Object.defineProperty(exports, "resolvePathFromGlobalIndex", { enumerable: true, get: function () { return utils_1.resolvePathFromGlobalIndex; } });
27
28
  var encryption_1 = require("./encryption");
28
29
  Object.defineProperty(exports, "importKeys", { enumerable: true, get: function () { return encryption_1.importKeys; } });
29
30
  Object.defineProperty(exports, "initCrypto", { enumerable: true, get: function () { return encryption_1.initCrypto; } });
@@ -1,27 +1,27 @@
1
- export declare type InitializationLayer = {
1
+ export type InitializationLayer = {
2
2
  [fileName: string]: Uint8Array;
3
3
  };
4
4
  export declare const LAYERS: {
5
5
  root: {
6
- "00010021.DAT": Uint8Array;
7
- "00GTRLST.DAT": Uint8Array;
8
- "01TREE01.DAT": Uint8Array;
9
- "01TREE02.DAT": Uint8Array;
10
- "01TREE03.DAT": Uint8Array;
11
- "01TREE04.DAT": Uint8Array;
12
- "02TREINF.DAT": Uint8Array;
13
- "03GINF01.DAT": Uint8Array;
14
- "03GINF02.DAT": Uint8Array;
15
- "03GINF03.DAT": Uint8Array;
16
- "03GINF04.DAT": Uint8Array;
17
- "04CNTINF.DAT": Uint8Array;
18
- "05CHINDC.DAT": Uint8Array;
6
+ "00010021.DAT": Uint8Array<ArrayBuffer>;
7
+ "00GTRLST.DAT": Uint8Array<ArrayBuffer>;
8
+ "01TREE01.DAT": Uint8Array<ArrayBuffer>;
9
+ "01TREE02.DAT": Uint8Array<ArrayBuffer>;
10
+ "01TREE03.DAT": Uint8Array<ArrayBuffer>;
11
+ "01TREE04.DAT": Uint8Array<ArrayBuffer>;
12
+ "02TREINF.DAT": Uint8Array<ArrayBuffer>;
13
+ "03GINF01.DAT": Uint8Array<ArrayBuffer>;
14
+ "03GINF02.DAT": Uint8Array<ArrayBuffer>;
15
+ "03GINF03.DAT": Uint8Array<ArrayBuffer>;
16
+ "03GINF04.DAT": Uint8Array<ArrayBuffer>;
17
+ "04CNTINF.DAT": Uint8Array<ArrayBuffer>;
18
+ "05CHINDC.DAT": Uint8Array<ArrayBuffer>;
19
19
  };
20
20
  stick_gtrlst: {
21
- "00GTRLST.DAT": Uint8Array;
21
+ "00GTRLST.DAT": Uint8Array<ArrayBuffer>;
22
22
  };
23
23
  needs_cid: {
24
- "05CIDLST.DAT": Uint8Array;
24
+ "05CIDLST.DAT": Uint8Array<ArrayBuffer>;
25
25
  };
26
26
  };
27
27
  //# sourceMappingURL=init-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init-data.d.ts","sourceRoot":"","sources":["../src/init-data.ts"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAErE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBlB,CAAC"}
1
+ {"version":3,"file":"init-data.d.ts","sourceRoot":"","sources":["../src/init-data.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAErE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBlB,CAAC"}
@@ -2,7 +2,8 @@
2
2
  // This file's job is to create the initial structures required to get a brand new (or formatted)
3
3
  // Sony NW to work.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.initializeIfNeeded = exports.initializeNW = void 0;
5
+ exports.initializeNW = initializeNW;
6
+ exports.initializeIfNeeded = initializeIfNeeded;
6
7
  const init_data_1 = require("./init-data");
7
8
  function constructFinalContents(layerNames) {
8
9
  const currentOverlayed = { ...init_data_1.LAYERS.root };
@@ -31,7 +32,6 @@ async function initializeNW(filesystem, initLayers) {
31
32
  await maclist.close();
32
33
  console.log(`Initializing complete!`);
33
34
  }
34
- exports.initializeNW = initializeNW;
35
35
  async function initializeIfNeeded(filesystem, initLayers) {
36
36
  const rootContents = await filesystem.list("/");
37
37
  if (!rootContents.find(e => e.type === 'directory' && e.name === '/OMGAUDIO')) {
@@ -39,4 +39,3 @@ async function initializeIfNeeded(filesystem, initLayers) {
39
39
  await initializeNW(filesystem, initLayers);
40
40
  }
41
41
  }
42
- exports.initializeIfNeeded = initializeIfNeeded;
package/dist/mp3.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateMP3Metadata = exports.createMP3OMAFile = exports.generateMP3CodecField = void 0;
3
+ exports.generateMP3CodecField = generateMP3CodecField;
4
+ exports.createMP3OMAFile = createMP3OMAFile;
5
+ exports.updateMP3Metadata = updateMP3Metadata;
4
6
  const mp3_parser_1 = require("mp3-parser");
5
7
  const bytemanip_1 = require("./bytemanip");
6
8
  const codecs_1 = require("./codecs");
@@ -98,7 +100,6 @@ function generateMP3CodecField(mp3Data) {
98
100
  frames: frameCount,
99
101
  };
100
102
  }
101
- exports.generateMP3CodecField = generateMP3CodecField;
102
103
  const METADATA_BLOCK_SIZE = 0x1000;
103
104
  function createMP3OMAFile(index, metadata, rawFile, deviceKey, codec) {
104
105
  // Strip all ID3 tags from the source MP3 file
@@ -141,7 +142,6 @@ function createMP3OMAFile(index, metadata, rawFile, deviceKey, codec) {
141
142
  }
142
143
  return finalFileBuffer;
143
144
  }
144
- exports.createMP3OMAFile = createMP3OMAFile;
145
145
  async function updateMP3Metadata(file, titleInfo) {
146
146
  // Check if this is a valid file.
147
147
  await file.seek(0);
@@ -162,4 +162,3 @@ async function updateMP3Metadata(file, titleInfo) {
162
162
  await file.seek(0);
163
163
  await file.write(newEA3);
164
164
  }
165
- exports.updateMP3Metadata = updateMP3Metadata;
@@ -1,7 +1,6 @@
1
1
  import { WebUSBDevice } from "usb";
2
2
  import { UMSCNWJSFilesystem } from "./filesystem";
3
3
  import { DeviceDefinition } from "./devices";
4
- export declare function resolvePathFromGlobalIndex(globalTrackIndex: number): string;
5
4
  export declare function createNWJSFS(device: {
6
5
  dev: WebUSBDevice;
7
6
  definition: DeviceDefinition;
@@ -10,4 +9,4 @@ export declare function openNewDeviceNode(): Promise<{
10
9
  dev: WebUSBDevice;
11
10
  definition: DeviceDefinition;
12
11
  } | null>;
13
- //# sourceMappingURL=helpers.d.ts.map
12
+ //# sourceMappingURL=node-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-helpers.d.ts","sourceRoot":"","sources":["../src/node-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAa,MAAM,WAAW,CAAC;AAGxD,wBAAsB,YAAY,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,+BAO7F;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,CAAC,CA2B7G"}
@@ -1,15 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openNewDeviceNode = exports.createNWJSFS = exports.resolvePathFromGlobalIndex = void 0;
3
+ exports.createNWJSFS = createNWJSFS;
4
+ exports.openNewDeviceNode = openNewDeviceNode;
4
5
  const usb_1 = require("usb");
5
6
  const filesystem_1 = require("./filesystem");
6
- const utils_1 = require("./utils");
7
7
  const devices_1 = require("./devices");
8
8
  const initialization_1 = require("./initialization");
9
- function resolvePathFromGlobalIndex(globalTrackIndex) {
10
- return (0, utils_1.join)('OMGAUDIO', `10F${(globalTrackIndex >> 8).toString(16).padStart(2, '0')}`, '1000' + globalTrackIndex.toString(16).padStart(4, '0').toUpperCase() + '.OMA');
11
- }
12
- exports.resolvePathFromGlobalIndex = resolvePathFromGlobalIndex;
13
9
  async function createNWJSFS(device) {
14
10
  var _a, _b;
15
11
  // Connect into the HiMD codebase
@@ -18,7 +14,6 @@ async function createNWJSFS(device) {
18
14
  await (0, initialization_1.initializeIfNeeded)(fs, (_b = (_a = device.definition.databaseParameters) === null || _a === void 0 ? void 0 : _a.initLayers) !== null && _b !== void 0 ? _b : []);
19
15
  return fs;
20
16
  }
21
- exports.createNWJSFS = createNWJSFS;
22
17
  async function openNewDeviceNode() {
23
18
  let legacyDevice, definition = null;
24
19
  for (let dev of devices_1.DeviceIds) {
@@ -45,4 +40,3 @@ async function openNewDeviceNode() {
45
40
  await webUsbDevice.open();
46
41
  return { dev: webUsbDevice, definition };
47
42
  }
48
- exports.openNewDeviceNode = openNewDeviceNode;
package/dist/sort.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- export declare type ComplexSortGroupedResult<T> = T[] | {
1
+ export type ComplexSortGroupedResult<T> = T[] | {
2
2
  name: string;
3
3
  contents: ComplexSortGroupedResult<T>;
4
4
  __complexSortGroupedResult: 1;
5
5
  }[];
6
- export declare type ComplexSortFormatPart = {
6
+ export type ComplexSortFormatPart = {
7
7
  var: string;
8
8
  } | {
9
9
  literal: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"AAAA,oBAAY,wBAAwB,CAAC,CAAC,IAClC,CAAC,EAAE,GACH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAAC,0BAA0B,EAAE,CAAC,CAAA;CAAE,EAAE,CAAC;AAE7F,oBAAY,qBAAqB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,wBAAgB,WAAW,CAAC,CAAC,EACzB,MAAM,EAAE,qBAAqB,EAAE,EAAE,EACjC,IAAI,EAAE,CAAC,EAAE,GACV,wBAAwB,CAAC,CAAC,CAAC,CAwC7B;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAcjE"}
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../src/sort.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAClC,CAAC,EAAE,GACH;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAAC,0BAA0B,EAAE,CAAC,CAAA;CAAE,EAAE,CAAC;AAE7F,MAAM,MAAM,qBAAqB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,wBAAgB,WAAW,CAAC,CAAC,EACzB,MAAM,EAAE,qBAAqB,EAAE,EAAE,EACjC,IAAI,EAAE,CAAC,EAAE,GACV,wBAAwB,CAAC,CAAC,CAAC,CAwC7B;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAcjE"}
package/dist/sort.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.flatten = exports.complexSort = void 0;
3
+ exports.complexSort = complexSort;
4
+ exports.flatten = flatten;
4
5
  function complexSort(format, data) {
5
6
  function createFieldForFormat(format, entry) {
6
7
  let str = "";
@@ -42,7 +43,6 @@ function complexSort(format, data) {
42
43
  }));
43
44
  }
44
45
  }
45
- exports.complexSort = complexSort;
46
46
  function flatten(data) {
47
47
  let finalArray = [];
48
48
  if (!data.length)
@@ -59,4 +59,3 @@ function flatten(data) {
59
59
  }
60
60
  return finalArray;
61
61
  }
62
- exports.flatten = flatten;
package/dist/tables.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.serializeTable = exports.parseTable = void 0;
3
+ exports.parseTable = parseTable;
4
+ exports.serializeTable = serializeTable;
4
5
  const bytemanip_1 = require("./bytemanip");
5
6
  const utils_1 = require("./utils");
6
7
  function parseTable(tableFileContents) {
@@ -45,7 +46,6 @@ function parseTable(tableFileContents) {
45
46
  }
46
47
  return { classes: classDefinitions, contents: classContents, name: tableName };
47
48
  }
48
- exports.parseTable = parseTable;
49
49
  function serializeTable(tableFile, writeSecondLength = true) {
50
50
  const textEncoder = new TextEncoder();
51
51
  // Recalculate lengths and starting addresses.
@@ -101,4 +101,3 @@ function serializeTable(tableFile, writeSecondLength = true) {
101
101
  }
102
102
  return data;
103
103
  }
104
- exports.serializeTable = serializeTable;
@@ -1,18 +1,20 @@
1
1
  import { HiMDCodec, HiMDFile } from "himd-js";
2
2
  import { InboundTrackMetadata, TrackMetadata } from './databases';
3
+ type _Uint8Array = Uint8Array<ArrayBuffer>;
3
4
  export interface OmaFile {
4
5
  data: Uint8Array;
5
6
  duration: number;
6
7
  maclistValue?: Uint8Array;
7
8
  }
8
- export declare function createTaggedEncryptedOMA(rawData: Uint8Array, titleInfo: InboundTrackMetadata, codec: {
9
+ export declare function createTaggedEncryptedOMA(rawData: _Uint8Array, titleInfo: InboundTrackMetadata, codec: {
9
10
  codecId: HiMDCodec;
10
11
  codecInfo: Uint8Array;
11
12
  }): OmaFile;
12
- export declare function createTaggedOMA(rawData: Uint8Array, titleInfo: InboundTrackMetadata, codec: {
13
+ export declare function createTaggedOMA(rawData: _Uint8Array, titleInfo: InboundTrackMetadata, codec: {
13
14
  codecId: HiMDCodec;
14
15
  codecInfo: Uint8Array;
15
16
  }): OmaFile;
16
17
  export declare function updateMetadata(file: HiMDFile, titleInfo: TrackMetadata): Promise<void>;
17
18
  export declare function decryptOMA(omaFile: Uint8Array): Uint8Array;
19
+ export {};
18
20
  //# sourceMappingURL=tagged-oma.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tagged-oma.d.ts","sourceRoot":"","sources":["../src/tagged-oma.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI5E,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkHlE,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAAG,OAAO,CAc1J;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAAG,OAAO,CAKjJ;AAeD,wBAAsB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,iBA+B5E;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAyD1D"}
1
+ {"version":3,"file":"tagged-oma.d.ts","sourceRoot":"","sources":["../src/tagged-oma.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI5E,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGlE,KAAK,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAiH3C,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAAG,OAAO,CAc3J;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,KAAK,EAAE;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAAG,OAAO,CAKlJ;AAeD,wBAAsB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,iBA+B5E;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAyD1D"}
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.decryptOMA = exports.updateMetadata = exports.createTaggedOMA = exports.createTaggedEncryptedOMA = void 0;
6
+ exports.createTaggedEncryptedOMA = createTaggedEncryptedOMA;
7
+ exports.createTaggedOMA = createTaggedOMA;
8
+ exports.updateMetadata = updateMetadata;
9
+ exports.decryptOMA = decryptOMA;
7
10
  const crypto_js_wasm_1 = __importDefault(require("@originjs/crypto-js-wasm"));
8
11
  const himd_js_1 = require("himd-js");
9
12
  const utils_1 = require("./utils");
@@ -53,7 +56,7 @@ function createEncryptionHeader(titleInfo, milliseconds) {
53
56
  // In every KEYRING section, the track key is stored as decrypted by the verification key decrypted by the ekbroot
54
57
  const padding = (0, utils_1.createRandomBytes)(8); // What's this???
55
58
  const keyringDataA = (0, utils_1.concatUint8Arrays)([
56
- ULINF_KEYRING_HEADER,
59
+ ULINF_KEYRING_HEADER, // Use EKB 00010021
57
60
  verificationKey, (0, encryption_1.createTrackKeyForKeyring)(0x00010021, verificationKey, actualTrackKey), padding,
58
61
  new Uint8Array(8).fill(0),
59
62
  ]);
@@ -70,7 +73,7 @@ function createEncryptionHeader(titleInfo, milliseconds) {
70
73
  const maclistVerifiedData = firstGEOBContents.slice(94); // Offset to '!CID'
71
74
  const maclistValue = (0, encryption_1.createTrackMac2)(decryptedVerificationKeyWaA, maclistVerifiedData);
72
75
  const keyringDataB = (0, utils_1.concatUint8Arrays)([
73
- new Uint8Array([0x00, 0x28, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D]),
76
+ new Uint8Array([0x00, 0x28, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D]), // Use EKB 0001001D
74
77
  verificationKey, (0, encryption_1.createTrackKeyForKeyring)(0x0001001D, verificationKey, actualTrackKey), padding,
75
78
  new Uint8Array(8).fill(0),
76
79
  EKB1001D_CONTENTS,
@@ -92,7 +95,7 @@ function createEncryptionHeader(titleInfo, milliseconds) {
92
95
  flags: 0,
93
96
  version: { major: 3, minor: 0 },
94
97
  tags: [
95
- { id: "GEOB", contents: firstGEOBContents, flags: 0 },
98
+ { id: "GEOB", contents: firstGEOBContents, flags: 0 }, // OMG_ULINF
96
99
  ...(0, id3_1.createCommonID3Tags)(titleInfo),
97
100
  { id: "TLEN", contents: (0, id3_1.encodeUTF16BEStringEA3)(milliseconds.toString()), flags: 0 },
98
101
  { id: "GEOB", contents: secondGEOBContents, flags: 0 }, // OMG_BKLSI
@@ -114,14 +117,12 @@ function createTaggedEncryptedOMA(rawData, titleInfo, codec) {
114
117
  rawData = (0, utils_1.wordArrayToByteArray)(allData.ciphertext, rawData.length);
115
118
  return { data: (0, utils_1.concatUint8Arrays)([encHeader, formatHeader, rawData]), maclistValue, duration: milliseconds };
116
119
  }
117
- exports.createTaggedEncryptedOMA = createTaggedEncryptedOMA;
118
120
  function createTaggedOMA(rawData, titleInfo, codec) {
119
121
  const milliseconds = Math.floor(1000 * (0, himd_js_1.getSeconds)(codec, Math.ceil(rawData.length / (0, himd_js_1.getBytesPerFrame)(codec))));
120
122
  const primaryHeader = createPrimaryHeader(titleInfo, milliseconds);
121
123
  const formatHeader = (0, codecs_1.createEA3Header)(codec, 0xFFFF);
122
124
  return { data: (0, utils_1.concatUint8Arrays)([primaryHeader, formatHeader, rawData]), duration: milliseconds };
123
125
  }
124
- exports.createTaggedOMA = createTaggedOMA;
125
126
  function findInMetadata(metadata, id, asGeob) {
126
127
  if (!asGeob)
127
128
  return metadata.tags.find(e => e.id === id);
@@ -169,7 +170,6 @@ async function updateMetadata(file, titleInfo) {
169
170
  await file.write(subsequentData);
170
171
  await file.write(new Uint8Array(zeroOutDifference).fill(0));
171
172
  }
172
- exports.updateMetadata = updateMetadata;
173
173
  function decryptOMA(omaFile) {
174
174
  var _a;
175
175
  const OMA_METADATA_HEADER = textEncoder.encode("ea3");
@@ -229,4 +229,3 @@ function decryptOMA(omaFile) {
229
229
  // And merge all into the final OMA.
230
230
  return (0, utils_1.concatUint8Arrays)([newMetaHeader, newFormatHeader, decryptedAudio]);
231
231
  }
232
- exports.decryptOMA = decryptOMA;
package/dist/utils.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export declare function assert(condition: boolean, message?: string): void;
2
2
  export declare function join(...paths: string[]): string;
3
- export declare function concatUint8Arrays(args: Uint8Array[]): Uint8Array;
4
- export declare function wordArrayToByteArray(wordArray: any, length?: number): Uint8Array;
5
- export declare function createRandomBytes(length?: number): Uint8Array;
3
+ export declare function concatUint8Arrays(args: Uint8Array<ArrayBuffer>[]): Uint8Array<ArrayBuffer>;
4
+ export declare function wordArrayToByteArray(wordArray: any, length?: number): Uint8Array<ArrayBuffer>;
5
+ export declare function createRandomBytes(length?: number): Uint8Array<ArrayBuffer>;
6
6
  export declare function arrayEq<T>(a: ArrayLike<T>, b: ArrayLike<T>): boolean;
7
7
  export declare function hexDump(logger: (e: string) => void, data: Uint8Array, truncate?: boolean): void;
8
8
  export declare class Logger {
@@ -10,5 +10,6 @@ export declare class Logger {
10
10
  bumpIndent(i: number): void;
11
11
  log(...data: string[]): void;
12
12
  }
13
- export declare function getAudioDataFromWave(waveFile: Uint8Array): Uint8Array | null;
13
+ export declare function getAudioDataFromWave(waveFile: Uint8Array): Uint8Array<ArrayBuffer> | null;
14
+ export declare function resolvePathFromGlobalIndex(globalTrackIndex: number): string;
14
15
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAM1D;AAED,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAEtC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,cAcnD;AAmBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAE,MAA2B,cAavF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,SAAI,cAM3C;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAM1D;AAGD,wBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,UAAO,QAarF;AAED,qBAAa,MAAM;IACf,OAAO,SAAM;IACb,UAAU,CAAC,CAAC,EAAE,MAAM;IAQpB,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE;CAGxB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,qBAgBxD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,QAM1D;AAED,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,UAEtC;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,2BAchE;AAmBD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAE,MAA2B,2BAavF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,SAAI,2BAM3C;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAM1D;AAGD,wBAAgB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,UAAO,QAarF;AAED,qBAAa,MAAM;IACf,OAAO,SAAM;IACb,UAAU,CAAC,CAAC,EAAE,MAAM;IAQpB,GAAG,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE;CAGxB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,kCAgBxD;AAED,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,UAElE"}
package/dist/utils.js CHANGED
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAudioDataFromWave = exports.Logger = exports.hexDump = exports.arrayEq = exports.createRandomBytes = exports.wordArrayToByteArray = exports.concatUint8Arrays = exports.join = exports.assert = void 0;
3
+ exports.Logger = void 0;
4
+ exports.assert = assert;
5
+ exports.join = join;
6
+ exports.concatUint8Arrays = concatUint8Arrays;
7
+ exports.wordArrayToByteArray = wordArrayToByteArray;
8
+ exports.createRandomBytes = createRandomBytes;
9
+ exports.arrayEq = arrayEq;
10
+ exports.hexDump = hexDump;
11
+ exports.getAudioDataFromWave = getAudioDataFromWave;
12
+ exports.resolvePathFromGlobalIndex = resolvePathFromGlobalIndex;
4
13
  function assert(condition, message) {
5
14
  if (condition) {
6
15
  return;
@@ -8,11 +17,9 @@ function assert(condition, message) {
8
17
  message = message || 'no message provided';
9
18
  throw new Error(`Assertion failed: ${message}`);
10
19
  }
11
- exports.assert = assert;
12
20
  function join(...paths) {
13
21
  return paths.join("/").replace(/\/*/, '/');
14
22
  }
15
- exports.join = join;
16
23
  function concatUint8Arrays(args) {
17
24
  let totalLength = 0;
18
25
  for (let a of args) {
@@ -26,7 +33,6 @@ function concatUint8Arrays(args) {
26
33
  }
27
34
  return res;
28
35
  }
29
- exports.concatUint8Arrays = concatUint8Arrays;
30
36
  function wordToByteArray(word, length, littleEndian = false) {
31
37
  let ba = [], xFF = 0xff;
32
38
  let actualLength = length;
@@ -60,13 +66,11 @@ function wordArrayToByteArray(wordArray, length = wordArray.sigBytes) {
60
66
  }
61
67
  return res;
62
68
  }
63
- exports.wordArrayToByteArray = wordArrayToByteArray;
64
69
  function createRandomBytes(length = 8) {
65
70
  return new Uint8Array(Array(length)
66
71
  .fill(0)
67
72
  .map(() => Math.floor(Math.random() * 256)));
68
73
  }
69
- exports.createRandomBytes = createRandomBytes;
70
74
  function arrayEq(a, b) {
71
75
  if (a.length !== b.length)
72
76
  return false;
@@ -76,7 +80,6 @@ function arrayEq(a, b) {
76
80
  }
77
81
  return true;
78
82
  }
79
- exports.arrayEq = arrayEq;
80
83
  const textDecoder = new TextDecoder();
81
84
  function hexDump(logger, data, truncate = true) {
82
85
  if (data.length === 0)
@@ -93,7 +96,6 @@ function hexDump(logger, data, truncate = true) {
93
96
  if (truncated)
94
97
  logger("<truncated>");
95
98
  }
96
- exports.hexDump = hexDump;
97
99
  class Logger {
98
100
  constructor() {
99
101
  this.preffix = "";
@@ -130,4 +132,6 @@ function getAudioDataFromWave(waveFile) {
130
132
  }
131
133
  return null;
132
134
  }
133
- exports.getAudioDataFromWave = getAudioDataFromWave;
135
+ function resolvePathFromGlobalIndex(globalTrackIndex) {
136
+ return join('OMGAUDIO', `10F${(globalTrackIndex >> 8).toString(16).padStart(2, '0')}`, '1000' + globalTrackIndex.toString(16).padStart(4, '0').toUpperCase() + '.OMA');
137
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "networkwm-js",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "A library which lets you manage tracks and metadata on Sony Network Walkmen.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -32,12 +32,12 @@
32
32
  "@types/node": "^18.11.9",
33
33
  "prettier": "^2.8.8",
34
34
  "ts-node": "^10.9.2",
35
- "typescript": "^4.8.4"
35
+ "typescript": "^5.9.3"
36
36
  },
37
37
  "dependencies": {
38
38
  "@originjs/crypto-js-wasm": "github:asivery/crypto-js-wasm",
39
39
  "async-mutex": "^0.4.0",
40
- "himd-js": "^0.2.7",
40
+ "himd-js": "^0.2.9",
41
41
  "mp3-parser": "^0.3.0",
42
42
  "node-id3": "^0.2.5",
43
43
  "node-mass-storage": "^0.2.4",
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAa,MAAM,WAAW,CAAC;AAGxD,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,UAElE;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,+BAO7F;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,CAAC,CA2B7G"}