@glandais/vcyclist-elevation 0.0.0 → 1.1.0
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/README.md +214 -0
- package/kotlin-kotlin-stdlib.js +141 -51
- package/kotlin-kotlin-stdlib.js.map +1 -1
- package/kotlinx-atomicfu.js +17 -17
- package/kotlinx-atomicfu.js.map +1 -1
- package/kotlinx-browser.js.map +1 -1
- package/kotlinx-coroutines-core.js +992 -992
- package/kotlinx-coroutines-core.js.map +1 -1
- package/package.json +4 -2
- package/vcyclist-elevation.js +784 -535
- package/vcyclist-elevation.js.map +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# vcyclist
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@glandais/vcyclist-engine)
|
|
4
|
+
[](https://www.npmjs.com/package/@glandais/vcyclist-elevation)
|
|
5
|
+
[](https://central.sonatype.com/artifact/io.github.glandais/vcyclist-engine)
|
|
6
|
+
|
|
7
|
+
Kotlin Multiplatform port of [`@glandais/virtual-cyclist`](https://github.com/glandais/virtual-cyclist):
|
|
8
|
+
physics-based cycling simulator that turns a static GPS trace into a virtualized ride with
|
|
9
|
+
realistic speeds, times and power estimates. Inspired by [gpx2web](https://github.com/glandais/gpx2web)
|
|
10
|
+
(Java) for the physics model and the [`@glandais/elevation`](https://github.com/glandais/elevation)
|
|
11
|
+
TypeScript library for elevation data.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
┌──────────────┐
|
|
15
|
+
sample.gpx ────▶│ GpxParser │
|
|
16
|
+
└──────┬───────┘
|
|
17
|
+
▼
|
|
18
|
+
┌─────────────────────────────────────────┐
|
|
19
|
+
│ Enhancer (orchestrator) │
|
|
20
|
+
│ ├─ PointPerDistance(-1, 30) │
|
|
21
|
+
│ ├─ fixElevation (Terrarium tiles)* │
|
|
22
|
+
│ ├─ PointPerDistance(1, 2) │
|
|
23
|
+
│ ├─ smoothElevation (150 m kernel) │
|
|
24
|
+
│ ├─ MaxSpeedComputer (cornering+braking)│
|
|
25
|
+
│ ├─ VirtualizeService (1 Hz physics) │
|
|
26
|
+
│ ├─ PointPerSecond (uniform sampling) │
|
|
27
|
+
│ └─ PathSimplifier (Douglas-Peucker 3D) │
|
|
28
|
+
└──────────────────┬──────────────────────┘
|
|
29
|
+
▼
|
|
30
|
+
┌──────────────┐
|
|
31
|
+
│ GpxWriter │────▶ output.gpx
|
|
32
|
+
└──────────────┘
|
|
33
|
+
(*) optional — needs an ElevationProvider
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Modules
|
|
37
|
+
|
|
38
|
+
| Module | Purpose | Targets |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| **`:elevation`** | Terrarium tile fetch + DEM lookup + Haversine + Douglas-Peucker 3D + triangular smoother. See [`elevation/README.md`](elevation/README.md). | JVM, JS Node, JS browser, Wasm browser |
|
|
41
|
+
| **`:engine`** | Path model (36 fields × `DoubleArray`), physics (4 resistive `PowerProvider`s + cyclist input + `MaxSpeedComputer` + `VirtualizeService`), GPX I/O, `Enhancer` pipeline, JVM CLI. | JVM, JS Node, JS browser, Wasm browser |
|
|
42
|
+
| **`:codegen`** | Tiny build-time helper that regenerates `GeneratedPath.kt` + `PointFieldAccessors.kt` from `PointField` (run only when the field list changes). | JVM only |
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
### npm (Kotlin/JS or Kotlin/Wasm consumers)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install @glandais/vcyclist-engine # Kotlin/JS bundle
|
|
50
|
+
npm install @glandais/vcyclist-engine-wasm # Kotlin/Wasm bundle
|
|
51
|
+
npm install @glandais/vcyclist-elevation # Kotlin/JS bundle
|
|
52
|
+
npm install @glandais/vcyclist-elevation-wasm # Kotlin/Wasm bundle
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Gradle / Maven (JVM or KMP consumers)
|
|
56
|
+
|
|
57
|
+
```kotlin
|
|
58
|
+
// Gradle Kotlin DSL
|
|
59
|
+
dependencies {
|
|
60
|
+
implementation("io.github.glandais:vcyclist-engine:1.0.0") // pulls -jvm / -js / -wasm-js per target
|
|
61
|
+
implementation("io.github.glandais:vcyclist-elevation:1.0.0")
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Replace `1.0.0` by the latest version shown in the badges above. KMP consumers automatically
|
|
66
|
+
get the platform-specific variant (`-jvm`, `-js`, `-wasm-js`) for their target.
|
|
67
|
+
|
|
68
|
+
See [`docs/publishing.md`](docs/publishing.md) for the release process.
|
|
69
|
+
|
|
70
|
+
## Quick start
|
|
71
|
+
|
|
72
|
+
### Run the JVM CLI
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Enhance a GPX file with the default cyclist (80 kg / 280 W) and bike (Crr 0.004) :
|
|
76
|
+
./gradlew :engine:run -Pargs="enhance path/to/input.gpx -o /tmp/output.gpx"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The CLI runs the full enhancement pipeline (no elevation correction — no HTTP) and writes the
|
|
80
|
+
simulated trace back to a GPX file. See [`engine/src/jvmMain/.../EngineCli.kt`](engine/src/jvmMain/kotlin/io/github/glandais/engine/EngineCli.kt).
|
|
81
|
+
|
|
82
|
+
### Try the browser demos (elevation only)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Kotlin/Wasm demo
|
|
86
|
+
./gradlew :elevation:wasmJsBrowserDevelopmentRun
|
|
87
|
+
# Kotlin/JS demo (sibling, same UI)
|
|
88
|
+
./gradlew :elevation:jsBrowserDevelopmentRun
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Both demos share the [original TS demo](https://github.com/glandais/elevation) UI (Leaflet +
|
|
92
|
+
Chart.js + GPX upload). See [`elevation/README.md`](elevation/README.md) for details.
|
|
93
|
+
|
|
94
|
+
### Use from Kotlin
|
|
95
|
+
|
|
96
|
+
```kotlin
|
|
97
|
+
import io.github.glandais.engine.Enhancer
|
|
98
|
+
import io.github.glandais.engine.gpx.GpxParser
|
|
99
|
+
import io.github.glandais.engine.gpx.firstTrackAsPath
|
|
100
|
+
|
|
101
|
+
suspend fun virtualize(xml: String): String {
|
|
102
|
+
val path = GpxParser.parse(xml).firstTrackAsPath()
|
|
103
|
+
val out = Enhancer.enhanceCourseDefault(path) // pure physics, no HTTP
|
|
104
|
+
return io.github.glandais.engine.gpx.GpxWriter.write(
|
|
105
|
+
out.toGpxDocument(trackName = "virtualized")
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Use from JavaScript / TypeScript
|
|
111
|
+
|
|
112
|
+
`generateTypeScriptDefinitions()` is enabled on both `js(IR)` and `wasmJs`, so you get a
|
|
113
|
+
`.d.ts` next to the bundle in `build/dist/{js,wasmJs}/productionExecutable/vcyclist-engine.d.{ts,mts}`.
|
|
114
|
+
|
|
115
|
+
The Kotlin/JS variant (`@glandais/vcyclist-engine`, `@glandais/vcyclist-elevation`) runs
|
|
116
|
+
**in both browser and Node.js / Bun**. The Wasm variants (`*-wasm`) are browser-only.
|
|
117
|
+
|
|
118
|
+
#### Browser
|
|
119
|
+
|
|
120
|
+
```js
|
|
121
|
+
import { parseGpx, enhance, writeGpx, pathSize, pathTotalDistance } from '@glandais/vcyclist-engine';
|
|
122
|
+
|
|
123
|
+
const handle = parseGpx(gpxXml);
|
|
124
|
+
console.log('input points:', pathSize(handle));
|
|
125
|
+
const out = await enhance(handle, null); // physics only, no HTTP
|
|
126
|
+
console.log('output:', pathSize(out), pathTotalDistance(out), 'm');
|
|
127
|
+
const xml = writeGpx(out);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
#### Node.js / Bun (with elevation correction)
|
|
131
|
+
|
|
132
|
+
```js
|
|
133
|
+
import { parseGpx, enhance, writeGpx } from '@glandais/vcyclist-engine';
|
|
134
|
+
|
|
135
|
+
const handle = parseGpx(gpxXml);
|
|
136
|
+
const out = await enhance(handle, { fixElevation: true }); // fetches DEM tiles, decodes WebP
|
|
137
|
+
const xml = writeGpx(out);
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
`enhance(..., { fixElevation: true })` auto-instantiates a default `ElevationProvider`
|
|
141
|
+
(mapterhorn Terrarium tiles) and runs the full pipeline (densify → fix elevation → smooth →
|
|
142
|
+
max speeds → virtualize → resample → simplify).
|
|
143
|
+
|
|
144
|
+
On Node.js / Bun, tile decoding uses [`@jsquash/webp`](https://www.npmjs.com/package/@jsquash/webp)
|
|
145
|
+
(a pure-WASM WebP decoder, ~50 KB, listed as a runtime `dependency` of
|
|
146
|
+
`@glandais/vcyclist-engine` and `@glandais/vcyclist-elevation`). It is loaded lazily via
|
|
147
|
+
`eval('require')`, so browser bundlers do not pull it into the browser build. Requires
|
|
148
|
+
Node ≥ 18 (`globalThis.fetch` is built-in since Node 18 / Bun) ; Node 22+ recommended for
|
|
149
|
+
ESM `require()` support.
|
|
150
|
+
|
|
151
|
+
## Build & test
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
./gradlew check # full build + all tests on all targets
|
|
155
|
+
./gradlew :engine:allTests # engine tests across JVM / JS Node / JS browser / Wasm browser
|
|
156
|
+
./gradlew :elevation:allTests # elevation tests
|
|
157
|
+
./gradlew :elevation:jvmTest --tests '*Integration*' \
|
|
158
|
+
-PINTEGRATION=1 # live HTTP tests against tiles.mapterhorn.com
|
|
159
|
+
./gradlew ktlintCheck # lint
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Layout
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
vcyclist/
|
|
166
|
+
├── settings.gradle.kts # multi-module Gradle KMP project
|
|
167
|
+
├── gradle/libs.versions.toml # version catalog (Kotlin 2.3.21, coroutines 1.11, xmlutil 0.91, …)
|
|
168
|
+
├── docs/
|
|
169
|
+
│ ├── PLAN.md # task-by-task progress (Phases 1-2bis)
|
|
170
|
+
│ ├── parity.md # parity strategy vs the TS reference
|
|
171
|
+
│ ├── elevation-integration.md # how to run live HTTP integration tests
|
|
172
|
+
│ ├── kotlin-wasm-jvm-webp.md # Kotlin/Wasm ↔ JS interop guide
|
|
173
|
+
│ └── tasks/ # one Markdown per implementation task (00-31, + bonus demos)
|
|
174
|
+
├── elevation/ # :elevation KMP module
|
|
175
|
+
├── engine/ # :engine KMP module (depends on :elevation)
|
|
176
|
+
└── codegen/ # :codegen JVM helper for Path accessor generation
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Status
|
|
180
|
+
|
|
181
|
+
- ✅ **Phase 1** — `:elevation` module port (tasks 00-09) : Terrarium tiles, Haversine, ECEF,
|
|
182
|
+
Douglas-Peucker 3D, smoother, LRU cache + TileManager, `ElevationProvider`, live HTTP integration.
|
|
183
|
+
- ✅ **Phase 2** — `:engine` module port (tasks 10-28) : Path model, Cyclist/Bike/Course,
|
|
184
|
+
GPX I/O, full physics, simulation, post-processing, `Enhancer`, CLI, `@JsExport` façades.
|
|
185
|
+
- ✅ **Phase 2bis** — pipeline fidelity fixes (tasks 29-31) : `VirtualizeService` last-point
|
|
186
|
+
timestamp, `PointPerDistance` port, integration into `Enhancer`.
|
|
187
|
+
- ✅ **Phase 3** — Node.js / Bun support (tasks 32-33) : runtime-detection in
|
|
188
|
+
`TileFetcher.js.kt` (browser path unchanged, Node path uses `globalThis.fetch` +
|
|
189
|
+
`@jsquash/webp` WASM decoder loaded via lazy `eval('require')`), webpack externals to keep
|
|
190
|
+
the browser bundle free of `@jsquash/webp`, `ElevationProvider` auto-instantiation in
|
|
191
|
+
`EngineJsApi.enhance` when `opts.fixElevation` is true (JS + Wasm façades), 6 jsTest classes
|
|
192
|
+
gated by `INTEGRATION=1`.
|
|
193
|
+
|
|
194
|
+
Total `:engine` test coverage : 32 test classes / ~326 commonTest cases / 4 targets =
|
|
195
|
+
~1300 green executions, plus JVM-only smoke tests for the CLI and the full pipeline.
|
|
196
|
+
|
|
197
|
+
End-to-end smoke (after Phase 2bis) : sample.gpx (3569 source points, 130 km, ~4550 m gain)
|
|
198
|
+
runs through the complete `Enhancer` pipeline in ~1.7 s on JVM, producing ~1000 simplified
|
|
199
|
+
output points covering ~128.6 km / ~5.3 h of simulated ride.
|
|
200
|
+
|
|
201
|
+
## Documentation
|
|
202
|
+
|
|
203
|
+
- [`docs/PLAN.md`](docs/PLAN.md) — task-by-task plan with commit hashes for every step.
|
|
204
|
+
- [`docs/tasks/`](docs/tasks/) — detailed Markdown spec for each task (00-31 + bonus demos).
|
|
205
|
+
- [`docs/parity.md`](docs/parity.md) — TS↔Kotlin parity approach and tolerances.
|
|
206
|
+
- [`docs/kotlin-wasm-jvm-webp.md`](docs/kotlin-wasm-jvm-webp.md) — Kotlin/Wasm ↔ JS interop
|
|
207
|
+
guide that underpins the `@JsExport` façades and the WebP tile decoding.
|
|
208
|
+
- [`elevation/README.md`](elevation/README.md) — `:elevation` module details + browser demos.
|
|
209
|
+
|
|
210
|
+
## License
|
|
211
|
+
|
|
212
|
+
Apache License 2.0, aligned with the upstream `gpx2web` project. See the Maven Central POM
|
|
213
|
+
metadata in `engine/build.gradle.kts` and `elevation/build.gradle.kts`. A top-level `LICENSE`
|
|
214
|
+
file will be added before the first public release.
|
package/kotlin-kotlin-stdlib.js
CHANGED
|
@@ -46,6 +46,17 @@ if (typeof Array.prototype.fill === 'undefined') {
|
|
|
46
46
|
Object.defineProperty(TypedArray.prototype, 'fill', {value: Array.prototype.fill});
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
+
if (typeof Math.clz32 === 'undefined') {
|
|
50
|
+
Math.clz32 = function (log, LN2) {
|
|
51
|
+
return function (x) {
|
|
52
|
+
var asUint = x >>> 0;
|
|
53
|
+
if (asUint === 0) {
|
|
54
|
+
return 32;
|
|
55
|
+
}
|
|
56
|
+
return 31 - (log(asUint) / LN2 | 0) | 0; // the "| 0" acts like math.floor
|
|
57
|
+
};
|
|
58
|
+
}(Math.log, Math.LN2);
|
|
59
|
+
}
|
|
49
60
|
if (typeof Math.hypot === 'undefined') {
|
|
50
61
|
Math.hypot = function () {
|
|
51
62
|
var y = 0;
|
|
@@ -59,17 +70,6 @@ if (typeof Math.hypot === 'undefined') {
|
|
|
59
70
|
return Math.sqrt(y);
|
|
60
71
|
};
|
|
61
72
|
}
|
|
62
|
-
if (typeof Math.clz32 === 'undefined') {
|
|
63
|
-
Math.clz32 = function (log, LN2) {
|
|
64
|
-
return function (x) {
|
|
65
|
-
var asUint = x >>> 0;
|
|
66
|
-
if (asUint === 0) {
|
|
67
|
-
return 32;
|
|
68
|
-
}
|
|
69
|
-
return 31 - (log(asUint) / LN2 | 0) | 0; // the "| 0" acts like math.floor
|
|
70
|
-
};
|
|
71
|
-
}(Math.log, Math.LN2);
|
|
72
|
-
}
|
|
73
73
|
//endregion
|
|
74
74
|
(function (factory) {
|
|
75
75
|
if (typeof define === 'function' && define.amd)
|
|
@@ -186,6 +186,7 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
186
186
|
initMetadataForClass(PrimitiveKClassImpl, 'PrimitiveKClassImpl', VOID, KClassImpl);
|
|
187
187
|
initMetadataForObject(NothingKClassImpl, 'NothingKClassImpl', VOID, KClassImpl);
|
|
188
188
|
initMetadataForClass(SimpleKClassImpl, 'SimpleKClassImpl', VOID, KClassImpl);
|
|
189
|
+
initMetadataForInterface(KProperty0, 'KProperty0');
|
|
189
190
|
initMetadataForObject(PrimitiveClasses, 'PrimitiveClasses');
|
|
190
191
|
initMetadataForClass(StringBuilder, 'StringBuilder', StringBuilder_init_$Create$_0, VOID, [CharSequence]);
|
|
191
192
|
initMetadataForCompanion(Companion_3);
|
|
@@ -267,6 +268,8 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
267
268
|
initMetadataForObject(State, 'State');
|
|
268
269
|
initMetadataForClass(LinesIterator, 'LinesIterator');
|
|
269
270
|
initMetadataForClass(lineSequence$$inlined$Sequence$1);
|
|
271
|
+
initMetadataForClass(UnsafeLazyImpl, 'UnsafeLazyImpl');
|
|
272
|
+
initMetadataForObject(UNINITIALIZED_VALUE, 'UNINITIALIZED_VALUE');
|
|
270
273
|
initMetadataForCompanion(Companion_10);
|
|
271
274
|
initMetadataForClass(Failure, 'Failure');
|
|
272
275
|
initMetadataForClass(NotImplementedError, 'NotImplementedError', NotImplementedError, Error_0);
|
|
@@ -1559,6 +1562,60 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
1559
1562
|
function numberRangeToNumber(start, endInclusive) {
|
|
1560
1563
|
return new IntRange(start, endInclusive);
|
|
1561
1564
|
}
|
|
1565
|
+
function get_propertyRefClassMetadataCache() {
|
|
1566
|
+
_init_properties_reflectRuntime_kt__5r4uu3();
|
|
1567
|
+
return propertyRefClassMetadataCache;
|
|
1568
|
+
}
|
|
1569
|
+
var propertyRefClassMetadataCache;
|
|
1570
|
+
function metadataObject() {
|
|
1571
|
+
_init_properties_reflectRuntime_kt__5r4uu3();
|
|
1572
|
+
return createMetadata('class', VOID, VOID, VOID, VOID, VOID);
|
|
1573
|
+
}
|
|
1574
|
+
function getPropertyCallableRef(name, paramCount, superType, getter, setter, linkageError) {
|
|
1575
|
+
_init_properties_reflectRuntime_kt__5r4uu3();
|
|
1576
|
+
getter.get = getter;
|
|
1577
|
+
getter.set = setter;
|
|
1578
|
+
getter.callableName = name;
|
|
1579
|
+
// Inline function 'kotlin.js.unsafeCast' call
|
|
1580
|
+
return getPropertyRefClass(getter, getKPropMetadata(paramCount, setter), superType);
|
|
1581
|
+
}
|
|
1582
|
+
function getPropertyRefClass(obj, metadata, superType) {
|
|
1583
|
+
_init_properties_reflectRuntime_kt__5r4uu3();
|
|
1584
|
+
obj.$metadata$ = metadata;
|
|
1585
|
+
obj.constructor = obj;
|
|
1586
|
+
var symbol = superType.Symbol;
|
|
1587
|
+
if (symbol != null) {
|
|
1588
|
+
// Inline function 'kotlin.js.asDynamic' call
|
|
1589
|
+
obj[symbol] = true;
|
|
1590
|
+
}
|
|
1591
|
+
Object.assign(obj, superType.prototype);
|
|
1592
|
+
return obj;
|
|
1593
|
+
}
|
|
1594
|
+
function getKPropMetadata(paramCount, setter) {
|
|
1595
|
+
_init_properties_reflectRuntime_kt__5r4uu3();
|
|
1596
|
+
return get_propertyRefClassMetadataCache()[paramCount][setter == null ? 0 : 1];
|
|
1597
|
+
}
|
|
1598
|
+
var properties_initialized_reflectRuntime_kt_inkhwd;
|
|
1599
|
+
function _init_properties_reflectRuntime_kt__5r4uu3() {
|
|
1600
|
+
if (!properties_initialized_reflectRuntime_kt_inkhwd) {
|
|
1601
|
+
properties_initialized_reflectRuntime_kt_inkhwd = true;
|
|
1602
|
+
// Inline function 'kotlin.arrayOf' call
|
|
1603
|
+
// Inline function 'kotlin.js.unsafeCast' call
|
|
1604
|
+
// Inline function 'kotlin.js.asDynamic' call
|
|
1605
|
+
var tmp = [metadataObject(), metadataObject()];
|
|
1606
|
+
// Inline function 'kotlin.arrayOf' call
|
|
1607
|
+
// Inline function 'kotlin.js.unsafeCast' call
|
|
1608
|
+
// Inline function 'kotlin.js.asDynamic' call
|
|
1609
|
+
var tmp_0 = [metadataObject(), metadataObject()];
|
|
1610
|
+
// Inline function 'kotlin.arrayOf' call
|
|
1611
|
+
// Inline function 'kotlin.js.unsafeCast' call
|
|
1612
|
+
// Inline function 'kotlin.js.asDynamic' call
|
|
1613
|
+
// Inline function 'kotlin.arrayOf' call
|
|
1614
|
+
// Inline function 'kotlin.js.unsafeCast' call
|
|
1615
|
+
// Inline function 'kotlin.js.asDynamic' call
|
|
1616
|
+
propertyRefClassMetadataCache = [tmp, tmp_0, [metadataObject(), metadataObject()]];
|
|
1617
|
+
}
|
|
1618
|
+
}
|
|
1562
1619
|
function isArrayish(o) {
|
|
1563
1620
|
return isJsArray(o) || isView(o);
|
|
1564
1621
|
}
|
|
@@ -3173,6 +3230,9 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
3173
3230
|
function ClassCastException() {
|
|
3174
3231
|
captureStack(this, ClassCastException);
|
|
3175
3232
|
}
|
|
3233
|
+
function lazy(initializer) {
|
|
3234
|
+
return new UnsafeLazyImpl(initializer);
|
|
3235
|
+
}
|
|
3176
3236
|
function fillFrom(src, dst) {
|
|
3177
3237
|
var srcLen = src.length;
|
|
3178
3238
|
var dstLen = dst.length;
|
|
@@ -3301,6 +3361,8 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
3301
3361
|
protoOf(SimpleKClassImpl).k6 = function () {
|
|
3302
3362
|
return this.r6_1;
|
|
3303
3363
|
};
|
|
3364
|
+
function KProperty0() {
|
|
3365
|
+
}
|
|
3304
3366
|
function get_functionClasses() {
|
|
3305
3367
|
_init_properties_primitives_kt__3fums4();
|
|
3306
3368
|
return functionClasses;
|
|
@@ -5348,6 +5410,29 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
5348
5410
|
protoOf(lineSequence$$inlined$Sequence$1).g = function () {
|
|
5349
5411
|
return new LinesIterator(this.r9_1);
|
|
5350
5412
|
};
|
|
5413
|
+
function UnsafeLazyImpl(initializer) {
|
|
5414
|
+
this.s9_1 = initializer;
|
|
5415
|
+
this.t9_1 = UNINITIALIZED_VALUE_instance;
|
|
5416
|
+
}
|
|
5417
|
+
protoOf(UnsafeLazyImpl).r = function () {
|
|
5418
|
+
if (this.t9_1 === UNINITIALIZED_VALUE_instance) {
|
|
5419
|
+
this.t9_1 = ensureNotNull(this.s9_1)();
|
|
5420
|
+
this.s9_1 = null;
|
|
5421
|
+
}
|
|
5422
|
+
return this.t9_1;
|
|
5423
|
+
};
|
|
5424
|
+
protoOf(UnsafeLazyImpl).u9 = function () {
|
|
5425
|
+
return !(this.t9_1 === UNINITIALIZED_VALUE_instance);
|
|
5426
|
+
};
|
|
5427
|
+
protoOf(UnsafeLazyImpl).toString = function () {
|
|
5428
|
+
return this.u9() ? toString_0(this.r()) : 'Lazy value not initialized yet.';
|
|
5429
|
+
};
|
|
5430
|
+
function UNINITIALIZED_VALUE() {
|
|
5431
|
+
}
|
|
5432
|
+
var UNINITIALIZED_VALUE_instance;
|
|
5433
|
+
function UNINITIALIZED_VALUE_getInstance() {
|
|
5434
|
+
return UNINITIALIZED_VALUE_instance;
|
|
5435
|
+
}
|
|
5351
5436
|
function _Result___init__impl__xyqfz8(value) {
|
|
5352
5437
|
return value;
|
|
5353
5438
|
}
|
|
@@ -5361,7 +5446,7 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
5361
5446
|
function Result__exceptionOrNull_impl_p6xea9($this) {
|
|
5362
5447
|
var tmp;
|
|
5363
5448
|
if (_Result___get_value__impl__bjfvqg($this) instanceof Failure) {
|
|
5364
|
-
tmp = _Result___get_value__impl__bjfvqg($this).
|
|
5449
|
+
tmp = _Result___get_value__impl__bjfvqg($this).v9_1;
|
|
5365
5450
|
} else {
|
|
5366
5451
|
tmp = null;
|
|
5367
5452
|
}
|
|
@@ -5374,22 +5459,22 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
5374
5459
|
return Companion_instance_10;
|
|
5375
5460
|
}
|
|
5376
5461
|
function Failure(exception) {
|
|
5377
|
-
this.
|
|
5462
|
+
this.v9_1 = exception;
|
|
5378
5463
|
}
|
|
5379
5464
|
protoOf(Failure).equals = function (other) {
|
|
5380
5465
|
var tmp;
|
|
5381
5466
|
if (other instanceof Failure) {
|
|
5382
|
-
tmp = equals(this.
|
|
5467
|
+
tmp = equals(this.v9_1, other.v9_1);
|
|
5383
5468
|
} else {
|
|
5384
5469
|
tmp = false;
|
|
5385
5470
|
}
|
|
5386
5471
|
return tmp;
|
|
5387
5472
|
};
|
|
5388
5473
|
protoOf(Failure).hashCode = function () {
|
|
5389
|
-
return hashCode_0(this.
|
|
5474
|
+
return hashCode_0(this.v9_1);
|
|
5390
5475
|
};
|
|
5391
5476
|
protoOf(Failure).toString = function () {
|
|
5392
|
-
return 'Failure(' + this.
|
|
5477
|
+
return 'Failure(' + this.v9_1.toString() + ')';
|
|
5393
5478
|
};
|
|
5394
5479
|
function createFailure(exception) {
|
|
5395
5480
|
return new Failure(exception);
|
|
@@ -5419,6 +5504,7 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
5419
5504
|
Key_instance = new Key();
|
|
5420
5505
|
Companion_instance_9 = new Companion_9();
|
|
5421
5506
|
State_instance = new State();
|
|
5507
|
+
UNINITIALIZED_VALUE_instance = new UNINITIALIZED_VALUE();
|
|
5422
5508
|
Companion_instance_10 = new Companion_10();
|
|
5423
5509
|
//endregion
|
|
5424
5510
|
//region block: exports
|
|
@@ -5502,41 +5588,45 @@ if (typeof Math.clz32 === 'undefined') {
|
|
|
5502
5588
|
_.$_$.y2 = equals;
|
|
5503
5589
|
_.$_$.z2 = getBooleanHashCode;
|
|
5504
5590
|
_.$_$.a3 = getNumberHashCode;
|
|
5505
|
-
_.$_$.b3 =
|
|
5506
|
-
_.$_$.c3 =
|
|
5507
|
-
_.$_$.d3 =
|
|
5508
|
-
_.$_$.e3 =
|
|
5509
|
-
_.$_$.f3 =
|
|
5510
|
-
_.$_$.g3 =
|
|
5511
|
-
_.$_$.h3 =
|
|
5512
|
-
_.$_$.i3 =
|
|
5513
|
-
_.$_$.j3 =
|
|
5514
|
-
_.$_$.k3 =
|
|
5515
|
-
_.$_$.l3 =
|
|
5516
|
-
_.$_$.m3 =
|
|
5517
|
-
_.$_$.n3 =
|
|
5518
|
-
_.$_$.o3 =
|
|
5519
|
-
_.$_$.p3 =
|
|
5520
|
-
_.$_$.q3 =
|
|
5521
|
-
_.$_$.r3 =
|
|
5522
|
-
_.$_$.s3 =
|
|
5523
|
-
_.$_$.t3 =
|
|
5524
|
-
_.$_$.u3 =
|
|
5525
|
-
_.$_$.v3 =
|
|
5526
|
-
_.$_$.w3 =
|
|
5527
|
-
_.$_$.x3 =
|
|
5528
|
-
_.$_$.y3 =
|
|
5529
|
-
_.$_$.z3 =
|
|
5530
|
-
_.$_$.a4 =
|
|
5531
|
-
_.$_$.b4 =
|
|
5532
|
-
_.$_$.c4 =
|
|
5533
|
-
_.$_$.d4 =
|
|
5534
|
-
_.$_$.e4 =
|
|
5535
|
-
_.$_$.f4 =
|
|
5536
|
-
_.$_$.g4 =
|
|
5537
|
-
_.$_$.h4 =
|
|
5538
|
-
_.$_$.i4 =
|
|
5539
|
-
_.$_$.j4 =
|
|
5591
|
+
_.$_$.b3 = getPropertyCallableRef;
|
|
5592
|
+
_.$_$.c3 = getStringHashCode;
|
|
5593
|
+
_.$_$.d3 = hashCode_0;
|
|
5594
|
+
_.$_$.e3 = initMetadataForClass;
|
|
5595
|
+
_.$_$.f3 = initMetadataForCompanion;
|
|
5596
|
+
_.$_$.g3 = initMetadataForCoroutine;
|
|
5597
|
+
_.$_$.h3 = initMetadataForFunctionReference;
|
|
5598
|
+
_.$_$.i3 = initMetadataForInterface;
|
|
5599
|
+
_.$_$.j3 = initMetadataForLambda;
|
|
5600
|
+
_.$_$.k3 = initMetadataForObject;
|
|
5601
|
+
_.$_$.l3 = isInterface;
|
|
5602
|
+
_.$_$.m3 = isNumber;
|
|
5603
|
+
_.$_$.n3 = numberToInt;
|
|
5604
|
+
_.$_$.o3 = objectCreate;
|
|
5605
|
+
_.$_$.p3 = protoOf;
|
|
5606
|
+
_.$_$.q3 = toString_1;
|
|
5607
|
+
_.$_$.r3 = round;
|
|
5608
|
+
_.$_$.s3 = coerceIn;
|
|
5609
|
+
_.$_$.t3 = coerceIn_0;
|
|
5610
|
+
_.$_$.u3 = getKClassFromExpression;
|
|
5611
|
+
_.$_$.v3 = KProperty0;
|
|
5612
|
+
_.$_$.w3 = replace;
|
|
5613
|
+
_.$_$.x3 = toLongOrNull;
|
|
5614
|
+
_.$_$.y3 = Enum;
|
|
5615
|
+
_.$_$.z3 = Error_0;
|
|
5616
|
+
_.$_$.a4 = Exception;
|
|
5617
|
+
_.$_$.b4 = Long;
|
|
5618
|
+
_.$_$.c4 = RuntimeException;
|
|
5619
|
+
_.$_$.d4 = THROW_CCE;
|
|
5620
|
+
_.$_$.e4 = Unit;
|
|
5621
|
+
_.$_$.f4 = UnsupportedOperationException;
|
|
5622
|
+
_.$_$.g4 = addSuppressed;
|
|
5623
|
+
_.$_$.h4 = createFailure;
|
|
5624
|
+
_.$_$.i4 = ensureNotNull;
|
|
5625
|
+
_.$_$.j4 = isNaN_0;
|
|
5626
|
+
_.$_$.k4 = lazy;
|
|
5627
|
+
_.$_$.l4 = noWhenBranchMatchedException;
|
|
5628
|
+
_.$_$.m4 = stackTraceToString;
|
|
5629
|
+
_.$_$.n4 = toString_0;
|
|
5540
5630
|
//endregion
|
|
5541
5631
|
return _;
|
|
5542
5632
|
}));
|