9.0.9-alpha.83 • Published 4 months ago

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

Weekly downloads
25
License
MIT
Repository
github
Last release
4 months 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

5 months ago

9.0.9-alpha.70

5 months ago

9.0.9-alpha.73

5 months ago

9.0.9-alpha.72

5 months ago

9.0.9-alpha.75

5 months ago

9.0.9-alpha.74

5 months ago

9.0.9-alpha.77

5 months ago

9.0.9-alpha.76

5 months ago

9.0.9-alpha.79

5 months ago

9.0.9-alpha.78

5 months ago

9.0.9-alpha.82

4 months ago

9.0.9-alpha.81

5 months ago

9.0.9-alpha.83

4 months ago

9.0.9-alpha.80

5 months ago

9.0.9-alpha.66

8 months ago

9.0.9-alpha.68

8 months ago

9.0.9-alpha.67

8 months ago

9.0.9-alpha.69

5 months ago

9.0.9-alpha.65

9 months ago

9.0.9-alpha.59

10 months ago

9.0.9-alpha.58

11 months ago

9.0.9-alpha.60

10 months ago

9.0.9-alpha.62

10 months ago

9.0.9-alpha.61

10 months ago

9.0.9-alpha.64

9 months ago

9.0.9-alpha.63

9 months ago

9.0.9-alpha.51

1 year ago

9.0.9-alpha.50

1 year ago

9.0.9-alpha.53

1 year ago

9.0.9-alpha.52

1 year ago

9.0.9-alpha.55

12 months ago

9.0.9-alpha.54

1 year ago

9.0.9-alpha.57

11 months ago

9.0.9-alpha.56

12 months ago

9.0.9-alpha.48

1 year ago

9.0.9-alpha.47

1 year ago

9.0.9-alpha.49

1 year ago

9.0.9-alpha.46

1 year ago

9.0.9-alpha.45

1 year ago

9.0.9-alpha.44

1 year ago

9.0.9-alpha.43

1 year ago

9.0.9-alpha.39

1 year ago

9.0.9-alpha.38

1 year ago

9.0.9-alpha.40

1 year ago

9.0.9-alpha.42

1 year ago

9.0.9-alpha.41

1 year ago

9.0.9-alpha.37

1 year ago

9.0.9-alpha.36

1 year ago

9.0.9-alpha.35

1 year ago

9.0.9-alpha.31

2 years ago

9.0.9-alpha.30

2 years ago

9.0.9-alpha.33

2 years ago

9.0.9-alpha.32

2 years ago

9.0.9-alpha.27

2 years ago

9.0.9-alpha.28

2 years ago

9.0.9-alpha.21

2 years ago

9.0.9-alpha.22

2 years ago

9.0.9-alpha.25

2 years ago

9.0.9-alpha.26

2 years ago

9.0.9-alpha.23

2 years ago

9.0.9-alpha.24

2 years ago

9.0.9-alpha.18

2 years ago

9.0.9-alpha.19

2 years ago

9.0.9-alpha.20

2 years ago

9.0.8

3 years ago

9.0.7

3 years ago

9.0.6

3 years ago

9.0.5

3 years ago

9.0.4

3 years ago

9.0.3

3 years ago

9.0.2

3 years ago

9.0.1

3 years ago

9.0.0

3 years ago

9.0.9-alpha.6

3 years ago

9.0.9-alpha.5

3 years ago

9.0.9-alpha.4

3 years ago

9.0.9-alpha.3

3 years ago

9.0.9-alpha.2

3 years ago

9.0.9-alpha.1

3 years ago

9.0.9-alpha.0

3 years ago

9.0.9-alpha.9

3 years ago

9.0.9-alpha.8

3 years ago

9.0.9-alpha.7

3 years ago

9.0.9-alpha.10

3 years ago

9.0.9-alpha.11

3 years ago

9.0.9-alpha.14

3 years ago

9.0.9-alpha.15

3 years ago

9.0.9-alpha.12

3 years ago

9.0.9-alpha.13

3 years ago

9.0.9-alpha.16

3 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

4 years ago

8.12.0

4 years ago

8.12.1

4 years ago

8.13.0

4 years ago

8.14.0

4 years ago

8.14.1

4 years ago

8.10.0

4 years ago

8.6.0

4 years ago

9.0.0-alpha.0

4 years ago

8.3.1

4 years ago

8.7.0

4 years ago

8.8.0

4 years ago

8.4.0

4 years ago

8.3.0

4 years ago

8.9.0

4 years ago

8.5.0

4 years ago

8.5.2

4 years ago

8.5.1

4 years ago

8.1.0

4 years ago

8.2.0

4 years ago

8.0.1

4 years ago

8.0.0

4 years ago

7.5.0

4 years ago

7.3.1

4 years ago

7.3.0

4 years ago

7.4.0

4 years ago

7.2.0

4 years ago

7.0.0

4 years ago

7.1.0

4 years ago

6.6.0

4 years ago

6.5.0

4 years ago

6.3.0

4 years ago

6.4.0

4 years ago

6.2.0

4 years ago

6.1.0

4 years ago

5.0.0-alpha.95

4 years ago

6.0.0

4 years ago

5.0.0-alpha.94

4 years ago

5.0.0-alpha.93

4 years ago

5.0.0-alpha.91

4 years ago

5.0.0-alpha.92

4 years ago

5.0.0-alpha.90

4 years ago

5.0.0-alpha.88

4 years ago

5.0.0-alpha.89

4 years ago

5.0.0-alpha.82

4 years ago

5.0.0-alpha.83

4 years ago

5.0.0-alpha.80

4 years ago

5.0.0-alpha.81

4 years ago

5.0.0-alpha.79

4 years ago

5.0.0-alpha.77

4 years ago

5.0.0-alpha.78

4 years ago

5.0.0-alpha.86

4 years ago

5.0.0-alpha.87

4 years ago

5.0.0-alpha.84

4 years ago

5.0.0-alpha.85

4 years ago

5.0.0-alpha.76

4 years ago

5.0.0-alpha.72

4 years ago

5.0.0-alpha.75

4 years ago

5.0.0-alpha.73

4 years ago

5.0.0-alpha.74

4 years ago

5.0.0-alpha.71

4 years ago

5.0.0-alpha.70

4 years ago

5.0.0-alpha.68

4 years ago

5.0.0-alpha.69

4 years ago

5.0.0-alpha.66

4 years ago

5.0.0-alpha.67

4 years ago

5.0.0-alpha.65

4 years ago

5.0.0-alpha.64

4 years ago

5.0.0-alpha.63

4 years ago

5.0.0-alpha.61

4 years ago

5.0.0-alpha.62

4 years ago

5.0.0-alpha.60

4 years ago

5.0.0-alpha.59

4 years ago

5.0.0-alpha.57

4 years ago

5.0.0-alpha.58

4 years ago

5.0.0-alpha.56

4 years ago

5.0.0-alpha.55

4 years ago

5.0.0-alpha.54

4 years ago

5.0.0-alpha.53

4 years ago

5.0.0-alpha.51

4 years ago

5.0.0-alpha.52

4 years ago

5.0.0-alpha.50

4 years ago

5.0.0-alpha.49

4 years ago

5.0.0-alpha.48

4 years ago

5.0.0-alpha.46

4 years ago

5.0.0-alpha.47

4 years ago

5.0.0-alpha.45

4 years ago

5.0.0-alpha.44

4 years ago

5.0.0-alpha.43

4 years ago

5.0.0-alpha.42

4 years ago

5.0.0-alpha.39

4 years ago

5.0.0-alpha.40

4 years ago

5.0.0-alpha.41

4 years ago

5.0.0-alpha.38

4 years ago

5.0.0-alpha.37

4 years ago

5.0.0-alpha.35

4 years ago

5.0.0-alpha.36

4 years ago

5.0.0-alpha.33

4 years ago

5.0.0-alpha.34

4 years ago

5.0.0-alpha.31

4 years ago

5.0.0-alpha.32

4 years ago

5.0.0-alpha.28

4 years ago

5.0.0-alpha.29

4 years ago

5.0.0-alpha.26

4 years ago

5.0.0-alpha.27

4 years ago

5.0.0-alpha.24

4 years ago

5.0.0-alpha.25

4 years ago

5.0.0-alpha.22

4 years ago

5.0.0-alpha.23

4 years ago

5.0.0-alpha.30

4 years ago

5.0.0-alpha.21

4 years ago

5.0.0-alpha.19

4 years ago

5.0.0-alpha.17

4 years ago

5.0.0-alpha.18

4 years ago

5.0.0-alpha.15

4 years ago

5.0.0-alpha.16

4 years ago

5.0.0-alpha.13

4 years ago

5.0.0-alpha.14

4 years ago

5.0.0-alpha.20

4 years ago

5.0.0-alpha.7

4 years ago

5.0.0-alpha.6

4 years ago

5.0.0-alpha.9

4 years ago

5.0.0-alpha.8

4 years ago

5.0.0-alpha.11

4 years ago

5.0.0-alpha.12

4 years ago

5.0.0-alpha.10

4 years ago

5.0.0-alpha.5

4 years ago

5.0.0-alpha.4

4 years ago

5.0.0-alpha.3

4 years ago

5.0.0-alpha.2

4 years ago

5.0.0-alpha.1

4 years ago

5.0.0-alpha.0

4 years ago

4.2.1

4 years ago

5.0.0-alpha11

4 years ago

5.0.0-alpha9

4 years ago

5.0.0-alph10

4 years ago

5.0.0-alpha10

4 years ago

5.0.0-alpha4

4 years ago

5.0.0-alpha5

4 years ago

5.0.0-alpha2

4 years ago

5.0.0-alpha3

4 years ago

5.0.0-alpha8

4 years ago

5.0.0-alpha6

4 years ago

5.0.0-alpha7

4 years ago

5.0.0-alpha0

4 years ago

5.0.0-alpha1

4 years ago

4.1.0

4 years ago

4.1.2

4 years ago

4.2.0

4 years ago

4.1.1

4 years ago

4.0.0

4 years ago

3.9.0

4 years ago

3.8.1

5 years ago

3.8.0

5 years ago

3.7.0

5 years ago

3.6.1

5 years ago

3.6.0

5 years ago

3.5.0

5 years ago

3.4.1

5 years ago

3.4.0

5 years ago

3.3.0

5 years ago

3.2.0

5 years ago

3.1.0

5 years ago

3.0.0

5 years ago

2.0.0

5 years ago

1.2.0

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.0.0

6 years ago