@chubbyts/chubbyts-decode-encode 1.4.1 → 2.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 +5 -5
- package/dist/decoder/{json-type-decoder.mjs → json-type-decoder.js} +1 -1
- package/dist/decoder/{jsonx-type-decoder.mjs → jsonx-type-decoder.js} +2 -2
- package/dist/decoder/{url-encoded-type-decoder.mjs → url-encoded-type-decoder.js} +1 -1
- package/dist/decoder/{yaml-type-decoder.mjs → yaml-type-decoder.js} +1 -1
- package/dist/encoder/{jsonx-type-encoder.mjs → jsonx-type-encoder.js} +3 -3
- package/dist/encoder/{url-encoded-type-encoder.mjs → url-encoded-type-encoder.js} +1 -1
- package/package.json +25 -30
- package/dist/decoder/index.cjs +0 -24
- package/dist/decoder/json-type-decoder.cjs +0 -20
- package/dist/decoder/jsonx-type-decoder.cjs +0 -95
- package/dist/decoder/url-encoded-type-decoder.cjs +0 -38
- package/dist/decoder/yaml-type-decoder.cjs +0 -21
- package/dist/encoder/index.cjs +0 -24
- package/dist/encoder/json-type-encoder.cjs +0 -10
- package/dist/encoder/jsonx-type-encoder.cjs +0 -177
- package/dist/encoder/url-encoded-type-encoder.cjs +0 -30
- package/dist/encoder/yaml-type-encoder.cjs +0 -11
- package/dist/index.cjs +0 -15
- package/dist/jsonx-datatypes.cjs +0 -9
- /package/dist/decoder/{index.mjs → index.js} +0 -0
- /package/dist/encoder/{index.mjs → index.js} +0 -0
- /package/dist/encoder/{json-type-encoder.mjs → json-type-encoder.js} +0 -0
- /package/dist/encoder/{yaml-type-encoder.mjs → yaml-type-encoder.js} +0 -0
- /package/dist/{index.mjs → index.js} +0 -0
- /package/dist/{jsonx-datatypes.mjs → jsonx-datatypes.js} +0 -0
package/README.md
CHANGED
|
@@ -24,17 +24,17 @@ A simple decode/encode solution for json / jsonx / url-encoded / xml / yaml.
|
|
|
24
24
|
## Requirements
|
|
25
25
|
|
|
26
26
|
* node: 18
|
|
27
|
-
* [@chubbyts/chubbyts-throwable-to-error][2]: ^
|
|
28
|
-
* [fast-xml-parser][3]: ^
|
|
29
|
-
* [qs][4]: ^6.
|
|
30
|
-
* [yaml][5]: ^2.
|
|
27
|
+
* [@chubbyts/chubbyts-throwable-to-error][2]: ^2.0.0
|
|
28
|
+
* [fast-xml-parser][3]: ^5.2.5
|
|
29
|
+
* [qs][4]: ^6.14.0
|
|
30
|
+
* [yaml][5]: ^2.8.0
|
|
31
31
|
|
|
32
32
|
## Installation
|
|
33
33
|
|
|
34
34
|
Through [NPM](https://www.npmjs.com) as [@chubbyts/chubbyts-decode-encode][1].
|
|
35
35
|
|
|
36
36
|
```ts
|
|
37
|
-
npm i @chubbyts/chubbyts-decode-encode@^
|
|
37
|
+
npm i @chubbyts/chubbyts-decode-encode@^2.0.0
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
## Usage
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { throwableToError } from '@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error';
|
|
2
|
-
import { DecodeError } from './index
|
|
2
|
+
import { DecodeError } from './index';
|
|
3
3
|
export const createJsonTypeDecoder = () => {
|
|
4
4
|
return {
|
|
5
5
|
decode: (encodedData) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { XMLParser } from 'fast-xml-parser';
|
|
2
2
|
import { throwableToError } from '@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error';
|
|
3
|
-
import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes
|
|
4
|
-
import { DecodeError } from './index
|
|
3
|
+
import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes';
|
|
4
|
+
import { DecodeError } from './index';
|
|
5
5
|
const decodeHtmlEntities = (string) => string.replace(/&#\d+;/gm, (code) => String.fromCharCode(code.match(/\d+/)[0]));
|
|
6
6
|
const isWithName = (node) => typeof node === 'object' &&
|
|
7
7
|
null !== node &&
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parse } from 'qs';
|
|
2
|
-
import { isArray, isObject } from '../index
|
|
2
|
+
import { isArray, isObject } from '../index';
|
|
3
3
|
const decodeValue = (value) => {
|
|
4
4
|
if (isObject(value)) {
|
|
5
5
|
return Object.fromEntries(Object.entries(value).map(([subKey, subValue]) => [subKey, decodeValue(subValue)]));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { parse } from 'yaml';
|
|
2
2
|
import { throwableToError } from '@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error';
|
|
3
|
-
import { DecodeError } from './index
|
|
3
|
+
import { DecodeError } from './index';
|
|
4
4
|
export const createYamlTypeDecoder = () => {
|
|
5
5
|
return {
|
|
6
6
|
decode: (encodedData) => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { XMLBuilder } from 'fast-xml-parser';
|
|
2
2
|
import { throwableToError } from '@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error';
|
|
3
|
-
import { isArray, isBoolean, isNumber, isObject, isString, isNull } from '../index
|
|
4
|
-
import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes
|
|
5
|
-
import { EncodeError } from './index
|
|
3
|
+
import { isArray, isBoolean, isNumber, isObject, isString, isNull } from '../index';
|
|
4
|
+
import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes';
|
|
5
|
+
import { EncodeError } from './index';
|
|
6
6
|
const encodeHtmlEntities = (string) => string.replace(/[\u00A0-\u9999<>&]/g, (i) => '&#' + i.charCodeAt(0) + ';');
|
|
7
7
|
const createXmlNode = () => {
|
|
8
8
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { stringify } from 'qs';
|
|
2
|
-
import { isArray, isBoolean, isNull, isNumber, isObject } from '../index
|
|
2
|
+
import { isArray, isBoolean, isNull, isNumber, isObject } from '../index';
|
|
3
3
|
const encodeValue = (value) => {
|
|
4
4
|
if (isObject(value)) {
|
|
5
5
|
return Object.fromEntries(Object.entries(value).map(([subKey, subValue]) => [subKey, encodeValue(subValue)]));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chubbyts/chubbyts-decode-encode",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.0",
|
|
5
5
|
"description": "A simple decode/encode solution for json / jsonx / url-encoded / xml / yaml.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"chubbyts",
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"license": "MIT",
|
|
18
18
|
"repository": "chubbyts/chubbyts-decode-encode",
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build": "
|
|
20
|
+
"build": "tsc",
|
|
21
21
|
"cs-fix": "prettier --write src tests",
|
|
22
22
|
"cs": "prettier --check src tests",
|
|
23
23
|
"infection": "stryker run",
|
|
24
|
-
"lint-fix": "eslint src tests eslint.config.
|
|
24
|
+
"lint-fix": "eslint src tests eslint.config.js vitest.config.ts --fix",
|
|
25
25
|
"lint": "eslint src tests",
|
|
26
26
|
"prepare": "npm run build",
|
|
27
27
|
"test": "vitest"
|
|
@@ -38,50 +38,45 @@
|
|
|
38
38
|
"exports": {
|
|
39
39
|
"./dist": {
|
|
40
40
|
"types": "./dist/index.d.ts",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"default": "./dist/index.mjs"
|
|
41
|
+
"import": "./dist/index.js",
|
|
42
|
+
"default": "./dist/index.js"
|
|
44
43
|
},
|
|
45
44
|
"./dist/decoder": {
|
|
46
45
|
"types": "./dist/decoder/index.d.ts",
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"default": "./dist/decoder/index.mjs"
|
|
46
|
+
"import": "./dist/decoder/index.js",
|
|
47
|
+
"default": "./dist/decoder/index.js"
|
|
50
48
|
},
|
|
51
49
|
"./dist/encoder": {
|
|
52
50
|
"types": "./dist/encoder/index.d.ts",
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"default": "./dist/encoder/index.mjs"
|
|
51
|
+
"import": "./dist/encoder/index.js",
|
|
52
|
+
"default": "./dist/encoder/index.js"
|
|
56
53
|
},
|
|
57
54
|
"./*": {
|
|
58
55
|
"types": "./*.d.ts",
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"default": "./*.mjs"
|
|
56
|
+
"import": "./*.js",
|
|
57
|
+
"default": "./*.js"
|
|
62
58
|
}
|
|
63
59
|
},
|
|
64
60
|
"engines": {
|
|
65
61
|
"node": ">=18"
|
|
66
62
|
},
|
|
67
63
|
"dependencies": {
|
|
68
|
-
"@chubbyts/chubbyts-throwable-to-error": "^
|
|
69
|
-
"fast-xml-parser": "^
|
|
70
|
-
"qs": "^6.
|
|
71
|
-
"yaml": "^2.
|
|
64
|
+
"@chubbyts/chubbyts-throwable-to-error": "^2.0.1",
|
|
65
|
+
"fast-xml-parser": "^5.2.5",
|
|
66
|
+
"qs": "^6.14.0",
|
|
67
|
+
"yaml": "^2.8.0"
|
|
72
68
|
},
|
|
73
69
|
"devDependencies": {
|
|
74
|
-
"@chubbyts/chubbyts-eslint": "^
|
|
75
|
-
"@chubbyts/chubbyts-function-mock": "^
|
|
76
|
-
"@
|
|
77
|
-
"@stryker-mutator/
|
|
78
|
-
"@
|
|
79
|
-
"@types/
|
|
80
|
-
"@
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"vitest": "^2.1.8"
|
|
70
|
+
"@chubbyts/chubbyts-eslint": "^4.0.2",
|
|
71
|
+
"@chubbyts/chubbyts-function-mock": "^2.0.1",
|
|
72
|
+
"@stryker-mutator/core": "^9.0.1",
|
|
73
|
+
"@stryker-mutator/vitest-runner": "^9.0.1",
|
|
74
|
+
"@types/node": "^24.0.1",
|
|
75
|
+
"@types/qs": "^6.14.0",
|
|
76
|
+
"@vitest/coverage-v8": "^3.2.3",
|
|
77
|
+
"prettier": "^3.5.3",
|
|
78
|
+
"typescript": "^5.8.3",
|
|
79
|
+
"vitest": "^3.2.3"
|
|
85
80
|
},
|
|
86
81
|
"publishConfig": {
|
|
87
82
|
"access": "public"
|
package/dist/decoder/index.cjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createDecoder = exports.DecodeError = void 0;
|
|
4
|
-
class DecodeError extends Error {
|
|
5
|
-
constructor(message, stack) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.stack = stack;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.DecodeError = DecodeError;
|
|
11
|
-
const createDecoder = (decoderTypes) => {
|
|
12
|
-
const decoderTypeMap = new Map(decoderTypes.map((DecoderType) => [DecoderType.contentType, DecoderType]));
|
|
13
|
-
const contentTypes = Array.from(decoderTypeMap.keys());
|
|
14
|
-
return {
|
|
15
|
-
decode: (encodedData, contentType) => {
|
|
16
|
-
if (decoderTypeMap.has(contentType)) {
|
|
17
|
-
return decoderTypeMap.get(contentType).decode(encodedData);
|
|
18
|
-
}
|
|
19
|
-
throw new Error(`Unsupported contentType "${contentType}", supported contentTypes are "${contentTypes.join('", "')}".`);
|
|
20
|
-
},
|
|
21
|
-
contentTypes,
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
exports.createDecoder = createDecoder;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createJsonTypeDecoder = void 0;
|
|
4
|
-
const throwable_to_error_1 = require("@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error");
|
|
5
|
-
const index_1 = require("./index.cjs");
|
|
6
|
-
const createJsonTypeDecoder = () => {
|
|
7
|
-
return {
|
|
8
|
-
decode: (encodedData) => {
|
|
9
|
-
try {
|
|
10
|
-
return JSON.parse(encodedData);
|
|
11
|
-
}
|
|
12
|
-
catch (e) {
|
|
13
|
-
const error = (0, throwable_to_error_1.throwableToError)(e);
|
|
14
|
-
throw new index_1.DecodeError(error.message, error.stack);
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
contentType: 'application/json',
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
exports.createJsonTypeDecoder = createJsonTypeDecoder;
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createJsonxTypeDecoder = void 0;
|
|
4
|
-
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
5
|
-
const throwable_to_error_1 = require("@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error");
|
|
6
|
-
const jsonx_datatypes_1 = require("../jsonx-datatypes.cjs");
|
|
7
|
-
const index_1 = require("./index.cjs");
|
|
8
|
-
const decodeHtmlEntities = (string) => string.replace(/&#\d+;/gm, (code) => String.fromCharCode(code.match(/\d+/)[0]));
|
|
9
|
-
const isWithName = (node) => typeof node === 'object' &&
|
|
10
|
-
null !== node &&
|
|
11
|
-
typeof node[':@'] === 'object' &&
|
|
12
|
-
node[':@'] !== null &&
|
|
13
|
-
typeof node[':@']['@_name'] === 'string';
|
|
14
|
-
const isObjectNode = (node) => Object.keys(node)[0] === jsonx_datatypes_1.DATATYPE_OBJECT && Array.isArray(node[jsonx_datatypes_1.DATATYPE_OBJECT]);
|
|
15
|
-
const isArrayNode = (node) => Object.keys(node)[0] === jsonx_datatypes_1.DATATYPE_ARRAY && Array.isArray(node[jsonx_datatypes_1.DATATYPE_ARRAY]);
|
|
16
|
-
const isStringNode = (node) => Object.keys(node)[0] === jsonx_datatypes_1.DATATYPE_STRING && Array.isArray(node[jsonx_datatypes_1.DATATYPE_STRING]);
|
|
17
|
-
const isNumberNode = (node) => Object.keys(node)[0] === jsonx_datatypes_1.DATATYPE_NUMBER && Array.isArray(node[jsonx_datatypes_1.DATATYPE_NUMBER]);
|
|
18
|
-
const isBooleanNode = (node) => Object.keys(node)[0] === jsonx_datatypes_1.DATATYPE_BOOLEAN && Array.isArray(node[jsonx_datatypes_1.DATATYPE_BOOLEAN]);
|
|
19
|
-
const isNullNode = (node) => Object.keys(node)[0] === jsonx_datatypes_1.DATATYPE_NULL && Array.isArray(node[jsonx_datatypes_1.DATATYPE_NULL]);
|
|
20
|
-
const convertNullNode = () => {
|
|
21
|
-
return null;
|
|
22
|
-
};
|
|
23
|
-
const convertBooleanNode = (node) => {
|
|
24
|
-
return node['json:boolean'][0]['#text'];
|
|
25
|
-
};
|
|
26
|
-
const convertNumberNode = (node) => {
|
|
27
|
-
return node['json:number'][0]['#text'];
|
|
28
|
-
};
|
|
29
|
-
const convertStringNode = (node) => {
|
|
30
|
-
return decodeHtmlEntities(node['json:string'][0]['#text']);
|
|
31
|
-
};
|
|
32
|
-
const convertNode = (node) => {
|
|
33
|
-
if (isObjectNode(node)) {
|
|
34
|
-
return convertObjectNode(node);
|
|
35
|
-
}
|
|
36
|
-
else if (isArrayNode(node)) {
|
|
37
|
-
return convertArrayNode(node);
|
|
38
|
-
}
|
|
39
|
-
else if (isStringNode(node)) {
|
|
40
|
-
return convertStringNode(node);
|
|
41
|
-
}
|
|
42
|
-
else if (isNumberNode(node)) {
|
|
43
|
-
return convertNumberNode(node);
|
|
44
|
-
}
|
|
45
|
-
else if (isBooleanNode(node)) {
|
|
46
|
-
return convertBooleanNode(node);
|
|
47
|
-
}
|
|
48
|
-
else if (isNullNode(node)) {
|
|
49
|
-
return convertNullNode();
|
|
50
|
-
}
|
|
51
|
-
throw new Error(`Unsupported node: ${JSON.stringify(node)}`);
|
|
52
|
-
};
|
|
53
|
-
const convertArrayNode = (node) => {
|
|
54
|
-
return node['json:array'].map(convertNode);
|
|
55
|
-
};
|
|
56
|
-
const convertNodeWithName = (node) => {
|
|
57
|
-
if (isObjectNode(node) && isWithName(node)) {
|
|
58
|
-
return [node[':@']['@_name'], convertObjectNode(node)];
|
|
59
|
-
}
|
|
60
|
-
else if (isArrayNode(node) && isWithName(node)) {
|
|
61
|
-
return [node[':@']['@_name'], convertArrayNode(node)];
|
|
62
|
-
}
|
|
63
|
-
else if (isStringNode(node) && isWithName(node)) {
|
|
64
|
-
return [node[':@']['@_name'], convertStringNode(node)];
|
|
65
|
-
}
|
|
66
|
-
else if (isNumberNode(node) && isWithName(node)) {
|
|
67
|
-
return [node[':@']['@_name'], convertNumberNode(node)];
|
|
68
|
-
}
|
|
69
|
-
else if (isBooleanNode(node) && isWithName(node)) {
|
|
70
|
-
return [node[':@']['@_name'], convertBooleanNode(node)];
|
|
71
|
-
}
|
|
72
|
-
else if (isNullNode(node) && isWithName(node)) {
|
|
73
|
-
return [node[':@']['@_name'], convertNullNode()];
|
|
74
|
-
}
|
|
75
|
-
throw new Error(`Unsupported node: ${JSON.stringify(node)}`);
|
|
76
|
-
};
|
|
77
|
-
const convertObjectNode = (node) => {
|
|
78
|
-
return Object.fromEntries(node['json:object'].map(convertNodeWithName));
|
|
79
|
-
};
|
|
80
|
-
const createJsonxTypeDecoder = () => {
|
|
81
|
-
return {
|
|
82
|
-
decode: (encodedData) => {
|
|
83
|
-
try {
|
|
84
|
-
const parser = new fast_xml_parser_1.XMLParser({ preserveOrder: true, ignoreAttributes: false, htmlEntities: false });
|
|
85
|
-
return convertNode(parser.parse(encodedData)[1]);
|
|
86
|
-
}
|
|
87
|
-
catch (e) {
|
|
88
|
-
const error = (0, throwable_to_error_1.throwableToError)(e);
|
|
89
|
-
throw new index_1.DecodeError(error.message, error.stack);
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
contentType: 'application/jsonx+xml',
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
exports.createJsonxTypeDecoder = createJsonxTypeDecoder;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createUrlEncodedTypeDecoder = void 0;
|
|
4
|
-
const qs_1 = require("qs");
|
|
5
|
-
const index_1 = require("../index.cjs");
|
|
6
|
-
const decodeValue = (value) => {
|
|
7
|
-
if ((0, index_1.isObject)(value)) {
|
|
8
|
-
return Object.fromEntries(Object.entries(value).map(([subKey, subValue]) => [subKey, decodeValue(subValue)]));
|
|
9
|
-
}
|
|
10
|
-
if ((0, index_1.isArray)(value)) {
|
|
11
|
-
return value.map(decodeValue);
|
|
12
|
-
}
|
|
13
|
-
if (value === 'null') {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
if (value === 'true') {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if (value === 'false') {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
const integer = parseInt(value, 10);
|
|
23
|
-
if (!isNaN(integer) && integer.toString() === value) {
|
|
24
|
-
return integer;
|
|
25
|
-
}
|
|
26
|
-
const float = parseFloat(value);
|
|
27
|
-
if (!isNaN(float) && float.toString() === value) {
|
|
28
|
-
return float;
|
|
29
|
-
}
|
|
30
|
-
return value;
|
|
31
|
-
};
|
|
32
|
-
const createUrlEncodedTypeDecoder = () => {
|
|
33
|
-
return {
|
|
34
|
-
decode: (encodedData) => decodeValue((0, qs_1.parse)(encodedData, { depth: 100 })),
|
|
35
|
-
contentType: 'application/x-www-form-urlencoded',
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
exports.createUrlEncodedTypeDecoder = createUrlEncodedTypeDecoder;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createYamlTypeDecoder = void 0;
|
|
4
|
-
const yaml_1 = require("yaml");
|
|
5
|
-
const throwable_to_error_1 = require("@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error");
|
|
6
|
-
const index_1 = require("./index.cjs");
|
|
7
|
-
const createYamlTypeDecoder = () => {
|
|
8
|
-
return {
|
|
9
|
-
decode: (encodedData) => {
|
|
10
|
-
try {
|
|
11
|
-
return (0, yaml_1.parse)(encodedData);
|
|
12
|
-
}
|
|
13
|
-
catch (e) {
|
|
14
|
-
const error = (0, throwable_to_error_1.throwableToError)(e);
|
|
15
|
-
throw new index_1.DecodeError(error.message, error.stack);
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
contentType: 'application/x-yaml',
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
exports.createYamlTypeDecoder = createYamlTypeDecoder;
|
package/dist/encoder/index.cjs
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createEncoder = exports.EncodeError = void 0;
|
|
4
|
-
class EncodeError extends Error {
|
|
5
|
-
constructor(message, stack) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.stack = stack;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.EncodeError = EncodeError;
|
|
11
|
-
const createEncoder = (encoderTypes) => {
|
|
12
|
-
const encoderTypeMap = new Map(encoderTypes.map((encoderType) => [encoderType.contentType, encoderType]));
|
|
13
|
-
const contentTypes = Array.from(encoderTypeMap.keys());
|
|
14
|
-
return {
|
|
15
|
-
encode: (data, contentType) => {
|
|
16
|
-
if (encoderTypeMap.has(contentType)) {
|
|
17
|
-
return encoderTypeMap.get(contentType).encode(data);
|
|
18
|
-
}
|
|
19
|
-
throw new Error(`Unsupported contentType "${contentType}", supported contentTypes are "${contentTypes.join('", "')}".`);
|
|
20
|
-
},
|
|
21
|
-
contentTypes,
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
exports.createEncoder = createEncoder;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createJsonTypeEncoder = void 0;
|
|
4
|
-
const createJsonTypeEncoder = (prettyPrint = false) => {
|
|
5
|
-
return {
|
|
6
|
-
encode: (data) => JSON.stringify(data, undefined, prettyPrint ? 4 : undefined),
|
|
7
|
-
contentType: 'application/json',
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
exports.createJsonTypeEncoder = createJsonTypeEncoder;
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createJsonxTypeEncoder = void 0;
|
|
4
|
-
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
5
|
-
const throwable_to_error_1 = require("@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error");
|
|
6
|
-
const index_1 = require("../index.cjs");
|
|
7
|
-
const jsonx_datatypes_1 = require("../jsonx-datatypes.cjs");
|
|
8
|
-
const index_2 = require("./index.cjs");
|
|
9
|
-
const encodeHtmlEntities = (string) => string.replace(/[\u00A0-\u9999<>&]/g, (i) => '&#' + i.charCodeAt(0) + ';');
|
|
10
|
-
const createXmlNode = () => {
|
|
11
|
-
return {
|
|
12
|
-
'?xml': [
|
|
13
|
-
{
|
|
14
|
-
'#text': '',
|
|
15
|
-
},
|
|
16
|
-
],
|
|
17
|
-
':@': {
|
|
18
|
-
'@_version': '1.0',
|
|
19
|
-
'@_encoding': 'UTF-8',
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
const createJsonxAttributes = () => {
|
|
24
|
-
return {
|
|
25
|
-
':@': {
|
|
26
|
-
'@_xsi:schemaLocation': 'http://www.datapower.com/schemas/json jsonx.xsd',
|
|
27
|
-
'@_xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
|
|
28
|
-
'@_xmlns:json': 'http://www.ibm.com/xmlns/prod/2009/jsonx',
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
const createNullNode = (key = undefined) => {
|
|
33
|
-
const node = {
|
|
34
|
-
[jsonx_datatypes_1.DATATYPE_NULL]: [],
|
|
35
|
-
};
|
|
36
|
-
if (key === undefined) {
|
|
37
|
-
return node;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
...node,
|
|
41
|
-
':@': {
|
|
42
|
-
'@_name': key,
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
const createBooleanNode = (value, key = undefined) => {
|
|
47
|
-
const node = {
|
|
48
|
-
[jsonx_datatypes_1.DATATYPE_BOOLEAN]: [
|
|
49
|
-
{
|
|
50
|
-
'#text': value,
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
};
|
|
54
|
-
if (key === undefined) {
|
|
55
|
-
return node;
|
|
56
|
-
}
|
|
57
|
-
return {
|
|
58
|
-
...node,
|
|
59
|
-
':@': {
|
|
60
|
-
'@_name': key,
|
|
61
|
-
},
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
const createNumberNode = (value, key = undefined) => {
|
|
65
|
-
const node = {
|
|
66
|
-
[jsonx_datatypes_1.DATATYPE_NUMBER]: [
|
|
67
|
-
{
|
|
68
|
-
'#text': value,
|
|
69
|
-
},
|
|
70
|
-
],
|
|
71
|
-
};
|
|
72
|
-
if (key === undefined) {
|
|
73
|
-
return node;
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
...node,
|
|
77
|
-
':@': {
|
|
78
|
-
'@_name': key,
|
|
79
|
-
},
|
|
80
|
-
};
|
|
81
|
-
};
|
|
82
|
-
const createStringNode = (value, key = undefined) => {
|
|
83
|
-
const node = {
|
|
84
|
-
[jsonx_datatypes_1.DATATYPE_STRING]: [
|
|
85
|
-
{
|
|
86
|
-
'#text': value === value.trim() ? encodeHtmlEntities(value) : `<![CDATA[${encodeHtmlEntities(value)}]]>`,
|
|
87
|
-
},
|
|
88
|
-
],
|
|
89
|
-
};
|
|
90
|
-
if (key === undefined) {
|
|
91
|
-
return node;
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
...node,
|
|
95
|
-
':@': {
|
|
96
|
-
'@_name': key,
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
};
|
|
100
|
-
const createNode = (value, key = undefined) => {
|
|
101
|
-
if ((0, index_1.isObject)(value)) {
|
|
102
|
-
return createObjectNode(value, key);
|
|
103
|
-
}
|
|
104
|
-
else if ((0, index_1.isArray)(value)) {
|
|
105
|
-
return createArrayNode(value, key);
|
|
106
|
-
}
|
|
107
|
-
else if ((0, index_1.isString)(value)) {
|
|
108
|
-
return createStringNode(value, key);
|
|
109
|
-
}
|
|
110
|
-
else if ((0, index_1.isNumber)(value)) {
|
|
111
|
-
return createNumberNode(value, key);
|
|
112
|
-
}
|
|
113
|
-
else if ((0, index_1.isBoolean)(value)) {
|
|
114
|
-
return createBooleanNode(value, key);
|
|
115
|
-
}
|
|
116
|
-
else if ((0, index_1.isNull)(value)) {
|
|
117
|
-
return createNullNode(key);
|
|
118
|
-
}
|
|
119
|
-
throw new Error(`Unsupported value: ${JSON.stringify(value)}`);
|
|
120
|
-
};
|
|
121
|
-
const createArrayNode = (value, key = undefined) => {
|
|
122
|
-
const elements = value.map((subValue) => createNode(subValue));
|
|
123
|
-
const node = {
|
|
124
|
-
[jsonx_datatypes_1.DATATYPE_ARRAY]: elements,
|
|
125
|
-
};
|
|
126
|
-
if (key === undefined) {
|
|
127
|
-
return node;
|
|
128
|
-
}
|
|
129
|
-
return {
|
|
130
|
-
...node,
|
|
131
|
-
':@': {
|
|
132
|
-
'@_name': key,
|
|
133
|
-
},
|
|
134
|
-
};
|
|
135
|
-
};
|
|
136
|
-
const createObjectNode = (value, key = undefined) => {
|
|
137
|
-
const elements = Object.entries(value).map(([subKey, subValue]) => createNode(subValue, subKey));
|
|
138
|
-
const node = {
|
|
139
|
-
[jsonx_datatypes_1.DATATYPE_OBJECT]: elements,
|
|
140
|
-
};
|
|
141
|
-
if (key === undefined) {
|
|
142
|
-
return node;
|
|
143
|
-
}
|
|
144
|
-
return {
|
|
145
|
-
...node,
|
|
146
|
-
':@': {
|
|
147
|
-
'@_name': key,
|
|
148
|
-
},
|
|
149
|
-
};
|
|
150
|
-
};
|
|
151
|
-
const createJsonxTypeEncoder = (prettyPrint = false) => {
|
|
152
|
-
const builder = new fast_xml_parser_1.XMLBuilder({
|
|
153
|
-
preserveOrder: true,
|
|
154
|
-
ignoreAttributes: false,
|
|
155
|
-
processEntities: false,
|
|
156
|
-
format: prettyPrint,
|
|
157
|
-
});
|
|
158
|
-
return {
|
|
159
|
-
encode: (data) => {
|
|
160
|
-
try {
|
|
161
|
-
return builder.build([
|
|
162
|
-
createXmlNode(),
|
|
163
|
-
{
|
|
164
|
-
...createNode(data),
|
|
165
|
-
...createJsonxAttributes(),
|
|
166
|
-
},
|
|
167
|
-
]);
|
|
168
|
-
}
|
|
169
|
-
catch (e) {
|
|
170
|
-
const error = (0, throwable_to_error_1.throwableToError)(e);
|
|
171
|
-
throw new index_2.EncodeError(error.message, error.stack);
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
contentType: 'application/jsonx+xml',
|
|
175
|
-
};
|
|
176
|
-
};
|
|
177
|
-
exports.createJsonxTypeEncoder = createJsonxTypeEncoder;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createUrlEncodedTypeEncoder = void 0;
|
|
4
|
-
const qs_1 = require("qs");
|
|
5
|
-
const index_1 = require("../index.cjs");
|
|
6
|
-
const encodeValue = (value) => {
|
|
7
|
-
if ((0, index_1.isObject)(value)) {
|
|
8
|
-
return Object.fromEntries(Object.entries(value).map(([subKey, subValue]) => [subKey, encodeValue(subValue)]));
|
|
9
|
-
}
|
|
10
|
-
if ((0, index_1.isArray)(value)) {
|
|
11
|
-
return value.map(encodeValue);
|
|
12
|
-
}
|
|
13
|
-
if ((0, index_1.isNumber)(value)) {
|
|
14
|
-
return value.toString();
|
|
15
|
-
}
|
|
16
|
-
if ((0, index_1.isBoolean)(value)) {
|
|
17
|
-
return value ? 'true' : 'false';
|
|
18
|
-
}
|
|
19
|
-
if ((0, index_1.isNull)(value)) {
|
|
20
|
-
return 'null';
|
|
21
|
-
}
|
|
22
|
-
return value;
|
|
23
|
-
};
|
|
24
|
-
const createUrlEncodedTypeEncoder = () => {
|
|
25
|
-
return {
|
|
26
|
-
encode: (data) => (0, qs_1.stringify)(encodeValue(data), { encodeValuesOnly: true }),
|
|
27
|
-
contentType: 'application/x-www-form-urlencoded',
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
exports.createUrlEncodedTypeEncoder = createUrlEncodedTypeEncoder;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createYamlTypeEncoder = void 0;
|
|
4
|
-
const yaml_1 = require("yaml");
|
|
5
|
-
const createYamlTypeEncoder = () => {
|
|
6
|
-
return {
|
|
7
|
-
encode: (data) => (0, yaml_1.stringify)(data, { indent: 4 }),
|
|
8
|
-
contentType: 'application/x-yaml',
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
exports.createYamlTypeEncoder = createYamlTypeEncoder;
|
package/dist/index.cjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isObject = exports.isArray = exports.isString = exports.isNumber = exports.isBoolean = exports.isNull = void 0;
|
|
4
|
-
const isNull = (value) => value === null;
|
|
5
|
-
exports.isNull = isNull;
|
|
6
|
-
const isBoolean = (value) => typeof value === 'boolean';
|
|
7
|
-
exports.isBoolean = isBoolean;
|
|
8
|
-
const isNumber = (value) => typeof value === 'number';
|
|
9
|
-
exports.isNumber = isNumber;
|
|
10
|
-
const isString = (value) => typeof value === 'string';
|
|
11
|
-
exports.isString = isString;
|
|
12
|
-
const isArray = (value) => Array.isArray(value);
|
|
13
|
-
exports.isArray = isArray;
|
|
14
|
-
const isObject = (value) => value !== null && typeof value === 'object' && value.constructor.name == 'Object';
|
|
15
|
-
exports.isObject = isObject;
|
package/dist/jsonx-datatypes.cjs
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DATATYPE_NULL = exports.DATATYPE_NUMBER = exports.DATATYPE_STRING = exports.DATATYPE_BOOLEAN = exports.DATATYPE_ARRAY = exports.DATATYPE_OBJECT = void 0;
|
|
4
|
-
exports.DATATYPE_OBJECT = 'json:object';
|
|
5
|
-
exports.DATATYPE_ARRAY = 'json:array';
|
|
6
|
-
exports.DATATYPE_BOOLEAN = 'json:boolean';
|
|
7
|
-
exports.DATATYPE_STRING = 'json:string';
|
|
8
|
-
exports.DATATYPE_NUMBER = 'json:number';
|
|
9
|
-
exports.DATATYPE_NULL = 'json:null';
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|