@thi.ng/soa 0.2.24 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -68
- package/README.md +15 -6
- package/aos.d.ts +2 -2
- package/aos.js +4 -4
- package/index.d.ts +4 -4
- package/index.js +4 -4
- package/package.json +44 -29
- package/serialize.d.ts +1 -1
- package/serialize.js +2 -2
- package/soa.d.ts +3 -2
- package/soa.js +4 -3
- package/utils.d.ts +1 -1
- package/utils.js +1 -1
- package/lib/index.js +0 -246
- package/lib/index.js.map +0 -1
- package/lib/index.umd.js +0 -1
- package/lib/index.umd.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [0.
|
|
6
|
+
## [0.3.3](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.3.2...@thi.ng/soa@0.3.3) (2021-10-15)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @thi.ng/soa
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
## [0.2
|
|
14
|
+
## [0.3.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.3.1...@thi.ng/soa@0.3.2) (2021-10-15)
|
|
15
15
|
|
|
16
16
|
**Note:** Version bump only for package @thi.ng/soa
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
## [0.
|
|
22
|
+
## [0.3.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.3.0...@thi.ng/soa@0.3.1) (2021-10-13)
|
|
23
23
|
|
|
24
24
|
**Note:** Version bump only for package @thi.ng/soa
|
|
25
25
|
|
|
@@ -27,93 +27,58 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
# [0.3.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.2.25...@thi.ng/soa@0.3.0) (2021-10-12)
|
|
31
31
|
|
|
32
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## [0.2.20](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.2.19...@thi.ng/soa@0.2.20) (2021-08-08)
|
|
39
|
-
|
|
40
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
## [0.2.19](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.2.18...@thi.ng/soa@0.2.19) (2021-08-04)
|
|
47
|
-
|
|
48
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
## [0.2.18](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.2.17...@thi.ng/soa@0.2.18) (2021-08-04)
|
|
55
|
-
|
|
56
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
57
32
|
|
|
33
|
+
### Build System
|
|
58
34
|
|
|
35
|
+
* major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
|
|
59
36
|
|
|
60
37
|
|
|
38
|
+
### BREAKING CHANGES
|
|
61
39
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## [0.2.16](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.2.15...@thi.ng/soa@0.2.16) (2021-07-01)
|
|
71
|
-
|
|
72
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
## [0.2.15](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.2.14...@thi.ng/soa@0.2.15) (2021-06-08)
|
|
79
|
-
|
|
80
|
-
**Note:** Version bump only for package @thi.ng/soa
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
40
|
+
* discontinue CommonJS & UMD versions
|
|
85
41
|
|
|
86
|
-
|
|
42
|
+
- only ESM modules will be published from now on
|
|
43
|
+
- CJS obsolete due to ESM support in recent versions of node:
|
|
44
|
+
- i.e. launch NodeJS via:
|
|
45
|
+
- `node --experimental-specifier-resolution=node --experimental-repl-await`
|
|
46
|
+
- in the node REPL use `await import(...)` instead of `require()`
|
|
47
|
+
- UMD obsolete due to widespread browser support for ESM
|
|
87
48
|
|
|
49
|
+
Also:
|
|
50
|
+
- normalize/restructure/reorg all package.json files
|
|
51
|
+
- cleanup all build scripts, remove obsolete
|
|
52
|
+
- switch from mocha to @thi.ng/testament for all tests
|
|
88
53
|
|
|
89
|
-
### Code Refactoring
|
|
90
54
|
|
|
91
|
-
* **soa:** update attrib type handling ([274dadf](https://github.com/thi-ng/umbrella/commit/274dadf2507ac4daeea59c53a0f408343d582d8e))
|
|
92
55
|
|
|
93
56
|
|
|
94
|
-
### BREAKING CHANGES
|
|
95
57
|
|
|
96
|
-
* **soa:** attrib buffer data type use string consts
|
|
97
58
|
|
|
98
|
-
-
|
|
99
|
-
(see a333d4182)
|
|
59
|
+
# [0.2.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/soa@0.1.47...@thi.ng/soa@0.2.0) (2021-02-20)
|
|
100
60
|
|
|
61
|
+
### Code Refactoring
|
|
101
62
|
|
|
63
|
+
- **soa:** update attrib type handling ([274dadf](https://github.com/thi-ng/umbrella/commit/274dadf2507ac4daeea59c53a0f408343d582d8e))
|
|
102
64
|
|
|
65
|
+
### BREAKING CHANGES
|
|
103
66
|
|
|
67
|
+
- **soa:** attrib buffer data type use string consts
|
|
68
|
+
- part of unified umbrella-wide changes to thi.ng/api Type alias (see a333d4182)
|
|
104
69
|
|
|
105
|
-
#
|
|
70
|
+
# 0.1.0 (2019-11-09)
|
|
106
71
|
|
|
107
|
-
###
|
|
72
|
+
### Bug Fixes
|
|
108
73
|
|
|
109
|
-
|
|
74
|
+
- **soa:** remove obsolete imports ([2309ccd](https://github.com/thi-ng/umbrella/commit/2309ccd6e581b6f385f4a2720fd2ad5cfb8a0d79))
|
|
110
75
|
|
|
111
|
-
###
|
|
76
|
+
### Features
|
|
112
77
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
78
|
+
- **soa:** add new pkg [@thi](https://github.com/thi).ng/soa ([5f8ffa1](https://github.com/thi-ng/umbrella/commit/5f8ffa175fabc4518f6b931c8c57473ea8ab1a74))
|
|
79
|
+
- **soa:** add/update types, update aos(), add SOA.setValues(), tests ([b8e0780](https://github.com/thi-ng/umbrella/commit/b8e07806427041a7ef3413ca47357e3360f6a4c8))
|
|
80
|
+
- **soa:** update SOAAttribSpec.buf to use ArrayBuffer w/ opt offset ([2759570](https://github.com/thi-ng/umbrella/commit/27595700ce0df21258dad58e18abf98b8ddb7c30))
|
|
116
81
|
|
|
117
|
-
###
|
|
82
|
+
### Performance Improvements
|
|
118
83
|
|
|
119
|
-
|
|
84
|
+
- **soa:** update attribValues() impl ([786a02f](https://github.com/thi-ng/umbrella/commit/786a02f66fd0f50e678f3eb048964fadf293db3f))
|
package/README.md
CHANGED
|
@@ -66,15 +66,24 @@ by
|
|
|
66
66
|
yarn add @thi.ng/soa
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
ES module import:
|
|
70
|
+
|
|
69
71
|
```html
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
<script type="module" src="https://cdn.skypack.dev/@thi.ng/soa"></script>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
[Skypack documentation](https://docs.skypack.dev/)
|
|
76
|
+
|
|
77
|
+
For Node.js REPL:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
# with flag only for < v16
|
|
81
|
+
node --experimental-repl-await
|
|
72
82
|
|
|
73
|
-
|
|
74
|
-
<script src="https://unpkg.com/@thi.ng/soa/lib/index.umd.js" crossorigin></script>
|
|
83
|
+
> const soa = await import("@thi.ng/soa");
|
|
75
84
|
```
|
|
76
85
|
|
|
77
|
-
Package sizes (gzipped, pre-treeshake): ESM: 1.
|
|
86
|
+
Package sizes (gzipped, pre-treeshake): ESM: 1.43 KB
|
|
78
87
|
|
|
79
88
|
## Dependencies
|
|
80
89
|
|
|
@@ -93,7 +102,7 @@ directory are using this package.
|
|
|
93
102
|
A selection:
|
|
94
103
|
|
|
95
104
|
| Screenshot | Description | Live demo | Source |
|
|
96
|
-
|
|
105
|
+
|:--------------------------------------------------------------------------------------------------------------------|:---------------------------------------------|:-------------------------------------------------|:------------------------------------------------------------------------------|
|
|
97
106
|
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/soa-ecs-100k.png" width="240"/> | Entity Component System w/ 100k 3D particles | [Demo](https://demo.thi.ng/umbrella/soa-ecs/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/soa-ecs) |
|
|
98
107
|
| <img src="https://raw.githubusercontent.com/thi-ng/umbrella/develop/assets/examples/webgl-cube.png" width="240"/> | WebGL multi-colored cube mesh | [Demo](https://demo.thi.ng/umbrella/webgl-cube/) | [Source](https://github.com/thi-ng/umbrella/tree/develop/examples/webgl-cube) |
|
|
99
108
|
|
package/aos.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AOSSpecs } from "./api";
|
|
2
|
-
import { SOA } from "./soa";
|
|
1
|
+
import type { AOSSpecs } from "./api.js";
|
|
2
|
+
import { SOA } from "./soa.js";
|
|
3
3
|
/**
|
|
4
4
|
* Constructs SOA instance from given attrib specs and optional
|
|
5
5
|
* ArrayBuffer (w/ optional start address / byte offset, which MUST be
|
package/aos.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { SIZEOF } from "@thi.ng/api";
|
|
2
|
-
import { align } from "@thi.ng/binary";
|
|
3
|
-
import { SOA } from "./soa";
|
|
4
|
-
import { prepareSpec } from "./utils";
|
|
1
|
+
import { SIZEOF } from "@thi.ng/api/typedarray";
|
|
2
|
+
import { align } from "@thi.ng/binary/align";
|
|
3
|
+
import { SOA } from "./soa.js";
|
|
4
|
+
import { prepareSpec } from "./utils.js";
|
|
5
5
|
/**
|
|
6
6
|
* Constructs SOA instance from given attrib specs and optional
|
|
7
7
|
* ArrayBuffer (w/ optional start address / byte offset, which MUST be
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from "./api";
|
|
2
|
-
export * from "./aos";
|
|
3
|
-
export * from "./soa";
|
|
4
|
-
export * from "./serialize";
|
|
1
|
+
export * from "./api.js";
|
|
2
|
+
export * from "./aos.js";
|
|
3
|
+
export * from "./soa.js";
|
|
4
|
+
export * from "./serialize.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./api";
|
|
2
|
-
export * from "./aos";
|
|
3
|
-
export * from "./soa";
|
|
4
|
-
export * from "./serialize";
|
|
1
|
+
export * from "./api.js";
|
|
2
|
+
export * from "./aos.js";
|
|
3
|
+
export * from "./soa.js";
|
|
4
|
+
export * from "./serialize.js";
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thi.ng/soa",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "SOA & AOS memory mapped structured views with optional & extensible serialization",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"module": "./index.js",
|
|
6
|
-
"main": "./lib/index.js",
|
|
7
|
-
"umd:main": "./lib/index.umd.js",
|
|
8
7
|
"typings": "./index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "https://github.com/thi-ng/umbrella.git"
|
|
@@ -24,34 +24,26 @@
|
|
|
24
24
|
"author": "Karsten Schmidt <k+npm@thi.ng>",
|
|
25
25
|
"license": "Apache-2.0",
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "yarn clean &&
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"build:test": "rimraf build && tsc -p test/tsconfig.json",
|
|
31
|
-
"build:check": "tsc --isolatedModules --noEmit",
|
|
32
|
-
"test": "mocha test",
|
|
33
|
-
"cover": "nyc mocha test && nyc report --reporter=lcov",
|
|
34
|
-
"clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib",
|
|
35
|
-
"doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
|
|
36
|
-
"doc": "typedoc --excludePrivate --out doc --theme ../../tools/doc/typedoc-theme src/index.ts",
|
|
27
|
+
"build": "yarn clean && tsc --declaration",
|
|
28
|
+
"clean": "rimraf *.js *.d.ts *.map doc",
|
|
29
|
+
"doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
|
|
37
30
|
"doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
31
|
+
"doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
|
|
32
|
+
"doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
|
|
33
|
+
"pub": "yarn build && yarn publish --access public",
|
|
34
|
+
"test": "testament test"
|
|
42
35
|
},
|
|
43
36
|
"dependencies": {
|
|
44
|
-
"@thi.ng/api": "^
|
|
45
|
-
"@thi.ng/binary": "^
|
|
46
|
-
"@thi.ng/errors": "^
|
|
47
|
-
"@thi.ng/transducers-binary": "^
|
|
48
|
-
"@thi.ng/vectors": "^
|
|
37
|
+
"@thi.ng/api": "^8.0.3",
|
|
38
|
+
"@thi.ng/binary": "^3.0.3",
|
|
39
|
+
"@thi.ng/errors": "^2.0.3",
|
|
40
|
+
"@thi.ng/transducers-binary": "^2.0.3",
|
|
41
|
+
"@thi.ng/vectors": "^7.0.3"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@thi.ng/equiv": "^2.0.3",
|
|
45
|
+
"@thi.ng/testament": "^0.1.3"
|
|
49
46
|
},
|
|
50
|
-
"files": [
|
|
51
|
-
"*.js",
|
|
52
|
-
"*.d.ts",
|
|
53
|
-
"lib"
|
|
54
|
-
],
|
|
55
47
|
"keywords": [
|
|
56
48
|
"acceleration",
|
|
57
49
|
"aos",
|
|
@@ -72,7 +64,30 @@
|
|
|
72
64
|
"publishConfig": {
|
|
73
65
|
"access": "public"
|
|
74
66
|
},
|
|
75
|
-
"
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=12.7"
|
|
69
|
+
},
|
|
70
|
+
"files": [
|
|
71
|
+
"*.js",
|
|
72
|
+
"*.d.ts"
|
|
73
|
+
],
|
|
74
|
+
"exports": {
|
|
75
|
+
".": {
|
|
76
|
+
"import": "./index.js"
|
|
77
|
+
},
|
|
78
|
+
"./aos": {
|
|
79
|
+
"import": "./aos.js"
|
|
80
|
+
},
|
|
81
|
+
"./api": {
|
|
82
|
+
"import": "./api.js"
|
|
83
|
+
},
|
|
84
|
+
"./serialize": {
|
|
85
|
+
"import": "./serialize.js"
|
|
86
|
+
},
|
|
87
|
+
"./soa": {
|
|
88
|
+
"import": "./soa.js"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
76
91
|
"thi.ng": {
|
|
77
92
|
"related": [
|
|
78
93
|
"ecs",
|
|
@@ -85,5 +100,5 @@
|
|
|
85
100
|
"status": "alpha",
|
|
86
101
|
"year": 2019
|
|
87
102
|
},
|
|
88
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "1fb38cac74d6c009d96855c28784a267a81badf1"
|
|
89
104
|
}
|
package/serialize.d.ts
CHANGED
package/serialize.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { assert } from "@thi.ng/
|
|
2
|
-
import { utf8Decode, utf8Encode } from "@thi.ng/transducers-binary";
|
|
1
|
+
import { assert } from "@thi.ng/errors/assert";
|
|
2
|
+
import { utf8Decode, utf8Encode } from "@thi.ng/transducers-binary/utf8";
|
|
3
3
|
/**
|
|
4
4
|
* Identity serializer pair (no op).
|
|
5
5
|
*/
|
package/soa.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ILength
|
|
1
|
+
import type { ILength } from "@thi.ng/api";
|
|
2
|
+
import { TypedArray } from "@thi.ng/api/typedarray";
|
|
2
3
|
import type { ReadonlyVec, Vec } from "@thi.ng/vectors";
|
|
3
|
-
import type { SOAAttribSpec, SOASpecs, SOATuple } from "./api";
|
|
4
|
+
import type { SOAAttribSpec, SOASpecs, SOATuple } from "./api.js";
|
|
4
5
|
export declare class SOA<K extends string> implements ILength {
|
|
5
6
|
length: number;
|
|
6
7
|
buffers: Record<K, TypedArray>;
|
package/soa.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { SIZEOF, typedArray } from "@thi.ng/api/typedarray";
|
|
2
|
+
import { assert } from "@thi.ng/errors/assert";
|
|
3
|
+
import { ensureIndex } from "@thi.ng/errors/out-of-bounds";
|
|
4
|
+
import { prepareSpec } from "./utils.js";
|
|
4
5
|
export class SOA {
|
|
5
6
|
constructor(num, specs) {
|
|
6
7
|
this.length = num;
|
package/utils.d.ts
CHANGED
package/utils.js
CHANGED
package/lib/index.js
DELETED
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var api = require('@thi.ng/api');
|
|
6
|
-
var binary = require('@thi.ng/binary');
|
|
7
|
-
var errors = require('@thi.ng/errors');
|
|
8
|
-
var transducersBinary = require('@thi.ng/transducers-binary');
|
|
9
|
-
|
|
10
|
-
const prepareSpec = (spec) => {
|
|
11
|
-
spec = Object.assign({ type: "f32", size: 1 }, spec);
|
|
12
|
-
!spec.stride && (spec.stride = spec.size);
|
|
13
|
-
return spec;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
class SOA {
|
|
17
|
-
constructor(num, specs) {
|
|
18
|
-
this.length = num;
|
|
19
|
-
this.buffers = {};
|
|
20
|
-
this.specs = {};
|
|
21
|
-
this.addSpecs(specs);
|
|
22
|
-
}
|
|
23
|
-
keys() {
|
|
24
|
-
return Object.keys(this.specs);
|
|
25
|
-
}
|
|
26
|
-
*values(from = 0, to = this.length) {
|
|
27
|
-
errors.ensureIndex(from, 0, this.length);
|
|
28
|
-
errors.ensureIndex(to, from, this.length + 1);
|
|
29
|
-
for (; from < to; from++) {
|
|
30
|
-
yield this.indexUnsafe(from);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
attribValues(id, from = 0, to = this.length) {
|
|
34
|
-
this.ensureAttrib(id);
|
|
35
|
-
errors.ensureIndex(from, 0, this.length);
|
|
36
|
-
errors.ensureIndex(to, from, this.length + 1);
|
|
37
|
-
let { size, stride, type } = this.specs[id];
|
|
38
|
-
const buf = this.buffers[id].buffer;
|
|
39
|
-
stride *= api.SIZEOF[type];
|
|
40
|
-
from *= stride;
|
|
41
|
-
to *= stride;
|
|
42
|
-
const res = [];
|
|
43
|
-
for (; from < to; from += stride) {
|
|
44
|
-
res.push(api.typedArray(type, buf, from, size));
|
|
45
|
-
}
|
|
46
|
-
return res;
|
|
47
|
-
}
|
|
48
|
-
attribValue(id, i) {
|
|
49
|
-
this.ensureAttrib(id);
|
|
50
|
-
errors.ensureIndex(i, 0, this.length);
|
|
51
|
-
return this.attribValueUnsafe(id, i);
|
|
52
|
-
}
|
|
53
|
-
attribValueUnsafe(id, i) {
|
|
54
|
-
const spec = this.specs[id];
|
|
55
|
-
i *= spec.stride;
|
|
56
|
-
return this.buffers[id].subarray(i, i + spec.size);
|
|
57
|
-
}
|
|
58
|
-
setAttribValue(id, i, val) {
|
|
59
|
-
this.ensureAttrib(id);
|
|
60
|
-
errors.ensureIndex(i, 0, this.length);
|
|
61
|
-
const spec = this.specs[id];
|
|
62
|
-
api.assert(val.length <= spec.size, `${id} value too large`);
|
|
63
|
-
this.buffers[id].set(val, i * spec.stride);
|
|
64
|
-
}
|
|
65
|
-
setAttribValueUnsafe(id, i, val) {
|
|
66
|
-
this.buffers[id].set(val, i * this.specs[id].stride);
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
setAttribValues(id, vals, from = 0) {
|
|
70
|
-
this.ensureAttrib(id);
|
|
71
|
-
errors.ensureIndex(from, 0, this.length);
|
|
72
|
-
const buf = this.buffers[id];
|
|
73
|
-
const stride = this.specs[id].stride;
|
|
74
|
-
const end = this.length * stride;
|
|
75
|
-
let i = from * stride;
|
|
76
|
-
for (let v of vals) {
|
|
77
|
-
buf.set(v, i);
|
|
78
|
-
i += stride;
|
|
79
|
-
if (i >= end)
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
return this;
|
|
83
|
-
}
|
|
84
|
-
index(i, ids) {
|
|
85
|
-
errors.ensureIndex(i, 0, this.length);
|
|
86
|
-
return this.indexUnsafe(i, ids);
|
|
87
|
-
}
|
|
88
|
-
indexUnsafe(i, ids) {
|
|
89
|
-
const res = {};
|
|
90
|
-
if (ids) {
|
|
91
|
-
for (let i = ids.length; --i >= 0;) {
|
|
92
|
-
const id = ids[i];
|
|
93
|
-
res[id] = this.attribValueUnsafe(id, i);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
for (let id in this.specs) {
|
|
98
|
-
res[id] = this.attribValueUnsafe(id, i);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return res;
|
|
102
|
-
}
|
|
103
|
-
setIndex(i, vals) {
|
|
104
|
-
errors.ensureIndex(i, 0, this.length);
|
|
105
|
-
for (let id in vals) {
|
|
106
|
-
this.setAttribValue(id, i, vals[id]);
|
|
107
|
-
}
|
|
108
|
-
return this;
|
|
109
|
-
}
|
|
110
|
-
setIndexUnsafe(i, vals) {
|
|
111
|
-
for (let id in vals) {
|
|
112
|
-
this.setAttribValueUnsafe(id, i, vals[id]);
|
|
113
|
-
}
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
setValues(vals, from = 0) {
|
|
117
|
-
for (let id in vals) {
|
|
118
|
-
this.setAttribValues(id, vals[id], from);
|
|
119
|
-
}
|
|
120
|
-
return this;
|
|
121
|
-
}
|
|
122
|
-
copyTo(dest, ids, destFrom = 0, srcFrom = 0, srcTo = this.length) {
|
|
123
|
-
errors.ensureIndex(srcFrom, 0, this.length);
|
|
124
|
-
errors.ensureIndex(srcTo, srcFrom, this.length + 1);
|
|
125
|
-
const num = srcTo - srcFrom;
|
|
126
|
-
errors.ensureIndex(destFrom, 0, dest.length);
|
|
127
|
-
errors.ensureIndex(destFrom + num, destFrom, dest.length + 1);
|
|
128
|
-
ids = ids || Object.keys(this.specs);
|
|
129
|
-
for (let k = ids.length; --k >= 0;) {
|
|
130
|
-
const id = ids[k];
|
|
131
|
-
for (let i = srcFrom, j = destFrom; i < srcTo; i++, j++) {
|
|
132
|
-
dest.setAttribValueUnsafe(id, j, this.attribValueUnsafe(id, i));
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return dest;
|
|
136
|
-
}
|
|
137
|
-
addSpecs(specs) {
|
|
138
|
-
const num = this.length;
|
|
139
|
-
for (let id in specs) {
|
|
140
|
-
api.assert(!this.specs[id], `attrib ${id} already exists`);
|
|
141
|
-
const spec = prepareSpec(specs[id]);
|
|
142
|
-
this.validateSpec(id, spec);
|
|
143
|
-
const { stride, default: defVal } = spec;
|
|
144
|
-
const buffer = spec.buf
|
|
145
|
-
? api.typedArray(spec.type, spec.buf, spec.byteOffset || 0)
|
|
146
|
-
: api.typedArray(spec.type, num * stride);
|
|
147
|
-
if (defVal) {
|
|
148
|
-
for (let i = 0; i < num; i++) {
|
|
149
|
-
buffer.set(defVal, i * stride);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
this.specs[id] = spec;
|
|
153
|
-
this.buffers[id] = buffer;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
validateSpec(id, spec) {
|
|
157
|
-
api.assert(spec.stride >= spec.size, `${id} illegal stride`);
|
|
158
|
-
api.assert(!spec.buf ||
|
|
159
|
-
spec.buf.byteLength >=
|
|
160
|
-
((this.length - 1) * spec.stride + spec.size) *
|
|
161
|
-
api.SIZEOF[spec.type], `${id} buffer too small`);
|
|
162
|
-
api.assert(spec.default === undefined || spec.default.length === spec.size, `illegal default value for ${id}, expected size: ${spec.size}`);
|
|
163
|
-
}
|
|
164
|
-
ensureAttrib(id) {
|
|
165
|
-
api.assert(!!this.specs[id], `invalid attrib ${id}`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
const soa = (num, specs) => new SOA(num, specs);
|
|
169
|
-
|
|
170
|
-
const aos = (num, specs, buf, byteOffset = 0) => {
|
|
171
|
-
let total = 0;
|
|
172
|
-
let maxSize = 0;
|
|
173
|
-
const offsets = {};
|
|
174
|
-
const soaSpecs = {};
|
|
175
|
-
for (let id in specs) {
|
|
176
|
-
const spec = prepareSpec(specs[id]);
|
|
177
|
-
const tsize = api.SIZEOF[spec.type];
|
|
178
|
-
maxSize = Math.max(maxSize, tsize);
|
|
179
|
-
total = binary.align(total, tsize);
|
|
180
|
-
offsets[id] = total;
|
|
181
|
-
total += tsize * spec.size;
|
|
182
|
-
soaSpecs[id] = spec;
|
|
183
|
-
}
|
|
184
|
-
total = binary.align(total, maxSize);
|
|
185
|
-
buf = buf || new ArrayBuffer(total * num + byteOffset);
|
|
186
|
-
for (let id in soaSpecs) {
|
|
187
|
-
const spec = soaSpecs[id];
|
|
188
|
-
const tsize = api.SIZEOF[spec.type];
|
|
189
|
-
spec.stride = total / tsize;
|
|
190
|
-
spec.buf = buf;
|
|
191
|
-
spec.byteOffset = byteOffset + offsets[id];
|
|
192
|
-
}
|
|
193
|
-
return new SOA(num, soaSpecs);
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
const ident = {
|
|
197
|
-
decode: (x) => x,
|
|
198
|
-
encode: (x) => x,
|
|
199
|
-
};
|
|
200
|
-
const scalar = {
|
|
201
|
-
decode: (v) => v[0],
|
|
202
|
-
encode: (x) => [x],
|
|
203
|
-
};
|
|
204
|
-
const toUTF8 = transducersBinary.utf8Decode();
|
|
205
|
-
const utf8z = (maxLen) => ({
|
|
206
|
-
decode: (v) => {
|
|
207
|
-
let acc = "";
|
|
208
|
-
const xf = toUTF8([null, null, (_, x) => (acc += x)])[2];
|
|
209
|
-
for (let i = 0, n = v.length; i < n; i++) {
|
|
210
|
-
const c = v[i];
|
|
211
|
-
if (c === 0)
|
|
212
|
-
break;
|
|
213
|
-
xf(acc, c);
|
|
214
|
-
}
|
|
215
|
-
return acc;
|
|
216
|
-
},
|
|
217
|
-
encode: (v) => {
|
|
218
|
-
const bytes = [...transducersBinary.utf8Encode(v), 0];
|
|
219
|
-
api.assert(bytes.length <= maxLen, `string too large: "${v}"`);
|
|
220
|
-
return bytes;
|
|
221
|
-
},
|
|
222
|
-
});
|
|
223
|
-
const serializer = (specs) => ({
|
|
224
|
-
decode(tuple) {
|
|
225
|
-
const res = {};
|
|
226
|
-
for (let id in tuple) {
|
|
227
|
-
res[id] = specs[id].decode(tuple[id]);
|
|
228
|
-
}
|
|
229
|
-
return res;
|
|
230
|
-
},
|
|
231
|
-
encode: (tuple) => {
|
|
232
|
-
const res = {};
|
|
233
|
-
for (let id in tuple) {
|
|
234
|
-
res[id] = specs[id].encode(tuple[id]);
|
|
235
|
-
}
|
|
236
|
-
return res;
|
|
237
|
-
},
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
exports.SOA = SOA;
|
|
241
|
-
exports.aos = aos;
|
|
242
|
-
exports.ident = ident;
|
|
243
|
-
exports.scalar = scalar;
|
|
244
|
-
exports.serializer = serializer;
|
|
245
|
-
exports.soa = soa;
|
|
246
|
-
exports.utf8z = utf8z;
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../utils.js","../soa.js","../aos.js","../serialize.js"],"sourcesContent":null,"names":["ensureIndex","SIZEOF","typedArray","assert","align","utf8Decode","utf8Encode"],"mappings":"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"}
|
package/lib/index.umd.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@thi.ng/api"),require("@thi.ng/binary"),require("@thi.ng/errors"),require("@thi.ng/transducers-binary")):"function"==typeof define&&define.amd?define(["exports","@thi.ng/api","@thi.ng/binary","@thi.ng/errors","@thi.ng/transducers-binary"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).thi=e.thi||{},e.thi.ng=e.thi.ng||{},e.thi.ng.soa={}),e.thi.ng.api,e.thi.ng.binary,e.thi.ng.errors,e.thi.ng.transducersBinary)}(this,(function(e,t,s,n,i){"use strict";const r=e=>(!(e=Object.assign({type:"f32",size:1},e)).stride&&(e.stride=e.size),e);class h{constructor(e,t){this.length=e,this.buffers={},this.specs={},this.addSpecs(t)}keys(){return Object.keys(this.specs)}*values(e=0,t=this.length){for(n.ensureIndex(e,0,this.length),n.ensureIndex(t,e,this.length+1);e<t;e++)yield this.indexUnsafe(e)}attribValues(e,s=0,i=this.length){this.ensureAttrib(e),n.ensureIndex(s,0,this.length),n.ensureIndex(i,s,this.length+1);let{size:r,stride:h,type:a}=this.specs[e];const l=this.buffers[e].buffer;h*=t.SIZEOF[a],s*=h,i*=h;const u=[];for(;s<i;s+=h)u.push(t.typedArray(a,l,s,r));return u}attribValue(e,t){return this.ensureAttrib(e),n.ensureIndex(t,0,this.length),this.attribValueUnsafe(e,t)}attribValueUnsafe(e,t){const s=this.specs[e];return t*=s.stride,this.buffers[e].subarray(t,t+s.size)}setAttribValue(e,s,i){this.ensureAttrib(e),n.ensureIndex(s,0,this.length);const r=this.specs[e];t.assert(i.length<=r.size,`${e} value too large`),this.buffers[e].set(i,s*r.stride)}setAttribValueUnsafe(e,t,s){return this.buffers[e].set(s,t*this.specs[e].stride),this}setAttribValues(e,t,s=0){this.ensureAttrib(e),n.ensureIndex(s,0,this.length);const i=this.buffers[e],r=this.specs[e].stride,h=this.length*r;let a=s*r;for(let e of t)if(i.set(e,a),a+=r,a>=h)break;return this}index(e,t){return n.ensureIndex(e,0,this.length),this.indexUnsafe(e,t)}indexUnsafe(e,t){const s={};if(t)for(let e=t.length;--e>=0;){const n=t[e];s[n]=this.attribValueUnsafe(n,e)}else for(let t in this.specs)s[t]=this.attribValueUnsafe(t,e);return s}setIndex(e,t){n.ensureIndex(e,0,this.length);for(let s in t)this.setAttribValue(s,e,t[s]);return this}setIndexUnsafe(e,t){for(let s in t)this.setAttribValueUnsafe(s,e,t[s]);return this}setValues(e,t=0){for(let s in e)this.setAttribValues(s,e[s],t);return this}copyTo(e,t,s=0,i=0,r=this.length){n.ensureIndex(i,0,this.length),n.ensureIndex(r,i,this.length+1);const h=r-i;n.ensureIndex(s,0,e.length),n.ensureIndex(s+h,s,e.length+1);for(let n=(t=t||Object.keys(this.specs)).length;--n>=0;){const h=t[n];for(let t=i,n=s;t<r;t++,n++)e.setAttribValueUnsafe(h,n,this.attribValueUnsafe(h,t))}return e}addSpecs(e){const s=this.length;for(let n in e){t.assert(!this.specs[n],`attrib ${n} already exists`);const i=r(e[n]);this.validateSpec(n,i);const{stride:h,default:a}=i,l=i.buf?t.typedArray(i.type,i.buf,i.byteOffset||0):t.typedArray(i.type,s*h);if(a)for(let e=0;e<s;e++)l.set(a,e*h);this.specs[n]=i,this.buffers[n]=l}}validateSpec(e,s){t.assert(s.stride>=s.size,`${e} illegal stride`),t.assert(!s.buf||s.buf.byteLength>=((this.length-1)*s.stride+s.size)*t.SIZEOF[s.type],`${e} buffer too small`),t.assert(void 0===s.default||s.default.length===s.size,`illegal default value for ${e}, expected size: ${s.size}`)}ensureAttrib(e){t.assert(!!this.specs[e],`invalid attrib ${e}`)}}const a=i.utf8Decode();e.SOA=h,e.aos=(e,n,i,a=0)=>{let l=0,u=0;const f={},o={};for(let e in n){const i=r(n[e]),h=t.SIZEOF[i.type];u=Math.max(u,h),l=s.align(l,h),f[e]=l,l+=h*i.size,o[e]=i}l=s.align(l,u),i=i||new ArrayBuffer(l*e+a);for(let e in o){const s=o[e],n=t.SIZEOF[s.type];s.stride=l/n,s.buf=i,s.byteOffset=a+f[e]}return new h(e,o)},e.ident={decode:e=>e,encode:e=>e},e.scalar={decode:e=>e[0],encode:e=>[e]},e.serializer=e=>({decode(t){const s={};for(let n in t)s[n]=e[n].decode(t[n]);return s},encode:t=>{const s={};for(let n in t)s[n]=e[n].encode(t[n]);return s}}),e.soa=(e,t)=>new h(e,t),e.utf8z=e=>({decode:e=>{let t="";const s=a([null,null,(e,s)=>t+=s])[2];for(let n=0,i=e.length;n<i;n++){const i=e[n];if(0===i)break;s(t,i)}return t},encode:s=>{const n=[...i.utf8Encode(s),0];return t.assert(n.length<=e,`string too large: "${s}"`),n}}),Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/lib/index.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../utils.js","../soa.js","../aos.js","../serialize.js"],"sourcesContent":null,"names":["ensureIndex","SIZEOF","typedArray","assert","align","utf8Decode","utf8Encode"],"mappings":"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"}
|