@speleotica/frcsdata 4.3.0 → 4.3.1
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/FrcsPlotFile.d.ts +1 -0
- package/FrcsPlotFile.d.ts.map +1 -0
- package/FrcsPlotFile.js +2 -1
- package/FrcsPlotFile.js.map +1 -0
- package/FrcsPlotShot.d.ts +1 -0
- package/FrcsPlotShot.d.ts.map +1 -0
- package/FrcsPlotShot.js +2 -1
- package/FrcsPlotShot.js.map +1 -0
- package/FrcsShot.d.ts +1 -0
- package/FrcsShot.d.ts.map +1 -0
- package/FrcsShot.js +2 -1
- package/FrcsShot.js.map +1 -0
- package/FrcsSurveyFile.d.ts +1 -0
- package/FrcsSurveyFile.d.ts.map +1 -0
- package/FrcsSurveyFile.js +2 -1
- package/FrcsSurveyFile.js.map +1 -0
- package/FrcsTrip.d.ts +1 -0
- package/FrcsTrip.d.ts.map +1 -0
- package/FrcsTrip.js +2 -1
- package/FrcsTrip.js.map +1 -0
- package/FrcsTripSummary.d.ts +1 -0
- package/FrcsTripSummary.d.ts.map +1 -0
- package/FrcsTripSummary.js +2 -1
- package/FrcsTripSummary.js.map +1 -0
- package/FrcsTripSummaryFile.d.ts +1 -0
- package/FrcsTripSummaryFile.d.ts.map +1 -0
- package/FrcsTripSummaryFile.js +2 -1
- package/FrcsTripSummaryFile.js.map +1 -0
- package/formatFrcsShot.d.ts +1 -0
- package/formatFrcsShot.d.ts.map +1 -0
- package/formatFrcsShot.js +5 -5
- package/formatFrcsShot.js.map +1 -0
- package/formatFrcsSurveyFile.d.ts +1 -0
- package/formatFrcsSurveyFile.d.ts.map +1 -0
- package/formatFrcsSurveyFile.js +2 -1
- package/formatFrcsSurveyFile.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -0
- package/index.js +2 -1
- package/index.js.map +1 -0
- package/node/index.d.ts +1 -0
- package/node/index.d.ts.map +1 -0
- package/node/index.js +2 -1
- package/node/index.js.map +1 -0
- package/package.json +5 -2
- package/parseFrcsPlotFile.d.ts +1 -0
- package/parseFrcsPlotFile.d.ts.map +1 -0
- package/parseFrcsPlotFile.js +2 -1
- package/parseFrcsPlotFile.js.map +1 -0
- package/parseFrcsSurveyFile.d.ts +1 -0
- package/parseFrcsSurveyFile.d.ts.map +1 -0
- package/parseFrcsSurveyFile.js +5 -4
- package/parseFrcsSurveyFile.js.map +1 -0
- package/parseFrcsTripSummaryFile.d.ts +1 -0
- package/parseFrcsTripSummaryFile.d.ts.map +1 -0
- package/parseFrcsTripSummaryFile.js +2 -1
- package/parseFrcsTripSummaryFile.js.map +1 -0
- package/src/FrcsPlotFile.ts +9 -0
- package/src/FrcsPlotShot.ts +18 -0
- package/src/FrcsShot.ts +56 -0
- package/src/FrcsSurveyFile.ts +47 -0
- package/src/FrcsTrip.ts +25 -0
- package/src/FrcsTripSummary.ts +14 -0
- package/src/FrcsTripSummaryFile.ts +7 -0
- package/src/formatFrcsShot.ts +168 -0
- package/src/formatFrcsSurveyFile.ts +97 -0
- package/src/index.ts +29 -0
- package/src/node/index.ts +20 -0
- package/src/parseFrcsPlotFile.ts +168 -0
- package/src/parseFrcsSurveyFile.ts +788 -0
- package/src/parseFrcsTripSummaryFile.ts +76 -0
- package/src/string/index.ts +21 -0
- package/src/web/index.ts +119 -0
- package/string/index.d.ts +1 -0
- package/string/index.d.ts.map +1 -0
- package/string/index.js +2 -1
- package/string/index.js.map +1 -0
- package/web/index.d.ts +1 -0
- package/web/index.d.ts.map +1 -0
- package/web/index.js +5 -4
- package/web/index.js.map +1 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { FrcsTripSummary } from './FrcsTripSummary'
|
|
2
|
+
import { FrcsTripSummaryFile } from './FrcsTripSummaryFile'
|
|
3
|
+
import { SegmentParseError } from 'parse-segment'
|
|
4
|
+
import { Unitize } from '@speleotica/unitized'
|
|
5
|
+
|
|
6
|
+
const tripSummaryRegex =
|
|
7
|
+
/^\s*(\d+)\s+(\d{1,2})\/(\s\d|\d\d)\/(\d{2,4})\s+(\d+(?:\.\d*)?)\s+(\d+)\s+(\S.*)EXCLUDED:\s*(\d+(?:\.\d{2})?)\s*(\d+)/
|
|
8
|
+
/**
|
|
9
|
+
* Parses data from a STAT_sum.txt file. Here is an excerpt of the format:
|
|
10
|
+
<pre> 1 2/15/81 258.60 17 ENTRANCE DROPS, JOE'S "I LOVE MY WIFE TRAVERSE", TRICKY TRAVERSE EXCLUDED: 0.00 0
|
|
11
|
+
Peter Quick Keith Ortiz
|
|
12
|
+
A1 AD1-AD3 AE1 AE1 SIDE
|
|
13
|
+
AE9 SIDE AE10-AE9 AE13 SIDE AE15 SIDE
|
|
14
|
+
AE20-AE11
|
|
15
|
+
|
|
16
|
+
3 3/ 6/81 2371.20 61 DOUG'S DEMISE (50 FT DROP), CHRIS CROSS, CRAWL ABOVE DROP EXCLUDED: 0.00 0
|
|
17
|
+
Peter Quick Chris Gerace Phil Oden Chip Hopper
|
|
18
|
+
A13 SIDE B1-B5 B2 SIDE B3 SIDE
|
|
19
|
+
B6-B18 B17 SIDE B19-B38 B32 SIDE
|
|
20
|
+
BS1-BS5 C1-C18 </pre>
|
|
21
|
+
*/
|
|
22
|
+
export default async function parseFrcsTripSummaryFile(
|
|
23
|
+
file: string,
|
|
24
|
+
lines: AsyncIterable<string>
|
|
25
|
+
): Promise<FrcsTripSummaryFile> {
|
|
26
|
+
const errors: Array<SegmentParseError> = []
|
|
27
|
+
const tripSummaries: Array<FrcsTripSummary | undefined> = []
|
|
28
|
+
|
|
29
|
+
let tripStartLine = -2
|
|
30
|
+
let lineNumber = 0
|
|
31
|
+
|
|
32
|
+
let team: Array<string> = []
|
|
33
|
+
let shots: Array<string> = []
|
|
34
|
+
|
|
35
|
+
for await (const line of lines) {
|
|
36
|
+
lineNumber++
|
|
37
|
+
|
|
38
|
+
const match = tripSummaryRegex.exec(line)
|
|
39
|
+
if (match) {
|
|
40
|
+
tripStartLine = lineNumber
|
|
41
|
+
const tripNumber = parseInt(match[1])
|
|
42
|
+
const tripIndex = tripNumber - 1
|
|
43
|
+
let year = parseInt(match[4])
|
|
44
|
+
if (year < 1000) year += 1900
|
|
45
|
+
const date = new Date(year, parseInt(match[2]) - 1, parseInt(match[3]))
|
|
46
|
+
const totalLength = Unitize.feet(parseFloat(match[5]))
|
|
47
|
+
const numShots = parseInt(match[6])
|
|
48
|
+
const name = match[7].trim()
|
|
49
|
+
const excludedLength = Unitize.feet(parseFloat(match[8]))
|
|
50
|
+
const numExcludedShots = parseInt(match[9])
|
|
51
|
+
team = []
|
|
52
|
+
shots = []
|
|
53
|
+
tripSummaries[tripIndex] = {
|
|
54
|
+
tripNumber,
|
|
55
|
+
tripIndex,
|
|
56
|
+
date,
|
|
57
|
+
totalLength,
|
|
58
|
+
numShots,
|
|
59
|
+
name,
|
|
60
|
+
excludedLength,
|
|
61
|
+
numExcludedShots,
|
|
62
|
+
team,
|
|
63
|
+
shots,
|
|
64
|
+
}
|
|
65
|
+
continue
|
|
66
|
+
}
|
|
67
|
+
if (lineNumber === tripStartLine + 1) {
|
|
68
|
+
team.push(...line.trim().split(/\s\s+|\t+/g))
|
|
69
|
+
} else {
|
|
70
|
+
const trimmed = line.trim()
|
|
71
|
+
if (trimmed) shots.push(...trimmed.split(/\s\s+|\t+/))
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return { errors, tripSummaries }
|
|
76
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import _parseFrcsSurveyFile from '../parseFrcsSurveyFile'
|
|
2
|
+
import _parseFrcsPlotFile from '../parseFrcsPlotFile'
|
|
3
|
+
import _parseFrcsTripSummaryFile from '../parseFrcsTripSummaryFile'
|
|
4
|
+
|
|
5
|
+
async function* linesOf(s: string): AsyncIterable<string> {
|
|
6
|
+
yield* s.split(/\r\n?|\n/gm)
|
|
7
|
+
}
|
|
8
|
+
const convert =
|
|
9
|
+
<T, Rest extends any[]>(
|
|
10
|
+
fn: (
|
|
11
|
+
file: string,
|
|
12
|
+
lines: AsyncIterable<string>,
|
|
13
|
+
...rest: Rest
|
|
14
|
+
) => Promise<T>
|
|
15
|
+
) =>
|
|
16
|
+
(file: string, str: string, ...rest: Rest): Promise<T> =>
|
|
17
|
+
fn(file, linesOf(str), ...rest)
|
|
18
|
+
|
|
19
|
+
export const parseFrcsSurveyFile = convert(_parseFrcsSurveyFile)
|
|
20
|
+
export const parseFrcsPlotFile = convert(_parseFrcsPlotFile)
|
|
21
|
+
export const parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile)
|
package/src/web/index.ts
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import _parseFrcsSurveyFile, {
|
|
2
|
+
ParseFrcsSurveyFileOptions,
|
|
3
|
+
} from '../parseFrcsSurveyFile'
|
|
4
|
+
import _parseFrcsPlotFile from '../parseFrcsPlotFile'
|
|
5
|
+
import _parseFrcsTripSummaryFile from '../parseFrcsTripSummaryFile'
|
|
6
|
+
import { FrcsSurveyFile } from '../FrcsSurveyFile'
|
|
7
|
+
|
|
8
|
+
class LinesTransform extends TransformStream<string> {
|
|
9
|
+
parts: string[] = []
|
|
10
|
+
|
|
11
|
+
constructor() {
|
|
12
|
+
super({
|
|
13
|
+
transform: (chunk, controller) => {
|
|
14
|
+
let end = 0
|
|
15
|
+
for (const match of chunk.matchAll(/\r\n?|\n/gm)) {
|
|
16
|
+
this.parts.push(chunk.substring(end, match.index))
|
|
17
|
+
controller.enqueue(this.parts.join(''))
|
|
18
|
+
this.parts.length = 0
|
|
19
|
+
end = match.index + match[0].length
|
|
20
|
+
}
|
|
21
|
+
if (end < chunk.length) this.parts.push(chunk.substring(end))
|
|
22
|
+
},
|
|
23
|
+
flush: (controller) => {
|
|
24
|
+
if (this.parts.length) {
|
|
25
|
+
controller.enqueue(this.parts.join(''))
|
|
26
|
+
this.parts.length = 0
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function readableStreamValues<T>(
|
|
34
|
+
stream: ReadableStream<T>,
|
|
35
|
+
{ preventCancel = false }: { preventCancel?: boolean } = {}
|
|
36
|
+
): AsyncIterableIterator<T> {
|
|
37
|
+
const reader = stream.getReader()
|
|
38
|
+
return {
|
|
39
|
+
// @ts-expect-error types don't match, oh well
|
|
40
|
+
async next() {
|
|
41
|
+
try {
|
|
42
|
+
const result = await reader.read()
|
|
43
|
+
if (result.done) {
|
|
44
|
+
reader.releaseLock()
|
|
45
|
+
}
|
|
46
|
+
return result
|
|
47
|
+
} catch (e) {
|
|
48
|
+
reader.releaseLock()
|
|
49
|
+
throw e
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
async return(value: T) {
|
|
53
|
+
if (!preventCancel) {
|
|
54
|
+
const cancelPromise = reader.cancel(value)
|
|
55
|
+
reader.releaseLock()
|
|
56
|
+
await cancelPromise
|
|
57
|
+
} else {
|
|
58
|
+
reader.releaseLock()
|
|
59
|
+
}
|
|
60
|
+
return { done: true, value }
|
|
61
|
+
},
|
|
62
|
+
[Symbol.asyncIterator]() {
|
|
63
|
+
return this
|
|
64
|
+
},
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function linesOf(
|
|
69
|
+
input: Blob | ReadableStream<Uint8Array>
|
|
70
|
+
): AsyncIterable<string> {
|
|
71
|
+
return readableStreamValues(
|
|
72
|
+
(input instanceof ReadableStream ? input : input.stream())
|
|
73
|
+
.pipeThrough(new TextDecoderStream())
|
|
74
|
+
.pipeThrough(new LinesTransform())
|
|
75
|
+
)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const convert = <T>(
|
|
79
|
+
fn: (file: string, lines: AsyncIterable<string>) => Promise<T>
|
|
80
|
+
) => {
|
|
81
|
+
function converted(file: File): Promise<T>
|
|
82
|
+
function converted(
|
|
83
|
+
file: string,
|
|
84
|
+
input: Blob | ReadableStream<Uint8Array>
|
|
85
|
+
): Promise<T>
|
|
86
|
+
function converted(
|
|
87
|
+
file: string | File,
|
|
88
|
+
input?: Blob | ReadableStream<Uint8Array>
|
|
89
|
+
): Promise<T> {
|
|
90
|
+
if (file instanceof File) return converted(file.name, file)
|
|
91
|
+
return fn(file, linesOf(input!))
|
|
92
|
+
}
|
|
93
|
+
return converted
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function parseFrcsSurveyFile(
|
|
97
|
+
file: File,
|
|
98
|
+
options?: ParseFrcsSurveyFileOptions
|
|
99
|
+
): Promise<FrcsSurveyFile>
|
|
100
|
+
export function parseFrcsSurveyFile(
|
|
101
|
+
file: string,
|
|
102
|
+
input: Blob | ReadableStream<Uint8Array>,
|
|
103
|
+
options?: ParseFrcsSurveyFileOptions
|
|
104
|
+
): Promise<FrcsSurveyFile>
|
|
105
|
+
export function parseFrcsSurveyFile(
|
|
106
|
+
file: string | File,
|
|
107
|
+
input?: Blob | ReadableStream<Uint8Array> | ParseFrcsSurveyFileOptions,
|
|
108
|
+
options?: ParseFrcsSurveyFileOptions
|
|
109
|
+
): Promise<FrcsSurveyFile> {
|
|
110
|
+
if (file instanceof File)
|
|
111
|
+
return _parseFrcsSurveyFile(file.name, linesOf(file), options)
|
|
112
|
+
if (input instanceof Blob || input instanceof ReadableStream) {
|
|
113
|
+
return _parseFrcsSurveyFile(file, linesOf(input), options)
|
|
114
|
+
}
|
|
115
|
+
throw new Error(`input ust be a Blob or ReadableStream if file is not a File`)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export const parseFrcsPlotFile = convert(_parseFrcsPlotFile)
|
|
119
|
+
export const parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile)
|
package/string/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare const parseFrcsSurveyFile: (file: string, str: string, rest_0?: import("../parseFrcsSurveyFile").ParseFrcsSurveyFileOptions | undefined) => Promise<import("..").FrcsSurveyFile>;
|
|
2
2
|
export declare const parseFrcsPlotFile: (file: string, str: string) => Promise<import("..").FrcsPlotFile>;
|
|
3
3
|
export declare const parseFrcsTripSummaryFile: (file: string, str: string) => Promise<import("..").FrcsTripSummaryFile>;
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/string/index.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,mBAAmB,SAHvB,MAAM,OAAO,MAAM,2HAGoC,CAAA;AAChE,eAAO,MAAM,iBAAiB,SAJrB,MAAM,OAAO,MAAM,uCAIgC,CAAA;AAC5D,eAAO,MAAM,wBAAwB,SAL5B,MAAM,OAAO,MAAM,8CAK8C,CAAA"}
|
package/string/index.js
CHANGED
|
@@ -41,4 +41,5 @@ var convert = function convert(fn) {
|
|
|
41
41
|
};
|
|
42
42
|
var parseFrcsSurveyFile = exports.parseFrcsSurveyFile = convert(_parseFrcsSurveyFile2["default"]);
|
|
43
43
|
var parseFrcsPlotFile = exports.parseFrcsPlotFile = convert(_parseFrcsPlotFile2["default"]);
|
|
44
|
-
var parseFrcsTripSummaryFile = exports.parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile2["default"]);
|
|
44
|
+
var parseFrcsTripSummaryFile = exports.parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile2["default"]);
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_parseFrcsSurveyFile2","_interopRequireDefault","require","_parseFrcsPlotFile2","_parseFrcsTripSummaryFile2","_asyncIterator","r","n","t","o","e","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","AsyncFromSyncIteratorContinuation","Object","Promise","reject","done","resolve","value","then","s","next","prototype","apply","arguments","_return","_throw","linesOf","_x","_linesOf","_wrapAsyncGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","delegateYield","_asyncGeneratorDelegate2","split","_awaitAsyncGenerator2","stop","convert","fn","file","str","_len","length","rest","Array","_key","concat","parseFrcsSurveyFile","exports","_parseFrcsSurveyFile","parseFrcsPlotFile","_parseFrcsPlotFile","parseFrcsTripSummaryFile","_parseFrcsTripSummaryFile"],"sources":["../../src/string/index.ts"],"sourcesContent":["import _parseFrcsSurveyFile from '../parseFrcsSurveyFile'\nimport _parseFrcsPlotFile from '../parseFrcsPlotFile'\nimport _parseFrcsTripSummaryFile from '../parseFrcsTripSummaryFile'\n\nasync function* linesOf(s: string): AsyncIterable<string> {\n yield* s.split(/\\r\\n?|\\n/gm)\n}\nconst convert =\n <T, Rest extends any[]>(\n fn: (\n file: string,\n lines: AsyncIterable<string>,\n ...rest: Rest\n ) => Promise<T>\n ) =>\n (file: string, str: string, ...rest: Rest): Promise<T> =>\n fn(file, linesOf(str), ...rest)\n\nexport const parseFrcsSurveyFile = convert(_parseFrcsSurveyFile)\nexport const parseFrcsPlotFile = convert(_parseFrcsPlotFile)\nexport const parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile)\n"],"mappings":"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","ignoreList":[]}
|
package/web/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web/index.ts"],"names":[],"mappings":"AAAA,OAA6B,EAC3B,0BAA0B,EAC3B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AA0FlD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,cAAc,CAAC,CAAA;AAC1B,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,EACxC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,cAAc,CAAC,CAAA;AAc1B,eAAO,MAAM,iBAAiB;WArCH,IAAI;WAErB,MAAM,SACL,IAAI,GAAG,eAAe,UAAU,CAAC;CAkCgB,CAAA;AAC5D,eAAO,MAAM,wBAAwB;WAtCV,IAAI;WAErB,MAAM,SACL,IAAI,GAAG,eAAe,UAAU,CAAC;CAmC8B,CAAA"}
|
package/web/index.js
CHANGED
|
@@ -18,9 +18,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
18
18
|
var _parseFrcsSurveyFile2 = _interopRequireDefault(require("../parseFrcsSurveyFile.js"));
|
|
19
19
|
var _parseFrcsPlotFile2 = _interopRequireDefault(require("../parseFrcsPlotFile.js"));
|
|
20
20
|
var _parseFrcsTripSummaryFile2 = _interopRequireDefault(require("../parseFrcsTripSummaryFile.js"));
|
|
21
|
-
function _createForOfIteratorHelper(
|
|
22
|
-
function _unsupportedIterableToArray(
|
|
23
|
-
function _arrayLikeToArray(
|
|
21
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
22
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
24
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
25
25
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
26
26
|
var LinesTransform = /*#__PURE__*/function (_TransformStream) {
|
|
@@ -147,4 +147,5 @@ function parseFrcsSurveyFile(file, input, options) {
|
|
|
147
147
|
throw new Error("input ust be a Blob or ReadableStream if file is not a File");
|
|
148
148
|
}
|
|
149
149
|
var parseFrcsPlotFile = exports.parseFrcsPlotFile = convert(_parseFrcsPlotFile2["default"]);
|
|
150
|
-
var parseFrcsTripSummaryFile = exports.parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile2["default"]);
|
|
150
|
+
var parseFrcsTripSummaryFile = exports.parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile2["default"]);
|
|
151
|
+
//# sourceMappingURL=index.js.map
|
package/web/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_parseFrcsSurveyFile2","_interopRequireDefault","require","_parseFrcsPlotFile2","_parseFrcsTripSummaryFile2","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","apply","Boolean","prototype","valueOf","LinesTransform","_TransformStream","_this","_classCallCheck2","transform","chunk","controller","end","_iterator","matchAll","_step","match","parts","push","substring","index","enqueue","join","err","flush","_defineProperty2","_inherits2","_createClass2","TransformStream","readableStreamValues","stream","_ref","arguments","undefined","_ref$preventCancel","preventCancel","reader","getReader","_asyncToGenerator2","_regenerator","mark","_callee","result","wrap","_callee$","_context","prev","read","sent","releaseLock","abrupt","t0","stop","_return","_callee2","cancelPromise","_callee2$","_context2","cancel","asyncIterator","linesOf","input","ReadableStream","pipeThrough","TextDecoderStream","convert","fn","converted","file","File","parseFrcsSurveyFile","options","_parseFrcsSurveyFile","Blob","Error","parseFrcsPlotFile","exports","_parseFrcsPlotFile","parseFrcsTripSummaryFile","_parseFrcsTripSummaryFile"],"sources":["../../src/web/index.ts"],"sourcesContent":["import _parseFrcsSurveyFile, {\n ParseFrcsSurveyFileOptions,\n} from '../parseFrcsSurveyFile'\nimport _parseFrcsPlotFile from '../parseFrcsPlotFile'\nimport _parseFrcsTripSummaryFile from '../parseFrcsTripSummaryFile'\nimport { FrcsSurveyFile } from '../FrcsSurveyFile'\n\nclass LinesTransform extends TransformStream<string> {\n parts: string[] = []\n\n constructor() {\n super({\n transform: (chunk, controller) => {\n let end = 0\n for (const match of chunk.matchAll(/\\r\\n?|\\n/gm)) {\n this.parts.push(chunk.substring(end, match.index))\n controller.enqueue(this.parts.join(''))\n this.parts.length = 0\n end = match.index + match[0].length\n }\n if (end < chunk.length) this.parts.push(chunk.substring(end))\n },\n flush: (controller) => {\n if (this.parts.length) {\n controller.enqueue(this.parts.join(''))\n this.parts.length = 0\n }\n },\n })\n }\n}\n\nfunction readableStreamValues<T>(\n stream: ReadableStream<T>,\n { preventCancel = false }: { preventCancel?: boolean } = {}\n): AsyncIterableIterator<T> {\n const reader = stream.getReader()\n return {\n // @ts-expect-error types don't match, oh well\n async next() {\n try {\n const result = await reader.read()\n if (result.done) {\n reader.releaseLock()\n }\n return result\n } catch (e) {\n reader.releaseLock()\n throw e\n }\n },\n async return(value: T) {\n if (!preventCancel) {\n const cancelPromise = reader.cancel(value)\n reader.releaseLock()\n await cancelPromise\n } else {\n reader.releaseLock()\n }\n return { done: true, value }\n },\n [Symbol.asyncIterator]() {\n return this\n },\n }\n}\n\nfunction linesOf(\n input: Blob | ReadableStream<Uint8Array>\n): AsyncIterable<string> {\n return readableStreamValues(\n (input instanceof ReadableStream ? input : input.stream())\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new LinesTransform())\n )\n}\n\nconst convert = <T>(\n fn: (file: string, lines: AsyncIterable<string>) => Promise<T>\n) => {\n function converted(file: File): Promise<T>\n function converted(\n file: string,\n input: Blob | ReadableStream<Uint8Array>\n ): Promise<T>\n function converted(\n file: string | File,\n input?: Blob | ReadableStream<Uint8Array>\n ): Promise<T> {\n if (file instanceof File) return converted(file.name, file)\n return fn(file, linesOf(input!))\n }\n return converted\n}\n\nexport function parseFrcsSurveyFile(\n file: File,\n options?: ParseFrcsSurveyFileOptions\n): Promise<FrcsSurveyFile>\nexport function parseFrcsSurveyFile(\n file: string,\n input: Blob | ReadableStream<Uint8Array>,\n options?: ParseFrcsSurveyFileOptions\n): Promise<FrcsSurveyFile>\nexport function parseFrcsSurveyFile(\n file: string | File,\n input?: Blob | ReadableStream<Uint8Array> | ParseFrcsSurveyFileOptions,\n options?: ParseFrcsSurveyFileOptions\n): Promise<FrcsSurveyFile> {\n if (file instanceof File)\n return _parseFrcsSurveyFile(file.name, linesOf(file), options)\n if (input instanceof Blob || input instanceof ReadableStream) {\n return _parseFrcsSurveyFile(file, linesOf(input), options)\n }\n throw new Error(`input ust be a Blob or ReadableStream if file is not a File`)\n}\n\nexport const parseFrcsPlotFile = convert(_parseFrcsPlotFile)\nexport const parseFrcsTripSummaryFile = convert(_parseFrcsTripSummaryFile)\n"],"mappings":"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","ignoreList":[]}
|