@oino-ts/common 0.21.2 → 1.0.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 +183 -0
- package/dist/cjs/OINOApi.js +322 -0
- package/dist/cjs/OINOConfig.js +104 -0
- package/dist/cjs/OINOConstants.js +42 -0
- package/dist/cjs/OINODataField.js +346 -0
- package/dist/cjs/OINODataModel.js +182 -0
- package/dist/cjs/OINODataSource.js +165 -0
- package/dist/cjs/OINOFormatter.js +6 -5
- package/dist/cjs/OINOHtmlTemplate.js +21 -18
- package/dist/cjs/OINOModelSet.js +333 -0
- package/dist/cjs/OINOParser.js +448 -0
- package/dist/cjs/OINOQueryParams.js +434 -0
- package/dist/cjs/OINORequest.js +21 -13
- package/dist/cjs/OINOResult.js +13 -12
- package/dist/cjs/OINOStr.js +11 -11
- package/dist/cjs/OINOSwagger.js +205 -0
- package/dist/cjs/index.js +57 -39
- package/dist/esm/OINOApi.js +315 -0
- package/dist/esm/OINOConfig.js +100 -0
- package/dist/esm/OINOConstants.js +39 -0
- package/dist/esm/OINODataField.js +337 -0
- package/dist/esm/OINODataModel.js +178 -0
- package/dist/esm/OINODataSource.js +159 -0
- package/dist/esm/OINOFormatter.js +2 -1
- package/dist/esm/OINOHtmlTemplate.js +4 -1
- package/dist/esm/OINOModelSet.js +329 -0
- package/dist/esm/OINOParser.js +444 -0
- package/dist/esm/OINOQueryParams.js +426 -0
- package/dist/esm/OINORequest.js +9 -1
- package/dist/esm/OINOResult.js +2 -1
- package/dist/esm/OINOStr.js +1 -1
- package/dist/esm/OINOSwagger.js +201 -0
- package/dist/esm/index.js +14 -32
- package/dist/types/OINOApi.d.ts +191 -0
- package/dist/types/OINOConfig.d.ts +63 -0
- package/dist/types/OINOConstants.d.ts +51 -0
- package/dist/types/OINODataField.d.ts +209 -0
- package/dist/types/OINODataModel.d.ts +78 -0
- package/dist/types/OINODataSource.d.ts +184 -0
- package/dist/types/OINOHtmlTemplate.d.ts +1 -1
- package/dist/types/OINOModelSet.d.ts +64 -0
- package/dist/types/OINOParser.d.ts +42 -0
- package/dist/types/OINOQueryParams.d.ts +270 -0
- package/dist/types/OINORequest.d.ts +4 -1
- package/dist/types/OINOResult.d.ts +1 -1
- package/dist/types/OINOStr.d.ts +1 -1
- package/dist/types/OINOSwagger.d.ts +25 -0
- package/dist/types/index.d.ts +14 -31
- package/package.json +32 -32
- package/src/OINOApi.ts +429 -0
- package/src/OINOBenchmark.ts +323 -323
- package/src/OINOConfig.ts +113 -0
- package/src/OINOConstants.ts +59 -0
- package/src/OINODataField.ts +371 -0
- package/src/OINODataModel.ts +187 -0
- package/src/OINODataSource.ts +280 -0
- package/src/OINOFormatter.ts +166 -165
- package/src/OINOHeaders.ts +51 -51
- package/src/OINOHtmlTemplate.test.ts +114 -114
- package/src/OINOHtmlTemplate.ts +225 -222
- package/src/OINOLog.ts +292 -292
- package/src/OINOModelSet.ts +359 -0
- package/src/OINOParser.ts +441 -0
- package/src/OINOQueryParams.ts +449 -0
- package/src/OINORequest.ts +204 -196
- package/src/OINOResult.ts +331 -330
- package/src/OINOStr.ts +254 -254
- package/src/OINOSwagger.ts +213 -0
- package/src/index.ts +18 -38
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
-
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
-
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { expect, test } from "bun:test";
|
|
8
|
-
|
|
9
|
-
import { OINOHtmlTemplate } from "./OINOHtmlTemplate"
|
|
10
|
-
import { OINOFormatter } from "./OINOFormatter";
|
|
11
|
-
import { OINOLog, OINOConsoleLog, OINOLogLevel } from "./OINOLog"
|
|
12
|
-
|
|
13
|
-
Math.random()
|
|
14
|
-
|
|
15
|
-
OINOLog.setInstance(new OINOConsoleLog(OINOLogLevel.error))
|
|
16
|
-
|
|
17
|
-
const VARIABLE_OPTIONS = [
|
|
18
|
-
"{{{var{i}}}}", // 0 nothing
|
|
19
|
-
"{{{var{i}|trim()}}}", // 1 trim
|
|
20
|
-
"{{{var{i}|trimLeft()}}}", // 2 trimLeft
|
|
21
|
-
"{{{var{i}|trimRight()}}}", // 3 trimRight
|
|
22
|
-
"{{{var{i}|toLower()}}}", // 4 toLower
|
|
23
|
-
"{{{var{i}|cropLeft(1)}}}", // 5 cropLeft
|
|
24
|
-
"{{{var{i}|cropRight(1)}}}", // 6 cropRight
|
|
25
|
-
"{{{var{i}|cropToDelimiter(¤,1)}}}", // 7 cropToDelimiter
|
|
26
|
-
"{{{var{i}|cropFromDelimiter(¤,0)}}}", // 8 cropFromDelimiter
|
|
27
|
-
"{{{var{i}|substring(2,10)}}}", // 9 substring
|
|
28
|
-
"{{{var{i}|replace(¤,a)}}}" // 10 replace
|
|
29
|
-
]
|
|
30
|
-
const VARIABLE_VALUES = [
|
|
31
|
-
"value{i}", // 0 nothing
|
|
32
|
-
" value{i} ", // 1 trim
|
|
33
|
-
" value{i}", // 2 trimLeft
|
|
34
|
-
"value{i} ", // 3 trimRight
|
|
35
|
-
"VALUE{i}", // 4 toLower
|
|
36
|
-
"¤value{i}", // 5 cropLeft
|
|
37
|
-
"value{i}¤", // 6 cropRight
|
|
38
|
-
"¤¤value{i}", // 7 cropToDelimiter
|
|
39
|
-
"value{i}¤!", // 8 cropFromDelimiter
|
|
40
|
-
"!¤value{i}", // 9 substring
|
|
41
|
-
"v¤lue{i}" // 10 replace
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
function _generateTemplateVariable(i:number): string {
|
|
46
|
-
return VARIABLE_OPTIONS[i % VARIABLE_OPTIONS.length].replace(/\{i\}/g, i.toString())
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function _generateTemplateHtml(variableCount: number): string {
|
|
50
|
-
let template = "{{{header}}}\n<div>\n" // edge case: tag at the start of the template
|
|
51
|
-
for (let i = 1; i <= variableCount; i++) {
|
|
52
|
-
template += `<p>${_generateTemplateVariable(i)}</p>\n`
|
|
53
|
-
}
|
|
54
|
-
template += "</div>\n{{{footer}}}" // edge case: tag at the end of the template
|
|
55
|
-
return template
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function _generateResultHtml(variableCount: number): string {
|
|
59
|
-
let template = "header\n<div>\n"
|
|
60
|
-
for (let i = 1; i <= variableCount; i++) {
|
|
61
|
-
template += `<p>value${i}</p>\n`
|
|
62
|
-
}
|
|
63
|
-
template += "</div>\nfooter"
|
|
64
|
-
return template
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
function _generateValue(i: number): string {
|
|
69
|
-
return VARIABLE_VALUES[i % VARIABLE_VALUES.length].replace(/\{i\}/g, i.toString())
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
function _generateValues(variableCount: number): any {
|
|
73
|
-
const values: any = { header: "header", footer: "footer" }
|
|
74
|
-
for (let i = 1; i <= variableCount; i++) {
|
|
75
|
-
values[`var${i}`] = _generateValue(i)
|
|
76
|
-
}
|
|
77
|
-
return values
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
function benchmarkOINOHtmlTemplate(variables:number, replacements: number = 1000): number {
|
|
81
|
-
const template = new OINOHtmlTemplate(_generateTemplateHtml(variables))
|
|
82
|
-
const values = _generateValues(variables)
|
|
83
|
-
const result = _generateResultHtml(variables)
|
|
84
|
-
|
|
85
|
-
const start = performance.now();
|
|
86
|
-
|
|
87
|
-
for (let i = 0; i < replacements; i+=variables) {
|
|
88
|
-
template.setVariableFromProperties(values)
|
|
89
|
-
const res = template.render()
|
|
90
|
-
expect(res.body).toBe(result)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const end = performance.now()
|
|
94
|
-
const duration = end - start
|
|
95
|
-
return Math.round(replacements / duration)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
await test("OINOHtmlTemplate render and performance", async () => {
|
|
99
|
-
|
|
100
|
-
let hps_min = Number.MAX_VALUE
|
|
101
|
-
let hps_max = 0
|
|
102
|
-
|
|
103
|
-
for (let j=10; j<=100; j+=10) {
|
|
104
|
-
const rps = benchmarkOINOHtmlTemplate(j, 100000)
|
|
105
|
-
// console.log(`Template variable renders per second with ${j} variables: ${rps}krps`)
|
|
106
|
-
hps_min = Math.min(rps, hps_min)
|
|
107
|
-
hps_max = Math.max(rps, hps_max)
|
|
108
|
-
expect(hps_min).toBeGreaterThanOrEqual(2500)
|
|
109
|
-
expect(hps_max).toBeLessThanOrEqual(5000)
|
|
110
|
-
}
|
|
111
|
-
console.log("OINOHtmlTemplate performance: " + hps_min + "k - " + hps_max + "k renders per second")
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
|
|
1
|
+
/*
|
|
2
|
+
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { expect, test } from "bun:test";
|
|
8
|
+
|
|
9
|
+
import { OINOHtmlTemplate } from "./OINOHtmlTemplate"
|
|
10
|
+
import { OINOFormatter } from "./OINOFormatter";
|
|
11
|
+
import { OINOLog, OINOConsoleLog, OINOLogLevel } from "./OINOLog"
|
|
12
|
+
|
|
13
|
+
Math.random()
|
|
14
|
+
|
|
15
|
+
OINOLog.setInstance(new OINOConsoleLog(OINOLogLevel.error))
|
|
16
|
+
|
|
17
|
+
const VARIABLE_OPTIONS = [
|
|
18
|
+
"{{{var{i}}}}", // 0 nothing
|
|
19
|
+
"{{{var{i}|trim()}}}", // 1 trim
|
|
20
|
+
"{{{var{i}|trimLeft()}}}", // 2 trimLeft
|
|
21
|
+
"{{{var{i}|trimRight()}}}", // 3 trimRight
|
|
22
|
+
"{{{var{i}|toLower()}}}", // 4 toLower
|
|
23
|
+
"{{{var{i}|cropLeft(1)}}}", // 5 cropLeft
|
|
24
|
+
"{{{var{i}|cropRight(1)}}}", // 6 cropRight
|
|
25
|
+
"{{{var{i}|cropToDelimiter(¤,1)}}}", // 7 cropToDelimiter
|
|
26
|
+
"{{{var{i}|cropFromDelimiter(¤,0)}}}", // 8 cropFromDelimiter
|
|
27
|
+
"{{{var{i}|substring(2,10)}}}", // 9 substring
|
|
28
|
+
"{{{var{i}|replace(¤,a)}}}" // 10 replace
|
|
29
|
+
]
|
|
30
|
+
const VARIABLE_VALUES = [
|
|
31
|
+
"value{i}", // 0 nothing
|
|
32
|
+
" value{i} ", // 1 trim
|
|
33
|
+
" value{i}", // 2 trimLeft
|
|
34
|
+
"value{i} ", // 3 trimRight
|
|
35
|
+
"VALUE{i}", // 4 toLower
|
|
36
|
+
"¤value{i}", // 5 cropLeft
|
|
37
|
+
"value{i}¤", // 6 cropRight
|
|
38
|
+
"¤¤value{i}", // 7 cropToDelimiter
|
|
39
|
+
"value{i}¤!", // 8 cropFromDelimiter
|
|
40
|
+
"!¤value{i}", // 9 substring
|
|
41
|
+
"v¤lue{i}" // 10 replace
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
function _generateTemplateVariable(i:number): string {
|
|
46
|
+
return VARIABLE_OPTIONS[i % VARIABLE_OPTIONS.length].replace(/\{i\}/g, i.toString())
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function _generateTemplateHtml(variableCount: number): string {
|
|
50
|
+
let template = "{{{header}}}\n<div>\n" // edge case: tag at the start of the template
|
|
51
|
+
for (let i = 1; i <= variableCount; i++) {
|
|
52
|
+
template += `<p>${_generateTemplateVariable(i)}</p>\n`
|
|
53
|
+
}
|
|
54
|
+
template += "</div>\n{{{footer}}}" // edge case: tag at the end of the template
|
|
55
|
+
return template
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function _generateResultHtml(variableCount: number): string {
|
|
59
|
+
let template = "header\n<div>\n"
|
|
60
|
+
for (let i = 1; i <= variableCount; i++) {
|
|
61
|
+
template += `<p>value${i}</p>\n`
|
|
62
|
+
}
|
|
63
|
+
template += "</div>\nfooter"
|
|
64
|
+
return template
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
function _generateValue(i: number): string {
|
|
69
|
+
return VARIABLE_VALUES[i % VARIABLE_VALUES.length].replace(/\{i\}/g, i.toString())
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function _generateValues(variableCount: number): any {
|
|
73
|
+
const values: any = { header: "header", footer: "footer" }
|
|
74
|
+
for (let i = 1; i <= variableCount; i++) {
|
|
75
|
+
values[`var${i}`] = _generateValue(i)
|
|
76
|
+
}
|
|
77
|
+
return values
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function benchmarkOINOHtmlTemplate(variables:number, replacements: number = 1000): number {
|
|
81
|
+
const template = new OINOHtmlTemplate(_generateTemplateHtml(variables))
|
|
82
|
+
const values = _generateValues(variables)
|
|
83
|
+
const result = _generateResultHtml(variables)
|
|
84
|
+
|
|
85
|
+
const start = performance.now();
|
|
86
|
+
|
|
87
|
+
for (let i = 0; i < replacements; i+=variables) {
|
|
88
|
+
template.setVariableFromProperties(values)
|
|
89
|
+
const res = template.render()
|
|
90
|
+
expect(res.body).toBe(result)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const end = performance.now()
|
|
94
|
+
const duration = end - start
|
|
95
|
+
return Math.round(replacements / duration)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
await test("OINOHtmlTemplate render and performance", async () => {
|
|
99
|
+
|
|
100
|
+
let hps_min = Number.MAX_VALUE
|
|
101
|
+
let hps_max = 0
|
|
102
|
+
|
|
103
|
+
for (let j=10; j<=100; j+=10) {
|
|
104
|
+
const rps = benchmarkOINOHtmlTemplate(j, 100000)
|
|
105
|
+
// console.log(`Template variable renders per second with ${j} variables: ${rps}krps`)
|
|
106
|
+
hps_min = Math.min(rps, hps_min)
|
|
107
|
+
hps_max = Math.max(rps, hps_max)
|
|
108
|
+
expect(hps_min).toBeGreaterThanOrEqual(2500)
|
|
109
|
+
expect(hps_max).toBeLessThanOrEqual(5000)
|
|
110
|
+
}
|
|
111
|
+
console.log("OINOHtmlTemplate performance: " + hps_min + "k - " + hps_max + "k renders per second")
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
|