aws-lambda-devkit 0.1.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.
Files changed (183) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/LICENSE +21 -0
  3. package/README.md +214 -0
  4. package/dist/aws/batch-response.d.ts +8 -0
  5. package/dist/aws/batch-response.d.ts.map +1 -0
  6. package/dist/aws/batch-response.js +12 -0
  7. package/dist/aws/batch-response.js.map +1 -0
  8. package/dist/aws/clients.d.ts +6 -0
  9. package/dist/aws/clients.d.ts.map +1 -0
  10. package/dist/aws/clients.js +30 -0
  11. package/dist/aws/clients.js.map +1 -0
  12. package/dist/aws/sns-publish.d.ts +10 -0
  13. package/dist/aws/sns-publish.d.ts.map +1 -0
  14. package/dist/aws/sns-publish.js +17 -0
  15. package/dist/aws/sns-publish.js.map +1 -0
  16. package/dist/aws/sqs-listen.d.ts +17 -0
  17. package/dist/aws/sqs-listen.d.ts.map +1 -0
  18. package/dist/aws/sqs-listen.js +113 -0
  19. package/dist/aws/sqs-listen.js.map +1 -0
  20. package/dist/aws/sqs-process.d.ts +39 -0
  21. package/dist/aws/sqs-process.d.ts.map +1 -0
  22. package/dist/aws/sqs-process.js +95 -0
  23. package/dist/aws/sqs-process.js.map +1 -0
  24. package/dist/aws/sqs-send.d.ts +15 -0
  25. package/dist/aws/sqs-send.d.ts.map +1 -0
  26. package/dist/aws/sqs-send.js +27 -0
  27. package/dist/aws/sqs-send.js.map +1 -0
  28. package/dist/aws/sqs-visibility.d.ts +10 -0
  29. package/dist/aws/sqs-visibility.d.ts.map +1 -0
  30. package/dist/aws/sqs-visibility.js +29 -0
  31. package/dist/aws/sqs-visibility.js.map +1 -0
  32. package/dist/cli.d.ts +3 -0
  33. package/dist/cli.d.ts.map +1 -0
  34. package/dist/cli.js +187 -0
  35. package/dist/cli.js.map +1 -0
  36. package/dist/commands/config-cmd.d.ts +5 -0
  37. package/dist/commands/config-cmd.d.ts.map +1 -0
  38. package/dist/commands/config-cmd.js +8 -0
  39. package/dist/commands/config-cmd.js.map +1 -0
  40. package/dist/commands/config.d.ts +2 -0
  41. package/dist/commands/config.d.ts.map +1 -0
  42. package/dist/commands/config.js +24 -0
  43. package/dist/commands/config.js.map +1 -0
  44. package/dist/commands/init.d.ts +7 -0
  45. package/dist/commands/init.d.ts.map +1 -0
  46. package/dist/commands/init.js +59 -0
  47. package/dist/commands/init.js.map +1 -0
  48. package/dist/commands/list.d.ts +4 -0
  49. package/dist/commands/list.d.ts.map +1 -0
  50. package/dist/commands/list.js +23 -0
  51. package/dist/commands/list.js.map +1 -0
  52. package/dist/commands/listen.d.ts +20 -0
  53. package/dist/commands/listen.d.ts.map +1 -0
  54. package/dist/commands/listen.js +36 -0
  55. package/dist/commands/listen.js.map +1 -0
  56. package/dist/commands/send.d.ts +17 -0
  57. package/dist/commands/send.d.ts.map +1 -0
  58. package/dist/commands/send.js +51 -0
  59. package/dist/commands/send.js.map +1 -0
  60. package/dist/commands/test.d.ts +23 -0
  61. package/dist/commands/test.d.ts.map +1 -0
  62. package/dist/commands/test.js +123 -0
  63. package/dist/commands/test.js.map +1 -0
  64. package/dist/config/env.d.ts +8 -0
  65. package/dist/config/env.d.ts.map +1 -0
  66. package/dist/config/env.js +16 -0
  67. package/dist/config/env.js.map +1 -0
  68. package/dist/config/load.d.ts +9 -0
  69. package/dist/config/load.d.ts.map +1 -0
  70. package/dist/config/load.js +72 -0
  71. package/dist/config/load.js.map +1 -0
  72. package/dist/config/merge.d.ts +36 -0
  73. package/dist/config/merge.d.ts.map +1 -0
  74. package/dist/config/merge.js +89 -0
  75. package/dist/config/merge.js.map +1 -0
  76. package/dist/config/project-env.d.ts +34 -0
  77. package/dist/config/project-env.d.ts.map +1 -0
  78. package/dist/config/project-env.js +90 -0
  79. package/dist/config/project-env.js.map +1 -0
  80. package/dist/config/schema.d.ts +27 -0
  81. package/dist/config/schema.d.ts.map +1 -0
  82. package/dist/config/schema.js +123 -0
  83. package/dist/config/schema.js.map +1 -0
  84. package/dist/config/types.d.ts +167 -0
  85. package/dist/config/types.d.ts.map +1 -0
  86. package/dist/config/types.js +2 -0
  87. package/dist/config/types.js.map +1 -0
  88. package/dist/events/apigw.d.ts +41 -0
  89. package/dist/events/apigw.d.ts.map +1 -0
  90. package/dist/events/apigw.js +43 -0
  91. package/dist/events/apigw.js.map +1 -0
  92. package/dist/events/eventbridge.d.ts +16 -0
  93. package/dist/events/eventbridge.d.ts.map +1 -0
  94. package/dist/events/eventbridge.js +19 -0
  95. package/dist/events/eventbridge.js.map +1 -0
  96. package/dist/events/index.d.ts +17 -0
  97. package/dist/events/index.d.ts.map +1 -0
  98. package/dist/events/index.js +50 -0
  99. package/dist/events/index.js.map +1 -0
  100. package/dist/events/s3.d.ts +45 -0
  101. package/dist/events/s3.d.ts.map +1 -0
  102. package/dist/events/s3.js +44 -0
  103. package/dist/events/s3.js.map +1 -0
  104. package/dist/events/schedule.d.ts +12 -0
  105. package/dist/events/schedule.d.ts.map +1 -0
  106. package/dist/events/schedule.js +15 -0
  107. package/dist/events/schedule.js.map +1 -0
  108. package/dist/events/sns.d.ts +24 -0
  109. package/dist/events/sns.d.ts.map +1 -0
  110. package/dist/events/sns.js +31 -0
  111. package/dist/events/sns.js.map +1 -0
  112. package/dist/events/sqs-record.d.ts +44 -0
  113. package/dist/events/sqs-record.d.ts.map +1 -0
  114. package/dist/events/sqs-record.js +75 -0
  115. package/dist/events/sqs-record.js.map +1 -0
  116. package/dist/events/sqs.d.ts +21 -0
  117. package/dist/events/sqs.d.ts.map +1 -0
  118. package/dist/events/sqs.js +28 -0
  119. package/dist/events/sqs.js.map +1 -0
  120. package/dist/events/util.d.ts +2 -0
  121. package/dist/events/util.d.ts.map +1 -0
  122. package/dist/events/util.js +7 -0
  123. package/dist/events/util.js.map +1 -0
  124. package/dist/index.d.ts +15 -0
  125. package/dist/index.d.ts.map +1 -0
  126. package/dist/index.js +14 -0
  127. package/dist/index.js.map +1 -0
  128. package/dist/peer-resolve.d.ts +5 -0
  129. package/dist/peer-resolve.d.ts.map +1 -0
  130. package/dist/peer-resolve.js +44 -0
  131. package/dist/peer-resolve.js.map +1 -0
  132. package/dist/runtime/asset-links.d.ts +15 -0
  133. package/dist/runtime/asset-links.d.ts.map +1 -0
  134. package/dist/runtime/asset-links.js +42 -0
  135. package/dist/runtime/asset-links.js.map +1 -0
  136. package/dist/runtime/clear-caches.d.ts +5 -0
  137. package/dist/runtime/clear-caches.d.ts.map +1 -0
  138. package/dist/runtime/clear-caches.js +8 -0
  139. package/dist/runtime/clear-caches.js.map +1 -0
  140. package/dist/runtime/context.d.ts +10 -0
  141. package/dist/runtime/context.d.ts.map +1 -0
  142. package/dist/runtime/context.js +42 -0
  143. package/dist/runtime/context.js.map +1 -0
  144. package/dist/runtime/handler-cache.d.ts +6 -0
  145. package/dist/runtime/handler-cache.d.ts.map +1 -0
  146. package/dist/runtime/handler-cache.js +14 -0
  147. package/dist/runtime/handler-cache.js.map +1 -0
  148. package/dist/runtime/invoke.d.ts +32 -0
  149. package/dist/runtime/invoke.d.ts.map +1 -0
  150. package/dist/runtime/invoke.js +111 -0
  151. package/dist/runtime/invoke.js.map +1 -0
  152. package/dist/runtime/loader.d.ts +17 -0
  153. package/dist/runtime/loader.d.ts.map +1 -0
  154. package/dist/runtime/loader.js +76 -0
  155. package/dist/runtime/loader.js.map +1 -0
  156. package/dist/runtime/logs.d.ts +19 -0
  157. package/dist/runtime/logs.d.ts.map +1 -0
  158. package/dist/runtime/logs.js +125 -0
  159. package/dist/runtime/logs.js.map +1 -0
  160. package/dist/util/payload.d.ts +13 -0
  161. package/dist/util/payload.d.ts.map +1 -0
  162. package/dist/util/payload.js +40 -0
  163. package/dist/util/payload.js.map +1 -0
  164. package/dist/util/tsx-register.d.ts +4 -0
  165. package/dist/util/tsx-register.d.ts.map +1 -0
  166. package/dist/util/tsx-register.js +27 -0
  167. package/dist/util/tsx-register.js.map +1 -0
  168. package/dist/version.d.ts +2 -0
  169. package/dist/version.d.ts.map +1 -0
  170. package/dist/version.js +2 -0
  171. package/dist/version.js.map +1 -0
  172. package/docs/README.md +23 -0
  173. package/docs/commands.md +294 -0
  174. package/docs/configuration.md +652 -0
  175. package/docs/getting-started.md +400 -0
  176. package/docs/recipes.md +743 -0
  177. package/docs/troubleshooting.md +393 -0
  178. package/package.json +76 -0
  179. package/templates/.env.example +5 -0
  180. package/templates/.vscode/launch.json +14 -0
  181. package/templates/events/sample.json +4 -0
  182. package/templates/lamkit.config.js +38 -0
  183. package/templates/lamkit.config.ts +27 -0
@@ -0,0 +1,45 @@
1
+ export type S3EventOptions = {
2
+ bucket?: string;
3
+ key?: string;
4
+ region?: string;
5
+ };
6
+ export declare const defaultS3Data: {
7
+ key: string;
8
+ };
9
+ export declare function buildS3Event(data: unknown, options?: S3EventOptions): {
10
+ Records: {
11
+ eventVersion: string;
12
+ eventSource: string;
13
+ awsRegion: string;
14
+ eventTime: string;
15
+ eventName: string;
16
+ userIdentity: {
17
+ principalId: string;
18
+ };
19
+ requestParameters: {
20
+ sourceIPAddress: string;
21
+ };
22
+ responseElements: {
23
+ 'x-amz-request-id': `${string}-${string}-${string}-${string}-${string}`;
24
+ 'x-amz-id-2': string;
25
+ };
26
+ s3: {
27
+ s3SchemaVersion: string;
28
+ configurationId: string;
29
+ bucket: {
30
+ name: string;
31
+ ownerIdentity: {
32
+ principalId: string;
33
+ };
34
+ arn: string;
35
+ };
36
+ object: {
37
+ key: string;
38
+ size: number;
39
+ eTag: string;
40
+ sequencer: string;
41
+ };
42
+ };
43
+ }[];
44
+ };
45
+ //# sourceMappingURL=s3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.d.ts","sourceRoot":"","sources":["../../src/events/s3.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,aAAa;;CAAyB,CAAC;AAEpD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CvE"}
@@ -0,0 +1,44 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ export const defaultS3Data = { key: 'sample.json' };
3
+ export function buildS3Event(data, options = {}) {
4
+ const region = options.region ?? 'us-east-1';
5
+ const meta = data && typeof data === 'object' && !Array.isArray(data)
6
+ ? data
7
+ : {};
8
+ const bucket = String(meta.bucket ?? options.bucket ?? 'local-bucket');
9
+ const key = String(meta.key ?? options.key ?? defaultS3Data.key);
10
+ const eventTime = new Date().toISOString();
11
+ return {
12
+ Records: [
13
+ {
14
+ eventVersion: '2.1',
15
+ eventSource: 'aws:s3',
16
+ awsRegion: region,
17
+ eventTime,
18
+ eventName: 'ObjectCreated:Put',
19
+ userIdentity: { principalId: 'local:dev' },
20
+ requestParameters: { sourceIPAddress: '127.0.0.1' },
21
+ responseElements: {
22
+ 'x-amz-request-id': randomUUID(),
23
+ 'x-amz-id-2': 'local-id-2',
24
+ },
25
+ s3: {
26
+ s3SchemaVersion: '1.0',
27
+ configurationId: 'lamkit-local',
28
+ bucket: {
29
+ name: bucket,
30
+ ownerIdentity: { principalId: 'local:dev' },
31
+ arn: `arn:aws:s3:::${bucket}`,
32
+ },
33
+ object: {
34
+ key,
35
+ size: 0,
36
+ eTag: 'local-etag',
37
+ sequencer: '0',
38
+ },
39
+ },
40
+ },
41
+ ],
42
+ };
43
+ }
44
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/events/s3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;AAEpD,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,UAA0B,EAAE;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAC7C,MAAM,IAAI,GACR,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACtD,CAAC,CAAE,IAAgC;QACnC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,KAAK;gBACnB,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,MAAM;gBACjB,SAAS;gBACT,SAAS,EAAE,mBAAmB;gBAC9B,YAAY,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;gBAC1C,iBAAiB,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE;gBACnD,gBAAgB,EAAE;oBAChB,kBAAkB,EAAE,UAAU,EAAE;oBAChC,YAAY,EAAE,YAAY;iBAC3B;gBACD,EAAE,EAAE;oBACF,eAAe,EAAE,KAAK;oBACtB,eAAe,EAAE,cAAc;oBAC/B,MAAM,EAAE;wBACN,IAAI,EAAE,MAAM;wBACZ,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE;wBAC3C,GAAG,EAAE,gBAAgB,MAAM,EAAE;qBAC9B;oBACD,MAAM,EAAE;wBACN,GAAG;wBACH,IAAI,EAAE,CAAC;wBACP,IAAI,EAAE,YAAY;wBAClB,SAAS,EAAE,GAAG;qBACf;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare function buildScheduledEvent(_data?: unknown, region?: string): {
2
+ version: string;
3
+ id: string;
4
+ 'detail-type': string;
5
+ source: string;
6
+ account: string;
7
+ time: string;
8
+ region: string;
9
+ resources: string[];
10
+ detail: {};
11
+ };
12
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/events/schedule.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,SAAc;;;;;;;;;;EAcxE"}
@@ -0,0 +1,15 @@
1
+ export function buildScheduledEvent(_data, region = 'us-east-1') {
2
+ const time = new Date().toISOString();
3
+ return {
4
+ version: '0',
5
+ id: 'local-schedule-id',
6
+ 'detail-type': 'Scheduled Event',
7
+ source: 'aws.events',
8
+ account: '000000000000',
9
+ time,
10
+ region,
11
+ resources: [`arn:aws:events:${region}:000000000000:rule/local-schedule`],
12
+ detail: {},
13
+ };
14
+ }
15
+ //# sourceMappingURL=schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/events/schedule.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,KAAe,EAAE,MAAM,GAAG,WAAW;IACvE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,GAAG;QACZ,EAAE,EAAE,mBAAmB;QACvB,aAAa,EAAE,iBAAiB;QAChC,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,cAAc;QACvB,IAAI;QACJ,MAAM;QACN,SAAS,EAAE,CAAC,kBAAkB,MAAM,mCAAmC,CAAC;QACxE,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ export declare const defaultSnsData: {
2
+ message: string;
3
+ };
4
+ export declare function buildSnsEvent(data: unknown, region?: string): {
5
+ Records: {
6
+ EventSource: string;
7
+ EventVersion: string;
8
+ EventSubscriptionArn: string;
9
+ Sns: {
10
+ Type: string;
11
+ MessageId: `${string}-${string}-${string}-${string}-${string}`;
12
+ TopicArn: string;
13
+ Subject: string;
14
+ Message: string;
15
+ Timestamp: string;
16
+ SignatureVersion: string;
17
+ Signature: string;
18
+ SigningCertUrl: string;
19
+ UnsubscribeUrl: string;
20
+ MessageAttributes: {};
21
+ };
22
+ }[];
23
+ };
24
+ //# sourceMappingURL=sns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sns.d.ts","sourceRoot":"","sources":["../../src/events/sns.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;CAAmC,CAAC;AAE/D,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAc;;;;;;;;;;;;;;;;;;;EA2BhE"}
@@ -0,0 +1,31 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { serializePayload } from './util.js';
3
+ export const defaultSnsData = { message: 'hello from lamkit' };
4
+ export function buildSnsEvent(data, region = 'us-east-1') {
5
+ const message = serializePayload(data ?? defaultSnsData);
6
+ const messageId = randomUUID();
7
+ const timestamp = new Date().toISOString();
8
+ return {
9
+ Records: [
10
+ {
11
+ EventSource: 'aws:sns',
12
+ EventVersion: '1.0',
13
+ EventSubscriptionArn: `arn:aws:sns:${region}:000000000000:local-topic:local-subscription`,
14
+ Sns: {
15
+ Type: 'Notification',
16
+ MessageId: messageId,
17
+ TopicArn: `arn:aws:sns:${region}:000000000000:local-topic`,
18
+ Subject: 'lamkit-local',
19
+ Message: message,
20
+ Timestamp: timestamp,
21
+ SignatureVersion: '1',
22
+ Signature: 'local-signature',
23
+ SigningCertUrl: 'https://localhost/cert.pem',
24
+ UnsubscribeUrl: 'https://localhost/unsubscribe',
25
+ MessageAttributes: {},
26
+ },
27
+ },
28
+ ],
29
+ };
30
+ }
31
+ //# sourceMappingURL=sns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sns.js","sourceRoot":"","sources":["../../src/events/sns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/D,MAAM,UAAU,aAAa,CAAC,IAAa,EAAE,MAAM,GAAG,WAAW;IAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,IAAI,cAAc,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,KAAK;gBACnB,oBAAoB,EAAE,eAAe,MAAM,8CAA8C;gBACzF,GAAG,EAAE;oBACH,IAAI,EAAE,cAAc;oBACpB,SAAS,EAAE,SAAS;oBACpB,QAAQ,EAAE,eAAe,MAAM,2BAA2B;oBAC1D,OAAO,EAAE,cAAc;oBACvB,OAAO,EAAE,OAAO;oBAChB,SAAS,EAAE,SAAS;oBACpB,gBAAgB,EAAE,GAAG;oBACrB,SAAS,EAAE,iBAAiB;oBAC5B,cAAc,EAAE,4BAA4B;oBAC5C,cAAc,EAAE,+BAA+B;oBAC/C,iBAAiB,EAAE,EAAE;iBACtB;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ export type SqsRecord = {
2
+ messageId: string;
3
+ receiptHandle: string;
4
+ body: string;
5
+ attributes: Record<string, string>;
6
+ messageAttributes: Record<string, SqsMessageAttributeValue>;
7
+ md5OfBody: string;
8
+ eventSource: 'aws:sqs';
9
+ eventSourceARN: string;
10
+ awsRegion: string;
11
+ };
12
+ export type SqsMessageAttributeValue = {
13
+ stringValue?: string;
14
+ binaryValue?: string;
15
+ stringListValues?: string[];
16
+ binaryListValues?: string[];
17
+ dataType: string;
18
+ };
19
+ export type AwsSqsMessageAttribute = {
20
+ StringValue?: string;
21
+ BinaryValue?: string;
22
+ StringListValues?: string[];
23
+ BinaryListValues?: string[];
24
+ DataType?: string;
25
+ };
26
+ export type AwsSqsMessage = {
27
+ MessageId?: string;
28
+ ReceiptHandle?: string;
29
+ Body?: string;
30
+ Attributes?: Record<string, string>;
31
+ MessageAttributes?: Record<string, AwsSqsMessageAttribute>;
32
+ };
33
+ export declare function queueArnFromUrl(queueUrl: string, region: string): string;
34
+ export declare function mapAwsMessageAttributes(attributes?: Record<string, AwsSqsMessageAttribute>): Record<string, SqsMessageAttributeValue>;
35
+ export type BuildSimulatedSqsRecordOptions = {
36
+ body: string;
37
+ region: string;
38
+ queueArn?: string;
39
+ messageId?: string;
40
+ receiptHandle?: string;
41
+ };
42
+ export declare function buildSimulatedSqsRecord(options: BuildSimulatedSqsRecordOptions): SqsRecord;
43
+ export declare function buildSqsRecordFromAwsMessage(message: AwsSqsMessage, queueArn: string, region: string): SqsRecord;
44
+ //# sourceMappingURL=sqs-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqs-record.d.ts","sourceRoot":"","sources":["../../src/events/sqs-record.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAC5D,CAAC;AAOF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUxE;AAED,wBAAgB,uBAAuB,CACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAClD,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAsB1C;AAcD,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,SAAS,CAe1F;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,SAAS,CAcX"}
@@ -0,0 +1,75 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ const DEFAULT_SYSTEM_ATTRIBUTES = {
3
+ ApproximateReceiveCount: '1',
4
+ SenderId: 'local:dev',
5
+ };
6
+ export function queueArnFromUrl(queueUrl, region) {
7
+ try {
8
+ const url = new URL(queueUrl);
9
+ const parts = url.pathname.split('/').filter(Boolean);
10
+ const queueName = parts[parts.length - 1] ?? 'local-queue';
11
+ const accountId = parts.length >= 2 ? parts[parts.length - 2] : '000000000000';
12
+ return `arn:aws:sqs:${region}:${accountId}:${queueName}`;
13
+ }
14
+ catch {
15
+ return `arn:aws:sqs:${region}:000000000000:local-queue`;
16
+ }
17
+ }
18
+ export function mapAwsMessageAttributes(attributes) {
19
+ if (!attributes) {
20
+ return {};
21
+ }
22
+ const mapped = {};
23
+ for (const [name, value] of Object.entries(attributes)) {
24
+ mapped[name] = {
25
+ ...(value.StringValue !== undefined ? { stringValue: value.StringValue } : {}),
26
+ ...(value.BinaryValue !== undefined ? { binaryValue: value.BinaryValue } : {}),
27
+ ...(value.StringListValues !== undefined
28
+ ? { stringListValues: value.StringListValues }
29
+ : {}),
30
+ ...(value.BinaryListValues !== undefined
31
+ ? { binaryListValues: value.BinaryListValues }
32
+ : {}),
33
+ dataType: value.DataType ?? 'String',
34
+ };
35
+ }
36
+ return mapped;
37
+ }
38
+ function defaultAttributes(overrides) {
39
+ const timestamp = String(Date.now());
40
+ return {
41
+ ...DEFAULT_SYSTEM_ATTRIBUTES,
42
+ SentTimestamp: timestamp,
43
+ ApproximateFirstReceiveTimestamp: timestamp,
44
+ ...overrides,
45
+ };
46
+ }
47
+ export function buildSimulatedSqsRecord(options) {
48
+ const messageId = options.messageId ?? randomUUID();
49
+ return {
50
+ messageId,
51
+ receiptHandle: options.receiptHandle ?? `local-receipt-${messageId}`,
52
+ body: options.body,
53
+ attributes: defaultAttributes(),
54
+ messageAttributes: {},
55
+ md5OfBody: 'local-md5',
56
+ eventSource: 'aws:sqs',
57
+ eventSourceARN: options.queueArn ?? `arn:aws:sqs:${options.region}:000000000000:local-queue`,
58
+ awsRegion: options.region,
59
+ };
60
+ }
61
+ export function buildSqsRecordFromAwsMessage(message, queueArn, region) {
62
+ const messageId = message.MessageId ?? 'unknown';
63
+ return {
64
+ messageId,
65
+ receiptHandle: message.ReceiptHandle ?? '',
66
+ body: message.Body ?? '',
67
+ attributes: defaultAttributes(message.Attributes),
68
+ messageAttributes: mapAwsMessageAttributes(message.MessageAttributes),
69
+ md5OfBody: 'local-md5',
70
+ eventSource: 'aws:sqs',
71
+ eventSourceARN: queueArn,
72
+ awsRegion: region,
73
+ };
74
+ }
75
+ //# sourceMappingURL=sqs-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqs-record.js","sourceRoot":"","sources":["../../src/events/sqs-record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type SqsRecord } from './sqs-record.js';
2
+ export type { SqsRecord } from './sqs-record.js';
3
+ export { queueArnFromUrl } from './sqs-record.js';
4
+ /** AWS `SQSEvent` shape built by `buildSqsEvent()`. */
5
+ export type SqsEvent = {
6
+ Records: SqsRecord[];
7
+ };
8
+ export type BuildSqsEventOptions = {
9
+ /** AWS region embedded in ARNs and attributes. Default: `us-east-1` */
10
+ region?: string;
11
+ /** Duplicate the same body into N records (ignored when `data` is an array). Default: `1` */
12
+ batchSize?: number;
13
+ /** Optional queue ARN on each record. Derived from URL when omitted. */
14
+ queueArn?: string;
15
+ };
16
+ export declare function buildSqsRecords(data: unknown, options?: BuildSqsEventOptions): SqsRecord[];
17
+ export declare function buildSqsEvent(data: unknown, region?: string, batchSize?: number, queueArn?: string): SqsEvent;
18
+ export declare const defaultSqsData: {
19
+ message: string;
20
+ };
21
+ //# sourceMappingURL=sqs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqs.d.ts","sourceRoot":"","sources":["../../src/events/sqs.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,uDAAuD;AACvD,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AASF,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,oBAAyB,GAAG,SAAS,EAAE,CAmB9F;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,EACb,MAAM,SAAc,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,QAAQ,CAIV;AAED,eAAO,MAAM,cAAc;;CAAmC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { buildSimulatedSqsRecord, } from './sqs-record.js';
2
+ export { queueArnFromUrl } from './sqs-record.js';
3
+ function serializeBody(data) {
4
+ if (typeof data === 'string') {
5
+ return data;
6
+ }
7
+ return JSON.stringify(data ?? {});
8
+ }
9
+ export function buildSqsRecords(data, options = {}) {
10
+ const region = options.region ?? 'us-east-1';
11
+ if (Array.isArray(data)) {
12
+ return data.map((item) => buildSimulatedSqsRecord({
13
+ body: serializeBody(item),
14
+ region,
15
+ queueArn: options.queueArn,
16
+ }));
17
+ }
18
+ const batchSize = Math.max(1, options.batchSize ?? 1);
19
+ const body = serializeBody(data);
20
+ return Array.from({ length: batchSize }, () => buildSimulatedSqsRecord({ body, region, queueArn: options.queueArn }));
21
+ }
22
+ export function buildSqsEvent(data, region = 'us-east-1', batchSize, queueArn) {
23
+ return {
24
+ Records: buildSqsRecords(data, { region, batchSize, queueArn }),
25
+ };
26
+ }
27
+ export const defaultSqsData = { message: 'hello from lamkit' };
28
+ //# sourceMappingURL=sqs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqs.js","sourceRoot":"","sources":["../../src/events/sqs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAExB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAgBlD,SAAS,aAAa,CAAC,IAAa;IAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,UAAgC,EAAE;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,uBAAuB,CAAC;YACtB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC;YACzB,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAC5C,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,IAAa,EACb,MAAM,GAAG,WAAW,EACpB,SAAkB,EAClB,QAAiB;IAEjB,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function serializePayload(data: unknown): string;
2
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/events/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAKtD"}
@@ -0,0 +1,7 @@
1
+ export function serializePayload(data) {
2
+ if (typeof data === 'string') {
3
+ return data;
4
+ }
5
+ return JSON.stringify(data ?? {});
6
+ }
7
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/events/util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { LAMKIT_VERSION } from './version.js';
2
+ export { buildSqsEvent, buildSqsRecords, type BuildSqsEventOptions, type SqsEvent, type SqsRecord, } from './events/sqs.js';
3
+ export { resolvePayload, readPayloadFile } from './util/payload.js';
4
+ export { clearAllHandlerCaches, clearHandlerCache, type LoadHandlerOptions } from './runtime/loader.js';
5
+ export { ensureAssetLinks, AssetLinkError } from './runtime/asset-links.js';
6
+ export { queueArnFromUrl, mapAwsMessageAttributes } from './events/sqs-record.js';
7
+ export { countBatchItemFailures, isBatchItemFailures } from './aws/batch-response.js';
8
+ export { buildSqsSendInput } from './aws/sqs-send.js';
9
+ export { resolveTestExitCode } from './commands/test.js';
10
+ export { resolveListenExitCode } from './commands/listen.js';
11
+ export { invokeHandler, type Handler, type InvokeResult } from './runtime/invoke.js';
12
+ export { defineConfig, formatZodError, parseConfig, type AssetLink, type AwsResourceConfig, type DefaultsAwsConfig, type DefaultsConfig, type FunctionConfig, type LamkitConfig, type LamkitConfigInput, type LamkitMultiFunctionConfig, type LamkitSingleFunctionConfig, type LogFormat, type TestConfig, type Trigger, } from './config/schema.js';
13
+ export type { MergedConfig, MergedFunctionConfig } from './config/merge.js';
14
+ export { loadProjectEnv, loadEnvFileAt, applyEnvAliases, applyEnvRules, type LoadProjectEnvOptions, type ProjectEnvRule, } from './config/project-env.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACX,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,OAAO,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ export { LAMKIT_VERSION } from './version.js';
2
+ export { buildSqsEvent, buildSqsRecords, } from './events/sqs.js';
3
+ export { resolvePayload, readPayloadFile } from './util/payload.js';
4
+ export { clearAllHandlerCaches, clearHandlerCache } from './runtime/loader.js';
5
+ export { ensureAssetLinks, AssetLinkError } from './runtime/asset-links.js';
6
+ export { queueArnFromUrl, mapAwsMessageAttributes } from './events/sqs-record.js';
7
+ export { countBatchItemFailures, isBatchItemFailures } from './aws/batch-response.js';
8
+ export { buildSqsSendInput } from './aws/sqs-send.js';
9
+ export { resolveTestExitCode } from './commands/test.js';
10
+ export { resolveListenExitCode } from './commands/listen.js';
11
+ export { invokeHandler } from './runtime/invoke.js';
12
+ export { defineConfig, formatZodError, parseConfig, } from './config/schema.js';
13
+ export { loadProjectEnv, loadEnvFileAt, applyEnvAliases, applyEnvRules, } from './config/project-env.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,eAAe,GAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAmC,MAAM,qBAAqB,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,GAaZ,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,GAGd,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare class MissingPeerError extends Error {
2
+ constructor(packageName: string, feature: string);
3
+ }
4
+ export declare function importPeerFromConsumer(cwd: string, specifier: string, feature: string): Promise<Record<string, unknown>>;
5
+ //# sourceMappingURL=peer-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-resolve.d.ts","sourceRoot":"","sources":["../src/peer-resolve.ts"],"names":[],"mappings":"AAKA,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAMjD;AAuBD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAclC"}
@@ -0,0 +1,44 @@
1
+ import { createRequire } from 'node:module';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { pathToFileURL } from 'node:url';
5
+ export class MissingPeerError extends Error {
6
+ constructor(packageName, feature) {
7
+ super(`Optional peer "${packageName}" is required for ${feature}. Install with: npm i -D ${packageName}`);
8
+ this.name = 'MissingPeerError';
9
+ }
10
+ }
11
+ function createConsumerRequire(cwd) {
12
+ const packageJsonPath = join(cwd, 'package.json');
13
+ if (existsSync(packageJsonPath)) {
14
+ return createRequire(packageJsonPath);
15
+ }
16
+ return createRequire(join(cwd, 'index.js'));
17
+ }
18
+ function isModuleNotFoundError(error) {
19
+ if (!error || typeof error !== 'object') {
20
+ return false;
21
+ }
22
+ const err = error;
23
+ if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ERR_MODULE_NOT_FOUND') {
24
+ return true;
25
+ }
26
+ return typeof err.message === 'string' && err.message.includes('Cannot find module');
27
+ }
28
+ export async function importPeerFromConsumer(cwd, specifier, feature) {
29
+ try {
30
+ const consumerRequire = createConsumerRequire(cwd);
31
+ const resolved = consumerRequire.resolve(specifier);
32
+ return (await import(pathToFileURL(resolved).href));
33
+ }
34
+ catch (error) {
35
+ if (error instanceof MissingPeerError) {
36
+ throw error;
37
+ }
38
+ if (isModuleNotFoundError(error)) {
39
+ throw new MissingPeerError(specifier, feature);
40
+ }
41
+ throw error;
42
+ }
43
+ }
44
+ //# sourceMappingURL=peer-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-resolve.js","sourceRoot":"","sources":["../src/peer-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,WAAmB,EAAE,OAAe;QAC9C,KAAK,CACH,kBAAkB,WAAW,qBAAqB,OAAO,4BAA4B,WAAW,EAAE,CACnG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAA4C,CAAC;IACzD,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,GAAG,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAW,EACX,SAAiB,EACjB,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAA4B,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { AssetLink } from '../config/types.js';
2
+ export type { AssetLink };
3
+ export declare class AssetLinkError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ /**
7
+ * Ensure local asset paths exist before loading handlers.
8
+ *
9
+ * Compiled Lambda bundles often `require()` paths relative to `dist/` (e.g.
10
+ * `../../abis/foo.json`). In Docker those folders are copied next to `dist/`;
11
+ * in a monorepo they may only exist under `src/`. Declaring `assetLinks` creates
12
+ * a symlink when `path` is missing and `target` exists.
13
+ */
14
+ export declare function ensureAssetLinks(cwd: string, links: AssetLink[] | undefined): void;
15
+ //# sourceMappingURL=asset-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-links.d.ts","sourceRoot":"","sources":["../../src/runtime/asset-links.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,IAAI,CAIlF"}
@@ -0,0 +1,42 @@
1
+ import { existsSync, lstatSync, symlinkSync } from 'node:fs';
2
+ import { dirname, relative, resolve } from 'node:path';
3
+ export class AssetLinkError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = 'AssetLinkError';
7
+ }
8
+ }
9
+ /**
10
+ * Ensure local asset paths exist before loading handlers.
11
+ *
12
+ * Compiled Lambda bundles often `require()` paths relative to `dist/` (e.g.
13
+ * `../../abis/foo.json`). In Docker those folders are copied next to `dist/`;
14
+ * in a monorepo they may only exist under `src/`. Declaring `assetLinks` creates
15
+ * a symlink when `path` is missing and `target` exists.
16
+ */
17
+ export function ensureAssetLinks(cwd, links) {
18
+ for (const link of links ?? []) {
19
+ ensureAssetLink(cwd, link);
20
+ }
21
+ }
22
+ function ensureAssetLink(cwd, { path, target }) {
23
+ const linkPath = resolve(cwd, path);
24
+ const targetPath = resolve(cwd, target);
25
+ if (!existsSync(targetPath)) {
26
+ throw new AssetLinkError(`assetLinks: target does not exist: ${target} (resolved: ${targetPath})`);
27
+ }
28
+ if (existsSync(linkPath)) {
29
+ return;
30
+ }
31
+ const targetStat = lstatSync(targetPath);
32
+ const linkType = targetStat.isDirectory() ? 'dir' : 'file';
33
+ const relTarget = relative(dirname(linkPath), targetPath);
34
+ try {
35
+ symlinkSync(relTarget, linkPath, linkType);
36
+ }
37
+ catch (error) {
38
+ const message = error instanceof Error ? error.message : String(error);
39
+ throw new AssetLinkError(`assetLinks: failed to link ${path} -> ${target}: ${message}`);
40
+ }
41
+ }
42
+ //# sourceMappingURL=asset-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-links.js","sourceRoot":"","sources":["../../src/runtime/asset-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKvD,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,KAA8B;IAC1E,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/B,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAa;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,cAAc,CACtB,sCAAsC,MAAM,eAAe,UAAU,GAAG,CACzE,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,cAAc,CACtB,8BAA8B,IAAI,OAAO,MAAM,KAAK,OAAO,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Clears the handler module cache (use with `--reload`). */
2
+ export declare function clearAllHandlerCaches(): void;
3
+ /** @alias clearAllHandlerCaches */
4
+ export declare const clearHandlerCache: typeof clearAllHandlerCaches;
5
+ //# sourceMappingURL=clear-caches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clear-caches.d.ts","sourceRoot":"","sources":["../../src/runtime/clear-caches.ts"],"names":[],"mappings":"AAEA,6DAA6D;AAC7D,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,8BAAwB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { clearPlainHandlerCache } from './handler-cache.js';
2
+ /** Clears the handler module cache (use with `--reload`). */
3
+ export function clearAllHandlerCaches() {
4
+ clearPlainHandlerCache();
5
+ }
6
+ /** @alias clearAllHandlerCaches */
7
+ export const clearHandlerCache = clearAllHandlerCaches;
8
+ //# sourceMappingURL=clear-caches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clear-caches.js","sourceRoot":"","sources":["../../src/runtime/clear-caches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,6DAA6D;AAC7D,MAAM,UAAU,qBAAqB;IACnC,sBAAsB,EAAE,CAAC;AAC3B,CAAC;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { Context } from 'aws-lambda';
2
+ import type { MergedFunctionConfig } from '../config/merge.js';
3
+ export declare function resetColdStart(): void;
4
+ export declare function isColdStart(): boolean;
5
+ export declare function markWarm(): void;
6
+ export declare function setInitDurationMs(ms: number): void;
7
+ export declare function getInitDurationMs(): number | undefined;
8
+ export declare function createContext(fn: MergedFunctionConfig): Context;
9
+ export declare function getRequestId(context: Context): string;
10
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/runtime/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAmB/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAErD"}