@geekmidas/constructs 0.0.4 → 0.0.5
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/{AWSLambdaFunction-qA5LqPsv.cjs → AWSLambdaFunction-DW9qrBNR.cjs} +2 -2
- package/dist/{AWSLambdaFunction-qA5LqPsv.cjs.map → AWSLambdaFunction-DW9qrBNR.cjs.map} +1 -1
- package/dist/{AWSLambdaFunction-DWIZYsCy.mjs → AWSLambdaFunction-nic3vzt3.mjs} +2 -2
- package/dist/{AWSLambdaFunction-DWIZYsCy.mjs.map → AWSLambdaFunction-nic3vzt3.mjs.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs → AWSLambdaSubscriberAdaptor-BhqrpTVc.mjs} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-G8y3YkWj.mjs.map → AWSLambdaSubscriberAdaptor-BhqrpTVc.mjs.map} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs → AWSLambdaSubscriberAdaptor-ZuQAhW9_.cjs} +1 -1
- package/dist/{AWSLambdaSubscriberAdaptor-CmPZ10JF.cjs.map → AWSLambdaSubscriberAdaptor-ZuQAhW9_.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-B8mozTcG.cjs → AmazonApiGatewayEndpointAdaptor-BEzWkW5m.cjs} +3 -3
- package/dist/{AmazonApiGatewayEndpointAdaptor-B8mozTcG.cjs.map → AmazonApiGatewayEndpointAdaptor-BEzWkW5m.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayEndpointAdaptor-Bmz6Cy1e.mjs → AmazonApiGatewayEndpointAdaptor-CASfHEj9.mjs} +3 -3
- package/dist/{AmazonApiGatewayEndpointAdaptor-Bmz6Cy1e.mjs.map → AmazonApiGatewayEndpointAdaptor-CASfHEj9.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-24g3dLn5.mjs → AmazonApiGatewayV1EndpointAdaptor-RPnkGENb.mjs} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-24g3dLn5.mjs.map → AmazonApiGatewayV1EndpointAdaptor-RPnkGENb.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-D4eZ-fx5.cjs → AmazonApiGatewayV1EndpointAdaptor-l1df4rFt.cjs} +3 -3
- package/dist/{AmazonApiGatewayV1EndpointAdaptor-D4eZ-fx5.cjs.map → AmazonApiGatewayV1EndpointAdaptor-l1df4rFt.cjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-Cc40RThv.mjs → AmazonApiGatewayV2EndpointAdaptor-C5Ctz7C_.mjs} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-Cc40RThv.mjs.map → AmazonApiGatewayV2EndpointAdaptor-C5Ctz7C_.mjs.map} +1 -1
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-J6tACl-N.cjs → AmazonApiGatewayV2EndpointAdaptor-DH9yJsC8.cjs} +3 -3
- package/dist/{AmazonApiGatewayV2EndpointAdaptor-J6tACl-N.cjs.map → AmazonApiGatewayV2EndpointAdaptor-DH9yJsC8.cjs.map} +1 -1
- package/dist/{Cron-Br2TtpGY.mjs → Cron-BgJo6EW6.mjs} +1 -1
- package/dist/{Cron-Br2TtpGY.mjs.map → Cron-BgJo6EW6.mjs.map} +1 -1
- package/dist/{Cron-DF1o3U_T.cjs → Cron-JYYGj5ik.cjs} +1 -1
- package/dist/{Cron-DF1o3U_T.cjs.map → Cron-JYYGj5ik.cjs.map} +1 -1
- package/dist/{CronBuilder-e8CAOwBV.cjs → CronBuilder-BDDS21OP.cjs} +2 -2
- package/dist/{CronBuilder-e8CAOwBV.cjs.map → CronBuilder-BDDS21OP.cjs.map} +1 -1
- package/dist/{CronBuilder-DNFHMTSl.mjs → CronBuilder-DVuhB_kA.mjs} +2 -2
- package/dist/{CronBuilder-DNFHMTSl.mjs.map → CronBuilder-DVuhB_kA.mjs.map} +1 -1
- package/dist/{Endpoint-COGAflGh.cjs → Endpoint-BVZJb4OR.cjs} +1 -1
- package/dist/{Endpoint-COGAflGh.cjs.map → Endpoint-BVZJb4OR.cjs.map} +1 -1
- package/dist/{Endpoint-DLLZvqoh.mjs → Endpoint-DVEmKo6G.mjs} +1 -1
- package/dist/{Endpoint-DLLZvqoh.mjs.map → Endpoint-DVEmKo6G.mjs.map} +1 -1
- package/dist/{EndpointBuilder-oXO_ka1-.mjs → EndpointBuilder-Bhy91l_c.mjs} +2 -2
- package/dist/{EndpointBuilder-oXO_ka1-.mjs.map → EndpointBuilder-Bhy91l_c.mjs.map} +1 -1
- package/dist/{EndpointBuilder-FJktpPOu.cjs → EndpointBuilder-DDnqW7rT.cjs} +2 -2
- package/dist/{EndpointBuilder-FJktpPOu.cjs.map → EndpointBuilder-DDnqW7rT.cjs.map} +1 -1
- package/dist/{EndpointFactory-eG8bDhOh.mjs → EndpointFactory-CNz3Wa08.mjs} +2 -2
- package/dist/{EndpointFactory-eG8bDhOh.mjs.map → EndpointFactory-CNz3Wa08.mjs.map} +1 -1
- package/dist/{EndpointFactory-Kk1tpifs.cjs → EndpointFactory-Cw_6-53M.cjs} +2 -2
- package/dist/{EndpointFactory-Kk1tpifs.cjs.map → EndpointFactory-Cw_6-53M.cjs.map} +1 -1
- package/dist/{FunctionExecutionWrapper-XGrSAAPD.mjs → FunctionExecutionWrapper-CPzSbfaI.mjs} +1 -1
- package/dist/{FunctionExecutionWrapper-XGrSAAPD.mjs.map → FunctionExecutionWrapper-CPzSbfaI.mjs.map} +1 -1
- package/dist/{FunctionExecutionWrapper-CElXEjPe.cjs → FunctionExecutionWrapper-UzfHDM2R.cjs} +1 -1
- package/dist/{FunctionExecutionWrapper-CElXEjPe.cjs.map → FunctionExecutionWrapper-UzfHDM2R.cjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-C9Xe2pRp.d.mts → HonoEndpointAdaptor-BY2Ovj31.d.mts} +3 -3
- package/dist/{HonoEndpointAdaptor-Ds433Q8w.cjs → HonoEndpointAdaptor-BsGMcxYb.cjs} +4 -4
- package/dist/{HonoEndpointAdaptor-Ds433Q8w.cjs.map → HonoEndpointAdaptor-BsGMcxYb.cjs.map} +1 -1
- package/dist/{HonoEndpointAdaptor-BJgpbMUG.d.cts → HonoEndpointAdaptor-OtKS5Dsd.d.cts} +3 -3
- package/dist/{HonoEndpointAdaptor-BlT1rWHV.mjs → HonoEndpointAdaptor-Y4AD3E9g.mjs} +4 -4
- package/dist/{HonoEndpointAdaptor-BlT1rWHV.mjs.map → HonoEndpointAdaptor-Y4AD3E9g.mjs.map} +1 -1
- package/dist/{Subscriber-G7EUI3yc.cjs → Subscriber-CSt7EOlT.cjs} +1 -1
- package/dist/{Subscriber-G7EUI3yc.cjs.map → Subscriber-CSt7EOlT.cjs.map} +1 -1
- package/dist/{Subscriber-BTwKnz3c.mjs → Subscriber-DkCDcTUL.mjs} +1 -1
- package/dist/{Subscriber-BTwKnz3c.mjs.map → Subscriber-DkCDcTUL.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-C1me_972.mjs → SubscriberBuilder-Bn9Hyi28.mjs} +2 -2
- package/dist/{SubscriberBuilder-C1me_972.mjs.map → SubscriberBuilder-Bn9Hyi28.mjs.map} +1 -1
- package/dist/{SubscriberBuilder-C6iZvuDe.cjs → SubscriberBuilder-RsiOmnwq.cjs} +2 -2
- package/dist/{SubscriberBuilder-C6iZvuDe.cjs.map → SubscriberBuilder-RsiOmnwq.cjs.map} +1 -1
- package/dist/{TestEndpointAdaptor-BaQaTy_1.cjs → TestEndpointAdaptor-CbNeUT3Y.cjs} +2 -2
- package/dist/{TestEndpointAdaptor-BaQaTy_1.cjs.map → TestEndpointAdaptor-CbNeUT3Y.cjs.map} +1 -1
- package/dist/{TestEndpointAdaptor-BG6fzAOx.mjs → TestEndpointAdaptor-DD3aygPp.mjs} +2 -2
- package/dist/{TestEndpointAdaptor-BG6fzAOx.mjs.map → TestEndpointAdaptor-DD3aygPp.mjs.map} +1 -1
- package/dist/adaptors/aws.cjs +8 -8
- package/dist/adaptors/aws.d.cts +1 -1
- package/dist/adaptors/aws.d.mts +1 -1
- package/dist/adaptors/aws.mjs +8 -8
- package/dist/adaptors/hono.cjs +4 -4
- package/dist/adaptors/hono.d.cts +2 -2
- package/dist/adaptors/hono.d.mts +2 -2
- package/dist/adaptors/hono.mjs +4 -4
- package/dist/adaptors/testing.cjs +2 -2
- package/dist/adaptors/testing.d.cts +1 -1
- package/dist/adaptors/testing.d.mts +1 -1
- package/dist/adaptors/testing.mjs +2 -2
- package/dist/crons/Cron.cjs +1 -1
- package/dist/crons/Cron.d.cts +1 -1
- package/dist/crons/Cron.d.mts +1 -1
- package/dist/crons/Cron.mjs +1 -1
- package/dist/crons/CronBuilder.cjs +2 -2
- package/dist/crons/CronBuilder.d.cts +1 -1
- package/dist/crons/CronBuilder.d.mts +1 -1
- package/dist/crons/CronBuilder.mjs +2 -2
- package/dist/crons/index.cjs +2 -2
- package/dist/crons/index.d.cts +1 -1
- package/dist/crons/index.d.mts +5 -5
- package/dist/crons/index.mjs +2 -2
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.cjs +2 -2
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.cts +1 -1
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.d.mts +1 -1
- package/dist/endpoints/AmazonApiGatewayEndpointAdaptor.mjs +2 -2
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.cjs +4 -4
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.cts +1 -1
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.d.mts +1 -1
- package/dist/endpoints/AmazonApiGatewayV1EndpointAdaptor.mjs +4 -4
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.cjs +4 -4
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.cts +1 -1
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.d.mts +1 -1
- package/dist/endpoints/AmazonApiGatewayV2EndpointAdaptor.mjs +4 -4
- package/dist/endpoints/Endpoint.cjs +1 -1
- package/dist/endpoints/Endpoint.d.cts +1 -1
- package/dist/endpoints/Endpoint.d.mts +1 -1
- package/dist/endpoints/Endpoint.mjs +1 -1
- package/dist/endpoints/EndpointBuilder.cjs +2 -2
- package/dist/endpoints/EndpointBuilder.d.cts +1 -1
- package/dist/endpoints/EndpointBuilder.d.mts +1 -1
- package/dist/endpoints/EndpointBuilder.mjs +2 -2
- package/dist/endpoints/EndpointFactory.cjs +3 -3
- package/dist/endpoints/EndpointFactory.d.cts +1 -1
- package/dist/endpoints/EndpointFactory.d.mts +1 -1
- package/dist/endpoints/EndpointFactory.mjs +3 -3
- package/dist/endpoints/HonoEndpointAdaptor.cjs +4 -4
- package/dist/endpoints/HonoEndpointAdaptor.d.cts +2 -2
- package/dist/endpoints/HonoEndpointAdaptor.d.mts +2 -2
- package/dist/endpoints/HonoEndpointAdaptor.mjs +4 -4
- package/dist/endpoints/TestEndpointAdaptor.cjs +2 -2
- package/dist/endpoints/TestEndpointAdaptor.d.cts +1 -1
- package/dist/endpoints/TestEndpointAdaptor.d.mts +1 -1
- package/dist/endpoints/TestEndpointAdaptor.mjs +2 -2
- package/dist/endpoints/helpers.cjs +2 -2
- package/dist/endpoints/helpers.d.cts +1 -1
- package/dist/endpoints/helpers.d.mts +1 -1
- package/dist/endpoints/helpers.mjs +2 -2
- package/dist/endpoints/index.cjs +3 -3
- package/dist/endpoints/index.d.cts +3 -3
- package/dist/endpoints/index.d.mts +3 -3
- package/dist/endpoints/index.mjs +3 -3
- package/dist/endpoints/parseHonoQuery.cjs +1 -1
- package/dist/endpoints/parseHonoQuery.mjs +1 -1
- package/dist/endpoints/parseQueryParams.cjs +1 -1
- package/dist/endpoints/parseQueryParams.mjs +1 -1
- package/dist/functions/AWSLambdaFunction.cjs +2 -2
- package/dist/functions/AWSLambdaFunction.mjs +2 -2
- package/dist/functions/FunctionExecutionWrapper.cjs +1 -1
- package/dist/functions/FunctionExecutionWrapper.mjs +1 -1
- package/dist/functions/index.d.cts +1 -1
- package/dist/functions/index.d.mts +1 -1
- package/dist/{helpers-go4jiRvV.cjs → helpers-BSzj2AiQ.cjs} +2 -2
- package/dist/{helpers-go4jiRvV.cjs.map → helpers-BSzj2AiQ.cjs.map} +1 -1
- package/dist/{helpers-CM0U-4Vk.mjs → helpers-C9WBx7ms.mjs} +2 -2
- package/dist/{helpers-CM0U-4Vk.mjs.map → helpers-C9WBx7ms.mjs.map} +1 -1
- package/dist/index-BXTN4mwI.d.mts +9 -0
- package/dist/index-BxApEwAF.d.cts +9 -0
- package/dist/{parseHonoQuery-DopC24vB.cjs → parseHonoQuery-BiPp8bEJ.cjs} +1 -1
- package/dist/{parseHonoQuery-DopC24vB.cjs.map → parseHonoQuery-BiPp8bEJ.cjs.map} +1 -1
- package/dist/{parseHonoQuery-znDKBhdE.mjs → parseHonoQuery-yWRoKFFl.mjs} +1 -1
- package/dist/{parseHonoQuery-znDKBhdE.mjs.map → parseHonoQuery-yWRoKFFl.mjs.map} +1 -1
- package/dist/{parseQueryParams-BzPop4I1.cjs → parseQueryParams-C2EjouGt.cjs} +1 -1
- package/dist/{parseQueryParams-BzPop4I1.cjs.map → parseQueryParams-C2EjouGt.cjs.map} +1 -1
- package/dist/{parseQueryParams-BJaRh3OB.mjs → parseQueryParams-DSk9xl09.mjs} +1 -1
- package/dist/{parseQueryParams-BJaRh3OB.mjs.map → parseQueryParams-DSk9xl09.mjs.map} +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.cjs +1 -1
- package/dist/subscribers/AWSLambdaSubscriberAdaptor.mjs +1 -1
- package/dist/subscribers/Subscriber.cjs +1 -1
- package/dist/subscribers/Subscriber.mjs +1 -1
- package/dist/subscribers/SubscriberBuilder.cjs +2 -2
- package/dist/subscribers/SubscriberBuilder.mjs +2 -2
- package/dist/subscribers/index.cjs +2 -2
- package/dist/subscribers/index.d.cts +2 -2
- package/dist/subscribers/index.d.mts +2 -2
- package/dist/subscribers/index.mjs +2 -2
- package/package.json +4 -4
- package/test.ts +92 -0
- package/dist/index-BjB0W_Wq.d.mts +0 -9
- package/dist/index-D9vqHZie.d.cts +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseHonoQuery-
|
|
1
|
+
{"version":3,"file":"parseHonoQuery-BiPp8bEJ.cjs","names":["c: Context","result: Record<string, any>"],"sources":["../src/endpoints/parseHonoQuery.ts"],"sourcesContent":["import type { Context } from 'hono';\n\n/**\n * Parse Hono query parameters to handle arrays and nested objects\n * Hono provides c.req.queries() for arrays, but we need to handle dot notation for objects\n */\nexport function parseHonoQuery(c: Context): Record<string, any> {\n const allParams = c.req.query();\n const result: Record<string, any> = {};\n\n // First, handle all query parameters\n for (const [key, value] of Object.entries(allParams)) {\n if (key.includes('.')) {\n // Handle dot notation for objects\n const parts = key.split('.');\n let current = result;\n\n // Navigate/create the nested structure\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (\n !current[part] ||\n typeof current[part] !== 'object' ||\n Array.isArray(current[part])\n ) {\n current[part] = {};\n }\n current = current[part];\n }\n\n // Set the final value, checking for arrays in nested keys\n const lastPart = parts[parts.length - 1];\n const multipleValues = c.req.queries(key);\n if (multipleValues && multipleValues.length > 1) {\n current[lastPart] = multipleValues;\n } else {\n current[lastPart] = value;\n }\n } else {\n // For regular keys, check if there are multiple values\n const multipleValues = c.req.queries(key);\n if (multipleValues && multipleValues.length > 1) {\n result[key] = multipleValues;\n } else {\n result[key] = value;\n }\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,eAAeA,GAAiC;CAC9D,MAAM,YAAY,EAAE,IAAI,OAAO;CAC/B,MAAMC,SAA8B,CAAE;AAGtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,UAAU,CAClD,KAAI,IAAI,SAAS,IAAI,EAAE;EAErB,MAAM,QAAQ,IAAI,MAAM,IAAI;EAC5B,IAAI,UAAU;AAGd,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;GACzC,MAAM,OAAO,MAAM;AACnB,QACG,QAAQ,gBACF,QAAQ,UAAU,YACzB,MAAM,QAAQ,QAAQ,MAAM,CAE5B,SAAQ,QAAQ,CAAE;AAEpB,aAAU,QAAQ;EACnB;EAGD,MAAM,WAAW,MAAM,MAAM,SAAS;EACtC,MAAM,iBAAiB,EAAE,IAAI,QAAQ,IAAI;AACzC,MAAI,kBAAkB,eAAe,SAAS,EAC5C,SAAQ,YAAY;MAEpB,SAAQ,YAAY;CAEvB,OAAM;EAEL,MAAM,iBAAiB,EAAE,IAAI,QAAQ,IAAI;AACzC,MAAI,kBAAkB,eAAe,SAAS,EAC5C,QAAO,OAAO;MAEd,QAAO,OAAO;CAEjB;AAGH,QAAO;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseHonoQuery-
|
|
1
|
+
{"version":3,"file":"parseHonoQuery-yWRoKFFl.mjs","names":["c: Context","result: Record<string, any>"],"sources":["../src/endpoints/parseHonoQuery.ts"],"sourcesContent":["import type { Context } from 'hono';\n\n/**\n * Parse Hono query parameters to handle arrays and nested objects\n * Hono provides c.req.queries() for arrays, but we need to handle dot notation for objects\n */\nexport function parseHonoQuery(c: Context): Record<string, any> {\n const allParams = c.req.query();\n const result: Record<string, any> = {};\n\n // First, handle all query parameters\n for (const [key, value] of Object.entries(allParams)) {\n if (key.includes('.')) {\n // Handle dot notation for objects\n const parts = key.split('.');\n let current = result;\n\n // Navigate/create the nested structure\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (\n !current[part] ||\n typeof current[part] !== 'object' ||\n Array.isArray(current[part])\n ) {\n current[part] = {};\n }\n current = current[part];\n }\n\n // Set the final value, checking for arrays in nested keys\n const lastPart = parts[parts.length - 1];\n const multipleValues = c.req.queries(key);\n if (multipleValues && multipleValues.length > 1) {\n current[lastPart] = multipleValues;\n } else {\n current[lastPart] = value;\n }\n } else {\n // For regular keys, check if there are multiple values\n const multipleValues = c.req.queries(key);\n if (multipleValues && multipleValues.length > 1) {\n result[key] = multipleValues;\n } else {\n result[key] = value;\n }\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;AAMA,SAAgB,eAAeA,GAAiC;CAC9D,MAAM,YAAY,EAAE,IAAI,OAAO;CAC/B,MAAMC,SAA8B,CAAE;AAGtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,UAAU,CAClD,KAAI,IAAI,SAAS,IAAI,EAAE;EAErB,MAAM,QAAQ,IAAI,MAAM,IAAI;EAC5B,IAAI,UAAU;AAGd,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;GACzC,MAAM,OAAO,MAAM;AACnB,QACG,QAAQ,gBACF,QAAQ,UAAU,YACzB,MAAM,QAAQ,QAAQ,MAAM,CAE5B,SAAQ,QAAQ,CAAE;AAEpB,aAAU,QAAQ;EACnB;EAGD,MAAM,WAAW,MAAM,MAAM,SAAS;EACtC,MAAM,iBAAiB,EAAE,IAAI,QAAQ,IAAI;AACzC,MAAI,kBAAkB,eAAe,SAAS,EAC5C,SAAQ,YAAY;MAEpB,SAAQ,YAAY;CAEvB,OAAM;EAEL,MAAM,iBAAiB,EAAE,IAAI,QAAQ,IAAI;AACzC,MAAI,kBAAkB,eAAe,SAAS,EAC5C,QAAO,OAAO;MAEd,QAAO,OAAO;CAEjB;AAGH,QAAO;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseQueryParams-
|
|
1
|
+
{"version":3,"file":"parseQueryParams-C2EjouGt.cjs","names":["queryParams: Record<string, string | string[] | undefined> | null","result: Record<string, any>"],"sources":["../src/endpoints/parseQueryParams.ts"],"sourcesContent":["/**\n * Parse query parameters from a flat object into a nested structure\n * Handles arrays (multiple values with same key) and objects (dot notation)\n *\n * @example\n * parseQueryParams({ 'tags': ['a', 'b'], 'filter.name': 'john' })\n * // Returns: { tags: ['a', 'b'], filter: { name: 'john' } }\n */\nexport function parseQueryParams(\n queryParams: Record<string, string | string[] | undefined> | null,\n): Record<string, any> {\n if (!queryParams) {\n return {};\n }\n\n const result: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(queryParams)) {\n if (value === undefined) {\n continue;\n }\n\n // Check if the key contains dot notation\n if (key.includes('.')) {\n const parts = key.split('.');\n let current = result;\n\n // Navigate/create the nested structure\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (\n !current[part] ||\n typeof current[part] !== 'object' ||\n Array.isArray(current[part])\n ) {\n current[part] = {};\n }\n current = current[part];\n }\n\n // Set the final value\n const lastPart = parts[parts.length - 1];\n current[lastPart] = value;\n } else {\n // Simple key, just assign the value\n result[key] = value;\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,iBACdA,aACqB;AACrB,MAAK,YACH,QAAO,CAAE;CAGX,MAAMC,SAA8B,CAAE;AAEtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,YAAY,EAAE;AACtD,MAAI,iBACF;AAIF,MAAI,IAAI,SAAS,IAAI,EAAE;GACrB,MAAM,QAAQ,IAAI,MAAM,IAAI;GAC5B,IAAI,UAAU;AAGd,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;IACzC,MAAM,OAAO,MAAM;AACnB,SACG,QAAQ,gBACF,QAAQ,UAAU,YACzB,MAAM,QAAQ,QAAQ,MAAM,CAE5B,SAAQ,QAAQ,CAAE;AAEpB,cAAU,QAAQ;GACnB;GAGD,MAAM,WAAW,MAAM,MAAM,SAAS;AACtC,WAAQ,YAAY;EACrB,MAEC,QAAO,OAAO;CAEjB;AAED,QAAO;AACR"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseQueryParams-
|
|
1
|
+
{"version":3,"file":"parseQueryParams-DSk9xl09.mjs","names":["queryParams: Record<string, string | string[] | undefined> | null","result: Record<string, any>"],"sources":["../src/endpoints/parseQueryParams.ts"],"sourcesContent":["/**\n * Parse query parameters from a flat object into a nested structure\n * Handles arrays (multiple values with same key) and objects (dot notation)\n *\n * @example\n * parseQueryParams({ 'tags': ['a', 'b'], 'filter.name': 'john' })\n * // Returns: { tags: ['a', 'b'], filter: { name: 'john' } }\n */\nexport function parseQueryParams(\n queryParams: Record<string, string | string[] | undefined> | null,\n): Record<string, any> {\n if (!queryParams) {\n return {};\n }\n\n const result: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(queryParams)) {\n if (value === undefined) {\n continue;\n }\n\n // Check if the key contains dot notation\n if (key.includes('.')) {\n const parts = key.split('.');\n let current = result;\n\n // Navigate/create the nested structure\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (\n !current[part] ||\n typeof current[part] !== 'object' ||\n Array.isArray(current[part])\n ) {\n current[part] = {};\n }\n current = current[part];\n }\n\n // Set the final value\n const lastPart = parts[parts.length - 1];\n current[lastPart] = value;\n } else {\n // Simple key, just assign the value\n result[key] = value;\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,iBACdA,aACqB;AACrB,MAAK,YACH,QAAO,CAAE;CAGX,MAAMC,SAA8B,CAAE;AAEtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,YAAY,EAAE;AACtD,MAAI,iBACF;AAIF,MAAI,IAAI,SAAS,IAAI,EAAE;GACrB,MAAM,QAAQ,IAAI,MAAM,IAAI;GAC5B,IAAI,UAAU;AAGd,QAAK,IAAI,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK;IACzC,MAAM,OAAO,MAAM;AACnB,SACG,QAAQ,gBACF,QAAQ,UAAU,YACzB,MAAM,QAAQ,QAAQ,MAAM,CAE5B,SAAQ,QAAQ,CAAE;AAEpB,cAAU,QAAQ;GACnB;GAGD,MAAM,WAAW,MAAM,MAAM,SAAS;AACtC,WAAQ,YAAY;EACrB,MAEC,QAAO,OAAO;CAEjB;AAED,QAAO;AACR"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const require_AWSLambdaSubscriberAdaptor = require('../AWSLambdaSubscriberAdaptor-
|
|
1
|
+
const require_AWSLambdaSubscriberAdaptor = require('../AWSLambdaSubscriberAdaptor-ZuQAhW9_.cjs');
|
|
2
2
|
|
|
3
3
|
exports.AWSLambdaSubscriber = require_AWSLambdaSubscriberAdaptor.AWSLambdaSubscriber;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require('../Construct-BSEs6uwW.cjs');
|
|
2
|
-
require('../Subscriber-
|
|
3
|
-
const require_SubscriberBuilder = require('../SubscriberBuilder-
|
|
2
|
+
require('../Subscriber-CSt7EOlT.cjs');
|
|
3
|
+
const require_SubscriberBuilder = require('../SubscriberBuilder-RsiOmnwq.cjs');
|
|
4
4
|
|
|
5
5
|
exports.SubscriberBuilder = require_SubscriberBuilder.SubscriberBuilder;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../Construct-BbKCIPQm.mjs";
|
|
2
|
-
import "../Subscriber-
|
|
3
|
-
import { SubscriberBuilder } from "../SubscriberBuilder-
|
|
2
|
+
import "../Subscriber-DkCDcTUL.mjs";
|
|
3
|
+
import { SubscriberBuilder } from "../SubscriberBuilder-Bn9Hyi28.mjs";
|
|
4
4
|
|
|
5
5
|
export { SubscriberBuilder };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require('../Construct-BSEs6uwW.cjs');
|
|
2
|
-
const require_Subscriber = require('../Subscriber-
|
|
3
|
-
const require_SubscriberBuilder = require('../SubscriberBuilder-
|
|
2
|
+
const require_Subscriber = require('../Subscriber-CSt7EOlT.cjs');
|
|
3
|
+
const require_SubscriberBuilder = require('../SubscriberBuilder-RsiOmnwq.cjs');
|
|
4
4
|
|
|
5
5
|
//#region src/subscribers/index.ts
|
|
6
6
|
const s = new require_SubscriberBuilder.SubscriberBuilder();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../Construct-Bm-PSO2V.cjs";
|
|
2
2
|
import { Subscriber } from "../Subscriber-BoFm12i_.cjs";
|
|
3
3
|
import { SubscriberBuilder } from "../SubscriberBuilder-DgljKtYu.cjs";
|
|
4
|
-
import * as
|
|
4
|
+
import * as _geekmidas_logger7 from "@geekmidas/logger";
|
|
5
5
|
|
|
6
6
|
//#region src/subscribers/index.d.ts
|
|
7
|
-
declare const s: SubscriberBuilder<[],
|
|
7
|
+
declare const s: SubscriberBuilder<[], _geekmidas_logger7.Logger, undefined, undefined, string, []>;
|
|
8
8
|
//#endregion
|
|
9
9
|
export { Subscriber, SubscriberBuilder, s };
|
|
10
10
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "../Construct-DdyYENBD.mjs";
|
|
2
2
|
import { Subscriber } from "../Subscriber-BxH6n8zQ.mjs";
|
|
3
3
|
import { SubscriberBuilder } from "../SubscriberBuilder-BpSDPzBz.mjs";
|
|
4
|
-
import * as
|
|
4
|
+
import * as _geekmidas_logger5 from "@geekmidas/logger";
|
|
5
5
|
|
|
6
6
|
//#region src/subscribers/index.d.ts
|
|
7
|
-
declare const s: SubscriberBuilder<[],
|
|
7
|
+
declare const s: SubscriberBuilder<[], _geekmidas_logger5.Logger, undefined, undefined, string, []>;
|
|
8
8
|
//#endregion
|
|
9
9
|
export { Subscriber, SubscriberBuilder, s };
|
|
10
10
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../Construct-BbKCIPQm.mjs";
|
|
2
|
-
import { Subscriber } from "../Subscriber-
|
|
3
|
-
import { SubscriberBuilder } from "../SubscriberBuilder-
|
|
2
|
+
import { Subscriber } from "../Subscriber-DkCDcTUL.mjs";
|
|
3
|
+
import { SubscriberBuilder } from "../SubscriberBuilder-Bn9Hyi28.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/subscribers/index.ts
|
|
6
6
|
const s = new SubscriberBuilder();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekmidas/constructs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -69,10 +69,10 @@
|
|
|
69
69
|
"@geekmidas/schema": "0.0.1",
|
|
70
70
|
"@geekmidas/services": "0.0.1",
|
|
71
71
|
"@geekmidas/logger": "0.0.1",
|
|
72
|
-
"@geekmidas/
|
|
72
|
+
"@geekmidas/events": "0.0.1",
|
|
73
73
|
"@geekmidas/cache": "0.0.7",
|
|
74
74
|
"@geekmidas/rate-limit": "0.1.0",
|
|
75
|
-
"@geekmidas/
|
|
75
|
+
"@geekmidas/errors": "0.0.1"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@types/lodash.pick": "~4.4.9",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@middy/core": ">=6.3.1",
|
|
89
89
|
"@types/aws-lambda": ">=8.10.92",
|
|
90
90
|
"hono": ">=4.8.2",
|
|
91
|
-
"@geekmidas/envkit": "0.0.7"
|
|
91
|
+
"@geekmidas/envkit": "~0.0.7"
|
|
92
92
|
},
|
|
93
93
|
"scripts": {
|
|
94
94
|
"ts": "tsc --noEmit --skipLibCheck src/**/*.ts"
|
package/test.ts
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { e } from '@geekmidas/constructs/endpoints';
|
|
2
|
+
import { UnauthorizedError } from '@geekmidas/errors';
|
|
3
|
+
import { ConsoleLogger } from '@geekmidas/logger/console';
|
|
4
|
+
import { isValidJWT } from 'zod/v4/core';
|
|
5
|
+
|
|
6
|
+
import type { Cache } from '@geekmidas/cache';
|
|
7
|
+
import { UpstashCache } from '@geekmidas/cache/upstash';
|
|
8
|
+
import type { EnvironmentParser } from '@geekmidas/envkit';
|
|
9
|
+
import type { EventPublisher } from '@geekmidas/events';
|
|
10
|
+
import z4 from 'zod/v4';
|
|
11
|
+
|
|
12
|
+
export type CacheClient = Cache<string>;
|
|
13
|
+
|
|
14
|
+
export class CacheService {
|
|
15
|
+
private static client: CacheClient;
|
|
16
|
+
static serviceName = 'cache' as const;
|
|
17
|
+
|
|
18
|
+
private static config = (envParser: EnvironmentParser<{}>) =>
|
|
19
|
+
envParser.create((get) => ({
|
|
20
|
+
url: get('UPSTASH_URL').string(),
|
|
21
|
+
token: get('UPSTASH_TOKEN').string(),
|
|
22
|
+
}));
|
|
23
|
+
|
|
24
|
+
static register(envParser: EnvironmentParser<{}>): CacheClient {
|
|
25
|
+
if (!CacheService.client) {
|
|
26
|
+
const config = this.config(envParser).parse();
|
|
27
|
+
CacheService.client = new UpstashCache(config.url, config.token);
|
|
28
|
+
}
|
|
29
|
+
return CacheService.client;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class EventsService {
|
|
34
|
+
public static instance: ShortstaffEventPublisher;
|
|
35
|
+
static serviceName = 'events' as const;
|
|
36
|
+
|
|
37
|
+
public static config = (envParser: EnvironmentParser<{}>) =>
|
|
38
|
+
envParser.create((get) => ({
|
|
39
|
+
topicArn: get('NOTIFICATION_TOPIC_ARN').string(),
|
|
40
|
+
region: get('AWS_REGION').string(),
|
|
41
|
+
accessKeyId: get('AWS_ACCESS_KEY_ID').string().optional(),
|
|
42
|
+
secretAccessKey: get('AWS_SECRET_ACCESS_KEY').string().optional(),
|
|
43
|
+
endpoint: get('AWS_ENDPOINT_URL').string().optional(),
|
|
44
|
+
}));
|
|
45
|
+
|
|
46
|
+
static register(envParser: EnvironmentParser<{}>): ShortstaffEventPublisher {
|
|
47
|
+
return EventsService.instance;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export type ShortstaffEventPublisher = EventPublisher<{
|
|
52
|
+
type: 'user';
|
|
53
|
+
payload: {};
|
|
54
|
+
}>;
|
|
55
|
+
|
|
56
|
+
export const r = e
|
|
57
|
+
.logger(new ConsoleLogger())
|
|
58
|
+
.services([CacheService])
|
|
59
|
+
.publisher(EventsService);
|
|
60
|
+
|
|
61
|
+
export const sessionRouter = r.session(async ({ header, services }) => {
|
|
62
|
+
const authHeader = header('authorization');
|
|
63
|
+
|
|
64
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
65
|
+
throw new UnauthorizedError('Authorization header required');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const token = authHeader.substring(7);
|
|
69
|
+
|
|
70
|
+
if (!isValidJWT(token)) {
|
|
71
|
+
throw new UnauthorizedError('Invalid token format');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return { token };
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const LoginUserSchema = z4.object({
|
|
78
|
+
username: z4.string().min(3),
|
|
79
|
+
password: z4.string().min(6),
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
const LoginResponseSchema = z4.object({
|
|
83
|
+
token: z4.string(),
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
export const login = r
|
|
87
|
+
.post('/auth/login')
|
|
88
|
+
.body(LoginUserSchema)
|
|
89
|
+
.output(LoginResponseSchema)
|
|
90
|
+
.handle(async ({ body, services, header }, res) => {
|
|
91
|
+
return { token: 'mock-jwt-token' };
|
|
92
|
+
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FunctionBuilder } from "./FunctionBuilder-DBwR7jg7.mjs";
|
|
2
|
-
import * as _geekmidas_logger5 from "@geekmidas/logger";
|
|
3
|
-
import * as _geekmidas_schema4 from "@geekmidas/schema";
|
|
4
|
-
|
|
5
|
-
//#region src/functions/index.d.ts
|
|
6
|
-
declare const f: FunctionBuilder<_geekmidas_schema4.ComposableStandardSchema, undefined, [], _geekmidas_logger5.Logger, undefined, string>;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { f };
|
|
9
|
-
//# sourceMappingURL=index-BjB0W_Wq.d.mts.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FunctionBuilder } from "./FunctionBuilder-BS1KgxA_.cjs";
|
|
2
|
-
import * as _geekmidas_logger8 from "@geekmidas/logger";
|
|
3
|
-
import * as _geekmidas_schema7 from "@geekmidas/schema";
|
|
4
|
-
|
|
5
|
-
//#region src/functions/index.d.ts
|
|
6
|
-
declare const f: FunctionBuilder<_geekmidas_schema7.ComposableStandardSchema, undefined, [], _geekmidas_logger8.Logger, undefined, string>;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { f };
|
|
9
|
-
//# sourceMappingURL=index-D9vqHZie.d.cts.map
|