@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.
Files changed (69) hide show
  1. package/README.md +183 -0
  2. package/dist/cjs/OINOApi.js +322 -0
  3. package/dist/cjs/OINOConfig.js +104 -0
  4. package/dist/cjs/OINOConstants.js +42 -0
  5. package/dist/cjs/OINODataField.js +346 -0
  6. package/dist/cjs/OINODataModel.js +182 -0
  7. package/dist/cjs/OINODataSource.js +165 -0
  8. package/dist/cjs/OINOFormatter.js +6 -5
  9. package/dist/cjs/OINOHtmlTemplate.js +21 -18
  10. package/dist/cjs/OINOModelSet.js +333 -0
  11. package/dist/cjs/OINOParser.js +448 -0
  12. package/dist/cjs/OINOQueryParams.js +434 -0
  13. package/dist/cjs/OINORequest.js +21 -13
  14. package/dist/cjs/OINOResult.js +13 -12
  15. package/dist/cjs/OINOStr.js +11 -11
  16. package/dist/cjs/OINOSwagger.js +205 -0
  17. package/dist/cjs/index.js +57 -39
  18. package/dist/esm/OINOApi.js +315 -0
  19. package/dist/esm/OINOConfig.js +100 -0
  20. package/dist/esm/OINOConstants.js +39 -0
  21. package/dist/esm/OINODataField.js +337 -0
  22. package/dist/esm/OINODataModel.js +178 -0
  23. package/dist/esm/OINODataSource.js +159 -0
  24. package/dist/esm/OINOFormatter.js +2 -1
  25. package/dist/esm/OINOHtmlTemplate.js +4 -1
  26. package/dist/esm/OINOModelSet.js +329 -0
  27. package/dist/esm/OINOParser.js +444 -0
  28. package/dist/esm/OINOQueryParams.js +426 -0
  29. package/dist/esm/OINORequest.js +9 -1
  30. package/dist/esm/OINOResult.js +2 -1
  31. package/dist/esm/OINOStr.js +1 -1
  32. package/dist/esm/OINOSwagger.js +201 -0
  33. package/dist/esm/index.js +14 -32
  34. package/dist/types/OINOApi.d.ts +191 -0
  35. package/dist/types/OINOConfig.d.ts +63 -0
  36. package/dist/types/OINOConstants.d.ts +51 -0
  37. package/dist/types/OINODataField.d.ts +209 -0
  38. package/dist/types/OINODataModel.d.ts +78 -0
  39. package/dist/types/OINODataSource.d.ts +184 -0
  40. package/dist/types/OINOHtmlTemplate.d.ts +1 -1
  41. package/dist/types/OINOModelSet.d.ts +64 -0
  42. package/dist/types/OINOParser.d.ts +42 -0
  43. package/dist/types/OINOQueryParams.d.ts +270 -0
  44. package/dist/types/OINORequest.d.ts +4 -1
  45. package/dist/types/OINOResult.d.ts +1 -1
  46. package/dist/types/OINOStr.d.ts +1 -1
  47. package/dist/types/OINOSwagger.d.ts +25 -0
  48. package/dist/types/index.d.ts +14 -31
  49. package/package.json +32 -32
  50. package/src/OINOApi.ts +429 -0
  51. package/src/OINOBenchmark.ts +323 -323
  52. package/src/OINOConfig.ts +113 -0
  53. package/src/OINOConstants.ts +59 -0
  54. package/src/OINODataField.ts +371 -0
  55. package/src/OINODataModel.ts +187 -0
  56. package/src/OINODataSource.ts +280 -0
  57. package/src/OINOFormatter.ts +166 -165
  58. package/src/OINOHeaders.ts +51 -51
  59. package/src/OINOHtmlTemplate.test.ts +114 -114
  60. package/src/OINOHtmlTemplate.ts +225 -222
  61. package/src/OINOLog.ts +292 -292
  62. package/src/OINOModelSet.ts +359 -0
  63. package/src/OINOParser.ts +441 -0
  64. package/src/OINOQueryParams.ts +449 -0
  65. package/src/OINORequest.ts +204 -196
  66. package/src/OINOResult.ts +331 -330
  67. package/src/OINOStr.ts +254 -254
  68. package/src/OINOSwagger.ts +213 -0
  69. 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
+