aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2021-08-28 22:23:27 +0700
committerShulhan <ms@kilabit.info>2021-08-28 22:24:51 +0700
commitc246299101e47c28e064dbeacdbe718909bd7f17 (patch)
tree71ba2799017c5172b4b917ed0b73d4bd17584f8a
parent50c57f048eecab68570a0568f20922044935ecca (diff)
downloadpakakeh.ts-c246299101e47c28e064dbeacdbe718909bd7f17.tar.xz
all: use the WuiResponseInterface for non-void return type
This commit changes the WuiVfsOptions.istNodes and WuiEditorOptions.OpenFile to WuiResponseInterface. WuiResponseInterface define an interface that will be returned by function or method with non-void type. If the function/method success, the code should be set to 200 (equal to HTTP OK), and the data will contains the expected data for that function. If the function/method call failed, the code should be set to other value beside 200 with a message describe why its failed.
-rw-r--r--README.adoc2
-rw-r--r--editor/editor.d.ts4
-rw-r--r--editor/editor.js1
-rw-r--r--editor/editor.ts9
-rw-r--r--response.d.ts5
-rw-r--r--response.js3
-rw-r--r--response.ts15
-rw-r--r--vfs/example.html22
-rw-r--r--vfs/vfs.d.ts15
-rw-r--r--vfs/vfs.js35
-rw-r--r--vfs/vfs.ts31
11 files changed, 101 insertions, 41 deletions
diff --git a/README.adoc b/README.adoc
index fddcc77..8f861ef 100644
--- a/README.adoc
+++ b/README.adoc
@@ -10,3 +10,5 @@ A HTML web-user interface components built with TypeScript.
* An exported type or class. interface, type, method, or function name MUST
start with an upper-case letter.
* An exported class, type, interface, or function MUST be prefixed with "Wui".
+
+* Use the `WuiResponseInterface` for non-void return type.
diff --git a/editor/editor.d.ts b/editor/editor.d.ts
index 2c716ee..2784506 100644
--- a/editor/editor.d.ts
+++ b/editor/editor.d.ts
@@ -1,8 +1,8 @@
-import { WuiVfsResponseInterface } from "../vfs/vfs";
+import { WuiResponseInterface } from "../response";
export interface WuiEditorOptions {
id: string;
is_editable: boolean;
- OpenFile(path: string): WuiVfsResponseInterface;
+ OpenFile(path: string): WuiResponseInterface;
OnSelection(begin: number, end: number): void;
OnSave(content: string): void;
}
diff --git a/editor/editor.js b/editor/editor.js
index 3f0bad2..d6f0f1f 100644
--- a/editor/editor.js
+++ b/editor/editor.js
@@ -46,6 +46,7 @@ var WUI_EDITOR_CLASS_LINE_NUMBER = "wui_editor_line_number";
var WUI_EDITOR_CLASS_LINE_TEXT = "wui_editor_line_text";
var WuiEditor = /** @class */ (function () {
function WuiEditor(opts) {
+ var _this = this;
this.opts = opts;
this.active_file = null;
this.active_text = null;
diff --git a/editor/editor.ts b/editor/editor.ts
index e97b563..daa5cd2 100644
--- a/editor/editor.ts
+++ b/editor/editor.ts
@@ -7,13 +7,14 @@ const WUI_EDITOR_CLASS_LINE = "wui_editor_line"
const WUI_EDITOR_CLASS_LINE_NUMBER = "wui_editor_line_number"
const WUI_EDITOR_CLASS_LINE_TEXT = "wui_editor_line_text"
-import { WuiVfsNodeInterface, WuiVfsResponseInterface } from "../vfs/vfs"
+import { WuiResponseInterface } from "../response"
+import { WuiVfsNodeInterface } from "../vfs/vfs"
export interface WuiEditorOptions {
id: string
is_editable: boolean
- OpenFile(path: string): WuiVfsResponseInterface
+ OpenFile(path: string): WuiResponseInterface
// Handler that will be called when user select lines.
OnSelection(begin: number, end: number): void
@@ -317,10 +318,10 @@ export class WuiEditor {
}
}
- async OpenFile(path: string): Promise<WuiVfsResponseInterface> {
+ async OpenFile(path: string): Promise<WuiResponseInterface> {
let res = await this.opts.OpenFile(path)
if (!res) {
- return { code: 500 } as WuiVfsResponseInterface
+ return { code: 500 } as WuiResponseInterface
}
if (res.code != 200) {
return res
diff --git a/response.d.ts b/response.d.ts
new file mode 100644
index 0000000..2e503a7
--- /dev/null
+++ b/response.d.ts
@@ -0,0 +1,5 @@
+export interface WuiResponseInterface {
+ code: number;
+ message?: string;
+ data?: any;
+}
diff --git a/response.js b/response.js
new file mode 100644
index 0000000..6c55c1b
--- /dev/null
+++ b/response.js
@@ -0,0 +1,3 @@
+"use strict";
+exports.__esModule = true;
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file
diff --git a/response.ts b/response.ts
new file mode 100644
index 0000000..e4122c6
--- /dev/null
+++ b/response.ts
@@ -0,0 +1,15 @@
+//
+// WuiResponseInterface define an interface that will be returned by function
+// or method with non-void type.
+//
+// If the function/method success, the code should be set to 200 (equal to
+// HTTP OK), and the data will contains the expected data for that function.
+//
+// If the function/method call failed, the code should be set to other value
+// beside 200 with a message describe why its failed.
+//
+export interface WuiResponseInterface {
+ code: number
+ message?: string
+ data?: any
+}
diff --git a/vfs/example.html b/vfs/example.html
index 0fb1f82..3d8a772 100644
--- a/vfs/example.html
+++ b/vfs/example.html
@@ -9,6 +9,7 @@
<script>
var exports = {}
+ var wui_vfs;
</script>
<script src="vfs.js"></script>
<script>
@@ -82,15 +83,19 @@
},
}
- function main() {
+ async function main() {
let opts = {
id: "vfs",
- is_editable: true,
ListNodes: doListNodes,
- GetNode: doGetNode,
+ OnClickNode: OnClickNode,
}
- let vfs = new Vfs(opts)
+ let res = await NewWuiVfs(opts)
+ if (res.code != 200) {
+ console.error(res)
+ return
+ }
+ wui_vfs = res.data
}
function doListNodes() {
@@ -101,7 +106,11 @@
return res
}
- function doGetNode(path) {
+ function OnClickNode(path, is_dir) {
+ if (is_dir) {
+ return
+ }
+
let res = {
code: 200,
data: {
@@ -132,7 +141,8 @@
res.code = 404
res.message = "path not found"
}
- return res
+
+ console.log(res)
}
</script>
</body>
diff --git a/vfs/vfs.d.ts b/vfs/vfs.d.ts
index 3d18e7d..706ccc8 100644
--- a/vfs/vfs.d.ts
+++ b/vfs/vfs.d.ts
@@ -1,3 +1,4 @@
+import { WuiResponseInterface } from "../response";
export interface WuiVfsNodeInterface {
name: string;
path: string;
@@ -9,16 +10,12 @@ export interface WuiVfsNodeInterface {
childs?: WuiVfsNodeInterface[];
content?: string;
}
-export interface WuiVfsResponseInterface {
- code: number;
- message?: string;
- data?: WuiVfsNodeInterface | WuiPathNodeInterface;
-}
export interface WuiVfsOptions {
id: string;
- ListNodes: () => WuiPathNodeInterface;
+ ListNodes: () => WuiResponseInterface;
OnClickNode(path: string, is_dir: boolean): void;
}
+export declare function NewWuiVfs(opts: WuiVfsOptions): Promise<WuiResponseInterface>;
export declare class WuiVfs {
opts: WuiVfsOptions;
private el;
@@ -26,11 +23,7 @@ export declare class WuiVfs {
private com_list;
private path_node;
constructor(opts: WuiVfsOptions);
- private init;
+ init(): Promise<WuiResponseInterface>;
private open;
OpenPath(this: WuiVfs, path: string): void;
}
-declare type WuiPathNodeInterface = {
- [key: string]: WuiVfsNodeInterface;
-};
-export {};
diff --git a/vfs/vfs.js b/vfs/vfs.js
index 2f3eee3..25945b9 100644
--- a/vfs/vfs.js
+++ b/vfs/vfs.js
@@ -39,7 +39,27 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
}
};
exports.__esModule = true;
-exports.WuiVfs = void 0;
+exports.WuiVfs = exports.NewWuiVfs = void 0;
+function NewWuiVfs(opts) {
+ return __awaiter(this, void 0, void 0, function () {
+ var vfs, res;
+ return __generator(this, function (_a) {
+ switch (_a.label) {
+ case 0:
+ vfs = new WuiVfs(opts);
+ return [4 /*yield*/, vfs.init()];
+ case 1:
+ res = _a.sent();
+ if (res.code != 200) {
+ return [2 /*return*/, res];
+ }
+ res.data = vfs;
+ return [2 /*return*/, res];
+ }
+ });
+ });
+}
+exports.NewWuiVfs = NewWuiVfs;
var WuiVfs = /** @class */ (function () {
function WuiVfs(opts) {
this.opts = opts;
@@ -59,16 +79,17 @@ var WuiVfs = /** @class */ (function () {
//
WuiVfs.prototype.init = function () {
return __awaiter(this, void 0, void 0, function () {
- var res_path_node, key, value, node;
+ var res, res_path_node, key, value, node;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.opts.ListNodes()];
case 1:
- res_path_node = _a.sent();
- if (!res_path_node) {
- return [2 /*return*/];
+ res = _a.sent();
+ if (res.code != 200) {
+ return [2 /*return*/, res];
}
+ res_path_node = res.data;
for (key in res_path_node) {
value = res_path_node[key];
node = new WuiVfsNode(value, function (node) {
@@ -92,7 +113,7 @@ var WuiVfs = /** @class */ (function () {
this.el.appendChild(this.com_list.el);
// (3)
this.open(this.path_node["/"]);
- return [2 /*return*/];
+ return [2 /*return*/, res];
}
});
});
@@ -240,4 +261,4 @@ var WuiVfsPath = /** @class */ (function () {
};
return WuiVfsPath;
}());
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrRUFBa0U7QUFDbEUseUVBQXlFO0FBQ3pFLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0I3QjtJQU1DLGdCQUFtQixJQUFtQjtRQUFuQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBRjlCLGNBQVMsR0FBZ0IsRUFBRSxDQUFBO1FBR2xDLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUE7WUFDekQsT0FBTTtTQUNOO1FBQ0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFDYixDQUFDO0lBRUQsRUFBRTtJQUNGLDRFQUE0RTtJQUM1RSw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLHdCQUF3QjtJQUN4QixFQUFFO0lBQ1kscUJBQUksR0FBbEI7Ozs7Ozs0QkFFcUIscUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBQTs7d0JBQTNDLGFBQWEsR0FBRyxTQUEyQjt3QkFDL0MsSUFBSSxDQUFDLGFBQWEsRUFBRTs0QkFDbkIsc0JBQU07eUJBQ047d0JBRUQsS0FBVyxHQUFHLElBQUksYUFBYSxFQUFFOzRCQUMxQixLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBd0IsQ0FBQTs0QkFDakQsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFDLElBQWdCO2dDQUNuRCxJQUFJLEtBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO29DQUMxQixLQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFB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 \ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidmZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrRUFBa0U7QUFDbEUseUVBQXlFO0FBQ3pFLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkI3QixTQUFzQixTQUFTLENBQUMsSUFBbUI7Ozs7OztvQkFDOUMsR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUNoQixxQkFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUE7O29CQUF0QixHQUFHLEdBQUcsU0FBZ0I7b0JBQzFCLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUU7d0JBQ3BCLHNCQUFPLEdBQUcsRUFBQTtxQkFDVjtvQkFDRCxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQTtvQkFDZCxzQkFBTyxHQUFHLEVBQUE7Ozs7Q0FDVjtBQVJELDhCQVFDO0FBRUQ7SUFNQyxnQkFBbUIsSUFBbUI7UUFBbkIsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUY5QixjQUFTLEdBQWdCLEVBQUUsQ0FBQTtRQUdsQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3pELE9BQU07U0FDTjtRQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUsNEJBQTRCO0lBQzVCLDRCQUE0QjtJQUM1Qix3QkFBd0I7SUFDeEIsRUFBRTtJQUNJLHFCQUFJLEdBQVY7Ozs7Ozs0QkFFVyxxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFBOzt3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 \ No newline at end of file
diff --git a/vfs/vfs.ts b/vfs/vfs.ts
index 7372166..331a22b 100644
--- a/vfs/vfs.ts
+++ b/vfs/vfs.ts
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+import { WuiResponseInterface } from "../response"
+
export interface WuiVfsNodeInterface {
name: string
path: string
@@ -15,22 +17,26 @@ export interface WuiVfsNodeInterface {
content?: string
}
-export interface WuiVfsResponseInterface {
- code: number
- message?: string
- data?: WuiVfsNodeInterface | WuiPathNodeInterface
-}
-
export interface WuiVfsOptions {
id: string
- ListNodes: () => WuiPathNodeInterface
+ ListNodes: () => WuiResponseInterface
// OnClickNode define an handler that will be called everytime a node is
// clicked. The is_dir will be true, if the node is a directory.
OnClickNode(path: string, is_dir: boolean): void
}
+export async function NewWuiVfs(opts: WuiVfsOptions): Promise<WuiResponseInterface> {
+ let vfs = new WuiVfs(opts)
+ let res = await vfs.init()
+ if (res.code != 200) {
+ return res
+ }
+ res.data = vfs
+ return res
+}
+
export class WuiVfs {
private el!: HTMLElement
private com_path!: WuiVfsPath
@@ -52,13 +58,14 @@ export class WuiVfs {
// (2) Create the WuiVfsList
// (3) Open the root "/"
//
- private async init() {
+ async init(): Promise<WuiResponseInterface> {
// (0)
- let res_path_node = await this.opts.ListNodes()
- if (!res_path_node) {
- return
+ let res = await this.opts.ListNodes()
+ if (res.code != 200) {
+ return res
}
+ let res_path_node = res.data as WuiPathNodeInterface
for (const key in res_path_node) {
const value = res_path_node[key] as WuiVfsNodeInterface
const node = new WuiVfsNode(value, (node: WuiVfsNode) => {
@@ -86,6 +93,8 @@ export class WuiVfs {
// (3)
this.open(this.path_node["/"])
+
+ return res
}
private open(node: WuiVfsNode) {