@panyam/tsutils 0.0.70 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/dom.js +17 -7
- package/lib/cjs/dom.js.map +1 -1
- package/lib/cjs/index.d.ts +0 -1
- package/lib/cjs/index.js +18 -9
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/scrolling.d.ts +1 -2
- package/lib/cjs/scrolling.js +1 -2
- package/lib/cjs/scrolling.js.map +1 -1
- package/lib/esm/index.d.ts +0 -1
- package/lib/esm/index.js +0 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/scrolling.d.ts +1 -2
- package/lib/esm/scrolling.js +1 -2
- package/lib/esm/scrolling.js.map +1 -1
- package/package.json +1 -2
- package/lib/cjs/apis/evapis.d.ts +0 -43
- package/lib/cjs/apis/evapis.js +0 -104
- package/lib/cjs/apis/evapis.js.map +0 -1
- package/lib/cjs/apis/index.d.ts +0 -2
- package/lib/cjs/apis/index.js +0 -19
- package/lib/cjs/apis/index.js.map +0 -1
- package/lib/cjs/apis/net.d.ts +0 -29
- package/lib/cjs/apis/net.js +0 -83
- package/lib/cjs/apis/net.js.map +0 -1
- package/lib/cjs/apis/promiseapis.d.ts +0 -23
- package/lib/cjs/apis/promiseapis.js +0 -59
- package/lib/cjs/apis/promiseapis.js.map +0 -1
- package/lib/esm/apis/evapis.d.ts +0 -43
- package/lib/esm/apis/evapis.js +0 -100
- package/lib/esm/apis/evapis.js.map +0 -1
- package/lib/esm/apis/index.d.ts +0 -2
- package/lib/esm/apis/index.js +0 -3
- package/lib/esm/apis/index.js.map +0 -1
- package/lib/esm/apis/net.d.ts +0 -29
- package/lib/esm/apis/net.js +0 -77
- package/lib/esm/apis/net.js.map +0 -1
- package/lib/esm/apis/promiseapis.d.ts +0 -23
- package/lib/esm/apis/promiseapis.js +0 -55
- package/lib/esm/apis/promiseapis.js.map +0 -1
package/lib/cjs/dom.js
CHANGED
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
exports.svgBBox = svgBBox;
|
|
27
37
|
exports.getFontMetrics = getFontMetrics;
|
package/lib/cjs/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/dom.ts"],"names":[],"mappings":"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","sourcesContent":["import { Undefined } from \"./types\";\nimport * as Geom from \"./geom\";\nimport { Browser } from \"./browser\";\n\ndeclare const $: any;\nconst fontMetrics: { [key: string]: any } = {};\n\n/**\n * Calculates the bounding box for an svg element in a consistent way across\n * browsers.\n */\nexport function svgBBox(element: SVGGraphicsElement): Geom.Rect {\n const bbox = Geom.Rect.from(element.getBBox());\n // Due to safari bug which returns really crazy span widths!\n if (Browser.IS_SAFARI()) {\n const clientRect = element.getClientRects()[0];\n if (clientRect) {\n const parentClientRect = element.parentElement?.getBoundingClientRect();\n bbox.x = bbox.x + clientRect.x - (parentClientRect?.x || 0);\n // bbox.y = clientRect.y; // - (parentClientRect?.y || 0);\n bbox.width = clientRect.width;\n bbox.height = clientRect.height;\n }\n }\n return bbox;\n}\n\nexport function getFontMetrics(fontFamily: string, fontSize: number): any {\n if (!(fontFamily in fontMetrics)) {\n fontMetrics[fontFamily] = {};\n }\n const familyMetrics = fontMetrics[fontFamily];\n if (!(fontSize in familyMetrics)) {\n const a = $(\"<div style='position:absolute;top:0;left:0'>M</div>\");\n a.css(\"font-family\", fontFamily);\n a.css(\"font-size\", fontSize);\n $($(document)[0].body).append(a);\n familyMetrics[fontSize] = {\n height: a[0].offsetHeight,\n size: fontSize,\n };\n a.remove();\n }\n return familyMetrics[fontSize];\n}\n\nexport function forEachChild(elem: Element, visitor: (child: Element, index: number) => Undefined<boolean>) {\n const children = elem.children;\n const L = children.length;\n for (let i = 0; i < L; i++) {\n const child = children[i];\n if (visitor(child, i) == false) return false;\n }\n}\n\nexport function forEachNode(elem: Element, visitor: (child: ChildNode, index: number) => Undefined<boolean>) {\n const children = elem.childNodes;\n const L = children.length;\n for (let i = 0; i < L; i++) {\n const child = children[i];\n if (visitor(child, i) == false) return;\n }\n}\n\nexport function forEachAttribute(elem: Element, visitor: (name: string, value: any) => Undefined<boolean>) {\n const nodeNameMap = elem.attributes;\n for (let i = 0; i < nodeNameMap.length; i++) {\n const attrib = nodeNameMap[i];\n if (visitor(attrib.name, attrib.value) == false) return;\n }\n}\n\n/**\n * Processing of different kinds of attributes.\n */\nexport function parseCSSStyles(value: string) {\n const out: any = {};\n if (value && value != null) {\n const values = value.split(\";\");\n values.forEach(function (elem) {\n if (elem.trim().length > 0) {\n const kvpair = elem.split(\":\");\n if (kvpair.length >= 2) {\n const key = kvpair[0].trim();\n const value = kvpair[1].trim();\n if (key.length > 0) {\n out[key] = value;\n }\n }\n }\n });\n }\n return out;\n}\n\nexport function getAttr(elem: Element, attrib: string, ...validators: any) {\n let value = elem.getAttribute(attrib);\n for (let i = 0; i < validators.length; i++) {\n value = validators[i](value);\n }\n return value;\n}\n\nexport function ensureAttr(elem: Element, attrib: string) {\n const value = elem.getAttribute(attrib) || null;\n if (value == null) {\n throw new Error(`Element MUST have Attribute: ${attrib}`);\n }\n return value;\n}\n\nexport function setAttr(elem: Element, name: string, value: any) {\n return elem.setAttribute(name, value);\n}\n\nexport function getAttrOrStyle(elem: Element, attribName: string, cssStyles: any, styleName: string) {\n return elem.getAttribute(attribName) || cssStyles[styleName];\n}\n\nexport function createSVGNode<T extends SVGGraphicsElement>(nodename: string, config?: any): any {\n config = config || {};\n config.ns = \"http://www.w3.org/2000/svg\";\n return createNode(nodename, config) as T;\n}\n\nexport function createNode(nodename: string, config?: any): Element {\n let out;\n config = config || {};\n const ns = config.ns;\n const doc = config.doc || document;\n const attrs = config.attrs || {};\n const text = config.text || \"\";\n const parent = config.parent || null;\n if (ns) out = doc.createElementNS(ns, nodename);\n else out = doc.createElement(nodename);\n if (parent != null) {\n parent.appendChild(out);\n }\n for (const attr in attrs || {}) {\n const value = attrs[attr];\n out.setAttribute(attr, value);\n }\n if (text) {\n out.textContent = text;\n }\n return out;\n}\n\n/**\n * Remove a node from its parent.\n */\nexport function removeNode(node: Node): void {\n node.parentNode?.removeChild(node);\n}\n\nexport function insertAfter(node: Node, ...newNodes: Node[]): boolean {\n const parentNode = node.parentNode;\n if (parentNode == null) return false;\n const nextNode = node.nextSibling;\n if (nextNode == null) {\n for (let i = 0; i < newNodes.length; i++) {\n parentNode.appendChild(newNodes[i]);\n }\n } else {\n for (let i = 0; i < newNodes.length; i++) {\n parentNode.insertBefore(newNodes[i], nextNode);\n }\n }\n return true;\n}\n\nexport function getCSS(elem: Element, attr: string): any {\n return (elem as any).style[attr];\n}\n\nexport function setCSS(elem: Element, attr: string, value: any): void {\n (elem as any).style[attr] = value;\n}\n\nexport function ensureElement(elemOrId: Element | string, root: any = null): Element {\n if (typeof elemOrId === \"string\") {\n if (root == null) root = document;\n return root.querySelector(elemOrId);\n } else {\n return elemOrId;\n }\n}\n\n/*\nexport function setEnabled(elem: Element, enable = true): Element {\n elem.prop(\"disabled\", !enable);\n return elem;\n}\n\nexport function setVisible(elem: Element, show = true): Element {\n if (show) {\n elem.show();\n } else {\n elem.hide();\n }\n return elem;\n}\n\nexport function getcssint(elem: JQuery<HTMLElement>, attrib: string): number{\n return parseInt(elem.css(attrib).replace(/px/, \"\"));\n}\n\nexport function centerElem(elem: JQuery<HTMLElement>, axis: string) {\n const parent = elem.parent();\n const horizPadding =\n getcssint(elem, \"padding-left\") +\n getcssint(elem, \"padding-right\") +\n getcssint(elem, \"margin-left\") +\n getcssint(elem, \"margin-right\") +\n getcssint(parent, \"border-left\") +\n getcssint(parent, \"border-right\");\n const vertPadding =\n getcssint(elem, \"padding-top\") +\n getcssint(elem, \"padding-bottom\") +\n getcssint(elem, \"margin-top\") +\n getcssint(elem, \"margin-bottom\") +\n getcssint(parent, \"border-top\") +\n getcssint(parent, \"border-bottom\");\n const finalHeight: number = (parent.height() as number) - vertPadding;\n const finalWidth: number = (parent.width() as number) - horizPadding;\n if (axis == \"x\") {\n elem.css(\"left\", (finalWidth - (elem.width() as number)) / 2);\n } else if (axis == \"y\") {\n elem.css(\"top\", (finalHeight - (elem.height() as number)) / 2);\n } else {\n elem.css(\"left\", (finalWidth - (elem.width() as number)) / 2);\n elem.css(\"top\", (finalHeight - (elem.height() as number)) / 2);\n }\n}\n\nexport function fillChildComponent(elem: JQuery<HTMLElement>) {\n const parent = elem.parent();\n const horizPadding =\n getcssint(elem, \"padding-left\") +\n getcssint(elem, \"padding-right\") +\n getcssint(elem, \"margin-left\") +\n getcssint(elem, \"margin-right\") +\n getcssint(parent, \"border-left\") +\n getcssint(parent, \"border-right\");\n const vertPadding =\n getcssint(elem, \"padding-top\") +\n getcssint(elem, \"padding-bottom\") +\n getcssint(elem, \"margin-top\") +\n getcssint(elem, \"margin-bottom\") +\n getcssint(parent, \"border-top\") +\n getcssint(parent, \"border-bottom\");\n const finalHeight = (parent.height() as number) - vertPadding;\n const finalWidth = (parent.width() as number) - horizPadding;\n elem.height(finalHeight);\n elem.width(finalWidth);\n}\n*/\n"]}
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/dom.ts"],"names":[],"mappings":"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","sourcesContent":["import { Undefined } from \"./types\";\nimport * as Geom from \"./geom\";\nimport { Browser } from \"./browser\";\n\ndeclare const $: any;\nconst fontMetrics: { [key: string]: any } = {};\n\n/**\n * Calculates the bounding box for an svg element in a consistent way across\n * browsers.\n */\nexport function svgBBox(element: SVGGraphicsElement): Geom.Rect {\n const bbox = Geom.Rect.from(element.getBBox());\n // Due to safari bug which returns really crazy span widths!\n if (Browser.IS_SAFARI()) {\n const clientRect = element.getClientRects()[0];\n if (clientRect) {\n const parentClientRect = element.parentElement?.getBoundingClientRect();\n bbox.x = bbox.x + clientRect.x - (parentClientRect?.x || 0);\n // bbox.y = clientRect.y; // - (parentClientRect?.y || 0);\n bbox.width = clientRect.width;\n bbox.height = clientRect.height;\n }\n }\n return bbox;\n}\n\nexport function getFontMetrics(fontFamily: string, fontSize: number): any {\n if (!(fontFamily in fontMetrics)) {\n fontMetrics[fontFamily] = {};\n }\n const familyMetrics = fontMetrics[fontFamily];\n if (!(fontSize in familyMetrics)) {\n const a = $(\"<div style='position:absolute;top:0;left:0'>M</div>\");\n a.css(\"font-family\", fontFamily);\n a.css(\"font-size\", fontSize);\n $($(document)[0].body).append(a);\n familyMetrics[fontSize] = {\n height: a[0].offsetHeight,\n size: fontSize,\n };\n a.remove();\n }\n return familyMetrics[fontSize];\n}\n\nexport function forEachChild(elem: Element, visitor: (child: Element, index: number) => Undefined<boolean>) {\n const children = elem.children;\n const L = children.length;\n for (let i = 0; i < L; i++) {\n const child = children[i];\n if (visitor(child, i) == false) return false;\n }\n}\n\nexport function forEachNode(elem: Element, visitor: (child: ChildNode, index: number) => Undefined<boolean>) {\n const children = elem.childNodes;\n const L = children.length;\n for (let i = 0; i < L; i++) {\n const child = children[i];\n if (visitor(child, i) == false) return;\n }\n}\n\nexport function forEachAttribute(elem: Element, visitor: (name: string, value: any) => Undefined<boolean>) {\n const nodeNameMap = elem.attributes;\n for (let i = 0; i < nodeNameMap.length; i++) {\n const attrib = nodeNameMap[i];\n if (visitor(attrib.name, attrib.value) == false) return;\n }\n}\n\n/**\n * Processing of different kinds of attributes.\n */\nexport function parseCSSStyles(value: string) {\n const out: any = {};\n if (value && value != null) {\n const values = value.split(\";\");\n values.forEach(function (elem) {\n if (elem.trim().length > 0) {\n const kvpair = elem.split(\":\");\n if (kvpair.length >= 2) {\n const key = kvpair[0].trim();\n const value = kvpair[1].trim();\n if (key.length > 0) {\n out[key] = value;\n }\n }\n }\n });\n }\n return out;\n}\n\nexport function getAttr(elem: Element, attrib: string, ...validators: any) {\n let value = elem.getAttribute(attrib);\n for (let i = 0; i < validators.length; i++) {\n value = validators[i](value);\n }\n return value;\n}\n\nexport function ensureAttr(elem: Element, attrib: string) {\n const value = elem.getAttribute(attrib) || null;\n if (value == null) {\n throw new Error(`Element MUST have Attribute: ${attrib}`);\n }\n return value;\n}\n\nexport function setAttr(elem: Element, name: string, value: any) {\n return elem.setAttribute(name, value);\n}\n\nexport function getAttrOrStyle(elem: Element, attribName: string, cssStyles: any, styleName: string) {\n return elem.getAttribute(attribName) || cssStyles[styleName];\n}\n\nexport function createSVGNode<T extends SVGGraphicsElement>(nodename: string, config?: any): any {\n config = config || {};\n config.ns = \"http://www.w3.org/2000/svg\";\n return createNode(nodename, config) as T;\n}\n\nexport function createNode(nodename: string, config?: any): Element {\n let out;\n config = config || {};\n const ns = config.ns;\n const doc = config.doc || document;\n const attrs = config.attrs || {};\n const text = config.text || \"\";\n const parent = config.parent || null;\n if (ns) out = doc.createElementNS(ns, nodename);\n else out = doc.createElement(nodename);\n if (parent != null) {\n parent.appendChild(out);\n }\n for (const attr in attrs || {}) {\n const value = attrs[attr];\n out.setAttribute(attr, value);\n }\n if (text) {\n out.textContent = text;\n }\n return out;\n}\n\n/**\n * Remove a node from its parent.\n */\nexport function removeNode(node: Node): void {\n node.parentNode?.removeChild(node);\n}\n\nexport function insertAfter(node: Node, ...newNodes: Node[]): boolean {\n const parentNode = node.parentNode;\n if (parentNode == null) return false;\n const nextNode = node.nextSibling;\n if (nextNode == null) {\n for (let i = 0; i < newNodes.length; i++) {\n parentNode.appendChild(newNodes[i]);\n }\n } else {\n for (let i = 0; i < newNodes.length; i++) {\n parentNode.insertBefore(newNodes[i], nextNode);\n }\n }\n return true;\n}\n\nexport function getCSS(elem: Element, attr: string): any {\n return (elem as any).style[attr];\n}\n\nexport function setCSS(elem: Element, attr: string, value: any): void {\n (elem as any).style[attr] = value;\n}\n\nexport function ensureElement(elemOrId: Element | string, root: any = null): Element {\n if (typeof elemOrId === \"string\") {\n if (root == null) root = document;\n return root.querySelector(elemOrId);\n } else {\n return elemOrId;\n }\n}\n\n/*\nexport function setEnabled(elem: Element, enable = true): Element {\n elem.prop(\"disabled\", !enable);\n return elem;\n}\n\nexport function setVisible(elem: Element, show = true): Element {\n if (show) {\n elem.show();\n } else {\n elem.hide();\n }\n return elem;\n}\n\nexport function getcssint(elem: JQuery<HTMLElement>, attrib: string): number{\n return parseInt(elem.css(attrib).replace(/px/, \"\"));\n}\n\nexport function centerElem(elem: JQuery<HTMLElement>, axis: string) {\n const parent = elem.parent();\n const horizPadding =\n getcssint(elem, \"padding-left\") +\n getcssint(elem, \"padding-right\") +\n getcssint(elem, \"margin-left\") +\n getcssint(elem, \"margin-right\") +\n getcssint(parent, \"border-left\") +\n getcssint(parent, \"border-right\");\n const vertPadding =\n getcssint(elem, \"padding-top\") +\n getcssint(elem, \"padding-bottom\") +\n getcssint(elem, \"margin-top\") +\n getcssint(elem, \"margin-bottom\") +\n getcssint(parent, \"border-top\") +\n getcssint(parent, \"border-bottom\");\n const finalHeight: number = (parent.height() as number) - vertPadding;\n const finalWidth: number = (parent.width() as number) - horizPadding;\n if (axis == \"x\") {\n elem.css(\"left\", (finalWidth - (elem.width() as number)) / 2);\n } else if (axis == \"y\") {\n elem.css(\"top\", (finalHeight - (elem.height() as number)) / 2);\n } else {\n elem.css(\"left\", (finalWidth - (elem.width() as number)) / 2);\n elem.css(\"top\", (finalHeight - (elem.height() as number)) / 2);\n }\n}\n\nexport function fillChildComponent(elem: JQuery<HTMLElement>) {\n const parent = elem.parent();\n const horizPadding =\n getcssint(elem, \"padding-left\") +\n getcssint(elem, \"padding-right\") +\n getcssint(elem, \"margin-left\") +\n getcssint(elem, \"margin-right\") +\n getcssint(parent, \"border-left\") +\n getcssint(parent, \"border-right\");\n const vertPadding =\n getcssint(elem, \"padding-top\") +\n getcssint(elem, \"padding-bottom\") +\n getcssint(elem, \"margin-top\") +\n getcssint(elem, \"margin-bottom\") +\n getcssint(parent, \"border-top\") +\n getcssint(parent, \"border-bottom\");\n const finalHeight = (parent.height() as number) - vertPadding;\n const finalWidth = (parent.width() as number) - horizPadding;\n elem.height(finalHeight);\n elem.width(finalWidth);\n}\n*/\n"]}
|
package/lib/cjs/index.d.ts
CHANGED
package/lib/cjs/index.js
CHANGED
|
@@ -18,17 +18,26 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
18
18
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
19
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
20
|
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.Browser = exports.Timer = exports.Scrolling = exports.DAL = exports.Time = exports.Num = exports.Geom = exports.DOM = exports.Streams = exports.Misc = exports.Lists = exports.Events = exports.Constants =
|
|
39
|
+
exports.Browser = exports.Timer = exports.Scrolling = exports.DAL = exports.Time = exports.Num = exports.Geom = exports.DOM = exports.Streams = exports.Misc = exports.Lists = exports.Events = exports.Constants = void 0;
|
|
30
40
|
__exportStar(require("./types"), exports);
|
|
31
|
-
exports.Api = __importStar(require("./apis/index"));
|
|
32
41
|
exports.Constants = __importStar(require("./constants"));
|
|
33
42
|
exports.Events = __importStar(require("./comms/events"));
|
|
34
43
|
exports.Lists = __importStar(require("./list"));
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,yDAAyC;AACzC,yDAAyC;AACzC,gDAAgC;AAChC,+CAA+B;AAC/B,qDAAqC;AACrC,6CAA6B;AAC7B,+CAA+B;AAC/B,qDAAqC;AACrC,oDAAoC;AACpC,6CAA6B;AAC7B,yDAAyC;AACzC,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,qCAAoC;AAA3B,kGAAA,OAAO,OAAA","sourcesContent":["export * from \"./types\";\nexport * as Constants from \"./constants\";\nexport * as Events from \"./comms/events\";\nexport * as Lists from \"./list\";\nexport * as Misc from \"./misc\";\nexport * as Streams from \"./streams\";\nexport * as DOM from \"./dom\";\nexport * as Geom from \"./geom\";\nexport * as Num from \"./numberutils\";\nexport * as Time from \"./timeutils\";\nexport * as DAL from \"./dal\";\nexport * as Scrolling from \"./scrolling\";\nexport { Timer } from \"./timer\";\nexport { Browser } from \"./browser\";\n"]}
|
package/lib/cjs/scrolling.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export declare class ScrollGroup {
|
|
2
2
|
scrollStopDelay: number;
|
|
3
|
-
debugLogs: boolean;
|
|
4
3
|
private scrollables;
|
|
5
4
|
private isScrolling;
|
|
6
5
|
private _focussedScrollable;
|
|
7
|
-
constructor(scrollStopDelay?: number
|
|
6
|
+
constructor(scrollStopDelay?: number);
|
|
8
7
|
add(scrollable: Scrollable): void;
|
|
9
8
|
remove(scrollable: Scrollable): void;
|
|
10
9
|
clear(): void;
|
package/lib/cjs/scrolling.js
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HTMLElementScrollable = exports.ScrollGroup = void 0;
|
|
4
4
|
class ScrollGroup {
|
|
5
|
-
constructor(scrollStopDelay = 50
|
|
5
|
+
constructor(scrollStopDelay = 50) {
|
|
6
6
|
this.scrollStopDelay = scrollStopDelay;
|
|
7
|
-
this.debugLogs = debugLogs;
|
|
8
7
|
this.scrollables = [];
|
|
9
8
|
this.isScrolling = false;
|
|
10
9
|
this._focussedScrollable = null;
|
package/lib/cjs/scrolling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrolling.js","sourceRoot":"","sources":["../../src/scrolling.ts"],"names":[],"mappings":"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","sourcesContent":["import { Timer } from \"./timer\";\n\n/**\n * A scroll group allows one to \"connect\" multiple elements to be\n * scrolled synchronously.\n *\n * A typical usecase would be a div showing lines for a code editor\n * and one that shows a line numbers for a code editor.\n *\n * We could also have recursive relationships where elements in\n * a scroll group are connected to other items outside the scroll\n * group and the would form a super scroll group. An example would\n * two UI components A and B that\n * a scroll group is synchronized\n */\n\nexport class ScrollGroup {\n private scrollables: Scrollable[] = [];\n private isScrolling = false;\n private _focussedScrollable: Scrollable | null = null;\n\n constructor(\n public scrollStopDelay = 50,\n public debugLogs = false,\n ) {}\n\n add(scrollable: Scrollable): void {\n // skip if already exists\n const index = this.scrollables.indexOf(scrollable);\n if (index >= 0) return;\n scrollable.attach(this);\n this.scrollables.push(scrollable);\n }\n\n remove(scrollable: Scrollable): void {\n const index = this.scrollables.indexOf(scrollable);\n if (index < 0) return;\n this.detachAtIndex(index);\n }\n\n clear(): void {\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n this.detachAtIndex(i);\n }\n }\n\n detachAtIndex(index: number): Scrollable {\n const scrollable = this.scrollables[index];\n scrollable.detach();\n this.scrollables.splice(index, 1);\n return scrollable;\n }\n\n syncFollowers(source: Scrollable): void {\n if (this.isScrolling) return;\n this.isScrolling = true;\n\n const remScroll = Math.max(1, source.scrollSize - source.pageSize);\n const scrollPct = source.scrollOffset / remScroll;\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n const other = this.scrollables[i];\n if (other != source) {\n // const remOther = Math.max(1, other.scrollSize - other.pageSize);\n other.scrollOffset = scrollPct * (other.scrollSize - other.pageSize);\n }\n }\n\n setTimeout(() => {\n this.isScrolling = false;\n }, this.scrollStopDelay);\n }\n}\n\nexport interface Scrollable {\n // Set or get the current scroll offset\n scrollOffset: number;\n\n // Get total scroll size\n readonly scrollSize: number;\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n readonly pageSize: number;\n\n // Detaches a scrollable from further use\n attach(scrollGroup: ScrollGroup): void;\n detach(): void;\n}\n\n/**\n * A wrapper for html elements that can be scrolled.\n */\nexport class HTMLElementScrollable implements Scrollable {\n private _scrollGroup: ScrollGroup | null = null;\n readonly element: HTMLElement;\n private vertical = true;\n private onScrollEventListener = this.onScrollEvent.bind(this) as EventListener;\n private onMouseEventListener = this.onMouseEvent.bind(this) as EventListener;\n private onTouchEventListener = this.onTouchEvent.bind(this) as EventListener;\n\n constructor(element: HTMLElement, vertical = true) {\n this.element = element;\n this.vertical = vertical;\n }\n\n attach(scrollGroup: ScrollGroup): void {\n if ((this.element as any).scrollGroup == scrollGroup) {\n return;\n } else if ((this.element as any).scrollGroup) {\n throw new Error(\"Detach element from ScrollGroup first.\");\n }\n (this.element as any).scrollGroup = scrollGroup;\n this._scrollGroup = scrollGroup;\n this.element.addEventListener(\"scroll\", this.onScrollEventListener);\n this.element.addEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.addEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n detach(): void {\n (this.element as any).scrollGroup = null;\n this.element.removeEventListener(\"scroll\", this.onScrollEventListener);\n this.element.removeEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.removeEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n get scrollGroup(): ScrollGroup | null {\n return this._scrollGroup;\n }\n\n // Set or get the current scroll offset\n get scrollOffset(): number {\n if (this.vertical) {\n return this.element.scrollTop;\n } else {\n return this.element.scrollLeft;\n }\n }\n\n set scrollOffset(value: number) {\n if (this.vertical) {\n this.element.scrollTop = value;\n } else {\n this.element.scrollLeft = value;\n }\n }\n\n // Get total scroll size\n get scrollSize(): number {\n if (this.vertical) {\n return this.element.scrollHeight;\n } else {\n return this.element.scrollWidth;\n }\n }\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n get pageSize(): number {\n if (this.vertical) {\n return this.element.clientHeight;\n } else {\n return this.element.clientWidth;\n }\n }\n\n onScrollEvent(event: Event): void {\n /**\n * Scroll events will be sent for all elements that are scrolling\n * either programatically or invoked via gestures.\n * It is not possible to know which of these it is and the problem\n * with this is that by handling all events it could result in an\n * infinite loop kicking each other off.\n *\n * So we need a way to be able differentiate scroll events between\n * those that were the \"source\" and those that are \"followers\".\n * We can try a few strategies here:\n *\n * 1. Take the first scroll event's target as the source\n * and kick off a timer to check when scroll events stop. As long\n * as scroll events come from this source we update followers.\n */\n this.scrollGroup?.syncFollowers(this);\n }\n\n onTouchEvent(event: TouchEvent): void {\n // console.log(`Touched Eeent(${event.type}): `, event);\n if (event.type == \"touchstart\" && this.scrollGroup) {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n\n onMouseEvent(event: MouseEvent): void {\n // console.log(`Mouse Event(${event.type}): `, event);\n const element = event.target;\n if (this.scrollGroup) {\n if (event.type == \"mouseenter\") {\n // this.scrollGroup.focussedScrollable = this;\n } else if (event.type == \"mouseleave\") {\n // this.scrollGroup.focussedScrollable = null;\n } else if (event.type == \"mousedown\") {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scrolling.js","sourceRoot":"","sources":["../../src/scrolling.ts"],"names":[],"mappings":"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","sourcesContent":["import { Timer } from \"./timer\";\n\n/**\n * A scroll group allows one to \"connect\" multiple elements to be\n * scrolled synchronously.\n *\n * A typical usecase would be a div showing lines for a code editor\n * and one that shows a line numbers for a code editor.\n *\n * We could also have recursive relationships where elements in\n * a scroll group are connected to other items outside the scroll\n * group and the would form a super scroll group. An example would\n * two UI components A and B that\n * a scroll group is synchronized\n */\n\nexport class ScrollGroup {\n private scrollables: Scrollable[] = [];\n private isScrolling = false;\n private _focussedScrollable: Scrollable | null = null;\n\n constructor(public scrollStopDelay = 50) {}\n\n add(scrollable: Scrollable): void {\n // skip if already exists\n const index = this.scrollables.indexOf(scrollable);\n if (index >= 0) return;\n scrollable.attach(this);\n this.scrollables.push(scrollable);\n }\n\n remove(scrollable: Scrollable): void {\n const index = this.scrollables.indexOf(scrollable);\n if (index < 0) return;\n this.detachAtIndex(index);\n }\n\n clear(): void {\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n this.detachAtIndex(i);\n }\n }\n\n detachAtIndex(index: number): Scrollable {\n const scrollable = this.scrollables[index];\n scrollable.detach();\n this.scrollables.splice(index, 1);\n return scrollable;\n }\n\n syncFollowers(source: Scrollable): void {\n if (this.isScrolling) return;\n this.isScrolling = true;\n\n const remScroll = Math.max(1, source.scrollSize - source.pageSize);\n const scrollPct = source.scrollOffset / remScroll;\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n const other = this.scrollables[i];\n if (other != source) {\n // const remOther = Math.max(1, other.scrollSize - other.pageSize);\n other.scrollOffset = scrollPct * (other.scrollSize - other.pageSize);\n }\n }\n\n setTimeout(() => {\n this.isScrolling = false;\n }, this.scrollStopDelay);\n }\n}\n\nexport interface Scrollable {\n // Set or get the current scroll offset\n scrollOffset: number;\n\n // Get total scroll size\n readonly scrollSize: number;\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n readonly pageSize: number;\n\n // Detaches a scrollable from further use\n attach(scrollGroup: ScrollGroup): void;\n detach(): void;\n}\n\n/**\n * A wrapper for html elements that can be scrolled.\n */\nexport class HTMLElementScrollable implements Scrollable {\n private _scrollGroup: ScrollGroup | null = null;\n readonly element: HTMLElement;\n private vertical = true;\n private onScrollEventListener = this.onScrollEvent.bind(this) as EventListener;\n private onMouseEventListener = this.onMouseEvent.bind(this) as EventListener;\n private onTouchEventListener = this.onTouchEvent.bind(this) as EventListener;\n\n constructor(element: HTMLElement, vertical = true) {\n this.element = element;\n this.vertical = vertical;\n }\n\n attach(scrollGroup: ScrollGroup): void {\n if ((this.element as any).scrollGroup == scrollGroup) {\n return;\n } else if ((this.element as any).scrollGroup) {\n throw new Error(\"Detach element from ScrollGroup first.\");\n }\n (this.element as any).scrollGroup = scrollGroup;\n this._scrollGroup = scrollGroup;\n this.element.addEventListener(\"scroll\", this.onScrollEventListener);\n this.element.addEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.addEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n detach(): void {\n (this.element as any).scrollGroup = null;\n this.element.removeEventListener(\"scroll\", this.onScrollEventListener);\n this.element.removeEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.removeEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n get scrollGroup(): ScrollGroup | null {\n return this._scrollGroup;\n }\n\n // Set or get the current scroll offset\n get scrollOffset(): number {\n if (this.vertical) {\n return this.element.scrollTop;\n } else {\n return this.element.scrollLeft;\n }\n }\n\n set scrollOffset(value: number) {\n if (this.vertical) {\n this.element.scrollTop = value;\n } else {\n this.element.scrollLeft = value;\n }\n }\n\n // Get total scroll size\n get scrollSize(): number {\n if (this.vertical) {\n return this.element.scrollHeight;\n } else {\n return this.element.scrollWidth;\n }\n }\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n get pageSize(): number {\n if (this.vertical) {\n return this.element.clientHeight;\n } else {\n return this.element.clientWidth;\n }\n }\n\n onScrollEvent(event: Event): void {\n /**\n * Scroll events will be sent for all elements that are scrolling\n * either programatically or invoked via gestures.\n * It is not possible to know which of these it is and the problem\n * with this is that by handling all events it could result in an\n * infinite loop kicking each other off.\n *\n * So we need a way to be able differentiate scroll events between\n * those that were the \"source\" and those that are \"followers\".\n * We can try a few strategies here:\n *\n * 1. Take the first scroll event's target as the source\n * and kick off a timer to check when scroll events stop. As long\n * as scroll events come from this source we update followers.\n */\n this.scrollGroup?.syncFollowers(this);\n }\n\n onTouchEvent(event: TouchEvent): void {\n // console.log(`Touched Eeent(${event.type}): `, event);\n if (event.type == \"touchstart\" && this.scrollGroup) {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n\n onMouseEvent(event: MouseEvent): void {\n // console.log(`Mouse Event(${event.type}): `, event);\n const element = event.target;\n if (this.scrollGroup) {\n if (event.type == \"mouseenter\") {\n // this.scrollGroup.focussedScrollable = this;\n } else if (event.type == \"mouseleave\") {\n // this.scrollGroup.focussedScrollable = null;\n } else if (event.type == \"mousedown\") {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n }\n}\n"]}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;6BACG,aAAa;wBAA5B,SAAS;0BACG,gBAAgB;qBAA5B,MAAM;yBACK,QAAQ;oBAAnB,KAAK;wBACK,QAAQ;mBAAlB,IAAI;2BACS,WAAW;sBAAxB,OAAO;uBACE,OAAO;kBAAhB,GAAG;wBACO,QAAQ;mBAAlB,IAAI;uBACK,eAAe;kBAAxB,GAAG;wBACO,aAAa;mBAAvB,IAAI;uBACK,OAAO;kBAAhB,GAAG;6BACY,aAAa;wBAA5B,SAAS;AACrB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export * from \"./types\";\nexport * as Constants from \"./constants\";\nexport * as Events from \"./comms/events\";\nexport * as Lists from \"./list\";\nexport * as Misc from \"./misc\";\nexport * as Streams from \"./streams\";\nexport * as DOM from \"./dom\";\nexport * as Geom from \"./geom\";\nexport * as Num from \"./numberutils\";\nexport * as Time from \"./timeutils\";\nexport * as DAL from \"./dal\";\nexport * as Scrolling from \"./scrolling\";\nexport { Timer } from \"./timer\";\nexport { Browser } from \"./browser\";\n"]}
|
package/lib/esm/scrolling.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export declare class ScrollGroup {
|
|
2
2
|
scrollStopDelay: number;
|
|
3
|
-
debugLogs: boolean;
|
|
4
3
|
private scrollables;
|
|
5
4
|
private isScrolling;
|
|
6
5
|
private _focussedScrollable;
|
|
7
|
-
constructor(scrollStopDelay?: number
|
|
6
|
+
constructor(scrollStopDelay?: number);
|
|
8
7
|
add(scrollable: Scrollable): void;
|
|
9
8
|
remove(scrollable: Scrollable): void;
|
|
10
9
|
clear(): void;
|
package/lib/esm/scrolling.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export class ScrollGroup {
|
|
2
|
-
constructor(scrollStopDelay = 50
|
|
2
|
+
constructor(scrollStopDelay = 50) {
|
|
3
3
|
this.scrollStopDelay = scrollStopDelay;
|
|
4
|
-
this.debugLogs = debugLogs;
|
|
5
4
|
this.scrollables = [];
|
|
6
5
|
this.isScrolling = false;
|
|
7
6
|
this._focussedScrollable = null;
|
package/lib/esm/scrolling.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrolling.js","sourceRoot":"","sources":["../../src/scrolling.ts"],"names":[],"mappings":"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","sourcesContent":["import { Timer } from \"./timer\";\n\n/**\n * A scroll group allows one to \"connect\" multiple elements to be\n * scrolled synchronously.\n *\n * A typical usecase would be a div showing lines for a code editor\n * and one that shows a line numbers for a code editor.\n *\n * We could also have recursive relationships where elements in\n * a scroll group are connected to other items outside the scroll\n * group and the would form a super scroll group. An example would\n * two UI components A and B that\n * a scroll group is synchronized\n */\n\nexport class ScrollGroup {\n private scrollables: Scrollable[] = [];\n private isScrolling = false;\n private _focussedScrollable: Scrollable | null = null;\n\n constructor(\n public scrollStopDelay = 50,\n public debugLogs = false,\n ) {}\n\n add(scrollable: Scrollable): void {\n // skip if already exists\n const index = this.scrollables.indexOf(scrollable);\n if (index >= 0) return;\n scrollable.attach(this);\n this.scrollables.push(scrollable);\n }\n\n remove(scrollable: Scrollable): void {\n const index = this.scrollables.indexOf(scrollable);\n if (index < 0) return;\n this.detachAtIndex(index);\n }\n\n clear(): void {\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n this.detachAtIndex(i);\n }\n }\n\n detachAtIndex(index: number): Scrollable {\n const scrollable = this.scrollables[index];\n scrollable.detach();\n this.scrollables.splice(index, 1);\n return scrollable;\n }\n\n syncFollowers(source: Scrollable): void {\n if (this.isScrolling) return;\n this.isScrolling = true;\n\n const remScroll = Math.max(1, source.scrollSize - source.pageSize);\n const scrollPct = source.scrollOffset / remScroll;\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n const other = this.scrollables[i];\n if (other != source) {\n // const remOther = Math.max(1, other.scrollSize - other.pageSize);\n other.scrollOffset = scrollPct * (other.scrollSize - other.pageSize);\n }\n }\n\n setTimeout(() => {\n this.isScrolling = false;\n }, this.scrollStopDelay);\n }\n}\n\nexport interface Scrollable {\n // Set or get the current scroll offset\n scrollOffset: number;\n\n // Get total scroll size\n readonly scrollSize: number;\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n readonly pageSize: number;\n\n // Detaches a scrollable from further use\n attach(scrollGroup: ScrollGroup): void;\n detach(): void;\n}\n\n/**\n * A wrapper for html elements that can be scrolled.\n */\nexport class HTMLElementScrollable implements Scrollable {\n private _scrollGroup: ScrollGroup | null = null;\n readonly element: HTMLElement;\n private vertical = true;\n private onScrollEventListener = this.onScrollEvent.bind(this) as EventListener;\n private onMouseEventListener = this.onMouseEvent.bind(this) as EventListener;\n private onTouchEventListener = this.onTouchEvent.bind(this) as EventListener;\n\n constructor(element: HTMLElement, vertical = true) {\n this.element = element;\n this.vertical = vertical;\n }\n\n attach(scrollGroup: ScrollGroup): void {\n if ((this.element as any).scrollGroup == scrollGroup) {\n return;\n } else if ((this.element as any).scrollGroup) {\n throw new Error(\"Detach element from ScrollGroup first.\");\n }\n (this.element as any).scrollGroup = scrollGroup;\n this._scrollGroup = scrollGroup;\n this.element.addEventListener(\"scroll\", this.onScrollEventListener);\n this.element.addEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.addEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n detach(): void {\n (this.element as any).scrollGroup = null;\n this.element.removeEventListener(\"scroll\", this.onScrollEventListener);\n this.element.removeEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.removeEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n get scrollGroup(): ScrollGroup | null {\n return this._scrollGroup;\n }\n\n // Set or get the current scroll offset\n get scrollOffset(): number {\n if (this.vertical) {\n return this.element.scrollTop;\n } else {\n return this.element.scrollLeft;\n }\n }\n\n set scrollOffset(value: number) {\n if (this.vertical) {\n this.element.scrollTop = value;\n } else {\n this.element.scrollLeft = value;\n }\n }\n\n // Get total scroll size\n get scrollSize(): number {\n if (this.vertical) {\n return this.element.scrollHeight;\n } else {\n return this.element.scrollWidth;\n }\n }\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n get pageSize(): number {\n if (this.vertical) {\n return this.element.clientHeight;\n } else {\n return this.element.clientWidth;\n }\n }\n\n onScrollEvent(event: Event): void {\n /**\n * Scroll events will be sent for all elements that are scrolling\n * either programatically or invoked via gestures.\n * It is not possible to know which of these it is and the problem\n * with this is that by handling all events it could result in an\n * infinite loop kicking each other off.\n *\n * So we need a way to be able differentiate scroll events between\n * those that were the \"source\" and those that are \"followers\".\n * We can try a few strategies here:\n *\n * 1. Take the first scroll event's target as the source\n * and kick off a timer to check when scroll events stop. As long\n * as scroll events come from this source we update followers.\n */\n this.scrollGroup?.syncFollowers(this);\n }\n\n onTouchEvent(event: TouchEvent): void {\n // console.log(`Touched Eeent(${event.type}): `, event);\n if (event.type == \"touchstart\" && this.scrollGroup) {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n\n onMouseEvent(event: MouseEvent): void {\n // console.log(`Mouse Event(${event.type}): `, event);\n const element = event.target;\n if (this.scrollGroup) {\n if (event.type == \"mouseenter\") {\n // this.scrollGroup.focussedScrollable = this;\n } else if (event.type == \"mouseleave\") {\n // this.scrollGroup.focussedScrollable = null;\n } else if (event.type == \"mousedown\") {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scrolling.js","sourceRoot":"","sources":["../../src/scrolling.ts"],"names":[],"mappings":"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","sourcesContent":["import { Timer } from \"./timer\";\n\n/**\n * A scroll group allows one to \"connect\" multiple elements to be\n * scrolled synchronously.\n *\n * A typical usecase would be a div showing lines for a code editor\n * and one that shows a line numbers for a code editor.\n *\n * We could also have recursive relationships where elements in\n * a scroll group are connected to other items outside the scroll\n * group and the would form a super scroll group. An example would\n * two UI components A and B that\n * a scroll group is synchronized\n */\n\nexport class ScrollGroup {\n private scrollables: Scrollable[] = [];\n private isScrolling = false;\n private _focussedScrollable: Scrollable | null = null;\n\n constructor(public scrollStopDelay = 50) {}\n\n add(scrollable: Scrollable): void {\n // skip if already exists\n const index = this.scrollables.indexOf(scrollable);\n if (index >= 0) return;\n scrollable.attach(this);\n this.scrollables.push(scrollable);\n }\n\n remove(scrollable: Scrollable): void {\n const index = this.scrollables.indexOf(scrollable);\n if (index < 0) return;\n this.detachAtIndex(index);\n }\n\n clear(): void {\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n this.detachAtIndex(i);\n }\n }\n\n detachAtIndex(index: number): Scrollable {\n const scrollable = this.scrollables[index];\n scrollable.detach();\n this.scrollables.splice(index, 1);\n return scrollable;\n }\n\n syncFollowers(source: Scrollable): void {\n if (this.isScrolling) return;\n this.isScrolling = true;\n\n const remScroll = Math.max(1, source.scrollSize - source.pageSize);\n const scrollPct = source.scrollOffset / remScroll;\n for (let i = this.scrollables.length - 1; i >= 0; i--) {\n const other = this.scrollables[i];\n if (other != source) {\n // const remOther = Math.max(1, other.scrollSize - other.pageSize);\n other.scrollOffset = scrollPct * (other.scrollSize - other.pageSize);\n }\n }\n\n setTimeout(() => {\n this.isScrolling = false;\n }, this.scrollStopDelay);\n }\n}\n\nexport interface Scrollable {\n // Set or get the current scroll offset\n scrollOffset: number;\n\n // Get total scroll size\n readonly scrollSize: number;\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n readonly pageSize: number;\n\n // Detaches a scrollable from further use\n attach(scrollGroup: ScrollGroup): void;\n detach(): void;\n}\n\n/**\n * A wrapper for html elements that can be scrolled.\n */\nexport class HTMLElementScrollable implements Scrollable {\n private _scrollGroup: ScrollGroup | null = null;\n readonly element: HTMLElement;\n private vertical = true;\n private onScrollEventListener = this.onScrollEvent.bind(this) as EventListener;\n private onMouseEventListener = this.onMouseEvent.bind(this) as EventListener;\n private onTouchEventListener = this.onTouchEvent.bind(this) as EventListener;\n\n constructor(element: HTMLElement, vertical = true) {\n this.element = element;\n this.vertical = vertical;\n }\n\n attach(scrollGroup: ScrollGroup): void {\n if ((this.element as any).scrollGroup == scrollGroup) {\n return;\n } else if ((this.element as any).scrollGroup) {\n throw new Error(\"Detach element from ScrollGroup first.\");\n }\n (this.element as any).scrollGroup = scrollGroup;\n this._scrollGroup = scrollGroup;\n this.element.addEventListener(\"scroll\", this.onScrollEventListener);\n this.element.addEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.addEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.addEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n detach(): void {\n (this.element as any).scrollGroup = null;\n this.element.removeEventListener(\"scroll\", this.onScrollEventListener);\n this.element.removeEventListener(\"mousedown\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseenter\", this.onMouseEventListener);\n this.element.removeEventListener(\"mouseleave\", this.onMouseEventListener);\n this.element.removeEventListener(\"touchstart\", this.onTouchEventListener);\n }\n\n get scrollGroup(): ScrollGroup | null {\n return this._scrollGroup;\n }\n\n // Set or get the current scroll offset\n get scrollOffset(): number {\n if (this.vertical) {\n return this.element.scrollTop;\n } else {\n return this.element.scrollLeft;\n }\n }\n\n set scrollOffset(value: number) {\n if (this.vertical) {\n this.element.scrollTop = value;\n } else {\n this.element.scrollLeft = value;\n }\n }\n\n // Get total scroll size\n get scrollSize(): number {\n if (this.vertical) {\n return this.element.scrollHeight;\n } else {\n return this.element.scrollWidth;\n }\n }\n\n // Size of the current \"page\".\n // Our scrollOffset + pageSize is always < scrollSize\n get pageSize(): number {\n if (this.vertical) {\n return this.element.clientHeight;\n } else {\n return this.element.clientWidth;\n }\n }\n\n onScrollEvent(event: Event): void {\n /**\n * Scroll events will be sent for all elements that are scrolling\n * either programatically or invoked via gestures.\n * It is not possible to know which of these it is and the problem\n * with this is that by handling all events it could result in an\n * infinite loop kicking each other off.\n *\n * So we need a way to be able differentiate scroll events between\n * those that were the \"source\" and those that are \"followers\".\n * We can try a few strategies here:\n *\n * 1. Take the first scroll event's target as the source\n * and kick off a timer to check when scroll events stop. As long\n * as scroll events come from this source we update followers.\n */\n this.scrollGroup?.syncFollowers(this);\n }\n\n onTouchEvent(event: TouchEvent): void {\n // console.log(`Touched Eeent(${event.type}): `, event);\n if (event.type == \"touchstart\" && this.scrollGroup) {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n\n onMouseEvent(event: MouseEvent): void {\n // console.log(`Mouse Event(${event.type}): `, event);\n const element = event.target;\n if (this.scrollGroup) {\n if (event.type == \"mouseenter\") {\n // this.scrollGroup.focussedScrollable = this;\n } else if (event.type == \"mouseleave\") {\n // this.scrollGroup.focussedScrollable = null;\n } else if (event.type == \"mousedown\") {\n // this.scrollGroup.focussedScrollable = this;\n // this.setLeadScrollable(this.focussedElement);\n }\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panyam/tsutils",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"author": "Sriram Panyam",
|
|
5
5
|
"description": "Some basic TS utils for personal use",
|
|
6
6
|
"homepage": "https://github.com/panyam/tsutils#readme",
|
|
@@ -79,6 +79,5 @@
|
|
|
79
79
|
"typescript-tslint-plugin": "^1.0.2"
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
|
-
"axios": "^1.7.7"
|
|
83
82
|
}
|
|
84
83
|
}
|
package/lib/cjs/apis/evapis.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { EventHub } from "../comms/events";
|
|
2
|
-
import { Nullable } from "../types";
|
|
3
|
-
export declare enum ResourceApiEvent {
|
|
4
|
-
LIST_STARTED = "LIST_STARTED",
|
|
5
|
-
LIST_FINISHED = "LIST_FINISHED",
|
|
6
|
-
LIST_FAILED = "LIST_FAILED",
|
|
7
|
-
CREATE_STARTED = "CREATE_STARTED",
|
|
8
|
-
CREATE_FINISHED = "CREATE_FINISHED",
|
|
9
|
-
CREATE_FAILED = "CREATE_FAILED",
|
|
10
|
-
BATCH_GET_STARTED = "BATCH_GET_STARTED",
|
|
11
|
-
BATCH_GET_FINISHED = "BATCH_GET_FINISHED",
|
|
12
|
-
BATCH_GET_FAILED = "BATCH_GET_FAILED",
|
|
13
|
-
GET_STARTED = "GET_STARTED",
|
|
14
|
-
GET_FINISHED = "GET_FINISHED",
|
|
15
|
-
GET_FAILED = "GET_FAILED",
|
|
16
|
-
DELETE_STARTED = "DELETE_STARTED",
|
|
17
|
-
DELETE_FINISHED = "DELETE_FINISHED",
|
|
18
|
-
DELETE_FAILED = "DELETE_FAILED",
|
|
19
|
-
UPDATE_STARTED = "UPDATE_STARTED",
|
|
20
|
-
UPDATE_FINISHED = "UPDATE_FINISHED",
|
|
21
|
-
UPDATE_FAILED = "UPDATE_FAILED"
|
|
22
|
-
}
|
|
23
|
-
export declare abstract class ResourceEvApi<ResType> extends EventHub {
|
|
24
|
-
abstract urlForGet(resId: string, params: any): string;
|
|
25
|
-
abstract urlForBatchGet(resIds: string[]): string;
|
|
26
|
-
abstract urlForDelete(resId: string, params: any): string;
|
|
27
|
-
abstract urlForUpdate(resId: string, params: any): string;
|
|
28
|
-
abstract urlForList(params: any): string;
|
|
29
|
-
abstract urlForCreate(params: any): string;
|
|
30
|
-
abstract processListResponse(response: Response): ResType[];
|
|
31
|
-
abstract processGetResponse(response: Response): Nullable<ResType>;
|
|
32
|
-
abstract processDeleteResponse(response: Response): boolean;
|
|
33
|
-
abstract processUpdateResponse(response: Response): ResType;
|
|
34
|
-
abstract processCreateResponse(response: Response): ResType;
|
|
35
|
-
abstract processUpdateParams(params: any): any;
|
|
36
|
-
abstract processCreateParams(params: any): any;
|
|
37
|
-
create(params: any): void;
|
|
38
|
-
batchGet(...resIds: string[]): void;
|
|
39
|
-
get(resId: string, params: any): void;
|
|
40
|
-
list(params: any): void;
|
|
41
|
-
update(resId: string, params: any): void;
|
|
42
|
-
delete(resId: string, params: any): void;
|
|
43
|
-
}
|
package/lib/cjs/apis/evapis.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResourceEvApi = exports.ResourceApiEvent = void 0;
|
|
4
|
-
const events_1 = require("../comms/events");
|
|
5
|
-
const axios = require("axios").default;
|
|
6
|
-
var ResourceApiEvent;
|
|
7
|
-
(function (ResourceApiEvent) {
|
|
8
|
-
ResourceApiEvent["LIST_STARTED"] = "LIST_STARTED";
|
|
9
|
-
ResourceApiEvent["LIST_FINISHED"] = "LIST_FINISHED";
|
|
10
|
-
ResourceApiEvent["LIST_FAILED"] = "LIST_FAILED";
|
|
11
|
-
ResourceApiEvent["CREATE_STARTED"] = "CREATE_STARTED";
|
|
12
|
-
ResourceApiEvent["CREATE_FINISHED"] = "CREATE_FINISHED";
|
|
13
|
-
ResourceApiEvent["CREATE_FAILED"] = "CREATE_FAILED";
|
|
14
|
-
ResourceApiEvent["BATCH_GET_STARTED"] = "BATCH_GET_STARTED";
|
|
15
|
-
ResourceApiEvent["BATCH_GET_FINISHED"] = "BATCH_GET_FINISHED";
|
|
16
|
-
ResourceApiEvent["BATCH_GET_FAILED"] = "BATCH_GET_FAILED";
|
|
17
|
-
ResourceApiEvent["GET_STARTED"] = "GET_STARTED";
|
|
18
|
-
ResourceApiEvent["GET_FINISHED"] = "GET_FINISHED";
|
|
19
|
-
ResourceApiEvent["GET_FAILED"] = "GET_FAILED";
|
|
20
|
-
ResourceApiEvent["DELETE_STARTED"] = "DELETE_STARTED";
|
|
21
|
-
ResourceApiEvent["DELETE_FINISHED"] = "DELETE_FINISHED";
|
|
22
|
-
ResourceApiEvent["DELETE_FAILED"] = "DELETE_FAILED";
|
|
23
|
-
ResourceApiEvent["UPDATE_STARTED"] = "UPDATE_STARTED";
|
|
24
|
-
ResourceApiEvent["UPDATE_FINISHED"] = "UPDATE_FINISHED";
|
|
25
|
-
ResourceApiEvent["UPDATE_FAILED"] = "UPDATE_FAILED";
|
|
26
|
-
})(ResourceApiEvent || (exports.ResourceApiEvent = ResourceApiEvent = {}));
|
|
27
|
-
class ResourceEvApi extends events_1.EventHub {
|
|
28
|
-
create(params) {
|
|
29
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.CREATE_STARTED, this));
|
|
30
|
-
const url = this.urlForCreate(params);
|
|
31
|
-
axios
|
|
32
|
-
.post(url, this.processCreateParams(params))
|
|
33
|
-
.then((response) => {
|
|
34
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.CREATE_FINISHED, this, this.processListResponse(response)));
|
|
35
|
-
})
|
|
36
|
-
.error((err) => {
|
|
37
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.CREATE_FAILED, this, err));
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
batchGet(...resIds) {
|
|
41
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.BATCH_GET_STARTED, this));
|
|
42
|
-
const url = this.urlForBatchGet(resIds);
|
|
43
|
-
axios
|
|
44
|
-
.get(url)
|
|
45
|
-
.then((response) => {
|
|
46
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.BATCH_GET_FINISHED, this, this.processGetResponse(response)));
|
|
47
|
-
})
|
|
48
|
-
.error((err) => {
|
|
49
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.BATCH_GET_FAILED, this, err));
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
get(resId, params) {
|
|
53
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.GET_STARTED, this));
|
|
54
|
-
const url = this.urlForGet(resId, params);
|
|
55
|
-
axios
|
|
56
|
-
.get(url)
|
|
57
|
-
.then((response) => {
|
|
58
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.GET_FINISHED, this, this.processGetResponse(response)));
|
|
59
|
-
})
|
|
60
|
-
.error((err) => {
|
|
61
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.GET_FAILED, this, err));
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
list(params) {
|
|
65
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.LIST_STARTED, this));
|
|
66
|
-
const url = this.urlForList(params);
|
|
67
|
-
axios
|
|
68
|
-
.get(url)
|
|
69
|
-
.then((response) => {
|
|
70
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.LIST_FINISHED, this, this.processListResponse(response)));
|
|
71
|
-
})
|
|
72
|
-
.error((err) => {
|
|
73
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.LIST_FAILED, this, err));
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
update(resId, params) {
|
|
77
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.UPDATE_STARTED, this));
|
|
78
|
-
const url = this.urlForUpdate(resId, params);
|
|
79
|
-
axios
|
|
80
|
-
.post(url, this.processUpdateParams(params))
|
|
81
|
-
.then((response) => {
|
|
82
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.UPDATE_FINISHED, this, this.processListResponse(response)));
|
|
83
|
-
})
|
|
84
|
-
.error((err) => {
|
|
85
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.UPDATE_FAILED, this, err));
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
delete(resId, params) {
|
|
89
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.DELETE_STARTED, this));
|
|
90
|
-
const url = this.urlForDelete(resId, params);
|
|
91
|
-
axios({
|
|
92
|
-
method: "delete",
|
|
93
|
-
url: url,
|
|
94
|
-
})
|
|
95
|
-
.then((response) => {
|
|
96
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.DELETE_FINISHED, this, this.processListResponse(response)));
|
|
97
|
-
})
|
|
98
|
-
.error((err) => {
|
|
99
|
-
this.dispatchEvent(new events_1.TEvent(ResourceApiEvent.DELETE_FAILED, this, err));
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
exports.ResourceEvApi = ResourceEvApi;
|
|
104
|
-
//# sourceMappingURL=evapis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evapis.js","sourceRoot":"","sources":["../../../src/apis/evapis.ts"],"names":[],"mappings":"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","sourcesContent":["import { TEvent, EventHub } from \"../comms/events\";\nimport { Nullable } from \"../types\";\nconst axios = require(\"axios\").default;\n\nexport enum ResourceApiEvent {\n LIST_STARTED = \"LIST_STARTED\",\n LIST_FINISHED = \"LIST_FINISHED\",\n LIST_FAILED = \"LIST_FAILED\",\n\n CREATE_STARTED = \"CREATE_STARTED\",\n CREATE_FINISHED = \"CREATE_FINISHED\",\n CREATE_FAILED = \"CREATE_FAILED\",\n\n BATCH_GET_STARTED = \"BATCH_GET_STARTED\",\n BATCH_GET_FINISHED = \"BATCH_GET_FINISHED\",\n BATCH_GET_FAILED = \"BATCH_GET_FAILED\",\n\n GET_STARTED = \"GET_STARTED\",\n GET_FINISHED = \"GET_FINISHED\",\n GET_FAILED = \"GET_FAILED\",\n\n DELETE_STARTED = \"DELETE_STARTED\",\n DELETE_FINISHED = \"DELETE_FINISHED\",\n DELETE_FAILED = \"DELETE_FAILED\",\n\n UPDATE_STARTED = \"UPDATE_STARTED\",\n UPDATE_FINISHED = \"UPDATE_FINISHED\",\n UPDATE_FAILED = \"UPDATE_FAILED\",\n}\n\nexport abstract class ResourceEvApi<ResType> extends EventHub {\n abstract urlForGet(resId: string, params: any): string;\n abstract urlForBatchGet(resIds: string[]): string;\n abstract urlForDelete(resId: string, params: any): string;\n abstract urlForUpdate(resId: string, params: any): string;\n abstract urlForList(params: any): string;\n abstract urlForCreate(params: any): string;\n\n abstract processListResponse(response: Response): ResType[];\n abstract processGetResponse(response: Response): Nullable<ResType>;\n abstract processDeleteResponse(response: Response): boolean;\n abstract processUpdateResponse(response: Response): ResType;\n abstract processCreateResponse(response: Response): ResType;\n abstract processUpdateParams(params: any): any;\n abstract processCreateParams(params: any): any;\n\n create(params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_STARTED, this));\n const url = this.urlForCreate(params);\n axios\n .post(url, this.processCreateParams(params))\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_FAILED, this, err));\n });\n }\n\n batchGet(...resIds: string[]): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_STARTED, this));\n const url = this.urlForBatchGet(resIds);\n axios\n .get(url)\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_FINISHED, this, this.processGetResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_FAILED, this, err));\n });\n }\n\n get(resId: string, params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.GET_STARTED, this));\n const url = this.urlForGet(resId, params);\n axios\n .get(url)\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.GET_FINISHED, this, this.processGetResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.GET_FAILED, this, err));\n });\n }\n\n list(params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_STARTED, this));\n const url = this.urlForList(params);\n axios\n .get(url)\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_FAILED, this, err));\n });\n }\n\n update(resId: string, params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_STARTED, this));\n const url = this.urlForUpdate(resId, params);\n axios\n .post(url, this.processUpdateParams(params))\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_FAILED, this, err));\n });\n }\n\n delete(resId: string, params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_STARTED, this));\n const url = this.urlForDelete(resId, params);\n axios({\n method: \"delete\",\n url: url,\n })\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_FAILED, this, err));\n });\n }\n}\n"]}
|
package/lib/cjs/apis/index.d.ts
DELETED
package/lib/cjs/apis/index.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./net"), exports);
|
|
18
|
-
__exportStar(require("./promiseapis"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/apis/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,gDAA8B","sourcesContent":["export * from \"./net\";\nexport * from \"./promiseapis\";\n"]}
|
package/lib/cjs/apis/net.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export declare class URLBuilder {
|
|
2
|
-
baseUrl: string;
|
|
3
|
-
path: string;
|
|
4
|
-
params: any;
|
|
5
|
-
constructor(baseUrl: string);
|
|
6
|
-
appendPath(path: string): this;
|
|
7
|
-
addParam(key: string, value: string): this;
|
|
8
|
-
addParams(params: any): this;
|
|
9
|
-
build(): string;
|
|
10
|
-
}
|
|
11
|
-
export declare class Request {
|
|
12
|
-
url: string;
|
|
13
|
-
options: any;
|
|
14
|
-
constructor(url: string, options: any);
|
|
15
|
-
get method(): string;
|
|
16
|
-
set method(method: string);
|
|
17
|
-
get body(): any;
|
|
18
|
-
set body(body: any);
|
|
19
|
-
get headers(): any;
|
|
20
|
-
get contentType(): string;
|
|
21
|
-
}
|
|
22
|
-
export declare class Response {
|
|
23
|
-
status: number;
|
|
24
|
-
statusText: string;
|
|
25
|
-
headers: any;
|
|
26
|
-
data: any;
|
|
27
|
-
error: any;
|
|
28
|
-
constructor(status?: number, statusText?: string, data?: any);
|
|
29
|
-
}
|
package/lib/cjs/apis/net.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Response = exports.Request = exports.URLBuilder = void 0;
|
|
4
|
-
class URLBuilder {
|
|
5
|
-
constructor(baseUrl) {
|
|
6
|
-
this.params = [];
|
|
7
|
-
this.baseUrl = baseUrl;
|
|
8
|
-
}
|
|
9
|
-
appendPath(path) {
|
|
10
|
-
if (!this.baseUrl.endsWith("/") && !path.startsWith("/")) {
|
|
11
|
-
this.baseUrl += "/";
|
|
12
|
-
}
|
|
13
|
-
this.baseUrl += path;
|
|
14
|
-
return this;
|
|
15
|
-
}
|
|
16
|
-
addParam(key, value) {
|
|
17
|
-
this.params.push([key, value]);
|
|
18
|
-
return this;
|
|
19
|
-
}
|
|
20
|
-
addParams(params) {
|
|
21
|
-
for (const key in params) {
|
|
22
|
-
this.addParam(key, params[key]);
|
|
23
|
-
}
|
|
24
|
-
return this;
|
|
25
|
-
}
|
|
26
|
-
build() {
|
|
27
|
-
const url = this.baseUrl;
|
|
28
|
-
const path = this.path;
|
|
29
|
-
const params = this.params;
|
|
30
|
-
const paramString = params
|
|
31
|
-
.map((item, _index) => {
|
|
32
|
-
const [key, value] = item;
|
|
33
|
-
return encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
|
34
|
-
})
|
|
35
|
-
.join("&");
|
|
36
|
-
if (paramString.length > 0) {
|
|
37
|
-
return url + (url.indexOf("?") >= 0 ? "&" : "?") + paramString;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
return url;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.URLBuilder = URLBuilder;
|
|
45
|
-
class Request {
|
|
46
|
-
constructor(url, options) {
|
|
47
|
-
this.url = url;
|
|
48
|
-
this.options = options || {};
|
|
49
|
-
this.options.headers = this.options.headers || {};
|
|
50
|
-
this.options.body = this.options.body || null;
|
|
51
|
-
}
|
|
52
|
-
get method() {
|
|
53
|
-
return this.options.method || "GET";
|
|
54
|
-
}
|
|
55
|
-
set method(method) {
|
|
56
|
-
this.options.method = method;
|
|
57
|
-
}
|
|
58
|
-
get body() {
|
|
59
|
-
return this.options.body;
|
|
60
|
-
}
|
|
61
|
-
set body(body) {
|
|
62
|
-
this.options.body = body;
|
|
63
|
-
}
|
|
64
|
-
get headers() {
|
|
65
|
-
return this.options.headers;
|
|
66
|
-
}
|
|
67
|
-
get contentType() {
|
|
68
|
-
return this.options.contentType;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.Request = Request;
|
|
72
|
-
class Response {
|
|
73
|
-
constructor(status = 200, statusText = "", data = null) {
|
|
74
|
-
this.headers = {};
|
|
75
|
-
this.data = null;
|
|
76
|
-
this.error = null;
|
|
77
|
-
this.status = status;
|
|
78
|
-
this.statusText = statusText;
|
|
79
|
-
this.data = data;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.Response = Response;
|
|
83
|
-
//# sourceMappingURL=net.js.map
|
package/lib/cjs/apis/net.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../../src/apis/net.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * A helper for building URLs.\n */\nexport class URLBuilder {\n baseUrl: string;\n path: string;\n params: any = [];\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n appendPath(path: string): this {\n if (!this.baseUrl.endsWith(\"/\") && !path.startsWith(\"/\")) {\n this.baseUrl += \"/\";\n }\n this.baseUrl += path;\n return this;\n }\n\n addParam(key: string, value: string): this {\n this.params.push([key, value]);\n return this;\n }\n\n addParams(params: any): this {\n for (const key in params) {\n this.addParam(key, params[key]);\n }\n return this;\n }\n\n build(): string {\n const url = this.baseUrl;\n const path = this.path;\n const params = this.params;\n const paramString = params\n .map((item: any, _index: number) => {\n const [key, value] = item;\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n })\n .join(\"&\");\n if (paramString.length > 0) {\n return url + (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + paramString;\n } else {\n return url;\n }\n }\n}\n\nexport class Request {\n url: string;\n options: any;\n\n constructor(url: string, options: any) {\n this.url = url;\n this.options = options || {};\n this.options.headers = this.options.headers || {};\n this.options.body = this.options.body || null;\n }\n\n get method(): string {\n return this.options.method || \"GET\";\n }\n\n set method(method: string) {\n this.options.method = method;\n }\n\n get body(): any {\n return this.options.body;\n }\n\n set body(body: any) {\n this.options.body = body;\n }\n\n get headers(): any {\n return this.options.headers;\n }\n\n get contentType(): string {\n return this.options.contentType;\n }\n}\n\nexport class Response {\n status: number;\n statusText: string;\n headers: any = {};\n data: any = null;\n error: any = null;\n\n constructor(status = 200, statusText = \"\", data: any = null) {\n this.status = status;\n this.statusText = statusText;\n this.data = data;\n }\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { StringMap, Nullable } from "../types";
|
|
2
|
-
export declare abstract class ResourceApi<ResType> {
|
|
3
|
-
abstract urlForGet(resId: string, params: any): string;
|
|
4
|
-
abstract urlForBatchGet(resIds: string[]): string;
|
|
5
|
-
abstract urlForDelete(resId: string, params: any): string;
|
|
6
|
-
abstract urlForUpdate(resId: string, params: any): string;
|
|
7
|
-
abstract urlForList(params: any): string;
|
|
8
|
-
abstract urlForCreate(params: any): string;
|
|
9
|
-
abstract processListResponse(response: Response): ResType[];
|
|
10
|
-
abstract processBatchGetResponse(response: Response): StringMap<ResType>;
|
|
11
|
-
abstract processGetResponse(response: Response): Nullable<ResType>;
|
|
12
|
-
abstract processDeleteResponse(response: Response): boolean;
|
|
13
|
-
abstract processUpdateResponse(response: Response): ResType;
|
|
14
|
-
abstract processCreateResponse(response: Response): ResType;
|
|
15
|
-
abstract processUpdateParams(params: any): any;
|
|
16
|
-
abstract processCreateParams(params: any): any;
|
|
17
|
-
create(params: any): Promise<ResType>;
|
|
18
|
-
batchGet(...resIds: string[]): Promise<StringMap<ResType>>;
|
|
19
|
-
get(resId: string, params: any): Promise<Nullable<ResType>>;
|
|
20
|
-
list(params: any): Promise<ResType[]>;
|
|
21
|
-
update(resId: string, params: any): Promise<ResType>;
|
|
22
|
-
delete(resId: string, params: any): Promise<boolean>;
|
|
23
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ResourceApi = void 0;
|
|
13
|
-
const axios = require("axios").default;
|
|
14
|
-
class ResourceApi {
|
|
15
|
-
create(params) {
|
|
16
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const url = this.urlForCreate(params);
|
|
18
|
-
const response = yield axios.post(url, this.processCreateParams(params));
|
|
19
|
-
return this.processCreateResponse(response);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
batchGet(...resIds) {
|
|
23
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const url = this.urlForBatchGet(resIds);
|
|
25
|
-
const response = yield axios.get(url);
|
|
26
|
-
return this.processBatchGetResponse(response);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
get(resId, params) {
|
|
30
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
-
const url = this.urlForGet(resId, params);
|
|
32
|
-
const response = yield axios.get(url);
|
|
33
|
-
return this.processGetResponse(response);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
list(params) {
|
|
37
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
-
const url = this.urlForList(params);
|
|
39
|
-
const response = yield axios.get(url);
|
|
40
|
-
return this.processListResponse(response);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
update(resId, params) {
|
|
44
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
const url = this.urlForUpdate(resId, params);
|
|
46
|
-
const response = yield axios.put(url, this.processUpdateParams(params));
|
|
47
|
-
return this.processUpdateResponse(response);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
delete(resId, params) {
|
|
51
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
-
const url = this.urlForDelete(resId, params);
|
|
53
|
-
const response = yield axios({ method: "delete", url: url });
|
|
54
|
-
return this.processDeleteResponse(response);
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
exports.ResourceApi = ResourceApi;
|
|
59
|
-
//# sourceMappingURL=promiseapis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promiseapis.js","sourceRoot":"","sources":["../../../src/apis/promiseapis.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAEvC,MAAsB,WAAW;IAiBzB,MAAM,CAAC,MAAW;;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEK,QAAQ,CAAC,GAAG,MAAgB;;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;KAAA;IAEK,GAAG,CAAC,KAAa,EAAE,MAAW;;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,IAAI,CAAC,MAAW;;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,MAAM,CAAC,KAAa,EAAE,MAAW;;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEK,MAAM,CAAC,KAAa,EAAE,MAAW;;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;CACF;AApDD,kCAoDC","sourcesContent":["import { StringMap, Nullable } from \"../types\";\nconst axios = require(\"axios\").default;\n\nexport abstract class ResourceApi<ResType> {\n abstract urlForGet(resId: string, params: any): string;\n abstract urlForBatchGet(resIds: string[]): string;\n abstract urlForDelete(resId: string, params: any): string;\n abstract urlForUpdate(resId: string, params: any): string;\n abstract urlForList(params: any): string;\n abstract urlForCreate(params: any): string;\n\n abstract processListResponse(response: Response): ResType[];\n abstract processBatchGetResponse(response: Response): StringMap<ResType>;\n abstract processGetResponse(response: Response): Nullable<ResType>;\n abstract processDeleteResponse(response: Response): boolean;\n abstract processUpdateResponse(response: Response): ResType;\n abstract processCreateResponse(response: Response): ResType;\n abstract processUpdateParams(params: any): any;\n abstract processCreateParams(params: any): any;\n\n async create(params: any): Promise<ResType> {\n const url = this.urlForCreate(params);\n const response = await axios.post(url, this.processCreateParams(params));\n return this.processCreateResponse(response);\n }\n\n async batchGet(...resIds: string[]): Promise<StringMap<ResType>> {\n const url = this.urlForBatchGet(resIds);\n const response = await axios.get(url);\n return this.processBatchGetResponse(response);\n }\n\n async get(resId: string, params: any): Promise<Nullable<ResType>> {\n const url = this.urlForGet(resId, params);\n const response = await axios.get(url);\n return this.processGetResponse(response);\n }\n\n async list(params: any): Promise<ResType[]> {\n const url = this.urlForList(params);\n const response = await axios.get(url);\n return this.processListResponse(response);\n }\n\n async update(resId: string, params: any): Promise<ResType> {\n const url = this.urlForUpdate(resId, params);\n const response = await axios.put(url, this.processUpdateParams(params));\n return this.processUpdateResponse(response);\n }\n\n async delete(resId: string, params: any): Promise<boolean> {\n const url = this.urlForDelete(resId, params);\n const response = await axios({ method: \"delete\", url: url });\n return this.processDeleteResponse(response);\n }\n}\n"]}
|
package/lib/esm/apis/evapis.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { EventHub } from "../comms/events";
|
|
2
|
-
import { Nullable } from "../types";
|
|
3
|
-
export declare enum ResourceApiEvent {
|
|
4
|
-
LIST_STARTED = "LIST_STARTED",
|
|
5
|
-
LIST_FINISHED = "LIST_FINISHED",
|
|
6
|
-
LIST_FAILED = "LIST_FAILED",
|
|
7
|
-
CREATE_STARTED = "CREATE_STARTED",
|
|
8
|
-
CREATE_FINISHED = "CREATE_FINISHED",
|
|
9
|
-
CREATE_FAILED = "CREATE_FAILED",
|
|
10
|
-
BATCH_GET_STARTED = "BATCH_GET_STARTED",
|
|
11
|
-
BATCH_GET_FINISHED = "BATCH_GET_FINISHED",
|
|
12
|
-
BATCH_GET_FAILED = "BATCH_GET_FAILED",
|
|
13
|
-
GET_STARTED = "GET_STARTED",
|
|
14
|
-
GET_FINISHED = "GET_FINISHED",
|
|
15
|
-
GET_FAILED = "GET_FAILED",
|
|
16
|
-
DELETE_STARTED = "DELETE_STARTED",
|
|
17
|
-
DELETE_FINISHED = "DELETE_FINISHED",
|
|
18
|
-
DELETE_FAILED = "DELETE_FAILED",
|
|
19
|
-
UPDATE_STARTED = "UPDATE_STARTED",
|
|
20
|
-
UPDATE_FINISHED = "UPDATE_FINISHED",
|
|
21
|
-
UPDATE_FAILED = "UPDATE_FAILED"
|
|
22
|
-
}
|
|
23
|
-
export declare abstract class ResourceEvApi<ResType> extends EventHub {
|
|
24
|
-
abstract urlForGet(resId: string, params: any): string;
|
|
25
|
-
abstract urlForBatchGet(resIds: string[]): string;
|
|
26
|
-
abstract urlForDelete(resId: string, params: any): string;
|
|
27
|
-
abstract urlForUpdate(resId: string, params: any): string;
|
|
28
|
-
abstract urlForList(params: any): string;
|
|
29
|
-
abstract urlForCreate(params: any): string;
|
|
30
|
-
abstract processListResponse(response: Response): ResType[];
|
|
31
|
-
abstract processGetResponse(response: Response): Nullable<ResType>;
|
|
32
|
-
abstract processDeleteResponse(response: Response): boolean;
|
|
33
|
-
abstract processUpdateResponse(response: Response): ResType;
|
|
34
|
-
abstract processCreateResponse(response: Response): ResType;
|
|
35
|
-
abstract processUpdateParams(params: any): any;
|
|
36
|
-
abstract processCreateParams(params: any): any;
|
|
37
|
-
create(params: any): void;
|
|
38
|
-
batchGet(...resIds: string[]): void;
|
|
39
|
-
get(resId: string, params: any): void;
|
|
40
|
-
list(params: any): void;
|
|
41
|
-
update(resId: string, params: any): void;
|
|
42
|
-
delete(resId: string, params: any): void;
|
|
43
|
-
}
|
package/lib/esm/apis/evapis.js
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { TEvent, EventHub } from "../comms/events";
|
|
2
|
-
const axios = require("axios").default;
|
|
3
|
-
export var ResourceApiEvent;
|
|
4
|
-
(function (ResourceApiEvent) {
|
|
5
|
-
ResourceApiEvent["LIST_STARTED"] = "LIST_STARTED";
|
|
6
|
-
ResourceApiEvent["LIST_FINISHED"] = "LIST_FINISHED";
|
|
7
|
-
ResourceApiEvent["LIST_FAILED"] = "LIST_FAILED";
|
|
8
|
-
ResourceApiEvent["CREATE_STARTED"] = "CREATE_STARTED";
|
|
9
|
-
ResourceApiEvent["CREATE_FINISHED"] = "CREATE_FINISHED";
|
|
10
|
-
ResourceApiEvent["CREATE_FAILED"] = "CREATE_FAILED";
|
|
11
|
-
ResourceApiEvent["BATCH_GET_STARTED"] = "BATCH_GET_STARTED";
|
|
12
|
-
ResourceApiEvent["BATCH_GET_FINISHED"] = "BATCH_GET_FINISHED";
|
|
13
|
-
ResourceApiEvent["BATCH_GET_FAILED"] = "BATCH_GET_FAILED";
|
|
14
|
-
ResourceApiEvent["GET_STARTED"] = "GET_STARTED";
|
|
15
|
-
ResourceApiEvent["GET_FINISHED"] = "GET_FINISHED";
|
|
16
|
-
ResourceApiEvent["GET_FAILED"] = "GET_FAILED";
|
|
17
|
-
ResourceApiEvent["DELETE_STARTED"] = "DELETE_STARTED";
|
|
18
|
-
ResourceApiEvent["DELETE_FINISHED"] = "DELETE_FINISHED";
|
|
19
|
-
ResourceApiEvent["DELETE_FAILED"] = "DELETE_FAILED";
|
|
20
|
-
ResourceApiEvent["UPDATE_STARTED"] = "UPDATE_STARTED";
|
|
21
|
-
ResourceApiEvent["UPDATE_FINISHED"] = "UPDATE_FINISHED";
|
|
22
|
-
ResourceApiEvent["UPDATE_FAILED"] = "UPDATE_FAILED";
|
|
23
|
-
})(ResourceApiEvent || (ResourceApiEvent = {}));
|
|
24
|
-
export class ResourceEvApi extends EventHub {
|
|
25
|
-
create(params) {
|
|
26
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_STARTED, this));
|
|
27
|
-
const url = this.urlForCreate(params);
|
|
28
|
-
axios
|
|
29
|
-
.post(url, this.processCreateParams(params))
|
|
30
|
-
.then((response) => {
|
|
31
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_FINISHED, this, this.processListResponse(response)));
|
|
32
|
-
})
|
|
33
|
-
.error((err) => {
|
|
34
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_FAILED, this, err));
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
batchGet(...resIds) {
|
|
38
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_STARTED, this));
|
|
39
|
-
const url = this.urlForBatchGet(resIds);
|
|
40
|
-
axios
|
|
41
|
-
.get(url)
|
|
42
|
-
.then((response) => {
|
|
43
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_FINISHED, this, this.processGetResponse(response)));
|
|
44
|
-
})
|
|
45
|
-
.error((err) => {
|
|
46
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_FAILED, this, err));
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
get(resId, params) {
|
|
50
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.GET_STARTED, this));
|
|
51
|
-
const url = this.urlForGet(resId, params);
|
|
52
|
-
axios
|
|
53
|
-
.get(url)
|
|
54
|
-
.then((response) => {
|
|
55
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.GET_FINISHED, this, this.processGetResponse(response)));
|
|
56
|
-
})
|
|
57
|
-
.error((err) => {
|
|
58
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.GET_FAILED, this, err));
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
list(params) {
|
|
62
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_STARTED, this));
|
|
63
|
-
const url = this.urlForList(params);
|
|
64
|
-
axios
|
|
65
|
-
.get(url)
|
|
66
|
-
.then((response) => {
|
|
67
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_FINISHED, this, this.processListResponse(response)));
|
|
68
|
-
})
|
|
69
|
-
.error((err) => {
|
|
70
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_FAILED, this, err));
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
update(resId, params) {
|
|
74
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_STARTED, this));
|
|
75
|
-
const url = this.urlForUpdate(resId, params);
|
|
76
|
-
axios
|
|
77
|
-
.post(url, this.processUpdateParams(params))
|
|
78
|
-
.then((response) => {
|
|
79
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_FINISHED, this, this.processListResponse(response)));
|
|
80
|
-
})
|
|
81
|
-
.error((err) => {
|
|
82
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_FAILED, this, err));
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
delete(resId, params) {
|
|
86
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_STARTED, this));
|
|
87
|
-
const url = this.urlForDelete(resId, params);
|
|
88
|
-
axios({
|
|
89
|
-
method: "delete",
|
|
90
|
-
url: url,
|
|
91
|
-
})
|
|
92
|
-
.then((response) => {
|
|
93
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_FINISHED, this, this.processListResponse(response)));
|
|
94
|
-
})
|
|
95
|
-
.error((err) => {
|
|
96
|
-
this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_FAILED, this, err));
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=evapis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evapis.js","sourceRoot":"","sources":["../../../src/apis/evapis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAEvC,MAAM,CAAN,IAAY,gBAwBX;AAxBD,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,mDAA+B,CAAA;IAC/B,+CAA2B,CAAA;IAE3B,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IACnC,mDAA+B,CAAA;IAE/B,2DAAuC,CAAA;IACvC,6DAAyC,CAAA;IACzC,yDAAqC,CAAA;IAErC,+CAA2B,CAAA;IAC3B,iDAA6B,CAAA;IAC7B,6CAAyB,CAAA;IAEzB,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IACnC,mDAA+B,CAAA;IAE/B,qDAAiC,CAAA;IACjC,uDAAmC,CAAA;IACnC,mDAA+B,CAAA;AACjC,CAAC,EAxBW,gBAAgB,KAAhB,gBAAgB,QAwB3B;AAED,MAAM,OAAgB,aAAuB,SAAQ,QAAQ;IAgB3D,MAAM,CAAC,MAAW;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK;aACF,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;aAC3C,IAAI,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,GAAG,MAAgB;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK;aACF,GAAG,CAAC,GAAG,CAAC;aACR,IAAI,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,MAAW;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK;aACF,GAAG,CAAC,GAAG,CAAC;aACR,IAAI,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,MAAW;QACd,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK;aACF,GAAG,CAAC,GAAG,CAAC;aACR,IAAI,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3G,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAW;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,KAAK;aACF,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;aAC3C,IAAI,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAW;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC;YACJ,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,GAAG;SACT,CAAC;aACC,IAAI,CAAC,CAAC,QAAkB,EAAE,EAAE;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC;CACF","sourcesContent":["import { TEvent, EventHub } from \"../comms/events\";\nimport { Nullable } from \"../types\";\nconst axios = require(\"axios\").default;\n\nexport enum ResourceApiEvent {\n LIST_STARTED = \"LIST_STARTED\",\n LIST_FINISHED = \"LIST_FINISHED\",\n LIST_FAILED = \"LIST_FAILED\",\n\n CREATE_STARTED = \"CREATE_STARTED\",\n CREATE_FINISHED = \"CREATE_FINISHED\",\n CREATE_FAILED = \"CREATE_FAILED\",\n\n BATCH_GET_STARTED = \"BATCH_GET_STARTED\",\n BATCH_GET_FINISHED = \"BATCH_GET_FINISHED\",\n BATCH_GET_FAILED = \"BATCH_GET_FAILED\",\n\n GET_STARTED = \"GET_STARTED\",\n GET_FINISHED = \"GET_FINISHED\",\n GET_FAILED = \"GET_FAILED\",\n\n DELETE_STARTED = \"DELETE_STARTED\",\n DELETE_FINISHED = \"DELETE_FINISHED\",\n DELETE_FAILED = \"DELETE_FAILED\",\n\n UPDATE_STARTED = \"UPDATE_STARTED\",\n UPDATE_FINISHED = \"UPDATE_FINISHED\",\n UPDATE_FAILED = \"UPDATE_FAILED\",\n}\n\nexport abstract class ResourceEvApi<ResType> extends EventHub {\n abstract urlForGet(resId: string, params: any): string;\n abstract urlForBatchGet(resIds: string[]): string;\n abstract urlForDelete(resId: string, params: any): string;\n abstract urlForUpdate(resId: string, params: any): string;\n abstract urlForList(params: any): string;\n abstract urlForCreate(params: any): string;\n\n abstract processListResponse(response: Response): ResType[];\n abstract processGetResponse(response: Response): Nullable<ResType>;\n abstract processDeleteResponse(response: Response): boolean;\n abstract processUpdateResponse(response: Response): ResType;\n abstract processCreateResponse(response: Response): ResType;\n abstract processUpdateParams(params: any): any;\n abstract processCreateParams(params: any): any;\n\n create(params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_STARTED, this));\n const url = this.urlForCreate(params);\n axios\n .post(url, this.processCreateParams(params))\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.CREATE_FAILED, this, err));\n });\n }\n\n batchGet(...resIds: string[]): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_STARTED, this));\n const url = this.urlForBatchGet(resIds);\n axios\n .get(url)\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_FINISHED, this, this.processGetResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.BATCH_GET_FAILED, this, err));\n });\n }\n\n get(resId: string, params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.GET_STARTED, this));\n const url = this.urlForGet(resId, params);\n axios\n .get(url)\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.GET_FINISHED, this, this.processGetResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.GET_FAILED, this, err));\n });\n }\n\n list(params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_STARTED, this));\n const url = this.urlForList(params);\n axios\n .get(url)\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.LIST_FAILED, this, err));\n });\n }\n\n update(resId: string, params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_STARTED, this));\n const url = this.urlForUpdate(resId, params);\n axios\n .post(url, this.processUpdateParams(params))\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.UPDATE_FAILED, this, err));\n });\n }\n\n delete(resId: string, params: any): void {\n this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_STARTED, this));\n const url = this.urlForDelete(resId, params);\n axios({\n method: \"delete\",\n url: url,\n })\n .then((response: Response) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_FINISHED, this, this.processListResponse(response)));\n })\n .error((err: Error) => {\n this.dispatchEvent(new TEvent(ResourceApiEvent.DELETE_FAILED, this, err));\n });\n }\n}\n"]}
|
package/lib/esm/apis/index.d.ts
DELETED
package/lib/esm/apis/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./net\";\nexport * from \"./promiseapis\";\n"]}
|
package/lib/esm/apis/net.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export declare class URLBuilder {
|
|
2
|
-
baseUrl: string;
|
|
3
|
-
path: string;
|
|
4
|
-
params: any;
|
|
5
|
-
constructor(baseUrl: string);
|
|
6
|
-
appendPath(path: string): this;
|
|
7
|
-
addParam(key: string, value: string): this;
|
|
8
|
-
addParams(params: any): this;
|
|
9
|
-
build(): string;
|
|
10
|
-
}
|
|
11
|
-
export declare class Request {
|
|
12
|
-
url: string;
|
|
13
|
-
options: any;
|
|
14
|
-
constructor(url: string, options: any);
|
|
15
|
-
get method(): string;
|
|
16
|
-
set method(method: string);
|
|
17
|
-
get body(): any;
|
|
18
|
-
set body(body: any);
|
|
19
|
-
get headers(): any;
|
|
20
|
-
get contentType(): string;
|
|
21
|
-
}
|
|
22
|
-
export declare class Response {
|
|
23
|
-
status: number;
|
|
24
|
-
statusText: string;
|
|
25
|
-
headers: any;
|
|
26
|
-
data: any;
|
|
27
|
-
error: any;
|
|
28
|
-
constructor(status?: number, statusText?: string, data?: any);
|
|
29
|
-
}
|
package/lib/esm/apis/net.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
export class URLBuilder {
|
|
2
|
-
constructor(baseUrl) {
|
|
3
|
-
this.params = [];
|
|
4
|
-
this.baseUrl = baseUrl;
|
|
5
|
-
}
|
|
6
|
-
appendPath(path) {
|
|
7
|
-
if (!this.baseUrl.endsWith("/") && !path.startsWith("/")) {
|
|
8
|
-
this.baseUrl += "/";
|
|
9
|
-
}
|
|
10
|
-
this.baseUrl += path;
|
|
11
|
-
return this;
|
|
12
|
-
}
|
|
13
|
-
addParam(key, value) {
|
|
14
|
-
this.params.push([key, value]);
|
|
15
|
-
return this;
|
|
16
|
-
}
|
|
17
|
-
addParams(params) {
|
|
18
|
-
for (const key in params) {
|
|
19
|
-
this.addParam(key, params[key]);
|
|
20
|
-
}
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
build() {
|
|
24
|
-
const url = this.baseUrl;
|
|
25
|
-
const path = this.path;
|
|
26
|
-
const params = this.params;
|
|
27
|
-
const paramString = params
|
|
28
|
-
.map((item, _index) => {
|
|
29
|
-
const [key, value] = item;
|
|
30
|
-
return encodeURIComponent(key) + "=" + encodeURIComponent(value);
|
|
31
|
-
})
|
|
32
|
-
.join("&");
|
|
33
|
-
if (paramString.length > 0) {
|
|
34
|
-
return url + (url.indexOf("?") >= 0 ? "&" : "?") + paramString;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
return url;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export class Request {
|
|
42
|
-
constructor(url, options) {
|
|
43
|
-
this.url = url;
|
|
44
|
-
this.options = options || {};
|
|
45
|
-
this.options.headers = this.options.headers || {};
|
|
46
|
-
this.options.body = this.options.body || null;
|
|
47
|
-
}
|
|
48
|
-
get method() {
|
|
49
|
-
return this.options.method || "GET";
|
|
50
|
-
}
|
|
51
|
-
set method(method) {
|
|
52
|
-
this.options.method = method;
|
|
53
|
-
}
|
|
54
|
-
get body() {
|
|
55
|
-
return this.options.body;
|
|
56
|
-
}
|
|
57
|
-
set body(body) {
|
|
58
|
-
this.options.body = body;
|
|
59
|
-
}
|
|
60
|
-
get headers() {
|
|
61
|
-
return this.options.headers;
|
|
62
|
-
}
|
|
63
|
-
get contentType() {
|
|
64
|
-
return this.options.contentType;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
export class Response {
|
|
68
|
-
constructor(status = 200, statusText = "", data = null) {
|
|
69
|
-
this.headers = {};
|
|
70
|
-
this.data = null;
|
|
71
|
-
this.error = null;
|
|
72
|
-
this.status = status;
|
|
73
|
-
this.statusText = statusText;
|
|
74
|
-
this.data = data;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=net.js.map
|
package/lib/esm/apis/net.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../../src/apis/net.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * A helper for building URLs.\n */\nexport class URLBuilder {\n baseUrl: string;\n path: string;\n params: any = [];\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n appendPath(path: string): this {\n if (!this.baseUrl.endsWith(\"/\") && !path.startsWith(\"/\")) {\n this.baseUrl += \"/\";\n }\n this.baseUrl += path;\n return this;\n }\n\n addParam(key: string, value: string): this {\n this.params.push([key, value]);\n return this;\n }\n\n addParams(params: any): this {\n for (const key in params) {\n this.addParam(key, params[key]);\n }\n return this;\n }\n\n build(): string {\n const url = this.baseUrl;\n const path = this.path;\n const params = this.params;\n const paramString = params\n .map((item: any, _index: number) => {\n const [key, value] = item;\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n })\n .join(\"&\");\n if (paramString.length > 0) {\n return url + (url.indexOf(\"?\") >= 0 ? \"&\" : \"?\") + paramString;\n } else {\n return url;\n }\n }\n}\n\nexport class Request {\n url: string;\n options: any;\n\n constructor(url: string, options: any) {\n this.url = url;\n this.options = options || {};\n this.options.headers = this.options.headers || {};\n this.options.body = this.options.body || null;\n }\n\n get method(): string {\n return this.options.method || \"GET\";\n }\n\n set method(method: string) {\n this.options.method = method;\n }\n\n get body(): any {\n return this.options.body;\n }\n\n set body(body: any) {\n this.options.body = body;\n }\n\n get headers(): any {\n return this.options.headers;\n }\n\n get contentType(): string {\n return this.options.contentType;\n }\n}\n\nexport class Response {\n status: number;\n statusText: string;\n headers: any = {};\n data: any = null;\n error: any = null;\n\n constructor(status = 200, statusText = \"\", data: any = null) {\n this.status = status;\n this.statusText = statusText;\n this.data = data;\n }\n}\n"]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { StringMap, Nullable } from "../types";
|
|
2
|
-
export declare abstract class ResourceApi<ResType> {
|
|
3
|
-
abstract urlForGet(resId: string, params: any): string;
|
|
4
|
-
abstract urlForBatchGet(resIds: string[]): string;
|
|
5
|
-
abstract urlForDelete(resId: string, params: any): string;
|
|
6
|
-
abstract urlForUpdate(resId: string, params: any): string;
|
|
7
|
-
abstract urlForList(params: any): string;
|
|
8
|
-
abstract urlForCreate(params: any): string;
|
|
9
|
-
abstract processListResponse(response: Response): ResType[];
|
|
10
|
-
abstract processBatchGetResponse(response: Response): StringMap<ResType>;
|
|
11
|
-
abstract processGetResponse(response: Response): Nullable<ResType>;
|
|
12
|
-
abstract processDeleteResponse(response: Response): boolean;
|
|
13
|
-
abstract processUpdateResponse(response: Response): ResType;
|
|
14
|
-
abstract processCreateResponse(response: Response): ResType;
|
|
15
|
-
abstract processUpdateParams(params: any): any;
|
|
16
|
-
abstract processCreateParams(params: any): any;
|
|
17
|
-
create(params: any): Promise<ResType>;
|
|
18
|
-
batchGet(...resIds: string[]): Promise<StringMap<ResType>>;
|
|
19
|
-
get(resId: string, params: any): Promise<Nullable<ResType>>;
|
|
20
|
-
list(params: any): Promise<ResType[]>;
|
|
21
|
-
update(resId: string, params: any): Promise<ResType>;
|
|
22
|
-
delete(resId: string, params: any): Promise<boolean>;
|
|
23
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
const axios = require("axios").default;
|
|
11
|
-
export class ResourceApi {
|
|
12
|
-
create(params) {
|
|
13
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
14
|
-
const url = this.urlForCreate(params);
|
|
15
|
-
const response = yield axios.post(url, this.processCreateParams(params));
|
|
16
|
-
return this.processCreateResponse(response);
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
batchGet(...resIds) {
|
|
20
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const url = this.urlForBatchGet(resIds);
|
|
22
|
-
const response = yield axios.get(url);
|
|
23
|
-
return this.processBatchGetResponse(response);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
get(resId, params) {
|
|
27
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
const url = this.urlForGet(resId, params);
|
|
29
|
-
const response = yield axios.get(url);
|
|
30
|
-
return this.processGetResponse(response);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
list(params) {
|
|
34
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const url = this.urlForList(params);
|
|
36
|
-
const response = yield axios.get(url);
|
|
37
|
-
return this.processListResponse(response);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
update(resId, params) {
|
|
41
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
-
const url = this.urlForUpdate(resId, params);
|
|
43
|
-
const response = yield axios.put(url, this.processUpdateParams(params));
|
|
44
|
-
return this.processUpdateResponse(response);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
delete(resId, params) {
|
|
48
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
const url = this.urlForDelete(resId, params);
|
|
50
|
-
const response = yield axios({ method: "delete", url: url });
|
|
51
|
-
return this.processDeleteResponse(response);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=promiseapis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promiseapis.js","sourceRoot":"","sources":["../../../src/apis/promiseapis.ts"],"names":[],"mappings":";;;;;;;;;AACA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAEvC,MAAM,OAAgB,WAAW;IAiBzB,MAAM,CAAC,MAAW;;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEK,QAAQ,CAAC,GAAG,MAAgB;;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;KAAA;IAEK,GAAG,CAAC,KAAa,EAAE,MAAW;;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,IAAI,CAAC,MAAW;;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,MAAM,CAAC,KAAa,EAAE,MAAW;;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEK,MAAM,CAAC,KAAa,EAAE,MAAW;;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;CACF","sourcesContent":["import { StringMap, Nullable } from \"../types\";\nconst axios = require(\"axios\").default;\n\nexport abstract class ResourceApi<ResType> {\n abstract urlForGet(resId: string, params: any): string;\n abstract urlForBatchGet(resIds: string[]): string;\n abstract urlForDelete(resId: string, params: any): string;\n abstract urlForUpdate(resId: string, params: any): string;\n abstract urlForList(params: any): string;\n abstract urlForCreate(params: any): string;\n\n abstract processListResponse(response: Response): ResType[];\n abstract processBatchGetResponse(response: Response): StringMap<ResType>;\n abstract processGetResponse(response: Response): Nullable<ResType>;\n abstract processDeleteResponse(response: Response): boolean;\n abstract processUpdateResponse(response: Response): ResType;\n abstract processCreateResponse(response: Response): ResType;\n abstract processUpdateParams(params: any): any;\n abstract processCreateParams(params: any): any;\n\n async create(params: any): Promise<ResType> {\n const url = this.urlForCreate(params);\n const response = await axios.post(url, this.processCreateParams(params));\n return this.processCreateResponse(response);\n }\n\n async batchGet(...resIds: string[]): Promise<StringMap<ResType>> {\n const url = this.urlForBatchGet(resIds);\n const response = await axios.get(url);\n return this.processBatchGetResponse(response);\n }\n\n async get(resId: string, params: any): Promise<Nullable<ResType>> {\n const url = this.urlForGet(resId, params);\n const response = await axios.get(url);\n return this.processGetResponse(response);\n }\n\n async list(params: any): Promise<ResType[]> {\n const url = this.urlForList(params);\n const response = await axios.get(url);\n return this.processListResponse(response);\n }\n\n async update(resId: string, params: any): Promise<ResType> {\n const url = this.urlForUpdate(resId, params);\n const response = await axios.put(url, this.processUpdateParams(params));\n return this.processUpdateResponse(response);\n }\n\n async delete(resId: string, params: any): Promise<boolean> {\n const url = this.urlForDelete(resId, params);\n const response = await axios({ method: \"delete\", url: url });\n return this.processDeleteResponse(response);\n }\n}\n"]}
|