@pubtech-ai/core 2.6.0 → 2.7.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.
- package/lib/cjs/TCString.js +1 -1
- package/lib/mjs/TCString.js +6 -0
- package/package.json +2 -2
package/lib/cjs/TCString.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TCString=void 0;var index_js_1=require("./encoder/index.js"),index_js_2=require("./model/index.js"),IntEncoder_js_1=require("./encoder/field/IntEncoder.js"),TCModel_js_1=require("./TCModel.js"),TCString=function(){function e(){}return e.encode=function(e,n){var r
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TCString=void 0;var index_js_1=require("./encoder/index.js"),index_js_2=require("./model/index.js"),IntEncoder_js_1=require("./encoder/field/IntEncoder.js"),TCModel_js_1=require("./TCModel.js"),decodeCachedResults={},TCString=function(){function e(){}return e.encode=function(e,n){var d,r="";return e=index_js_1.SemanticPreEncoder.process(e,n),(d=Array.isArray(null==n?void 0:n.segments)?n.segments:new index_js_1.SegmentSequence(e,n)[""+e.version]).forEach((function(n,s){var t="";s<d.length-1&&(t="."),r+=index_js_1.SegmentEncoder.encode(e,n)+t})),r},e.decode=function(e,n){if(decodeCachedResults[e])return decodeCachedResults[e];decodeCachedResults={};var d=e.split("."),r=d.length;n||(n=new TCModel_js_1.TCModel);for(var s=0;s<r;s++){var t=d[s],o=index_js_1.Base64Url.decode(t.charAt(0)).substr(0,index_js_1.BitLength.segmentType),i=index_js_2.SegmentIDs.ID_TO_KEY[IntEncoder_js_1.IntEncoder.decode(o,index_js_1.BitLength.segmentType).toString()];index_js_1.SegmentEncoder.decode(t,n,i)}return decodeCachedResults[e]=n,n},e}();exports.TCString=TCString;
|
package/lib/mjs/TCString.js
CHANGED
|
@@ -2,6 +2,7 @@ import { Base64Url, BitLength, SegmentEncoder, SegmentSequence, SemanticPreEncod
|
|
|
2
2
|
import { SegmentIDs } from './model/index.js';
|
|
3
3
|
import { IntEncoder } from './encoder/field/IntEncoder.js';
|
|
4
4
|
import { TCModel } from './TCModel.js';
|
|
5
|
+
let decodeCachedResults = {};
|
|
5
6
|
/**
|
|
6
7
|
* Main class for encoding and decoding a
|
|
7
8
|
* TCF Transparency and Consent String
|
|
@@ -47,6 +48,10 @@ export class TCString {
|
|
|
47
48
|
* @return {TCModel} - Returns populated TCModel
|
|
48
49
|
*/
|
|
49
50
|
static decode(encodedTCString, tcModel) {
|
|
51
|
+
if (decodeCachedResults[encodedTCString]) {
|
|
52
|
+
return decodeCachedResults[encodedTCString];
|
|
53
|
+
}
|
|
54
|
+
decodeCachedResults = {};
|
|
50
55
|
const segments = encodedTCString.split('.');
|
|
51
56
|
const len = segments.length;
|
|
52
57
|
if (!tcModel) {
|
|
@@ -66,6 +71,7 @@ export class TCString {
|
|
|
66
71
|
const segment = SegmentIDs.ID_TO_KEY[IntEncoder.decode(segTypeBits, BitLength.segmentType).toString()];
|
|
67
72
|
SegmentEncoder.decode(segString, tcModel, segment);
|
|
68
73
|
}
|
|
74
|
+
decodeCachedResults[encodedTCString] = tcModel;
|
|
69
75
|
return tcModel;
|
|
70
76
|
}
|
|
71
77
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pubtech-ai/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.1",
|
|
4
4
|
"description": "Ensures consistent encoding and decoding of TC Signals for the iab. Transparency and Consent Framework (TCF).",
|
|
5
5
|
"author": "Mayank Mishra <mayank@iabtechlab.com>",
|
|
6
6
|
"homepage": "https://iabtcf.com/",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"test-cov": "rm -rf coverage; nyc --reporter=html mocha"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@pubtech-ai/testing": "2.
|
|
31
|
+
"@pubtech-ai/testing": "2.7.1",
|
|
32
32
|
"@istanbuljs/nyc-config-typescript": "^0.1.3",
|
|
33
33
|
"@types/sinon": "^10.0.11",
|
|
34
34
|
"@types/sinon-chai": "3.2.8",
|