@oino-ts/common 0.21.1 → 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/OINOBenchmark.js +3 -4
- 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/OINOBenchmark.js +3 -4
- 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/OINOBenchmark.d.ts +1 -1
- 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 -324
- 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
package/src/OINOFormatter.ts
CHANGED
|
@@ -1,165 +1,166 @@
|
|
|
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 { OINO_ERROR_PREFIX
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*
|
|
23
|
-
* @param
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* -
|
|
36
|
-
* -
|
|
37
|
-
* -
|
|
38
|
-
* -
|
|
39
|
-
* -
|
|
40
|
-
* -
|
|
41
|
-
* -
|
|
42
|
-
* -
|
|
43
|
-
* -
|
|
44
|
-
* -
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
*
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* @
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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 { OINO_ERROR_PREFIX } from "./OINOConstants.js"
|
|
8
|
+
import { OINOLog } from "./OINOLog.js"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Class for formatting strings and values.
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
export class OINOFormatter {
|
|
17
|
+
static OINO_FORMATTER_REGEXP = /\s?(trim(\(\))?|trimLeft(\(\))?|trimRight(\(\))?|toUpper(\(\))?|toLower(\(\))?|cropLeft\((\d+)\)|cropRight\((\d+)\)|cropToDelimiter\(([^\(\),]+),(\d+)\)|cropFromDelimiter\(([^\(\),]+),(\d+)\)|substring\((\d+),(\d+)\)|replace\(([^\(\),]+),([^\(\),]+)\))\s?$/i
|
|
18
|
+
_types: string[]
|
|
19
|
+
_params: any[][]
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Constructor of `OINOFormatter`
|
|
23
|
+
* @param types array of formatter types
|
|
24
|
+
* @param params array of formatter parameters according to type
|
|
25
|
+
*/
|
|
26
|
+
constructor(types: string[], params: any[][]) {
|
|
27
|
+
this._types = types
|
|
28
|
+
this._params = params
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Constructor for `OINOFormatter` as parser of http parameter.
|
|
33
|
+
*
|
|
34
|
+
* @param formatters string or array of strings of serialized representation of formatters with following functions
|
|
35
|
+
* - trim()
|
|
36
|
+
* - trimLeft()
|
|
37
|
+
* - trimRight()
|
|
38
|
+
* - toUpper()
|
|
39
|
+
* - toLower()
|
|
40
|
+
* - cropLeft(charsToCrop)
|
|
41
|
+
* - cropRight(charsToCrop)
|
|
42
|
+
* - cropToDelimiter(delimiter,offsetChars)
|
|
43
|
+
* - cropFromDelimiter(delimiter,offsetChars)
|
|
44
|
+
* - substring(start,end)
|
|
45
|
+
* - replace(search,replace)
|
|
46
|
+
*/
|
|
47
|
+
static parse(formatters: string|string[]): OINOFormatter {
|
|
48
|
+
if (typeof formatters === "string") {
|
|
49
|
+
formatters = [formatters]
|
|
50
|
+
}
|
|
51
|
+
if (!formatters || formatters.length === 0) {
|
|
52
|
+
return OINO_EMPTY_FORMATTER
|
|
53
|
+
|
|
54
|
+
} else {
|
|
55
|
+
const types:string[] = []
|
|
56
|
+
const params:any[][] = []
|
|
57
|
+
for (let i=0; i<formatters.length; i++) {
|
|
58
|
+
let match = formatters[i]?.match(this.OINO_FORMATTER_REGEXP)
|
|
59
|
+
if (!match) {
|
|
60
|
+
OINOLog.error("@oino-ts/common", "OINOFormatter", "parse", "Invalid formatter string", {formatter:formatters[i]})
|
|
61
|
+
throw new Error(OINO_ERROR_PREFIX + "Invalid formatter: " + formatters[i])
|
|
62
|
+
} else {
|
|
63
|
+
const formatter_type = match[1].toLowerCase().substring(0, match[1].indexOf('('))
|
|
64
|
+
const formatter_params: any[] = []
|
|
65
|
+
if ((formatter_type === "trim") || (formatter_type === "trimleft") || (formatter_type === "trimright") || (formatter_type === "toupper") || (formatter_type === "tolower")) {
|
|
66
|
+
// no parameters
|
|
67
|
+
|
|
68
|
+
} else if (formatter_type=== "cropleft") {
|
|
69
|
+
formatter_params.push(parseInt(match[7]))
|
|
70
|
+
|
|
71
|
+
} else if (formatter_type === "cropright") {
|
|
72
|
+
formatter_params.push(parseInt(match[8]))
|
|
73
|
+
|
|
74
|
+
} else if (formatter_type === "croptodelimiter") {
|
|
75
|
+
formatter_params.push(decodeURIComponent(match[9]), parseInt(match[10]))
|
|
76
|
+
|
|
77
|
+
} else if (formatter_type === "cropfromdelimiter") {
|
|
78
|
+
formatter_params.push(decodeURIComponent(match[11]), parseInt(match[12]))
|
|
79
|
+
|
|
80
|
+
} else if (formatter_type === "substring") {
|
|
81
|
+
formatter_params.push(parseInt(match[13]), parseInt(match[14]))
|
|
82
|
+
|
|
83
|
+
} else if (formatter_type === "replace") {
|
|
84
|
+
formatter_params.push(decodeURIComponent(match[15]), decodeURIComponent(match[16]))
|
|
85
|
+
} else {
|
|
86
|
+
OINOLog.error("@oino-ts/common", "OINOFormatter", "parse", "Unknown formatter type", {formatter:formatters[i]})
|
|
87
|
+
throw new Error(OINO_ERROR_PREFIX + "Unsupported formatter: " + formatters[i])
|
|
88
|
+
}
|
|
89
|
+
types.push(formatter_type)
|
|
90
|
+
params.push(formatter_params)
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return new OINOFormatter(types, params)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Does formatter include any operations.
|
|
99
|
+
* @return true if formatter is empty
|
|
100
|
+
*/
|
|
101
|
+
isEmpty():boolean {
|
|
102
|
+
return this._types.length === 0
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Applies all formatters in order to given value.
|
|
107
|
+
*
|
|
108
|
+
* @param value string value to be formatted
|
|
109
|
+
* @returns formatted string value
|
|
110
|
+
*/
|
|
111
|
+
format(value: string): string {
|
|
112
|
+
let formatted = value
|
|
113
|
+
for (let i = 0; i < this._types.length; i++) {
|
|
114
|
+
const formatter_type = this._types[i]
|
|
115
|
+
const formatter_params = this._params[i]
|
|
116
|
+
if (formatter_type === "trim") {
|
|
117
|
+
formatted = formatted.trim()
|
|
118
|
+
|
|
119
|
+
} else if (formatter_type === "trimleft") {
|
|
120
|
+
formatted = formatted.trimStart()
|
|
121
|
+
|
|
122
|
+
} else if (formatter_type === "trimright") {
|
|
123
|
+
formatted = formatted.trimEnd()
|
|
124
|
+
|
|
125
|
+
} else if (formatter_type === "toupper") {
|
|
126
|
+
formatted = formatted.toUpperCase()
|
|
127
|
+
|
|
128
|
+
} else if (formatter_type === "tolower") {
|
|
129
|
+
formatted = formatted.toLowerCase()
|
|
130
|
+
|
|
131
|
+
} else if (formatter_type === "cropleft") {
|
|
132
|
+
formatted = formatted.slice(formatter_params[0])
|
|
133
|
+
|
|
134
|
+
} else if (formatter_type === "cropright") {
|
|
135
|
+
formatted = formatted.slice(0, formatted.length-formatter_params[0])
|
|
136
|
+
|
|
137
|
+
} else if (formatter_type === "croptodelimiter") {
|
|
138
|
+
const to_demilimiter_idx = formatted.indexOf(formatter_params[0])
|
|
139
|
+
if (to_demilimiter_idx >= 0) {
|
|
140
|
+
formatted = formatted.slice(Math.max(to_demilimiter_idx + formatter_params[0].length + formatter_params[1], 0))
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
} else if (formatter_type === "cropfromdelimiter") {
|
|
144
|
+
const from_demilimiter_idx = formatted.indexOf(formatter_params[0])
|
|
145
|
+
if (from_demilimiter_idx >= 0) {
|
|
146
|
+
formatted = formatted.slice(0, Math.max(from_demilimiter_idx + formatter_params[1], 0))
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
} else if (formatter_type === "substring") {
|
|
150
|
+
const start = formatter_params[0] ? parseInt(formatter_params[0]) : 0
|
|
151
|
+
const end = formatter_params[1] ? parseInt(formatter_params[1]) : formatted.length
|
|
152
|
+
formatted = formatted.substring(start, end)
|
|
153
|
+
|
|
154
|
+
} else if (formatter_type === "replace") {
|
|
155
|
+
const search = formatter_params[0]
|
|
156
|
+
const replacement = formatter_params[1]
|
|
157
|
+
formatted = formatted.replaceAll(search, replacement)
|
|
158
|
+
}
|
|
159
|
+
// console.log("formatter:", formatter_type, "params:", formatter_params, "formatted:", formatted)
|
|
160
|
+
}
|
|
161
|
+
return formatted
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export const OINO_EMPTY_FORMATTER = new OINOFormatter([], [])
|
package/src/OINOHeaders.ts
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
export type OINOHeadersInit = OINOHeaders | Record<string, string> | [string, string][] | Map<string, string>;
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Type for HTTP style headers that just guarantees keys are normalized to lowercase.
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export class OINOHeaders {
|
|
9
|
-
[key: string]: any
|
|
10
|
-
|
|
11
|
-
constructor(init?: OINOHeadersInit) {
|
|
12
|
-
this.setHeaders(init ?? {})
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
get(key: string): string | undefined {
|
|
16
|
-
return this[key.toLowerCase()]
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
set(key: string, value: string): void {
|
|
20
|
-
this[key.toLowerCase()] = value
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
setHeaders(init?: OINOHeadersInit): void {
|
|
24
|
-
if (init instanceof OINOHeaders) {
|
|
25
|
-
for (const key of Object.keys(init)) {
|
|
26
|
-
this.set(key, init.get(key)!)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
} else if (init instanceof Map) {
|
|
30
|
-
for (const [key, value] of init.entries()) {
|
|
31
|
-
this.set(key, value)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
} else if (Array.isArray(init)) {
|
|
35
|
-
for (const [key, value] of init) {
|
|
36
|
-
this.set(key, value)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
} else if (init && typeof init === "object") {
|
|
40
|
-
for (const key in init as Record<string, string>) {
|
|
41
|
-
this.set(key, init[key])
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
clear(): void {
|
|
47
|
-
for (const key of Object.keys(this)) {
|
|
48
|
-
delete this[key]
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
1
|
+
export type OINOHeadersInit = OINOHeaders | Record<string, string> | [string, string][] | Map<string, string>;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Type for HTTP style headers that just guarantees keys are normalized to lowercase.
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export class OINOHeaders {
|
|
9
|
+
[key: string]: any
|
|
10
|
+
|
|
11
|
+
constructor(init?: OINOHeadersInit) {
|
|
12
|
+
this.setHeaders(init ?? {})
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get(key: string): string | undefined {
|
|
16
|
+
return this[key.toLowerCase()]
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
set(key: string, value: string): void {
|
|
20
|
+
this[key.toLowerCase()] = value
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
setHeaders(init?: OINOHeadersInit): void {
|
|
24
|
+
if (init instanceof OINOHeaders) {
|
|
25
|
+
for (const key of Object.keys(init)) {
|
|
26
|
+
this.set(key, init.get(key)!)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
} else if (init instanceof Map) {
|
|
30
|
+
for (const [key, value] of init.entries()) {
|
|
31
|
+
this.set(key, value)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
} else if (Array.isArray(init)) {
|
|
35
|
+
for (const [key, value] of init) {
|
|
36
|
+
this.set(key, value)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
} else if (init && typeof init === "object") {
|
|
40
|
+
for (const key in init as Record<string, string>) {
|
|
41
|
+
this.set(key, init[key])
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
clear(): void {
|
|
47
|
+
for (const key of Object.keys(this)) {
|
|
48
|
+
delete this[key]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|