serverless-offline 8.8.1 → 9.0.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 (235) hide show
  1. package/README.md +3 -3
  2. package/package.json +33 -57
  3. package/src/ServerlessOffline.js +412 -0
  4. package/src/config/commandOptions.js +155 -0
  5. package/src/config/constants.js +22 -0
  6. package/{dist → src}/config/defaultOptions.js +8 -17
  7. package/src/config/index.js +4 -0
  8. package/src/config/supportedRuntimes.js +47 -0
  9. package/src/events/authCanExecuteResource.js +35 -0
  10. package/src/events/authFunctionNameExtractor.js +75 -0
  11. package/src/events/authMatchPolicyResource.js +71 -0
  12. package/src/events/authValidateContext.js +51 -0
  13. package/src/events/http/Endpoint.js +135 -0
  14. package/src/events/http/Http.js +50 -0
  15. package/src/events/http/HttpEventDefinition.js +20 -0
  16. package/src/events/http/HttpServer.js +1277 -0
  17. package/src/events/http/OfflineEndpoint.js +33 -0
  18. package/src/events/http/authJWTSettingsExtractor.js +70 -0
  19. package/src/events/http/createAuthScheme.js +176 -0
  20. package/src/events/http/createJWTAuthScheme.js +106 -0
  21. package/src/events/http/index.js +1 -0
  22. package/src/events/http/javaHelpers.js +102 -0
  23. package/src/events/http/lambda-events/LambdaIntegrationEvent.js +57 -0
  24. package/src/events/http/lambda-events/LambdaProxyIntegrationEvent.js +233 -0
  25. package/src/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +190 -0
  26. package/src/events/http/lambda-events/VelocityContext.js +147 -0
  27. package/src/events/http/lambda-events/index.js +4 -0
  28. package/src/events/http/lambda-events/renderVelocityTemplateObject.js +93 -0
  29. package/{dist → src}/events/http/parseResources.js +73 -78
  30. package/src/events/http/payloadSchemaValidator.js +13 -0
  31. package/{dist → src}/events/http/templates/offline-default.req.vm +0 -0
  32. package/{dist → src}/events/http/templates/offline-default.res.vm +0 -0
  33. package/src/events/schedule/Schedule.js +131 -0
  34. package/src/events/schedule/ScheduleEvent.js +18 -0
  35. package/src/events/schedule/ScheduleEventDefinition.js +21 -0
  36. package/src/events/schedule/index.js +1 -0
  37. package/src/events/websocket/HttpServer.js +69 -0
  38. package/src/events/websocket/WebSocket.js +52 -0
  39. package/src/events/websocket/WebSocketClients.js +462 -0
  40. package/src/events/websocket/WebSocketEventDefinition.js +18 -0
  41. package/src/events/websocket/WebSocketServer.js +73 -0
  42. package/src/events/websocket/http-routes/_catchAll/catchAllRoute.js +16 -0
  43. package/src/events/websocket/http-routes/_catchAll/index.js +1 -0
  44. package/src/events/websocket/http-routes/connections/ConnectionsController.js +28 -0
  45. package/src/events/websocket/http-routes/connections/connectionsRoutes.js +70 -0
  46. package/src/events/websocket/http-routes/connections/index.js +1 -0
  47. package/src/events/websocket/http-routes/index.js +2 -0
  48. package/src/events/websocket/index.js +1 -0
  49. package/src/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +65 -0
  50. package/src/events/websocket/lambda-events/WebSocketConnectEvent.js +68 -0
  51. package/src/events/websocket/lambda-events/WebSocketDisconnectEvent.js +31 -0
  52. package/src/events/websocket/lambda-events/WebSocketEvent.js +29 -0
  53. package/src/events/websocket/lambda-events/WebSocketRequestContext.js +67 -0
  54. package/src/events/websocket/lambda-events/index.js +4 -0
  55. package/src/index.js +12 -0
  56. package/src/lambda/HttpServer.js +108 -0
  57. package/src/lambda/Lambda.js +68 -0
  58. package/src/lambda/LambdaContext.js +33 -0
  59. package/src/lambda/LambdaFunction.js +308 -0
  60. package/src/lambda/LambdaFunctionPool.js +109 -0
  61. package/src/lambda/__tests__/LambdaContext.test.js +30 -0
  62. package/src/lambda/__tests__/LambdaFunction.test.js +196 -0
  63. package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsJSONObject.fixture.js +47 -0
  64. package/src/lambda/__tests__/fixtures/Lambda/LambdaFunctionThatReturnsNativeString.fixture.js +46 -0
  65. package/src/lambda/__tests__/fixtures/Lambda/package.json +3 -0
  66. package/src/lambda/__tests__/fixtures/lambdaFunction.fixture.js +145 -0
  67. package/src/lambda/__tests__/fixtures/package.json +3 -0
  68. package/src/lambda/__tests__/routes/invocations/InvocationsController.test.js +42 -0
  69. package/src/lambda/handler-runner/HandlerRunner.js +136 -0
  70. package/src/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +72 -0
  71. package/src/lambda/handler-runner/child-process-runner/childProcessHelper.js +42 -0
  72. package/src/lambda/handler-runner/child-process-runner/index.js +1 -0
  73. package/src/lambda/handler-runner/docker-runner/DockerContainer.js +417 -0
  74. package/src/lambda/handler-runner/docker-runner/DockerImage.js +35 -0
  75. package/src/lambda/handler-runner/docker-runner/DockerRunner.js +63 -0
  76. package/src/lambda/handler-runner/docker-runner/index.js +1 -0
  77. package/src/lambda/handler-runner/go-runner/GoRunner.js +166 -0
  78. package/src/lambda/handler-runner/go-runner/index.js +1 -0
  79. package/src/lambda/handler-runner/in-process-runner/InProcessRunner.js +125 -0
  80. package/src/lambda/handler-runner/in-process-runner/index.js +1 -0
  81. package/src/lambda/handler-runner/index.js +1 -0
  82. package/src/lambda/handler-runner/java-runner/JavaRunner.js +114 -0
  83. package/src/lambda/handler-runner/java-runner/index.js +1 -0
  84. package/src/lambda/handler-runner/python-runner/PythonRunner.js +138 -0
  85. package/src/lambda/handler-runner/python-runner/index.js +1 -0
  86. package/{dist → src}/lambda/handler-runner/python-runner/invoke.py +0 -0
  87. package/src/lambda/handler-runner/ruby-runner/RubyRunner.js +107 -0
  88. package/src/lambda/handler-runner/ruby-runner/index.js +1 -0
  89. package/{dist → src}/lambda/handler-runner/ruby-runner/invoke.rb +0 -0
  90. package/src/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +70 -0
  91. package/src/lambda/handler-runner/worker-thread-runner/index.js +1 -0
  92. package/src/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +29 -0
  93. package/src/lambda/index.js +1 -0
  94. package/src/lambda/routes/index.js +2 -0
  95. package/src/lambda/routes/invocations/InvocationsController.js +102 -0
  96. package/src/lambda/routes/invocations/index.js +1 -0
  97. package/src/lambda/routes/invocations/invocationsRoute.js +77 -0
  98. package/src/lambda/routes/invoke-async/InvokeAsyncController.js +20 -0
  99. package/src/lambda/routes/invoke-async/index.js +1 -0
  100. package/src/lambda/routes/invoke-async/invokeAsyncRoute.js +33 -0
  101. package/src/utils/__tests__/createUniqueId.test.js +18 -0
  102. package/src/utils/__tests__/formatToClfTime.test.js +14 -0
  103. package/src/utils/__tests__/generateHapiPath.test.js +46 -0
  104. package/src/utils/__tests__/lowerCaseKeys.test.js +30 -0
  105. package/src/utils/__tests__/parseHeaders.test.js +13 -0
  106. package/src/utils/__tests__/parseMultiValueHeaders.test.js +24 -0
  107. package/src/utils/__tests__/parseMultiValueQueryStringParameters.test.js +159 -0
  108. package/src/utils/__tests__/parseQueryStringParameters.test.js +15 -0
  109. package/src/utils/__tests__/splitHandlerPathAndName.test.js +54 -0
  110. package/src/utils/__tests__/unflatten.test.js +32 -0
  111. package/src/utils/checkDockerDaemon.js +19 -0
  112. package/src/utils/checkGoVersion.js +16 -0
  113. package/src/utils/createApiKey.js +5 -0
  114. package/src/utils/createUniqueId.js +5 -0
  115. package/src/utils/detectExecutable.js +11 -0
  116. package/{dist → src}/utils/formatToClfTime.js +6 -14
  117. package/src/utils/generateHapiPath.js +26 -0
  118. package/src/utils/getHttpApiCorsConfig.js +28 -0
  119. package/src/utils/index.js +42 -0
  120. package/src/utils/jsonPath.js +13 -0
  121. package/src/utils/logRoutes.js +64 -0
  122. package/src/utils/lowerCaseKeys.js +6 -0
  123. package/src/utils/parseHeaders.js +14 -0
  124. package/src/utils/parseMultiValueHeaders.js +27 -0
  125. package/src/utils/parseMultiValueQueryStringParameters.js +31 -0
  126. package/src/utils/parseQueryStringParameters.js +15 -0
  127. package/src/utils/resolveJoins.js +29 -0
  128. package/src/utils/splitHandlerPathAndName.js +31 -0
  129. package/src/utils/unflatten.js +11 -0
  130. package/CHANGELOG.md +0 -78
  131. package/dist/ServerlessOffline.js +0 -508
  132. package/dist/config/commandOptions.js +0 -149
  133. package/dist/config/constants.js +0 -30
  134. package/dist/config/index.js +0 -55
  135. package/dist/config/supportedRuntimes.js +0 -40
  136. package/dist/debugLog.js +0 -12
  137. package/dist/events/authCanExecuteResource.js +0 -35
  138. package/dist/events/authFunctionNameExtractor.js +0 -87
  139. package/dist/events/authMatchPolicyResource.js +0 -62
  140. package/dist/events/authValidateContext.js +0 -53
  141. package/dist/events/http/Endpoint.js +0 -173
  142. package/dist/events/http/Http.js +0 -77
  143. package/dist/events/http/HttpEventDefinition.js +0 -36
  144. package/dist/events/http/HttpServer.js +0 -1370
  145. package/dist/events/http/OfflineEndpoint.js +0 -38
  146. package/dist/events/http/authJWTSettingsExtractor.js +0 -76
  147. package/dist/events/http/createAuthScheme.js +0 -184
  148. package/dist/events/http/createJWTAuthScheme.js +0 -159
  149. package/dist/events/http/index.js +0 -15
  150. package/dist/events/http/javaHelpers.js +0 -99
  151. package/dist/events/http/lambda-events/LambdaIntegrationEvent.js +0 -87
  152. package/dist/events/http/lambda-events/LambdaProxyIntegrationEvent.js +0 -246
  153. package/dist/events/http/lambda-events/LambdaProxyIntegrationEventV2.js +0 -225
  154. package/dist/events/http/lambda-events/VelocityContext.js +0 -170
  155. package/dist/events/http/lambda-events/index.js +0 -39
  156. package/dist/events/http/lambda-events/renderVelocityTemplateObject.js +0 -111
  157. package/dist/events/http/payloadSchemaValidator.js +0 -13
  158. package/dist/events/schedule/Schedule.js +0 -183
  159. package/dist/events/schedule/ScheduleEvent.js +0 -27
  160. package/dist/events/schedule/ScheduleEventDefinition.js +0 -36
  161. package/dist/events/schedule/index.js +0 -15
  162. package/dist/events/websocket/HttpServer.js +0 -114
  163. package/dist/events/websocket/WebSocket.js +0 -78
  164. package/dist/events/websocket/WebSocketClients.js +0 -577
  165. package/dist/events/websocket/WebSocketEventDefinition.js +0 -32
  166. package/dist/events/websocket/WebSocketServer.js +0 -139
  167. package/dist/events/websocket/http-routes/_catchAll/catchAllRoute.js +0 -33
  168. package/dist/events/websocket/http-routes/_catchAll/index.js +0 -15
  169. package/dist/events/websocket/http-routes/connections/ConnectionsController.js +0 -45
  170. package/dist/events/websocket/http-routes/connections/connectionsRoutes.js +0 -95
  171. package/dist/events/websocket/http-routes/connections/index.js +0 -15
  172. package/dist/events/websocket/http-routes/index.js +0 -23
  173. package/dist/events/websocket/index.js +0 -15
  174. package/dist/events/websocket/lambda-events/WebSocketAuthorizerEvent.js +0 -99
  175. package/dist/events/websocket/lambda-events/WebSocketConnectEvent.js +0 -101
  176. package/dist/events/websocket/lambda-events/WebSocketDisconnectEvent.js +0 -47
  177. package/dist/events/websocket/lambda-events/WebSocketEvent.js +0 -54
  178. package/dist/events/websocket/lambda-events/WebSocketRequestContext.js +0 -98
  179. package/dist/events/websocket/lambda-events/index.js +0 -39
  180. package/dist/index.js +0 -15
  181. package/dist/lambda/HttpServer.js +0 -124
  182. package/dist/lambda/Lambda.js +0 -117
  183. package/dist/lambda/LambdaContext.js +0 -53
  184. package/dist/lambda/LambdaFunction.js +0 -390
  185. package/dist/lambda/LambdaFunctionPool.js +0 -127
  186. package/dist/lambda/handler-runner/HandlerRunner.js +0 -195
  187. package/dist/lambda/handler-runner/child-process-runner/ChildProcessRunner.js +0 -124
  188. package/dist/lambda/handler-runner/child-process-runner/childProcessHelper.js +0 -49
  189. package/dist/lambda/handler-runner/child-process-runner/index.js +0 -15
  190. package/dist/lambda/handler-runner/docker-runner/DockerContainer.js +0 -515
  191. package/dist/lambda/handler-runner/docker-runner/DockerImage.js +0 -67
  192. package/dist/lambda/handler-runner/docker-runner/DockerRunner.js +0 -74
  193. package/dist/lambda/handler-runner/docker-runner/index.js +0 -15
  194. package/dist/lambda/handler-runner/go-runner/GoRunner.js +0 -230
  195. package/dist/lambda/handler-runner/go-runner/index.js +0 -15
  196. package/dist/lambda/handler-runner/in-process-runner/InProcessRunner.js +0 -228
  197. package/dist/lambda/handler-runner/in-process-runner/index.js +0 -15
  198. package/dist/lambda/handler-runner/index.js +0 -15
  199. package/dist/lambda/handler-runner/java-runner/JavaRunner.js +0 -153
  200. package/dist/lambda/handler-runner/java-runner/index.js +0 -15
  201. package/dist/lambda/handler-runner/python-runner/PythonRunner.js +0 -185
  202. package/dist/lambda/handler-runner/python-runner/index.js +0 -15
  203. package/dist/lambda/handler-runner/ruby-runner/RubyRunner.js +0 -147
  204. package/dist/lambda/handler-runner/ruby-runner/index.js +0 -15
  205. package/dist/lambda/handler-runner/worker-thread-runner/WorkerThreadRunner.js +0 -92
  206. package/dist/lambda/handler-runner/worker-thread-runner/index.js +0 -15
  207. package/dist/lambda/handler-runner/worker-thread-runner/workerThreadHelper.js +0 -31
  208. package/dist/lambda/index.js +0 -15
  209. package/dist/lambda/routes/index.js +0 -23
  210. package/dist/lambda/routes/invocations/InvocationsController.js +0 -142
  211. package/dist/lambda/routes/invocations/index.js +0 -15
  212. package/dist/lambda/routes/invocations/invocationsRoute.js +0 -90
  213. package/dist/lambda/routes/invoke-async/InvokeAsyncController.js +0 -38
  214. package/dist/lambda/routes/invoke-async/index.js +0 -15
  215. package/dist/lambda/routes/invoke-async/invokeAsyncRoute.js +0 -43
  216. package/dist/main.js +0 -11
  217. package/dist/serverlessLog.js +0 -91
  218. package/dist/utils/checkDockerDaemon.js +0 -27
  219. package/dist/utils/checkGoVersion.js +0 -27
  220. package/dist/utils/createApiKey.js +0 -12
  221. package/dist/utils/createUniqueId.js +0 -14
  222. package/dist/utils/detectExecutable.js +0 -21
  223. package/dist/utils/generateHapiPath.js +0 -28
  224. package/dist/utils/getHttpApiCorsConfig.js +0 -40
  225. package/dist/utils/index.js +0 -165
  226. package/dist/utils/jsonPath.js +0 -21
  227. package/dist/utils/lowerCaseKeys.js +0 -14
  228. package/dist/utils/parseHeaders.js +0 -23
  229. package/dist/utils/parseMultiValueHeaders.js +0 -36
  230. package/dist/utils/parseMultiValueQueryStringParameters.js +0 -40
  231. package/dist/utils/parseQueryStringParameters.js +0 -26
  232. package/dist/utils/resolveJoins.js +0 -36
  233. package/dist/utils/satisfiesVersionRange.js +0 -20
  234. package/dist/utils/splitHandlerPathAndName.js +0 -37
  235. package/dist/utils/unflatten.js +0 -18
@@ -1,230 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _fs = require("fs");
9
-
10
- var _os = require("os");
11
-
12
- var _path = require("path");
13
-
14
- var _process = _interopRequireWildcard(require("process"));
15
-
16
- var _execa = _interopRequireWildcard(require("execa"));
17
-
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
23
-
24
- var id = 0;
25
-
26
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
27
-
28
- const {
29
- writeFile,
30
- readFile,
31
- mkdir,
32
- rmdir
33
- } = _fs.promises;
34
- const {
35
- parse,
36
- stringify
37
- } = JSON;
38
- const PAYLOAD_IDENTIFIER = 'offline_payload';
39
-
40
- var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
41
-
42
- var _handlerPath = /*#__PURE__*/_classPrivateFieldLooseKey("handlerPath");
43
-
44
- var _tmpPath = /*#__PURE__*/_classPrivateFieldLooseKey("tmpPath");
45
-
46
- var _tmpFile = /*#__PURE__*/_classPrivateFieldLooseKey("tmpFile");
47
-
48
- var _goEnv = /*#__PURE__*/_classPrivateFieldLooseKey("goEnv");
49
-
50
- var _codeDir = /*#__PURE__*/_classPrivateFieldLooseKey("codeDir");
51
-
52
- class GoRunner {
53
- constructor(funOptions, env, v3Utils) {
54
- Object.defineProperty(this, _env, {
55
- writable: true,
56
- value: null
57
- });
58
- Object.defineProperty(this, _handlerPath, {
59
- writable: true,
60
- value: null
61
- });
62
- Object.defineProperty(this, _tmpPath, {
63
- writable: true,
64
- value: null
65
- });
66
- Object.defineProperty(this, _tmpFile, {
67
- writable: true,
68
- value: null
69
- });
70
- Object.defineProperty(this, _goEnv, {
71
- writable: true,
72
- value: null
73
- });
74
- Object.defineProperty(this, _codeDir, {
75
- writable: true,
76
- value: null
77
- });
78
- const {
79
- handlerPath,
80
- codeDir
81
- } = funOptions;
82
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
83
- _classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath] = handlerPath;
84
- _classPrivateFieldLooseBase(this, _codeDir)[_codeDir] = codeDir;
85
-
86
- if (v3Utils) {
87
- this.log = v3Utils.log;
88
- this.progress = v3Utils.progress;
89
- this.writeText = v3Utils.writeText;
90
- this.v3Utils = v3Utils;
91
- }
92
- }
93
-
94
- async cleanup() {
95
- try {
96
- await rmdir(_classPrivateFieldLooseBase(this, _tmpPath)[_tmpPath], {
97
- recursive: true
98
- });
99
- } catch (e) {// @ignore
100
- }
101
-
102
- _classPrivateFieldLooseBase(this, _tmpFile)[_tmpFile] = null;
103
- _classPrivateFieldLooseBase(this, _tmpPath)[_tmpPath] = null;
104
- }
105
-
106
- _parsePayload(value) {
107
- const log = [];
108
- let payload;
109
-
110
- for (const item of value.split(_os.EOL)) {
111
- if (item.indexOf(PAYLOAD_IDENTIFIER) === -1) {
112
- log.push(item);
113
- } else if (item.indexOf(PAYLOAD_IDENTIFIER) !== -1) {
114
- try {
115
- const {
116
- offline_payload: {
117
- success,
118
- error
119
- }
120
- } = parse(item);
121
-
122
- if (success) {
123
- payload = success;
124
- } else if (error) {
125
- payload = error;
126
- }
127
- } catch (err) {// @ignore
128
- }
129
- }
130
- } // Log to console in case engineers want to see the rest of the info
131
-
132
-
133
- if (this.log) {
134
- this.log(log.join(_os.EOL));
135
- } else {
136
- console.log(log.join(_os.EOL));
137
- }
138
-
139
- return payload;
140
- }
141
-
142
- async run(event, context) {
143
- const {
144
- dir
145
- } = (0, _path.parse)(_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath]);
146
- const handlerCodeRoot = dir.split(_path.sep).slice(0, -1).join(_path.sep);
147
- const handlerCode = await readFile(`${_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath]}.go`, 'utf8');
148
- _classPrivateFieldLooseBase(this, _tmpPath)[_tmpPath] = (0, _path.resolve)(handlerCodeRoot, 'tmp');
149
- _classPrivateFieldLooseBase(this, _tmpFile)[_tmpFile] = (0, _path.resolve)(_classPrivateFieldLooseBase(this, _tmpPath)[_tmpPath], 'main.go');
150
- const out = handlerCode.replace('"github.com/aws/aws-lambda-go/lambda"', 'lambda "github.com/icarus-sullivan/mock-lambda"');
151
-
152
- try {
153
- await mkdir(_classPrivateFieldLooseBase(this, _tmpPath)[_tmpPath], {
154
- recursive: true
155
- });
156
- } catch (e) {// @ignore
157
- }
158
-
159
- try {
160
- await writeFile(_classPrivateFieldLooseBase(this, _tmpFile)[_tmpFile], out, 'utf8');
161
- } catch (e) {// @ignore
162
- } // Get go env to run this locally
163
-
164
-
165
- if (!_classPrivateFieldLooseBase(this, _goEnv)[_goEnv]) {
166
- const goEnvResponse = await (0, _execa.default)('go', ['env'], {
167
- stdio: 'pipe',
168
- encoding: 'utf-8'
169
- });
170
- const goEnvString = goEnvResponse.stdout || goEnvResponse.stderr;
171
- _classPrivateFieldLooseBase(this, _goEnv)[_goEnv] = goEnvString.split(_os.EOL).reduce((a, b) => {
172
- const [k, v] = b.split('="'); // eslint-disable-next-line no-param-reassign
173
-
174
- a[k] = v ? v.slice(0, -1) : '';
175
- return a;
176
- }, {});
177
- } // Remove our root, since we want to invoke go relatively
178
-
179
-
180
- const cwdPath = `${_classPrivateFieldLooseBase(this, _tmpFile)[_tmpFile]}`.replace(`${(0, _process.cwd)()}${_path.sep}`, '');
181
-
182
- try {
183
- (0, _process.chdir)(cwdPath.substring(0, cwdPath.indexOf('main.go'))); // Make sure we have the mock-lambda runner
184
-
185
- (0, _execa.sync)('go', ['get', 'github.com/icarus-sullivan/mock-lambda@e065469']);
186
- (0, _execa.sync)('go', ['build']);
187
- } catch (e) {// @ignore
188
- }
189
-
190
- const {
191
- stdout,
192
- stderr
193
- } = await (0, _execa.default)(`./tmp`, {
194
- stdio: 'pipe',
195
- env: { ..._classPrivateFieldLooseBase(this, _env)[_env],
196
- ..._classPrivateFieldLooseBase(this, _goEnv)[_goEnv],
197
- AWS_LAMBDA_LOG_GROUP_NAME: context.logGroupName,
198
- AWS_LAMBDA_LOG_STREAM_NAME: context.logStreamName,
199
- AWS_LAMBDA_FUNCTION_NAME: context.functionName,
200
- AWS_LAMBDA_FUNCTION_MEMORY_SIZE: context.memoryLimitInMB,
201
- AWS_LAMBDA_FUNCTION_VERSION: context.functionVersion,
202
- LAMBDA_EVENT: stringify(event),
203
- LAMBDA_TEST_EVENT: `${event}`,
204
- LAMBDA_CONTEXT: stringify(context),
205
- IS_LAMBDA_AUTHORIZER: event.type === 'REQUEST' || event.type === 'TOKEN',
206
- IS_LAMBDA_REQUEST_AUTHORIZER: event.type === 'REQUEST',
207
- IS_LAMBDA_TOKEN_AUTHORIZER: event.type === 'TOKEN',
208
- PATH: _process.default.env.PATH
209
- },
210
- encoding: 'utf-8'
211
- });
212
- await this.cleanup();
213
-
214
- if (stderr) {
215
- return stderr;
216
- }
217
-
218
- try {
219
- // refresh go.mod
220
- (0, _execa.sync)('go', ['mod', 'tidy']);
221
- (0, _process.chdir)(_classPrivateFieldLooseBase(this, _codeDir)[_codeDir]);
222
- } catch (e) {// @ignore
223
- }
224
-
225
- return this._parsePayload(stdout);
226
- }
227
-
228
- }
229
-
230
- exports.default = GoRunner;
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _GoRunner.default;
10
- }
11
- });
12
-
13
- var _GoRunner = _interopRequireDefault(require("./GoRunner.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,228 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _fs = require("fs");
9
-
10
- var _path = require("path");
11
-
12
- var _perf_hooks = require("perf_hooks");
13
-
14
- var _process = _interopRequireDefault(require("process"));
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
-
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
-
22
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
23
-
24
- var id = 0;
25
-
26
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
27
-
28
- const {
29
- assign,
30
- keys
31
- } = Object;
32
-
33
- const clearModule = (fP, opts) => {
34
- const options = opts !== null && opts !== void 0 ? opts : {};
35
- let filePath = fP;
36
-
37
- if (!require.cache[filePath]) {
38
- const dirName = (0, _path.dirname)(filePath);
39
-
40
- for (const fn of (0, _fs.readdirSync)(dirName)) {
41
- const fullPath = (0, _path.resolve)(dirName, fn);
42
-
43
- if (fullPath.substr(0, filePath.length + 1) === `${filePath}.` && require.cache[fullPath]) {
44
- filePath = fullPath;
45
- break;
46
- }
47
- }
48
- }
49
-
50
- if (require.cache[filePath]) {
51
- // Remove file from parent cache
52
- if (require.cache[filePath].parent) {
53
- let i = require.cache[filePath].parent.children.length;
54
-
55
- if (i) {
56
- do {
57
- i -= 1;
58
-
59
- if (require.cache[filePath].parent.children[i].id === filePath) {
60
- require.cache[filePath].parent.children.splice(i, 1);
61
- }
62
- } while (i);
63
- }
64
- }
65
-
66
- const cld = require.cache[filePath].children;
67
- delete require.cache[filePath];
68
-
69
- for (const c of cld) {
70
- // Unload any non node_modules and non-binary children
71
- if (!c.filename.match(/\/node_modules\//i) && !c.filename.match(/\.node$/i)) {
72
- clearModule(c.id, { ...options,
73
- cleanup: false
74
- });
75
- }
76
- }
77
-
78
- if (opts.cleanup) {
79
- // Cleanup any node_modules that are orphans
80
- let cleanup = false;
81
-
82
- do {
83
- cleanup = false;
84
-
85
- for (const fn of keys(require.cache)) {
86
- if (require.cache[fn] && require.cache[fn].id !== '.' && require.cache[fn].parent && require.cache[fn].parent.id !== '.' && !require.cache[require.cache[fn].parent.id] && !fn.match(/\/node_modules\//i) && !fn.match(/\.node$/i)) {
87
- delete require.cache[fn];
88
- cleanup = true;
89
- }
90
- }
91
- } while (cleanup);
92
- }
93
- }
94
- };
95
-
96
- var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
97
-
98
- var _functionKey = /*#__PURE__*/_classPrivateFieldLooseKey("functionKey");
99
-
100
- var _handlerName = /*#__PURE__*/_classPrivateFieldLooseKey("handlerName");
101
-
102
- var _handlerPath = /*#__PURE__*/_classPrivateFieldLooseKey("handlerPath");
103
-
104
- var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
105
-
106
- var _allowCache = /*#__PURE__*/_classPrivateFieldLooseKey("allowCache");
107
-
108
- class InProcessRunner {
109
- constructor(functionKey, handlerPath, handlerName, env, timeout, allowCache) {
110
- Object.defineProperty(this, _env, {
111
- writable: true,
112
- value: null
113
- });
114
- Object.defineProperty(this, _functionKey, {
115
- writable: true,
116
- value: null
117
- });
118
- Object.defineProperty(this, _handlerName, {
119
- writable: true,
120
- value: null
121
- });
122
- Object.defineProperty(this, _handlerPath, {
123
- writable: true,
124
- value: null
125
- });
126
- Object.defineProperty(this, _timeout, {
127
- writable: true,
128
- value: null
129
- });
130
- Object.defineProperty(this, _allowCache, {
131
- writable: true,
132
- value: false
133
- });
134
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
135
- _classPrivateFieldLooseBase(this, _functionKey)[_functionKey] = functionKey;
136
- _classPrivateFieldLooseBase(this, _handlerName)[_handlerName] = handlerName;
137
- _classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath] = handlerPath;
138
- _classPrivateFieldLooseBase(this, _timeout)[_timeout] = timeout;
139
- _classPrivateFieldLooseBase(this, _allowCache)[_allowCache] = allowCache;
140
- } // no-op
141
- // () => void
142
-
143
-
144
- cleanup() {}
145
-
146
- async run(event, context) {
147
- // check if the handler module path exists
148
- if (!require.resolve(_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath])) {
149
- throw new Error(`Could not find handler module '${_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath]}' for function '${_classPrivateFieldLooseBase(this, _functionKey)[_functionKey]}'.`);
150
- } // process.env should be available in the handler module scope as well as in the handler function scope
151
- // NOTE: Don't use Object spread (...) here!
152
- // otherwise the values of the attached props are not coerced to a string
153
- // e.g. process.env.foo = 1 should be coerced to '1' (string)
154
-
155
-
156
- assign(_process.default.env, _classPrivateFieldLooseBase(this, _env)[_env]); // lazy load handler with first usage
157
-
158
- if (!_classPrivateFieldLooseBase(this, _allowCache)[_allowCache]) {
159
- clearModule(_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath], {
160
- cleanup: true
161
- });
162
- }
163
-
164
- const {
165
- [_classPrivateFieldLooseBase(this, _handlerName)[_handlerName]]: handler
166
- } = await Promise.resolve(`${_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath]}`).then(s => _interopRequireWildcard(require(s)));
167
-
168
- if (typeof handler !== 'function') {
169
- throw new Error(`offline: handler '${_classPrivateFieldLooseBase(this, _handlerName)[_handlerName]}' in ${_classPrivateFieldLooseBase(this, _handlerPath)[_handlerPath]} is not a function`);
170
- }
171
-
172
- let callback;
173
- const callbackCalled = new Promise((res, rej) => {
174
- callback = (err, data) => {
175
- if (err === 'Unauthorized') {
176
- res('Unauthorized');
177
- return;
178
- }
179
-
180
- if (err) {
181
- rej(err);
182
- return;
183
- }
184
-
185
- res(data);
186
- };
187
- });
188
-
189
- const executionTimeout = _perf_hooks.performance.now() + _classPrivateFieldLooseBase(this, _timeout)[_timeout]; // attach doc-deprecated functions
190
- // create new immutable object
191
-
192
-
193
- const lambdaContext = { ...context,
194
- getRemainingTimeInMillis: () => {
195
- const timeLeft = executionTimeout - _perf_hooks.performance.now(); // just return 0 for now if we are beyond alotted time (timeout)
196
-
197
-
198
- return timeLeft > 0 ? timeLeft : 0;
199
- },
200
- done: (err, data) => callback(err, data),
201
- fail: err => callback(err),
202
- succeed: res => callback(null, res)
203
- };
204
- let result; // execute (run) handler
205
-
206
- try {
207
- result = handler(event, lambdaContext, callback);
208
- } catch (err) {
209
- throw new Error(`Uncaught error in '${_classPrivateFieldLooseBase(this, _functionKey)[_functionKey]}' handler.`);
210
- } // // not a Promise, which is not supported by aws
211
- // if (result == null || typeof result.then !== 'function') {
212
- // throw new Error(`Synchronous function execution is not supported.`)
213
- // }
214
-
215
-
216
- const callbacks = [callbackCalled]; // Promise was returned
217
-
218
- if (result != null && typeof result.then === 'function') {
219
- callbacks.push(result);
220
- }
221
-
222
- const callbackResult = await Promise.race(callbacks);
223
- return callbackResult;
224
- }
225
-
226
- }
227
-
228
- exports.default = InProcessRunner;
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _InProcessRunner.default;
10
- }
11
- });
12
-
13
- var _InProcessRunner = _interopRequireDefault(require("./InProcessRunner.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _HandlerRunner.default;
10
- }
11
- });
12
-
13
- var _HandlerRunner = _interopRequireDefault(require("./HandlerRunner.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -1,153 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _os = require("os");
9
-
10
- var _process = _interopRequireDefault(require("process"));
11
-
12
- var _nodeFetch = _interopRequireDefault(require("node-fetch"));
13
-
14
- var _javaInvokeLocal = require("java-invoke-local");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
- function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
19
-
20
- var id = 0;
21
-
22
- function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
23
-
24
- const {
25
- parse,
26
- stringify
27
- } = JSON;
28
- const {
29
- has
30
- } = Reflect;
31
-
32
- var _env = /*#__PURE__*/_classPrivateFieldLooseKey("env");
33
-
34
- var _functionName = /*#__PURE__*/_classPrivateFieldLooseKey("functionName");
35
-
36
- var _handler = /*#__PURE__*/_classPrivateFieldLooseKey("handler");
37
-
38
- var _deployPackage = /*#__PURE__*/_classPrivateFieldLooseKey("deployPackage");
39
-
40
- var _allowCache = /*#__PURE__*/_classPrivateFieldLooseKey("allowCache");
41
-
42
- class JavaRunner {
43
- constructor(funOptions, env, allowCache, v3Utils) {
44
- Object.defineProperty(this, _env, {
45
- writable: true,
46
- value: null
47
- });
48
- Object.defineProperty(this, _functionName, {
49
- writable: true,
50
- value: null
51
- });
52
- Object.defineProperty(this, _handler, {
53
- writable: true,
54
- value: null
55
- });
56
- Object.defineProperty(this, _deployPackage, {
57
- writable: true,
58
- value: null
59
- });
60
- Object.defineProperty(this, _allowCache, {
61
- writable: true,
62
- value: false
63
- });
64
- const {
65
- functionName,
66
- handler,
67
- servicePackage,
68
- functionPackage
69
- } = funOptions;
70
- _classPrivateFieldLooseBase(this, _env)[_env] = env;
71
- _classPrivateFieldLooseBase(this, _functionName)[_functionName] = functionName;
72
- _classPrivateFieldLooseBase(this, _handler)[_handler] = handler;
73
- _classPrivateFieldLooseBase(this, _deployPackage)[_deployPackage] = functionPackage || servicePackage;
74
- _classPrivateFieldLooseBase(this, _allowCache)[_allowCache] = allowCache;
75
-
76
- if (v3Utils) {
77
- this.log = v3Utils.log;
78
- this.progress = v3Utils.progress;
79
- this.writeText = v3Utils.writeText;
80
- this.v3Utils = v3Utils;
81
- }
82
- } // no-op
83
- // () => void
84
-
85
-
86
- cleanup() {}
87
-
88
- _parsePayload(value) {
89
- for (const item of value.split(_os.EOL)) {
90
- let json; // first check if it's JSON
91
-
92
- try {
93
- json = parse(item); // nope, it's not JSON
94
- } catch (err) {// no-op
95
- } // now let's see if we have a property __offline_payload__
96
-
97
-
98
- if (json && typeof json === 'object' && has(json, '__offline_payload__')) {
99
- return json.__offline_payload__;
100
- }
101
- }
102
-
103
- return undefined;
104
- }
105
-
106
- async run(event, context) {
107
- const input = stringify({
108
- context,
109
- event
110
- });
111
- let result;
112
-
113
- try {
114
- // Assume java-invoke-local server is running
115
- const data = stringify({
116
- artifact: _classPrivateFieldLooseBase(this, _deployPackage)[_deployPackage],
117
- handler: _classPrivateFieldLooseBase(this, _handler)[_handler],
118
- data: input,
119
- function: _classPrivateFieldLooseBase(this, _functionName)[_functionName],
120
- jsonOutput: true,
121
- serverlessOffline: true
122
- });
123
- const httpOptions = {
124
- method: 'POST',
125
- body: data
126
- };
127
- const port = _process.default.env.JAVA_OFFLINE_SERVER || 8080;
128
- const response = await (0, _nodeFetch.default)(`http://localhost:${port}/invoke`, httpOptions);
129
- result = await response.text();
130
- } catch (e) {
131
- if (this.log) {
132
- this.log.notice('Local java server not running. For faster local invocations, run "java-invoke-local --server" in your project directory');
133
- } else {
134
- console.log('Local java server not running. For faster local invocations, run "java-invoke-local --server" in your project directory');
135
- } // Fallback invocation
136
-
137
-
138
- const args = ['-c', _classPrivateFieldLooseBase(this, _handler)[_handler], '-a', _classPrivateFieldLooseBase(this, _deployPackage)[_deployPackage], '-f', _classPrivateFieldLooseBase(this, _functionName)[_functionName], '-d', input, '--json-output', '--serverless-offline'];
139
- result = (0, _javaInvokeLocal.invokeJavaLocal)(args, _classPrivateFieldLooseBase(this, _env)[_env]);
140
-
141
- if (this.log) {
142
- this.log.notice(result);
143
- } else {
144
- console.log(result);
145
- }
146
- }
147
-
148
- return this._parsePayload(result);
149
- }
150
-
151
- }
152
-
153
- exports.default = JavaRunner;
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "default", {
7
- enumerable: true,
8
- get: function () {
9
- return _JavaRunner.default;
10
- }
11
- });
12
-
13
- var _JavaRunner = _interopRequireDefault(require("./JavaRunner.js"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }