serverless-plugin-datadog 5.35.0 → 5.37.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.
@@ -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",