local-serverless-stack 1.0.1 → 1.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 +125 -3
  2. package/README.md +75 -26
  3. package/bin/cli.js +81 -15
  4. package/bin/i18n.js +30 -3
  5. package/dist/client/index.d.ts +1 -1
  6. package/dist/client/index.d.ts.map +1 -1
  7. package/dist/client/namespaces/services.d.ts +46 -0
  8. package/dist/client/namespaces/services.d.ts.map +1 -1
  9. package/dist/client/namespaces/services.js +1 -0
  10. package/dist/client/namespaces/services.js.map +1 -1
  11. package/dist/mcp/tools.d.ts.map +1 -1
  12. package/dist/mcp/tools.js +17 -0
  13. package/dist/mcp/tools.js.map +1 -1
  14. package/dist/server/engine/backends/self-backend.d.ts +26 -1
  15. package/dist/server/engine/backends/self-backend.d.ts.map +1 -1
  16. package/dist/server/engine/backends/self-backend.js +104 -11
  17. package/dist/server/engine/backends/self-backend.js.map +1 -1
  18. package/dist/server/engine/emulators/dynamodb/expressions/parser.d.ts.map +1 -1
  19. package/dist/server/engine/emulators/dynamodb/expressions/parser.js +12 -1
  20. package/dist/server/engine/emulators/dynamodb/expressions/parser.js.map +1 -1
  21. package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.d.ts +3 -0
  22. package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.d.ts.map +1 -0
  23. package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.js +78 -0
  24. package/dist/server/engine/emulators/dynamodb/expressions/reserved-words.js.map +1 -0
  25. package/dist/server/engine/emulators/dynamodb/index.d.ts +11 -0
  26. package/dist/server/engine/emulators/dynamodb/index.d.ts.map +1 -1
  27. package/dist/server/engine/emulators/dynamodb/index.js +101 -7
  28. package/dist/server/engine/emulators/dynamodb/index.js.map +1 -1
  29. package/dist/server/engine/emulators/dynamodb/query.d.ts +1 -0
  30. package/dist/server/engine/emulators/dynamodb/query.d.ts.map +1 -1
  31. package/dist/server/engine/emulators/dynamodb/query.js +34 -6
  32. package/dist/server/engine/emulators/dynamodb/query.js.map +1 -1
  33. package/dist/server/engine/emulators/s3/index.d.ts +10 -0
  34. package/dist/server/engine/emulators/s3/index.d.ts.map +1 -1
  35. package/dist/server/engine/emulators/s3/index.js +369 -25
  36. package/dist/server/engine/emulators/s3/index.js.map +1 -1
  37. package/dist/server/engine/emulators/sqs/index.d.ts +2 -0
  38. package/dist/server/engine/emulators/sqs/index.d.ts.map +1 -1
  39. package/dist/server/engine/emulators/sqs/index.js +70 -7
  40. package/dist/server/engine/emulators/sqs/index.js.map +1 -1
  41. package/dist/server/engine/emulators/sqs/queue.d.ts +2 -1
  42. package/dist/server/engine/emulators/sqs/queue.d.ts.map +1 -1
  43. package/dist/server/engine/emulators/sqs/queue.js +68 -35
  44. package/dist/server/engine/emulators/sqs/queue.js.map +1 -1
  45. package/dist/server/engine/emulators/ssm/index.d.ts +31 -0
  46. package/dist/server/engine/emulators/ssm/index.d.ts.map +1 -0
  47. package/dist/server/engine/emulators/ssm/index.js +670 -0
  48. package/dist/server/engine/emulators/ssm/index.js.map +1 -0
  49. package/dist/server/engine/http/errors.d.ts +1 -0
  50. package/dist/server/engine/http/errors.d.ts.map +1 -1
  51. package/dist/server/engine/http/errors.js +13 -5
  52. package/dist/server/engine/http/errors.js.map +1 -1
  53. package/dist/server/engine/http/is-aws-request.d.ts.map +1 -1
  54. package/dist/server/engine/http/is-aws-request.js +13 -3
  55. package/dist/server/engine/http/is-aws-request.js.map +1 -1
  56. package/dist/server/engine/http/protocols/aws-json.d.ts +1 -0
  57. package/dist/server/engine/http/protocols/aws-json.d.ts.map +1 -1
  58. package/dist/server/engine/http/protocols/aws-json.js +13 -0
  59. package/dist/server/engine/http/protocols/aws-json.js.map +1 -1
  60. package/dist/server/engine/http/reset.d.ts +4 -0
  61. package/dist/server/engine/http/reset.d.ts.map +1 -0
  62. package/dist/server/engine/http/reset.js +17 -0
  63. package/dist/server/engine/http/reset.js.map +1 -0
  64. package/dist/server/engine/http/router.d.ts +1 -0
  65. package/dist/server/engine/http/router.d.ts.map +1 -1
  66. package/dist/server/engine/http/router.js +185 -34
  67. package/dist/server/engine/http/router.js.map +1 -1
  68. package/dist/server/engine/types.d.ts +2 -1
  69. package/dist/server/engine/types.d.ts.map +1 -1
  70. package/dist/server/routes/apis.d.ts.map +1 -1
  71. package/dist/server/routes/apis.js +6 -0
  72. package/dist/server/routes/apis.js.map +1 -1
  73. package/dist/server/routes/config.d.ts.map +1 -1
  74. package/dist/server/routes/config.js +19 -1
  75. package/dist/server/routes/config.js.map +1 -1
  76. package/dist/server/routes/services.d.ts.map +1 -1
  77. package/dist/server/routes/services.js +49 -1
  78. package/dist/server/routes/services.js.map +1 -1
  79. package/dist/server/runtime/runtime-worker.js +33 -3
  80. package/dist/server/runtime/runtime-worker.js.map +1 -1
  81. package/dist/server/services/api-gateway-events.d.ts +14 -0
  82. package/dist/server/services/api-gateway-events.d.ts.map +1 -1
  83. package/dist/server/services/api-gateway-events.js +114 -8
  84. package/dist/server/services/api-gateway-events.js.map +1 -1
  85. package/dist/server/services/artifact-staleness.d.ts +20 -0
  86. package/dist/server/services/artifact-staleness.d.ts.map +1 -0
  87. package/dist/server/services/artifact-staleness.js +115 -0
  88. package/dist/server/services/artifact-staleness.js.map +1 -0
  89. package/dist/server/services/authorizer-service.d.ts +34 -5
  90. package/dist/server/services/authorizer-service.d.ts.map +1 -1
  91. package/dist/server/services/authorizer-service.js +0 -0
  92. package/dist/server/services/authorizer-service.js.map +1 -1
  93. package/dist/server/services/cfn-intrinsics.d.ts +63 -0
  94. package/dist/server/services/cfn-intrinsics.d.ts.map +1 -0
  95. package/dist/server/services/cfn-intrinsics.js +403 -0
  96. package/dist/server/services/cfn-intrinsics.js.map +1 -0
  97. package/dist/server/services/cfn-physical-values.d.ts +51 -0
  98. package/dist/server/services/cfn-physical-values.d.ts.map +1 -0
  99. package/dist/server/services/cfn-physical-values.js +186 -0
  100. package/dist/server/services/cfn-physical-values.js.map +1 -0
  101. package/dist/server/services/cloudformation-parser.d.ts +26 -3
  102. package/dist/server/services/cloudformation-parser.d.ts.map +1 -1
  103. package/dist/server/services/cloudformation-parser.js +76 -4
  104. package/dist/server/services/cloudformation-parser.js.map +1 -1
  105. package/dist/server/services/config-manager.d.ts +24 -2
  106. package/dist/server/services/config-manager.d.ts.map +1 -1
  107. package/dist/server/services/config-manager.js +60 -7
  108. package/dist/server/services/config-manager.js.map +1 -1
  109. package/dist/server/services/gateway-manager.d.ts.map +1 -1
  110. package/dist/server/services/gateway-manager.js +52 -20
  111. package/dist/server/services/gateway-manager.js.map +1 -1
  112. package/dist/server/services/lambda-runtime-manager.d.ts +1 -0
  113. package/dist/server/services/lambda-runtime-manager.d.ts.map +1 -1
  114. package/dist/server/services/lambda-runtime-manager.js +36 -14
  115. package/dist/server/services/lambda-runtime-manager.js.map +1 -1
  116. package/dist/server/services/raw-api-assembler.d.ts +1 -1
  117. package/dist/server/services/raw-api-assembler.d.ts.map +1 -1
  118. package/dist/server/services/raw-api-assembler.js +18 -8
  119. package/dist/server/services/raw-api-assembler.js.map +1 -1
  120. package/dist/server/services/resource-provisioner.d.ts +12 -0
  121. package/dist/server/services/resource-provisioner.d.ts.map +1 -1
  122. package/dist/server/services/resource-provisioner.js +128 -13
  123. package/dist/server/services/resource-provisioner.js.map +1 -1
  124. package/dist/server/services/serverless-state-parser.d.ts +45 -2
  125. package/dist/server/services/serverless-state-parser.d.ts.map +1 -1
  126. package/dist/server/services/serverless-state-parser.js +217 -29
  127. package/dist/server/services/serverless-state-parser.js.map +1 -1
  128. package/dist/server/services/service-graph.d.ts +76 -0
  129. package/dist/server/services/service-graph.d.ts.map +1 -0
  130. package/dist/server/services/service-graph.js +914 -0
  131. package/dist/server/services/service-graph.js.map +1 -0
  132. package/dist/server/services/service-registrar.d.ts +4 -0
  133. package/dist/server/services/service-registrar.d.ts.map +1 -1
  134. package/dist/server/services/service-registrar.js +129 -55
  135. package/dist/server/services/service-registrar.js.map +1 -1
  136. package/dist/server/services/source-watcher.d.ts +1 -0
  137. package/dist/server/services/source-watcher.d.ts.map +1 -1
  138. package/dist/server/services/source-watcher.js +19 -1
  139. package/dist/server/services/source-watcher.js.map +1 -1
  140. package/dist/server/services/worker-runtime.d.ts +82 -0
  141. package/dist/server/services/worker-runtime.d.ts.map +1 -0
  142. package/dist/server/services/worker-runtime.js +303 -0
  143. package/dist/server/services/worker-runtime.js.map +1 -0
  144. package/dist/ui/assets/{ApisPage-CTOcNna-.js → ApisPage-BkW-QZ0X.js} +1 -1
  145. package/dist/ui/assets/BucketDetailPage-CJwTQJh7.js +1 -0
  146. package/dist/ui/assets/BucketsPage-B1xPVhZC.js +1 -0
  147. package/dist/ui/assets/{DynamoPage-BnFFKnIU.js → DynamoPage-DvbpwZDc.js} +1 -1
  148. package/dist/ui/assets/DynamoTablePage-xn3Lq3so.js +3 -0
  149. package/dist/ui/assets/LambdaDetailPage-BhUyO77H.js +4 -0
  150. package/dist/ui/assets/{LambdasPage-Bg-MWFBb.js → LambdasPage-CUF_4rOH.js} +1 -1
  151. package/dist/ui/assets/OnboardingPage-U49THUzu.js +1 -0
  152. package/dist/ui/assets/OpenSearchCollectionPage-BJTVNCq4.js +1 -0
  153. package/dist/ui/assets/OpenSearchPage-4s-egkB9.js +1 -0
  154. package/dist/ui/assets/OverviewPage-DJeJQktG.js +1 -0
  155. package/dist/ui/assets/{OverviewPage-CSWY71vZ.css → OverviewPage-DjQETmb_.css} +1 -1
  156. package/dist/ui/assets/QueueDetailPage-DWsy5Yt8.js +1 -0
  157. package/dist/ui/assets/QueuesPage-BZJSqman.js +1 -0
  158. package/dist/ui/assets/SecretsPage-YC9ua54G.js +1 -0
  159. package/dist/ui/assets/ServiceDetailPage-Cum5frP4.js +2 -0
  160. package/dist/ui/assets/ServicesPage-IpaPDuqx.js +2 -0
  161. package/dist/ui/assets/SettingsPage-BiCRU8O6.js +1 -0
  162. package/dist/ui/assets/index-BDlrAJhi.css +1 -0
  163. package/dist/ui/assets/index-BouKSS43.js +38 -0
  164. package/dist/ui/assets/resourceIcons-DZs28nbs.js +1 -0
  165. package/dist/ui/index.html +5 -2
  166. package/package.json +1 -1
  167. package/dist/ui/assets/BucketDetailPage-BXW8-FrE.js +0 -1
  168. package/dist/ui/assets/BucketsPage-DY_ITepb.js +0 -1
  169. package/dist/ui/assets/DynamoTablePage-BLCuyJHU.js +0 -3
  170. package/dist/ui/assets/LambdaDetailPage-D4rZNLRT.js +0 -4
  171. package/dist/ui/assets/OnboardingPage-nnl313Fm.js +0 -1
  172. package/dist/ui/assets/OpenSearchCollectionPage-Dn15lH_F.js +0 -1
  173. package/dist/ui/assets/OpenSearchPage-CgD5isok.js +0 -1
  174. package/dist/ui/assets/OverviewPage-m5sUr8IN.js +0 -1
  175. package/dist/ui/assets/QueueDetailPage-Ch_FDDoN.js +0 -1
  176. package/dist/ui/assets/QueuesPage-C_yDuGDu.js +0 -1
  177. package/dist/ui/assets/SecretsPage-BSGMSoqy.js +0 -1
  178. package/dist/ui/assets/ServiceDetailPage-6KyohyjI.js +0 -2
  179. package/dist/ui/assets/ServicesPage-BbSetOMo.js +0 -2
  180. package/dist/ui/assets/SettingsPage-BgF1jFr6.js +0 -1
  181. package/dist/ui/assets/index-D627ZyYU.css +0 -1
  182. package/dist/ui/assets/index-DuSPnI19.js +0 -37
  183. package/dist/ui/assets/resourceIcons-baecADXA.js +0 -1
@@ -32,6 +32,92 @@ export function sanitizeEnvironmentValues(env) {
32
32
  }
33
33
  return result;
34
34
  }
35
+ // The framework's logical id for a function: `getLambdaLogicalId` normalizes
36
+ // `-` → Dash and `_` → Underscore, upper-cases the first letter and appends
37
+ // "LambdaFunction" (`create-order` → `CreateDashorderLambdaFunction`).
38
+ export function lambdaLogicalIdFor(shortName) {
39
+ const normalized = shortName.replace(/-/g, 'Dash').replace(/_/g, 'Underscore');
40
+ return `${normalized.charAt(0).toUpperCase()}${normalized.slice(1)}LambdaFunction`;
41
+ }
42
+ // serverless-state.json is written with a cycle-safe serializer: an object
43
+ // reachable twice is emitted once and every other occurrence becomes
44
+ // `{"$ref": "$[\"service\"][\"provider\"]…"}`. A reader that does not follow
45
+ // those pointers sees an authorizer, an event or an env value that is just
46
+ // `{$ref}`. Follows a chain of pointers (bounded — a malformed file must not
47
+ // loop) and returns the value it lands on; anything that is not a pointer is
48
+ // returned untouched.
49
+ export function derefStatePointer(value, root) {
50
+ let current = value;
51
+ for (let hops = 0; hops < 16 && isStatePointer(current); hops++) {
52
+ const target = followPointer(current.$ref, root);
53
+ if (target === undefined)
54
+ return current;
55
+ current = target;
56
+ }
57
+ return current;
58
+ }
59
+ // `{"$ref": "$…"}` and nothing else. One left after derefStatePointer is a
60
+ // dangling pointer, which readers skip rather than mistake for data.
61
+ export function isStatePointer(value) {
62
+ if (!value || typeof value !== 'object' || Array.isArray(value))
63
+ return false;
64
+ const pointer = value.$ref;
65
+ return typeof pointer === 'string' && pointer.startsWith('$') && Object.keys(value).length === 1;
66
+ }
67
+ // `$["a"]["b"][0]` (and the dotted `$.a.b`) → the value at that path, or
68
+ // undefined when any step is missing.
69
+ function followPointer(pointer, root) {
70
+ const steps = /\[(\d+)\]|\["((?:[^"\\]|\\.)*)"\]|\.([A-Za-z_$][\w$]*)/gy;
71
+ steps.lastIndex = 1;
72
+ let node = root;
73
+ while (steps.lastIndex < pointer.length) {
74
+ const match = steps.exec(pointer);
75
+ if (!match || !node || typeof node !== 'object')
76
+ return undefined;
77
+ const key = match[1] !== undefined
78
+ ? Number(match[1])
79
+ : match[2] !== undefined ? JSON.parse(`"${match[2]}"`) : match[3];
80
+ node = node[key];
81
+ }
82
+ return node;
83
+ }
84
+ // The bits of the packaged state the registrar needs BEFORE parsing anything:
85
+ // the stack's name, stage and region feed the CloudFormation pseudo parameters.
86
+ export function readStateIdentity(state) {
87
+ const provider = state?.service?.provider || {};
88
+ const stage = provider.stage || 'dev';
89
+ const serviceName = state?.service?.service;
90
+ const region = typeof provider.region === 'string' && provider.region ? provider.region : undefined;
91
+ const stackName = typeof provider.stackName === 'string' && provider.stackName
92
+ ? provider.stackName
93
+ : serviceName ? `${serviceName}-${stage}` : undefined;
94
+ return { serviceName, stage, region, stackName };
95
+ }
96
+ // The stage a packaging command asks for: `--stage X`, `--stage=X`, `-s X`.
97
+ export function stageFromPackageArgs(args) {
98
+ for (let i = 0; i < args.length; i++) {
99
+ const arg = args[i];
100
+ const inline = /^--stage=(.+)$/.exec(arg);
101
+ if (inline)
102
+ return inline[1];
103
+ if ((arg === '--stage' || arg === '-s') && args[i + 1] && !args[i + 1].startsWith('-'))
104
+ return args[i + 1];
105
+ }
106
+ return undefined;
107
+ }
108
+ /**
109
+ * A `.serverless/` directory is whatever the LAST package run left there, for
110
+ * whichever stage it was run with. Registering it silently meant a service
111
+ * packaged for `prod` came up locally with prod table names and ARNs and no
112
+ * hint as to why nothing matched. Returns one warning per expectation the
113
+ * packaged stage contradicts.
114
+ */
115
+ export function stageMismatchWarnings(packagedStage, expectations) {
116
+ return expectations
117
+ .filter(e => e.stage && e.stage !== packagedStage)
118
+ .map(e => `The packaged artifacts are for stage "${packagedStage}", but ${e.source} says "${e.stage}" — ` +
119
+ 'resource and function names follow the packaged stage. Re-package for the stage you mean (lss register --repackage).');
120
+ }
35
121
  // A usable port or nothing — the state file is user-authored, so a string "3010"
36
122
  // is accepted but garbage never propagates into a listen() call.
37
123
  function asPort(value) {
@@ -39,36 +125,62 @@ function asPort(value) {
39
125
  return typeof n === 'number' && Number.isInteger(n) && n >= 1 && n <= 65535 ? n : undefined;
40
126
  }
41
127
  export class ServerlessStateParser {
42
- parse(state) {
128
+ // Per-parse state: the document `$ref` pointers resolve against, and the
129
+ // function names an authorizer reference may resolve to.
130
+ root = {};
131
+ shortNames = [];
132
+ lambdaNames = new Map();
133
+ fullNames = new Map();
134
+ parse(state, context = {}) {
43
135
  const warnings = [];
44
- const provider = state.service?.provider || {};
45
- const stage = provider.stage || 'dev';
46
- const serviceName = state.service?.service;
47
- const httpApiCors = Boolean(provider.httpApi?.cors);
136
+ this.root = state;
137
+ const provider = (this.deref(state.service?.provider) || {});
138
+ const { stage, serviceName } = readStateIdentity(state);
139
+ const httpApi = this.deref(provider.httpApi);
140
+ const httpApiCors = Boolean(httpApi?.cors);
48
141
  const lss = state.service?.custom?.lss || {};
49
142
  const apiPort = asPort(lss.apiPort);
50
143
  const invokePort = asPort(lss.invokePort);
51
- const authorizers = this.parseHttpApiAuthorizers(provider.httpApi?.authorizers || {}, warnings);
144
+ const fnDefs = (this.deref(state.service?.functions) || {});
145
+ this.shortNames = Object.keys(fnDefs);
146
+ this.lambdaNames = context.lambdaNames ?? new Map();
147
+ this.fullNames = new Map();
148
+ for (const [shortName, rawDef] of Object.entries(fnDefs)) {
149
+ const def = (this.deref(rawDef) || {});
150
+ this.fullNames.set(def.name || `${serviceName || 'unknown'}-${stage}-${shortName}`, shortName);
151
+ }
152
+ const authorizers = this.parseHttpApiAuthorizers((this.deref(httpApi?.authorizers) || {}), warnings);
52
153
  const functions = [];
154
+ const rawEnvironment = {};
53
155
  const routes = [];
54
- const fnDefs = state.service?.functions || {};
55
- for (const [shortName, def] of Object.entries(fnDefs)) {
56
- const events = Array.isArray(def.events) ? def.events : [];
156
+ for (const [shortName, rawDef] of Object.entries(fnDefs)) {
157
+ const def = (this.deref(rawDef) || {});
158
+ const rawEvents = this.deref(def.events);
159
+ const events = Array.isArray(rawEvents) ? rawEvents : [];
57
160
  const triggers = new Set();
58
161
  for (const rawEvent of events) {
59
- if (!rawEvent || typeof rawEvent !== 'object')
162
+ const event = this.deref(rawEvent);
163
+ if (!event || typeof event !== 'object' || isStatePointer(event))
60
164
  continue;
61
- const event = rawEvent;
62
165
  const [eventType] = Object.keys(event);
63
166
  if (!eventType)
64
167
  continue;
65
168
  triggers.add(this.normalizeTriggerName(eventType));
66
169
  if (eventType === 'http' || eventType === 'httpApi') {
67
- const route = this.parseHttpEvent(shortName, eventType, event[eventType], authorizers, httpApiCors, warnings);
170
+ const route = this.parseHttpEvent(shortName, eventType, this.deref(event[eventType]), authorizers, httpApiCors, warnings);
68
171
  if (route)
69
172
  routes.push(route);
70
173
  }
71
174
  }
175
+ const env = {};
176
+ for (const scope of [provider.environment, def.environment]) {
177
+ const vars = this.deref(scope);
178
+ if (!vars || typeof vars !== 'object' || isStatePointer(vars))
179
+ continue;
180
+ for (const [key, value] of Object.entries(vars))
181
+ env[key] = this.deref(value);
182
+ }
183
+ rawEnvironment[shortName] = env;
72
184
  functions.push({
73
185
  name: shortName,
74
186
  fullName: def.name || `${serviceName || 'unknown'}-${stage}-${shortName}`,
@@ -76,23 +188,90 @@ export class ServerlessStateParser {
76
188
  runtime: def.runtime || provider.runtime || 'nodejs20.x',
77
189
  memorySize: def.memorySize ?? provider.memorySize ?? DEFAULT_MEMORY_MB,
78
190
  timeout: def.timeout ?? provider.timeout ?? DEFAULT_TIMEOUT_SECONDS,
79
- environment: sanitizeEnvironmentValues({ ...(provider.environment || {}), ...(def.environment || {}) }),
191
+ environment: sanitizeEnvironmentValues(env),
80
192
  triggers: [...triggers],
81
193
  artifact: def.package?.artifact || state.package?.artifact,
82
194
  });
83
195
  }
196
+ this.checkAuthorizerTargets(authorizers, warnings);
84
197
  return {
85
198
  serviceName,
86
199
  stage,
87
- region: typeof provider.region === 'string' && provider.region ? provider.region : undefined,
200
+ region: readStateIdentity(state).region,
88
201
  apiPort,
89
202
  invokePort,
90
203
  functions,
204
+ rawEnvironment,
91
205
  routes,
92
206
  authorizers,
93
207
  warnings,
94
208
  };
95
209
  }
210
+ deref(value) {
211
+ return derefStatePointer(value, this.root);
212
+ }
213
+ // An authorizer pointing at a function this service does not declare is a
214
+ // route that will answer 500 on every request — say so now, at registration,
215
+ // rather than at the first call. Cross-service ARNs are not checked: their
216
+ // owner may simply register later.
217
+ checkAuthorizerTargets(authorizers, warnings) {
218
+ for (const auth of authorizers) {
219
+ if (auth.functionName && !this.shortNames.includes(auth.functionName)) {
220
+ warnings.push(`Authorizer "${auth.name}" targets function "${auth.functionName}", which this service does not declare — routes using it will answer 500.`);
221
+ }
222
+ else if (!auth.functionName && !auth.arn) {
223
+ warnings.push(`Authorizer "${auth.name}" has no function to invoke (neither a function name nor a resolvable ARN) — routes using it will answer 500.`);
224
+ }
225
+ }
226
+ }
227
+ /**
228
+ * An authorizer's function reference → the function to invoke. A string is
229
+ * an ARN (or a name) handed through as-is. A CFN reference to a Lambda in
230
+ * the same template — `!GetAtt AuthLambdaFunction.Arn`, `!Ref …`, or a lone
231
+ * `!Sub '${AuthLambdaFunction.Arn}'` — is resolved to the LOCAL function it
232
+ * names, via the template's FunctionName or, failing that, the framework's
233
+ * logical-id convention. Used to be dropped, which left the authorizer keyed
234
+ * by its display name and every route behind it answering 500.
235
+ */
236
+ resolveAuthorizerTarget(raw) {
237
+ const value = this.deref(raw);
238
+ if (value === undefined || value === null)
239
+ return {};
240
+ if (typeof value === 'string')
241
+ return { arn: value };
242
+ const logicalId = this.lambdaLogicalIdOf(value);
243
+ if (logicalId) {
244
+ const fullName = this.lambdaNames.get(logicalId);
245
+ const shortName = (fullName && this.fullNames.get(fullName))
246
+ ?? this.shortNames.find(name => lambdaLogicalIdFor(name) === logicalId);
247
+ if (shortName)
248
+ return { functionName: shortName };
249
+ if (fullName)
250
+ return { arn: fullName };
251
+ }
252
+ return { unresolved: value };
253
+ }
254
+ warnUnresolvedAuthorizer(label, target, warnings) {
255
+ warnings.push(`Authorizer "${label}": function reference ${JSON.stringify(target.unresolved).slice(0, 160)} does not resolve to a Lambda in this service — routes using it will answer 500.`);
256
+ }
257
+ // The logical id inside `{Ref}`, `{Fn::GetAtt: [Id, Arn]}` / `"Id.Arn"`, or
258
+ // a Fn::Sub whose whole template is `${Id}` / `${Id.Arn}`.
259
+ lambdaLogicalIdOf(value) {
260
+ if (!value || typeof value !== 'object')
261
+ return undefined;
262
+ const obj = value;
263
+ if (typeof obj.Ref === 'string')
264
+ return obj.Ref;
265
+ const getAtt = obj['Fn::GetAtt'];
266
+ if (Array.isArray(getAtt) && typeof getAtt[0] === 'string')
267
+ return getAtt[0];
268
+ if (typeof getAtt === 'string')
269
+ return getAtt.split('.')[0];
270
+ const sub = obj['Fn::Sub'];
271
+ const template = Array.isArray(sub) ? sub[0] : sub;
272
+ const token = typeof template === 'string' ? /^\$\{([^}.]+)(?:\.Arn)?\}$/.exec(template.trim()) : null;
273
+ return token ? token[1] : undefined;
274
+ }
96
275
  normalizeTriggerName(eventType) {
97
276
  if (eventType === 'stream')
98
277
  return 'stream';
@@ -100,7 +279,8 @@ export class ServerlessStateParser {
100
279
  }
101
280
  parseHttpApiAuthorizers(defs, warnings) {
102
281
  const authorizers = [];
103
- for (const [name, def] of Object.entries(defs)) {
282
+ for (const [name, rawDef] of Object.entries(defs)) {
283
+ const def = (this.deref(rawDef) || {});
104
284
  const type = String(def.type || 'request').toLowerCase();
105
285
  if (type === 'jwt') {
106
286
  warnings.push(`Authorizer "${name}" is a JWT authorizer — not supported by the LSS gateway yet; routes using it will return 500.`);
@@ -110,6 +290,10 @@ export class ServerlessStateParser {
110
290
  warnings.push(`Authorizer "${name}" has unsupported type "${type}"; routes using it will return 500.`);
111
291
  continue;
112
292
  }
293
+ const functionName = typeof def.functionName === 'string' ? def.functionName : undefined;
294
+ const target = functionName ? {} : this.resolveAuthorizerTarget(def.arn ?? def.functionArn);
295
+ if (target.unresolved !== undefined)
296
+ this.warnUnresolvedAuthorizer(name, target, warnings);
113
297
  authorizers.push({
114
298
  name,
115
299
  type: 'request',
@@ -118,8 +302,8 @@ export class ServerlessStateParser {
118
302
  enableSimpleResponses: Boolean(def.enableSimpleResponses),
119
303
  identitySource: this.normalizeIdentitySource(def.identitySource),
120
304
  resultTtlInSeconds: this.parseTtl(def.resultTtlInSeconds),
121
- functionName: typeof def.functionName === 'string' ? def.functionName : undefined,
122
- arn: this.extractArn(def.arn ?? def.functionArn),
305
+ functionName: functionName ?? target.functionName,
306
+ arn: target.arn,
123
307
  });
124
308
  }
125
309
  return authorizers;
@@ -159,7 +343,7 @@ export class ServerlessStateParser {
159
343
  }
160
344
  if (event.cors !== undefined)
161
345
  cors = Boolean(event.cors);
162
- authorizerName = this.registerEventAuthorizer(functionName, eventType, event.authorizer, authorizers, warnings);
346
+ authorizerName = this.registerEventAuthorizer(functionName, eventType, this.deref(event.authorizer), authorizers, warnings);
163
347
  }
164
348
  if (!method || !path) {
165
349
  warnings.push(`Function "${functionName}": could not parse ${eventType} event (${JSON.stringify(raw).slice(0, 120)}); route skipped.`);
@@ -191,9 +375,11 @@ export class ServerlessStateParser {
191
375
  warnings.push(`Function "${functionName}": unsupported httpApi authorizer reference; route will return 500.`);
192
376
  return `__unresolved__:${functionName}`;
193
377
  }
194
- // REST event authorizer: string shorthand → local function reference.
378
+ // REST event authorizer: string shorthand → local function reference, or
379
+ // the ARN of a function elsewhere (the framework accepts both spellings).
195
380
  if (typeof raw === 'string') {
196
381
  const name = `${functionName}:${raw}`;
382
+ const isArn = raw.startsWith('arn:');
197
383
  authorizers.push({
198
384
  name,
199
385
  type: 'token',
@@ -202,15 +388,24 @@ export class ServerlessStateParser {
202
388
  enableSimpleResponses: false,
203
389
  identitySource: ['method.request.header.Authorization'],
204
390
  resultTtlInSeconds: DEFAULT_AUTHORIZER_TTL,
205
- functionName: raw,
391
+ functionName: isArn ? undefined : raw,
392
+ arn: isArn ? raw : undefined,
206
393
  });
207
394
  return name;
208
395
  }
209
396
  if (typeof raw === 'object') {
210
397
  const def = raw;
211
- const arn = this.extractArn(def.arn);
212
- const localFn = typeof def.name === 'string' && !arn ? def.name : undefined;
213
398
  const displayName = typeof def.name === 'string' ? def.name : `${functionName}-authorizer`;
399
+ // `arn` wins when present; `name` alone names a local function. An `arn`
400
+ // that does not resolve still falls back to `name` when that IS one of
401
+ // this service's functions — the common `{ name: auth, arn: !GetAtt … }`.
402
+ const target = def.arn !== undefined ? this.resolveAuthorizerTarget(def.arn) : {};
403
+ const arn = target.arn;
404
+ const nameIsFallback = typeof def.name === 'string' && !arn
405
+ && (def.arn === undefined || this.shortNames.includes(def.name));
406
+ const localFn = target.functionName ?? (nameIsFallback ? def.name : undefined);
407
+ if (target.unresolved !== undefined && !localFn)
408
+ this.warnUnresolvedAuthorizer(displayName, target, warnings);
214
409
  const type = String(def.type || 'token').toLowerCase();
215
410
  if (type !== 'token' && type !== 'request') {
216
411
  warnings.push(`Function "${functionName}": authorizer "${displayName}" has unsupported type "${type}"; route will return 500.`);
@@ -245,13 +440,6 @@ export class ServerlessStateParser {
245
440
  return parsed;
246
441
  return DEFAULT_AUTHORIZER_TTL;
247
442
  }
248
- extractArn(raw) {
249
- if (typeof raw === 'string')
250
- return raw;
251
- // CFN intrinsics (Fn::GetAtt on the authorizer function) mean "local function",
252
- // which the caller captures via `name`/`functionName` instead.
253
- return undefined;
254
- }
255
443
  normalizePath(path) {
256
444
  if (path === '$default')
257
445
  return path;
@@ -1 +1 @@
1
- {"version":3,"file":"serverless-state-parser.js","sourceRoot":"","sources":["../../../src/server/services/serverless-state-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serverless-state-parser.js","sourceRoot":"","sources":["../../../src/server/services/serverless-state-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { Resource } from './cloudformation-parser.js';
2
+ import type { RegisteredFunction, HttpRoute, AuthorizerConfig } from './serverless-state-parser.js';
3
+ /**
4
+ * What a node stands for. `route` and `iam-role` have no counterpart in the
5
+ * parser's `Resource` union: a route is declared in `serverless-state.json`
6
+ * (never as a CFN resource LSS parses), and a role is deliberately not parsed.
7
+ * `external` is anything this service references but does not declare — the
8
+ * cross-service edges, which are the whole reason a monorepo needs one stack.
9
+ */
10
+ export type GraphNodeKind = 'lambda' | 'dynamodb' | 'sqs' | 'sns' | 's3' | 'eventbus' | 'event-rule' | 'opensearch' | 'secret' | 'route' | 'iam-role' | 'external';
11
+ export interface GraphNode {
12
+ id: string;
13
+ kind: GraphNodeKind;
14
+ label: string;
15
+ logicalId?: string;
16
+ method?: string;
17
+ path?: string;
18
+ fullName?: string;
19
+ handler?: string;
20
+ arn?: string;
21
+ service?: string;
22
+ }
23
+ /**
24
+ * How an edge was established. The distinction is the point of the whole
25
+ * payload: `iam` and `env` are far weaker evidence than the rest, and a
26
+ * diagram that draws them identically lies about what it knows.
27
+ */
28
+ export type GraphEdgeKind = 'http-route' | 'authorizer' | 'event-source' | 's3-notification' | 'event-rule-target' | 'event-bus-rule' | 'sns-subscription' | 'redrive' | 'iam' | 'env';
29
+ export interface GraphEdge {
30
+ id: string;
31
+ from: string;
32
+ to: string;
33
+ kind: GraphEdgeKind;
34
+ detail?: string;
35
+ confidence: 'declared' | 'inferred';
36
+ serviceWide?: boolean;
37
+ }
38
+ export interface ServiceGraph {
39
+ service: string;
40
+ nodes: GraphNode[];
41
+ edges: GraphEdge[];
42
+ edgeKinds: GraphEdgeKind[];
43
+ warnings: string[];
44
+ }
45
+ export interface BuildServiceGraphInput {
46
+ serviceName: string;
47
+ template: unknown;
48
+ resources: Resource[];
49
+ region?: string;
50
+ functions?: RegisteredFunction[];
51
+ routes?: HttpRoute[];
52
+ authorizers?: AuthorizerConfig[];
53
+ }
54
+ /**
55
+ * Reduce an ARN to the (aws service, resource name) pair a declared resource
56
+ * would be indexed under.
57
+ *
58
+ * The sub-resource suffixes matter: a policy that grants `dynamodb:Query` on
59
+ * `…:table/Orders/index/*` is about the Orders TABLE, and a stream ARN carries
60
+ * a creation timestamp nobody can predict at synth time. Secrets are the one
61
+ * kind that cannot be matched exactly — AWS appends six random characters at
62
+ * create time — so they match by prefix at the call site.
63
+ */
64
+ export declare function parseResourceArn(arn: string): {
65
+ service: string;
66
+ name: string;
67
+ } | null;
68
+ /**
69
+ * Builds the wiring graph for one service.
70
+ *
71
+ * Pure: no I/O, no engine calls, no clock. Everything it needs is the template
72
+ * the registrar cached and the metadata that came with it — which is what lets
73
+ * the unit suite cover every edge kind from hand-written templates.
74
+ */
75
+ export declare function buildServiceGraph(input: BuildServiceGraphInput): ServiceGraph;
76
+ //# sourceMappingURL=service-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-graph.d.ts","sourceRoot":"","sources":["../../../src/server/services/service-graph.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,QAAQ,EAYT,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAepG;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,UAAU,GACV,KAAK,GACL,KAAK,GACL,IAAI,GACJ,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,OAAO,GACP,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,SAAS;IAIxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IAIpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,SAAS,GACT,KAAK,GACL,KAAK,CAAC;AAEV,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IAGpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;IAMpC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IAGnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAI3B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,OAAO,CAAC;IAElB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAClC;AA4DD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkCtF;AAkDD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA6I7E"}