Q'Wiz Utilities, for JS
by Chakrit W. [email protected]
This is a minimal collection of tools for my most frequently-needed repetitive tasks
I try to make this depend on the least number of most lightweight tools & frameworks, such as browserify and intl (instead of webpack and moment.js, you got the idea)
-
forEachField({Object} obj, {Function<String, *>} callback
Shallow Object Iteration
-
walkObject({Object} obj, {Object} opts)
Deep Object Iteration
See: walkObject.Options
-
walkObject.Options
{Number|Boolean} maxDepth
{Object} expressionsMap
{Function<*, walkObject.Context>|*} defaultExpression
-
merge({Object} dest, {Object} src, {Object} opts)
Shallow&Deep Object Merge
-
clone({Object} src, {Object} opts)
Shallow&Deep Object Clone
-
extendClass({Function} parentCls, {Object} childProto, {Object} childStatic)
Prototype/class Extension
-
attachExtension({Function} targetCls, {Function} extClass)
Class Extension Attachment
TODO:
TODO:
TODO:
TODO:
Web API client Interface & registry point for implementations
(also aliased as web.WebApiClient) TODO:
-
build: Build library for Browser use (output to
dist/qwiz.bundle.js
and minified versiondist/qwiz.bundle.min.js
, and copydist/qwiz.bundle.js
toweb-demo/assets/js/
) -
web-demo: Run demo web server on localhost:3000 to test web libs functionality
-
browserify: Build library for Browser use (output to
dist/qwiz.bundle.js
and minified versiondist/qwiz.bundle.min.js
)npm run browserify
-
lint: Run eslint
npm run lint
-
lint-fix: Run eslint with auto-fix mode
npm run lint-fix
-
test: Run mocha unit tests
npm test
-
test-debug: Run mocha unit tests in debug mode (can be inspected by tools like Chrome node.js inspector)
npm run test-debug
//For ES6 Modules:
//import qwiz from "qwiz/src/index";
//For pre-ES6-Modules Node.JS:
const qwiz = require("qwiz");
qwiz.utils.merge(dest, src, { deep: true });
/* .... */
<!--<script src="assets/js/qwiz.bundle.js"></script>--><!-- For Development -->
<script src="assets/js/qwiz.bundle.min.js"></script><!-- For Production -->
<script type="text/javascript">
(function(qwiz) {
const api = new qwiz.web.WebApiClient({
window: window,
document: document,
/* ... */
});
api.on(qwiz.web.WebApiClient.EVT_ERROR, (err) => {
/* ... */
});
const view = new qwiz.web.WebView({
window: window,
document: document,
/* ... */
});
view.on(qwiz.web.WebView.EVT_INIT_COMPLETE, (stepResults) => {
/* ... */
});
view.on(qwiz.web.WebView.EVT_ERROR, (err) => {
/* ... */
});
view.initOnReady();
/* .... */
})(com.chakritw.qwiz);
</script>