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