The codemelted.js is an ES6 developed module focusing on client-side
front end domain use cases. This is accomplished by leveraging the Web APIs
available within a Browser / Web Worker runtimes. The Web APIs provide
everything a client-side app requires to build Single Page App (SPA),
Progressive Web App (PWA), or just general static websites. All of this
without the need of a heavy framework.
Any module API violation will result in a CModuleError thrown with a
full stack trace of the violation.
GETTING STARTED
Clone / Fork
When you clone / fork the codemelted.js Project repo, you will need to
install tools to properly build the project. The following represents how to
set up those tools.
Open a terminal and execute ./build.ps1 --setup. Follow the
instructions to install all the necessary repo tooling.
Once completed, execute ./build.ps1 --help to gain an understanding
of how to build the project in the future.
Content Delivery Network (CDN)
The codemelted.js module is hosted on GitHub and delivered via the
jsdelivr CDN. The following represents the URLs for accessing the module.
These can be utilized with import statements within JavaScript
or as part of the <script type="module"></script> tags of a website.
The @XX.Y.Z corresponds to the releases of the codemelted.js Project
as identified on GitHub.
XX corresponds to the year of the release. A change in this value resets
Y and Z to 0 respectively.
Y corresponds to an API breaking change. A change in this number
resets Z.
Z corresponds to a newly delivered feature / bug fix that should not break
other API functions.
USAGE
ES6 Module Import Example
// Import whole module statically via URL or local path import*ascodemeltedfrom"path/to/codemelted.js";
// Import elements to use statically via URL or local path import { exported_element } from"path/to/codemelted.js";
// Dynamically import all module elements to named variable letcodemelted = awaitimport("path/to/codemelted.js");
Via Script Tag in HTML File
<scripttype="module"> // Use the import examples above to utilize the script functions. </script>
And with your imports in place, explore the SDK to utilize the
domain use case API of your choice. They will have the details of the API
call along with examples.
TODOS
Research and implement async_lock() from the Web Locks API.
Research and implement ui_xxx() functions for Fullscreen API,
Picture in Picture API, Navigation API, Resize Observer API, and Screen
Wake Lock API.
Research Web Cryptography API and how to apply to the module.
db_xxx() use case. Define IndexedDB portion and expose.
hw_xxx() use case. Implement currently researched protocols and expose.
hw_xxx() use case. Implement not yet researched protocols and expose.
network_xxx() use case. Get fetch and beacon done. Move queryable items
to runtime
network_xxx() use case. Get client side CBroadcastChannel / CEventSource
hooked up and exposed
network_xxx() sue case. Get client side socket based protocols implemented
and exposed.
npu_compute() use case. Develop tests and expose to the greater project.
runtime_xxx() use case. Add runtime_query() to query different values from
the runtime. This will not throw just return a signal of "unknown" for the
value.
ui_xxx() use case. Build out protocols
ui_xxx() use case. Finish the ui_notify with custom dialog.
ui_xxx() use case. Start building UI components and come up with a standard
for using them within HTML to build user interfaces.
ui_xxx() use case. Define tests to fully flesh and test this out.
LICENSE
MIT License
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the 'Software'),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
SDK
The following lists represent the implementation of the codemelted.js
module. The Functions represents the actual domain use case API
functions. All other items represent the supporing objects of the
Functions API.
FEATURES
The
codemelted.jsis an ES6 developed module focusing on client-side front end domain use cases. This is accomplished by leveraging the Web APIs available within a Browser / Web Worker runtimes. The Web APIs provide everything a client-side app requires to build Single Page App (SPA), Progressive Web App (PWA), or just general static websites. All of this without the need of a heavy framework.GETTING STARTED
Clone / Fork
When you clone / fork the codemelted.js Project repo, you will need to install tools to properly build the project. The following represents how to set up those tools.
./build.ps1 --setup. Follow the instructions to install all the necessary repo tooling../build.ps1 --helpto gain an understanding of how to build the project in the future.Content Delivery Network (CDN)
The
codemelted.jsmodule is hosted on GitHub and delivered via thejsdelivrCDN. The following represents the URLs for accessing the module. These can be utilized withimportstatements within JavaScript or as part of the<script type="module"></script>tags of a website.NOTES:
@XX.Y.Zcorresponds to the releases of the codemelted.js Project as identified on GitHub.XXcorresponds to the year of the release. A change in this value resetsYandZto0respectively.Ycorresponds to an API breaking change. A change in this number resetsZ.Zcorresponds to a newly delivered feature / bug fix that should not break other API functions.USAGE
ES6 Module Import Example
Via Script Tag in HTML File
And with your imports in place, explore the SDK to utilize the domain use case API of your choice. They will have the details of the API call along with examples.
TODOS
LICENSE
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SDK
The following lists represent the implementation of the
codemelted.jsmodule. The Functions represents the actual domain use case API functions. All other items represent the supporing objects of the Functions API.