serverless-plugin-datadog 5.35.0 → 5.37.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ import { GeneralResource } from "./step-functions-helper";
2
+ import * as Serverless from "serverless";
3
+ export declare function mergeStepFunctionAndLambdaTraces(resources: {
4
+ [key: string]: GeneralResource;
5
+ }, serverless: Serverless): void;
6
+ //# sourceMappingURL=span-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-link.d.ts","sourceRoot":"","sources":["../../src/span-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,EAC7C,UAAU,EAAE,UAAU,QAWvB"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeStepFunctionAndLambdaTraces = void 0;
4
+ const step_functions_helper_1 = require("./step-functions-helper");
5
+ function mergeStepFunctionAndLambdaTraces(resources, serverless) {
6
+ var _a;
7
+ for (const resourceName in resources) {
8
+ if (resources.hasOwnProperty(resourceName)) {
9
+ const resourceObj = resources[resourceName];
10
+ if (resourceObj.Type === "AWS::StepFunctions::StateMachine") {
11
+ const definitionString = (_a = resourceObj.Properties) === null || _a === void 0 ? void 0 : _a.DefinitionString;
12
+ (0, step_functions_helper_1.updateDefinitionString)(definitionString, serverless, resourceName);
13
+ }
14
+ }
15
+ }
16
+ }
17
+ exports.mergeStepFunctionAndLambdaTraces = mergeStepFunctionAndLambdaTraces;
18
+ //# sourceMappingURL=span-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-link.js","sourceRoot":"","sources":["../../src/span-link.ts"],"names":[],"mappings":";;;AAAA,mEAAkF;AAGlF,SAAgB,gCAAgC,CAC9C,SAA6C,EAC7C,UAAsB;;IAEtB,KAAK,MAAM,YAAY,IAAI,SAAS,EAAE;QACpC,IAAI,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;YAC1C,MAAM,WAAW,GAAoB,SAAS,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,WAAW,CAAC,IAAI,KAAK,kCAAkC,EAAE;gBAC3D,MAAM,gBAAgB,GAAG,MAAA,WAAW,CAAC,UAAU,0CAAE,gBAAiB,CAAC;gBACnE,IAAA,8CAAsB,EAAC,gBAAgB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;aACpE;SACF;KACF;AACH,CAAC;AAbD,4EAaC"}
@@ -0,0 +1,29 @@
1
+ import Serverless from "serverless";
2
+ export declare function isSafeToModifyStepFunctionsDefinition(parameters: any): boolean;
3
+ export interface GeneralResource {
4
+ Type: string;
5
+ Properties?: {
6
+ DefinitionString?: {
7
+ "Fn::Sub": any[];
8
+ };
9
+ };
10
+ }
11
+ export interface StateMachineDefinition {
12
+ States: {
13
+ [key: string]: StateMachineStep;
14
+ };
15
+ }
16
+ export interface StateMachineStep {
17
+ Resource: string;
18
+ Parameters?: {
19
+ FunctionName?: string;
20
+ "Payload.$"?: string;
21
+ };
22
+ Next?: string;
23
+ End?: boolean;
24
+ }
25
+ export declare function isDefaultLambdaApiStep(resource: string | null): boolean;
26
+ export declare function updateDefinitionString(definitionString: {
27
+ "Fn::Sub": (string | object)[];
28
+ }, serverless: Serverless, stateMachineName: string): void;
29
+ //# sourceMappingURL=step-functions-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-functions-helper.d.ts","sourceRoot":"","sources":["../../src/step-functions-helper.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,wBAAgB,qCAAqC,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAc9E;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE;QACX,gBAAgB,CAAC,EAAE;YACjB,SAAS,EAAE,GAAG,EAAE,CAAC;SAClB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;KAAE,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE;QACX,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAUvE;AAED,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE;IAAE,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EACpD,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,MAAM,GACvB,IAAI,CAmCN"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateDefinitionString = exports.isDefaultLambdaApiStep = exports.isSafeToModifyStepFunctionsDefinition = void 0;
4
+ function isSafeToModifyStepFunctionsDefinition(parameters) {
5
+ if (typeof parameters !== "object") {
6
+ return false;
7
+ }
8
+ if (!parameters.hasOwnProperty("Payload.$")) {
9
+ return true;
10
+ }
11
+ else {
12
+ if (parameters["Payload.$"] === "$") {
13
+ // $ % is the default original unchanged payload
14
+ return true;
15
+ }
16
+ }
17
+ return false;
18
+ }
19
+ exports.isSafeToModifyStepFunctionsDefinition = isSafeToModifyStepFunctionsDefinition;
20
+ function isDefaultLambdaApiStep(resource) {
21
+ // default means not legacy lambda api
22
+ if (resource == null) {
23
+ return false;
24
+ }
25
+ if (resource === "arn:aws:states:::lambda:invoke") {
26
+ // Legacy Lambda API resource.startsWith("arn:aws:lambda"), but it cannot inject context obj.
27
+ return true;
28
+ }
29
+ return false;
30
+ }
31
+ exports.isDefaultLambdaApiStep = isDefaultLambdaApiStep;
32
+ function updateDefinitionString(definitionString, serverless, stateMachineName) {
33
+ if (!(typeof definitionString === "object" && "Fn::Sub" in definitionString && definitionString["Fn::Sub"].length > 0)) {
34
+ return;
35
+ }
36
+ const unparsedDefinition = definitionString["Fn::Sub"] ? definitionString["Fn::Sub"][0] : ""; // index 0 should always be a string of step functions definition
37
+ if (unparsedDefinition === "") {
38
+ return;
39
+ }
40
+ const definitionObj = JSON.parse(unparsedDefinition);
41
+ const states = definitionObj.States;
42
+ for (const stepName in states) {
43
+ if (states.hasOwnProperty(stepName)) {
44
+ const step = states[stepName];
45
+ if (!isDefaultLambdaApiStep(step.Resource)) {
46
+ // only default lambda api allows context injection
47
+ continue;
48
+ }
49
+ if (typeof step.Parameters === "object") {
50
+ if (isSafeToModifyStepFunctionsDefinition(step.Parameters)) {
51
+ step.Parameters["Payload.$"] = "States.JsonMerge($$, $, false)";
52
+ serverless.cli.log(`JsonMerge Step Functions context object with payload in step: ${stepName} of state machine: ${stateMachineName}.`);
53
+ }
54
+ else {
55
+ serverless.cli.log(`[Warn] Parameters.Payload has been set. Merging traces failed for step: ${stepName} of state machine: ${stateMachineName}`);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ definitionString["Fn::Sub"][0] = JSON.stringify(definitionObj); // writing back to the original JSON created by Serverless framework
61
+ }
62
+ exports.updateDefinitionString = updateDefinitionString;
63
+ //# sourceMappingURL=step-functions-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-functions-helper.js","sourceRoot":"","sources":["../../src/step-functions-helper.ts"],"names":[],"mappings":";;;AAEA,SAAgB,qCAAqC,CAAC,UAAe;IACnE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,KAAK,CAAC;KACd;IACD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;QAC3C,OAAO,IAAI,CAAC;KACb;SAAM;QACL,IAAI,UAAU,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE;YACnC,gDAAgD;YAChD,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,sFAcC;AAyBD,SAAgB,sBAAsB,CAAC,QAAuB;IAC5D,sCAAsC;IACtC,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,QAAQ,KAAK,gCAAgC,EAAE;QACjD,6FAA6F;QAC7F,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAVD,wDAUC;AAED,SAAgB,sBAAsB,CACpC,gBAAoD,EACpD,UAAsB,EACtB,gBAAwB;IAExB,IACE,CAAC,CAAC,OAAO,gBAAgB,KAAK,QAAQ,IAAI,SAAS,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAClH;QACA,OAAO;KACR;IACD,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iEAAiE;IAC/J,IAAI,kBAAkB,KAAK,EAAE,EAAE;QAC7B,OAAO;KACR;IACD,MAAM,aAAa,GAA2B,IAAI,CAAC,KAAK,CAAC,kBAA4B,CAAC,CAAC;IAEvF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE;QAC7B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACnC,MAAM,IAAI,GAAqB,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC1C,mDAAmD;gBACnD,SAAS;aACV;YACD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;gBACvC,IAAI,qCAAqC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC1D,IAAI,CAAC,UAAW,CAAC,WAAW,CAAC,GAAG,gCAAgC,CAAC;oBACjE,UAAU,CAAC,GAAG,CAAC,GAAG,CAChB,iEAAiE,QAAQ,sBAAsB,gBAAgB,GAAG,CACnH,CAAC;iBACH;qBAAM;oBACL,UAAU,CAAC,GAAG,CAAC,GAAG,CAChB,2EAA2E,QAAQ,sBAAsB,gBAAgB,EAAE,CAC5H,CAAC;iBACH;aACF;SACF;KACF;IACD,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,oEAAoE;AACtI,CAAC;AAvCD,wDAuCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "serverless-plugin-datadog",
3
- "version": "5.35.0",
3
+ "version": "5.37.0",
4
4
  "description": "Serverless plugin to automatically instrument python and node functions with datadog tracing",
5
5
  "main": "dist/src/index.js",
6
6
  "repository": "https://github.com/DataDog/serverless-plugin-datadog",