9.0.9-alpha.83 • Published 1 year ago

rc-js-util v9.0.9-alpha.83

Weekly downloads
25
License
MIT
Repository
github
Last release
1 year ago

rc-js-util

A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.

Installation

Using npm:

$ npm i --save rc-js-util

Configuration

The global variable _BUILD must be set (to at least an empty object {}) for js-util to function correctly. You can create builds to handle various combinations, e.g. {DEBUG: true, ASAN: true} as required. In production builds it is recommended to use a tool such as uglify-js to strip out debug checks by specifying that _BUILD.DEBUG = false.

For a list of default flags, see IBuildConstants. You can extend this configuration using global interface merging:

declare global
{
    interface IBuildConstants
    {
        MY_CUSTOM_FLAG?: boolean;
    }
}

Usage

Utility functions are provided as both stand alone and grouped by category, e.g. _Array.compactMap and arrayCompactMap are the same.

A collection of standard debug utilities such as assert is provided in _Debug. More specialized cases are exported separately, these are prefixed with Debug. All debug checks should be hidden behind a DEBUG_MODE predicate.

Where an assertion is required in production code these should make use of _Production.

Documentation

See API reference for the latest API docs, for previous versions consult the documentation bundled in the package.

Developing

Building the C++

To see the required version, see the Echo versions step of CI. Recent versions of all tools should build.

  • install emscripten (and use their env utility to set required env vars)
  • install cmake
  • install ninja build

Debugging

To debug the C++ in the browser, you will need to install DevTools DWARF support.

To debug the CTests you'll need vscode with extensions (clion doesn't support this):

  • ms-vscode.cpptools
  • cmake-tools
  • wasm-dwarf-debugging

You should be able to build and use bundled launch config to debug. Synchronous tests require a breakpoint to be put in the JavaScript glue code in callMain. The test fixtures live under cpp/build/{preset}/test/TestFixture.js.

Hints:

  • Enable the CMake Tools extension status bar
  • Leave the kit unspecified
  • Use the cmake presets (they configure the toolchain for you...)
  • Use the address sanitized preset
  • Build the project via npm run build first, it creates other required files
9.0.9-alpha.71

1 year ago

9.0.9-alpha.70

1 year ago

9.0.9-alpha.73

1 year ago

9.0.9-alpha.72

1 year ago

9.0.9-alpha.75

1 year ago

9.0.9-alpha.74

1 year ago

9.0.9-alpha.77

1 year ago

9.0.9-alpha.76

1 year ago

9.0.9-alpha.79

1 year ago

9.0.9-alpha.78

1 year ago

9.0.9-alpha.82

1 year ago

9.0.9-alpha.81

1 year ago

9.0.9-alpha.83

1 year ago

9.0.9-alpha.80

1 year ago

9.0.9-alpha.66

1 year ago

9.0.9-alpha.68

1 year ago

9.0.9-alpha.67

1 year ago

9.0.9-alpha.69

1 year ago

9.0.9-alpha.65

2 years ago

9.0.9-alpha.59

2 years ago

9.0.9-alpha.58

2 years ago

9.0.9-alpha.60

2 years ago

9.0.9-alpha.62

2 years ago

9.0.9-alpha.61

2 years ago

9.0.9-alpha.64

2 years ago

9.0.9-alpha.63

2 years ago

9.0.9-alpha.51

2 years ago

9.0.9-alpha.50

2 years ago

9.0.9-alpha.53

2 years ago

9.0.9-alpha.52

2 years ago

9.0.9-alpha.55

2 years ago

9.0.9-alpha.54

2 years ago

9.0.9-alpha.57

2 years ago

9.0.9-alpha.56

2 years ago

9.0.9-alpha.48

2 years ago

9.0.9-alpha.47

2 years ago

9.0.9-alpha.49

2 years ago

9.0.9-alpha.46

2 years ago

9.0.9-alpha.45

2 years ago

9.0.9-alpha.44

2 years ago

9.0.9-alpha.43

2 years ago

9.0.9-alpha.39

2 years ago

9.0.9-alpha.38

2 years ago

9.0.9-alpha.40

2 years ago

9.0.9-alpha.42

2 years ago

9.0.9-alpha.41

2 years ago

9.0.9-alpha.37

2 years ago

9.0.9-alpha.36

2 years ago

9.0.9-alpha.35

2 years ago

9.0.9-alpha.31

3 years ago

9.0.9-alpha.30

3 years ago

9.0.9-alpha.33

3 years ago

9.0.9-alpha.32

3 years ago

9.0.9-alpha.27

3 years ago

9.0.9-alpha.28

3 years ago

9.0.9-alpha.21

3 years ago

9.0.9-alpha.22

3 years ago

9.0.9-alpha.25

3 years ago

9.0.9-alpha.26

3 years ago

9.0.9-alpha.23

3 years ago

9.0.9-alpha.24

3 years ago

9.0.9-alpha.18

3 years ago

9.0.9-alpha.19

3 years ago

9.0.9-alpha.20

3 years ago

9.0.8

4 years ago

9.0.7

4 years ago

9.0.6

4 years ago

9.0.5

4 years ago

9.0.4

4 years ago

9.0.3

4 years ago

9.0.2

4 years ago

9.0.1

4 years ago

9.0.0

4 years ago

9.0.9-alpha.6

4 years ago

9.0.9-alpha.5

4 years ago

9.0.9-alpha.4

4 years ago

9.0.9-alpha.3

4 years ago

9.0.9-alpha.2

4 years ago

9.0.9-alpha.1

4 years ago

9.0.9-alpha.0

4 years ago

9.0.9-alpha.9

4 years ago

9.0.9-alpha.8

4 years ago

9.0.9-alpha.7

4 years ago

9.0.9-alpha.10

4 years ago

9.0.9-alpha.11

4 years ago

9.0.9-alpha.14

4 years ago

9.0.9-alpha.15

4 years ago

9.0.9-alpha.12

4 years ago

9.0.9-alpha.13

4 years ago

9.0.9-alpha.16

4 years ago

8.15.0

4 years ago

8.19.0

4 years ago

8.16.0

4 years ago

8.16.1

4 years ago

8.17.0

4 years ago

8.18.0

4 years ago

8.18.2

4 years ago

8.18.1

4 years ago

8.18.3

4 years ago

8.11.0

5 years ago

8.12.0

5 years ago

8.12.1

5 years ago

8.13.0

5 years ago

8.14.0

4 years ago

8.14.1

4 years ago

8.10.0

5 years ago

8.6.0

5 years ago

9.0.0-alpha.0

5 years ago

8.3.1

5 years ago

8.7.0

5 years ago

8.8.0

5 years ago

8.4.0

5 years ago

8.3.0

5 years ago

8.9.0

5 years ago

8.5.0

5 years ago

8.5.2

5 years ago

8.5.1

5 years ago

8.1.0

5 years ago

8.2.0

5 years ago

8.0.1

5 years ago

8.0.0

5 years ago

7.5.0

5 years ago

7.3.1

5 years ago

7.3.0

5 years ago

7.4.0

5 years ago

7.2.0

5 years ago

7.0.0

5 years ago

7.1.0

5 years ago

6.6.0

5 years ago

6.5.0

5 years ago

6.3.0

5 years ago

6.4.0

5 years ago

6.2.0

5 years ago

6.1.0

5 years ago

5.0.0-alpha.95

5 years ago

6.0.0

5 years ago

5.0.0-alpha.94

5 years ago

5.0.0-alpha.93

5 years ago

5.0.0-alpha.91

5 years ago

5.0.0-alpha.92

5 years ago

5.0.0-alpha.90

5 years ago

5.0.0-alpha.88

5 years ago

5.0.0-alpha.89

5 years ago

5.0.0-alpha.82

5 years ago

5.0.0-alpha.83

5 years ago

5.0.0-alpha.80

5 years ago

5.0.0-alpha.81

5 years ago

5.0.0-alpha.79

5 years ago

5.0.0-alpha.77

5 years ago

5.0.0-alpha.78

5 years ago

5.0.0-alpha.86

5 years ago

5.0.0-alpha.87

5 years ago

5.0.0-alpha.84

5 years ago

5.0.0-alpha.85

5 years ago

5.0.0-alpha.76

5 years ago

5.0.0-alpha.72

5 years ago

5.0.0-alpha.75

5 years ago

5.0.0-alpha.73

5 years ago

5.0.0-alpha.74

5 years ago

5.0.0-alpha.71

5 years ago

5.0.0-alpha.70

5 years ago

5.0.0-alpha.68

5 years ago

5.0.0-alpha.69

5 years ago

5.0.0-alpha.66

5 years ago

5.0.0-alpha.67

5 years ago

5.0.0-alpha.65

5 years ago

5.0.0-alpha.64

5 years ago

5.0.0-alpha.63

5 years ago

5.0.0-alpha.61

5 years ago

5.0.0-alpha.62

5 years ago

5.0.0-alpha.60

5 years ago

5.0.0-alpha.59

5 years ago

5.0.0-alpha.57

5 years ago

5.0.0-alpha.58

5 years ago

5.0.0-alpha.56

5 years ago

5.0.0-alpha.55

5 years ago

5.0.0-alpha.54

5 years ago

5.0.0-alpha.53

5 years ago

5.0.0-alpha.51

5 years ago

5.0.0-alpha.52

5 years ago

5.0.0-alpha.50

5 years ago

5.0.0-alpha.49

5 years ago

5.0.0-alpha.48

5 years ago

5.0.0-alpha.46

5 years ago

5.0.0-alpha.47

5 years ago

5.0.0-alpha.45

5 years ago

5.0.0-alpha.44

5 years ago

5.0.0-alpha.43

5 years ago

5.0.0-alpha.42

5 years ago

5.0.0-alpha.39

5 years ago

5.0.0-alpha.40

5 years ago

5.0.0-alpha.41

5 years ago

5.0.0-alpha.38

5 years ago

5.0.0-alpha.37

5 years ago

5.0.0-alpha.35

5 years ago

5.0.0-alpha.36

5 years ago

5.0.0-alpha.33

5 years ago

5.0.0-alpha.34

5 years ago

5.0.0-alpha.31

5 years ago

5.0.0-alpha.32

5 years ago

5.0.0-alpha.28

5 years ago

5.0.0-alpha.29

5 years ago

5.0.0-alpha.26

5 years ago

5.0.0-alpha.27

5 years ago

5.0.0-alpha.24

5 years ago

5.0.0-alpha.25

5 years ago

5.0.0-alpha.22

5 years ago

5.0.0-alpha.23

5 years ago

5.0.0-alpha.30

5 years ago

5.0.0-alpha.21

5 years ago

5.0.0-alpha.19

5 years ago

5.0.0-alpha.17

5 years ago

5.0.0-alpha.18

5 years ago

5.0.0-alpha.15

5 years ago

5.0.0-alpha.16

5 years ago

5.0.0-alpha.13

5 years ago

5.0.0-alpha.14

5 years ago

5.0.0-alpha.20

5 years ago

5.0.0-alpha.7

5 years ago

5.0.0-alpha.6

5 years ago

5.0.0-alpha.9

5 years ago

5.0.0-alpha.8

5 years ago

5.0.0-alpha.11

5 years ago

5.0.0-alpha.12

5 years ago

5.0.0-alpha.10

5 years ago

5.0.0-alpha.5

5 years ago

5.0.0-alpha.4

5 years ago

5.0.0-alpha.3

5 years ago

5.0.0-alpha.2

5 years ago

5.0.0-alpha.1

5 years ago

5.0.0-alpha.0

5 years ago

4.2.1

5 years ago

5.0.0-alpha11

5 years ago

5.0.0-alpha9

5 years ago

5.0.0-alph10

5 years ago

5.0.0-alpha10

5 years ago

5.0.0-alpha4

5 years ago

5.0.0-alpha5

5 years ago

5.0.0-alpha2

5 years ago

5.0.0-alpha3

5 years ago

5.0.0-alpha8

5 years ago

5.0.0-alpha6

5 years ago

5.0.0-alpha7

5 years ago

5.0.0-alpha0

5 years ago

5.0.0-alpha1

5 years ago

4.1.0

5 years ago

4.1.2

5 years ago

4.2.0

5 years ago

4.1.1

5 years ago

4.0.0

5 years ago

3.9.0

5 years ago

3.8.1

5 years ago

3.8.0

5 years ago

3.7.0

6 years ago

3.6.1

6 years ago

3.6.0

6 years ago

3.5.0

6 years ago

3.4.1

6 years ago

3.4.0

6 years ago

3.3.0

6 years ago

3.2.0

6 years ago

3.1.0

6 years ago

3.0.0

6 years ago

2.0.0

6 years ago

1.2.0

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.0.0

7 years ago