@chubbyts/chubbyts-decode-encode 1.4.1 → 2.0.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.
Files changed (36) hide show
  1. package/README.md +5 -5
  2. package/dist/decoder/index.d.ts +1 -1
  3. package/dist/decoder/json-type-decoder.d.ts +1 -1
  4. package/dist/decoder/{json-type-decoder.mjs → json-type-decoder.js} +1 -1
  5. package/dist/decoder/jsonx-type-decoder.d.ts +1 -1
  6. package/dist/decoder/{jsonx-type-decoder.mjs → jsonx-type-decoder.js} +2 -2
  7. package/dist/decoder/url-encoded-type-decoder.d.ts +1 -1
  8. package/dist/decoder/{url-encoded-type-decoder.mjs → url-encoded-type-decoder.js} +1 -1
  9. package/dist/decoder/yaml-type-decoder.d.ts +1 -1
  10. package/dist/decoder/{yaml-type-decoder.mjs → yaml-type-decoder.js} +1 -1
  11. package/dist/encoder/index.d.ts +1 -1
  12. package/dist/encoder/json-type-encoder.d.ts +1 -1
  13. package/dist/encoder/jsonx-type-encoder.d.ts +1 -1
  14. package/dist/encoder/{jsonx-type-encoder.mjs → jsonx-type-encoder.js} +3 -3
  15. package/dist/encoder/url-encoded-type-encoder.d.ts +1 -1
  16. package/dist/encoder/{url-encoded-type-encoder.mjs → url-encoded-type-encoder.js} +1 -1
  17. package/dist/encoder/yaml-type-encoder.d.ts +1 -1
  18. package/package.json +25 -30
  19. package/dist/decoder/index.cjs +0 -24
  20. package/dist/decoder/json-type-decoder.cjs +0 -20
  21. package/dist/decoder/jsonx-type-decoder.cjs +0 -95
  22. package/dist/decoder/url-encoded-type-decoder.cjs +0 -38
  23. package/dist/decoder/yaml-type-decoder.cjs +0 -21
  24. package/dist/encoder/index.cjs +0 -24
  25. package/dist/encoder/json-type-encoder.cjs +0 -10
  26. package/dist/encoder/jsonx-type-encoder.cjs +0 -177
  27. package/dist/encoder/url-encoded-type-encoder.cjs +0 -30
  28. package/dist/encoder/yaml-type-encoder.cjs +0 -11
  29. package/dist/index.cjs +0 -15
  30. package/dist/jsonx-datatypes.cjs +0 -9
  31. /package/dist/decoder/{index.mjs → index.js} +0 -0
  32. /package/dist/encoder/{index.mjs → index.js} +0 -0
  33. /package/dist/encoder/{json-type-encoder.mjs → json-type-encoder.js} +0 -0
  34. /package/dist/encoder/{yaml-type-encoder.mjs → yaml-type-encoder.js} +0 -0
  35. /package/dist/{index.mjs → index.js} +0 -0
  36. /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]: ^1.3.2
28
- * [fast-xml-parser][3]: ^4.5.1
29
- * [qs][4]: ^6.13.1
30
- * [yaml][5]: ^2.7.0
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@^1.4.1
37
+ npm i @chubbyts/chubbyts-decode-encode@^2.0.1
38
38
  ```
39
39
 
40
40
  ## Usage
@@ -1,4 +1,4 @@
1
- import type { Data } from '../index';
1
+ import type { Data } from '../index.js';
2
2
  export declare class DecodeError extends Error {
3
3
  constructor(message: string, stack?: string);
4
4
  }
@@ -1,2 +1,2 @@
1
- import type { TypeDecoder } from './index';
1
+ import type { TypeDecoder } from './index.js';
2
2
  export declare const createJsonTypeDecoder: () => TypeDecoder;
@@ -1,5 +1,5 @@
1
1
  import { throwableToError } from '@chubbyts/chubbyts-throwable-to-error/dist/throwable-to-error';
2
- import { DecodeError } from './index.mjs';
2
+ import { DecodeError } from './index.js';
3
3
  export const createJsonTypeDecoder = () => {
4
4
  return {
5
5
  decode: (encodedData) => {
@@ -1,2 +1,2 @@
1
- import type { TypeDecoder } from './index';
1
+ import type { TypeDecoder } from './index.js';
2
2
  export declare const createJsonxTypeDecoder: () => TypeDecoder;
@@ -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.mjs';
4
- import { DecodeError } from './index.mjs';
3
+ import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes.js';
4
+ import { DecodeError } from './index.js';
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,2 +1,2 @@
1
- import type { TypeDecoder } from './index';
1
+ import type { TypeDecoder } from './index.js';
2
2
  export declare const createUrlEncodedTypeDecoder: () => TypeDecoder;
@@ -1,5 +1,5 @@
1
1
  import { parse } from 'qs';
2
- import { isArray, isObject } from '../index.mjs';
2
+ import { isArray, isObject } from '../index.js';
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,2 +1,2 @@
1
- import type { TypeDecoder } from './index';
1
+ import type { TypeDecoder } from './index.js';
2
2
  export declare const createYamlTypeDecoder: () => TypeDecoder;
@@ -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.mjs';
3
+ import { DecodeError } from './index.js';
4
4
  export const createYamlTypeDecoder = () => {
5
5
  return {
6
6
  decode: (encodedData) => {
@@ -1,4 +1,4 @@
1
- import type { Data } from '../index';
1
+ import type { Data } from '../index.js';
2
2
  export declare class EncodeError extends Error {
3
3
  constructor(message: string, stack?: string);
4
4
  }
@@ -1,2 +1,2 @@
1
- import type { TypeEncoder } from './index';
1
+ import type { TypeEncoder } from './index.js';
2
2
  export declare const createJsonTypeEncoder: (prettyPrint?: boolean) => TypeEncoder;
@@ -1,2 +1,2 @@
1
- import type { TypeEncoder } from './index';
1
+ import type { TypeEncoder } from './index.js';
2
2
  export declare const createJsonxTypeEncoder: (prettyPrint?: boolean) => TypeEncoder;
@@ -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.mjs';
4
- import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes.mjs';
5
- import { EncodeError } from './index.mjs';
3
+ import { isArray, isBoolean, isNumber, isObject, isString, isNull } from '../index.js';
4
+ import { DATATYPE_ARRAY, DATATYPE_BOOLEAN, DATATYPE_NULL, DATATYPE_NUMBER, DATATYPE_OBJECT, DATATYPE_STRING, } from '../jsonx-datatypes.js';
5
+ import { EncodeError } from './index.js';
6
6
  const encodeHtmlEntities = (string) => string.replace(/[\u00A0-\u9999<>&]/g, (i) => '&#' + i.charCodeAt(0) + ';');
7
7
  const createXmlNode = () => {
8
8
  return {
@@ -1,2 +1,2 @@
1
- import type { TypeEncoder } from './index';
1
+ import type { TypeEncoder } from './index.js';
2
2
  export declare const createUrlEncodedTypeEncoder: () => TypeEncoder;
@@ -1,5 +1,5 @@
1
1
  import { stringify } from 'qs';
2
- import { isArray, isBoolean, isNull, isNumber, isObject } from '../index.mjs';
2
+ import { isArray, isBoolean, isNull, isNumber, isObject } from '../index.js';
3
3
  const encodeValue = (value) => {
4
4
  if (isObject(value)) {
5
5
  return Object.fromEntries(Object.entries(value).map(([subKey, subValue]) => [subKey, encodeValue(subValue)]));
@@ -1,2 +1,2 @@
1
- import type { TypeEncoder } from './index';
1
+ import type { TypeEncoder } from './index.js';
2
2
  export declare const createYamlTypeEncoder: () => TypeEncoder;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chubbyts/chubbyts-decode-encode",
3
3
  "type": "module",
4
- "version": "1.4.1",
4
+ "version": "2.0.1",
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": "node ./build.mjs",
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.mjs vitest.config.ts --fix",
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
- "require": "./dist/index.cjs",
42
- "import": "./dist/index.mjs",
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
- "require": "./dist/decoder/index.cjs",
48
- "import": "./dist/decoder/index.mjs",
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
- "require": "./dist/encoder/index.cjs",
54
- "import": "./dist/encoder/index.mjs",
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
- "require": "./*.cjs",
60
- "import": "./*.mjs",
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": "^1.3.2",
69
- "fast-xml-parser": "^4.5.1",
70
- "qs": "^6.13.1",
71
- "yaml": "^2.7.0"
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": "^3.0.3",
75
- "@chubbyts/chubbyts-function-mock": "^1.5.2",
76
- "@chubbyts/chubbyts-packaging": "^3.0.2",
77
- "@stryker-mutator/core": "^8.7.1",
78
- "@stryker-mutator/vitest-runner": "^8.7.1",
79
- "@types/node": "^22.10.5",
80
- "@types/qs": "^6.9.17",
81
- "@vitest/coverage-v8": "^2.1.8",
82
- "prettier": "^3.4.2",
83
- "typescript": "^5.7.2",
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"
@@ -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;
@@ -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;
@@ -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