Skip to content
This repository was archived by the owner on Dec 12, 2022. It is now read-only.
Derk Norton edited this page Nov 18, 2018 · 41 revisions

Components

WARNING: This project is still in its early stages and the classes and interfaces to the classes are likely to change.

Overview

This project provides the foundation for the Bali Cloud Environment™. It defines a framework of JavaScript classes designed to run in both the cloud on NodeJS servers and in your browser. It also implements the Bali Document Notation™ which allows your browser to communicate with the cloud services similar to the way JSON based web services work.

The Bali Component Framework™ is like JavaScript on steroids. It supports a much richer set of primitive types (13 in all) and collection types (6 in all) than JavaScript's five total types. It also provides powerful higher-level programming constructs that integrate directly with the Bali Cloud Environment™.

Everything in this framework is a Bali component and inherits from the bali.Component class. Each component can be formatted as a portable document containing Bali Document Notation™ which is like JSON on steroids. Similarly, a string containing Bali Document Notation™ can be parsed back into its corresponding Bali components.

This project provides all of the JavaScript/NodeJS modules that are required to work with Bali components and Bali Document Notation™ strings.

Example Document

To whet your appetite here is a short example Bali document showing some of the capabilities of the Bali Document Notation™:

[
    $transactionId: #LYZ6PJ9GBABSF18MQMBSJDV7KAPV4MS7
    $timestamp: <2017-12-30T17:38:35.726>($city: "Madrid", $country: "Spain")
    $consumer: [
        $accountId: #SFNYCS6WTNCAVQ43DDS9HQJQX2A1XAPZ
        $email: <jane.smith@gmail.com>
    ]
    $merchant: [
        $accountId: #GYR0D0N7D7RGLAMM50TA7YYP9TRCYFF0
        $name: "Cool Deals R Us"
    ]
    $items: [
        [
            $name: "Hover Board"
            $version: v2.65
            $quantity: 1
            $price: 142.00($USD)
        ]
        [
            $name: "Hover Battery Packs"
            $version: v15.3.7
            $quantity: 2
            $price: 16.00($USD)
        ]
    ]
    $tax: 10.77($EUR)
    $total: 184.77($EUR)
]

The document itself is fairly straight forward. It captures the information associated with a payment from a consumer to a merchant. The example is overly simple but it should give you the gist of the power behind the Bali Component Framework™ and its associated Bali Document Notation™.

Framework Classes

Each of the structures and attributes within the example document maps to a Bali component class within the Bali Component Framework™. The classes are grouped by type. Click on each type for details about specific framework classes of that type:

  • Abstractions - Abstract classes that define the framework using various tried and true software design patterns.
  • Elements - Elemental components that are generally considered atomic in nature without subcomponents.
  • Composites - Components that are composed of subcomponents.
  • Collections - Composite components that contain a group of subcomponents that are added and removed from the collection dynamically.
  • Utilities - Utility classes that operate on components as part of the design patterns.

Getting Started

To install the NodeJS package for this project, execute the following command:

npm install bali-component-framework

Then add the following line to your NodeJS modules:

var bali = require('bali-component-framework);

Check out the example code here.

Contributing

Project contributors are always welcome. Create a fork of the project and add cool new things to the framework. When you are ready to contribute the changes create a subsequent "pull request". Any questions and comments can be sent to craterdog@gmail.com.

Clone this wiki locally