@proteinjs/server-api 1.3.5 → 1.4.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [1.4.0](https://github.com/brentbahry/server/compare/@proteinjs/server-api@1.3.5...@proteinjs/server-api@1.4.0) (2024-08-02)
7
+
8
+
9
+ ### Features
10
+
11
+ * added `StartupTask` ([d66616a](https://github.com/brentbahry/server/commit/d66616a2696c001c8ebef6828d319af6aeba245c))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [1.3.5](https://github.com/brentbahry/server/compare/@proteinjs/server-api@1.3.4...@proteinjs/server-api@1.3.5) (2024-07-20)
7
18
 
8
19
  **Note:** Version bump only for package @proteinjs/server-api
@@ -17,7 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  require("@proteinjs/reflection");
19
19
  /** Generate Source Graph */
20
- var sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/server-api/IEnvRepo\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"IEnvRepo\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/EnvInfo.ts\",\"qualifiedName\":\"@proteinjs/server-api/IEnvRepo\",\"properties\":[],\"methods\":[{\"name\":\"getEnv\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Env\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Env\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/reflection/Loadable\"},{\"v\":\"@proteinjs/server-api/EnvRepo\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"EnvRepo\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/EnvRepo.ts\",\"qualifiedName\":\"@proteinjs/server-api/EnvRepo\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"getEnv\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Env\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Env\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]},{\"name\":\"setEnv\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"env\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Env\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Env\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"IEnvRepo\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/IEnvRepo\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/RequestListener\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"RequestListener\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/RequestListener.ts\",\"qualifiedName\":\"@proteinjs/server-api/RequestListener\",\"properties\":[],\"methods\":[{\"name\":\"beforeRequest\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":true,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"request\",\"type\":{\"packageName\":\"\",\"name\":\"express.Request\",\"filePath\":null,\"qualifiedName\":\"/express.Request\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"response\",\"type\":{\"packageName\":\"\",\"name\":\"express.Response\",\"filePath\":null,\"qualifiedName\":\"/express.Response\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"afterRequest\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":true,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"request\",\"type\":{\"packageName\":\"\",\"name\":\"express.Request\",\"filePath\":null,\"qualifiedName\":\"/express.Request\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"response\",\"type\":{\"packageName\":\"\",\"name\":\"express.Response\",\"filePath\":null,\"qualifiedName\":\"/express.Response\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/Route\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Route\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/Route.ts\",\"qualifiedName\":\"@proteinjs/server-api/Route\",\"properties\":[{\"name\":\"path\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"method\",\"type\":{\"packageName\":\"\",\"name\":\"'get' | 'post' | 'put' | 'patch' | 'delete'\",\"filePath\":null,\"qualifiedName\":\"/'get' | 'post' | 'put' | 'patch' | 'delete'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"useHttp\",\"type\":{\"packageName\":\"\",\"name\":\"boolean\",\"filePath\":null,\"qualifiedName\":\"/boolean\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"onRequest\",\"type\":{\"packageName\":\"\",\"name\":\"(request: express.Request, response: express.Response) => Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/(request: express.Request, response: express.Response) => Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/ServerRenderedScript\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"ServerRenderedScript\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/ServerRenderedScript.ts\",\"qualifiedName\":\"@proteinjs/server-api/ServerRenderedScript\",\"properties\":[],\"methods\":[{\"name\":\"script\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/BrowserGlobalDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"BrowserGlobalDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/BrowserGlobalDataStorage.ts\",\"qualifiedName\":\"@proteinjs/server-api/BrowserGlobalDataStorage\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"environment\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataStorage\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalDataStorage\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/GlobalDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/Global.ts\",\"qualifiedName\":\"@proteinjs/server-api/GlobalDataStorage\",\"properties\":[{\"name\":\"environment\",\"type\":{\"packageName\":\"\",\"name\":\"'node' | 'browser'\",\"filePath\":null,\"qualifiedName\":\"/'node' | 'browser'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":{\"packageName\":\"\",\"name\":\"void\",\"filePath\":null,\"qualifiedName\":\"/void\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/GlobalDataCache\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataCache\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/GlobalDataCache.ts\",\"qualifiedName\":\"@proteinjs/server-api/GlobalDataCache\",\"properties\":[{\"name\":\"key\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"create\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<T>\",\"filePath\":null,\"qualifiedName\":\"/Promise<T>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[\"/T\"],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/GlobalDataScriptTag\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataScriptTag\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/GlobalDataScriptTag.ts\",\"qualifiedName\":\"@proteinjs/server-api/GlobalDataScriptTag\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"script\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"ServerRenderedScript\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/ServerRenderedScript\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/BrowserSessionDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"BrowserSessionDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/BrowserSessionDataStorage.ts\",\"qualifiedName\":\"@proteinjs/server-api/BrowserSessionDataStorage\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"environment\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataStorage\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionDataStorage\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/SessionDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/Session.ts\",\"qualifiedName\":\"@proteinjs/server-api/SessionDataStorage\",\"properties\":[{\"name\":\"environment\",\"type\":{\"packageName\":\"\",\"name\":\"'node' | 'browser'\",\"filePath\":null,\"qualifiedName\":\"/'node' | 'browser'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":{\"packageName\":\"\",\"name\":\"void\",\"filePath\":null,\"qualifiedName\":\"/void\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/SessionDataCache\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataCache\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/SessionDataCache.ts\",\"qualifiedName\":\"@proteinjs/server-api/SessionDataCache\",\"properties\":[{\"name\":\"key\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"create\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<T>\",\"filePath\":null,\"qualifiedName\":\"/Promise<T>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"sessionId\",\"type\":{\"packageName\":\"\",\"name\":\"string | undefined\",\"filePath\":null,\"qualifiedName\":\"/string | undefined\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"user\",\"type\":{\"packageName\":\"\",\"name\":\"string | undefined\",\"filePath\":null,\"qualifiedName\":\"/string | undefined\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[\"/T\"],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/SessionDataScriptTag\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataScriptTag\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/SessionDataScriptTag.ts\",\"qualifiedName\":\"@proteinjs/server-api/SessionDataScriptTag\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"script\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"ServerRenderedScript\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/ServerRenderedScript\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}}],\"edges\":[{\"v\":\"@proteinjs/server-api/IEnvRepo\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/EnvRepo\",\"w\":\"@proteinjs/server-api/IEnvRepo\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/RequestListener\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/Route\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/ServerRenderedScript\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/BrowserGlobalDataStorage\",\"w\":\"@proteinjs/server-api/GlobalDataStorage\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/GlobalDataStorage\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/GlobalDataCache\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/GlobalDataScriptTag\",\"w\":\"@proteinjs/server-api/ServerRenderedScript\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/BrowserSessionDataStorage\",\"w\":\"@proteinjs/server-api/SessionDataStorage\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/SessionDataStorage\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/SessionDataCache\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/SessionDataScriptTag\",\"w\":\"@proteinjs/server-api/ServerRenderedScript\",\"value\":\"implements interface\"}]}";
20
+ var sourceGraph = "{\"options\":{\"directed\":true,\"multigraph\":false,\"compound\":false},\"nodes\":[{\"v\":\"@proteinjs/server-api/IEnvRepo\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"IEnvRepo\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/EnvInfo.ts\",\"qualifiedName\":\"@proteinjs/server-api/IEnvRepo\",\"properties\":[],\"methods\":[{\"name\":\"getEnv\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Env\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Env\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/reflection/Loadable\"},{\"v\":\"@proteinjs/server-api/EnvRepo\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"EnvRepo\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/EnvRepo.ts\",\"qualifiedName\":\"@proteinjs/server-api/EnvRepo\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"getEnv\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Env\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Env\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]},{\"name\":\"setEnv\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"env\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Env\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/Env\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"IEnvRepo\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/IEnvRepo\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/RequestListener\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"RequestListener\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/RequestListener.ts\",\"qualifiedName\":\"@proteinjs/server-api/RequestListener\",\"properties\":[],\"methods\":[{\"name\":\"beforeRequest\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":true,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"request\",\"type\":{\"packageName\":\"\",\"name\":\"express.Request\",\"filePath\":null,\"qualifiedName\":\"/express.Request\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"response\",\"type\":{\"packageName\":\"\",\"name\":\"express.Response\",\"filePath\":null,\"qualifiedName\":\"/express.Response\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"afterRequest\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":true,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"request\",\"type\":{\"packageName\":\"\",\"name\":\"express.Request\",\"filePath\":null,\"qualifiedName\":\"/express.Request\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"response\",\"type\":{\"packageName\":\"\",\"name\":\"express.Response\",\"filePath\":null,\"qualifiedName\":\"/express.Response\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/Route\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"Route\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/Route.ts\",\"qualifiedName\":\"@proteinjs/server-api/Route\",\"properties\":[{\"name\":\"path\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"method\",\"type\":{\"packageName\":\"\",\"name\":\"'get' | 'post' | 'put' | 'patch' | 'delete'\",\"filePath\":null,\"qualifiedName\":\"/'get' | 'post' | 'put' | 'patch' | 'delete'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"useHttp\",\"type\":{\"packageName\":\"\",\"name\":\"boolean\",\"filePath\":null,\"qualifiedName\":\"/boolean\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":true,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"onRequest\",\"type\":{\"packageName\":\"\",\"name\":\"(request: express.Request, response: express.Response) => Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/(request: express.Request, response: express.Response) => Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/ServerRenderedScript\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"ServerRenderedScript\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/ServerRenderedScript.ts\",\"qualifiedName\":\"@proteinjs/server-api/ServerRenderedScript\",\"properties\":[],\"methods\":[{\"name\":\"script\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/StartupTask\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"StartupTask\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/StartupTask.ts\",\"qualifiedName\":\"@proteinjs/server-api/StartupTask\",\"properties\":[{\"name\":\"name\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"},{\"name\":\"when\",\"type\":{\"packageName\":\"\",\"name\":\"'before server config' | 'after server config' | 'after server start'\",\"filePath\":null,\"qualifiedName\":\"/'before server config' | 'after server config' | 'after server start'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"run\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<void>\",\"filePath\":null,\"qualifiedName\":\"/Promise<void>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/BrowserGlobalDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"BrowserGlobalDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/BrowserGlobalDataStorage.ts\",\"qualifiedName\":\"@proteinjs/server-api/BrowserGlobalDataStorage\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"environment\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataStorage\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalDataStorage\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/GlobalDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/Global.ts\",\"qualifiedName\":\"@proteinjs/server-api/GlobalDataStorage\",\"properties\":[{\"name\":\"environment\",\"type\":{\"packageName\":\"\",\"name\":\"'node' | 'browser'\",\"filePath\":null,\"qualifiedName\":\"/'node' | 'browser'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":{\"packageName\":\"\",\"name\":\"void\",\"filePath\":null,\"qualifiedName\":\"/void\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/GlobalData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/GlobalDataCache\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataCache\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/GlobalDataCache.ts\",\"qualifiedName\":\"@proteinjs/server-api/GlobalDataCache\",\"properties\":[{\"name\":\"key\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"create\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<T>\",\"filePath\":null,\"qualifiedName\":\"/Promise<T>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[\"/T\"],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/GlobalDataScriptTag\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"GlobalDataScriptTag\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/global/GlobalDataScriptTag.ts\",\"qualifiedName\":\"@proteinjs/server-api/GlobalDataScriptTag\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"script\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"ServerRenderedScript\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/ServerRenderedScript\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/BrowserSessionDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"BrowserSessionDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/BrowserSessionDataStorage.ts\",\"qualifiedName\":\"@proteinjs/server-api/BrowserSessionDataStorage\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[{\"name\":\"environment\",\"type\":null,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":null,\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataStorage\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionDataStorage\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}},{\"v\":\"@proteinjs/server-api/SessionDataStorage\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataStorage\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/Session.ts\",\"qualifiedName\":\"@proteinjs/server-api/SessionDataStorage\",\"properties\":[{\"name\":\"environment\",\"type\":{\"packageName\":\"\",\"name\":\"'node' | 'browser'\",\"filePath\":null,\"qualifiedName\":\"/'node' | 'browser'\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"setData\",\"returnType\":{\"packageName\":\"\",\"name\":\"void\",\"filePath\":null,\"qualifiedName\":\"/void\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"data\",\"type\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null}}]},{\"name\":\"getData\",\"returnType\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionData\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/SessionData\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/SessionDataCache\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataCache\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/SessionDataCache.ts\",\"qualifiedName\":\"@proteinjs/server-api/SessionDataCache\",\"properties\":[{\"name\":\"key\",\"type\":{\"packageName\":\"\",\"name\":\"string\",\"filePath\":null,\"qualifiedName\":\"/string\",\"typeParameters\":null,\"directParents\":null},\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\"}],\"methods\":[{\"name\":\"create\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<T>\",\"filePath\":null,\"qualifiedName\":\"/Promise<T>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":false,\"isOptional\":false,\"isAbstract\":true,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[{\"name\":\"sessionId\",\"type\":{\"packageName\":\"\",\"name\":\"string | undefined\",\"filePath\":null,\"qualifiedName\":\"/string | undefined\",\"typeParameters\":null,\"directParents\":null}},{\"name\":\"user\",\"type\":{\"packageName\":\"\",\"name\":\"string | undefined\",\"filePath\":null,\"qualifiedName\":\"/string | undefined\",\"typeParameters\":null,\"directParents\":null}}]}],\"typeParameters\":[\"/T\"],\"directParents\":[{\"packageName\":\"@proteinjs/reflection\",\"name\":\"Loadable\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/reflection/Loadable\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"sourceType\":3}},{\"v\":\"@proteinjs/server-api/SessionDataScriptTag\",\"value\":{\"packageName\":\"@proteinjs/server-api\",\"name\":\"SessionDataScriptTag\",\"filePath\":\"/home/runner/work/server/server/packages/api/src/session/SessionDataScriptTag.ts\",\"qualifiedName\":\"@proteinjs/server-api/SessionDataScriptTag\",\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"properties\":[],\"methods\":[{\"name\":\"script\",\"returnType\":{\"packageName\":\"\",\"name\":\"Promise<string>\",\"filePath\":null,\"qualifiedName\":\"/Promise<string>\",\"typeParameters\":null,\"directParents\":null},\"isAsync\":true,\"isOptional\":false,\"isAbstract\":false,\"isStatic\":false,\"visibility\":\"public\",\"parameters\":[]}],\"typeParameters\":[],\"directParentInterfaces\":[{\"packageName\":\"@proteinjs/server-api\",\"name\":\"ServerRenderedScript\",\"filePath\":null,\"qualifiedName\":\"@proteinjs/server-api/ServerRenderedScript\",\"properties\":[],\"methods\":[],\"typeParameters\":[],\"directParents\":[]}],\"directParentClasses\":[],\"sourceType\":2}}],\"edges\":[{\"v\":\"@proteinjs/server-api/IEnvRepo\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/EnvRepo\",\"w\":\"@proteinjs/server-api/IEnvRepo\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/RequestListener\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/Route\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/ServerRenderedScript\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/StartupTask\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/BrowserGlobalDataStorage\",\"w\":\"@proteinjs/server-api/GlobalDataStorage\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/GlobalDataStorage\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/GlobalDataCache\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/GlobalDataScriptTag\",\"w\":\"@proteinjs/server-api/ServerRenderedScript\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/BrowserSessionDataStorage\",\"w\":\"@proteinjs/server-api/SessionDataStorage\",\"value\":\"implements interface\"},{\"v\":\"@proteinjs/server-api/SessionDataStorage\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/SessionDataCache\",\"w\":\"@proteinjs/reflection/Loadable\",\"value\":\"extends interface\"},{\"v\":\"@proteinjs/server-api/SessionDataScriptTag\",\"w\":\"@proteinjs/server-api/ServerRenderedScript\",\"value\":\"implements interface\"}]}";
21
21
  /** Generate Source Links */
22
22
  var EnvRepo_1 = require("../src/EnvRepo");
23
23
  var BrowserGlobalDataStorage_1 = require("../src/global/BrowserGlobalDataStorage");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,iCAA+B;AAG/B,4BAA4B;AAE5B,IAAM,WAAW,GAAG,0tnBAA0tnB,CAAC;AAG/unB,4BAA4B;AAE5B,0CAAyC;AACzC,mFAAkF;AAClF,yEAAwE;AACxE,sFAAqF;AACrF,4EAA2E;AAE3E,IAAM,WAAW,GAAG;IACnB,+BAA+B,EAAE,iBAAO;IACxC,gDAAgD,EAAE,mDAAwB;IAC1E,2CAA2C,EAAE,yCAAmB;IAChE,iDAAiD,EAAE,qDAAyB;IAC5E,4CAA4C,EAAE,2CAAoB;CAClE,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../generated/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,iCAA+B;AAG/B,4BAA4B;AAE5B,IAAM,WAAW,GAAG,ozqBAAozqB,CAAC;AAGz0qB,4BAA4B;AAE5B,0CAAyC;AACzC,mFAAkF;AAClF,yEAAwE;AACxE,sFAAqF;AACrF,4EAA2E;AAE3E,IAAM,WAAW,GAAG;IACnB,+BAA+B,EAAE,iBAAO;IACxC,gDAAgD,EAAE,mDAAwB;IAC1E,2CAA2C,EAAE,yCAAmB;IAChE,iDAAiD,EAAE,qDAAyB;IAC5E,4CAA4C,EAAE,2CAAoB;CAClE,CAAC;AAGF,kCAAkC;AAElC,oDAAyD;AACzD,6BAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAGjD,2CAAyB"}
package/dist/index.d.ts CHANGED
@@ -10,4 +10,5 @@ export * from './src/EnvInfo';
10
10
  export * from './src/EnvRepo';
11
11
  export * from './src/FeatureFlag';
12
12
  export * from './src/ServerRenderedScript';
13
+ export * from './src/StartupTask';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -29,4 +29,5 @@ __exportStar(require("./src/EnvInfo"), exports);
29
29
  __exportStar(require("./src/EnvRepo"), exports);
30
30
  __exportStar(require("./src/FeatureFlag"), exports);
31
31
  __exportStar(require("./src/ServerRenderedScript"), exports);
32
+ __exportStar(require("./src/StartupTask"), exports);
32
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,8CAA4B;AAC5B,wDAAsC;AACtC,8CAA4E;AAAnE,gGAAA,MAAM,OAAA;AACf,+DAA6C;AAC7C,iDAAiF;AAAxE,kGAAA,OAAO,OAAA;AAChB,iEAA+C;AAC/C,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B;AAC9B,oDAAkC;AAClC,6DAA2C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,8CAA4B;AAC5B,wDAAsC;AACtC,8CAA4E;AAAnE,gGAAA,MAAM,OAAA;AACf,+DAA6C;AAC7C,iDAAiF;AAAxE,kGAAA,OAAO,OAAA;AAChB,iEAA+C;AAC/C,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B;AAC9B,oDAAkC;AAClC,6DAA2C;AAC3C,oDAAkC"}
@@ -2,6 +2,12 @@ import express from 'express';
2
2
  import expressSession from 'express-session';
3
3
  type MakeMandatory<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
4
4
  export interface ServerConfig {
5
+ /**
6
+ * Runs:
7
+ * - after server config
8
+ * - after `after server config` startup tasks
9
+ * - before server start
10
+ */
5
11
  onStartup?: () => Promise<void>;
6
12
  session: MakeMandatory<expressSession.SessionOptions, 'secret' | 'store'>;
7
13
  authenticate?: (username: string, password: string) => Promise<true | string>;
@@ -1 +1 @@
1
- {"version":3,"file":"ServerConfig.d.ts","sourceRoot":"","sources":["../../src/ServerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAE7C,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IAC9E,aAAa,CAAC,EAAE;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,yCAAyC;QACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,gEAAgE;QAChE,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,uCAAuC;QACvC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,8CAA8C;QAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gIAAgI;IAChI,eAAe,CAAC,EAAE;QAChB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QACR,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACpH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACnH,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
1
+ {"version":3,"file":"ServerConfig.d.ts","sourceRoot":"","sources":["../../src/ServerConfig.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAE7C,KAAK,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE7E,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IAC9E,aAAa,CAAC,EAAE;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,yCAAyC;QACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,gEAAgE;QAChE,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,uCAAuC;QACvC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,8CAA8C;QAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,gIAAgI;IAChI,eAAe,CAAC,EAAE;QAChB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QACR,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACpH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACnH,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
@@ -0,0 +1,8 @@
1
+ import { Loadable } from '@proteinjs/reflection';
2
+ export declare const getStartupTasks: () => StartupTask[];
3
+ export interface StartupTask extends Loadable {
4
+ name: string;
5
+ when: 'before server config' | 'after server config' | 'after server start';
6
+ run(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=StartupTask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartupTask.d.ts","sourceRoot":"","sources":["../../src/StartupTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,uBAAuB,CAAC;AAEnE,eAAO,MAAM,eAAe,qBAAyF,CAAC;AAEtH,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,sBAAsB,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;IAC5E,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStartupTasks = void 0;
4
+ var reflection_1 = require("@proteinjs/reflection");
5
+ var getStartupTasks = function () { return reflection_1.SourceRepository.get().objects('@proteinjs/server-api/StartupTask'); };
6
+ exports.getStartupTasks = getStartupTasks;
7
+ //# sourceMappingURL=StartupTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartupTask.js","sourceRoot":"","sources":["../../src/StartupTask.ts"],"names":[],"mappings":";;;AAAA,oDAAmE;AAE5D,IAAM,eAAe,GAAG,cAAM,OAAA,6BAAgB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAc,mCAAmC,CAAC,EAAhF,CAAgF,CAAC;AAAzG,QAAA,eAAe,mBAA0F"}
@@ -5,7 +5,7 @@ import '@proteinjs/reflection';
5
5
  /** Generate Source Graph */
6
6
 
7
7
  const sourceGraph =
8
- '{"options":{"directed":true,"multigraph":false,"compound":false},"nodes":[{"v":"@proteinjs/server-api/IEnvRepo","value":{"packageName":"@proteinjs/server-api","name":"IEnvRepo","filePath":"/home/runner/work/server/server/packages/api/src/EnvInfo.ts","qualifiedName":"@proteinjs/server-api/IEnvRepo","properties":[],"methods":[{"name":"getEnv","returnType":{"packageName":"@proteinjs/server-api","name":"Env","filePath":null,"qualifiedName":"@proteinjs/server-api/Env","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/reflection/Loadable"},{"v":"@proteinjs/server-api/EnvRepo","value":{"packageName":"@proteinjs/server-api","name":"EnvRepo","filePath":"/home/runner/work/server/server/packages/api/src/EnvRepo.ts","qualifiedName":"@proteinjs/server-api/EnvRepo","isAbstract":false,"isStatic":false,"visibility":"public","properties":[],"methods":[{"name":"getEnv","returnType":{"packageName":"@proteinjs/server-api","name":"Env","filePath":null,"qualifiedName":"@proteinjs/server-api/Env","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]},{"name":"setEnv","returnType":null,"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[{"name":"env","type":{"packageName":"@proteinjs/server-api","name":"Env","filePath":null,"qualifiedName":"@proteinjs/server-api/Env","typeParameters":null,"directParents":null}}]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"IEnvRepo","filePath":null,"qualifiedName":"@proteinjs/server-api/IEnvRepo","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/RequestListener","value":{"packageName":"@proteinjs/server-api","name":"RequestListener","filePath":"/home/runner/work/server/server/packages/api/src/RequestListener.ts","qualifiedName":"@proteinjs/server-api/RequestListener","properties":[],"methods":[{"name":"beforeRequest","returnType":{"packageName":"","name":"Promise<void>","filePath":null,"qualifiedName":"/Promise<void>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":true,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"request","type":{"packageName":"","name":"express.Request","filePath":null,"qualifiedName":"/express.Request","typeParameters":null,"directParents":null}},{"name":"response","type":{"packageName":"","name":"express.Response","filePath":null,"qualifiedName":"/express.Response","typeParameters":null,"directParents":null}}]},{"name":"afterRequest","returnType":{"packageName":"","name":"Promise<void>","filePath":null,"qualifiedName":"/Promise<void>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":true,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"request","type":{"packageName":"","name":"express.Request","filePath":null,"qualifiedName":"/express.Request","typeParameters":null,"directParents":null}},{"name":"response","type":{"packageName":"","name":"express.Response","filePath":null,"qualifiedName":"/express.Response","typeParameters":null,"directParents":null}}]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/Route","value":{"packageName":"@proteinjs/server-api","name":"Route","filePath":"/home/runner/work/server/server/packages/api/src/Route.ts","qualifiedName":"@proteinjs/server-api/Route","properties":[{"name":"path","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"method","type":{"packageName":"","name":"\'get\' | \'post\' | \'put\' | \'patch\' | \'delete\'","filePath":null,"qualifiedName":"/\'get\' | \'post\' | \'put\' | \'patch\' | \'delete\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"useHttp","type":{"packageName":"","name":"boolean","filePath":null,"qualifiedName":"/boolean","typeParameters":null,"directParents":null},"isOptional":true,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"onRequest","type":{"packageName":"","name":"(request: express.Request, response: express.Response) => Promise<void>","filePath":null,"qualifiedName":"/(request: express.Request, response: express.Response) => Promise<void>","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/ServerRenderedScript","value":{"packageName":"@proteinjs/server-api","name":"ServerRenderedScript","filePath":"/home/runner/work/server/server/packages/api/src/ServerRenderedScript.ts","qualifiedName":"@proteinjs/server-api/ServerRenderedScript","properties":[],"methods":[{"name":"script","returnType":{"packageName":"","name":"Promise<string>","filePath":null,"qualifiedName":"/Promise<string>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/BrowserGlobalDataStorage","value":{"packageName":"@proteinjs/server-api","name":"BrowserGlobalDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/global/BrowserGlobalDataStorage.ts","qualifiedName":"@proteinjs/server-api/BrowserGlobalDataStorage","isAbstract":false,"isStatic":false,"visibility":"public","properties":[{"name":"environment","type":null,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":null,"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"GlobalDataStorage","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalDataStorage","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/GlobalDataStorage","value":{"packageName":"@proteinjs/server-api","name":"GlobalDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/global/Global.ts","qualifiedName":"@proteinjs/server-api/GlobalDataStorage","properties":[{"name":"environment","type":{"packageName":"","name":"\'node\' | \'browser\'","filePath":null,"qualifiedName":"/\'node\' | \'browser\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":{"packageName":"","name":"void","filePath":null,"qualifiedName":"/void","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/GlobalDataCache","value":{"packageName":"@proteinjs/server-api","name":"GlobalDataCache","filePath":"/home/runner/work/server/server/packages/api/src/global/GlobalDataCache.ts","qualifiedName":"@proteinjs/server-api/GlobalDataCache","properties":[{"name":"key","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"create","returnType":{"packageName":"","name":"Promise<T>","filePath":null,"qualifiedName":"/Promise<T>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":["/T"],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/GlobalDataScriptTag","value":{"packageName":"@proteinjs/server-api","name":"GlobalDataScriptTag","filePath":"/home/runner/work/server/server/packages/api/src/global/GlobalDataScriptTag.ts","qualifiedName":"@proteinjs/server-api/GlobalDataScriptTag","isAbstract":false,"isStatic":false,"visibility":"public","properties":[],"methods":[{"name":"script","returnType":{"packageName":"","name":"Promise<string>","filePath":null,"qualifiedName":"/Promise<string>","typeParameters":null,"directParents":null},"isAsync":true,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"ServerRenderedScript","filePath":null,"qualifiedName":"@proteinjs/server-api/ServerRenderedScript","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/BrowserSessionDataStorage","value":{"packageName":"@proteinjs/server-api","name":"BrowserSessionDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/session/BrowserSessionDataStorage.ts","qualifiedName":"@proteinjs/server-api/BrowserSessionDataStorage","isAbstract":false,"isStatic":false,"visibility":"public","properties":[{"name":"environment","type":null,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":null,"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"SessionDataStorage","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionDataStorage","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/SessionDataStorage","value":{"packageName":"@proteinjs/server-api","name":"SessionDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/session/Session.ts","qualifiedName":"@proteinjs/server-api/SessionDataStorage","properties":[{"name":"environment","type":{"packageName":"","name":"\'node\' | \'browser\'","filePath":null,"qualifiedName":"/\'node\' | \'browser\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":{"packageName":"","name":"void","filePath":null,"qualifiedName":"/void","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/SessionDataCache","value":{"packageName":"@proteinjs/server-api","name":"SessionDataCache","filePath":"/home/runner/work/server/server/packages/api/src/session/SessionDataCache.ts","qualifiedName":"@proteinjs/server-api/SessionDataCache","properties":[{"name":"key","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"create","returnType":{"packageName":"","name":"Promise<T>","filePath":null,"qualifiedName":"/Promise<T>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"sessionId","type":{"packageName":"","name":"string | undefined","filePath":null,"qualifiedName":"/string | undefined","typeParameters":null,"directParents":null}},{"name":"user","type":{"packageName":"","name":"string | undefined","filePath":null,"qualifiedName":"/string | undefined","typeParameters":null,"directParents":null}}]}],"typeParameters":["/T"],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/SessionDataScriptTag","value":{"packageName":"@proteinjs/server-api","name":"SessionDataScriptTag","filePath":"/home/runner/work/server/server/packages/api/src/session/SessionDataScriptTag.ts","qualifiedName":"@proteinjs/server-api/SessionDataScriptTag","isAbstract":false,"isStatic":false,"visibility":"public","properties":[],"methods":[{"name":"script","returnType":{"packageName":"","name":"Promise<string>","filePath":null,"qualifiedName":"/Promise<string>","typeParameters":null,"directParents":null},"isAsync":true,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"ServerRenderedScript","filePath":null,"qualifiedName":"@proteinjs/server-api/ServerRenderedScript","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}}],"edges":[{"v":"@proteinjs/server-api/IEnvRepo","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/EnvRepo","w":"@proteinjs/server-api/IEnvRepo","value":"implements interface"},{"v":"@proteinjs/server-api/RequestListener","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/Route","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/ServerRenderedScript","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/BrowserGlobalDataStorage","w":"@proteinjs/server-api/GlobalDataStorage","value":"implements interface"},{"v":"@proteinjs/server-api/GlobalDataStorage","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/GlobalDataCache","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/GlobalDataScriptTag","w":"@proteinjs/server-api/ServerRenderedScript","value":"implements interface"},{"v":"@proteinjs/server-api/BrowserSessionDataStorage","w":"@proteinjs/server-api/SessionDataStorage","value":"implements interface"},{"v":"@proteinjs/server-api/SessionDataStorage","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/SessionDataCache","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/SessionDataScriptTag","w":"@proteinjs/server-api/ServerRenderedScript","value":"implements interface"}]}';
8
+ '{"options":{"directed":true,"multigraph":false,"compound":false},"nodes":[{"v":"@proteinjs/server-api/IEnvRepo","value":{"packageName":"@proteinjs/server-api","name":"IEnvRepo","filePath":"/home/runner/work/server/server/packages/api/src/EnvInfo.ts","qualifiedName":"@proteinjs/server-api/IEnvRepo","properties":[],"methods":[{"name":"getEnv","returnType":{"packageName":"@proteinjs/server-api","name":"Env","filePath":null,"qualifiedName":"@proteinjs/server-api/Env","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/reflection/Loadable"},{"v":"@proteinjs/server-api/EnvRepo","value":{"packageName":"@proteinjs/server-api","name":"EnvRepo","filePath":"/home/runner/work/server/server/packages/api/src/EnvRepo.ts","qualifiedName":"@proteinjs/server-api/EnvRepo","isAbstract":false,"isStatic":false,"visibility":"public","properties":[],"methods":[{"name":"getEnv","returnType":{"packageName":"@proteinjs/server-api","name":"Env","filePath":null,"qualifiedName":"@proteinjs/server-api/Env","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]},{"name":"setEnv","returnType":null,"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[{"name":"env","type":{"packageName":"@proteinjs/server-api","name":"Env","filePath":null,"qualifiedName":"@proteinjs/server-api/Env","typeParameters":null,"directParents":null}}]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"IEnvRepo","filePath":null,"qualifiedName":"@proteinjs/server-api/IEnvRepo","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/RequestListener","value":{"packageName":"@proteinjs/server-api","name":"RequestListener","filePath":"/home/runner/work/server/server/packages/api/src/RequestListener.ts","qualifiedName":"@proteinjs/server-api/RequestListener","properties":[],"methods":[{"name":"beforeRequest","returnType":{"packageName":"","name":"Promise<void>","filePath":null,"qualifiedName":"/Promise<void>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":true,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"request","type":{"packageName":"","name":"express.Request","filePath":null,"qualifiedName":"/express.Request","typeParameters":null,"directParents":null}},{"name":"response","type":{"packageName":"","name":"express.Response","filePath":null,"qualifiedName":"/express.Response","typeParameters":null,"directParents":null}}]},{"name":"afterRequest","returnType":{"packageName":"","name":"Promise<void>","filePath":null,"qualifiedName":"/Promise<void>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":true,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"request","type":{"packageName":"","name":"express.Request","filePath":null,"qualifiedName":"/express.Request","typeParameters":null,"directParents":null}},{"name":"response","type":{"packageName":"","name":"express.Response","filePath":null,"qualifiedName":"/express.Response","typeParameters":null,"directParents":null}}]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/Route","value":{"packageName":"@proteinjs/server-api","name":"Route","filePath":"/home/runner/work/server/server/packages/api/src/Route.ts","qualifiedName":"@proteinjs/server-api/Route","properties":[{"name":"path","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"method","type":{"packageName":"","name":"\'get\' | \'post\' | \'put\' | \'patch\' | \'delete\'","filePath":null,"qualifiedName":"/\'get\' | \'post\' | \'put\' | \'patch\' | \'delete\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"useHttp","type":{"packageName":"","name":"boolean","filePath":null,"qualifiedName":"/boolean","typeParameters":null,"directParents":null},"isOptional":true,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"onRequest","type":{"packageName":"","name":"(request: express.Request, response: express.Response) => Promise<void>","filePath":null,"qualifiedName":"/(request: express.Request, response: express.Response) => Promise<void>","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/ServerRenderedScript","value":{"packageName":"@proteinjs/server-api","name":"ServerRenderedScript","filePath":"/home/runner/work/server/server/packages/api/src/ServerRenderedScript.ts","qualifiedName":"@proteinjs/server-api/ServerRenderedScript","properties":[],"methods":[{"name":"script","returnType":{"packageName":"","name":"Promise<string>","filePath":null,"qualifiedName":"/Promise<string>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/StartupTask","value":{"packageName":"@proteinjs/server-api","name":"StartupTask","filePath":"/home/runner/work/server/server/packages/api/src/StartupTask.ts","qualifiedName":"@proteinjs/server-api/StartupTask","properties":[{"name":"name","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"},{"name":"when","type":{"packageName":"","name":"\'before server config\' | \'after server config\' | \'after server start\'","filePath":null,"qualifiedName":"/\'before server config\' | \'after server config\' | \'after server start\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"run","returnType":{"packageName":"","name":"Promise<void>","filePath":null,"qualifiedName":"/Promise<void>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/BrowserGlobalDataStorage","value":{"packageName":"@proteinjs/server-api","name":"BrowserGlobalDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/global/BrowserGlobalDataStorage.ts","qualifiedName":"@proteinjs/server-api/BrowserGlobalDataStorage","isAbstract":false,"isStatic":false,"visibility":"public","properties":[{"name":"environment","type":null,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":null,"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"GlobalDataStorage","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalDataStorage","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/GlobalDataStorage","value":{"packageName":"@proteinjs/server-api","name":"GlobalDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/global/Global.ts","qualifiedName":"@proteinjs/server-api/GlobalDataStorage","properties":[{"name":"environment","type":{"packageName":"","name":"\'node\' | \'browser\'","filePath":null,"qualifiedName":"/\'node\' | \'browser\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":{"packageName":"","name":"void","filePath":null,"qualifiedName":"/void","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"GlobalData","filePath":null,"qualifiedName":"@proteinjs/server-api/GlobalData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/GlobalDataCache","value":{"packageName":"@proteinjs/server-api","name":"GlobalDataCache","filePath":"/home/runner/work/server/server/packages/api/src/global/GlobalDataCache.ts","qualifiedName":"@proteinjs/server-api/GlobalDataCache","properties":[{"name":"key","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"create","returnType":{"packageName":"","name":"Promise<T>","filePath":null,"qualifiedName":"/Promise<T>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":["/T"],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/GlobalDataScriptTag","value":{"packageName":"@proteinjs/server-api","name":"GlobalDataScriptTag","filePath":"/home/runner/work/server/server/packages/api/src/global/GlobalDataScriptTag.ts","qualifiedName":"@proteinjs/server-api/GlobalDataScriptTag","isAbstract":false,"isStatic":false,"visibility":"public","properties":[],"methods":[{"name":"script","returnType":{"packageName":"","name":"Promise<string>","filePath":null,"qualifiedName":"/Promise<string>","typeParameters":null,"directParents":null},"isAsync":true,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"ServerRenderedScript","filePath":null,"qualifiedName":"@proteinjs/server-api/ServerRenderedScript","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/BrowserSessionDataStorage","value":{"packageName":"@proteinjs/server-api","name":"BrowserSessionDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/session/BrowserSessionDataStorage.ts","qualifiedName":"@proteinjs/server-api/BrowserSessionDataStorage","isAbstract":false,"isStatic":false,"visibility":"public","properties":[{"name":"environment","type":null,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":null,"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"SessionDataStorage","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionDataStorage","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}},{"v":"@proteinjs/server-api/SessionDataStorage","value":{"packageName":"@proteinjs/server-api","name":"SessionDataStorage","filePath":"/home/runner/work/server/server/packages/api/src/session/Session.ts","qualifiedName":"@proteinjs/server-api/SessionDataStorage","properties":[{"name":"environment","type":{"packageName":"","name":"\'node\' | \'browser\'","filePath":null,"qualifiedName":"/\'node\' | \'browser\'","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"setData","returnType":{"packageName":"","name":"void","filePath":null,"qualifiedName":"/void","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"data","type":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null}}]},{"name":"getData","returnType":{"packageName":"@proteinjs/server-api","name":"SessionData","filePath":null,"qualifiedName":"@proteinjs/server-api/SessionData","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/SessionDataCache","value":{"packageName":"@proteinjs/server-api","name":"SessionDataCache","filePath":"/home/runner/work/server/server/packages/api/src/session/SessionDataCache.ts","qualifiedName":"@proteinjs/server-api/SessionDataCache","properties":[{"name":"key","type":{"packageName":"","name":"string","filePath":null,"qualifiedName":"/string","typeParameters":null,"directParents":null},"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public"}],"methods":[{"name":"create","returnType":{"packageName":"","name":"Promise<T>","filePath":null,"qualifiedName":"/Promise<T>","typeParameters":null,"directParents":null},"isAsync":false,"isOptional":false,"isAbstract":true,"isStatic":false,"visibility":"public","parameters":[{"name":"sessionId","type":{"packageName":"","name":"string | undefined","filePath":null,"qualifiedName":"/string | undefined","typeParameters":null,"directParents":null}},{"name":"user","type":{"packageName":"","name":"string | undefined","filePath":null,"qualifiedName":"/string | undefined","typeParameters":null,"directParents":null}}]}],"typeParameters":["/T"],"directParents":[{"packageName":"@proteinjs/reflection","name":"Loadable","filePath":null,"qualifiedName":"@proteinjs/reflection/Loadable","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"sourceType":3}},{"v":"@proteinjs/server-api/SessionDataScriptTag","value":{"packageName":"@proteinjs/server-api","name":"SessionDataScriptTag","filePath":"/home/runner/work/server/server/packages/api/src/session/SessionDataScriptTag.ts","qualifiedName":"@proteinjs/server-api/SessionDataScriptTag","isAbstract":false,"isStatic":false,"visibility":"public","properties":[],"methods":[{"name":"script","returnType":{"packageName":"","name":"Promise<string>","filePath":null,"qualifiedName":"/Promise<string>","typeParameters":null,"directParents":null},"isAsync":true,"isOptional":false,"isAbstract":false,"isStatic":false,"visibility":"public","parameters":[]}],"typeParameters":[],"directParentInterfaces":[{"packageName":"@proteinjs/server-api","name":"ServerRenderedScript","filePath":null,"qualifiedName":"@proteinjs/server-api/ServerRenderedScript","properties":[],"methods":[],"typeParameters":[],"directParents":[]}],"directParentClasses":[],"sourceType":2}}],"edges":[{"v":"@proteinjs/server-api/IEnvRepo","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/EnvRepo","w":"@proteinjs/server-api/IEnvRepo","value":"implements interface"},{"v":"@proteinjs/server-api/RequestListener","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/Route","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/ServerRenderedScript","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/StartupTask","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/BrowserGlobalDataStorage","w":"@proteinjs/server-api/GlobalDataStorage","value":"implements interface"},{"v":"@proteinjs/server-api/GlobalDataStorage","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/GlobalDataCache","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/GlobalDataScriptTag","w":"@proteinjs/server-api/ServerRenderedScript","value":"implements interface"},{"v":"@proteinjs/server-api/BrowserSessionDataStorage","w":"@proteinjs/server-api/SessionDataStorage","value":"implements interface"},{"v":"@proteinjs/server-api/SessionDataStorage","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/SessionDataCache","w":"@proteinjs/reflection/Loadable","value":"extends interface"},{"v":"@proteinjs/server-api/SessionDataScriptTag","w":"@proteinjs/server-api/ServerRenderedScript","value":"implements interface"}]}';
9
9
 
10
10
  /** Generate Source Links */
11
11
 
package/index.ts CHANGED
@@ -10,3 +10,4 @@ export * from './src/EnvInfo';
10
10
  export * from './src/EnvRepo';
11
11
  export * from './src/FeatureFlag';
12
12
  export * from './src/ServerRenderedScript';
13
+ export * from './src/StartupTask';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteinjs/server-api",
3
- "version": "1.3.5",
3
+ "version": "1.4.0",
4
4
  "description": "Server apis only (server implementation in @proteinjs/server)",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -44,5 +44,5 @@
44
44
  },
45
45
  "main": "./dist/generated/index.js",
46
46
  "types": "./dist/generated/index.d.ts",
47
- "gitHead": "0b2e568fe5767951850eec2f39a458df18293cf7"
47
+ "gitHead": "b0869433f17ac2cee1fc514a765b9d254aa7516a"
48
48
  }
@@ -4,6 +4,12 @@ import expressSession from 'express-session';
4
4
  type MakeMandatory<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
5
5
 
6
6
  export interface ServerConfig {
7
+ /**
8
+ * Runs:
9
+ * - after server config
10
+ * - after `after server config` startup tasks
11
+ * - before server start
12
+ */
7
13
  onStartup?: () => Promise<void>;
8
14
  session: MakeMandatory<expressSession.SessionOptions, 'secret' | 'store'>;
9
15
  authenticate?: (username: string, password: string) => Promise<true | string>;
@@ -0,0 +1,9 @@
1
+ import { Loadable, SourceRepository } from '@proteinjs/reflection';
2
+
3
+ export const getStartupTasks = () => SourceRepository.get().objects<StartupTask>('@proteinjs/server-api/StartupTask');
4
+
5
+ export interface StartupTask extends Loadable {
6
+ name: string;
7
+ when: 'before server config' | 'after server config' | 'after server start';
8
+ run(): Promise<void>;
9
+ }