@openhi/constructs 0.0.0 → 0.0.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 (101) hide show
  1. package/lib/chunk-LZOMFHX3.mjs +38 -0
  2. package/lib/chunk-LZOMFHX3.mjs.map +1 -0
  3. package/lib/index.d.mts +788 -0
  4. package/lib/index.d.ts +869 -3
  5. package/lib/index.js +1318 -19
  6. package/lib/index.js.map +1 -0
  7. package/lib/index.mjs +1303 -0
  8. package/lib/index.mjs.map +1 -0
  9. package/lib/rest-api-lambda.handler.d.mts +6 -0
  10. package/lib/rest-api-lambda.handler.d.ts +6 -0
  11. package/lib/rest-api-lambda.handler.js +677 -0
  12. package/lib/rest-api-lambda.handler.js.map +1 -0
  13. package/lib/rest-api-lambda.handler.mjs +646 -0
  14. package/lib/rest-api-lambda.handler.mjs.map +1 -0
  15. package/package.json +37 -28
  16. package/lib/app/index.d.ts +0 -4
  17. package/lib/app/index.js +0 -21
  18. package/lib/app/open-hi-app.d.ts +0 -85
  19. package/lib/app/open-hi-app.js +0 -127
  20. package/lib/app/open-hi-environment.d.ts +0 -59
  21. package/lib/app/open-hi-environment.js +0 -72
  22. package/lib/app/open-hi-service.d.ts +0 -169
  23. package/lib/app/open-hi-service.js +0 -195
  24. package/lib/app/open-hi-stage.d.ts +0 -71
  25. package/lib/app/open-hi-stage.js +0 -70
  26. package/lib/components/acm/root-wildcard-certificate.d.ts +0 -15
  27. package/lib/components/acm/root-wildcard-certificate.js +0 -35
  28. package/lib/components/api-gateway/core-http-api.d.ts +0 -10
  29. package/lib/components/api-gateway/core-http-api.js +0 -44
  30. package/lib/components/api-gateway/http-lambda-integration-no-permissions.d.ts +0 -18
  31. package/lib/components/api-gateway/http-lambda-integration-no-permissions.js +0 -26
  32. package/lib/components/app-sync/core-graphql-api.d.ts +0 -12
  33. package/lib/components/app-sync/core-graphql-api.js +0 -54
  34. package/lib/components/auth.d.ts +0 -75
  35. package/lib/components/auth.js +0 -100
  36. package/lib/components/cognito/core-user-pool-client.d.ts +0 -10
  37. package/lib/components/cognito/core-user-pool-client.js +0 -47
  38. package/lib/components/cognito/core-user-pool-domain.d.ts +0 -10
  39. package/lib/components/cognito/core-user-pool-domain.js +0 -41
  40. package/lib/components/cognito/core-user-pool-kms-key.d.ts +0 -10
  41. package/lib/components/cognito/core-user-pool-kms-key.js +0 -37
  42. package/lib/components/cognito/core-user-pool.d.ts +0 -10
  43. package/lib/components/cognito/core-user-pool.js +0 -54
  44. package/lib/components/core.d.ts +0 -102
  45. package/lib/components/core.js +0 -79
  46. package/lib/components/dynamodb/dynamo-db-data-store.d.ts +0 -33
  47. package/lib/components/dynamodb/dynamo-db-data-store.js +0 -107
  48. package/lib/components/event-bridge/data-event-bus.d.ts +0 -19
  49. package/lib/components/event-bridge/data-event-bus.js +0 -34
  50. package/lib/components/event-bridge/ops-event-bus.d.ts +0 -19
  51. package/lib/components/event-bridge/ops-event-bus.js +0 -34
  52. package/lib/components/global.d.ts +0 -36
  53. package/lib/components/global.js +0 -63
  54. package/lib/components/index.d.ts +0 -1
  55. package/lib/components/index.js +0 -18
  56. package/lib/components/route-53/child-hosted-zone.d.ts +0 -20
  57. package/lib/components/route-53/child-hosted-zone.js +0 -48
  58. package/lib/components/route-53/root-hosted-zone.d.ts +0 -10
  59. package/lib/components/route-53/root-hosted-zone.js +0 -20
  60. package/lib/components/ssm/discoverable-string-parameter.d.ts +0 -59
  61. package/lib/components/ssm/discoverable-string-parameter.js +0 -50
  62. package/lib/components/ssm/index.d.ts +0 -1
  63. package/lib/components/ssm/index.js +0 -18
  64. package/lib/data/dynamo/ehr/r4/Patient.d.ts +0 -180
  65. package/lib/data/dynamo/ehr/r4/Patient.js +0 -192
  66. package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.d.ts +0 -162
  67. package/lib/data/dynamo/ehr/r4/ehr-r4-data-service.js +0 -37
  68. package/lib/data/hello-world.d.ts +0 -39
  69. package/lib/data/hello-world.js +0 -59
  70. package/lib/data/import-patient-with-dynalite.d.ts +0 -1
  71. package/lib/data/import-patient-with-dynalite.js +0 -87
  72. package/lib/data/import-patient.d.ts +0 -47
  73. package/lib/data/import-patient.js +0 -158
  74. package/lib/data/lambda/rest-api-lambda.d.ts +0 -13
  75. package/lib/data/lambda/rest-api-lambda.handler.d.ts +0 -1
  76. package/lib/data/lambda/rest-api-lambda.handler.js +0 -10
  77. package/lib/data/lambda/rest-api-lambda.js +0 -22
  78. package/lib/data/middleware/open-hi-context.d.ts +0 -13
  79. package/lib/data/middleware/open-hi-context.js +0 -31
  80. package/lib/data/rest-api/ehr/r4/Patient.d.ts +0 -16
  81. package/lib/data/rest-api/ehr/r4/Patient.js +0 -234
  82. package/lib/data/rest-api/rest-api-local.d.ts +0 -1
  83. package/lib/data/rest-api/rest-api-local.js +0 -8
  84. package/lib/data/rest-api/rest-api-mockdata.d.ts +0 -7
  85. package/lib/data/rest-api/rest-api-mockdata.js +0 -585
  86. package/lib/data/rest-api/rest-api.d.ts +0 -3
  87. package/lib/data/rest-api/rest-api.js +0 -26
  88. package/lib/lib/compression.d.ts +0 -27
  89. package/lib/lib/compression.js +0 -87
  90. package/lib/services/index.d.ts +0 -5
  91. package/lib/services/index.js +0 -22
  92. package/lib/services/open-hi-auth-service.d.ts +0 -31
  93. package/lib/services/open-hi-auth-service.js +0 -31
  94. package/lib/services/open-hi-core-service.d.ts +0 -15
  95. package/lib/services/open-hi-core-service.js +0 -38
  96. package/lib/services/open-hi-data-service.d.ts +0 -18
  97. package/lib/services/open-hi-data-service.js +0 -18
  98. package/lib/services/open-hi-global-service.d.ts +0 -15
  99. package/lib/services/open-hi-global-service.js +0 -44
  100. package/lib/services/open-hi-rest-api-service.d.ts +0 -17
  101. package/lib/services/open-hi-rest-api-service.js +0 -107
@@ -1,27 +0,0 @@
1
- /**
2
- * Compression algorithm identifiers supported by the envelope (string values).
3
- * Only algos that Node.js supports out of the box (zlib): gzip, brotli, deflate.
4
- * "none" = uncompressed payload. zstd was considered in the ADR but requires native addon/WASM.
5
- */
6
- export declare const COMPRESSION_ALGOS: {
7
- readonly NONE: "none";
8
- readonly GZIP: "gzip";
9
- readonly BROTLI: "brotli";
10
- readonly DEFLATE: "deflate";
11
- };
12
- /** Algorithm value for envelope `algo`; only gzip and none are implemented today. */
13
- export type CompressionAlgo = (typeof COMPRESSION_ALGOS)[keyof typeof COMPRESSION_ALGOS];
14
- /**
15
- * Compresses a JSON string (e.g. serialized FHIR resource) for storage in DynamoDB.
16
- * Uses a versioned envelope: { v, algo, payload } with gzip+base64 in payload.
17
- * Used by the data layer on write; see REST API docs (compression in data layer).
18
- * Optional compression: pass `{ algo: COMPRESSION_ALGOS.NONE }` to store in envelope without compressing.
19
- */
20
- export declare function compressResource(jsonString: string, options?: {
21
- algo?: CompressionAlgo;
22
- }): string;
23
- /**
24
- * Decompresses a stored value: versioned envelope (v, algo, payload) or legacy gzip+base64 / raw.
25
- * If the value is not valid envelope JSON, falls back to legacy: try gzip magic on base64, else return as-is.
26
- */
27
- export declare function decompressResource(compressedOrRaw: string): string;
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMPRESSION_ALGOS = void 0;
4
- exports.compressResource = compressResource;
5
- exports.decompressResource = decompressResource;
6
- const node_zlib_1 = require("node:zlib");
7
- /** Envelope format version. See ADR 2026-02-15-02 (data layer compression). */
8
- const ENVELOPE_VERSION = 1;
9
- /**
10
- * Compression algorithm identifiers supported by the envelope (string values).
11
- * Only algos that Node.js supports out of the box (zlib): gzip, brotli, deflate.
12
- * "none" = uncompressed payload. zstd was considered in the ADR but requires native addon/WASM.
13
- */
14
- exports.COMPRESSION_ALGOS = {
15
- NONE: "none",
16
- GZIP: "gzip",
17
- BROTLI: "brotli",
18
- DEFLATE: "deflate",
19
- };
20
- function isEnvelope(obj) {
21
- return (typeof obj === "object" &&
22
- obj !== null &&
23
- "v" in obj &&
24
- "algo" in obj &&
25
- "payload" in obj &&
26
- typeof obj.payload === "string");
27
- }
28
- /**
29
- * Compresses a JSON string (e.g. serialized FHIR resource) for storage in DynamoDB.
30
- * Uses a versioned envelope: { v, algo, payload } with gzip+base64 in payload.
31
- * Used by the data layer on write; see REST API docs (compression in data layer).
32
- * Optional compression: pass `{ algo: COMPRESSION_ALGOS.NONE }` to store in envelope without compressing.
33
- */
34
- function compressResource(jsonString, options) {
35
- const algo = options?.algo ?? exports.COMPRESSION_ALGOS.GZIP;
36
- if (algo === exports.COMPRESSION_ALGOS.NONE) {
37
- const envelope = {
38
- v: ENVELOPE_VERSION,
39
- algo: exports.COMPRESSION_ALGOS.NONE,
40
- payload: jsonString,
41
- };
42
- return JSON.stringify(envelope);
43
- }
44
- const buf = Buffer.from(jsonString, "utf-8");
45
- const payload = (0, node_zlib_1.gzipSync)(buf).toString("base64");
46
- const envelope = {
47
- v: ENVELOPE_VERSION,
48
- algo: exports.COMPRESSION_ALGOS.GZIP,
49
- payload,
50
- };
51
- return JSON.stringify(envelope);
52
- }
53
- /**
54
- * Decompresses a stored value: versioned envelope (v, algo, payload) or legacy gzip+base64 / raw.
55
- * If the value is not valid envelope JSON, falls back to legacy: try gzip magic on base64, else return as-is.
56
- */
57
- function decompressResource(compressedOrRaw) {
58
- try {
59
- const parsed = JSON.parse(compressedOrRaw);
60
- if (isEnvelope(parsed)) {
61
- if (parsed.algo === exports.COMPRESSION_ALGOS.GZIP) {
62
- const buf = Buffer.from(parsed.payload, "base64");
63
- return (0, node_zlib_1.gunzipSync)(buf).toString("utf-8");
64
- }
65
- if (parsed.algo === exports.COMPRESSION_ALGOS.NONE) {
66
- return parsed.payload;
67
- }
68
- // Unknown algo: return payload as-is (safe fallback per ADR)
69
- return parsed.payload;
70
- }
71
- }
72
- catch {
73
- // Not valid envelope JSON — legacy path
74
- }
75
- // Legacy: pre-envelope gzip+base64 or raw
76
- try {
77
- const buf = Buffer.from(compressedOrRaw, "base64");
78
- if (buf.length >= 2 && buf[0] === 0x1f && buf[1] === 0x8b) {
79
- return (0, node_zlib_1.gunzipSync)(buf).toString("utf-8");
80
- }
81
- }
82
- catch {
83
- // not base64 or gunzip failed
84
- }
85
- return compressedOrRaw;
86
- }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHJlc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXByZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZDQSw0Q0FxQkM7QUFNRCxnREE0QkM7QUFwR0QseUNBQWlEO0FBRWpELCtFQUErRTtBQUMvRSxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUUzQjs7OztHQUlHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFNBQVM7Q0FDVixDQUFDO0FBYVgsU0FBUyxVQUFVLENBQUMsR0FBWTtJQUM5QixPQUFPLENBQ0wsT0FBTyxHQUFHLEtBQUssUUFBUTtRQUN2QixHQUFHLEtBQUssSUFBSTtRQUNaLEdBQUcsSUFBSSxHQUFHO1FBQ1YsTUFBTSxJQUFJLEdBQUc7UUFDYixTQUFTLElBQUksR0FBRztRQUNoQixPQUFRLEdBQTJCLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FDekQsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixVQUFrQixFQUNsQixPQUFvQztJQUVwQyxNQUFNLElBQUksR0FBRyxPQUFPLEVBQUUsSUFBSSxJQUFJLHlCQUFpQixDQUFDLElBQUksQ0FBQztJQUNyRCxJQUFJLElBQUksS0FBSyx5QkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQyxNQUFNLFFBQVEsR0FBd0I7WUFDcEMsQ0FBQyxFQUFFLGdCQUFnQjtZQUNuQixJQUFJLEVBQUUseUJBQWlCLENBQUMsSUFBSTtZQUM1QixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFBLG9CQUFRLEVBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELE1BQU0sUUFBUSxHQUF3QjtRQUNwQyxDQUFDLEVBQUUsZ0JBQWdCO1FBQ25CLElBQUksRUFBRSx5QkFBaUIsQ0FBQyxJQUFJO1FBQzVCLE9BQU87S0FDUixDQUFDO0lBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxlQUF1QjtJQUN4RCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBWSxDQUFDO1FBQ3RELElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2xELE9BQU8sSUFBQSxzQkFBVSxFQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDeEIsQ0FBQztZQUNELDZEQUE2RDtZQUM3RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCx3Q0FBd0M7SUFDMUMsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzFELE9BQU8sSUFBQSxzQkFBVSxFQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLDhCQUE4QjtJQUNoQyxDQUFDO0lBQ0QsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGd6aXBTeW5jLCBndW56aXBTeW5jIH0gZnJvbSBcIm5vZGU6emxpYlwiO1xuXG4vKiogRW52ZWxvcGUgZm9ybWF0IHZlcnNpb24uIFNlZSBBRFIgMjAyNi0wMi0xNS0wMiAoZGF0YSBsYXllciBjb21wcmVzc2lvbikuICovXG5jb25zdCBFTlZFTE9QRV9WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBDb21wcmVzc2lvbiBhbGdvcml0aG0gaWRlbnRpZmllcnMgc3VwcG9ydGVkIGJ5IHRoZSBlbnZlbG9wZSAoc3RyaW5nIHZhbHVlcykuXG4gKiBPbmx5IGFsZ29zIHRoYXQgTm9kZS5qcyBzdXBwb3J0cyBvdXQgb2YgdGhlIGJveCAoemxpYik6IGd6aXAsIGJyb3RsaSwgZGVmbGF0ZS5cbiAqIFwibm9uZVwiID0gdW5jb21wcmVzc2VkIHBheWxvYWQuIHpzdGQgd2FzIGNvbnNpZGVyZWQgaW4gdGhlIEFEUiBidXQgcmVxdWlyZXMgbmF0aXZlIGFkZG9uL1dBU00uXG4gKi9cbmV4cG9ydCBjb25zdCBDT01QUkVTU0lPTl9BTEdPUyA9IHtcbiAgTk9ORTogXCJub25lXCIsXG4gIEdaSVA6IFwiZ3ppcFwiLFxuICBCUk9UTEk6IFwiYnJvdGxpXCIsXG4gIERFRkxBVEU6IFwiZGVmbGF0ZVwiLFxufSBhcyBjb25zdDtcblxuLyoqIEFsZ29yaXRobSB2YWx1ZSBmb3IgZW52ZWxvcGUgYGFsZ29gOyBvbmx5IGd6aXAgYW5kIG5vbmUgYXJlIGltcGxlbWVudGVkIHRvZGF5LiAqL1xuZXhwb3J0IHR5cGUgQ29tcHJlc3Npb25BbGdvID1cbiAgKHR5cGVvZiBDT01QUkVTU0lPTl9BTEdPUylba2V5b2YgdHlwZW9mIENPTVBSRVNTSU9OX0FMR09TXTtcblxuLyoqIFN0b3JlZCB2YWx1ZSBpcyBhIEpTT04gc3RyaW5nIG9mIHRoaXMgZW52ZWxvcGUuICovXG5pbnRlcmZhY2UgQ29tcHJlc3Npb25FbnZlbG9wZSB7XG4gIHY6IG51bWJlcjtcbiAgYWxnbzogc3RyaW5nO1xuICBwYXlsb2FkOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGlzRW52ZWxvcGUob2JqOiB1bmtub3duKTogb2JqIGlzIENvbXByZXNzaW9uRW52ZWxvcGUge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgJiZcbiAgICBvYmogIT09IG51bGwgJiZcbiAgICBcInZcIiBpbiBvYmogJiZcbiAgICBcImFsZ29cIiBpbiBvYmogJiZcbiAgICBcInBheWxvYWRcIiBpbiBvYmogJiZcbiAgICB0eXBlb2YgKG9iaiBhcyBDb21wcmVzc2lvbkVudmVsb3BlKS5wYXlsb2FkID09PSBcInN0cmluZ1wiXG4gICk7XG59XG5cbi8qKlxuICogQ29tcHJlc3NlcyBhIEpTT04gc3RyaW5nIChlLmcuIHNlcmlhbGl6ZWQgRkhJUiByZXNvdXJjZSkgZm9yIHN0b3JhZ2UgaW4gRHluYW1vREIuXG4gKiBVc2VzIGEgdmVyc2lvbmVkIGVudmVsb3BlOiB7IHYsIGFsZ28sIHBheWxvYWQgfSB3aXRoIGd6aXArYmFzZTY0IGluIHBheWxvYWQuXG4gKiBVc2VkIGJ5IHRoZSBkYXRhIGxheWVyIG9uIHdyaXRlOyBzZWUgUkVTVCBBUEkgZG9jcyAoY29tcHJlc3Npb24gaW4gZGF0YSBsYXllcikuXG4gKiBPcHRpb25hbCBjb21wcmVzc2lvbjogcGFzcyBgeyBhbGdvOiBDT01QUkVTU0lPTl9BTEdPUy5OT05FIH1gIHRvIHN0b3JlIGluIGVudmVsb3BlIHdpdGhvdXQgY29tcHJlc3NpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wcmVzc1Jlc291cmNlKFxuICBqc29uU3RyaW5nOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiB7IGFsZ28/OiBDb21wcmVzc2lvbkFsZ28gfSxcbik6IHN0cmluZyB7XG4gIGNvbnN0IGFsZ28gPSBvcHRpb25zPy5hbGdvID8/IENPTVBSRVNTSU9OX0FMR09TLkdaSVA7XG4gIGlmIChhbGdvID09PSBDT01QUkVTU0lPTl9BTEdPUy5OT05FKSB7XG4gICAgY29uc3QgZW52ZWxvcGU6IENvbXByZXNzaW9uRW52ZWxvcGUgPSB7XG4gICAgICB2OiBFTlZFTE9QRV9WRVJTSU9OLFxuICAgICAgYWxnbzogQ09NUFJFU1NJT05fQUxHT1MuTk9ORSxcbiAgICAgIHBheWxvYWQ6IGpzb25TdHJpbmcsXG4gICAgfTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW52ZWxvcGUpO1xuICB9XG4gIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKGpzb25TdHJpbmcsIFwidXRmLThcIik7XG4gIGNvbnN0IHBheWxvYWQgPSBnemlwU3luYyhidWYpLnRvU3RyaW5nKFwiYmFzZTY0XCIpO1xuICBjb25zdCBlbnZlbG9wZTogQ29tcHJlc3Npb25FbnZlbG9wZSA9IHtcbiAgICB2OiBFTlZFTE9QRV9WRVJTSU9OLFxuICAgIGFsZ286IENPTVBSRVNTSU9OX0FMR09TLkdaSVAsXG4gICAgcGF5bG9hZCxcbiAgfTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbn1cblxuLyoqXG4gKiBEZWNvbXByZXNzZXMgYSBzdG9yZWQgdmFsdWU6IHZlcnNpb25lZCBlbnZlbG9wZSAodiwgYWxnbywgcGF5bG9hZCkgb3IgbGVnYWN5IGd6aXArYmFzZTY0IC8gcmF3LlxuICogSWYgdGhlIHZhbHVlIGlzIG5vdCB2YWxpZCBlbnZlbG9wZSBKU09OLCBmYWxscyBiYWNrIHRvIGxlZ2FjeTogdHJ5IGd6aXAgbWFnaWMgb24gYmFzZTY0LCBlbHNlIHJldHVybiBhcy1pcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29tcHJlc3NSZXNvdXJjZShjb21wcmVzc2VkT3JSYXc6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShjb21wcmVzc2VkT3JSYXcpIGFzIHVua25vd247XG4gICAgaWYgKGlzRW52ZWxvcGUocGFyc2VkKSkge1xuICAgICAgaWYgKHBhcnNlZC5hbGdvID09PSBDT01QUkVTU0lPTl9BTEdPUy5HWklQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5mcm9tKHBhcnNlZC5wYXlsb2FkLCBcImJhc2U2NFwiKTtcbiAgICAgICAgcmV0dXJuIGd1bnppcFN5bmMoYnVmKS50b1N0cmluZyhcInV0Zi04XCIpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcnNlZC5hbGdvID09PSBDT01QUkVTU0lPTl9BTEdPUy5OT05FKSB7XG4gICAgICAgIHJldHVybiBwYXJzZWQucGF5bG9hZDtcbiAgICAgIH1cbiAgICAgIC8vIFVua25vd24gYWxnbzogcmV0dXJuIHBheWxvYWQgYXMtaXMgKHNhZmUgZmFsbGJhY2sgcGVyIEFEUilcbiAgICAgIHJldHVybiBwYXJzZWQucGF5bG9hZDtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIE5vdCB2YWxpZCBlbnZlbG9wZSBKU09OIOKAlCBsZWdhY3kgcGF0aFxuICB9XG5cbiAgLy8gTGVnYWN5OiBwcmUtZW52ZWxvcGUgZ3ppcCtiYXNlNjQgb3IgcmF3XG4gIHRyeSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmZyb20oY29tcHJlc3NlZE9yUmF3LCBcImJhc2U2NFwiKTtcbiAgICBpZiAoYnVmLmxlbmd0aCA+PSAyICYmIGJ1ZlswXSA9PT0gMHgxZiAmJiBidWZbMV0gPT09IDB4OGIpIHtcbiAgICAgIHJldHVybiBndW56aXBTeW5jKGJ1ZikudG9TdHJpbmcoXCJ1dGYtOFwiKTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIG5vdCBiYXNlNjQgb3IgZ3VuemlwIGZhaWxlZFxuICB9XG4gIHJldHVybiBjb21wcmVzc2VkT3JSYXc7XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- export * from "./open-hi-core-service";
2
- export * from "./open-hi-auth-service";
3
- export * from "./open-hi-global-service";
4
- export * from "./open-hi-rest-api-service";
5
- export * from "./open-hi-data-service";
@@ -1,22 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./open-hi-core-service"), exports);
18
- __exportStar(require("./open-hi-auth-service"), exports);
19
- __exportStar(require("./open-hi-global-service"), exports);
20
- __exportStar(require("./open-hi-rest-api-service"), exports);
21
- __exportStar(require("./open-hi-data-service"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUF1QztBQUN2Qyx5REFBdUM7QUFDdkMsMkRBQXlDO0FBQ3pDLDZEQUEyQztBQUMzQyx5REFBdUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9vcGVuLWhpLWNvcmUtc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3Blbi1oaS1hdXRoLXNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wZW4taGktZ2xvYmFsLXNlcnZpY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wZW4taGktcmVzdC1hcGktc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3Blbi1oaS1kYXRhLXNlcnZpY2VcIjtcbiJdfQ==
@@ -1,31 +0,0 @@
1
- import { OpenHiEnvironment } from "../app/open-hi-environment";
2
- import { OpenHiService, OpenHiServiceProps } from "../app/open-hi-service";
3
- import { Auth, AuthProps } from "../components/auth";
4
- export interface OpenHiAuthServiceProps extends OpenHiServiceProps {
5
- /**
6
- * Optional props for the auth construct.
7
- */
8
- readonly authProps?: AuthProps;
9
- }
10
- /**
11
- * OpenHI Auth Service stack.
12
- *
13
- * @remarks
14
- * The Auth service manages authentication infrastructure including:
15
- * - Cognito User Pool for user management and authentication
16
- * - User Pool Client for application integration
17
- * - User Pool Domain for hosting the Cognito hosted UI
18
- * - KMS Key for Cognito User Pool encryption
19
- *
20
- * Only one instance of the auth service should exist per environment.
21
- *
22
- * @public
23
- */
24
- export declare class OpenHiAuthService extends OpenHiService {
25
- props: OpenHiAuthServiceProps;
26
- /**
27
- * Auth construct containing authentication resources.
28
- */
29
- readonly auth: Auth;
30
- constructor(ohEnv: OpenHiEnvironment, props?: OpenHiAuthServiceProps);
31
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenHiAuthService = void 0;
4
- const open_hi_service_1 = require("../app/open-hi-service");
5
- const auth_1 = require("../components/auth");
6
- /**
7
- * OpenHI Auth Service stack.
8
- *
9
- * @remarks
10
- * The Auth service manages authentication infrastructure including:
11
- * - Cognito User Pool for user management and authentication
12
- * - User Pool Client for application integration
13
- * - User Pool Domain for hosting the Cognito hosted UI
14
- * - KMS Key for Cognito User Pool encryption
15
- *
16
- * Only one instance of the auth service should exist per environment.
17
- *
18
- * @public
19
- */
20
- class OpenHiAuthService extends open_hi_service_1.OpenHiService {
21
- constructor(ohEnv, props = {}) {
22
- super(ohEnv, open_hi_service_1.OPEN_HI_SERVICE_TYPE.AUTH, props);
23
- this.props = props;
24
- /**
25
- * Create the Auth construct that manages authentication resources.
26
- */
27
- this.auth = new auth_1.Auth(this, props.authProps);
28
- }
29
- }
30
- exports.OpenHiAuthService = OpenHiAuthService;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1hdXRoLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvb3Blbi1oaS1hdXRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNERBSWdDO0FBQ2hDLDZDQUFxRDtBQVNyRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSwrQkFBYTtJQU1sRCxZQUNFLEtBQXdCLEVBQ2pCLFFBQWdDLEVBQUU7UUFFekMsS0FBSyxDQUFDLEtBQUssRUFBRSxzQ0FBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFGeEMsVUFBSyxHQUFMLEtBQUssQ0FBNkI7UUFJekM7O1dBRUc7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksV0FBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBakJELDhDQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZW5IaUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2FwcC9vcGVuLWhpLWVudmlyb25tZW50XCI7XG5pbXBvcnQge1xuICBPUEVOX0hJX1NFUlZJQ0VfVFlQRSxcbiAgT3BlbkhpU2VydmljZSxcbiAgT3BlbkhpU2VydmljZVByb3BzLFxufSBmcm9tIFwiLi4vYXBwL29wZW4taGktc2VydmljZVwiO1xuaW1wb3J0IHsgQXV0aCwgQXV0aFByb3BzIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvYXV0aFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5IaUF1dGhTZXJ2aWNlUHJvcHMgZXh0ZW5kcyBPcGVuSGlTZXJ2aWNlUHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgcHJvcHMgZm9yIHRoZSBhdXRoIGNvbnN0cnVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhQcm9wcz86IEF1dGhQcm9wcztcbn1cblxuLyoqXG4gKiBPcGVuSEkgQXV0aCBTZXJ2aWNlIHN0YWNrLlxuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgQXV0aCBzZXJ2aWNlIG1hbmFnZXMgYXV0aGVudGljYXRpb24gaW5mcmFzdHJ1Y3R1cmUgaW5jbHVkaW5nOlxuICogLSBDb2duaXRvIFVzZXIgUG9vbCBmb3IgdXNlciBtYW5hZ2VtZW50IGFuZCBhdXRoZW50aWNhdGlvblxuICogLSBVc2VyIFBvb2wgQ2xpZW50IGZvciBhcHBsaWNhdGlvbiBpbnRlZ3JhdGlvblxuICogLSBVc2VyIFBvb2wgRG9tYWluIGZvciBob3N0aW5nIHRoZSBDb2duaXRvIGhvc3RlZCBVSVxuICogLSBLTVMgS2V5IGZvciBDb2duaXRvIFVzZXIgUG9vbCBlbmNyeXB0aW9uXG4gKlxuICogT25seSBvbmUgaW5zdGFuY2Ugb2YgdGhlIGF1dGggc2VydmljZSBzaG91bGQgZXhpc3QgcGVyIGVudmlyb25tZW50LlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5IaUF1dGhTZXJ2aWNlIGV4dGVuZHMgT3BlbkhpU2VydmljZSB7XG4gIC8qKlxuICAgKiBBdXRoIGNvbnN0cnVjdCBjb250YWluaW5nIGF1dGhlbnRpY2F0aW9uIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdXRoOiBBdXRoO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9oRW52OiBPcGVuSGlFbnZpcm9ubWVudCxcbiAgICBwdWJsaWMgcHJvcHM6IE9wZW5IaUF1dGhTZXJ2aWNlUHJvcHMgPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIob2hFbnYsIE9QRU5fSElfU0VSVklDRV9UWVBFLkFVVEgsIHByb3BzKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSB0aGUgQXV0aCBjb25zdHJ1Y3QgdGhhdCBtYW5hZ2VzIGF1dGhlbnRpY2F0aW9uIHJlc291cmNlcy5cbiAgICAgKi9cbiAgICB0aGlzLmF1dGggPSBuZXcgQXV0aCh0aGlzLCBwcm9wcy5hdXRoUHJvcHMpO1xuICB9XG59XG4iXX0=
@@ -1,15 +0,0 @@
1
- import { OpenHiEnvironment } from "../app";
2
- import { OpenHiService, OpenHiServiceProps } from "../app/open-hi-service";
3
- export interface OpenHiCoreServiceProps extends OpenHiServiceProps {
4
- }
5
- export declare class OpenHiCoreService extends OpenHiService {
6
- /*****************************************************************************
7
- *
8
- * PROPS
9
- *
10
- * Final props calculated from inputs combined with default values.
11
- *
12
- ****************************************************************************/
13
- readonly props: OpenHiCoreServiceProps;
14
- constructor(ohEnv: OpenHiEnvironment, props?: OpenHiCoreServiceProps);
15
- }
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenHiCoreService = void 0;
4
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
5
- const open_hi_service_1 = require("../app/open-hi-service");
6
- class OpenHiCoreService extends open_hi_service_1.OpenHiService {
7
- constructor(ohEnv, props = {}) {
8
- /**
9
- * Force concrete version of all core resources to be created in this
10
- * service. In all other stacks, imported versions will be used.
11
- */
12
- props = {
13
- ...props,
14
- };
15
- super(ohEnv, open_hi_service_1.OPEN_HI_SERVICE_TYPE.CORE, props);
16
- /**
17
- * Store the props in case they are needed later. Mostly this is just a
18
- * resource of what was passed in, combined with any custom or default
19
- * settings, if any.
20
- */
21
- this.props = props;
22
- // A Lambda to integrate
23
- new aws_lambda_1.Function(this, "test-fn", {
24
- runtime: aws_lambda_1.Runtime.NODEJS_LATEST,
25
- handler: "index.handler",
26
- code: aws_lambda_1.Code.fromInline('exports.handler = async () => { return {statusCode:200, body:"ok"} }'),
27
- });
28
- // Create a Lambda integration
29
- // const integration = new HttpLambdaIntegration("test-integration", fn);
30
- // new HttpRoute(this, "test-route", {
31
- // httpApi: this.core.httpApi,
32
- // routeKey: HttpRouteKey.with(`/hello-world`, HttpMethod.GET),
33
- // integration,
34
- // });
35
- }
36
- }
37
- exports.OpenHiCoreService = OpenHiCoreService;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1jb3JlLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvb3Blbi1oaS1jb3JlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWlFO0FBRWpFLDREQUlnQztBQUloQyxNQUFhLGlCQUFrQixTQUFRLCtCQUFhO0lBV2xELFlBQVksS0FBd0IsRUFBRSxRQUFnQyxFQUFFO1FBQ3RFOzs7V0FHRztRQUNILEtBQUssR0FBRztZQUNOLEdBQUcsS0FBSztTQUNULENBQUM7UUFFRixLQUFLLENBQUMsS0FBSyxFQUFFLHNDQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQzs7OztXQUlHO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsd0JBQXdCO1FBQ3hCLElBQUkscUJBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzVCLE9BQU8sRUFBRSxvQkFBTyxDQUFDLGFBQWE7WUFDOUIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLGlCQUFJLENBQUMsVUFBVSxDQUNuQixzRUFBc0UsQ0FDdkU7U0FDRixDQUFDLENBQUM7UUFFSCw4QkFBOEI7UUFDOUIseUVBQXlFO1FBRXpFLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFDaEMsaUVBQWlFO1FBQ2pFLGlCQUFpQjtRQUNqQixNQUFNO0lBQ1IsQ0FBQztDQUNGO0FBL0NELDhDQStDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvZGUsIEZ1bmN0aW9uLCBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IE9wZW5IaUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2FwcFwiO1xuaW1wb3J0IHtcbiAgT1BFTl9ISV9TRVJWSUNFX1RZUEUsXG4gIE9wZW5IaVNlcnZpY2UsXG4gIE9wZW5IaVNlcnZpY2VQcm9wcyxcbn0gZnJvbSBcIi4uL2FwcC9vcGVuLWhpLXNlcnZpY2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSGlDb3JlU2VydmljZVByb3BzIGV4dGVuZHMgT3BlbkhpU2VydmljZVByb3BzIHt9XG5cbmV4cG9ydCBjbGFzcyBPcGVuSGlDb3JlU2VydmljZSBleHRlbmRzIE9wZW5IaVNlcnZpY2Uge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICpcbiAgICogUFJPUFNcbiAgICpcbiAgICogRmluYWwgcHJvcHMgY2FsY3VsYXRlZCBmcm9tIGlucHV0cyBjb21iaW5lZCB3aXRoIGRlZmF1bHQgdmFsdWVzLlxuICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IE9wZW5IaUNvcmVTZXJ2aWNlUHJvcHM7XG5cbiAgY29uc3RydWN0b3Iob2hFbnY6IE9wZW5IaUVudmlyb25tZW50LCBwcm9wczogT3BlbkhpQ29yZVNlcnZpY2VQcm9wcyA9IHt9KSB7XG4gICAgLyoqXG4gICAgICogRm9yY2UgY29uY3JldGUgdmVyc2lvbiBvZiBhbGwgY29yZSByZXNvdXJjZXMgdG8gYmUgY3JlYXRlZCBpbiB0aGlzXG4gICAgICogc2VydmljZS4gSW4gYWxsIG90aGVyIHN0YWNrcywgaW1wb3J0ZWQgdmVyc2lvbnMgd2lsbCBiZSB1c2VkLlxuICAgICAqL1xuICAgIHByb3BzID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcblxuICAgIHN1cGVyKG9oRW52LCBPUEVOX0hJX1NFUlZJQ0VfVFlQRS5DT1JFLCBwcm9wcyk7XG5cbiAgICAvKipcbiAgICAgKiBTdG9yZSB0aGUgcHJvcHMgaW4gY2FzZSB0aGV5IGFyZSBuZWVkZWQgbGF0ZXIuIE1vc3RseSB0aGlzIGlzIGp1c3QgYVxuICAgICAqIHJlc291cmNlIG9mIHdoYXQgd2FzIHBhc3NlZCBpbiwgY29tYmluZWQgd2l0aCBhbnkgY3VzdG9tIG9yIGRlZmF1bHRcbiAgICAgKiBzZXR0aW5ncywgaWYgYW55LlxuICAgICAqL1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIEEgTGFtYmRhIHRvIGludGVncmF0ZVxuICAgIG5ldyBGdW5jdGlvbih0aGlzLCBcInRlc3QtZm5cIiwge1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfTEFURVNULFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBjb2RlOiBDb2RlLmZyb21JbmxpbmUoXG4gICAgICAgICdleHBvcnRzLmhhbmRsZXIgPSBhc3luYyAoKSA9PiB7IHJldHVybiB7c3RhdHVzQ29kZToyMDAsIGJvZHk6XCJva1wifSB9JyxcbiAgICAgICksXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgYSBMYW1iZGEgaW50ZWdyYXRpb25cbiAgICAvLyBjb25zdCBpbnRlZ3JhdGlvbiA9IG5ldyBIdHRwTGFtYmRhSW50ZWdyYXRpb24oXCJ0ZXN0LWludGVncmF0aW9uXCIsIGZuKTtcblxuICAgIC8vIG5ldyBIdHRwUm91dGUodGhpcywgXCJ0ZXN0LXJvdXRlXCIsIHtcbiAgICAvLyAgIGh0dHBBcGk6IHRoaXMuY29yZS5odHRwQXBpLFxuICAgIC8vICAgcm91dGVLZXk6IEh0dHBSb3V0ZUtleS53aXRoKGAvaGVsbG8td29ybGRgLCBIdHRwTWV0aG9kLkdFVCksXG4gICAgLy8gICBpbnRlZ3JhdGlvbixcbiAgICAvLyB9KTtcbiAgfVxufVxuIl19
@@ -1,18 +0,0 @@
1
- import { ITable } from "aws-cdk-lib/aws-dynamodb";
2
- import { OpenHiEnvironment } from "../app/open-hi-environment";
3
- import { OpenHiService, OpenHiServiceProps } from "../app/open-hi-service";
4
- export interface OpenHiDataServiceProps extends OpenHiServiceProps {
5
- }
6
- /**
7
- * Data storage service stack: centralizes DynamoDB, S3, and other persistence
8
- * resources for OpenHI. Creates the single-table data store (CRM, CMS, ERP,
9
- * EHR); add buckets or other resources as needed.
10
- */
11
- export declare class OpenHiDataService extends OpenHiService {
12
- /**
13
- * The single-table DynamoDB data store. Use {@link DynamoDbDataStore.fromConstruct}
14
- * from other stacks to obtain an ITable reference by name.
15
- */
16
- readonly dataStore: ITable;
17
- constructor(ohEnv: OpenHiEnvironment, props?: OpenHiDataServiceProps);
18
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenHiDataService = void 0;
4
- const open_hi_service_1 = require("../app/open-hi-service");
5
- const dynamo_db_data_store_1 = require("../components/dynamodb/dynamo-db-data-store");
6
- /**
7
- * Data storage service stack: centralizes DynamoDB, S3, and other persistence
8
- * resources for OpenHI. Creates the single-table data store (CRM, CMS, ERP,
9
- * EHR); add buckets or other resources as needed.
10
- */
11
- class OpenHiDataService extends open_hi_service_1.OpenHiService {
12
- constructor(ohEnv, props = {}) {
13
- super(ohEnv, open_hi_service_1.OPEN_HI_SERVICE_TYPE.DATA, props);
14
- this.dataStore = new dynamo_db_data_store_1.DynamoDbDataStore(this, "dynamo-db-data-store");
15
- }
16
- }
17
- exports.OpenHiDataService = OpenHiDataService;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1kYXRhLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvb3Blbi1oaS1kYXRhLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNERBSWdDO0FBQ2hDLHNGQUFnRjtBQUloRjs7OztHQUlHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSwrQkFBYTtJQU9sRCxZQUFZLEtBQXdCLEVBQUUsUUFBZ0MsRUFBRTtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLHNDQUFvQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksd0NBQWlCLENBQUMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBWkQsOENBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGFibGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBPcGVuSGlFbnZpcm9ubWVudCB9IGZyb20gXCIuLi9hcHAvb3Blbi1oaS1lbnZpcm9ubWVudFwiO1xuaW1wb3J0IHtcbiAgT1BFTl9ISV9TRVJWSUNFX1RZUEUsXG4gIE9wZW5IaVNlcnZpY2UsXG4gIE9wZW5IaVNlcnZpY2VQcm9wcyxcbn0gZnJvbSBcIi4uL2FwcC9vcGVuLWhpLXNlcnZpY2VcIjtcbmltcG9ydCB7IER5bmFtb0RiRGF0YVN0b3JlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZHluYW1vZGIvZHluYW1vLWRiLWRhdGEtc3RvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuSGlEYXRhU2VydmljZVByb3BzIGV4dGVuZHMgT3BlbkhpU2VydmljZVByb3BzIHt9XG5cbi8qKlxuICogRGF0YSBzdG9yYWdlIHNlcnZpY2Ugc3RhY2s6IGNlbnRyYWxpemVzIER5bmFtb0RCLCBTMywgYW5kIG90aGVyIHBlcnNpc3RlbmNlXG4gKiByZXNvdXJjZXMgZm9yIE9wZW5ISS4gQ3JlYXRlcyB0aGUgc2luZ2xlLXRhYmxlIGRhdGEgc3RvcmUgKENSTSwgQ01TLCBFUlAsXG4gKiBFSFIpOyBhZGQgYnVja2V0cyBvciBvdGhlciByZXNvdXJjZXMgYXMgbmVlZGVkLlxuICovXG5leHBvcnQgY2xhc3MgT3BlbkhpRGF0YVNlcnZpY2UgZXh0ZW5kcyBPcGVuSGlTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBzaW5nbGUtdGFibGUgRHluYW1vREIgZGF0YSBzdG9yZS4gVXNlIHtAbGluayBEeW5hbW9EYkRhdGFTdG9yZS5mcm9tQ29uc3RydWN0fVxuICAgKiBmcm9tIG90aGVyIHN0YWNrcyB0byBvYnRhaW4gYW4gSVRhYmxlIHJlZmVyZW5jZSBieSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFTdG9yZTogSVRhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKG9oRW52OiBPcGVuSGlFbnZpcm9ubWVudCwgcHJvcHM6IE9wZW5IaURhdGFTZXJ2aWNlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKG9oRW52LCBPUEVOX0hJX1NFUlZJQ0VfVFlQRS5EQVRBLCBwcm9wcyk7XG5cbiAgICB0aGlzLmRhdGFTdG9yZSA9IG5ldyBEeW5hbW9EYkRhdGFTdG9yZSh0aGlzLCBcImR5bmFtby1kYi1kYXRhLXN0b3JlXCIpO1xuICB9XG59XG4iXX0=
@@ -1,15 +0,0 @@
1
- import { OpenHiEnvironment } from "../app/open-hi-environment";
2
- import { OpenHiService, OpenHiServiceProps } from "../app/open-hi-service";
3
- import { Global } from "../components/global";
4
- export interface OpenHiGlobalServiceProps extends OpenHiServiceProps {
5
- }
6
- /**
7
- * Global Infrastructure stack: owns global DNS and certificates
8
- */
9
- export declare class OpenHiGlobalService extends OpenHiService {
10
- /**
11
- * Global construct.
12
- */
13
- readonly global: Global;
14
- constructor(ohEnv: OpenHiEnvironment, props?: OpenHiGlobalServiceProps);
15
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenHiGlobalService = void 0;
4
- const open_hi_service_1 = require("../app/open-hi-service");
5
- const global_1 = require("../components/global");
6
- /**
7
- * Global Infrastructure stack: owns global DNS and certificates
8
- */
9
- class OpenHiGlobalService extends open_hi_service_1.OpenHiService {
10
- constructor(ohEnv, props = {}) {
11
- super(ohEnv, open_hi_service_1.OPEN_HI_SERVICE_TYPE.GLOBAL, props);
12
- /**
13
- * Unpack some incoming props. Don't pass config into constructs,
14
- * deconstruct what you need and pass those values into the construct.
15
- */
16
- const { config } = props;
17
- if (!config) {
18
- throw new Error("Config is required");
19
- }
20
- if (!config.zoneName) {
21
- throw new Error("Zone name is required to import the root zone");
22
- }
23
- if (!config.hostedZoneId) {
24
- throw new Error("Hosted zone ID is required to import the root zone");
25
- }
26
- /**
27
- * Create a global construct containing root and child zones
28
- */
29
- this.global = new global_1.Global(this, "global", {
30
- rootHostedZoneAttributes: {
31
- zoneName: config.zoneName,
32
- hostedZoneId: config.hostedZoneId,
33
- },
34
- /*
35
- childHostedZoneAttributes: {
36
- zoneName: `${this.childZonePrefix}.${config.zoneName}`,
37
- hostedZoneId: config.hostedZoneId,
38
- },
39
- */
40
- });
41
- }
42
- }
43
- exports.OpenHiGlobalService = OpenHiGlobalService;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1nbG9iYWwtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9vcGVuLWhpLWdsb2JhbC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDREQUlnQztBQUNoQyxpREFBOEM7QUFJOUM7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLCtCQUFhO0lBTXBELFlBQVksS0FBd0IsRUFBRSxRQUFrQyxFQUFFO1FBQ3hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsc0NBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWpEOzs7V0FHRztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVEOztXQUVHO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3ZDLHdCQUF3QixFQUFFO2dCQUN4QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7Z0JBQ3pCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTthQUNsQztZQUNEOzs7OztjQUtFO1NBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBekNELGtEQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZW5IaUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2FwcC9vcGVuLWhpLWVudmlyb25tZW50XCI7XG5pbXBvcnQge1xuICBPUEVOX0hJX1NFUlZJQ0VfVFlQRSxcbiAgT3BlbkhpU2VydmljZSxcbiAgT3BlbkhpU2VydmljZVByb3BzLFxufSBmcm9tIFwiLi4vYXBwL29wZW4taGktc2VydmljZVwiO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZ2xvYmFsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkhpR2xvYmFsU2VydmljZVByb3BzIGV4dGVuZHMgT3BlbkhpU2VydmljZVByb3BzIHt9XG5cbi8qKlxuICogR2xvYmFsIEluZnJhc3RydWN0dXJlIHN0YWNrOiBvd25zIGdsb2JhbCBETlMgYW5kIGNlcnRpZmljYXRlc1xuICovXG5leHBvcnQgY2xhc3MgT3BlbkhpR2xvYmFsU2VydmljZSBleHRlbmRzIE9wZW5IaVNlcnZpY2Uge1xuICAvKipcbiAgICogR2xvYmFsIGNvbnN0cnVjdC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnbG9iYWw6IEdsb2JhbDtcblxuICBjb25zdHJ1Y3RvcihvaEVudjogT3BlbkhpRW52aXJvbm1lbnQsIHByb3BzOiBPcGVuSGlHbG9iYWxTZXJ2aWNlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKG9oRW52LCBPUEVOX0hJX1NFUlZJQ0VfVFlQRS5HTE9CQUwsIHByb3BzKTtcblxuICAgIC8qKlxuICAgICAqIFVucGFjayBzb21lIGluY29taW5nIHByb3BzLiBEb24ndCBwYXNzIGNvbmZpZyBpbnRvIGNvbnN0cnVjdHMsXG4gICAgICogZGVjb25zdHJ1Y3Qgd2hhdCB5b3UgbmVlZCBhbmQgcGFzcyB0aG9zZSB2YWx1ZXMgaW50byB0aGUgY29uc3RydWN0LlxuICAgICAqL1xuICAgIGNvbnN0IHsgY29uZmlnIH0gPSBwcm9wcztcblxuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb25maWcgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuICAgIGlmICghY29uZmlnLnpvbmVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lIG5hbWUgaXMgcmVxdWlyZWQgdG8gaW1wb3J0IHRoZSByb290IHpvbmVcIik7XG4gICAgfVxuICAgIGlmICghY29uZmlnLmhvc3RlZFpvbmVJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSG9zdGVkIHpvbmUgSUQgaXMgcmVxdWlyZWQgdG8gaW1wb3J0IHRoZSByb290IHpvbmVcIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgZ2xvYmFsIGNvbnN0cnVjdCBjb250YWluaW5nIHJvb3QgYW5kIGNoaWxkIHpvbmVzXG4gICAgICovXG4gICAgdGhpcy5nbG9iYWwgPSBuZXcgR2xvYmFsKHRoaXMsIFwiZ2xvYmFsXCIsIHtcbiAgICAgIHJvb3RIb3N0ZWRab25lQXR0cmlidXRlczoge1xuICAgICAgICB6b25lTmFtZTogY29uZmlnLnpvbmVOYW1lLFxuICAgICAgICBob3N0ZWRab25lSWQ6IGNvbmZpZy5ob3N0ZWRab25lSWQsXG4gICAgICB9LFxuICAgICAgLypcbiAgICAgIGNoaWxkSG9zdGVkWm9uZUF0dHJpYnV0ZXM6IHtcbiAgICAgICAgem9uZU5hbWU6IGAke3RoaXMuY2hpbGRab25lUHJlZml4fS4ke2NvbmZpZy56b25lTmFtZX1gLFxuICAgICAgICBob3N0ZWRab25lSWQ6IGNvbmZpZy5ob3N0ZWRab25lSWQsXG4gICAgICB9LFxuICAgICAgKi9cbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,17 +0,0 @@
1
- import { OpenHiEnvironment } from "../app/open-hi-environment";
2
- import { OpenHiService, OpenHiServiceProps } from "../app/open-hi-service";
3
- import { CoreHttpApi } from "../components/api-gateway/core-http-api";
4
- export interface OpenHiRestApiServiceProps extends OpenHiServiceProps {
5
- }
6
- /**
7
- * SSM parameter name suffix for the REST API base URL.
8
- * Full parameter name is built via buildParameterName with serviceType REST_API.
9
- */
10
- export declare const REST_API_BASE_URL_SSM_NAME = "REST_API_BASE_URL";
11
- /**
12
- * REST API service stack: HTTP API, custom domain, and Lambda; exports base URL via SSM.
13
- */
14
- export declare class OpenHiRestApiService extends OpenHiService {
15
- readonly coreHttpApi: CoreHttpApi;
16
- constructor(ohEnv: OpenHiEnvironment, props?: OpenHiRestApiServiceProps);
17
- }
@@ -1,107 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OpenHiRestApiService = exports.REST_API_BASE_URL_SSM_NAME = void 0;
4
- const aws_apigatewayv2_1 = require("aws-cdk-lib/aws-apigatewayv2");
5
- const aws_apigatewayv2_integrations_1 = require("aws-cdk-lib/aws-apigatewayv2-integrations");
6
- const aws_route53_1 = require("aws-cdk-lib/aws-route53");
7
- const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
8
- const open_hi_service_1 = require("../app/open-hi-service");
9
- const root_wildcard_certificate_1 = require("../components/acm/root-wildcard-certificate");
10
- const core_http_api_1 = require("../components/api-gateway/core-http-api");
11
- const dynamo_db_data_store_1 = require("../components/dynamodb/dynamo-db-data-store");
12
- const ssm_1 = require("../components/ssm");
13
- const rest_api_lambda_1 = require("../data/lambda/rest-api-lambda");
14
- /**
15
- * SSM parameter name suffix for the REST API base URL.
16
- * Full parameter name is built via buildParameterName with serviceType REST_API.
17
- */
18
- exports.REST_API_BASE_URL_SSM_NAME = "REST_API_BASE_URL";
19
- /**
20
- * REST API service stack: HTTP API, custom domain, and Lambda; exports base URL via SSM.
21
- */
22
- class OpenHiRestApiService extends open_hi_service_1.OpenHiService {
23
- constructor(ohEnv, props = {}) {
24
- super(ohEnv, open_hi_service_1.OPEN_HI_SERVICE_TYPE.REST_API, props);
25
- /**
26
- * Unpack some incoming props. Don't pass config into constructs,
27
- * deconstruct what you need and pass those values into the construct.
28
- */
29
- const { config } = props;
30
- if (!config) {
31
- throw new Error("Config is required");
32
- }
33
- if (!config.hostedZoneId) {
34
- throw new Error("Hosted zone ID is required");
35
- }
36
- if (!config.zoneName) {
37
- throw new Error("Zone name is required");
38
- }
39
- /***************************************************************************
40
- *
41
- * DNS for the API Endpoint
42
- *
43
- **************************************************************************/
44
- const hostedZone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, "root-zone", {
45
- hostedZoneId: config.hostedZoneId,
46
- zoneName: config.zoneName,
47
- });
48
- const certificate = root_wildcard_certificate_1.RootWildcardCertificate.fromConstruct(this);
49
- const apiPrefix = this.branchName === "main" ? `api` : `api-${this.childZonePrefix}`;
50
- const apiDomainName = [apiPrefix, hostedZone.zoneName].join(".");
51
- const restApiBaseUrl = `https://${apiDomainName}`;
52
- new ssm_1.DiscoverableStringParameter(this, "rest-api-base-url-param", {
53
- ssmParamName: exports.REST_API_BASE_URL_SSM_NAME,
54
- stringValue: restApiBaseUrl,
55
- description: "REST API base URL for this deployment (E2E, scripts)",
56
- });
57
- const domainName = new aws_apigatewayv2_1.DomainName(this, "domain", {
58
- domainName: apiDomainName,
59
- certificate,
60
- });
61
- /***************************************************************************
62
- *
63
- * Core Data API Definition
64
- *
65
- **************************************************************************/
66
- this.coreHttpApi = new core_http_api_1.CoreHttpApi(this, {
67
- defaultDomainMapping: {
68
- domainName,
69
- mappingKey: undefined, // serve at root of domain
70
- },
71
- });
72
- /**
73
- * Create a Lambda function
74
- */
75
- const dataStoreTable = dynamo_db_data_store_1.DynamoDbDataStore.fromConstruct(this);
76
- const { lambda } = new rest_api_lambda_1.RestApiLambda(this, {
77
- dynamoTableName: dataStoreTable.tableName,
78
- });
79
- // Explicit DynamoDB actions only; Scan is intentionally omitted to enforce query-only access.
80
- dataStoreTable.grant(lambda, "dynamodb:GetItem", "dynamodb:Query", "dynamodb:BatchGetItem", "dynamodb:ConditionCheckItem", "dynamodb:DescribeTable", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem");
81
- /**
82
- * Integrate Lambda with HTTP API
83
- */
84
- const integration = new aws_apigatewayv2_integrations_1.HttpLambdaIntegration("lambda-integration", lambda);
85
- /**
86
- * Proxy all requests to the Lambda (root and all paths)
87
- */
88
- new aws_apigatewayv2_1.HttpRoute(this, "proxy-route-root", {
89
- httpApi: this.coreHttpApi,
90
- routeKey: aws_apigatewayv2_1.HttpRouteKey.with("/", aws_apigatewayv2_1.HttpMethod.ANY),
91
- integration,
92
- });
93
- new aws_apigatewayv2_1.HttpRoute(this, "proxy-route", {
94
- httpApi: this.coreHttpApi,
95
- routeKey: aws_apigatewayv2_1.HttpRouteKey.with("/{proxy+}", aws_apigatewayv2_1.HttpMethod.ANY),
96
- integration,
97
- });
98
- // Point DNS at the API Gateway custom domain
99
- new aws_route53_1.ARecord(this, "api-a-record", {
100
- zone: hostedZone,
101
- recordName: apiPrefix,
102
- target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.ApiGatewayv2DomainProperties(domainName.regionalDomainName, domainName.regionalHostedZoneId)),
103
- });
104
- }
105
- }
106
- exports.OpenHiRestApiService = OpenHiRestApiService;
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1oaS1yZXN0LWFwaS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL29wZW4taGktcmVzdC1hcGktc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFLc0M7QUFDdEMsNkZBQWtGO0FBQ2xGLHlEQUE0RTtBQUM1RSx5RUFBK0U7QUFFL0UsNERBSWdDO0FBQ2hDLDJGQUFzRjtBQUN0RiwyRUFBc0U7QUFDdEUsc0ZBQWdGO0FBQ2hGLDJDQUFnRTtBQUNoRSxvRUFBK0Q7QUFJL0Q7OztHQUdHO0FBQ1UsUUFBQSwwQkFBMEIsR0FBRyxtQkFBbUIsQ0FBQztBQUU5RDs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsK0JBQWE7SUFHckQsWUFBWSxLQUF3QixFQUFFLFFBQW1DLEVBQUU7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxzQ0FBb0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbkQ7OztXQUdHO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV6QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQ7Ozs7b0ZBSTRFO1FBRTVFLE1BQU0sVUFBVSxHQUFHLHdCQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUN4RSxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7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Um91dGUsXG4gIEh0dHBSb3V0ZUtleSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djJcIjtcbmltcG9ydCB7IEh0dHBMYW1iZGFJbnRlZ3JhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheXYyLWludGVncmF0aW9uc1wiO1xuaW1wb3J0IHsgQVJlY29yZCwgSG9zdGVkWm9uZSwgUmVjb3JkVGFyZ2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQgeyBBcGlHYXRld2F5djJEb21haW5Qcm9wZXJ0aWVzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHNcIjtcbmltcG9ydCB7IE9wZW5IaUVudmlyb25tZW50IH0gZnJvbSBcIi4uL2FwcC9vcGVuLWhpLWVudmlyb25tZW50XCI7XG5pbXBvcnQge1xuICBPUEVOX0hJX1NFUlZJQ0VfVFlQRSxcbiAgT3BlbkhpU2VydmljZSxcbiAgT3BlbkhpU2VydmljZVByb3BzLFxufSBmcm9tIFwiLi4vYXBwL29wZW4taGktc2VydmljZVwiO1xuaW1wb3J0IHsgUm9vdFdpbGRjYXJkQ2VydGlmaWNhdGUgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9hY20vcm9vdC13aWxkY2FyZC1jZXJ0aWZpY2F0ZVwiO1xuaW1wb3J0IHsgQ29yZUh0dHBBcGkgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9hcGktZ2F0ZXdheS9jb3JlLWh0dHAtYXBpXCI7XG5pbXBvcnQgeyBEeW5hbW9EYkRhdGFTdG9yZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2R5bmFtb2RiL2R5bmFtby1kYi1kYXRhLXN0b3JlXCI7XG5pbXBvcnQgeyBEaXNjb3ZlcmFibGVTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9zc21cIjtcbmltcG9ydCB7IFJlc3RBcGlMYW1iZGEgfSBmcm9tIFwiLi4vZGF0YS9sYW1iZGEvcmVzdC1hcGktbGFtYmRhXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkhpUmVzdEFwaVNlcnZpY2VQcm9wcyBleHRlbmRzIE9wZW5IaVNlcnZpY2VQcm9wcyB7fVxuXG4vKipcbiAqIFNTTSBwYXJhbWV0ZXIgbmFtZSBzdWZmaXggZm9yIHRoZSBSRVNUIEFQSSBiYXNlIFVSTC5cbiAqIEZ1bGwgcGFyYW1ldGVyIG5hbWUgaXMgYnVpbHQgdmlhIGJ1aWxkUGFyYW1ldGVyTmFtZSB3aXRoIHNlcnZpY2VUeXBlIFJFU1RfQVBJLlxuICovXG5leHBvcnQgY29uc3QgUkVTVF9BUElfQkFTRV9VUkxfU1NNX05BTUUgPSBcIlJFU1RfQVBJX0JBU0VfVVJMXCI7XG5cbi8qKlxuICogUkVTVCBBUEkgc2VydmljZSBzdGFjazogSFRUUCBBUEksIGN1c3RvbSBkb21haW4sIGFuZCBMYW1iZGE7IGV4cG9ydHMgYmFzZSBVUkwgdmlhIFNTTS5cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5IaVJlc3RBcGlTZXJ2aWNlIGV4dGVuZHMgT3BlbkhpU2VydmljZSB7XG4gIHB1YmxpYyByZWFkb25seSBjb3JlSHR0cEFwaTogQ29yZUh0dHBBcGk7XG5cbiAgY29uc3RydWN0b3Iob2hFbnY6IE9wZW5IaUVudmlyb25tZW50LCBwcm9wczogT3BlbkhpUmVzdEFwaVNlcnZpY2VQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIob2hFbnYsIE9QRU5fSElfU0VSVklDRV9UWVBFLlJFU1RfQVBJLCBwcm9wcyk7XG5cbiAgICAvKipcbiAgICAgKiBVbnBhY2sgc29tZSBpbmNvbWluZyBwcm9wcy4gRG9uJ3QgcGFzcyBjb25maWcgaW50byBjb25zdHJ1Y3RzLFxuICAgICAqIGRlY29uc3RydWN0IHdoYXQgeW91IG5lZWQgYW5kIHBhc3MgdGhvc2UgdmFsdWVzIGludG8gdGhlIGNvbnN0cnVjdC5cbiAgICAgKi9cbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gcHJvcHM7XG5cbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29uZmlnIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cbiAgICBpZiAoIWNvbmZpZy5ob3N0ZWRab25lSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkhvc3RlZCB6b25lIElEIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cbiAgICBpZiAoIWNvbmZpZy56b25lTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWm9uZSBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEROUyBmb3IgdGhlIEFQSSBFbmRwb2ludFxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgaG9zdGVkWm9uZSA9IEhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsIFwicm9vdC16b25lXCIsIHtcbiAgICAgIGhvc3RlZFpvbmVJZDogY29uZmlnLmhvc3RlZFpvbmVJZCxcbiAgICAgIHpvbmVOYW1lOiBjb25maWcuem9uZU5hbWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9IFJvb3RXaWxkY2FyZENlcnRpZmljYXRlLmZyb21Db25zdHJ1Y3QodGhpcyk7XG5cbiAgICBjb25zdCBhcGlQcmVmaXggPVxuICAgICAgdGhpcy5icmFuY2hOYW1lID09PSBcIm1haW5cIiA/IGBhcGlgIDogYGFwaS0ke3RoaXMuY2hpbGRab25lUHJlZml4fWA7XG4gICAgY29uc3QgYXBpRG9tYWluTmFtZSA9IFthcGlQcmVmaXgsIGhvc3RlZFpvbmUuem9uZU5hbWVdLmpvaW4oXCIuXCIpO1xuICAgIGNvbnN0IHJlc3RBcGlCYXNlVXJsID0gYGh0dHBzOi8vJHthcGlEb21haW5OYW1lfWA7XG5cbiAgICBuZXcgRGlzY292ZXJhYmxlU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwicmVzdC1hcGktYmFzZS11cmwtcGFyYW1cIiwge1xuICAgICAgc3NtUGFyYW1OYW1lOiBSRVNUX0FQSV9CQVNFX1VSTF9TU01fTkFNRSxcbiAgICAgIHN0cmluZ1ZhbHVlOiByZXN0QXBpQmFzZVVybCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJFU1QgQVBJIGJhc2UgVVJMIGZvciB0aGlzIGRlcGxveW1lbnQgKEUyRSwgc2NyaXB0cylcIixcbiAgICB9KTtcblxuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSBuZXcgRG9tYWluTmFtZSh0aGlzLCBcImRvbWFpblwiLCB7XG4gICAgICBkb21haW5OYW1lOiBhcGlEb21haW5OYW1lLFxuICAgICAgY2VydGlmaWNhdGUsXG4gICAgfSk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBDb3JlIERhdGEgQVBJIERlZmluaXRpb25cbiAgICAgKlxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIHRoaXMuY29yZUh0dHBBcGkgPSBuZXcgQ29yZUh0dHBBcGkodGhpcywge1xuICAgICAgZGVmYXVsdERvbWFpbk1hcHBpbmc6IHtcbiAgICAgICAgZG9tYWluTmFtZSxcbiAgICAgICAgbWFwcGluZ0tleTogdW5kZWZpbmVkLCAvLyBzZXJ2ZSBhdCByb290IG9mIGRvbWFpblxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIExhbWJkYSBmdW5jdGlvblxuICAgICAqL1xuICAgIGNvbnN0IGRhdGFTdG9yZVRhYmxlID0gRHluYW1vRGJEYXRhU3RvcmUuZnJvbUNvbnN0cnVjdCh0aGlzKTtcbiAgICBjb25zdCB7IGxhbWJkYSB9ID0gbmV3IFJlc3RBcGlMYW1iZGEodGhpcywge1xuICAgICAgZHluYW1vVGFibGVOYW1lOiBkYXRhU3RvcmVUYWJsZS50YWJsZU5hbWUsXG4gICAgfSk7XG4gICAgLy8gRXhwbGljaXQgRHluYW1vREIgYWN0aW9ucyBvbmx5OyBTY2FuIGlzIGludGVudGlvbmFsbHkgb21pdHRlZCB0byBlbmZvcmNlIHF1ZXJ5LW9ubHkgYWNjZXNzLlxuICAgIGRhdGFTdG9yZVRhYmxlLmdyYW50KFxuICAgICAgbGFtYmRhLFxuICAgICAgXCJkeW5hbW9kYjpHZXRJdGVtXCIsXG4gICAgICBcImR5bmFtb2RiOlF1ZXJ5XCIsXG4gICAgICBcImR5bmFtb2RiOkJhdGNoR2V0SXRlbVwiLFxuICAgICAgXCJkeW5hbW9kYjpDb25kaXRpb25DaGVja0l0ZW1cIixcbiAgICAgIFwiZHluYW1vZGI6RGVzY3JpYmVUYWJsZVwiLFxuICAgICAgXCJkeW5hbW9kYjpCYXRjaFdyaXRlSXRlbVwiLFxuICAgICAgXCJkeW5hbW9kYjpQdXRJdGVtXCIsXG4gICAgICBcImR5bmFtb2RiOlVwZGF0ZUl0ZW1cIixcbiAgICAgIFwiZHluYW1vZGI6RGVsZXRlSXRlbVwiLFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBJbnRlZ3JhdGUgTGFtYmRhIHdpdGggSFRUUCBBUElcbiAgICAgKi9cbiAgICBjb25zdCBpbnRlZ3JhdGlvbiA9IG5ldyBIdHRwTGFtYmRhSW50ZWdyYXRpb24oXCJsYW1iZGEtaW50ZWdyYXRpb25cIiwgbGFtYmRhKTtcblxuICAgIC8qKlxuICAgICAqIFByb3h5IGFsbCByZXF1ZXN0cyB0byB0aGUgTGFtYmRhIChyb290IGFuZCBhbGwgcGF0aHMpXG4gICAgICovXG4gICAgbmV3IEh0dHBSb3V0ZSh0aGlzLCBcInByb3h5LXJvdXRlLXJvb3RcIiwge1xuICAgICAgaHR0cEFwaTogdGhpcy5jb3JlSHR0cEFwaSxcbiAgICAgIHJvdXRlS2V5OiBIdHRwUm91dGVLZXkud2l0aChcIi9cIiwgSHR0cE1ldGhvZC5BTlkpLFxuICAgICAgaW50ZWdyYXRpb24sXG4gICAgfSk7XG4gICAgbmV3IEh0dHBSb3V0ZSh0aGlzLCBcInByb3h5LXJvdXRlXCIsIHtcbiAgICAgIGh0dHBBcGk6IHRoaXMuY29yZUh0dHBBcGksXG4gICAgICByb3V0ZUtleTogSHR0cFJvdXRlS2V5LndpdGgoXCIve3Byb3h5K31cIiwgSHR0cE1ldGhvZC5BTlkpLFxuICAgICAgaW50ZWdyYXRpb24sXG4gICAgfSk7XG5cbiAgICAvLyBQb2ludCBETlMgIGF0IHRoZSBBUEkgR2F0ZXdheSBjdXN0b20gZG9tYWluXG4gICAgbmV3IEFSZWNvcmQodGhpcywgXCJhcGktYS1yZWNvcmRcIiwge1xuICAgICAgem9uZTogaG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IGFwaVByZWZpeCxcbiAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IEFwaUdhdGV3YXl2MkRvbWFpblByb3BlcnRpZXMoXG4gICAgICAgICAgZG9tYWluTmFtZS5yZWdpb25hbERvbWFpbk5hbWUsXG4gICAgICAgICAgZG9tYWluTmFtZS5yZWdpb25hbEhvc3RlZFpvbmVJZCxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==