cdktn 0.23.1 → 0.23.2

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 (125) hide show
  1. package/.jsii +1560 -1559
  2. package/.spec.swcrc +22 -0
  3. package/jest.config.js +18 -15
  4. package/lib/_tokens.js +1 -1
  5. package/lib/annotations.js +2 -2
  6. package/lib/app.js +2 -2
  7. package/lib/aspect.js +2 -2
  8. package/lib/backends/azurerm-backend.js +3 -3
  9. package/lib/backends/cloud-backend.js +5 -5
  10. package/lib/backends/consul-backend.js +3 -3
  11. package/lib/backends/cos-backend.js +3 -3
  12. package/lib/backends/gcs-backend.js +3 -3
  13. package/lib/backends/http-backend.js +3 -3
  14. package/lib/backends/index.js +1 -1
  15. package/lib/backends/local-backend.js +3 -3
  16. package/lib/backends/oss-backend.js +3 -3
  17. package/lib/backends/pg-backend.js +3 -3
  18. package/lib/backends/remote-backend.js +5 -5
  19. package/lib/backends/s3-backend.js +3 -3
  20. package/lib/backends/swift-backend.js +3 -3
  21. package/lib/complex-computed-list.js +24 -24
  22. package/lib/errors.js +1 -1
  23. package/lib/features.js +1 -1
  24. package/lib/functions/helpers.js +1 -1
  25. package/lib/functions/terraform-functions.generated.js +2 -2
  26. package/lib/hcl/render.js +1 -1
  27. package/lib/importable-resource.js +2 -2
  28. package/lib/index.js +1 -1
  29. package/lib/manifest.js +2 -2
  30. package/lib/private/fs.d.ts +20 -5
  31. package/lib/private/fs.js +43 -69
  32. package/lib/private/unique.js +1 -1
  33. package/lib/resource.js +2 -2
  34. package/lib/runtime.js +1 -1
  35. package/lib/synthesize/index.js +1 -1
  36. package/lib/synthesize/synthesizer.js +1 -1
  37. package/lib/synthesize/types.js +1 -1
  38. package/lib/terraform-addressable.js +1 -1
  39. package/lib/terraform-asset.js +2 -2
  40. package/lib/terraform-backend.js +2 -2
  41. package/lib/terraform-conditions.js +1 -1
  42. package/lib/terraform-count.js +2 -2
  43. package/lib/terraform-data-resource.js +2 -2
  44. package/lib/terraform-data-source.js +2 -2
  45. package/lib/terraform-dependable.js +1 -1
  46. package/lib/terraform-dynamic-block.js +1 -1
  47. package/lib/terraform-dynamic-expression.js +1 -1
  48. package/lib/terraform-element.js +2 -2
  49. package/lib/terraform-functions.js +2 -2
  50. package/lib/terraform-hcl-module.js +2 -2
  51. package/lib/terraform-iterator.js +6 -6
  52. package/lib/terraform-local.js +2 -2
  53. package/lib/terraform-module-asset.js +1 -1
  54. package/lib/terraform-module.js +2 -2
  55. package/lib/terraform-operators.js +2 -2
  56. package/lib/terraform-output.js +2 -2
  57. package/lib/terraform-provider.js +2 -2
  58. package/lib/terraform-provisioner.js +2 -2
  59. package/lib/terraform-remote-state.js +2 -2
  60. package/lib/terraform-resource-targets.js +2 -2
  61. package/lib/terraform-resource.js +2 -2
  62. package/lib/terraform-stack.js +2 -2
  63. package/lib/terraform-variable.js +3 -3
  64. package/lib/testing/adapters/jest.js +1 -1
  65. package/lib/testing/index.js +2 -2
  66. package/lib/testing/matchers.js +2 -2
  67. package/lib/tfExpression.js +1 -1
  68. package/lib/tokens/index.js +1 -1
  69. package/lib/tokens/lazy.js +3 -3
  70. package/lib/tokens/private/dependency.js +1 -1
  71. package/lib/tokens/private/encoding.js +1 -1
  72. package/lib/tokens/private/intrinsic.js +1 -1
  73. package/lib/tokens/private/resolve.js +1 -1
  74. package/lib/tokens/private/stack-trace.js +1 -1
  75. package/lib/tokens/private/token-map.js +1 -1
  76. package/lib/tokens/private/uniqueid.js +1 -1
  77. package/lib/tokens/resolvable.js +3 -3
  78. package/lib/tokens/string-fragments.js +2 -2
  79. package/lib/tokens/token.js +3 -3
  80. package/lib/tsconfig.tsbuildinfo +1 -0
  81. package/lib/upgrade-id-aspect.js +2 -2
  82. package/lib/util.js +1 -1
  83. package/lib/validateEnvironment.js +1 -1
  84. package/lib/validations/index.js +1 -1
  85. package/lib/validations/validate-binary-version.js +1 -1
  86. package/lib/validations/validate-provider-presence.js +1 -1
  87. package/lib/validations/validate-terraform-version.js +1 -1
  88. package/node_modules/fflate/CHANGELOG.md +115 -0
  89. package/node_modules/{yazl → fflate}/LICENSE +3 -3
  90. package/node_modules/fflate/README.md +558 -0
  91. package/node_modules/fflate/esm/browser.d.ts +1501 -0
  92. package/node_modules/fflate/esm/browser.js +2665 -0
  93. package/node_modules/fflate/esm/index.d.mts +1501 -0
  94. package/node_modules/fflate/esm/index.mjs +2679 -0
  95. package/node_modules/fflate/lib/browser.cjs +2688 -0
  96. package/node_modules/fflate/lib/browser.d.cts +1501 -0
  97. package/node_modules/fflate/lib/index.cjs +2668 -0
  98. package/node_modules/fflate/lib/index.d.ts +1501 -0
  99. package/node_modules/fflate/lib/node-worker.cjs +32 -0
  100. package/node_modules/fflate/lib/node.cjs +2700 -0
  101. package/node_modules/fflate/lib/node.d.cts +1501 -0
  102. package/node_modules/fflate/lib/worker.cjs +20 -0
  103. package/node_modules/fflate/package.json +127 -0
  104. package/node_modules/fflate/umd/index.js +1 -0
  105. package/package.json +17 -10
  106. package/tsconfig.json +6 -3
  107. package/tsconfig.test.json +12 -0
  108. package/lib/testing/__tests__/matchers.test.d.ts +0 -1
  109. package/lib/testing/__tests__/matchers.test.js +0 -205
  110. package/lib/testing/adapters/__tests__/index.test.d.ts +0 -1
  111. package/lib/testing/adapters/__tests__/index.test.js +0 -67
  112. package/lib/testing/adapters/__tests__/jest.test.d.ts +0 -1
  113. package/lib/testing/adapters/__tests__/jest.test.js +0 -41
  114. package/node_modules/buffer-crc32/LICENSE +0 -19
  115. package/node_modules/buffer-crc32/README.md +0 -55
  116. package/node_modules/buffer-crc32/dist/index.cjs +0 -306
  117. package/node_modules/buffer-crc32/dist/index.d.cts +0 -35
  118. package/node_modules/buffer-crc32/dist/index.d.mts +0 -35
  119. package/node_modules/buffer-crc32/dist/index.mjs +0 -304
  120. package/node_modules/buffer-crc32/index.d.ts +0 -35
  121. package/node_modules/buffer-crc32/package.json +0 -54
  122. package/node_modules/yazl/README.md +0 -457
  123. package/node_modules/yazl/index.js +0 -826
  124. package/node_modules/yazl/package.json +0 -34
  125. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var ch2 = {};
3
+ exports.default = (function (c, id, msg, transfer, cb) {
4
+ var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([
5
+ c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'
6
+ ], { type: 'text/javascript' }))));
7
+ w.onmessage = function (e) {
8
+ var d = e.data, ed = d.$e$;
9
+ if (ed) {
10
+ var err = new Error(ed[0]);
11
+ err['code'] = ed[1];
12
+ err.stack = ed[2];
13
+ cb(err, null);
14
+ }
15
+ else
16
+ cb(null, d);
17
+ };
18
+ w.postMessage(msg, transfer);
19
+ return w;
20
+ });
@@ -0,0 +1,127 @@
1
+ {
2
+ "name": "fflate",
3
+ "version": "0.8.2",
4
+ "description": "High performance (de)compression in an 8kB package",
5
+ "main": "./lib/index.cjs",
6
+ "module": "./esm/browser.js",
7
+ "types": "./lib/index.d.ts",
8
+ "unpkg": "./umd/index.js",
9
+ "jsdelivr": "./umd/index.js",
10
+ "browser": {
11
+ "./lib/node-worker.cjs": "./lib/worker.cjs"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "node": {
16
+ "import": {
17
+ "types": "./esm/index.d.mts",
18
+ "default": "./esm/index.mjs"
19
+ },
20
+ "require": {
21
+ "types": "./lib/node.d.cts",
22
+ "default": "./lib/node.cjs"
23
+ }
24
+ },
25
+ "import": {
26
+ "types": "./esm/browser.d.ts",
27
+ "default": "./esm/browser.js"
28
+ },
29
+ "require": {
30
+ "types": "./lib/browser.d.cts",
31
+ "default": "./lib/browser.cjs"
32
+ }
33
+ },
34
+ "./node": {
35
+ "import": {
36
+ "types": "./esm/index.d.mts",
37
+ "default": "./esm/index.mjs"
38
+ },
39
+ "require": {
40
+ "types": "./lib/node.d.cts",
41
+ "default": "./lib/node.cjs"
42
+ }
43
+ },
44
+ "./browser": {
45
+ "import": {
46
+ "types": "./esm/browser.d.ts",
47
+ "default": "./esm/browser.js"
48
+ },
49
+ "require": {
50
+ "types": "./lib/browser.d.cts",
51
+ "default": "./lib/browser.cjs"
52
+ }
53
+ }
54
+ },
55
+ "targets": {
56
+ "main": false,
57
+ "module": false,
58
+ "browser": false,
59
+ "types": false
60
+ },
61
+ "sideEffects": false,
62
+ "homepage": "https://101arrowz.github.io/fflate",
63
+ "repository": "https://github.com/101arrowz/fflate",
64
+ "bugs": {
65
+ "email": "arjunbarrett@gmail.com",
66
+ "url": "https://github.com/101arrowz/fflate/issues"
67
+ },
68
+ "author": "Arjun Barrett <arjunbarrett@gmail.com>",
69
+ "license": "MIT",
70
+ "keywords": [
71
+ "gzip",
72
+ "gunzip",
73
+ "deflate",
74
+ "inflate",
75
+ "compression",
76
+ "decompression",
77
+ "zlib",
78
+ "pako",
79
+ "jszip",
80
+ "browser",
81
+ "node.js",
82
+ "tiny",
83
+ "fast",
84
+ "zip",
85
+ "unzip",
86
+ "non-blocking"
87
+ ],
88
+ "scripts": {
89
+ "build": "npm run build:lib && npm run build:docs && npm run build:demo",
90
+ "script": "node -r ts-node/register scripts/$SC.ts",
91
+ "build:lib": "tsc && tsc --project tsconfig.esm.json && npm run build:rewrite && npm run build:umd",
92
+ "build:umd": "SC=buildUMD npm run script",
93
+ "build:rewrite": "SC=rewriteBuilds npm run script",
94
+ "build:demo": "tsc --project tsconfig.demo.json && parcel build demo/index.html --no-cache --public-url \"./\" && SC=cpGHPages npm run script",
95
+ "build:docs": "typedoc --plugin typedoc-plugin-markdown --hideBreadcrumbs --readme none --disableSources --excludePrivate --excludeProtected --githubPages false --out docs/ src/index.ts",
96
+ "test": "TS_NODE_PROJECT=test/tsconfig.json uvu -b -r ts-node/register test",
97
+ "prepack": "npm run build && npm run test"
98
+ },
99
+ "devDependencies": {
100
+ "@parcel/service-worker": "^2.9.3",
101
+ "@types/node": "^14.11.2",
102
+ "@types/pako": "*",
103
+ "@types/react": "^18.2.21",
104
+ "@types/react-dom": "^18.2.7",
105
+ "jszip": "^3.5.0",
106
+ "pako": "*",
107
+ "parcel": "^2.9.3",
108
+ "preact": "^10.17.1",
109
+ "react": "^18.2.0",
110
+ "react-dom": "^18.2.0",
111
+ "simple-git": "^3.19.1",
112
+ "terser": "^5.3.8",
113
+ "tiny-inflate": "*",
114
+ "ts-node": "^10.9.1",
115
+ "typedoc": "^0.25.0",
116
+ "typedoc-plugin-markdown": "^3.16.0",
117
+ "typescript": "^5.2.2",
118
+ "uvu": "^0.3.3",
119
+ "uzip": "*"
120
+ },
121
+ "alias": {
122
+ "react": "preact/compat",
123
+ "react-dom": "preact/compat",
124
+ "buffer": false,
125
+ "process": false
126
+ }
127
+ }
@@ -0,0 +1 @@
1
+ !function(f){typeof module!='undefined'&&typeof exports=='object'?module.exports=f():typeof define!='undefined'&&define.amd?define(f):(typeof self!='undefined'?self:this).fflate=f()}(function(){var _e={};"use strict";var t=(typeof module!='undefined'&&typeof exports=='object'?function(_f){"use strict";var e,t=";var __w=require('worker_threads');__w.parentPort.on('message',function(m){onmessage({data:m})}),postMessage=function(m,t){__w.parentPort.postMessage(m,t)},close=process.exit;self=global";try{e=require("worker_threads").Worker}catch(e){}exports.default=e?function(r,n,o,a,s){var u=!1,i=new e(r+t,{eval:!0}).on("error",(function(e){return s(e,null)})).on("message",(function(e){return s(null,e)})).on("exit",(function(e){e&&!u&&s(Error("exited with code "+e),null)}));return i.postMessage(o,a),i.terminate=function(){return u=!0,e.prototype.terminate.call(i)},i}:function(e,t,r,n,o){setImmediate((function(){return o(Error("async operations unsupported - update to Node 12+ (or Node 10-11 with the --experimental-worker CLI flag)"),null)}));var a=function(){};return{terminate:a,postMessage:a}};return _f}:function(_f){"use strict";var e={};_f.default=function(r,t,s,a,n){var o=new Worker(e[t]||(e[t]=URL.createObjectURL(new Blob([r+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return o.onmessage=function(e){var r=e.data,t=r.$e$;if(t){var s=Error(t[0]);s.code=t[1],s.stack=t[2],n(s,null)}else n(null,r)},o.postMessage(s,a),o};return _f})({}),n=Uint8Array,r=Uint16Array,e=Int32Array,i=new n([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),o=new n([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),s=new n([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=function(t,n){for(var i=new r(31),o=0;o<31;++o)i[o]=n+=1<<t[o-1];var s=new e(i[30]);for(o=1;o<30;++o)for(var a=i[o];a<i[o+1];++a)s[a]=a-i[o]<<5|o;return{b:i,r:s}},u=a(i,2),h=u.b,f=u.r;h[28]=258,f[258]=28;for(var l=a(o,0),c=l.b,p=l.r,v=new r(32768),d=0;d<32768;++d){var g=(43690&d)>>1|(21845&d)<<1;v[d]=((65280&(g=(61680&(g=(52428&g)>>2|(13107&g)<<2))>>4|(3855&g)<<4))>>8|(255&g)<<8)>>1}var y=function(t,n,e){for(var i=t.length,o=0,s=new r(n);o<i;++o)t[o]&&++s[t[o]-1];var a,u=new r(n);for(o=1;o<n;++o)u[o]=u[o-1]+s[o-1]<<1;if(e){a=new r(1<<n);var h=15-n;for(o=0;o<i;++o)if(t[o])for(var f=o<<4|t[o],l=n-t[o],c=u[t[o]-1]++<<l,p=c|(1<<l)-1;c<=p;++c)a[v[c]>>h]=f}else for(a=new r(i),o=0;o<i;++o)t[o]&&(a[o]=v[u[t[o]-1]++]>>15-t[o]);return a},m=new n(288);for(d=0;d<144;++d)m[d]=8;for(d=144;d<256;++d)m[d]=9;for(d=256;d<280;++d)m[d]=7;for(d=280;d<288;++d)m[d]=8;var b=new n(32);for(d=0;d<32;++d)b[d]=5;var w=y(m,9,0),x=y(m,9,1),z=y(b,5,0),k=y(b,5,1),M=function(t){for(var n=t[0],r=1;r<t.length;++r)t[r]>n&&(n=t[r]);return n},S=function(t,n,r){var e=n/8|0;return(t[e]|t[e+1]<<8)>>(7&n)&r},A=function(t,n){var r=n/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(7&n)},T=function(t){return(t+7)/8|0},D=function(t,r,e){return(null==r||r<0)&&(r=0),(null==e||e>t.length)&&(e=t.length),new n(t.subarray(r,e))};_e.FlateErrorCode={UnexpectedEOF:0,InvalidBlockType:1,InvalidLengthLiteral:2,InvalidDistance:3,StreamFinished:4,NoStreamHandler:5,InvalidHeader:6,NoCallback:7,InvalidUTF8:8,ExtraFieldTooLong:9,InvalidDate:10,FilenameTooLong:11,StreamFinishing:12,InvalidZipData:13,UnknownCompressionMethod:14};var C=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],I=function(t,n,r){var e=Error(n||C[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,I),!r)throw e;return e},U=function(t,r,e,a){var u=t.length,f=a?a.length:0;if(!u||r.f&&!r.l)return e||new n(0);var l=!e,p=l||2!=r.i,v=r.i;l&&(e=new n(3*u));var d=function(t){var r=e.length;if(t>r){var i=new n(Math.max(2*r,t));i.set(e),e=i}},g=r.f||0,m=r.p||0,b=r.b||0,w=r.l,z=r.d,C=r.m,U=r.n,F=8*u;do{if(!w){g=S(t,m,1);var E=S(t,m+1,3);if(m+=3,!E){var Z=t[(J=T(m)+4)-4]|t[J-3]<<8,q=J+Z;if(q>u){v&&I(0);break}p&&d(b+Z),e.set(t.subarray(J,q),b),r.b=b+=Z,r.p=m=8*q,r.f=g;continue}if(1==E)w=x,z=k,C=9,U=5;else if(2==E){var O=S(t,m,31)+257,G=S(t,m+10,15)+4,L=O+S(t,m+5,31)+1;m+=14;for(var H=new n(L),j=new n(19),N=0;N<G;++N)j[s[N]]=S(t,m+3*N,7);m+=3*G;var P=M(j),B=(1<<P)-1,Y=y(j,P,1);for(N=0;N<L;){var J,K=Y[S(t,m,B)];if(m+=15&K,(J=K>>4)<16)H[N++]=J;else{var Q=0,R=0;for(16==J?(R=3+S(t,m,3),m+=2,Q=H[N-1]):17==J?(R=3+S(t,m,7),m+=3):18==J&&(R=11+S(t,m,127),m+=7);R--;)H[N++]=Q}}var V=H.subarray(0,O),W=H.subarray(O);C=M(V),U=M(W),w=y(V,C,1),z=y(W,U,1)}else I(1);if(m>F){v&&I(0);break}}p&&d(b+131072);for(var X=(1<<C)-1,$=(1<<U)-1,_=m;;_=m){var tt=(Q=w[A(t,m)&X])>>4;if((m+=15&Q)>F){v&&I(0);break}if(Q||I(2),tt<256)e[b++]=tt;else{if(256==tt){_=m,w=null;break}var nt=tt-254;tt>264&&(nt=S(t,m,(1<<(it=i[N=tt-257]))-1)+h[N],m+=it);var rt=z[A(t,m)&$],et=rt>>4;if(rt||I(3),m+=15&rt,W=c[et],et>3){var it=o[et];W+=A(t,m)&(1<<it)-1,m+=it}if(m>F){v&&I(0);break}p&&d(b+131072);var ot=b+nt;if(b<W){var st=f-W,at=Math.min(W,ot);for(st+b<0&&I(3);b<at;++b)e[b]=a[st+b]}for(;b<ot;++b)e[b]=e[b-W]}}r.l=w,r.p=_,r.b=b,r.f=g,w&&(g=1,r.m=C,r.d=z,r.n=U)}while(!g);return b!=e.length&&l?D(e,0,b):e.subarray(0,b)},F=function(t,n,r){var e=n/8|0;t[e]|=r<<=7&n,t[e+1]|=r>>8},E=function(t,n,r){var e=n/8|0;t[e]|=r<<=7&n,t[e+1]|=r>>8,t[e+2]|=r>>16},Z=function(t,e){for(var i=[],o=0;o<t.length;++o)t[o]&&i.push({s:o,f:t[o]});var s=i.length,a=i.slice();if(!s)return{t:N,l:0};if(1==s){var u=new n(i[0].s+1);return u[i[0].s]=1,{t:u,l:1}}i.sort((function(t,n){return t.f-n.f})),i.push({s:-1,f:25001});var h=i[0],f=i[1],l=0,c=1,p=2;for(i[0]={s:-1,f:h.f+f.f,l:h,r:f};c!=s-1;)h=i[i[l].f<i[p].f?l++:p++],f=i[l!=c&&i[l].f<i[p].f?l++:p++],i[c++]={s:-1,f:h.f+f.f,l:h,r:f};var v=a[0].s;for(o=1;o<s;++o)a[o].s>v&&(v=a[o].s);var d=new r(v+1),g=q(i[c-1],d,0);if(g>e){o=0;var y=0,m=g-e,b=1<<m;for(a.sort((function(t,n){return d[n.s]-d[t.s]||t.f-n.f}));o<s;++o){var w=a[o].s;if(!(d[w]>e))break;y+=b-(1<<g-d[w]),d[w]=e}for(y>>=m;y>0;){var x=a[o].s;d[x]<e?y-=1<<e-d[x]++-1:++o}for(;o>=0&&y;--o){var z=a[o].s;d[z]==e&&(--d[z],++y)}g=e}return{t:new n(d),l:g}},q=function(t,n,r){return-1==t.s?Math.max(q(t.l,n,r+1),q(t.r,n,r+1)):n[t.s]=r},O=function(t){for(var n=t.length;n&&!t[--n];);for(var e=new r(++n),i=0,o=t[0],s=1,a=function(t){e[i++]=t},u=1;u<=n;++u)if(t[u]==o&&u!=n)++s;else{if(!o&&s>2){for(;s>138;s-=138)a(32754);s>2&&(a(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(a(o),--s;s>6;s-=6)a(8304);s>2&&(a(s-3<<5|8208),s=0)}for(;s--;)a(o);s=1,o=t[u]}return{c:e.subarray(0,i),n:n}},G=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},L=function(t,n,r){var e=r.length,i=T(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var o=0;o<e;++o)t[i+o+4]=r[o];return 8*(i+4+e)},H=function(t,n,e,a,u,h,f,l,c,p,v){F(n,v++,e),++u[256];for(var d=Z(u,15),g=d.t,x=d.l,k=Z(h,15),M=k.t,S=k.l,A=O(g),T=A.c,D=A.n,C=O(M),I=C.c,U=C.n,q=new r(19),H=0;H<T.length;++H)++q[31&T[H]];for(H=0;H<I.length;++H)++q[31&I[H]];for(var j=Z(q,7),N=j.t,P=j.l,B=19;B>4&&!N[s[B-1]];--B);var Y,J,K,Q,R=p+5<<3,V=G(u,m)+G(h,b)+f,W=G(u,g)+G(h,M)+f+14+3*B+G(q,N)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&R<=V&&R<=W)return L(n,v,t.subarray(c,c+p));if(F(n,v,1+(W<V)),v+=2,W<V){Y=y(g,x,0),J=g,K=y(M,S,0),Q=M;var X=y(N,P,0);for(F(n,v,D-257),F(n,v+5,U-1),F(n,v+10,B-4),v+=14,H=0;H<B;++H)F(n,v+3*H,N[s[H]]);v+=3*B;for(var $=[T,I],_=0;_<2;++_){var tt=$[_];for(H=0;H<tt.length;++H)F(n,v,X[rt=31&tt[H]]),v+=N[rt],rt>15&&(F(n,v,tt[H]>>5&127),v+=tt[H]>>12)}}else Y=w,J=m,K=z,Q=b;for(H=0;H<l;++H){var nt=a[H];if(nt>255){var rt;E(n,v,Y[257+(rt=nt>>18&31)]),v+=J[rt+257],rt>7&&(F(n,v,nt>>23&31),v+=i[rt]);var et=31&nt;E(n,v,K[et]),v+=Q[et],et>3&&(E(n,v,nt>>5&8191),v+=o[et])}else E(n,v,Y[nt]),v+=J[nt]}return E(n,v,Y[256]),v+J[256]},j=new e([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),N=new n(0),P=function(t,s,a,u,h,l){var c=l.z||t.length,v=new n(u+c+5*(1+Math.ceil(c/7e3))+h),d=v.subarray(u,v.length-h),g=l.l,y=7&(l.r||0);if(s){y&&(d[0]=l.r>>3);for(var m=j[s-1],b=m>>13,w=8191&m,x=(1<<a)-1,z=l.p||new r(32768),k=l.h||new r(x+1),M=Math.ceil(a/3),S=2*M,A=function(n){return(t[n]^t[n+1]<<M^t[n+2]<<S)&x},C=new e(25e3),I=new r(288),U=new r(32),F=0,E=0,Z=l.i||0,q=0,O=l.w||0,G=0;Z+2<c;++Z){var N=A(Z),P=32767&Z,B=k[N];if(z[P]=B,k[N]=P,O<=Z){var Y=c-Z;if((F>7e3||q>24576)&&(Y>423||!g)){y=H(t,d,0,C,I,U,E,q,G,Z-G,y),q=F=E=0,G=Z;for(var J=0;J<286;++J)I[J]=0;for(J=0;J<30;++J)U[J]=0}var K=2,Q=0,R=w,V=P-B&32767;if(Y>2&&N==A(Z-V))for(var W=Math.min(b,Y)-1,X=Math.min(32767,Z),$=Math.min(258,Y);V<=X&&--R&&P!=B;){if(t[Z+K]==t[Z+K-V]){for(var _=0;_<$&&t[Z+_]==t[Z+_-V];++_);if(_>K){if(K=_,Q=V,_>W)break;var tt=Math.min(V,_-2),nt=0;for(J=0;J<tt;++J){var rt=Z-V+J&32767,et=rt-z[rt]&32767;et>nt&&(nt=et,B=rt)}}}V+=(P=B)-(B=z[P])&32767}if(Q){C[q++]=268435456|f[K]<<18|p[Q];var it=31&f[K],ot=31&p[Q];E+=i[it]+o[ot],++I[257+it],++U[ot],O=Z+K,++F}else C[q++]=t[Z],++I[t[Z]]}}for(Z=Math.max(Z,O);Z<c;++Z)C[q++]=t[Z],++I[t[Z]];y=H(t,d,g,C,I,U,E,q,G,Z-G,y),g||(l.r=7&y|d[y/8|0]<<3,y-=7,l.h=k,l.p=z,l.i=Z,l.w=O)}else{for(Z=l.w||0;Z<c+g;Z+=65535){var st=Z+65535;st>=c&&(d[y/8|0]=g,st=c),y=L(d,y+1,t.subarray(Z,st))}l.i=c}return D(v,0,u+T(y)+h)},B=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),Y=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=B[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}},J=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,o=0|r.length,s=0;s!=o;){for(var a=Math.min(s+2655,o);s<a;++s)i+=e+=r[s];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},K=function(t,r,e,i,o){if(!o&&(o={l:1},r.dictionary)){var s=r.dictionary.subarray(-32768),a=new n(s.length+t.length);a.set(s),a.set(t,s.length),t=a,o.w=s.length}return P(t,null==r.level?6:r.level,null==r.mem?o.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(t.length)))):20:12+r.mem,e,i,o)},Q=function(t,n){var r={};for(var e in t)r[e]=t[e];for(var e in n)r[e]=n[e];return r},R=function(t,n,r){for(var e=t(),i=""+t,o=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),s=0;s<e.length;++s){var a=e[s],u=o[s];if("function"==typeof a){n+=";"+u+"=";var h=""+a;if(a.prototype)if(-1!=h.indexOf("[native code]")){var f=h.indexOf(" ",8)+1;n+=h.slice(f,h.indexOf("(",f))}else for(var l in n+=h,a.prototype)n+=";"+u+".prototype."+l+"="+a.prototype[l];else n+=h}else r[u]=a}return n},V=[],W=function(t){var n=[];for(var r in t)t[r].buffer&&n.push((t[r]=new t[r].constructor(t[r])).buffer);return n},X=function(n,r,e,i){if(!V[e]){for(var o="",s={},a=n.length-1,u=0;u<a;++u)o=R(n[u],o,s);V[e]={c:R(n[a],o,s),e:s}}var h=Q({},V[e].e);return(0,t.default)(V[e].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+r+"}",e,h,W(h),i)},$=function(){return[n,r,e,i,o,s,h,c,x,k,v,C,y,M,S,A,T,D,I,U,Tt,it,ot]},_=function(){return[n,r,e,i,o,s,f,p,w,m,z,b,v,j,N,y,F,E,Z,q,O,G,L,H,T,D,P,K,kt,it]},tt=function(){return[pt,gt,ct,Y,B]},nt=function(){return[vt,dt]},rt=function(){return[yt,ct,J]},et=function(){return[mt]},it=function(t){return postMessage(t,[t.buffer])},ot=function(t){return t&&{out:t.size&&new n(t.size),dictionary:t.dictionary}},st=function(t,n,r,e,i,o){var s=X(r,e,i,(function(t,n){s.terminate(),o(t,n)}));return s.postMessage([t,n],n.consume?[t.buffer]:[]),function(){s.terminate()}},at=function(t){return t.ondata=function(t,n){return postMessage([t,n],[t.buffer])},function(n){n.data.length?(t.push(n.data[0],n.data[1]),postMessage([n.data[0].length])):t.flush()}},ut=function(t,n,r,e,i,o,s){var a,u=X(t,e,i,(function(t,r){t?(u.terminate(),n.ondata.call(n,t)):Array.isArray(r)?1==r.length?(n.queuedSize-=r[0],n.ondrain&&n.ondrain(r[0])):(r[1]&&u.terminate(),n.ondata.call(n,t,r[0],r[1])):s(r)}));u.postMessage(r),n.queuedSize=0,n.push=function(t,r){n.ondata||I(5),a&&n.ondata(I(4,0,1),null,!!r),n.queuedSize+=t.length,u.postMessage([t,a=r],[t.buffer])},n.terminate=function(){u.terminate()},o&&(n.flush=function(){u.postMessage([])})},ht=function(t,n){return t[n]|t[n+1]<<8},ft=function(t,n){return(t[n]|t[n+1]<<8|t[n+2]<<16|t[n+3]<<24)>>>0},lt=function(t,n){return ft(t,n)+4294967296*ft(t,n+4)},ct=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},pt=function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&ct(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}},vt=function(t){31==t[0]&&139==t[1]&&8==t[2]||I(6,"invalid gzip data");var n=t[3],r=10;4&n&&(r+=2+(t[10]|t[11]<<8));for(var e=(n>>3&1)+(n>>4&1);e>0;e-=!t[r++]);return r+(2&n)},dt=function(t){var n=t.length;return(t[n-4]|t[n-3]<<8|t[n-2]<<16|t[n-1]<<24)>>>0},gt=function(t){return 10+(t.filename?t.filename.length+1:0)},yt=function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=J();i.p(n.dictionary),ct(t,2,i.d())}},mt=function(t,n){return(8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31)&&I(6,"invalid zlib data"),(t[1]>>5&1)==+!n&&I(6,"invalid zlib data: "+(32&t[1]?"need":"unexpected")+" dictionary"),2+(t[1]>>3&4)};function bt(t,n){return"function"==typeof t&&(n=t,t={}),this.ondata=n,t}var wt=function(){function t(t,r){if("function"==typeof t&&(r=t,t={}),this.ondata=r,this.o=t||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new n(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return t.prototype.p=function(t,n){this.ondata(K(t,this.o,0,0,this.s),n)},t.prototype.push=function(t,r){this.ondata||I(5),this.s.l&&I(4);var e=t.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new n(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var o=this.b.length-this.s.z;this.b.set(t.subarray(0,o),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(t.subarray(o),32768),this.s.z=t.length-o+32768,this.s.i=32766,this.s.w=32768}else this.b.set(t,this.s.z),this.s.z+=t.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},t.prototype.flush=function(){this.ondata||I(5),this.s.l&&I(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},t}();_e.Deflate=wt;var xt=function(){return function(t,n){ut([_,function(){return[at,wt]}],this,bt.call(this,t,n),(function(t){var n=new wt(t.data);onmessage=at(n)}),6,1)}}();function zt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[_],(function(t){return it(kt(t.data[0],t.data[1]))}),0,r)}function kt(t,n){return K(t,n||{},0,0)}_e.AsyncDeflate=xt,_e.deflate=zt,_e.deflateSync=kt;var Mt=function(){function t(t,r){"function"==typeof t&&(r=t,t={}),this.ondata=r;var e=t&&t.dictionary&&t.dictionary.subarray(-32768);this.s={i:0,b:e?e.length:0},this.o=new n(32768),this.p=new n(0),e&&this.o.set(e)}return t.prototype.e=function(t){if(this.ondata||I(5),this.d&&I(4),this.p.length){if(t.length){var r=new n(this.p.length+t.length);r.set(this.p),r.set(t,this.p.length),this.p=r}}else this.p=t},t.prototype.c=function(t){this.s.i=+(this.d=t||!1);var n=this.s.b,r=U(this.p,this.s,this.o);this.ondata(D(r,n,this.s.b),this.d),this.o=D(r,this.s.b-32768),this.s.b=this.o.length,this.p=D(this.p,this.s.p/8|0),this.s.p&=7},t.prototype.push=function(t,n){this.e(t),this.c(n)},t}();_e.Inflate=Mt;var St=function(){return function(t,n){ut([$,function(){return[at,Mt]}],this,bt.call(this,t,n),(function(t){var n=new Mt(t.data);onmessage=at(n)}),7,0)}}();function At(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[$],(function(t){return it(Tt(t.data[0],ot(t.data[1])))}),1,r)}function Tt(t,n){return U(t,{i:2},n&&n.out,n&&n.dictionary)}_e.AsyncInflate=St,_e.inflate=At,_e.inflateSync=Tt;var Dt=function(){function t(t,n){this.c=Y(),this.l=0,this.v=1,wt.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),this.l+=t.length,wt.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=K(t,this.o,this.v&&gt(this.o),n&&8,this.s);this.v&&(pt(r,this.o),this.v=0),n&&(ct(r,r.length-8,this.c.d()),ct(r,r.length-4,this.l)),this.ondata(r,n)},t.prototype.flush=function(){wt.prototype.flush.call(this)},t}();_e.Gzip=Dt,_e.Compress=Dt;var Ct=function(){return function(t,n){ut([_,tt,function(){return[at,wt,Dt]}],this,bt.call(this,t,n),(function(t){var n=new Dt(t.data);onmessage=at(n)}),8,1)}}();function It(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[_,tt,function(){return[Ut]}],(function(t){return it(Ut(t.data[0],t.data[1]))}),2,r)}function Ut(t,n){n||(n={});var r=Y(),e=t.length;r.p(t);var i=K(t,n,gt(n),8),o=i.length;return pt(i,n),ct(i,o-8,r.d()),ct(i,o-4,e),i}_e.AsyncGzip=Ct,_e.AsyncCompress=Ct,_e.gzip=It,_e.compress=It,_e.gzipSync=Ut,_e.compressSync=Ut;var Ft=function(){function t(t,n){this.v=1,this.r=0,Mt.call(this,t,n)}return t.prototype.push=function(t,r){if(Mt.prototype.e.call(this,t),this.r+=t.length,this.v){var e=this.p.subarray(this.v-1),i=e.length>3?vt(e):4;if(i>e.length){if(!r)return}else this.v>1&&this.onmember&&this.onmember(this.r-e.length);this.p=e.subarray(i),this.v=0}Mt.prototype.c.call(this,r),!this.s.f||this.s.l||r||(this.v=T(this.s.p)+9,this.s={i:0},this.o=new n(0),this.push(new n(0),r))},t}();_e.Gunzip=Ft;var Et=function(){return function(t,n){var r=this;ut([$,nt,function(){return[at,Mt,Ft]}],this,bt.call(this,t,n),(function(t){var n=new Ft(t.data);n.onmember=function(t){return postMessage(t)},onmessage=at(n)}),9,0,(function(t){return r.onmember&&r.onmember(t)}))}}();function Zt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[$,nt,function(){return[qt]}],(function(t){return it(qt(t.data[0],t.data[1]))}),3,r)}function qt(t,r){var e=vt(t);return e+8>t.length&&I(6,"invalid gzip data"),U(t.subarray(e,-8),{i:2},r&&r.out||new n(dt(t)),r&&r.dictionary)}_e.AsyncGunzip=Et,_e.gunzip=Zt,_e.gunzipSync=qt;var Ot=function(){function t(t,n){this.c=J(),this.v=1,wt.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),wt.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=K(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(yt(r,this.o),this.v=0),n&&ct(r,r.length-4,this.c.d()),this.ondata(r,n)},t.prototype.flush=function(){wt.prototype.flush.call(this)},t}();_e.Zlib=Ot;var Gt=function(){return function(t,n){ut([_,rt,function(){return[at,wt,Ot]}],this,bt.call(this,t,n),(function(t){var n=new Ot(t.data);onmessage=at(n)}),10,1)}}();function Lt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[_,rt,function(){return[Ht]}],(function(t){return it(Ht(t.data[0],t.data[1]))}),4,r)}function Ht(t,n){n||(n={});var r=J();r.p(t);var e=K(t,n,n.dictionary?6:2,4);return yt(e,n),ct(e,e.length-4,r.d()),e}_e.AsyncZlib=Gt,_e.zlib=Lt,_e.zlibSync=Ht;var jt=function(){function t(t,n){Mt.call(this,t,n),this.v=t&&t.dictionary?2:1}return t.prototype.push=function(t,n){if(Mt.prototype.e.call(this,t),this.v){if(this.p.length<6&&!n)return;this.p=this.p.subarray(mt(this.p,this.v-1)),this.v=0}n&&(this.p.length<4&&I(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),Mt.prototype.c.call(this,n)},t}();_e.Unzlib=jt;var Nt=function(){return function(t,n){ut([$,et,function(){return[at,Mt,jt]}],this,bt.call(this,t,n),(function(t){var n=new jt(t.data);onmessage=at(n)}),11,0)}}();function Pt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),st(t,n,[$,et,function(){return[Bt]}],(function(t){return it(Bt(t.data[0],ot(t.data[1])))}),5,r)}function Bt(t,n){return U(t.subarray(mt(t,n&&n.dictionary),-4),{i:2},n&&n.out,n&&n.dictionary)}_e.AsyncUnzlib=Nt,_e.unzlib=Pt,_e.unzlibSync=Bt;var Yt=function(){function t(t,n){this.o=bt.call(this,t,n)||{},this.G=Ft,this.I=Mt,this.Z=jt}return t.prototype.i=function(){var t=this;this.s.ondata=function(n,r){t.ondata(n,r)}},t.prototype.push=function(t,r){if(this.ondata||I(5),this.s)this.s.push(t,r);else{if(this.p&&this.p.length){var e=new n(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length)}else this.p=t;this.p.length>2&&(this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(this.o):8!=(15&this.p[0])||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(this.o):new this.Z(this.o),this.i(),this.s.push(this.p,r),this.p=null)}},t}();_e.Decompress=Yt;var Jt=function(){function t(t,n){Yt.call(this,t,n),this.queuedSize=0,this.G=Et,this.I=St,this.Z=Nt}return t.prototype.i=function(){var t=this;this.s.ondata=function(n,r,e){t.ondata(n,r,e)},this.s.ondrain=function(n){t.queuedSize-=n,t.ondrain&&t.ondrain(n)}},t.prototype.push=function(t,n){this.queuedSize+=t.length,Yt.prototype.push.call(this,t,n)},t}();function Kt(t,n,r){return r||(r=n,n={}),"function"!=typeof r&&I(7),31==t[0]&&139==t[1]&&8==t[2]?Zt(t,n,r):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?At(t,n,r):Pt(t,n,r)}function Qt(t,n){return 31==t[0]&&139==t[1]&&8==t[2]?qt(t,n):8!=(15&t[0])||t[0]>>4>7||(t[0]<<8|t[1])%31?Tt(t,n):Bt(t,n)}_e.AsyncDecompress=Jt,_e.decompress=Kt,_e.decompressSync=Qt;var Rt=function(t,r,e,i){for(var o in t){var s=t[o],a=r+o,u=i;Array.isArray(s)&&(u=Q(i,s[1]),s=s[0]),s instanceof n?e[a]=[s,u]:(e[a+="/"]=[new n(0),u],Rt(s,a,e,i))}},Vt="undefined"!=typeof TextEncoder&&new TextEncoder,Wt="undefined"!=typeof TextDecoder&&new TextDecoder,Xt=0;try{Wt.decode(N,{stream:!0}),Xt=1}catch(t){}var $t=function(t){for(var n="",r=0;;){var e=t[r++],i=(e>127)+(e>223)+(e>239);if(r+i>t.length)return{s:n,r:D(t,r-1)};i?3==i?(e=((15&e)<<18|(63&t[r++])<<12|(63&t[r++])<<6|63&t[r++])-65536,n+=String.fromCharCode(55296|e>>10,56320|1023&e)):n+=String.fromCharCode(1&i?(31&e)<<6|63&t[r++]:(15&e)<<12|(63&t[r++])<<6|63&t[r++]):n+=String.fromCharCode(e)}},_t=function(){function t(t){this.ondata=t,Xt?this.t=new TextDecoder:this.p=N}return t.prototype.push=function(t,r){if(this.ondata||I(5),r=!!r,this.t)return this.ondata(this.t.decode(t,{stream:!0}),r),void(r&&(this.t.decode().length&&I(8),this.t=null));this.p||I(4);var e=new n(this.p.length+t.length);e.set(this.p),e.set(t,this.p.length);var i=$t(e),o=i.s,s=i.r;r?(s.length&&I(8),this.p=null):this.p=s,this.ondata(o,r)},t}();_e.DecodeUTF8=_t;var tn=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||I(5),this.d&&I(4),this.ondata(nn(t),this.d=n||!1)},t}();function nn(t,r){if(r){for(var e=new n(t.length),i=0;i<t.length;++i)e[i]=t.charCodeAt(i);return e}if(Vt)return Vt.encode(t);var o=t.length,s=new n(t.length+(t.length>>1)),a=0,u=function(t){s[a++]=t};for(i=0;i<o;++i){if(a+5>s.length){var h=new n(a+8+(o-i<<1));h.set(s),s=h}var f=t.charCodeAt(i);f<128||r?u(f):f<2048?(u(192|f>>6),u(128|63&f)):f>55295&&f<57344?(u(240|(f=65536+(1047552&f)|1023&t.charCodeAt(++i))>>18),u(128|f>>12&63),u(128|f>>6&63),u(128|63&f)):(u(224|f>>12),u(128|f>>6&63),u(128|63&f))}return D(s,0,a)}function rn(t,n){if(n){for(var r="",e=0;e<t.length;e+=16384)r+=String.fromCharCode.apply(null,t.subarray(e,e+16384));return r}if(Wt)return Wt.decode(t);var i=$t(t),o=i.s;return(r=i.r).length&&I(8),o}_e.EncodeUTF8=tn,_e.strToU8=nn,_e.strFromU8=rn;var en=function(t){return 1==t?3:t<6?2:9==t?1:0},on=function(t,n){return n+30+ht(t,n+26)+ht(t,n+28)},sn=function(t,n,r){var e=ht(t,n+28),i=rn(t.subarray(n+46,n+46+e),!(2048&ht(t,n+8))),o=n+46+e,s=ft(t,n+20),a=r&&4294967295==s?an(t,o):[s,ft(t,n+24),ft(t,n+42)],u=a[0],h=a[1],f=a[2];return[ht(t,n+10),u,h,i,o+ht(t,n+30)+ht(t,n+32),f]},an=function(t,n){for(;1!=ht(t,n);n+=4+ht(t,n+2));return[lt(t,n+12),lt(t,n+4),lt(t,n+20)]},un=function(t){var n=0;if(t)for(var r in t){var e=t[r].length;e>65535&&I(9),n+=e+4}return n},hn=function(t,n,r,e,i,o,s,a){var u=e.length,h=r.extra,f=a&&a.length,l=un(h);ct(t,n,null!=s?33639248:67324752),n+=4,null!=s&&(t[n++]=20,t[n++]=r.os),t[n]=20,n+=2,t[n++]=r.flag<<1|(o<0&&8),t[n++]=i&&8,t[n++]=255&r.compression,t[n++]=r.compression>>8;var c=new Date(null==r.mtime?Date.now():r.mtime),p=c.getFullYear()-1980;if((p<0||p>119)&&I(10),ct(t,n,p<<25|c.getMonth()+1<<21|c.getDate()<<16|c.getHours()<<11|c.getMinutes()<<5|c.getSeconds()>>1),n+=4,-1!=o&&(ct(t,n,r.crc),ct(t,n+4,o<0?-o-2:o),ct(t,n+8,r.size)),ct(t,n+12,u),ct(t,n+14,l),n+=16,null!=s&&(ct(t,n,f),ct(t,n+6,r.attrs),ct(t,n+10,s),n+=14),t.set(e,n),n+=u,l)for(var v in h){var d=h[v],g=d.length;ct(t,n,+v),ct(t,n+2,g),t.set(d,n+4),n+=4+g}return f&&(t.set(a,n),n+=f),n},fn=function(t,n,r,e,i){ct(t,n,101010256),ct(t,n+8,r),ct(t,n+10,r),ct(t,n+12,e),ct(t,n+16,i)},ln=function(){function t(t){this.filename=t,this.c=Y(),this.size=0,this.compression=0}return t.prototype.process=function(t,n){this.ondata(null,t,n)},t.prototype.push=function(t,n){this.ondata||I(5),this.c.p(t),this.size+=t.length,n&&(this.crc=this.c.d()),this.process(t,n||!1)},t}();_e.ZipPassThrough=ln;var cn=function(){function t(t,n){var r=this;n||(n={}),ln.call(this,t),this.d=new wt(n,(function(t,n){r.ondata(null,t,n)})),this.compression=8,this.flag=en(n.level)}return t.prototype.process=function(t,n){try{this.d.push(t,n)}catch(t){this.ondata(t,null,n)}},t.prototype.push=function(t,n){ln.prototype.push.call(this,t,n)},t}();_e.ZipDeflate=cn;var pn=function(){function t(t,n){var r=this;n||(n={}),ln.call(this,t),this.d=new xt(n,(function(t,n,e){r.ondata(t,n,e)})),this.compression=8,this.flag=en(n.level),this.terminate=this.d.terminate}return t.prototype.process=function(t,n){this.d.push(t,n)},t.prototype.push=function(t,n){ln.prototype.push.call(this,t,n)},t}();_e.AsyncZipDeflate=pn;var vn=function(){function t(t){this.ondata=t,this.u=[],this.d=1}return t.prototype.add=function(t){var r=this;if(this.ondata||I(5),2&this.d)this.ondata(I(4+8*(1&this.d),0,1),null,!1);else{var e=nn(t.filename),i=e.length,o=t.comment,s=o&&nn(o),a=i!=t.filename.length||s&&o.length!=s.length,u=i+un(t.extra)+30;i>65535&&this.ondata(I(11,0,1),null,!1);var h=new n(u);hn(h,0,t,e,a,-1);var f=[h],l=function(){for(var t=0,n=f;t<n.length;t++)r.ondata(null,n[t],!1);f=[]},c=this.d;this.d=0;var p=this.u.length,v=Q(t,{f:e,u:a,o:s,t:function(){t.terminate&&t.terminate()},r:function(){if(l(),c){var t=r.u[p+1];t?t.r():r.d=1}c=1}}),d=0;t.ondata=function(e,i,o){if(e)r.ondata(e,i,o),r.terminate();else if(d+=i.length,f.push(i),o){var s=new n(16);ct(s,0,134695760),ct(s,4,t.crc),ct(s,8,d),ct(s,12,t.size),f.push(s),v.c=d,v.b=u+d+16,v.crc=t.crc,v.size=t.size,c&&v.r(),c=1}else c&&l()},this.u.push(v)}},t.prototype.end=function(){var t=this;2&this.d?this.ondata(I(4+8*(1&this.d),0,1),null,!0):(this.d?this.e():this.u.push({r:function(){1&t.d&&(t.u.splice(-1,1),t.e())},t:function(){}}),this.d=3)},t.prototype.e=function(){for(var t=0,r=0,e=0,i=0,o=this.u;i<o.length;i++)e+=46+(h=o[i]).f.length+un(h.extra)+(h.o?h.o.length:0);for(var s=new n(e+22),a=0,u=this.u;a<u.length;a++){var h;hn(s,t,h=u[a],h.f,h.u,-h.c-2,r,h.o),t+=46+h.f.length+un(h.extra)+(h.o?h.o.length:0),r+=h.b}fn(s,t,this.u.length,e,r),this.ondata(null,s,!0),this.d=2},t.prototype.terminate=function(){for(var t=0,n=this.u;t<n.length;t++)n[t].t();this.d=2},t}();function dn(t,r,e){e||(e=r,r={}),"function"!=typeof e&&I(7);var i={};Rt(t,"",i,r);var o=Object.keys(i),s=o.length,a=0,u=0,h=s,f=Array(s),l=[],c=function(){for(var t=0;t<l.length;++t)l[t]()},p=function(t,n){xn((function(){e(t,n)}))};xn((function(){p=e}));var v=function(){var t=new n(u+22),r=a,e=u-a;u=0;for(var i=0;i<h;++i){var o=f[i];try{var s=o.c.length;hn(t,u,o,o.f,o.u,s);var l=30+o.f.length+un(o.extra),c=u+l;t.set(o.c,c),hn(t,a,o,o.f,o.u,s,u,o.m),a+=16+l+(o.m?o.m.length:0),u=c+s}catch(t){return p(t,null)}}fn(t,a,f.length,e,r),p(null,t)};s||v();for(var d=function(t){var n=o[t],r=i[n],e=r[0],h=r[1],d=Y(),g=e.length;d.p(e);var y=nn(n),m=y.length,b=h.comment,w=b&&nn(b),x=w&&w.length,z=un(h.extra),k=0==h.level?0:8,M=function(r,e){if(r)c(),p(r,null);else{var i=e.length;f[t]=Q(h,{size:g,crc:d.d(),c:e,f:y,m:w,u:m!=n.length||w&&b.length!=x,compression:k}),a+=30+m+z+i,u+=76+2*(m+z)+(x||0)+i,--s||v()}};if(m>65535&&M(I(11,0,1),null),k)if(g<16e4)try{M(null,kt(e,h))}catch(t){M(t,null)}else l.push(zt(e,h,M));else M(null,e)},g=0;g<h;++g)d(g);return c}function gn(t,r){r||(r={});var e={},i=[];Rt(t,"",e,r);var o=0,s=0;for(var a in e){var u=e[a],h=u[0],f=u[1],l=0==f.level?0:8,c=(M=nn(a)).length,p=f.comment,v=p&&nn(p),d=v&&v.length,g=un(f.extra);c>65535&&I(11);var y=l?kt(h,f):h,m=y.length,b=Y();b.p(h),i.push(Q(f,{size:h.length,crc:b.d(),c:y,f:M,m:v,u:c!=a.length||v&&p.length!=d,o:o,compression:l})),o+=30+c+g+m,s+=76+2*(c+g)+(d||0)+m}for(var w=new n(s+22),x=o,z=s-o,k=0;k<i.length;++k){var M;hn(w,(M=i[k]).o,M,M.f,M.u,M.c.length);var S=30+M.f.length+un(M.extra);w.set(M.c,M.o+S),hn(w,o,M,M.f,M.u,M.c.length,M.o,M.m),o+=16+S+(M.m?M.m.length:0)}return fn(w,o,i.length,z,x),w}_e.Zip=vn,_e.zip=dn,_e.zipSync=gn;var yn=function(){function t(){}return t.prototype.push=function(t,n){this.ondata(null,t,n)},t.compression=0,t}();_e.UnzipPassThrough=yn;var mn=function(){function t(){var t=this;this.i=new Mt((function(n,r){t.ondata(null,n,r)}))}return t.prototype.push=function(t,n){try{this.i.push(t,n)}catch(t){this.ondata(t,null,n)}},t.compression=8,t}();_e.UnzipInflate=mn;var bn=function(){function t(t,n){var r=this;n<32e4?this.i=new Mt((function(t,n){r.ondata(null,t,n)})):(this.i=new St((function(t,n,e){r.ondata(t,n,e)})),this.terminate=this.i.terminate)}return t.prototype.push=function(t,n){this.i.terminate&&(t=D(t,0)),this.i.push(t,n)},t.compression=8,t}();_e.AsyncUnzipInflate=bn;var wn=function(){function t(t){this.onfile=t,this.k=[],this.o={0:yn},this.p=N}return t.prototype.push=function(t,r){var e=this;if(this.onfile||I(5),this.p||I(4),this.c>0){var i=Math.min(this.c,t.length),o=t.subarray(0,i);if(this.c-=i,this.d?this.d.push(o,!this.c):this.k[0].push(o),(t=t.subarray(i)).length)return this.push(t,r)}else{var s=0,a=0,u=void 0,h=void 0;this.p.length?t.length?((h=new n(this.p.length+t.length)).set(this.p),h.set(t,this.p.length)):h=this.p:h=t;for(var f=h.length,l=this.c,c=l&&this.d,p=function(){var t,n=ft(h,a);if(67324752==n){s=1,u=a,v.d=null,v.c=0;var r=ht(h,a+6),i=ht(h,a+8),o=2048&r,c=8&r,p=ht(h,a+26),d=ht(h,a+28);if(f>a+30+p+d){var g=[];v.k.unshift(g),s=2;var y,m=ft(h,a+18),b=ft(h,a+22),w=rn(h.subarray(a+30,a+=30+p),!o);4294967295==m?(t=c?[-2]:an(h,a),m=t[0],b=t[1]):c&&(m=-1),a+=d,v.c=m;var x={name:w,compression:i,start:function(){if(x.ondata||I(5),m){var t=e.o[i];t||x.ondata(I(14,"unknown compression type "+i,1),null,!1),(y=m<0?new t(w):new t(w,m,b)).ondata=function(t,n,r){x.ondata(t,n,r)};for(var n=0,r=g;n<r.length;n++)y.push(r[n],!1);e.k[0]==g&&e.c?e.d=y:y.push(N,!0)}else x.ondata(null,N,!0)},terminate:function(){y&&y.terminate&&y.terminate()}};m>=0&&(x.size=m,x.originalSize=b),v.onfile(x)}return"break"}if(l){if(134695760==n)return u=a+=12+(-2==l&&8),s=3,v.c=0,"break";if(33639248==n)return u=a-=4,s=3,v.c=0,"break"}},v=this;a<f-4&&"break"!==p();++a);if(this.p=N,l<0){var d=h.subarray(0,s?u-12-(-2==l&&8)-(134695760==ft(h,u-16)&&4):a);c?c.push(d,!!s):this.k[+(2==s)].push(d)}if(2&s)return this.push(h.subarray(a),r);this.p=h.subarray(a)}r&&(this.c&&I(13),this.p=null)},t.prototype.register=function(t){this.o[t.compression]=t},t}();_e.Unzip=wn;var xn="function"==typeof queueMicrotask?queueMicrotask:"function"==typeof setTimeout?setTimeout:function(t){t()};function zn(t,r,e){e||(e=r,r={}),"function"!=typeof e&&I(7);var i=[],o=function(){for(var t=0;t<i.length;++t)i[t]()},s={},a=function(t,n){xn((function(){e(t,n)}))};xn((function(){a=e}));for(var u=t.length-22;101010256!=ft(t,u);--u)if(!u||t.length-u>65558)return a(I(13,0,1),null),o;var h=ht(t,u+8);if(h){var f=h,l=ft(t,u+16),c=4294967295==l||65535==f;if(c){var p=ft(t,u-12);(c=101075792==ft(t,p))&&(f=h=ft(t,p+32),l=ft(t,p+48))}for(var v=r&&r.filter,d=function(r){var e=sn(t,l,c),u=e[0],f=e[1],p=e[2],d=e[3],g=e[4],y=on(t,e[5]);l=g;var m=function(t,n){t?(o(),a(t,null)):(n&&(s[d]=n),--h||a(null,s))};if(!v||v({name:d,size:f,originalSize:p,compression:u}))if(u)if(8==u){var b=t.subarray(y,y+f);if(p<524288||f>.8*p)try{m(null,Tt(b,{out:new n(p)}))}catch(t){m(t,null)}else i.push(At(b,{size:p},m))}else m(I(14,"unknown compression type "+u,1),null);else m(null,D(t,y,y+f));else m(null,null)},g=0;g<f;++g)d()}else a(null,{});return o}function kn(t,r){for(var e={},i=t.length-22;101010256!=ft(t,i);--i)(!i||t.length-i>65558)&&I(13);var o=ht(t,i+8);if(!o)return{};var s=ft(t,i+16),a=4294967295==s||65535==o;if(a){var u=ft(t,i-12);(a=101075792==ft(t,u))&&(o=ft(t,u+32),s=ft(t,u+48))}for(var h=r&&r.filter,f=0;f<o;++f){var l=sn(t,s,a),c=l[0],p=l[1],v=l[2],d=l[3],g=l[4],y=on(t,l[5]);s=g,h&&!h({name:d,size:p,originalSize:v,compression:c})||(c?8==c?e[d]=Tt(t.subarray(y,y+p),{out:new n(v)}):I(14,"unknown compression type "+c):e[d]=D(t,y,y+p))}return e}_e.unzip=zn,_e.unzipSync=kn;return _e});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdktn",
3
- "version": "0.23.1",
3
+ "version": "0.23.2",
4
4
  "description": "Cloud Development Kit for Terraform",
5
5
  "scripts": {
6
6
  "build": "jsii --silence-warnings reserved-word",
@@ -12,13 +12,16 @@
12
12
  "package:dotnet": "jsii-pacmak --targets dotnet",
13
13
  "package:js": "jsii-pacmak --targets js",
14
14
  "package:go": "jsii-pacmak --targets go",
15
- "test": "jest",
16
- "test:ci": "jest --ci",
17
15
  "test:update": "jest -u",
18
16
  "dist-clean": "rm -rf dist"
19
17
  },
20
18
  "main": "lib/index.js",
21
19
  "types": "lib/index.d.ts",
20
+ "nx": {
21
+ "tags": [
22
+ "unit-test:terraform"
23
+ ]
24
+ },
22
25
  "keywords": [
23
26
  "cdk",
24
27
  "cdktf",
@@ -27,6 +30,13 @@
27
30
  ],
28
31
  "jsii": {
29
32
  "outdir": "dist",
33
+ "tsc": {
34
+ "outDir": "lib",
35
+ "rootDir": "src"
36
+ },
37
+ "excludeTypescript": [
38
+ "src/**/__tests__/**"
39
+ ],
30
40
  "versionFormat": "short",
31
41
  "license": "MPL-2.0",
32
42
  "author": {
@@ -67,26 +77,23 @@
67
77
  },
68
78
  "license": "MPL-2.0",
69
79
  "devDependencies": {
70
- "@types/jest": "30.0.0",
71
80
  "@types/json-stable-stringify": "1.2.0",
72
81
  "@types/node": "18.19.130",
73
82
  "@types/semver": "7.7.1",
74
83
  "constructs": "10.6.0",
75
- "jest": "^30.3.0",
76
84
  "jsii": "5.9.37",
77
85
  "jsii-pacmak": "1.128.0",
78
- "ts-jest": "29.4.9",
79
86
  "typescript": "5.4.5"
80
87
  },
81
88
  "dependencies": {
89
+ "fflate": "0.8.2",
82
90
  "json-stable-stringify": "1.3.0",
83
- "semver": "7.7.4",
84
- "yazl": "3.3.1"
91
+ "semver": "7.7.4"
85
92
  },
86
93
  "bundledDependencies": [
94
+ "fflate",
87
95
  "json-stable-stringify",
88
- "semver",
89
- "yazl"
96
+ "semver"
90
97
  ],
91
98
  "stability": "experimental",
92
99
  "peerDependencies": {
package/tsconfig.json CHANGED
@@ -1,5 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
+ "outDir": "lib",
4
+ "rootDir": "src",
3
5
  "declarationMap": false,
4
6
  "inlineSourceMap": true,
5
7
  "inlineSources": true,
@@ -25,13 +27,14 @@
25
27
  "stripInternal": false,
26
28
  "target": "es2020",
27
29
  "composite": false,
28
- "tsBuildInfoFile": "tsconfig.tsbuildinfo"
30
+ "tsBuildInfoFile": "lib/tsconfig.tsbuildinfo"
29
31
  },
30
32
  "include": [
31
- "**/*.ts"
33
+ "src/**/*.ts"
32
34
  ],
33
35
  "exclude": [
34
- "node_modules"
36
+ "node_modules",
37
+ "src/**/__tests__/**"
35
38
  ],
36
39
  "_generated_by_jsii_": "Generated by jsii - safe to delete, and ideally should be in .gitignore"
37
40
  }
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "rootDir": ".",
5
+ "outDir": ".jest",
6
+ "noEmitOnError": false,
7
+ "noUnusedLocals": false,
8
+ "noUnusedParameters": false
9
+ },
10
+ "include": ["src/**/*.ts", "test/**/*.ts"],
11
+ "exclude": ["node_modules", "lib", "**/*.d.ts"]
12
+ }
@@ -1 +0,0 @@
1
- export {};
@@ -1,205 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // Copyright (c) HashiCorp, Inc
4
- // SPDX-License-Identifier: MPL-2.0
5
- const index_1 = require("../index");
6
- const resource_1 = require("../../../test/helper/resource");
7
- const matchers_1 = require("../matchers");
8
- const data_source_1 = require("../../../test/helper/data-source");
9
- const terraform_stack_1 = require("../../terraform-stack");
10
- const provider_1 = require("../../../test/helper/provider");
11
- const fs = require("fs");
12
- const path = require("path");
13
- function corruptSynthesizedStack(stackPath) {
14
- const manifest = JSON.parse(fs.readFileSync(path.resolve(stackPath, "manifest.json"), "utf8"));
15
- const { synthesizedStackPath } = Object.values(manifest.stacks)[0];
16
- const absoluteStackPath = path.resolve(stackPath, synthesizedStackPath);
17
- fs.writeFileSync(absoluteStackPath, fs.readFileSync(absoluteStackPath, "utf8") +
18
- "Weird text that makes the JSON file invalid", "utf8");
19
- }
20
- describe("deepEqualIgnoringObjectCasing", () => {
21
- it("should compare simple items", () => {
22
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)(1, 1)).toBe(true);
23
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)("1", "1")).toBe(true);
24
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)(true, true)).toBe(true);
25
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)(false, false)).toBe(true);
26
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)(null, null)).toBe(true);
27
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)(undefined, undefined)).toBe(true);
28
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)([1, 2, 3], [1, 2, 3])).toBe(true);
29
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: 1, b: 2 }, { a: 1, b: 2 })).toBe(true);
30
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)(1, 2)).toBe(false);
31
- });
32
- it("should compare arrays", () => {
33
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)([1, 2, 3], [1, 2, 3])).toBe(true);
34
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)([1, 2, 3], [1, 2, 4])).toBe(false);
35
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)([1, 2, 3], [1, 2, 3, 4])).toBe(false);
36
- });
37
- it("should compare objects", () => {
38
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: 1, b: 2 }, { a: 1, b: 2 })).toBe(true);
39
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: { c: 3 }, b: 2 }, { a: { c: 3 }, b: 2 })).toBe(true);
40
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: 3, b: 2 }, { a: { c: 3 }, b: 2 })).toBe(false);
41
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: { c: 3 }, b: 2 }, { a: 3, b: 2 })).toBe(false);
42
- });
43
- it("should ignore case when comparing object keys", () => {
44
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: 1, fooBar: 2 }, { a: 1, foo_bar: 2 })).toBe(true);
45
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: { fooBar: 2 } }, { a: { foo_bar: 2 } })).toBe(true);
46
- });
47
- it("should ignore keys not present in expectation", () => {
48
- expect((0, matchers_1.asymetricDeepEqualIgnoringObjectCasing)({ a: { fooBar: 2 } }, { a: { foo_bar: 2 }, b: 3 })).toBe(true);
49
- });
50
- });
51
- describe("matchers", () => {
52
- const toHaveResourceWithProperties = (0, matchers_1.getToHaveResourceWithProperties)();
53
- describe("toHaveResourceWithProperties", () => {
54
- let synthesizedStack;
55
- beforeEach(() => {
56
- synthesizedStack = index_1.Testing.synthScope((scope) => {
57
- new resource_1.TestResource(scope, "test", { name: "test", tags: { foo: "bar" } });
58
- });
59
- });
60
- it("should pass with no properties", () => {
61
- const res = toHaveResourceWithProperties(synthesizedStack, resource_1.TestResource);
62
- expect(res.pass).toBeTruthy();
63
- expect(res.message).toMatchInlineSnapshot(`
64
- "Expected no test_resource with properties {} to be present in synthesized stack.
65
- Found 1 test_resource resources instead:
66
- [
67
- {
68
- "name": "test",
69
- "tags": {
70
- "foo": "bar"
71
- }
72
- }
73
- ]"
74
- `);
75
- });
76
- it("should fail with wrong resouce", () => {
77
- const res = toHaveResourceWithProperties(synthesizedStack, data_source_1.TestDataSource);
78
- expect(res.pass).toBeFalsy();
79
- expect(res.message).toMatchInlineSnapshot(`
80
- "Expected test_data_source with properties {} to be present in synthesized stack.
81
- Found no test_data_source resources instead"
82
- `);
83
- });
84
- it("should work on nested elements", () => {
85
- const res = toHaveResourceWithProperties(synthesizedStack, resource_1.TestResource, {
86
- tags: { foo: "bar" },
87
- });
88
- expect(res.pass).toBeTruthy();
89
- });
90
- it("should fail if no item is found as asserted", () => {
91
- const res = toHaveResourceWithProperties(synthesizedStack, resource_1.DockerImage);
92
- expect(res.pass).toBeFalsy();
93
- });
94
- });
95
- describe("toHaveDataSourceWithProperties", () => {
96
- const toHaveDataSourceWithProperties = (0, matchers_1.getToHaveDataSourceWithProperties)();
97
- let synthesizedStack;
98
- beforeEach(() => {
99
- synthesizedStack = index_1.Testing.synthScope((scope) => {
100
- new resource_1.TestResource(scope, "test", { name: "test" });
101
- new data_source_1.TestDataSource(scope, "test-data-source", { name: "data" });
102
- });
103
- });
104
- it("should not find resources", () => {
105
- const res = toHaveDataSourceWithProperties(synthesizedStack, resource_1.TestResource);
106
- expect(res.pass).toBeFalsy();
107
- });
108
- it("should find data sources", () => {
109
- const res = toHaveDataSourceWithProperties(synthesizedStack, data_source_1.TestDataSource, { name: "data" });
110
- expect(res.pass).toBeTruthy();
111
- });
112
- });
113
- describe("toHaveProviderWithProperties", () => {
114
- const toHaveProviderWithProperties = (0, matchers_1.getToHaveProviderWithProperties)();
115
- let synthesizedStack;
116
- let synthesizedStackNoProvider;
117
- beforeEach(() => {
118
- synthesizedStack = index_1.Testing.synthScope((scope) => {
119
- new provider_1.DockerProvider(scope, "test-provider", {
120
- alias: "test-alias",
121
- ssh_opts: ["-o", "StrictHostKeyChecking=no"],
122
- });
123
- new resource_1.DockerImage(scope, "test-image", { name: "test" });
124
- });
125
- synthesizedStackNoProvider = index_1.Testing.synthScope((scope) => {
126
- new resource_1.DockerImage(scope, "test", { name: "test" });
127
- });
128
- });
129
- it("should find provider", () => {
130
- const res = toHaveProviderWithProperties(synthesizedStack, provider_1.DockerProvider, { alias: "test-alias", ssh_opts: ["-o", "StrictHostKeyChecking=no"] });
131
- expect(res.pass).toBeTruthy();
132
- });
133
- it("should not find provider", () => {
134
- const res = toHaveProviderWithProperties(synthesizedStackNoProvider, provider_1.DockerProvider, {});
135
- expect(res.pass).toBeFalsy();
136
- });
137
- it("should not find resources", () => {
138
- const res = toHaveProviderWithProperties(synthesizedStack, resource_1.TestResource);
139
- expect(res.pass).toBeFalsy();
140
- });
141
- it("should not find data sources", () => {
142
- const res = toHaveProviderWithProperties(synthesizedStack, data_source_1.TestDataSource);
143
- expect(res.pass).toBeFalsy();
144
- });
145
- });
146
- describe("toBeValidTerraform", () => {
147
- it("fails if anything but a path is passed", () => {
148
- const res = (0, matchers_1.toBeValidTerraform)("not a path");
149
- expect(res.pass).toBeFalsy();
150
- expect(res.message).toMatchInlineSnapshot(`"Expected subject to be a terraform directory: Error: ENOENT: no such file or directory, stat 'not a path'"`);
151
- });
152
- it("succeeds if the terraform config passed is valid", () => {
153
- const app = index_1.Testing.app();
154
- const stack = new terraform_stack_1.TerraformStack(app, "test");
155
- new provider_1.DockerProvider(stack, "provider", {});
156
- new resource_1.DockerImage(stack, "test", { name: "test" });
157
- const res = (0, matchers_1.toBeValidTerraform)(index_1.Testing.fullSynth(stack));
158
- expect(res.pass).toBeTruthy();
159
- expect(res.message).toMatchInlineSnapshot(`"Expected subject not to be a valid terraform stack"`);
160
- });
161
- it("fails if the terraform config passed is invalid", () => {
162
- const app = index_1.Testing.app();
163
- const stack = new terraform_stack_1.TerraformStack(app, "test");
164
- new provider_1.DockerProvider(stack, "provider", {});
165
- new resource_1.DockerImage(stack, "test", { name: "test" });
166
- const result = index_1.Testing.fullSynth(stack);
167
- corruptSynthesizedStack(result);
168
- const res = (0, matchers_1.toBeValidTerraform)(result);
169
- expect(res.pass).toBeFalsy();
170
- expect(res.message).toEqual(expect.stringContaining("Expected subject to be a valid terraform stack"));
171
- const tf1_3 = "There are some problems with the configuration, described below";
172
- const tf1_4 = "Terraform encountered problems during initialisation, including problems\n with the configuration, described below";
173
- const tf1_5 = "Extra characters appear after the JSON value";
174
- expect(res.message).toEqual(expect.stringMatching(new RegExp(`${tf1_3}|${tf1_4}|${tf1_5}`)));
175
- });
176
- });
177
- describe("toPlanSuccessfully", () => {
178
- it("fails if anything but a path is passed", () => {
179
- const res = (0, matchers_1.toPlanSuccessfully)("not a path");
180
- expect(res.pass).toBeFalsy();
181
- expect(res.message).toMatchInlineSnapshot(`"Expected subject to be a terraform directory: Error: ENOENT: no such file or directory, stat 'not a path'"`);
182
- });
183
- it("succeeds if the terraform config passed is valid", () => {
184
- const app = index_1.Testing.app();
185
- const stack = new terraform_stack_1.TerraformStack(app, "test");
186
- new provider_1.DockerProvider(stack, "provider", {});
187
- new resource_1.DockerImage(stack, "test", { name: "test" });
188
- const res = (0, matchers_1.toPlanSuccessfully)(index_1.Testing.fullSynth(stack));
189
- expect(res.pass).toBeTruthy();
190
- expect(res.message).toMatchInlineSnapshot(`"Expected subject not to plan successfully"`);
191
- });
192
- it("fails if the terraform config passed is invalid", () => {
193
- const app = index_1.Testing.app();
194
- const stack = new terraform_stack_1.TerraformStack(app, "test");
195
- new provider_1.DockerProvider(stack, "provider", {});
196
- new resource_1.DockerImage(stack, "test", { name: "test" });
197
- const result = index_1.Testing.fullSynth(stack);
198
- corruptSynthesizedStack(result);
199
- const res = (0, matchers_1.toPlanSuccessfully)(result);
200
- expect(res.pass).toBeFalsy();
201
- expect(res.message).toEqual(expect.stringContaining("Expected subject to plan successfully"));
202
- });
203
- });
204
- });
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcnMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hdGNoZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLG9DQUFtQztBQUNuQyw0REFBMEU7QUFDMUUsMENBT3FCO0FBQ3JCLGtFQUFrRTtBQUNsRSwyREFBdUQ7QUFDdkQsNERBQStEO0FBQy9ELHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFFN0IsU0FBUyx1QkFBdUIsQ0FBQyxTQUFpQjtJQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN6QixFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUNsRSxDQUFDO0lBRUYsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFRLENBQUM7SUFDMUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhFLEVBQUUsQ0FBQyxhQUFhLENBQ2QsaUJBQWlCLEVBQ2pCLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO1FBQ3hDLDZDQUE2QyxFQUMvQyxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFO0lBQzdDLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7UUFDckMsTUFBTSxDQUFDLElBQUEsaURBQXNDLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxJQUFBLGlEQUFzQyxFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMs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QUFFLENBQUMsQ0FBQztZQUVqRCxNQUFNLE1BQU0sR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhDLE1BQU0sR0FBRyxHQUFHLElBQUEsNkJBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FDekIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHVDQUF1QyxDQUFDLENBQ2pFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgVGVzdFJlc291cmNlLCBEb2NrZXJJbWFnZSB9IGZyb20gXCIuLi8uLi8uLi90ZXN0L2hlbHBlci9yZXNvdXJjZVwiO1xuaW1wb3J0IHtcbiAgdG9CZVZhbGlkVGVycmFmb3JtLFxuICB0b1BsYW5TdWNjZXNzZnVsbHksXG4gIGdldFRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMsXG4gIGdldFRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllcyxcbiAgYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcsXG59IGZyb20gXCIuLi9tYXRjaGVyc1wiO1xuaW1wb3J0IHsgVGVzdERhdGFTb3VyY2UgfSBmcm9tIFwiLi4vLi4vLi4vdGVzdC9oZWxwZXIvZGF0YS1zb3VyY2VcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4uLy4uL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHsgRG9ja2VyUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vLi4vdGVzdC9oZWxwZXIvcHJvdmlkZXJcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5mdW5jdGlvbiBjb3JydXB0U3ludGhlc2l6ZWRTdGFjayhzdGFja1BhdGg6IHN0cmluZykge1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShzdGFja1BhdGgsIFwibWFuaWZlc3QuanNvblwiKSwgXCJ1dGY4XCIpLFxuICApO1xuXG4gIGNvbnN0IHsgc3ludGhlc2l6ZWRTdGFja1BhdGggfSA9IE9iamVjdC52YWx1ZXMobWFuaWZlc3Quc3RhY2tzKVswXSBhcyBhbnk7XG4gIGNvbnN0IGFic29sdXRlU3RhY2tQYXRoID0gcGF0aC5yZXNvbHZlKHN0YWNrUGF0aCwgc3ludGhlc2l6ZWRTdGFja1BhdGgpO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgYWJzb2x1dGVTdGFja1BhdGgsXG4gICAgZnMucmVhZEZpbGVTeW5jKGFic29sdXRlU3RhY2tQYXRoLCBcInV0ZjhcIikgK1xuICAgICAgXCJXZWlyZCB0ZXh0IHRoYXQgbWFrZXMgdGhlIEpTT04gZmlsZSBpbnZhbGlkXCIsXG4gICAgXCJ1dGY4XCIsXG4gICk7XG59XG5cbmRlc2NyaWJlKFwiZGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmdcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBjb21wYXJlIHNpbXBsZSBpdGVtc1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKDEsIDEpKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhcIjFcIiwgXCIxXCIpKS50b0JlKHRydWUpO1xuICAgIGV4cGVjdChhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyh0cnVlLCB0cnVlKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoZmFsc2UsIGZhbHNlKSkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcobnVsbCwgbnVsbCkpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKHVuZGVmaW5lZCwgdW5kZWZpbmVkKSkudG9CZShcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgICBleHBlY3QoYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoWzEsIDIsIDNdLCBbMSwgMiwgM10pKS50b0JlKFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICAgIGV4cGVjdChcbiAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKHsgYTogMSwgYjogMiB9LCB7IGE6IDEsIGI6IDIgfSksXG4gICAgKS50b0JlKHRydWUpO1xuXG4gICAgZXhwZWN0KGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKDEsIDIpKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29tcGFyZSBhcnJheXNcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhbMSwgMiwgM10sIFsxLCAyLCAzXSkpLnRvQmUoXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBleHBlY3QoYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoWzEsIDIsIDNdLCBbMSwgMiwgNF0pKS50b0JlKFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgICBleHBlY3QoXG4gICAgICBhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhbMSwgMiwgM10sIFsxLCAyLCAzLCA0XSksXG4gICAgKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgY29tcGFyZSBvYmplY3RzXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyh7IGE6IDEsIGI6IDIgfSwgeyBhOiAxLCBiOiAyIH0pLFxuICAgICkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoXG4gICAgICBhc3ltZXRyaWNEZWVwRXF1YWxJZ25vcmluZ09iamVjdENhc2luZyhcbiAgICAgICAgeyBhOiB7IGM6IDMgfSwgYjogMiB9LFxuICAgICAgICB7IGE6IHsgYzogMyB9LCBiOiAyIH0sXG4gICAgICApLFxuICAgICkudG9CZSh0cnVlKTtcblxuICAgIGV4cGVjdChcbiAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICB7IGE6IDMsIGI6IDIgfSxcbiAgICAgICAgeyBhOiB7IGM6IDMgfSwgYjogMiB9LFxuICAgICAgKSxcbiAgICApLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChcbiAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICB7IGE6IHsgYzogMyB9LCBiOiAyIH0sXG4gICAgICAgIHsgYTogMywgYjogMiB9LFxuICAgICAgKSxcbiAgICApLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdChcInNob3VsZCBpZ25vcmUgY2FzZSB3aGVuIGNvbXBhcmluZyBvYmplY3Qga2V5c1wiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoXG4gICAgICAgIHsgYTogMSwgZm9vQmFyOiAyIH0sXG4gICAgICAgIHsgYTogMSwgZm9vX2JhcjogMiB9LFxuICAgICAgKSxcbiAgICApLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KFxuICAgICAgYXN5bWV0cmljRGVlcEVxdWFsSWdub3JpbmdPYmplY3RDYXNpbmcoXG4gICAgICAgIHsgYTogeyBmb29CYXI6IDIgfSB9LFxuICAgICAgICB7IGE6IHsgZm9vX2JhcjogMiB9IH0sXG4gICAgICApLFxuICAgICkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoXCJzaG91bGQgaWdub3JlIGtleXMgbm90IHByZXNlbnQgaW4gZXhwZWN0YXRpb25cIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIGFzeW1ldHJpY0RlZXBFcXVhbElnbm9yaW5nT2JqZWN0Q2FzaW5nKFxuICAgICAgICB7IGE6IHsgZm9vQmFyOiAyIH0gfSxcbiAgICAgICAgeyBhOiB7IGZvb19iYXI6IDIgfSwgYjogMyB9LFxuICAgICAgKSxcbiAgICApLnRvQmUodHJ1ZSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwibWF0Y2hlcnNcIiwgKCkgPT4ge1xuICBjb25zdCB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzID0gZ2V0VG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcygpO1xuICBkZXNjcmliZShcInRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGxldCBzeW50aGVzaXplZFN0YWNrOiBzdHJpbmc7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBzeW50aGVzaXplZFN0YWNrID0gVGVzdGluZy5zeW50aFNjb3BlKChzY29wZSkgPT4ge1xuICAgICAgICBuZXcgVGVzdFJlc291cmNlKHNjb3BlLCBcInRlc3RcIiwgeyBuYW1lOiBcInRlc3RcIiwgdGFnczogeyBmb286IFwiYmFyXCIgfSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcGFzcyB3aXRoIG5vIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcyhzeW50aGVzaXplZFN0YWNrLCBUZXN0UmVzb3VyY2UpO1xuXG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGV4cGVjdChyZXMubWVzc2FnZSkudG9NYXRjaElubGluZVNuYXBzaG90KGBcbiAgICAgICAgXCJFeHBlY3RlZCBubyB0ZXN0X3Jlc291cmNlIHdpdGggcHJvcGVydGllcyB7fSB0byBiZSBwcmVzZW50IGluIHN5bnRoZXNpemVkIHN0YWNrLlxuICAgICAgICBGb3VuZCAxIHRlc3RfcmVzb3VyY2UgcmVzb3VyY2VzIGluc3RlYWQ6XG4gICAgICAgIFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJ0ZXN0XCIsXG4gICAgICAgICAgICBcInRhZ3NcIjoge1xuICAgICAgICAgICAgICBcImZvb1wiOiBcImJhclwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXCJcbiAgICAgIGApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZmFpbCB3aXRoIHdyb25nIHJlc291Y2VcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdG9IYXZlUmVzb3VyY2VXaXRoUHJvcGVydGllcyhcbiAgICAgICAgc3ludGhlc2l6ZWRTdGFjayxcbiAgICAgICAgVGVzdERhdGFTb3VyY2UsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KHJlcy5tZXNzYWdlKS50b01hdGNoSW5saW5lU25hcHNob3QoYFxuICAgICAgICBcIkV4cGVjdGVkIHRlc3RfZGF0YV9zb3VyY2Ugd2l0aCBwcm9wZXJ0aWVzIHt9IHRvIGJlIHByZXNlbnQgaW4gc3ludGhlc2l6ZWQgc3RhY2suXG4gICAgICAgIEZvdW5kIG5vIHRlc3RfZGF0YV9zb3VyY2UgcmVzb3VyY2VzIGluc3RlYWRcIlxuICAgICAgYCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB3b3JrIG9uIG5lc3RlZCBlbGVtZW50c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB0b0hhdmVSZXNvdXJjZVdpdGhQcm9wZXJ0aWVzKHN5bnRoZXNpemVkU3RhY2ssIFRlc3RSZXNvdXJjZSwge1xuICAgICAgICB0YWdzOiB7IGZvbzogXCJiYXJcIiB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChyZXMucGFzcykudG9CZVRydXRoeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZmFpbCBpZiBubyBpdGVtIGlzIGZvdW5kIGFzIGFzc2VydGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRvSGF2ZVJlc291cmNlV2l0aFByb3BlcnRpZXMoc3ludGhlc2l6ZWRTdGFjaywgRG9ja2VySW1hZ2UpO1xuXG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVGYWxzeSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcInRvSGF2ZURhdGFTb3VyY2VXaXRoUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzID0gZ2V0VG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKCk7XG4gICAgbGV0IHN5bnRoZXNpemVkU3RhY2s6IGFueTtcbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIHN5bnRoZXNpemVkU3RhY2sgPSBUZXN0aW5nLnN5bnRoU2NvcGUoKHNjb3BlKSA9PiB7XG4gICAgICAgIG5ldyBUZXN0UmVzb3VyY2Uoc2NvcGUsIFwidGVzdFwiLCB7IG5hbWU6IFwidGVzdFwiIH0pO1xuICAgICAgICBuZXcgVGVzdERhdGFTb3VyY2Uoc2NvcGUsIFwidGVzdC1kYXRhLXNvdXJjZVwiLCB7IG5hbWU6IFwiZGF0YVwiIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBub3QgZmluZCByZXNvdXJjZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgICAgICBzeW50aGVzaXplZFN0YWNrLFxuICAgICAgICBUZXN0UmVzb3VyY2UsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVGYWxzeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZmluZCBkYXRhIHNvdXJjZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdG9IYXZlRGF0YVNvdXJjZVdpdGhQcm9wZXJ0aWVzKFxuICAgICAgICBzeW50aGVzaXplZFN0YWNrLFxuICAgICAgICBUZXN0RGF0YVNvdXJjZSxcbiAgICAgICAgeyBuYW1lOiBcImRhdGFcIiB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHJlcy5wYXNzKS50b0JlVHJ1dGh5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwidG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgdG9IYXZlUHJvdmlkZXJXaXRoUHJvcGVydGllcyA9IGdldFRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoKTtcbiAgICBsZXQgc3ludGhlc2l6ZWRTdGFjazogYW55O1xuICAgIGxldCBzeW50aGVzaXplZFN0YWNrTm9Qcm92aWRlcjogYW55O1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgc3ludGhlc2l6ZWRTdGFjayA9IFRlc3Rpbmcuc3ludGhTY29wZSgoc2NvcGUpID0+IHtcbiAgICAgICAgbmV3IERvY2tlclByb3ZpZGVyKHNjb3BlLCBcInRlc3QtcHJvdmlkZXJcIiwge1xuICAgICAgICAgIGFsaWFzOiBcInRlc3QtYWxpYXNcIixcbiAgICAgICAgICBzc2hfb3B0czogW1wiLW9cIiwgXCJTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm9cIl0sXG4gICAgICAgIH0pO1xuICAgICAgICBuZXcgRG9ja2VySW1hZ2Uoc2NvcGUsIFwidGVzdC1pbWFnZVwiLCB7IG5hbWU6IFwidGVzdFwiIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN5bnRoZXNpemVkU3RhY2tOb1Byb3ZpZGVyID0gVGVzdGluZy5zeW50aFNjb3BlKChzY29wZSkgPT4ge1xuICAgICAgICBuZXcgRG9ja2VySW1hZ2Uoc2NvcGUsIFwidGVzdFwiLCB7IG5hbWU6IFwidGVzdFwiIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBmaW5kIHByb3ZpZGVyXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gICAgICAgIHN5bnRoZXNpemVkU3RhY2ssXG4gICAgICAgIERvY2tlclByb3ZpZGVyLFxuICAgICAgICB7IGFsaWFzOiBcInRlc3QtYWxpYXNcIiwgc3NoX29wdHM6IFtcIi1vXCIsIFwiU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vXCJdIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVUcnV0aHkoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIG5vdCBmaW5kIHByb3ZpZGVyXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoXG4gICAgICAgIHN5bnRoZXNpemVkU3RhY2tOb1Byb3ZpZGVyLFxuICAgICAgICBEb2NrZXJQcm92aWRlcixcbiAgICAgICAge30sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVGYWxzeSgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbm90IGZpbmQgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRvSGF2ZVByb3ZpZGVyV2l0aFByb3BlcnRpZXMoc3ludGhlc2l6ZWRTdGFjaywgVGVzdFJlc291cmNlKTtcblxuICAgICAgZXhwZWN0KHJlcy5wYXNzKS50b0JlRmFsc3koKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIG5vdCBmaW5kIGRhdGEgc291cmNlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB0b0hhdmVQcm92aWRlcldpdGhQcm9wZXJ0aWVzKFxuICAgICAgICBzeW50aGVzaXplZFN0YWNrLFxuICAgICAgICBUZXN0RGF0YVNvdXJjZSxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChyZXMucGFzcykudG9CZUZhbHN5KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwidG9CZVZhbGlkVGVycmFmb3JtXCIsICgpID0+IHtcbiAgICBpdChcImZhaWxzIGlmIGFueXRoaW5nIGJ1dCBhIHBhdGggaXMgcGFzc2VkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRvQmVWYWxpZFRlcnJhZm9ybShcIm5vdCBhIHBhdGhcIik7XG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KHJlcy5tZXNzYWdlKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICAgIGBcIkV4cGVjdGVkIHN1YmplY3QgdG8gYmUgYSB0ZXJyYWZvcm0gZGlyZWN0b3J5OiBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LCBzdGF0ICdub3QgYSBwYXRoJ1wiYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInN1Y2NlZWRzIGlmIHRoZSB0ZXJyYWZvcm0gY29uZmlnIHBhc3NlZCBpcyB2YWxpZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3RcIik7XG5cbiAgICAgIG5ldyBEb2NrZXJQcm92aWRlcihzdGFjaywgXCJwcm92aWRlclwiLCB7fSk7XG4gICAgICBuZXcgRG9ja2VySW1hZ2Uoc3RhY2ssIFwidGVzdFwiLCB7IG5hbWU6IFwidGVzdFwiIH0pO1xuXG4gICAgICBjb25zdCByZXMgPSB0b0JlVmFsaWRUZXJyYWZvcm0oVGVzdGluZy5mdWxsU3ludGgoc3RhY2spKTtcbiAgICAgIGV4cGVjdChyZXMucGFzcykudG9CZVRydXRoeSgpO1xuICAgICAgZXhwZWN0KHJlcy5tZXNzYWdlKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICAgIGBcIkV4cGVjdGVkIHN1YmplY3Qgbm90IHRvIGJlIGEgdmFsaWQgdGVycmFmb3JtIHN0YWNrXCJgLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwiZmFpbHMgaWYgdGhlIHRlcnJhZm9ybSBjb25maWcgcGFzc2VkIGlzIGludmFsaWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICAgIGNvbnN0IHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKGFwcCwgXCJ0ZXN0XCIpO1xuXG4gICAgICBuZXcgRG9ja2VyUHJvdmlkZXIoc3RhY2ssIFwicHJvdmlkZXJcIiwge30pO1xuICAgICAgbmV3IERvY2tlckltYWdlKHN0YWNrLCBcInRlc3RcIiwgeyBuYW1lOiBcInRlc3RcIiB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcbiAgICAgIGNvcnJ1cHRTeW50aGVzaXplZFN0YWNrKHJlc3VsdCk7XG5cbiAgICAgIGNvbnN0IHJlcyA9IHRvQmVWYWxpZFRlcnJhZm9ybShyZXN1bHQpO1xuICAgICAgZXhwZWN0KHJlcy5wYXNzKS50b0JlRmFsc3koKTtcbiAgICAgIGV4cGVjdChyZXMubWVzc2FnZSkudG9FcXVhbChcbiAgICAgICAgZXhwZWN0LnN0cmluZ0NvbnRhaW5pbmcoXG4gICAgICAgICAgXCJFeHBlY3RlZCBzdWJqZWN0IHRvIGJlIGEgdmFsaWQgdGVycmFmb3JtIHN0YWNrXCIsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgY29uc3QgdGYxXzMgPVxuICAgICAgICBcIlRoZXJlIGFyZSBzb21lIHByb2JsZW1zIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24sIGRlc2NyaWJlZCBiZWxvd1wiO1xuICAgICAgY29uc3QgdGYxXzQgPVxuICAgICAgICBcIlRlcnJhZm9ybSBlbmNvdW50ZXJlZCBwcm9ibGVtcyBkdXJpbmcgaW5pdGlhbGlzYXRpb24sIGluY2x1ZGluZyBwcm9ibGVtc1xcbiB3aXRoIHRoZSBjb25maWd1cmF0aW9uLCBkZXNjcmliZWQgYmVsb3dcIjtcbiAgICAgIGNvbnN0IHRmMV81ID0gXCJFeHRyYSBjaGFyYWN0ZXJzIGFwcGVhciBhZnRlciB0aGUgSlNPTiB2YWx1ZVwiO1xuXG4gICAgICBleHBlY3QocmVzLm1lc3NhZ2UpLnRvRXF1YWwoXG4gICAgICAgIGV4cGVjdC5zdHJpbmdNYXRjaGluZyhuZXcgUmVnRXhwKGAke3RmMV8zfXwke3RmMV80fXwke3RmMV81fWApKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwidG9QbGFuU3VjY2Vzc2Z1bGx5XCIsICgpID0+IHtcbiAgICBpdChcImZhaWxzIGlmIGFueXRoaW5nIGJ1dCBhIHBhdGggaXMgcGFzc2VkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRvUGxhblN1Y2Nlc3NmdWxseShcIm5vdCBhIHBhdGhcIik7XG4gICAgICBleHBlY3QocmVzLnBhc3MpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KHJlcy5tZXNzYWdlKS50b01hdGNoSW5saW5lU25hcHNob3QoXG4gICAgICAgIGBcIkV4cGVjdGVkIHN1YmplY3QgdG8gYmUgYSB0ZXJyYWZvcm0gZGlyZWN0b3J5OiBFcnJvcjogRU5PRU5UOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LCBzdGF0ICdub3QgYSBwYXRoJ1wiYCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInN1Y2NlZWRzIGlmIHRoZSB0ZXJyYWZvcm0gY29uZmlnIHBhc3NlZCBpcyB2YWxpZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3RcIik7XG5cbiAgICAgIG5ldyBEb2NrZXJQcm92aWRlcihzdGFjaywgXCJwcm92aWRlclwiLCB7fSk7XG4gICAgICBuZXcgRG9ja2VySW1hZ2Uoc3RhY2ssIFwidGVzdFwiLCB7IG5hbWU6IFwidGVzdFwiIH0pO1xuXG4gICAgICBjb25zdCByZXMgPSB0b1BsYW5TdWNjZXNzZnVsbHkoVGVzdGluZy5mdWxsU3ludGgoc3RhY2spKTtcblxuICAgICAgZXhwZWN0KHJlcy5wYXNzKS50b0JlVHJ1dGh5KCk7XG4gICAgICBleHBlY3QocmVzLm1lc3NhZ2UpLnRvTWF0Y2hJbmxpbmVTbmFwc2hvdChcbiAgICAgICAgYFwiRXhwZWN0ZWQgc3ViamVjdCBub3QgdG8gcGxhbiBzdWNjZXNzZnVsbHlcImAsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJmYWlscyBpZiB0aGUgdGVycmFmb3JtIGNvbmZpZyBwYXNzZWQgaXMgaW52YWxpZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgICAgY29uc3Qgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3RcIik7XG5cbiAgICAgIG5ldyBEb2NrZXJQcm92aWRlcihzdGFjaywgXCJwcm92aWRlclwiLCB7fSk7XG4gICAgICBuZXcgRG9ja2VySW1hZ2Uoc3RhY2ssIFwidGVzdFwiLCB7IG5hbWU6IFwidGVzdFwiIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBUZXN0aW5nLmZ1bGxTeW50aChzdGFjayk7XG4gICAgICBjb3JydXB0U3ludGhlc2l6ZWRTdGFjayhyZXN1bHQpO1xuXG4gICAgICBjb25zdCByZXMgPSB0b1BsYW5TdWNjZXNzZnVsbHkocmVzdWx0KTtcbiAgICAgIGV4cGVjdChyZXMucGFzcykudG9CZUZhbHN5KCk7XG4gICAgICBleHBlY3QocmVzLm1lc3NhZ2UpLnRvRXF1YWwoXG4gICAgICAgIGV4cGVjdC5zdHJpbmdDb250YWluaW5nKFwiRXhwZWN0ZWQgc3ViamVjdCB0byBwbGFuIHN1Y2Nlc3NmdWxseVwiKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -1 +0,0 @@
1
- export {};