= 5 сар өмнө
parent
commit
21dd9e6e92

BIN
beta/8a2a3c8efae774018112.wasm


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
beta/9181ee78cd72b9be8ba3.js


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 6
beta/main.js


+ 5 - 13
beta/package-lock.json

@@ -9,7 +9,7 @@
       "version": "1.0.0",
       "license": "ISC",
       "dependencies": {
-        "sql.js-httpvfs": "^0.8.12"
+        "sql.js": "^1.13.0"
       },
       "devDependencies": {
         "ts-loader": "^9.5.2",
@@ -532,11 +532,6 @@
       "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
       "dev": true
     },
-    "node_modules/comlink": {
-      "version": "4.4.2",
-      "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz",
-      "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g=="
-    },
     "node_modules/commander": {
       "version": "2.20.3",
       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -1246,13 +1241,10 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/sql.js-httpvfs": {
-      "version": "0.8.12",
-      "resolved": "https://registry.npmjs.org/sql.js-httpvfs/-/sql.js-httpvfs-0.8.12.tgz",
-      "integrity": "sha512-lcEBc2q0psFRfdCx8Di22oUIkkv5MUIaVO/fGCj/Jjx6YQDKVylQEcjd7NSSbmINHTRwVkm/vWP8uuevT7Rkkw==",
-      "dependencies": {
-        "comlink": "^4.3.0"
-      }
+    "node_modules/sql.js": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.13.0.tgz",
+      "integrity": "sha512-RJbVP1HRDlUUXahJ7VMTcu9Rm1Nzw+EBpoPr94vnbD4LwR715F3CcxE2G2k45PewcaZ57pjetYa+LoSJLAASgA=="
     },
     "node_modules/supports-color": {
       "version": "7.2.0",

+ 1 - 1
beta/package.json

@@ -16,6 +16,6 @@
     "webpack-cli": "^6.0.1"
   },
   "dependencies": {
-    "sql.js-httpvfs": "^0.8.12"
+    "sql.js": "^1.13.0"
   }
 }

BIN
beta/sql-wasm.wasm


+ 1 - 0
beta/src/graphs/topProduction.ts

@@ -39,6 +39,7 @@ export class TopProduction implements Graph {
         // Get Data
         const prodData = await query("SELECT ticker, " + queryFields + " FROM ProdInfo WHERE month = '" + configValues.month + "'") as any[]
         
+        
         // Process Data
         if(configValues.metric == 'deficit')	// Populate deficit into data
 		{

+ 35 - 0
beta/src/types/sql.js.d.ts

@@ -0,0 +1,35 @@
+declare module "sql.js" {
+  interface SqlJsConfig {
+    locateFile?: (file: string) => string;
+  }
+
+  interface QueryResults {
+    columns: string[];
+    values: any[][];
+  }
+
+  class Database {
+    constructor(data?: Uint8Array);
+    run(sql: string, params?: any[]): void;
+    exec(sql: string, params?: any[]): QueryResults[];
+    prepare(sql: string, params?: any[]): Statement;
+    export(): Uint8Array;
+    close(): void;
+  }
+
+  class Statement {
+    bind(values?: any[]): void;
+    step(): boolean;
+    get(): any[];
+    getAsObject(): Record<string, any>;
+    free(): void;
+  }
+
+  export interface SqlJsStatic {
+    Database: typeof Database;
+  }
+
+  export default function initSqlJs(
+    config?: SqlJsConfig
+  ): Promise<SqlJsStatic>;
+}

+ 20 - 27
beta/src/utils.ts

@@ -1,39 +1,32 @@
 import { fullMonthNames, materialCategories, materialCategoryColors } from "./staticData/constants";
-import { createDbWorker } from "sql.js-httpvfs";
+import initSqlJs from "sql.js";
 
 // Get data from SQL database
-var sqlWorker = undefined as any;
+var SQL: any;
+var db: any;
 export async function query(sqlQuery: string)
 {
-	if(!sqlWorker)
+	if(!SQL)
 	{
-		const workerUrl = new URL(
-			"sql.js-httpvfs/dist/sqlite.worker.js",
-			import.meta.url
-		);
-		const wasmUrl = new URL("sql.js-httpvfs/dist/sql-wasm.wasm", import.meta.url);
-
-		sqlWorker = await createDbWorker(
-		[
-		{
-			from: "inline",
-			config: {
-			serverMode: "full",
-			url: "./data/prun-data.sqlite",
-			requestChunkSize: 4096,
-			// @ts-ignore
-			fileLength: 26374144
-			},
-		},
-		],
-		workerUrl.toString(),
-		wasmUrl.toString()
-		);
+		SQL = await initSqlJs({
+			locateFile: () =>
+				"./sql-wasm.wasm"
+		});
+		
+		const buffer = await fetch("./data/prun-data.sqlite").then(r => r.arrayBuffer());
+
+		db = new SQL.Database(new Uint8Array(buffer));
+		
 	}
 
-    const result = await sqlWorker.db.query(sqlQuery);
+    const result = db.exec(sqlQuery);
+	if (!result || result.length === 0) return [];
 
-    return result
+	const { columns, values } = result[0];
+
+	return values.map((row: any[]) =>
+		Object.fromEntries(row.map((val, i) => [columns[i], val]))
+	);
 }
 
 // Sort an array by the key of each object month

+ 1 - 1
beta/tsconfig.json

@@ -4,6 +4,6 @@
     "module": "es2020",
     "outDir": "./dist",
     "strict": true,
-	"moduleResolution": "node"
+    "moduleResolution": "node"
   }
 }

+ 7 - 1
beta/webpack.config.js

@@ -5,7 +5,13 @@ module.exports = {
   module: {
     rules: [{ test: /\.ts$/, use: 'ts-loader', exclude: /node_modules|main\.js/ }]
   },
-  resolve: { extensions: ['.ts', '.js'] },
+  resolve: { extensions: ['.ts', '.js'],
+    fallback: {
+      fs: false,
+      path: false,
+      crypto: false
+    }
+   },
   output: {
     filename: 'main.js',
     path: __dirname

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно