mindoodb 0.0.45 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +4 -0
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/browser/index.mjs +31 -0
- package/dist/core/BaseMindooDB.d.ts +74 -0
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +160 -0
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +22 -0
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +38 -0
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/copy/attachments.d.ts +53 -0
- package/dist/core/copy/attachments.d.ts.map +1 -0
- package/dist/core/copy/attachments.js +186 -0
- package/dist/core/copy/attachments.js.map +1 -0
- package/dist/core/copy/copyDocument.d.ts +86 -0
- package/dist/core/copy/copyDocument.d.ts.map +1 -0
- package/dist/core/copy/copyDocument.js +369 -0
- package/dist/core/copy/copyDocument.js.map +1 -0
- package/dist/core/copy/copyDocuments.d.ts +57 -0
- package/dist/core/copy/copyDocuments.d.ts.map +1 -0
- package/dist/core/copy/copyDocuments.js +167 -0
- package/dist/core/copy/copyDocuments.js.map +1 -0
- package/dist/core/copy/entryRewrite.d.ts +49 -0
- package/dist/core/copy/entryRewrite.d.ts.map +1 -0
- package/dist/core/copy/entryRewrite.js +74 -0
- package/dist/core/copy/entryRewrite.js.map +1 -0
- package/dist/core/copy/feasibility.d.ts +73 -0
- package/dist/core/copy/feasibility.d.ts.map +1 -0
- package/dist/core/copy/feasibility.js +169 -0
- package/dist/core/copy/feasibility.js.map +1 -0
- package/dist/core/copy/flatten.d.ts +55 -0
- package/dist/core/copy/flatten.d.ts.map +1 -0
- package/dist/core/copy/flatten.js +155 -0
- package/dist/core/copy/flatten.js.map +1 -0
- package/dist/core/copy/host.d.ts +92 -0
- package/dist/core/copy/host.d.ts.map +1 -0
- package/dist/core/copy/host.js +16 -0
- package/dist/core/copy/host.js.map +1 -0
- package/dist/core/copy/preflight.d.ts +62 -0
- package/dist/core/copy/preflight.d.ts.map +1 -0
- package/dist/core/copy/preflight.js +98 -0
- package/dist/core/copy/preflight.js.map +1 -0
- package/dist/core/copy/provenance.d.ts +74 -0
- package/dist/core/copy/provenance.d.ts.map +1 -0
- package/dist/core/copy/provenance.js +91 -0
- package/dist/core/copy/provenance.js.map +1 -0
- package/dist/core/copy/types.d.ts +418 -0
- package/dist/core/copy/types.d.ts.map +1 -0
- package/dist/core/copy/types.js +21 -0
- package/dist/core/copy/types.js.map +1 -0
- package/dist/core/crypto/DomainStatement.d.ts +44 -0
- package/dist/core/crypto/DomainStatement.d.ts.map +1 -0
- package/dist/core/crypto/DomainStatement.js +71 -0
- package/dist/core/crypto/DomainStatement.js.map +1 -0
- package/dist/core/crypto/EntrySignature.d.ts +109 -15
- package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
- package/dist/core/crypto/EntrySignature.js +83 -22
- package/dist/core/crypto/EntrySignature.js.map +1 -1
- package/dist/core/index.d.ts +21 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +54 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/timestamps/timestampClient.d.ts +88 -0
- package/dist/core/timestamps/timestampClient.d.ts.map +1 -0
- package/dist/core/timestamps/timestampClient.js +157 -0
- package/dist/core/timestamps/timestampClient.js.map +1 -0
- package/dist/core/types.d.ts +90 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/node/server/MindooDBServer.d.ts +37 -0
- package/dist/node/server/MindooDBServer.d.ts.map +1 -1
- package/dist/node/server/MindooDBServer.js +157 -0
- package/dist/node/server/MindooDBServer.js.map +1 -1
- package/dist/node/server/config.d.ts.map +1 -1
- package/dist/node/server/config.js +16 -0
- package/dist/node/server/config.js.map +1 -1
- package/dist/node/server/timestampProxy.d.ts +129 -0
- package/dist/node/server/timestampProxy.d.ts.map +1 -0
- package/dist/node/server/timestampProxy.js +361 -0
- package/dist/node/server/timestampProxy.js.map +1 -0
- package/dist/node/server/types.d.ts +20 -0
- package/dist/node/server/types.d.ts.map +1 -1
- package/dist/node/server/types.js +12 -0
- package/dist/node/server/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -105,6 +105,7 @@ function validateRateLimits(raw, filePath) {
|
|
|
105
105
|
const obj = raw;
|
|
106
106
|
const auth = validateRateLimitConfig(obj.auth, "auth", filePath);
|
|
107
107
|
const sync = validateRateLimitConfig(obj.sync, "sync", filePath);
|
|
108
|
+
const timestamps = validateTimestampRateLimitConfig(obj.timestamps, filePath);
|
|
108
109
|
const rateLimits = {};
|
|
109
110
|
if (auth) {
|
|
110
111
|
rateLimits.auth = auth;
|
|
@@ -112,6 +113,9 @@ function validateRateLimits(raw, filePath) {
|
|
|
112
113
|
if (sync) {
|
|
113
114
|
rateLimits.sync = sync;
|
|
114
115
|
}
|
|
116
|
+
if (timestamps) {
|
|
117
|
+
rateLimits.timestamps = timestamps;
|
|
118
|
+
}
|
|
115
119
|
return Object.keys(rateLimits).length > 0 ? rateLimits : {};
|
|
116
120
|
}
|
|
117
121
|
function validateRateLimitConfig(raw, name, filePath) {
|
|
@@ -131,6 +135,18 @@ function validateRateLimitConfig(raw, name, filePath) {
|
|
|
131
135
|
}
|
|
132
136
|
return Object.keys(config).length > 0 ? config : {};
|
|
133
137
|
}
|
|
138
|
+
function validateTimestampRateLimitConfig(raw, filePath) {
|
|
139
|
+
const base = validateRateLimitConfig(raw, "timestamps", filePath);
|
|
140
|
+
if (!base) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
const obj = raw;
|
|
144
|
+
const config = { ...base };
|
|
145
|
+
if (obj.dailyMax !== undefined) {
|
|
146
|
+
config.dailyMax = validatePositiveInteger(obj.dailyMax, "rateLimits.timestamps.dailyMax", filePath);
|
|
147
|
+
}
|
|
148
|
+
return config;
|
|
149
|
+
}
|
|
134
150
|
function validatePositiveInteger(raw, fieldName, filePath) {
|
|
135
151
|
if (!Number.isInteger(raw) || raw <= 0) {
|
|
136
152
|
throw new Error(`config.json at ${filePath}: "${fieldName}" must be a positive integer`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/node/server/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/node/server/config.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA2BH,wEAcC;AAED,wEAIC;AAED,gFAKC;AAKD,8CAKC;AAYD,4CAsBC;AAED,oDA2CC;AAmLD,oCASC;AAKD,kCAGC;AAED,wDAEC;AAcD,8CAaC;AAED,4CAmBC;AAMD,oDAiBC;AA5ZD,2BAMY;AACZ,+BAA+C;AAe/C,MAAM,yBAAyB,GAC7B,oEAAoE,CAAC;AAEvE,SAAgB,8BAA8B,CAAC,OAAe;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEpD,mEAAmE;IACnE,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,OAAO,MAAM,KAAK,MAAM,IAAI,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,8BAA8B,CAC5C,SAA+B;IAE/B,OAAO,SAAS,CAAC,QAAQ,KAAK,GAAG,IAAI,SAAS,CAAC,aAAa,KAAK,GAAG,CAAC;AACvE,CAAC;AAED,SAAgB,kCAAkC,CAAC,MAAoB;IACrE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,CACxE,8BAA8B,CAAC,OAAO,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,OAAe,EACf,kBAA2B;IAE3B,OAAO,kBAAkB,IAAI,IAAA,WAAI,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,gBAAgB,CAC9B,OAAe,EACf,kBAA2B;IAE3B,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAElE,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,oCAAoC,UAAU,4CAA4C,CAC3F,CAAC;QACF,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,oBAAoB,CAAC,GAAY,EAAE,QAAgB;IACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,wBAAwB,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,oCAAoC,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAA2C,EAAE,CAAC;IAEhE,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAChD,GAAG,CAAC,YAAuC,CAC5C,EAAE,CAAC;QACF,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,sCAAsC,CAC/E,CAAC;QACJ,CAAC;QAED,YAAY,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC9C,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAC3C,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,MAAM,GAAiB,UAAU,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;IAE1F,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAC9B,CAAC,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,oCAAoC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,wBAAwB,cAAc,0BAA0B,CAClJ,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,GAAY,EACZ,QAAgB;IAEhB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,kCAAkC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,gCAAgC,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE9E,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;IACrC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAC9B,GAAY,EACZ,IAAY,EACZ,QAAgB;IAEhB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,iBAAiB,IAAI,qBAAqB,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,GAAG,uBAAuB,CACvC,GAAG,CAAC,QAAQ,EACZ,cAAc,IAAI,WAAW,EAC7B,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,GAAG,uBAAuB,CAClC,GAAG,CAAC,GAAG,EACP,cAAc,IAAI,MAAM,EACxB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,gCAAgC,CACvC,GAAY,EACZ,QAAgB;IAEhB,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,MAAM,GAA6B,EAAE,GAAG,IAAI,EAAE,CAAC;IACrD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,GAAG,uBAAuB,CACvC,GAAG,CAAC,QAAQ,EACZ,gCAAgC,EAChC,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAC9B,GAAY,EACZ,SAAiB,EACjB,QAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAK,GAAc,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,MAAM,SAAS,8BAA8B,CACxE,CAAC;IACJ,CAAC;IACD,OAAO,GAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAE,QAAgB;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,8BAA8B,IAAI,mCAAmC,CAChG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,qBAAqB,MAAM,cAAc,IAAI,uBAAuB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,2BAA2B,IAAI,uBAAuB,CACjF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAY,EACZ,OAAe,EACf,KAAa,EACb,QAAgB;IAEhB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,gBAAgB,KAAK,aAAa,OAAO,qBAAqB,CACzF,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,gBAAgB,KAAK,aAAa,OAAO,2CAA2C,CAC/G,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,gBAAgB,KAAK,aAAa,OAAO,gDAAgD,CACpH,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,KAAK,GAAG,CAAC;IAC3E,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,KAAK,GAAG,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,gBAAgB,KAAK,aAAa,OAAO,wDAAwD,CAC5H,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,kBAAkB,QAAQ,6EAA6E,CACxG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,aAAa,EAAE,GAAG,CAAC,aAAa;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,UAAU,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,UAAU,SAAS,OAAO,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAEzC,IAAA,iBAAY,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,UAAkB,EAAE,MAAoB;IAClE,IAAA,kBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CACrB,0DAA0D,EAC1D,UAAU,CACX,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,UAAkB;IAClD,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,UAAU,CAAC,CAAC;IAEhC,OAAO,IAAA,gBAAW,EAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,UAAkB;IACrE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,oBAAoB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,MAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 3161 timestamp proxy.
|
|
3
|
+
*
|
|
4
|
+
* Sealing a document (see the TeamSketchbook seal feature) needs a third-party
|
|
5
|
+
* attested time: the client hashes its own signature and asks a Time-Stamping
|
|
6
|
+
* Authority to sign that hash together with the TSA's clock reading.
|
|
7
|
+
*
|
|
8
|
+
* Most public TSAs cannot be called from a browser — they are http-only or send
|
|
9
|
+
* no CORS headers — so the server offers an authenticated proxy. It forwards
|
|
10
|
+
* opaque DER bytes and never parses them; the *client* verifies the returned
|
|
11
|
+
* token (messageImprint equality and chain to a trusted root), which is what
|
|
12
|
+
* makes a hostile or buggy proxy a denial-of-service risk rather than a forgery
|
|
13
|
+
* risk.
|
|
14
|
+
*
|
|
15
|
+
* SSRF is the hazard a forwarding endpoint always carries, so target URLs come
|
|
16
|
+
* only from server-side env config. A client may name a provider `id`; it can
|
|
17
|
+
* never supply a URL.
|
|
18
|
+
*/
|
|
19
|
+
/** Content type mandated by RFC 3161 §3.4 for a request. */
|
|
20
|
+
export declare const TIMESTAMP_QUERY_CONTENT_TYPE = "application/timestamp-query";
|
|
21
|
+
/** Content type mandated by RFC 3161 §3.4 for a response. */
|
|
22
|
+
export declare const TIMESTAMP_REPLY_CONTENT_TYPE = "application/timestamp-reply";
|
|
23
|
+
/**
|
|
24
|
+
* A TimeStampReq is a hash plus a little ASN.1 framing — a few hundred bytes at
|
|
25
|
+
* most. Anything larger is either a bug or an attempt to use us as an upload
|
|
26
|
+
* relay.
|
|
27
|
+
*/
|
|
28
|
+
export declare const MAX_TIMESTAMP_REQUEST_BYTES: number;
|
|
29
|
+
/**
|
|
30
|
+
* A TimeStampResp carries the token and the TSA certificate chain. Real tokens
|
|
31
|
+
* run 2–8 KB; the cap bounds memory when an upstream misbehaves.
|
|
32
|
+
*/
|
|
33
|
+
export declare const MAX_TIMESTAMP_RESPONSE_BYTES: number;
|
|
34
|
+
/** Per-provider timeout. Failover to the next provider is preferable to waiting. */
|
|
35
|
+
export declare const DEFAULT_TIMESTAMP_TIMEOUT_MS = 10000;
|
|
36
|
+
/** A configured upstream TSA, including the URL that never leaves the server. */
|
|
37
|
+
export interface TsaProviderConfig {
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
url: string;
|
|
41
|
+
/** TSA policy OID to request, when the provider publishes one. */
|
|
42
|
+
policyOid?: string;
|
|
43
|
+
/** eIDAS-qualified (or equivalent national-scheme) trust service. */
|
|
44
|
+
qualified: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the token chains to a root that ships in common trust stores. When
|
|
47
|
+
* false the verifier must be handed the chain explicitly — the evidence
|
|
48
|
+
* bundle does that anyway, but it changes what third-party tooling can check
|
|
49
|
+
* unaided.
|
|
50
|
+
*/
|
|
51
|
+
rootInPublicTrustStores: boolean;
|
|
52
|
+
}
|
|
53
|
+
/** The provider description advertised to clients — deliberately without `url`. */
|
|
54
|
+
export type PublicTsaProvider = Omit<TsaProviderConfig, "url">;
|
|
55
|
+
/**
|
|
56
|
+
* Providers a client can name by id without the operator writing a URL.
|
|
57
|
+
*
|
|
58
|
+
* Terms of use differ and are the operator's call, which is why nothing here is
|
|
59
|
+
* enabled by default:
|
|
60
|
+
* - `aimoda` and `opentsa` state that general production use is fine;
|
|
61
|
+
* - `freetsa` is a community service with no usage restriction;
|
|
62
|
+
* - the DigiCert/Sectigo endpoints are provided for their own certificate
|
|
63
|
+
* customers' code signing, so using them as general infrastructure is not
|
|
64
|
+
* clearly permitted — they are listed for completeness, not recommended.
|
|
65
|
+
*/
|
|
66
|
+
export declare const BUILT_IN_TSA_PROVIDERS: Readonly<Record<string, TsaProviderConfig>>;
|
|
67
|
+
export interface ParseTsaProvidersOptions {
|
|
68
|
+
/** Permit http and loopback/private targets (local development, self-hosted TSA on the same box). */
|
|
69
|
+
allowInsecureUrls?: boolean;
|
|
70
|
+
/** Sink for configuration warnings; defaults to `console.warn`. */
|
|
71
|
+
warn?: (message: string) => void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parse `MINDOODB_TSA_PROVIDERS`.
|
|
75
|
+
*
|
|
76
|
+
* Comma-separated entries, each either a built-in id (`aimoda`) or a custom
|
|
77
|
+
* `id=url` pair (`inhouse=https://tsa.corp.example/tsr`). A trailing `!` on an
|
|
78
|
+
* entry marks it qualified, and `+` marks its root as publicly trusted:
|
|
79
|
+
*
|
|
80
|
+
* MINDOODB_TSA_PROVIDERS="aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+"
|
|
81
|
+
*
|
|
82
|
+
* Unset or empty disables the proxy entirely. That is the safe default: a
|
|
83
|
+
* forwarding endpoint is outbound network access the operator should opt into,
|
|
84
|
+
* and Haven can still reach the browser-callable TSA directly without it.
|
|
85
|
+
*/
|
|
86
|
+
export declare function parseTsaProviders(raw: string | undefined, options?: ParseTsaProvidersOptions): TsaProviderConfig[];
|
|
87
|
+
/** Drop the URL before a provider list is handed to a client. */
|
|
88
|
+
export declare function toPublicTsaProviders(providers: TsaProviderConfig[]): PublicTsaProvider[];
|
|
89
|
+
export declare class TimestampProxyError extends Error {
|
|
90
|
+
readonly status: number;
|
|
91
|
+
/** Per-provider failures, for logging and for a client that wants to retry elsewhere. */
|
|
92
|
+
readonly attempts: TimestampAttempt[];
|
|
93
|
+
constructor(message: string, status: number,
|
|
94
|
+
/** Per-provider failures, for logging and for a client that wants to retry elsewhere. */
|
|
95
|
+
attempts?: TimestampAttempt[]);
|
|
96
|
+
}
|
|
97
|
+
export interface TimestampAttempt {
|
|
98
|
+
providerId: string;
|
|
99
|
+
ok: boolean;
|
|
100
|
+
error?: string;
|
|
101
|
+
httpStatus?: number;
|
|
102
|
+
durationMs: number;
|
|
103
|
+
}
|
|
104
|
+
export interface TimestampProxyResult {
|
|
105
|
+
providerId: string;
|
|
106
|
+
providerName: string;
|
|
107
|
+
/** Raw DER TimeStampResp. The caller does not interpret it. */
|
|
108
|
+
response: Uint8Array;
|
|
109
|
+
attempts: TimestampAttempt[];
|
|
110
|
+
}
|
|
111
|
+
export interface RequestTimestampOptions {
|
|
112
|
+
providers: TsaProviderConfig[];
|
|
113
|
+
/** DER-encoded TimeStampReq. */
|
|
114
|
+
request: Uint8Array;
|
|
115
|
+
/** Try this provider first; others remain as failover. */
|
|
116
|
+
preferredProviderId?: string;
|
|
117
|
+
timeoutMs?: number;
|
|
118
|
+
maxResponseBytes?: number;
|
|
119
|
+
fetchImpl?: typeof fetch;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* POST the request to each provider in turn, returning the first DER answer.
|
|
123
|
+
*
|
|
124
|
+
* Failover is per-provider and the reason for each failure is preserved: an
|
|
125
|
+
* operator debugging "sealing stopped working" needs to see that provider A
|
|
126
|
+
* timed out and provider B answered 403, not a single opaque 502.
|
|
127
|
+
*/
|
|
128
|
+
export declare function requestTimestampToken(options: RequestTimestampOptions): Promise<TimestampProxyResult>;
|
|
129
|
+
//# sourceMappingURL=timestampProxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestampProxy.d.ts","sourceRoot":"","sources":["../../../src/node/server/timestampProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,4DAA4D;AAC5D,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAC1E,6DAA6D;AAC7D,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,QAAW,CAAC;AACpD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAa,CAAC;AACvD,oFAAoF;AACpF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAE/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CA2C7E,CAAC;AAKH,MAAM,WAAW,wBAAwB;IACvC,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,EAAE,CA8ErB;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAExF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAG1C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE;gBAHrC,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM;IACvB,yFAAyF;IAChF,QAAQ,GAAE,gBAAgB,EAAO;CAK7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,gCAAgC;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA4ED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CAgG/B"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RFC 3161 timestamp proxy.
|
|
4
|
+
*
|
|
5
|
+
* Sealing a document (see the TeamSketchbook seal feature) needs a third-party
|
|
6
|
+
* attested time: the client hashes its own signature and asks a Time-Stamping
|
|
7
|
+
* Authority to sign that hash together with the TSA's clock reading.
|
|
8
|
+
*
|
|
9
|
+
* Most public TSAs cannot be called from a browser — they are http-only or send
|
|
10
|
+
* no CORS headers — so the server offers an authenticated proxy. It forwards
|
|
11
|
+
* opaque DER bytes and never parses them; the *client* verifies the returned
|
|
12
|
+
* token (messageImprint equality and chain to a trusted root), which is what
|
|
13
|
+
* makes a hostile or buggy proxy a denial-of-service risk rather than a forgery
|
|
14
|
+
* risk.
|
|
15
|
+
*
|
|
16
|
+
* SSRF is the hazard a forwarding endpoint always carries, so target URLs come
|
|
17
|
+
* only from server-side env config. A client may name a provider `id`; it can
|
|
18
|
+
* never supply a URL.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.TimestampProxyError = exports.BUILT_IN_TSA_PROVIDERS = exports.DEFAULT_TIMESTAMP_TIMEOUT_MS = exports.MAX_TIMESTAMP_RESPONSE_BYTES = exports.MAX_TIMESTAMP_REQUEST_BYTES = exports.TIMESTAMP_REPLY_CONTENT_TYPE = exports.TIMESTAMP_QUERY_CONTENT_TYPE = void 0;
|
|
22
|
+
exports.parseTsaProviders = parseTsaProviders;
|
|
23
|
+
exports.toPublicTsaProviders = toPublicTsaProviders;
|
|
24
|
+
exports.requestTimestampToken = requestTimestampToken;
|
|
25
|
+
const urlSafety_js_1 = require("../../core/utils/urlSafety.js");
|
|
26
|
+
/** Content type mandated by RFC 3161 §3.4 for a request. */
|
|
27
|
+
exports.TIMESTAMP_QUERY_CONTENT_TYPE = "application/timestamp-query";
|
|
28
|
+
/** Content type mandated by RFC 3161 §3.4 for a response. */
|
|
29
|
+
exports.TIMESTAMP_REPLY_CONTENT_TYPE = "application/timestamp-reply";
|
|
30
|
+
/**
|
|
31
|
+
* A TimeStampReq is a hash plus a little ASN.1 framing — a few hundred bytes at
|
|
32
|
+
* most. Anything larger is either a bug or an attempt to use us as an upload
|
|
33
|
+
* relay.
|
|
34
|
+
*/
|
|
35
|
+
exports.MAX_TIMESTAMP_REQUEST_BYTES = 8 * 1024;
|
|
36
|
+
/**
|
|
37
|
+
* A TimeStampResp carries the token and the TSA certificate chain. Real tokens
|
|
38
|
+
* run 2–8 KB; the cap bounds memory when an upstream misbehaves.
|
|
39
|
+
*/
|
|
40
|
+
exports.MAX_TIMESTAMP_RESPONSE_BYTES = 128 * 1024;
|
|
41
|
+
/** Per-provider timeout. Failover to the next provider is preferable to waiting. */
|
|
42
|
+
exports.DEFAULT_TIMESTAMP_TIMEOUT_MS = 10000;
|
|
43
|
+
/**
|
|
44
|
+
* Providers a client can name by id without the operator writing a URL.
|
|
45
|
+
*
|
|
46
|
+
* Terms of use differ and are the operator's call, which is why nothing here is
|
|
47
|
+
* enabled by default:
|
|
48
|
+
* - `aimoda` and `opentsa` state that general production use is fine;
|
|
49
|
+
* - `freetsa` is a community service with no usage restriction;
|
|
50
|
+
* - the DigiCert/Sectigo endpoints are provided for their own certificate
|
|
51
|
+
* customers' code signing, so using them as general infrastructure is not
|
|
52
|
+
* clearly permitted — they are listed for completeness, not recommended.
|
|
53
|
+
*/
|
|
54
|
+
exports.BUILT_IN_TSA_PROVIDERS = Object.freeze({
|
|
55
|
+
aimoda: {
|
|
56
|
+
id: "aimoda",
|
|
57
|
+
name: "ai.moda RFC 3161 proxy",
|
|
58
|
+
url: "https://rfc3161.ai.moda",
|
|
59
|
+
qualified: false,
|
|
60
|
+
rootInPublicTrustStores: true,
|
|
61
|
+
},
|
|
62
|
+
opentsa: {
|
|
63
|
+
id: "opentsa",
|
|
64
|
+
name: "Open TSA (open-tsa.eu)",
|
|
65
|
+
url: "https://tsr.open-tsa.eu",
|
|
66
|
+
qualified: false,
|
|
67
|
+
rootInPublicTrustStores: false,
|
|
68
|
+
},
|
|
69
|
+
freetsa: {
|
|
70
|
+
id: "freetsa",
|
|
71
|
+
name: "FreeTSA",
|
|
72
|
+
url: "https://freetsa.org/tsr",
|
|
73
|
+
qualified: false,
|
|
74
|
+
rootInPublicTrustStores: false,
|
|
75
|
+
},
|
|
76
|
+
digicert: {
|
|
77
|
+
id: "digicert",
|
|
78
|
+
name: "DigiCert",
|
|
79
|
+
url: "http://timestamp.digicert.com",
|
|
80
|
+
qualified: false,
|
|
81
|
+
rootInPublicTrustStores: true,
|
|
82
|
+
},
|
|
83
|
+
sectigo: {
|
|
84
|
+
id: "sectigo",
|
|
85
|
+
name: "Sectigo",
|
|
86
|
+
url: "http://timestamp.sectigo.com",
|
|
87
|
+
qualified: false,
|
|
88
|
+
rootInPublicTrustStores: true,
|
|
89
|
+
},
|
|
90
|
+
"sectigo-qualified": {
|
|
91
|
+
id: "sectigo-qualified",
|
|
92
|
+
name: "Sectigo Qualified",
|
|
93
|
+
url: "http://timestamp.sectigo.com/qualified",
|
|
94
|
+
qualified: true,
|
|
95
|
+
rootInPublicTrustStores: true,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
/** Provider ids are used in URLs, filenames and manifests — keep them boring. */
|
|
99
|
+
const PROVIDER_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,31}$/;
|
|
100
|
+
/**
|
|
101
|
+
* Parse `MINDOODB_TSA_PROVIDERS`.
|
|
102
|
+
*
|
|
103
|
+
* Comma-separated entries, each either a built-in id (`aimoda`) or a custom
|
|
104
|
+
* `id=url` pair (`inhouse=https://tsa.corp.example/tsr`). A trailing `!` on an
|
|
105
|
+
* entry marks it qualified, and `+` marks its root as publicly trusted:
|
|
106
|
+
*
|
|
107
|
+
* MINDOODB_TSA_PROVIDERS="aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+"
|
|
108
|
+
*
|
|
109
|
+
* Unset or empty disables the proxy entirely. That is the safe default: a
|
|
110
|
+
* forwarding endpoint is outbound network access the operator should opt into,
|
|
111
|
+
* and Haven can still reach the browser-callable TSA directly without it.
|
|
112
|
+
*/
|
|
113
|
+
function parseTsaProviders(raw, options = {}) {
|
|
114
|
+
const warn = options.warn ?? ((message) => console.warn(message));
|
|
115
|
+
const allowInsecure = options.allowInsecureUrls ?? false;
|
|
116
|
+
const entries = (raw ?? "")
|
|
117
|
+
.split(",")
|
|
118
|
+
.map((entry) => entry.trim())
|
|
119
|
+
.filter((entry) => entry.length > 0);
|
|
120
|
+
const providers = [];
|
|
121
|
+
const seen = new Set();
|
|
122
|
+
for (const entry of entries) {
|
|
123
|
+
let spec = entry;
|
|
124
|
+
let qualified = false;
|
|
125
|
+
let publiclyTrusted;
|
|
126
|
+
// Flags are suffixes so a URL containing them is still parsed correctly.
|
|
127
|
+
while (spec.endsWith("!") || spec.endsWith("+")) {
|
|
128
|
+
if (spec.endsWith("!"))
|
|
129
|
+
qualified = true;
|
|
130
|
+
else
|
|
131
|
+
publiclyTrusted = true;
|
|
132
|
+
spec = spec.slice(0, -1);
|
|
133
|
+
}
|
|
134
|
+
const eq = spec.indexOf("=");
|
|
135
|
+
const id = (eq === -1 ? spec : spec.slice(0, eq)).trim().toLowerCase();
|
|
136
|
+
const url = eq === -1 ? undefined : spec.slice(eq + 1).trim();
|
|
137
|
+
if (!PROVIDER_ID_PATTERN.test(id)) {
|
|
138
|
+
warn(`[timestampProxy] Ignoring TSA provider "${entry}": invalid id "${id}"`);
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (seen.has(id)) {
|
|
142
|
+
warn(`[timestampProxy] Ignoring duplicate TSA provider id "${id}"`);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
let resolved;
|
|
146
|
+
if (url === undefined) {
|
|
147
|
+
const builtIn = exports.BUILT_IN_TSA_PROVIDERS[id];
|
|
148
|
+
if (!builtIn) {
|
|
149
|
+
warn(`[timestampProxy] Ignoring TSA provider "${id}": not a built-in id and no URL given (use "${id}=https://...")`);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
resolved = { ...builtIn };
|
|
153
|
+
if (qualified)
|
|
154
|
+
resolved.qualified = true;
|
|
155
|
+
if (publiclyTrusted !== undefined)
|
|
156
|
+
resolved.rootInPublicTrustStores = publiclyTrusted;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
resolved = {
|
|
160
|
+
id,
|
|
161
|
+
name: id,
|
|
162
|
+
url,
|
|
163
|
+
qualified,
|
|
164
|
+
rootInPublicTrustStores: publiclyTrusted ?? false,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
// http is deliberately allowed: every eIDAS-qualified TSA we can use is
|
|
169
|
+
// http-only. The token is signed, so transport confidentiality only hides
|
|
170
|
+
// an opaque hash. Internal hosts stay blocked — that is the SSRF guard.
|
|
171
|
+
(0, urlSafety_js_1.assertSafeSyncUrl)(resolved.url, {
|
|
172
|
+
requireHttps: false,
|
|
173
|
+
allowPrivate: allowInsecure,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
const reason = error instanceof urlSafety_js_1.UnsafeUrlError ? error.message : String(error);
|
|
178
|
+
warn(`[timestampProxy] Ignoring TSA provider "${id}": ${reason}`);
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
seen.add(id);
|
|
182
|
+
providers.push(resolved);
|
|
183
|
+
}
|
|
184
|
+
return providers;
|
|
185
|
+
}
|
|
186
|
+
/** Drop the URL before a provider list is handed to a client. */
|
|
187
|
+
function toPublicTsaProviders(providers) {
|
|
188
|
+
return providers.map(({ url: _url, ...rest }) => ({ ...rest }));
|
|
189
|
+
}
|
|
190
|
+
class TimestampProxyError extends Error {
|
|
191
|
+
constructor(message, status,
|
|
192
|
+
/** Per-provider failures, for logging and for a client that wants to retry elsewhere. */
|
|
193
|
+
attempts = []) {
|
|
194
|
+
super(message);
|
|
195
|
+
this.status = status;
|
|
196
|
+
this.attempts = attempts;
|
|
197
|
+
this.name = "TimestampProxyError";
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
exports.TimestampProxyError = TimestampProxyError;
|
|
201
|
+
/**
|
|
202
|
+
* Read a response body with a hard byte cap.
|
|
203
|
+
*
|
|
204
|
+
* `response.arrayBuffer()` would buffer whatever the upstream sends; a TSA that
|
|
205
|
+
* answers with a gigabyte (hostile, or simply broken) must not be able to take
|
|
206
|
+
* the process down with it.
|
|
207
|
+
*/
|
|
208
|
+
async function readCappedBody(response, maxBytes) {
|
|
209
|
+
const declared = response.headers.get("content-length");
|
|
210
|
+
if (declared) {
|
|
211
|
+
const declaredBytes = Number(declared);
|
|
212
|
+
if (Number.isFinite(declaredBytes) && declaredBytes > maxBytes) {
|
|
213
|
+
throw new Error(`response too large (${declaredBytes} bytes, max ${maxBytes})`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const body = response.body;
|
|
217
|
+
if (!body) {
|
|
218
|
+
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
219
|
+
if (buffer.byteLength > maxBytes) {
|
|
220
|
+
throw new Error(`response too large (${buffer.byteLength} bytes, max ${maxBytes})`);
|
|
221
|
+
}
|
|
222
|
+
return buffer;
|
|
223
|
+
}
|
|
224
|
+
const reader = body.getReader();
|
|
225
|
+
const chunks = [];
|
|
226
|
+
let total = 0;
|
|
227
|
+
try {
|
|
228
|
+
for (;;) {
|
|
229
|
+
const { done, value } = await reader.read();
|
|
230
|
+
if (done)
|
|
231
|
+
break;
|
|
232
|
+
if (!value)
|
|
233
|
+
continue;
|
|
234
|
+
total += value.byteLength;
|
|
235
|
+
if (total > maxBytes) {
|
|
236
|
+
throw new Error(`response too large (over ${maxBytes} bytes)`);
|
|
237
|
+
}
|
|
238
|
+
chunks.push(value);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
reader.releaseLock();
|
|
243
|
+
// Abandoning a partially-read body leaks the socket otherwise.
|
|
244
|
+
void body.cancel().catch(() => undefined);
|
|
245
|
+
}
|
|
246
|
+
const out = new Uint8Array(total);
|
|
247
|
+
let offset = 0;
|
|
248
|
+
for (const chunk of chunks) {
|
|
249
|
+
out.set(chunk, offset);
|
|
250
|
+
offset += chunk.byteLength;
|
|
251
|
+
}
|
|
252
|
+
return out;
|
|
253
|
+
}
|
|
254
|
+
/** Reject an answer that is obviously not DER before it reaches the client. */
|
|
255
|
+
function assertLooksLikeTimestampResponse(bytes, contentType) {
|
|
256
|
+
if (bytes.byteLength < 2) {
|
|
257
|
+
throw new Error("empty response");
|
|
258
|
+
}
|
|
259
|
+
// Every TimeStampResp is a DER SEQUENCE.
|
|
260
|
+
if (bytes[0] !== 0x30) {
|
|
261
|
+
const hint = contentType ? ` (content-type "${contentType}")` : "";
|
|
262
|
+
throw new Error(`response is not DER${hint}`);
|
|
263
|
+
}
|
|
264
|
+
if (contentType) {
|
|
265
|
+
const normalized = contentType.split(";")[0].trim().toLowerCase();
|
|
266
|
+
// Some deployments answer `application/octet-stream`; only reject types that
|
|
267
|
+
// are certainly wrong, such as an HTML error page from a captive proxy.
|
|
268
|
+
if (normalized.startsWith("text/") || normalized === "application/json") {
|
|
269
|
+
throw new Error(`unexpected content-type "${normalized}"`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* POST the request to each provider in turn, returning the first DER answer.
|
|
275
|
+
*
|
|
276
|
+
* Failover is per-provider and the reason for each failure is preserved: an
|
|
277
|
+
* operator debugging "sealing stopped working" needs to see that provider A
|
|
278
|
+
* timed out and provider B answered 403, not a single opaque 502.
|
|
279
|
+
*/
|
|
280
|
+
async function requestTimestampToken(options) {
|
|
281
|
+
const { providers, request, preferredProviderId, timeoutMs = exports.DEFAULT_TIMESTAMP_TIMEOUT_MS, maxResponseBytes = exports.MAX_TIMESTAMP_RESPONSE_BYTES, fetchImpl = fetch, } = options;
|
|
282
|
+
if (providers.length === 0) {
|
|
283
|
+
throw new TimestampProxyError("Timestamping is not enabled on this server", 503);
|
|
284
|
+
}
|
|
285
|
+
if (request.byteLength === 0) {
|
|
286
|
+
throw new TimestampProxyError("Empty timestamp request", 400);
|
|
287
|
+
}
|
|
288
|
+
if (request.byteLength > exports.MAX_TIMESTAMP_REQUEST_BYTES) {
|
|
289
|
+
throw new TimestampProxyError(`Timestamp request too large (${request.byteLength} bytes, max ${exports.MAX_TIMESTAMP_REQUEST_BYTES})`, 413);
|
|
290
|
+
}
|
|
291
|
+
if (request[0] !== 0x30) {
|
|
292
|
+
throw new TimestampProxyError("Timestamp request is not DER-encoded", 400);
|
|
293
|
+
}
|
|
294
|
+
let ordered = providers;
|
|
295
|
+
if (preferredProviderId) {
|
|
296
|
+
const preferred = providers.find((provider) => provider.id === preferredProviderId);
|
|
297
|
+
if (!preferred) {
|
|
298
|
+
throw new TimestampProxyError(`Unknown timestamp provider "${preferredProviderId}"`, 400);
|
|
299
|
+
}
|
|
300
|
+
ordered = [preferred, ...providers.filter((provider) => provider.id !== preferred.id)];
|
|
301
|
+
}
|
|
302
|
+
const attempts = [];
|
|
303
|
+
for (const provider of ordered) {
|
|
304
|
+
const startedAt = Date.now();
|
|
305
|
+
const controller = new AbortController();
|
|
306
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
307
|
+
try {
|
|
308
|
+
const response = await fetchImpl(provider.url, {
|
|
309
|
+
method: "POST",
|
|
310
|
+
headers: {
|
|
311
|
+
"content-type": exports.TIMESTAMP_QUERY_CONTENT_TYPE,
|
|
312
|
+
accept: exports.TIMESTAMP_REPLY_CONTENT_TYPE,
|
|
313
|
+
},
|
|
314
|
+
// A copy, because `fetch` may retain the buffer past this call.
|
|
315
|
+
body: request.slice().buffer,
|
|
316
|
+
// Following a redirect would let an upstream re-point us at an internal
|
|
317
|
+
// host, defeating the URL allowlist.
|
|
318
|
+
redirect: "error",
|
|
319
|
+
signal: controller.signal,
|
|
320
|
+
});
|
|
321
|
+
if (!response.ok) {
|
|
322
|
+
attempts.push({
|
|
323
|
+
providerId: provider.id,
|
|
324
|
+
ok: false,
|
|
325
|
+
httpStatus: response.status,
|
|
326
|
+
error: `HTTP ${response.status}`,
|
|
327
|
+
durationMs: Date.now() - startedAt,
|
|
328
|
+
});
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
const bytes = await readCappedBody(response, maxResponseBytes);
|
|
332
|
+
assertLooksLikeTimestampResponse(bytes, response.headers.get("content-type"));
|
|
333
|
+
attempts.push({
|
|
334
|
+
providerId: provider.id,
|
|
335
|
+
ok: true,
|
|
336
|
+
httpStatus: response.status,
|
|
337
|
+
durationMs: Date.now() - startedAt,
|
|
338
|
+
});
|
|
339
|
+
return {
|
|
340
|
+
providerId: provider.id,
|
|
341
|
+
providerName: provider.name,
|
|
342
|
+
response: bytes,
|
|
343
|
+
attempts,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
const aborted = error instanceof Error && error.name === "AbortError";
|
|
348
|
+
attempts.push({
|
|
349
|
+
providerId: provider.id,
|
|
350
|
+
ok: false,
|
|
351
|
+
error: aborted ? `timed out after ${timeoutMs}ms` : String(error instanceof Error ? error.message : error),
|
|
352
|
+
durationMs: Date.now() - startedAt,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
finally {
|
|
356
|
+
clearTimeout(timer);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
throw new TimestampProxyError("No timestamp provider could be reached", 502, attempts);
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=timestampProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestampProxy.js","sourceRoot":"","sources":["../../../src/node/server/timestampProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -151,9 +151,17 @@ export interface RateLimitConfig {
|
|
|
151
151
|
windowMs?: number;
|
|
152
152
|
max?: number;
|
|
153
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Timestamp proxying additionally carries a daily cap, because the constrained
|
|
156
|
+
* resource is a third party's allowance rather than this server's CPU.
|
|
157
|
+
*/
|
|
158
|
+
export interface TimestampRateLimitConfig extends RateLimitConfig {
|
|
159
|
+
dailyMax?: number;
|
|
160
|
+
}
|
|
154
161
|
export interface ServerRateLimitsConfig {
|
|
155
162
|
auth?: RateLimitConfig;
|
|
156
163
|
sync?: RateLimitConfig;
|
|
164
|
+
timestamps?: TimestampRateLimitConfig;
|
|
157
165
|
}
|
|
158
166
|
/**
|
|
159
167
|
* Server-level configuration loaded from config.json.
|
|
@@ -198,5 +206,17 @@ export declare const ENV_VARS: {
|
|
|
198
206
|
* non-positive values fall back to {@link DEFAULT_MAX_SYNC_SERVER_DATABASES}.
|
|
199
207
|
*/
|
|
200
208
|
readonly MAX_SYNC_SERVER_DATABASES: "MINDOODB_MAX_SYNC_SERVER_DATABASES";
|
|
209
|
+
/**
|
|
210
|
+
* Comma-separated RFC 3161 Time-Stamping Authorities the proxy at
|
|
211
|
+
* `POST /:tenantId/timestamps/rfc3161` may contact. Each entry is a built-in
|
|
212
|
+
* id (`aimoda`, `opentsa`, `freetsa`, ...) or a custom `id=url` pair; suffix
|
|
213
|
+
* `!` marks the provider qualified and `+` marks its root publicly trusted.
|
|
214
|
+
*
|
|
215
|
+
* Example: `aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+`
|
|
216
|
+
*
|
|
217
|
+
* Unset disables the proxy. Clients name a provider by id only — a URL from a
|
|
218
|
+
* client would turn the endpoint into an SSRF gadget.
|
|
219
|
+
*/
|
|
220
|
+
readonly TSA_PROVIDERS: "MINDOODB_TSA_PROVIDERS";
|
|
201
221
|
};
|
|
202
222
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/node/server/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/node/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;CAAG;AAE5D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uEAAuE;IACvE,wBAAwB,EAAE,MAAM,CAAC;IAEjC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAErD,oFAAoF;IACpF,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wCAAwC;IACxC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,yGAAyG;IACzG,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,YAAY,CAAC;CACtB;AAMD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,UAAU,CAAC,EAAE,wBAAwB,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,8EAA8E;;IAE9E;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;IAEH;;;;;;;;;;OAUG;;CAEK,CAAC"}
|