@pikku/core 0.7.0 → 0.7.2

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 (95) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/channel/channel-runner.js +1 -1
  3. package/dist/channel/serverless/serverless-channel-runner.js +1 -1
  4. package/dist/function/function-runner.js +7 -5
  5. package/dist/http/http-runner.js +4 -2
  6. package/dist/http/log-http-routes.js +1 -1
  7. package/lcov.info +4596 -0
  8. package/package.json +1 -1
  9. package/src/channel/channel-handler.ts +165 -0
  10. package/src/channel/channel-runner.ts +153 -0
  11. package/src/channel/channel-store.ts +29 -0
  12. package/src/channel/channel.types.ts +133 -0
  13. package/src/channel/eventhub-service.ts +30 -0
  14. package/src/channel/eventhub-store.ts +8 -0
  15. package/src/channel/index.ts +8 -0
  16. package/src/channel/local/index.ts +3 -0
  17. package/src/channel/local/local-channel-handler.ts +50 -0
  18. package/src/channel/local/local-channel-runner.test.ts +157 -0
  19. package/src/channel/local/local-channel-runner.ts +139 -0
  20. package/src/channel/local/local-eventhub-service.test.ts +95 -0
  21. package/src/channel/local/local-eventhub-service.ts +95 -0
  22. package/src/channel/log-channels.ts +20 -0
  23. package/src/channel/pikku-abstract-channel-handler.test.ts +52 -0
  24. package/src/channel/pikku-abstract-channel-handler.ts +38 -0
  25. package/src/channel/serverless/index.ts +1 -0
  26. package/src/channel/serverless/serverless-channel-runner.ts +220 -0
  27. package/src/errors/error-handler.ts +61 -0
  28. package/src/errors/error.test.ts +54 -0
  29. package/src/errors/errors.ts +339 -0
  30. package/src/errors/index.ts +2 -0
  31. package/src/function/function-runner.ts +92 -0
  32. package/src/function/functions.types.ts +77 -0
  33. package/src/function/index.ts +2 -0
  34. package/src/handle-error.ts +73 -0
  35. package/src/http/http-runner.test.ts +140 -0
  36. package/src/http/http-runner.ts +493 -0
  37. package/src/http/http.types.ts +250 -0
  38. package/src/http/incomingmessage-to-request-convertor.ts +0 -0
  39. package/src/http/index.ts +8 -0
  40. package/src/http/log-http-routes.ts +22 -0
  41. package/src/http/pikku-fetch-http-request.test.ts +237 -0
  42. package/src/http/pikku-fetch-http-request.ts +163 -0
  43. package/src/http/pikku-fetch-http-response.test.ts +82 -0
  44. package/src/http/pikku-fetch-http-response.ts +138 -0
  45. package/src/index.ts +20 -0
  46. package/src/middleware/auth-apikey.ts +66 -0
  47. package/src/middleware/auth-bearer.ts +66 -0
  48. package/src/middleware/auth-cookie.ts +103 -0
  49. package/src/middleware/index.ts +3 -0
  50. package/src/middleware/timeout.ts +13 -0
  51. package/src/middleware-runner.ts +43 -0
  52. package/src/permissions.test.ts +58 -0
  53. package/src/permissions.ts +43 -0
  54. package/src/pikku-function.ts +1 -0
  55. package/src/pikku-request.ts +23 -0
  56. package/src/pikku-response.ts +5 -0
  57. package/src/pikku-state.ts +87 -0
  58. package/src/scheduler/index.ts +5 -0
  59. package/src/scheduler/log-schedulers.ts +20 -0
  60. package/src/scheduler/scheduler-runner.ts +105 -0
  61. package/src/scheduler/scheduler.types.ts +33 -0
  62. package/src/schema.test.ts +57 -0
  63. package/src/schema.ts +99 -0
  64. package/src/services/content-service.ts +68 -0
  65. package/src/services/index.ts +18 -0
  66. package/src/services/jwt-service.ts +30 -0
  67. package/src/services/local-content.ts +105 -0
  68. package/src/services/local-secrets.ts +43 -0
  69. package/src/services/local-variables.ts +17 -0
  70. package/src/services/logger-console.ts +97 -0
  71. package/src/services/logger.ts +57 -0
  72. package/src/services/schema-service.ts +26 -0
  73. package/src/services/secret-service.ts +17 -0
  74. package/src/services/user-session-service.ts +53 -0
  75. package/src/services/variables-service.ts +6 -0
  76. package/src/time-utils.test.ts +56 -0
  77. package/src/time-utils.ts +32 -0
  78. package/src/types/core.types.ts +178 -0
  79. package/src/utils.ts +40 -0
  80. package/tsconfig.json +13 -0
  81. package/tsconfig.tsbuildinfo +1 -0
  82. package/dist/http/http-route-runner.d.ts +0 -90
  83. package/dist/http/http-route-runner.js +0 -325
  84. package/dist/http/http-routes.types.d.ts +0 -179
  85. package/dist/http/http-routes.types.js +0 -1
  86. package/dist/http/pikku-http-request.d.ts +0 -56
  87. package/dist/http/pikku-http-request.js +0 -95
  88. package/dist/http/pikku-http-response.d.ts +0 -13
  89. package/dist/http/pikku-http-response.js +0 -60
  90. package/dist/parse-relative-time-offset.d.ts +0 -12
  91. package/dist/parse-relative-time-offset.js +0 -20
  92. package/dist/pikku-func.d.ts +0 -12
  93. package/dist/pikku-func.js +0 -39
  94. package/dist/types/functions.types.d.ts +0 -37
  95. package/dist/types/functions.types.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  ## 0.7.0
2
2
 
3
+ ## 0.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - bb59874: fix: only try validating schemas if they exist in function runner
8
+
9
+ ## 0.7.1
10
+
11
+ ### Patch Changes
12
+
13
+ - cd83e0a: fix: invalid logroutes log line
14
+
3
15
  We now use the function first approach internally, which means first all the functions register, and then events call call them.
4
16
 
5
17
  The main breaking changes for the end user are:
@@ -72,7 +72,7 @@ const getMatchingChannelConfig = (request) => {
72
72
  params: matchedPath.params,
73
73
  channelConfig,
74
74
  schemaName: channelMeta.input,
75
- meta: channelMeta
75
+ meta: channelMeta,
76
76
  };
77
77
  }
78
78
  }
@@ -24,7 +24,7 @@ const getVariablesForChannel = ({ channelId, channelName, channelHandlerFactory,
24
24
  channelConfig,
25
25
  channelHandler,
26
26
  channel: channelHandler.getChannel(),
27
- meta
27
+ meta,
28
28
  };
29
29
  };
30
30
  export const runChannelConnect = async ({ singletonServices, channelId, channelObject, request, response, route, createSessionServices, channelStore, channelHandlerFactory, coerceDataFromSchema = true, logWarningsForStatusCodes = [], respondWith404 = true, bubbleErrors = false, }) => {
@@ -22,11 +22,13 @@ export const runPikkuFunc = async (funcName, { singletonServices, getAllServices
22
22
  throw new Error(`Function meta not found: ${funcName}`);
23
23
  }
24
24
  const schemaName = funcMeta.schemaName;
25
- // Validate request data against the defined schema, if any
26
- await validateSchema(singletonServices.logger, singletonServices.schema, schemaName, data);
27
- // Coerce (top level) query string parameters or date objects if specified by the schema
28
- if (coerceDataFromSchema && schemaName) {
29
- coerceTopLevelDataFromSchema(schemaName, data);
25
+ if (schemaName) {
26
+ // Validate request data against the defined schema, if any
27
+ await validateSchema(singletonServices.logger, singletonServices.schema, schemaName, data);
28
+ // Coerce (top level) query string parameters or date objects if specified by the schema
29
+ if (coerceDataFromSchema) {
30
+ coerceTopLevelDataFromSchema(schemaName, data);
31
+ }
30
32
  }
31
33
  const allServices = await getAllServices();
32
34
  // Execute permission checks
@@ -59,7 +59,9 @@ export const addHTTPRoute = (httpRoute) => {
59
59
  if (!routes.has(httpRoute.method)) {
60
60
  routes.set(httpRoute.method, new Map());
61
61
  }
62
- pikkuState('http', 'routes').get(httpRoute.method)?.set(httpRoute.route, httpRoute);
62
+ pikkuState('http', 'routes')
63
+ .get(httpRoute.method)
64
+ ?.set(httpRoute.route, httpRoute);
63
65
  };
64
66
  /**
65
67
  * Finds a matching route based on the HTTP method and URL path.
@@ -99,7 +101,7 @@ const getMatchingRoute = (requestType, requestPath) => {
99
101
  route,
100
102
  permissions: route.permissions,
101
103
  middleware: [...globalMiddleware, ...(route.middleware || [])],
102
- meta: meta
104
+ meta: meta,
103
105
  };
104
106
  }
105
107
  }
@@ -12,7 +12,7 @@ export const logRoutes = (logger) => {
12
12
  let routesMessage = 'Routes loaded:';
13
13
  routesByType.forEach((routes) => {
14
14
  routes.forEach((route) => {
15
- routesMessage += `\n\t- ${route.method.toUpperCase()} -> ${route}`;
15
+ routesMessage += `\n\t- ${route.method.toUpperCase()} -> ${route.route}`;
16
16
  });
17
17
  });
18
18
  logger.info(routesMessage);