imgdnn.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. var imgdnn = imgdnn || {};
  2. imgdnn.ModelFactory = class {
  3. match(context) {
  4. const stream = context.stream;
  5. const signature = [ 0x49, 0x4d, 0x47, 0x44, 0x4e, 0x4e ]; // IMGDNN
  6. if (stream && stream.length >= signature.length && stream.peek(6).every((value, index) => value === signature[index])) {
  7. return 'imgdnn';
  8. }
  9. return null;
  10. }
  11. open(context) {
  12. return imgdnn.Metadata.open(context).then((/* metadata */) => {
  13. // const stream = context.stream;
  14. // const buffer = stream.peek();
  15. throw new imgdnn.Error('Invalid file content. File contains undocumented IMGDNN data.');
  16. // return new imgdnn.Model(metadata, model);
  17. });
  18. }
  19. };
  20. imgdnn.Model = class {
  21. constructor(metadata, model) {
  22. this._format = 'IMGDNN';
  23. this._graphs = [ new imgdnn.Graph(metadata, model) ];
  24. }
  25. get format() {
  26. return this._format;
  27. }
  28. get graphs() {
  29. return this._graphs;
  30. }
  31. };
  32. imgdnn.Graph = class {
  33. constructor(/* metadata, model */) {
  34. this._inputs = [];
  35. this._outputs = [];
  36. this._nodes = [];
  37. }
  38. get inputs() {
  39. return this._inputs;
  40. }
  41. get outputs() {
  42. return this._outputs;
  43. }
  44. get nodes() {
  45. return this._nodes;
  46. }
  47. };
  48. imgdnn.Metadata = class {
  49. static open(/* context */) {
  50. imgdnn.Metadata._metadata = imgdnn.Metadata._metadata || new imgdnn.Metadata(null);
  51. return Promise.resolve(imgdnn.Metadata._metadata);
  52. }
  53. constructor(data) {
  54. this._map = new Map();
  55. if (data) {
  56. const metadata = JSON.parse(data);
  57. this._map = new Map(metadata.map((item) => [ item.name, item ]));
  58. }
  59. }
  60. type(name) {
  61. return this._map.get(name);
  62. }
  63. };
  64. imgdnn.Error = class extends Error {
  65. constructor(message) {
  66. super(message);
  67. this.name = 'Error loading IMGDNN model.';
  68. }
  69. };
  70. if (typeof module !== 'undefined' && typeof module.exports === 'object') {
  71. module.exports.ModelFactory = imgdnn.ModelFactory;
  72. }