@kensio/yulin 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/tsconfig.tsbuildinfo +1 -1
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.d.ts +1 -1
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.d.ts.map +1 -1
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.js +2 -2
- package/dist/service/cloudfront/cff/adapter/sim-cff-event-adapter.js.map +1 -1
- package/dist/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.d.ts +11 -0
- package/dist/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.d.ts.map +1 -1
- package/dist/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.js +17 -0
- package/dist/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.js.map +1 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js +1 -1
- package/dist/service/cloudfront/cff/sim-cloudfront-function.js.map +1 -1
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.js +2 -0
- package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.js.map +1 -1
- package/dist/service/route53/record/sim-route53-record.d.ts +1 -5
- package/dist/service/route53/record/sim-route53-record.d.ts.map +1 -1
- package/dist/service/route53/resolve/sim-r53-service-target-resolver.d.ts +47 -0
- package/dist/service/route53/resolve/sim-r53-service-target-resolver.d.ts.map +1 -0
- package/dist/service/route53/resolve/sim-r53-service-target-resolver.js +94 -0
- package/dist/service/route53/resolve/sim-r53-service-target-resolver.js.map +1 -0
- package/dist/service/route53/resolve/sim-route53-resolver.d.ts +18 -3
- package/dist/service/route53/resolve/sim-route53-resolver.d.ts.map +1 -1
- package/dist/service/route53/resolve/sim-route53-resolver.js +34 -51
- package/dist/service/route53/resolve/sim-route53-resolver.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -20,7 +20,7 @@ export declare class SimCffEventAdapter {
|
|
|
20
20
|
/**
|
|
21
21
|
* Adapt a viewer-response CFF result into a Response.
|
|
22
22
|
*/
|
|
23
|
-
fromViewerResponseResult(result: CloudFrontFunction.Response): Response;
|
|
23
|
+
fromViewerResponseResult(result: CloudFrontFunction.Response, originalResponse: Response): Response;
|
|
24
24
|
private isCffResponse;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=sim-cff-event-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cff-event-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-event-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAG1F;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;IAE7E;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAAC,kBAAkB;IAazE;;OAEG;IACH,qBAAqB,CACnB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,GACZ,kBAAkB,CAAC,mBAAmB;IAczC;;OAEG;IACH,uBAAuB,CACrB,MAAM,EAAE,kBAAkB,CAAC,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAChE,WAAW,EAAE,OAAO,GACnB,OAAO,GAAG,QAAQ;IAQrB;;OAEG;IACH,wBAAwB,
|
|
1
|
+
{"version":3,"file":"sim-cff-event-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-event-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAG1F;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsC;IAE7E;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAAC,kBAAkB;IAazE;;OAEG;IACH,qBAAqB,CACnB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,GACZ,kBAAkB,CAAC,mBAAmB;IAczC;;OAEG;IACH,uBAAuB,CACrB,MAAM,EAAE,kBAAkB,CAAC,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAChE,WAAW,EAAE,OAAO,GACnB,OAAO,GAAG,QAAQ;IAQrB;;OAEG;IACH,wBAAwB,CACtB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EACnC,gBAAgB,EAAE,QAAQ,GACzB,QAAQ;IAOX,OAAO,CAAC,aAAa;CAKtB"}
|
|
@@ -49,8 +49,8 @@ export class SimCffEventAdapter {
|
|
|
49
49
|
/**
|
|
50
50
|
* Adapt a viewer-response CFF result into a Response.
|
|
51
51
|
*/
|
|
52
|
-
fromViewerResponseResult(result) {
|
|
53
|
-
return this.requestResponseAdapter.
|
|
52
|
+
fromViewerResponseResult(result, originalResponse) {
|
|
53
|
+
return this.requestResponseAdapter.fromCffViewerResponse(result, originalResponse);
|
|
54
54
|
}
|
|
55
55
|
isCffResponse(result) {
|
|
56
56
|
return "statusCode" in result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cff-event-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-event-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,sBAAsB,GAAG,IAAI,4BAA4B,EAAE,CAAC;IAE7E;;OAEG;IACH,oBAAoB,CAAC,GAAY;QAC/B,OAAO;YACL,OAAO,EAAE;gBACP,SAAS,EAAE,gBAAgB;gBAC3B,SAAS,EAAE,UAAU,EAAE;aACxB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW;aAChB;YACD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC;SACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,GAAY,EACZ,GAAa;QAEb,OAAO;YACL,OAAO,EAAE;gBACP,SAAS,EAAE,iBAAiB;gBAC5B,SAAS,EAAE,UAAU,EAAE;aACxB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW;aAChB;YACD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC;YACtD,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB,CACrB,MAAgE,EAChE,WAAoB;QAEpB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,wBAAwB,
|
|
1
|
+
{"version":3,"file":"sim-cff-event-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-event-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IACZ,sBAAsB,GAAG,IAAI,4BAA4B,EAAE,CAAC;IAE7E;;OAEG;IACH,oBAAoB,CAAC,GAAY;QAC/B,OAAO;YACL,OAAO,EAAE;gBACP,SAAS,EAAE,gBAAgB;gBAC3B,SAAS,EAAE,UAAU,EAAE;aACxB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW;aAChB;YACD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC;SACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,GAAY,EACZ,GAAa;QAEb,OAAO;YACL,OAAO,EAAE;gBACP,SAAS,EAAE,iBAAiB;gBAC5B,SAAS,EAAE,UAAU,EAAE;aACxB;YACD,MAAM,EAAE;gBACN,EAAE,EAAE,WAAW;aAChB;YACD,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC;YACtD,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC;SACzD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB,CACrB,MAAgE,EAChE,WAAoB;QAEpB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,wBAAwB,CACtB,MAAmC,EACnC,gBAA0B;QAE1B,OAAO,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CACtD,MAAM,EACN,gBAAgB,CACjB,CAAC;IACJ,CAAC;IAEO,aAAa,CACnB,MAAgE;QAEhE,OAAO,YAAY,IAAI,MAAM,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -21,6 +21,17 @@ export declare class SimCffRequestResponseAdapter {
|
|
|
21
21
|
* Convert a CFF Response to a Node fetch Response.
|
|
22
22
|
*/
|
|
23
23
|
fromCffResponse(cffRes: CloudFrontFunction.Response): Response;
|
|
24
|
+
/**
|
|
25
|
+
* Convert a viewer-response CFF result to a Node fetch Response while preserving
|
|
26
|
+
* the original response body.
|
|
27
|
+
*
|
|
28
|
+
* CloudFront Functions viewer-response events expose response metadata, but not
|
|
29
|
+
* the body. A handler that returns event.response therefore normally returns no
|
|
30
|
+
* body field. The simulator must not interpret that as "send an empty body",
|
|
31
|
+
* because the returned headers may still include the origin response
|
|
32
|
+
* content-length.
|
|
33
|
+
*/
|
|
34
|
+
fromCffViewerResponse(cffRes: CloudFrontFunction.Response, originalResponse: Response): Response;
|
|
24
35
|
private cffResponseBody;
|
|
25
36
|
}
|
|
26
37
|
//# sourceMappingURL=sim-cff-request-response-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cff-request-response-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAG1F;;;GAGG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAAC,OAAO;IAYtD;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,kBAAkB,CAAC,QAAQ;IAQzD;;OAEG;IACH,cAAc,CACZ,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAClC,WAAW,EAAE,OAAO,GACnB,OAAO;IAmBV;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,GAAG,QAAQ;IAQ9D,OAAO,CAAC,eAAe;CAaxB"}
|
|
1
|
+
{"version":3,"file":"sim-cff-request-response-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAG1F;;;GAGG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAAC,OAAO;IAYtD;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,kBAAkB,CAAC,QAAQ;IAQzD;;OAEG;IACH,cAAc,CACZ,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAClC,WAAW,EAAE,OAAO,GACnB,OAAO;IAmBV;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,GAAG,QAAQ;IAQ9D;;;;;;;;;OASG;IACH,qBAAqB,CACnB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EACnC,gBAAgB,EAAE,QAAQ,GACzB,QAAQ;IAQX,OAAO,CAAC,eAAe;CAaxB"}
|
|
@@ -55,6 +55,23 @@ export class SimCffRequestResponseAdapter {
|
|
|
55
55
|
headers: this.metadataAdapter.fromCffHeaders(cffRes.headers, {}),
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Convert a viewer-response CFF result to a Node fetch Response while preserving
|
|
60
|
+
* the original response body.
|
|
61
|
+
*
|
|
62
|
+
* CloudFront Functions viewer-response events expose response metadata, but not
|
|
63
|
+
* the body. A handler that returns event.response therefore normally returns no
|
|
64
|
+
* body field. The simulator must not interpret that as "send an empty body",
|
|
65
|
+
* because the returned headers may still include the origin response
|
|
66
|
+
* content-length.
|
|
67
|
+
*/
|
|
68
|
+
fromCffViewerResponse(cffRes, originalResponse) {
|
|
69
|
+
return new Response(originalResponse.body, {
|
|
70
|
+
status: cffRes.statusCode,
|
|
71
|
+
statusText: cffRes.statusDescription ?? "",
|
|
72
|
+
headers: this.metadataAdapter.fromCffHeaders(cffRes.headers, {}),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
58
75
|
cffResponseBody(cffRes) {
|
|
59
76
|
if (cffRes.body === undefined) {
|
|
60
77
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cff-request-response-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF;;;GAGG;AACH,MAAM,OAAO,4BAA4B;IACtB,eAAe,GAAG,IAAI,4BAA4B,EAAE,CAAC;IAEtE;;OAEG;IACH,YAAY,CAAC,GAAY;QACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE7B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,QAAQ;YACjB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;YACvD,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC;YACpE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;SACxD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAa;QACzB,OAAO;YACL,UAAU,EAAE,GAAG,CAAC,MAAM;YACtB,iBAAiB,EAAE,GAAG,CAAC,UAAU;YACjC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;SACxD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc,CACZ,MAAkC,EAClC,WAAoB;QAEpB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;QAC1B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAExD,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAC1C,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CACf;YACD,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAClD,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAmC;QACjD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAChD,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,UAAU,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;YAC1C,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CACrB,MAAmC;QAEnC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"sim-cff-request-response-adapter.js","sourceRoot":"","sources":["../../../../../src/service/cloudfront/cff/adapter/sim-cff-request-response-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ export class SimCloudFrontFunction {
|
|
|
60
60
|
const handlerFunction = this
|
|
61
61
|
.handlerFunction;
|
|
62
62
|
const cffResult = handlerFunction(cffEvent);
|
|
63
|
-
return this.eventAdapter.fromViewerResponseResult(cffResult);
|
|
63
|
+
return this.eventAdapter.fromViewerResponseResult(cffResult, res);
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=sim-cloudfront-function.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-cloudfront-function.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/cff/sim-cloudfront-function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAGxE,OAAO,EACL,mBAAmB,GAEpB,MAAM,8BAA8B,CAAC;AAkBtC,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAC3D,KAA+B,EAC/B,EAAE;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAClD,OAAQ,KAAgD,CAAC,QAAQ,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChB,IAAI,CAA4B;IAChD,OAAO,CAA2B;IAClB,SAAS,CAAkB;IAE1B,eAAe,CAA6B;IAC5C,YAAY,CAAqB;IAElD,YAAY,KAAiC;QAC3C,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,aAAa,EACtB,SAAS,GAAG,mBAAmB,EAAE,EACjC,eAAe,GAAG,iBAAiB,EACnC,YAAY,GAAG,IAAI,kBAAkB,EAAE,GACxC,GAAG,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,GAAG,IAAiC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,uBAAuB,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;QAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,GAAY;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE7D,MAAM,eAAe,GAAG,IAAI;aACzB,eAA0D,CAAC;QAC9D,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,GAAY,EAAE,GAAa;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEnE,MAAM,eAAe,GAAG,IAAI;aACzB,eAA2D,CAAC;QAC/D,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sim-cloudfront-function.js","sourceRoot":"","sources":["../../../../src/service/cloudfront/cff/sim-cloudfront-function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAGxE,OAAO,EACL,mBAAmB,GAEpB,MAAM,8BAA8B,CAAC;AAkBtC,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAC3D,KAA+B,EAC/B,EAAE;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAClD,OAAQ,KAAgD,CAAC,QAAQ,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAChB,IAAI,CAA4B;IAChD,OAAO,CAA2B;IAClB,SAAS,CAAkB;IAE1B,eAAe,CAA6B;IAC5C,YAAY,CAAqB;IAElD,YAAY,KAAiC;QAC3C,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,aAAa,EACtB,SAAS,GAAG,mBAAmB,EAAE,EACjC,eAAe,GAAG,iBAAiB,EACnC,YAAY,GAAG,IAAI,kBAAkB,EAAE,GACxC,GAAG,KAAK,CAAC;QACV,IAAI,CAAC,IAAI,GAAG,IAAiC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,uBAAuB,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,IAAI,EAAE,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;QAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,GAAY;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE7D,MAAM,eAAe,GAAG,IAAI;aACzB,eAA0D,CAAC;QAC9D,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,GAAY,EAAE,GAAa;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEnE,MAAM,eAAe,GAAG,IAAI;aACzB,eAA2D,CAAC;QAC/D,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;CACF"}
|
package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.js
CHANGED
|
@@ -52,6 +52,7 @@ function toSimRoute53Record(resourceRecordSet) {
|
|
|
52
52
|
if (!isSimRoute53RecordType(type)) {
|
|
53
53
|
throw new Error(`Unsupported ChangeResourceRecordSetsCommand.ResourceRecordSet.Type ${type}`);
|
|
54
54
|
}
|
|
55
|
+
const alias = resourceRecordSet.AliasTarget !== undefined;
|
|
55
56
|
const values = resourceRecordSet.AliasTarget === undefined
|
|
56
57
|
? resourceRecordSet.ResourceRecords?.map((record) => {
|
|
57
58
|
assertDefined(record.Value, "ChangeResourceRecordSetsCommand.ResourceRecordSet.ResourceRecords.Value");
|
|
@@ -68,6 +69,7 @@ function toSimRoute53Record(resourceRecordSet) {
|
|
|
68
69
|
type,
|
|
69
70
|
values,
|
|
70
71
|
ttl: resourceRecordSet.TTL,
|
|
72
|
+
alias,
|
|
71
73
|
};
|
|
72
74
|
}
|
|
73
75
|
function isSimRoute53RecordType(value) {
|
package/dist/service/route53/command/change-resource-record-sets/change-resource-record-sets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-resource-record-sets.js","sourceRoot":"","sources":["../../../../../src/service/route53/command/change-resource-record-sets/change-resource-record-sets.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"change-resource-record-sets.js","sourceRoot":"","sources":["../../../../../src/service/route53/command/change-resource-record-sets/change-resource-record-sets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import type { SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
|
|
2
1
|
export type SimRoute53RecordType = "A" | "AAAA" | "CNAME" | "TXT" | "NS" | "SOA";
|
|
3
2
|
export interface SimRoute53Record {
|
|
4
3
|
readonly name: string;
|
|
5
4
|
readonly type: SimRoute53RecordType;
|
|
6
5
|
readonly values: readonly string[];
|
|
7
6
|
readonly ttl?: number | undefined;
|
|
8
|
-
|
|
9
|
-
export interface SimRoute53HttpResolution {
|
|
10
|
-
readonly target: SimAwsServiceTarget;
|
|
11
|
-
readonly rewrittenHostname?: string;
|
|
7
|
+
readonly alias?: boolean | undefined;
|
|
12
8
|
}
|
|
13
9
|
//# sourceMappingURL=sim-route53-record.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-route53-record.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/record/sim-route53-record.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"sim-route53-record.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/record/sim-route53-record.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAC9B,GAAG,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACtC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { SimAwsServiceTarget } from "../../../serve/controller/sim-service-controller.js";
|
|
2
|
+
/**
|
|
3
|
+
* Maps Yulin-local service hostnames to simulated AWS service targets.
|
|
4
|
+
*
|
|
5
|
+
* Route53 resolution can end in one of two ways:
|
|
6
|
+
*
|
|
7
|
+
* 1. A record chain points at another Route53 name and resolution continues.
|
|
8
|
+
* 2. A record chain reaches a hostname that is owned by a simulated AWS service.
|
|
9
|
+
*
|
|
10
|
+
* This class handles the second case. Keeping these hostname formats here makes
|
|
11
|
+
* the Route53 resolver easier to read because the resolver only has to follow
|
|
12
|
+
* records and ask this mapper whether the current name is a terminal service
|
|
13
|
+
* target.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SimRoute53ServiceTargetResolver {
|
|
16
|
+
/**
|
|
17
|
+
* Convert a Yulin-local hostname into a simulated service target.
|
|
18
|
+
*
|
|
19
|
+
* The incoming hostname may include the local Route53 suffix used by the HTTP
|
|
20
|
+
* server. `simRoute53LogicalName` strips that suffix and returns the logical DNS
|
|
21
|
+
* name that simulated AWS services expose.
|
|
22
|
+
*/
|
|
23
|
+
resolve(hostname: string): SimAwsServiceTarget | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve S3 website endpoint hostnames.
|
|
26
|
+
*
|
|
27
|
+
* Simulated S3 website hostnames use:
|
|
28
|
+
*
|
|
29
|
+
* <bucket-name>.s3-website.<region>
|
|
30
|
+
*
|
|
31
|
+
* The bucket name can contain dots, so all labels before the service and region
|
|
32
|
+
* labels are joined back together as the resource name.
|
|
33
|
+
*/
|
|
34
|
+
private s3WebsiteServiceTarget;
|
|
35
|
+
/**
|
|
36
|
+
* Resolve CloudFront distribution hostnames.
|
|
37
|
+
*
|
|
38
|
+
* Simulated CloudFront hostnames use:
|
|
39
|
+
*
|
|
40
|
+
* <distribution-id>.cloudfront.net
|
|
41
|
+
*
|
|
42
|
+
* Unlike S3 bucket website names, this format has an exact label count because
|
|
43
|
+
* the distribution id is represented by one DNS label.
|
|
44
|
+
*/
|
|
45
|
+
private cloudFrontServiceTarget;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=sim-r53-service-target-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-r53-service-target-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-r53-service-target-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAO/F;;;;;;;;;;;;GAYG;AACH,qBAAa,+BAA+B;IAC1C;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAa1D;;;;;;;;;OASG;IACH,OAAO,CAAC,sBAAsB;IA8B9B;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;CAyBhC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { simRoute53LogicalName } from "../local-name/sim-route53-local-name.js";
|
|
2
|
+
const s3WebsiteServiceLabel = "s3-website";
|
|
3
|
+
const cloudFrontServiceLabel = "cloudfront";
|
|
4
|
+
/**
|
|
5
|
+
* Maps Yulin-local service hostnames to simulated AWS service targets.
|
|
6
|
+
*
|
|
7
|
+
* Route53 resolution can end in one of two ways:
|
|
8
|
+
*
|
|
9
|
+
* 1. A record chain points at another Route53 name and resolution continues.
|
|
10
|
+
* 2. A record chain reaches a hostname that is owned by a simulated AWS service.
|
|
11
|
+
*
|
|
12
|
+
* This class handles the second case. Keeping these hostname formats here makes
|
|
13
|
+
* the Route53 resolver easier to read because the resolver only has to follow
|
|
14
|
+
* records and ask this mapper whether the current name is a terminal service
|
|
15
|
+
* target.
|
|
16
|
+
*/
|
|
17
|
+
export class SimRoute53ServiceTargetResolver {
|
|
18
|
+
/**
|
|
19
|
+
* Convert a Yulin-local hostname into a simulated service target.
|
|
20
|
+
*
|
|
21
|
+
* The incoming hostname may include the local Route53 suffix used by the HTTP
|
|
22
|
+
* server. `simRoute53LogicalName` strips that suffix and returns the logical DNS
|
|
23
|
+
* name that simulated AWS services expose.
|
|
24
|
+
*/
|
|
25
|
+
resolve(hostname) {
|
|
26
|
+
const logicalName = simRoute53LogicalName(hostname);
|
|
27
|
+
/* v8 ignore if -- defensive check */
|
|
28
|
+
if (logicalName === undefined) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return (this.s3WebsiteServiceTarget(logicalName) ??
|
|
32
|
+
this.cloudFrontServiceTarget(logicalName));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve S3 website endpoint hostnames.
|
|
36
|
+
*
|
|
37
|
+
* Simulated S3 website hostnames use:
|
|
38
|
+
*
|
|
39
|
+
* <bucket-name>.s3-website.<region>
|
|
40
|
+
*
|
|
41
|
+
* The bucket name can contain dots, so all labels before the service and region
|
|
42
|
+
* labels are joined back together as the resource name.
|
|
43
|
+
*/
|
|
44
|
+
s3WebsiteServiceTarget(logicalName) {
|
|
45
|
+
const labels = logicalName.split(".");
|
|
46
|
+
if (labels.length < 3) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const service = labels.at(-2);
|
|
50
|
+
const regionName = labels.at(-1);
|
|
51
|
+
if (service !== s3WebsiteServiceLabel || regionName === undefined) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const resourceName = labels.slice(0, -2).join(".");
|
|
55
|
+
/* v8 ignore if -- defensive check */
|
|
56
|
+
if (resourceName.length === 0 || regionName.length === 0) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
service: "s3",
|
|
61
|
+
resourceName,
|
|
62
|
+
regionName,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolve CloudFront distribution hostnames.
|
|
67
|
+
*
|
|
68
|
+
* Simulated CloudFront hostnames use:
|
|
69
|
+
*
|
|
70
|
+
* <distribution-id>.cloudfront.net
|
|
71
|
+
*
|
|
72
|
+
* Unlike S3 bucket website names, this format has an exact label count because
|
|
73
|
+
* the distribution id is represented by one DNS label.
|
|
74
|
+
*/
|
|
75
|
+
cloudFrontServiceTarget(logicalName) {
|
|
76
|
+
const labels = logicalName.split(".");
|
|
77
|
+
if (labels.length !== 3) {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
const [distroId, service, topLevelDomain] = labels;
|
|
81
|
+
if (service !== cloudFrontServiceLabel || topLevelDomain !== "net") {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
/* v8 ignore if -- defensive check */
|
|
85
|
+
if (distroId === undefined || distroId.length === 0) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
service: "cloudFront",
|
|
90
|
+
resourceName: distroId,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=sim-r53-service-target-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sim-r53-service-target-resolver.js","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-r53-service-target-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAEhF,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAC3C,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,+BAA+B;IAC1C;;;;;;OAMG;IACH,OAAO,CAAC,QAAgB;QACtB,MAAM,WAAW,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACpD,qCAAqC;QACrC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CACL,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;YACxC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,sBAAsB,CAC5B,WAAmB;QAEnB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAA8B,CAAC;QAE9D,IAAI,OAAO,KAAK,qBAAqB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEnD,qCAAqC;QACrC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY;YACZ,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,uBAAuB,CAC7B,WAAmB;QAEnB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,MAAM,CAAC;QAEnD,IAAI,OAAO,KAAK,sBAAsB,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,qCAAqC;QACrC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,YAAY,EAAE,QAAQ;SACvB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -8,14 +8,29 @@ interface SimRoute53ResolverProps {
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class SimRoute53Resolver {
|
|
10
10
|
private readonly recordFinder;
|
|
11
|
+
private readonly serviceTargetResolver;
|
|
11
12
|
constructor(props: SimRoute53ResolverProps);
|
|
12
13
|
/**
|
|
13
14
|
* Resolve a Yulin-local HTTP hostname to a simulated AWS service target.
|
|
15
|
+
*
|
|
16
|
+
* Resolution follows the same shape used by local integration tests:
|
|
17
|
+
*
|
|
18
|
+
* 1. Strip the Yulin localhost suffix to get the logical Route53 name.
|
|
19
|
+
* 2. Check whether that name already points at a built-in simulated service.
|
|
20
|
+
* 3. If not, follow CNAME or alias records to the next hostname.
|
|
21
|
+
* 4. Stop when a service target is found, a chain breaks, a cycle appears, or
|
|
22
|
+
* the maximum CNAME depth is reached.
|
|
14
23
|
*/
|
|
15
24
|
resolveHttpHost(hostname: string): SimAwsServiceTarget | undefined;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Find the next record to follow while resolving a local HTTP hostname.
|
|
27
|
+
*
|
|
28
|
+
* CNAME records are checked first because they are the direct name-to-name
|
|
29
|
+
* Route53 mechanism. Alias A and AAAA records are then accepted only when the
|
|
30
|
+
* stored record is marked as an alias, because ordinary address records do not
|
|
31
|
+
* contain another simulated service hostname.
|
|
32
|
+
*/
|
|
33
|
+
private findNextResolutionRecord;
|
|
19
34
|
}
|
|
20
35
|
export {};
|
|
21
36
|
//# sourceMappingURL=sim-route53-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-route53-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-route53-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sim-route53-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-route53-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAK/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAOtF,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CACE;gBAE5B,KAAK,EAAE,uBAAuB;IAI1C;;;;;;;;;;OAUG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IA2ClE;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;CAoBjC"}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { simRoute53LocalName, simRoute53LogicalName, } from "../local-name/sim-route53-local-name.js";
|
|
2
2
|
import { SimRoute53HostedZoneRecordFinder } from "./sim-r53-zone-record-finder.js";
|
|
3
|
-
|
|
4
|
-
const cloudFrontServiceLabel = "cloudfront";
|
|
3
|
+
import { SimRoute53ServiceTargetResolver } from "./sim-r53-service-target-resolver.js";
|
|
5
4
|
const maxCnameDepth = 8;
|
|
6
5
|
/**
|
|
7
6
|
* Resolves Yulin-local hostnames through simulated Route53 hosted-zone records.
|
|
8
7
|
*/
|
|
9
8
|
export class SimRoute53Resolver {
|
|
10
9
|
recordFinder;
|
|
10
|
+
serviceTargetResolver = new SimRoute53ServiceTargetResolver();
|
|
11
11
|
constructor(props) {
|
|
12
12
|
this.recordFinder = new SimRoute53HostedZoneRecordFinder(props.hostedZones);
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Resolve a Yulin-local HTTP hostname to a simulated AWS service target.
|
|
16
|
+
*
|
|
17
|
+
* Resolution follows the same shape used by local integration tests:
|
|
18
|
+
*
|
|
19
|
+
* 1. Strip the Yulin localhost suffix to get the logical Route53 name.
|
|
20
|
+
* 2. Check whether that name already points at a built-in simulated service.
|
|
21
|
+
* 3. If not, follow CNAME or alias records to the next hostname.
|
|
22
|
+
* 4. Stop when a service target is found, a chain breaks, a cycle appears, or
|
|
23
|
+
* the maximum CNAME depth is reached.
|
|
16
24
|
*/
|
|
17
25
|
resolveHttpHost(hostname) {
|
|
18
26
|
const initialLogicalName = simRoute53LogicalName(hostname);
|
|
@@ -29,7 +37,7 @@ export class SimRoute53Resolver {
|
|
|
29
37
|
return undefined;
|
|
30
38
|
}
|
|
31
39
|
visitedNames.add(localName);
|
|
32
|
-
const directTarget = this.
|
|
40
|
+
const directTarget = this.serviceTargetResolver.resolve(localName);
|
|
33
41
|
if (directTarget !== undefined) {
|
|
34
42
|
return directTarget;
|
|
35
43
|
}
|
|
@@ -38,63 +46,38 @@ export class SimRoute53Resolver {
|
|
|
38
46
|
if (logicalName === undefined) {
|
|
39
47
|
return undefined;
|
|
40
48
|
}
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
49
|
+
const nextRecord = this.findNextResolutionRecord(logicalName);
|
|
50
|
+
const nextTarget = nextRecord?.values[0];
|
|
51
|
+
if (nextTarget === undefined || nextTarget.length === 0) {
|
|
44
52
|
return undefined;
|
|
45
53
|
}
|
|
46
|
-
localName = simRoute53LocalName(
|
|
54
|
+
localName = simRoute53LocalName(nextTarget);
|
|
47
55
|
}
|
|
48
56
|
/* v8 ignore next -- defensive fallback */
|
|
49
57
|
return undefined;
|
|
50
58
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
const service = labels.at(-2);
|
|
66
|
-
const regionName = labels.at(-1);
|
|
67
|
-
if (service !== s3WebsiteServiceLabel || regionName === undefined) {
|
|
68
|
-
return undefined;
|
|
69
|
-
}
|
|
70
|
-
const resourceName = labels.slice(0, -2).join(".");
|
|
71
|
-
/* v8 ignore if -- defensive check */
|
|
72
|
-
if (resourceName.length === 0 || regionName.length === 0) {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
service: "s3",
|
|
77
|
-
resourceName,
|
|
78
|
-
regionName,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
cloudFrontServiceTarget(logicalName) {
|
|
82
|
-
const labels = logicalName.split(".");
|
|
83
|
-
if (labels.length !== 3) {
|
|
84
|
-
return undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Find the next record to follow while resolving a local HTTP hostname.
|
|
61
|
+
*
|
|
62
|
+
* CNAME records are checked first because they are the direct name-to-name
|
|
63
|
+
* Route53 mechanism. Alias A and AAAA records are then accepted only when the
|
|
64
|
+
* stored record is marked as an alias, because ordinary address records do not
|
|
65
|
+
* contain another simulated service hostname.
|
|
66
|
+
*/
|
|
67
|
+
findNextResolutionRecord(logicalName) {
|
|
68
|
+
const cname = this.recordFinder.findRecord(logicalName, "CNAME");
|
|
69
|
+
if (cname !== undefined) {
|
|
70
|
+
return cname;
|
|
85
71
|
}
|
|
86
|
-
const
|
|
87
|
-
if (
|
|
88
|
-
return
|
|
72
|
+
const aAlias = this.recordFinder.findRecord(logicalName, "A");
|
|
73
|
+
if (aAlias?.alias === true) {
|
|
74
|
+
return aAlias;
|
|
89
75
|
}
|
|
90
|
-
|
|
91
|
-
if (
|
|
92
|
-
return
|
|
76
|
+
const aaaaAlias = this.recordFinder.findRecord(logicalName, "AAAA");
|
|
77
|
+
if (aaaaAlias?.alias === true) {
|
|
78
|
+
return aaaaAlias;
|
|
93
79
|
}
|
|
94
|
-
return
|
|
95
|
-
service: "cloudFront",
|
|
96
|
-
resourceName: distroId,
|
|
97
|
-
};
|
|
80
|
+
return undefined;
|
|
98
81
|
}
|
|
99
82
|
}
|
|
100
83
|
//# sourceMappingURL=sim-route53-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sim-route53-resolver.js","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-route53-resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sim-route53-resolver.js","sourceRoot":"","sources":["../../../../src/service/route53/resolve/sim-route53-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAEvF,MAAM,aAAa,GAAG,CAAC,CAAC;AAMxB;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACZ,YAAY,CAAmC;IAC/C,qBAAqB,GACpC,IAAI,+BAA+B,EAAE,CAAC;IAExC,YAAY,KAA8B;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,gCAAgC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,QAAgB;QAC9B,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,SAAS,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;QAExD,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,aAAa,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACvD,kBAAkB;YAClB,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACrD,qCAAqC;YACrC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,0CAA0C;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACK,wBAAwB,CAC9B,WAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,SAAS,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|