qwiz v1.0.6
qwiz-js
Q'Wiz Utilities, for JS
by Chakrit W. quaos.qrz@gmail.com
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)
Modules
utils
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
utils.text
TODO:
utils.datetime
TODO:
web.WebView
TODO:
web.IndexView
TODO:
web.WebApiClient
Web API client Interface & registry point for implementations
web.WebApiClientImpl_Fetch
(also aliased as web.WebApiClient) TODO:
Grunt Tasks
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
NPM Scripts
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
Usage in NodeJS & other runtimes
//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 });
/* .... */
Usage in Browsers
<!--<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>