imgdnn.js 2.1 KB

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