Browse Source

add TypeScript definition for nmiejs module

Konstantin Ladutenko 3 years ago
parent
commit
ec1d88fd2f
7 changed files with 56 additions and 12 deletions
  1. 5 2
      Makefile
  2. 1 1
      guiapp/.eslintignore
  3. 11 0
      guiapp/package-lock.json
  4. 1 0
      guiapp/package.json
  5. 7 7
      guiapp/quasar.conf.js
  6. 0 2
      guiapp/src/App.vue
  7. 31 0
      guiapp/src/nmiejs.d.ts

+ 5 - 2
Makefile

@@ -56,11 +56,12 @@ fieldnlay-mp: $(SRCDIR)/nearfield.cc $(SRCDIR)/nmie.cc $(CXX_NMIE_HEADERS)
 wasm: $(SRCDIR)/nmie-js-wrapper.cc $(CXX_NMIE_HEADERS)
 #    emcc -lm -Wall -O2 -std=c++11 --bind -s ENVIRONMENT="web" -s MODULARIZE=1 -s SINGLE_FILE=1 -s WASM=1 -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
 #	emcc --bind -lm -Wall -O2 -std=c++11 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmiejs.js $(SRCDIR)/nmie-js-wrapper.cc
-
 # 	emcc --bind -lm -Wall -O2 -std=c++11 -s MODULARIZE=1 -s WASM=1 -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
+
 	emcc --bind -lm -Wall -pedantic -Oz -std=c++11 -s NO_DISABLE_EXCEPTION_CATCHING -s MODULARIZE=1 -s ASSERTIONS=1 -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -s EXPORT_NAME="nmiejs" -s ENVIRONMENT="web" -o nmiejs.js $(SRCDIR)/nmie-js-wrapper.cc
-#	emcc --bind -lm -Wall -O3 -std=c++11 -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='["cwrap"]' -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s 'EXPORT_NAME="nmiejs"' -o ./nmiejs.js $(SRCDIR)/nmie-js-wrapper.cc
+#	emcc --bind -lm -Wall -pedantic -Oz -std=c++11 -s NO_DISABLE_EXCEPTION_CATCHING -s MODULARIZE=1 -s EXPORT_ES6=1 -s ASSERTIONS=1 -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -s EXPORT_NAME="nmiejs" -s ENVIRONMENT="web" -o nmiejs.js $(SRCDIR)/nmie-js-wrapper.cc
 
+#	emcc --bind -lm -Wall -O3 -std=c++11 -s WASM=1 -s EXTRA_EXPORTED_RUNTIME_METHODS='["cwrap"]' -s ALLOW_MEMORY_GROWTH=1 -s MODULARIZE=1 -s 'EXPORT_NAME="nmiejs"' -o ./nmiejs.js $(SRCDIR)/nmie-js-wrapper.cc
 # 	emcc -g --bind -lm -Wall -std=c++11 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
 # 	emcc --bind -lm -Wall -O2 -std=c++11 -s MODULARIZE=1 -s EXPORT_ES6=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun']" -o nmie.js $(SRCDIR)/nmie-js-wrapper.cc
 
@@ -83,7 +84,9 @@ wasm: $(SRCDIR)/nmie-js-wrapper.cc $(CXX_NMIE_HEADERS)
 
 
 	@cp -f nmiejs.js vue-cli3-webapp/src/
+	@cp -f nmiejs.js guiapp/src/
 	@cp -f nmiejs.wasm vue-cli3-webapp/public/
+	@cp -f nmiejs.wasm guiapp/public/
 
 clean:
 	$(PYTHON) setup.py clean

+ 1 - 1
guiapp/.eslintignore

@@ -8,4 +8,4 @@
 babel.config.js
 /src-ssr
 /src/nmiejs.js
-/src/App.vue
+

+ 11 - 0
guiapp/package-lock.json

@@ -8,6 +8,7 @@
       "version": "0.0.1",
       "dependencies": {
         "@quasar/extras": "^1.0.0",
+        "@types/emscripten": "^1.39.5",
         "core-js": "^3.6.5",
         "quasar": "^2.0.0",
         "vuex": "^4.0.1"
@@ -2227,6 +2228,11 @@
         "electron-osx-sign": "^0.4.11"
       }
     },
+    "node_modules/@types/emscripten": {
+      "version": "1.39.5",
+      "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.5.tgz",
+      "integrity": "sha512-DIOOg+POSrYl+OlNRHQuIEqCd8DCtynG57H862UCce16nXJX7J8eWxNGgOcf8Eyge8zXeSs27mz1UcFu8L/L7g=="
+    },
     "node_modules/@types/eslint": {
       "version": "7.28.0",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz",
@@ -15195,6 +15201,11 @@
         "electron-osx-sign": "^0.4.11"
       }
     },
+    "@types/emscripten": {
+      "version": "1.39.5",
+      "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.5.tgz",
+      "integrity": "sha512-DIOOg+POSrYl+OlNRHQuIEqCd8DCtynG57H862UCce16nXJX7J8eWxNGgOcf8Eyge8zXeSs27mz1UcFu8L/L7g=="
+    },
     "@types/eslint": {
       "version": "7.28.0",
       "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz",

+ 1 - 0
guiapp/package.json

@@ -11,6 +11,7 @@
   },
   "dependencies": {
     "@quasar/extras": "^1.0.0",
+    "@types/emscripten": "^1.39.5",
     "core-js": "^3.6.5",
     "quasar": "^2.0.0",
     "vuex": "^4.0.1"

+ 7 - 7
guiapp/quasar.conf.js

@@ -52,13 +52,13 @@ module.exports = configure(function (ctx) {
 
     // Full list of options: https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-build
     build: {
-      extendWebpack (cfg, { isServer, isClient }) {
-        cfg.module.rules.push({
-          enforce: 'pre',
-          test: /\.wasm$/,
-          loader: 'wasm-loader'
-        })
-      },
+      // extendWebpack (cfg, { isServer, isClient }) {
+      //   cfg.module.rules.push({
+      //     enforce: 'pre',
+      //     test: /\.wasm$/,
+      //     loader: 'wasm-loader'
+      //   })
+      // },
       vueRouterMode: 'hash', // available values: 'hash', 'history'
 
       // transpile: false,

+ 0 - 2
guiapp/src/App.vue

@@ -27,9 +27,7 @@ import { defineComponent } from 'vue';
 import nmiejs from './nmiejs.js';
 // Test nmiejs if working
 void (async () => {
-  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
   const module = await nmiejs();
-  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
   const nmie = new module.nmie();
   nmie.ClearTarget();
   let R = 100.0;

+ 31 - 0
guiapp/src/nmiejs.d.ts

@@ -0,0 +1,31 @@
+declare function nmiejs(): Promise<nmieModule>;
+
+
+declare interface nmieModule {
+    nmie: new () => nmie_class;
+}
+
+
+declare class nmie_class {
+    constructor(path?: string);
+    SetWavelength(wavelength: number): void;
+    AddTargetLayerReIm(layer_width: number,
+                       re_layer_index: number,
+                       im_layer_index: number): void;
+    SetModeNmaxAndType(mode_n: number, mode_type: number): void;
+    ClearTarget(): void;
+    RunMieCalculation(): void;
+    RunFieldCalculationPolar(outer_arc_pos: number,
+                             radius_pos: number,
+                             from_Rho: number,   to_Rho: number,
+                             from_Theta: number,   to_Theta: number,
+                             from_Phi: number,   to_Phi: number,
+                             isIgnoreAvailableNmax: number): void;
+    GetFieldEabs(): number[];
+    GetQsca(): number;
+    GetQabs(): number;
+    GetQext(): number;
+}
+
+
+export = nmiejs;