@undefineds.co/xpod 0.2.34 → 0.2.35
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/dist/api/container/local.js +1 -5
- package/dist/api/container/local.js.map +1 -1
- package/dist/api/container/routes.js +16 -1
- package/dist/api/container/routes.js.map +1 -1
- package/dist/api/handlers/PodManagementHandler.d.ts +8 -0
- package/dist/api/handlers/PodManagementHandler.js +5 -3
- package/dist/api/handlers/PodManagementHandler.js.map +1 -1
- package/dist/api/handlers/WebIdProfileHandler.js +64 -6
- package/dist/api/handlers/WebIdProfileHandler.js.map +1 -1
- package/dist/api/runtime.js +11 -6
- package/dist/api/runtime.js.map +1 -1
- package/dist/components/components.jsonld +1 -0
- package/dist/components/context.jsonld +36 -0
- package/dist/edge/LocalNetworkManager.d.ts +2 -7
- package/dist/edge/LocalNetworkManager.js +7 -34
- package/dist/edge/LocalNetworkManager.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/provision/LocalPodProvisioningService.d.ts +34 -0
- package/dist/provision/LocalPodProvisioningService.js +294 -0
- package/dist/provision/LocalPodProvisioningService.js.map +1 -0
- package/dist/provision/LocalPodProvisioningService.jsonld +142 -0
- package/dist/provision/ProvisionPodCreator.js +3 -4
- package/dist/provision/ProvisionPodCreator.js.map +1 -1
- package/dist/tunnel/LocalTunnelProvider.d.ts +2 -2
- package/dist/tunnel/LocalTunnelProvider.js +12 -14
- package/dist/tunnel/LocalTunnelProvider.js.map +1 -1
- package/dist/tunnel/TunnelProvider.d.ts +2 -0
- package/dist/tunnel/TunnelProvider.js.map +1 -1
- package/dist/tunnel/TunnelProvider.jsonld +4 -0
- package/package.json +1 -1
package/dist/api/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/api/runtime.ts"],"names":[],"mappings":";;AAsHA,0CA2CC;AAjKD,mCAAuD;AACvD,iEAA6E;AAC7E,oFAAiF;AACjF,2CAAsH;AACtH,+CAAoD;AAEpD,wEAAqE;AAiBrE,SAAS,aAAa;IACpB,MAAM,aAAa,GAAG,IAAI,qDAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,EAAE;QAC3F,QAAQ,EAAE,wBAAwB;QAClC,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IACH,IAAA,8CAAsB,EAAC,aAAa,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,SAA8C,EAC9C,MAA0B,EAC1B,MAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACpD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAQ,CAAC;QACtE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEnG,MAAM,gBAAgB,CAAC,aAAa,CAAC,YAAY,EAAE;YACjD,WAAW;YACX,SAAS;YACT,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC;SACxD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,gCAAgC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,SAA8C,EAC9C,MAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzG,IAAI,mBAAmB,EAAE,CAAC;YACxB,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6CAA6C,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QAEzG,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC/D,MAAM,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,SAA8C;IAClF,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzF,WAAW,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;QAClG,MAAM,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;QACzG,MAAM,mBAAmB,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,UAAkC,EAAE;IACxE,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACvC,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,IAAA,6BAAiB,GAAE,CAAC;IACzD,MAAM,MAAM,GAAG;QACb,GAAG,UAAU;QACb,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW;KAC3D,CAAC;IACF,MAAM,MAAM,GAAG,IAAA,oCAAY,EAAC,YAAY,CAAC,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC;IAEpE,MAAM,SAAS,GAAG,IAAA,8BAAkB,EAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,SAAS,CAAC,QAAQ,CAAC;YACjB,cAAc,EAAE,IAAA,gBAAO,EAAC,IAAI,uCAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;SAClF,CAAC,CAAC;IACL,CAAC;IAED,IAAA,uBAAc,EAAC,SAAS,CAAC,CAAC;IAC1B,MAAM,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE5H,OAAO;QACL,MAAM;QACN,SAAS;QACT,IAAI,EAAE,KAAK,IAAkB,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvC,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { asValue, type AwilixContainer } from 'awilix';\nimport { setGlobalLoggerFactory, getLoggerFor } from 'global-logger-factory';\nimport { ConfigurableLoggerFactory } from '../logging/ConfigurableLoggerFactory';\nimport { createApiContainer, loadConfigFromEnv, type ApiContainerConfig, type ApiContainerCradle } from './container';\nimport { registerRoutes } from './container/routes';\nimport type { AuthContext } from './auth/AuthContext';\nimport { OpenAuthMiddleware } from './middleware/OpenAuthMiddleware';\nimport type { RuntimeHost } from '../runtime/host/types';\n\nexport interface StartApiServiceOptions {\n config?: ApiContainerConfig;\n open?: boolean;\n authContext?: AuthContext;\n initializeLogger?: boolean;\n runtimeHost?: RuntimeHost;\n}\n\nexport interface ApiServiceHandle {\n config: ApiContainerConfig;\n container: AwilixContainer<ApiContainerCradle>;\n stop: () => Promise<void>;\n}\n\nfunction initApiLogger(): void {\n const loggerFactory = new ConfigurableLoggerFactory(process.env.CSS_LOGGING_LEVEL || 'info', {\n fileName: './logs/xpod-%DATE%.log',\n showLocation: true,\n });\n setGlobalLoggerFactory(loggerFactory);\n}\n\nasync function registerPrimaryServiceToken(\n container: AwilixContainer<ApiContainerCradle>,\n config: ApiContainerConfig,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const serviceToken = process.env.XPOD_SERVICE_TOKEN;\n if (!serviceToken) {\n return;\n }\n\n const serviceTokenRepo = container.resolve('serviceTokenRepo') as any;\n const serviceType = config.edition === 'cloud' ? 'cloud' : 'local';\n const serviceId = process.env.XPOD_NODE_ID || (config.edition === 'cloud' ? 'cloud-1' : 'local-1');\n\n await serviceTokenRepo.registerToken(serviceToken, {\n serviceType,\n serviceId,\n scopes: ['quota:write', 'usage:read', 'account:manage'],\n });\n\n logger.info(`Registered service token for ${serviceType}:${serviceId}`);\n } catch (error) {\n logger.error(`Failed to register service token: ${error}`);\n }\n}\n\nasync function startBackgroundServices(\n container: AwilixContainer<ApiContainerCradle>,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true }) as any;\n if (localNetworkManager) {\n localNetworkManager.start();\n }\n } catch (error) {\n logger.error(`Failed to initialize LocalNetworkManager: ${error}`);\n }\n\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n if (ddnsManager) {\n await ddnsManager.start();\n logger.info('DDNS Manager started');\n }\n } catch (error) {\n logger.error(`Failed to initialize DdnsManager: ${error}`);\n }\n\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true });\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n\n if (!localNetworkManager && localTunnelProvider) {\n logger.info('Starting Cloudflare Tunnel (standalone mode)...');\n await localTunnelProvider.start();\n logger.info('Cloudflare Tunnel started');\n }\n } catch (error) {\n logger.error(`Failed to start Cloudflare Tunnel: ${error}`);\n }\n}\n\nasync function stopBackgroundServices(container: AwilixContainer<ApiContainerCradle>): Promise<void> {\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n ddnsManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true });\n await localNetworkManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n await localTunnelProvider?.stop();\n } catch {\n // ignore shutdown errors\n }\n}\n\nexport async function startApiService(options: StartApiServiceOptions = {}): Promise<ApiServiceHandle> {\n if (options.initializeLogger !== false) {\n initApiLogger();\n }\n\n const baseConfig = options.config ?? loadConfigFromEnv();\n const config = {\n ...baseConfig,\n runtimeHost: options.runtimeHost ?? baseConfig.runtimeHost,\n };\n const logger = getLoggerFor('ApiRuntime');\n\n if (!config.databaseUrl) {\n throw new Error('CSS_IDENTITY_DB_URL or DATABASE_URL environment variable is required');\n }\n\n logger.info(`Starting API Service (edition: ${config.edition})...`);\n\n const container = createApiContainer(config);\n\n if (options.open) {\n container.register({\n authMiddleware: asValue(new OpenAuthMiddleware({ context: options.authContext })),\n });\n }\n\n registerRoutes(container);\n await registerPrimaryServiceToken(container, config, logger);\n await startBackgroundServices(container, logger);\n\n const server = container.resolve('apiServer');\n await server.start();\n logger.info(`API Service active on ${config.socketPath ? `unix://${config.socketPath}` : `${config.host}:${config.port}`}`);\n\n return {\n config,\n container,\n stop: async(): Promise<void> => {\n logger.info('Stopping API Service...');\n await stopBackgroundServices(container);\n await server.stop();\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/api/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { asValue, type AwilixContainer } from 'awilix';\nimport { setGlobalLoggerFactory, getLoggerFor } from 'global-logger-factory';\nimport { ConfigurableLoggerFactory } from '../logging/ConfigurableLoggerFactory';\nimport { createApiContainer, loadConfigFromEnv, type ApiContainerConfig, type ApiContainerCradle } from './container';\nimport { registerRoutes } from './container/routes';\nimport type { AuthContext } from './auth/AuthContext';\nimport { OpenAuthMiddleware } from './middleware/OpenAuthMiddleware';\nimport type { RuntimeHost } from '../runtime/host/types';\n\nexport interface StartApiServiceOptions {\n config?: ApiContainerConfig;\n open?: boolean;\n authContext?: AuthContext;\n initializeLogger?: boolean;\n runtimeHost?: RuntimeHost;\n}\n\nexport interface ApiServiceHandle {\n config: ApiContainerConfig;\n container: AwilixContainer<ApiContainerCradle>;\n stop: () => Promise<void>;\n}\n\nfunction initApiLogger(): void {\n const loggerFactory = new ConfigurableLoggerFactory(process.env.CSS_LOGGING_LEVEL || 'info', {\n fileName: './logs/xpod-%DATE%.log',\n showLocation: true,\n });\n setGlobalLoggerFactory(loggerFactory);\n}\n\nasync function registerPrimaryServiceToken(\n container: AwilixContainer<ApiContainerCradle>,\n config: ApiContainerConfig,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const serviceToken = process.env.XPOD_SERVICE_TOKEN;\n if (!serviceToken) {\n return;\n }\n\n const serviceTokenRepo = container.resolve('serviceTokenRepo') as any;\n const serviceType = config.edition === 'cloud' ? 'cloud' : 'local';\n const serviceId = process.env.XPOD_NODE_ID || (config.edition === 'cloud' ? 'cloud-1' : 'local-1');\n\n await serviceTokenRepo.registerToken(serviceToken, {\n serviceType,\n serviceId,\n scopes: ['quota:write', 'usage:read', 'account:manage'],\n });\n\n logger.info(`Registered service token for ${serviceType}:${serviceId}`);\n } catch (error) {\n logger.error(`Failed to register service token: ${error}`);\n }\n}\n\nasync function startBackgroundServices(\n container: AwilixContainer<ApiContainerCradle>,\n logger: ReturnType<typeof getLoggerFor>,\n): Promise<void> {\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true }) as any;\n if (localNetworkManager) {\n localNetworkManager.start();\n }\n } catch (error) {\n logger.error(`Failed to initialize LocalNetworkManager: ${error}`);\n }\n\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n if (ddnsManager) {\n await ddnsManager.start();\n logger.info('DDNS Manager started');\n }\n } catch (error) {\n logger.error(`Failed to initialize DdnsManager: ${error}`);\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n\n if (localTunnelProvider) {\n logger.info('Starting local tunnel provider...');\n const localPort = Number.parseInt(\n process.env.XPOD_MAIN_PORT ?? process.env.CSS_PORT ?? process.env.PORT ?? '3000',\n 10,\n );\n const config = await localTunnelProvider.setup({\n subdomain: 'local',\n localPort: Number.isFinite(localPort) && localPort > 0 ? localPort : 3000,\n localProtocol: 'http',\n });\n await localTunnelProvider.start(config);\n logger.info('Local tunnel provider started');\n }\n } catch (error) {\n logger.error(`Failed to start local tunnel provider: ${error}`);\n }\n}\n\nasync function stopBackgroundServices(container: AwilixContainer<ApiContainerCradle>): Promise<void> {\n try {\n const ddnsManager = container.resolve('ddnsManager', { allowUnregistered: true }) as any;\n ddnsManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localNetworkManager = container.resolve('localNetworkManager', { allowUnregistered: true });\n await localNetworkManager?.stop();\n } catch {\n // ignore shutdown errors\n }\n\n try {\n const localTunnelProvider = container.resolve('localTunnelProvider', { allowUnregistered: true }) as any;\n await localTunnelProvider?.stop();\n } catch {\n // ignore shutdown errors\n }\n}\n\nexport async function startApiService(options: StartApiServiceOptions = {}): Promise<ApiServiceHandle> {\n if (options.initializeLogger !== false) {\n initApiLogger();\n }\n\n const baseConfig = options.config ?? loadConfigFromEnv();\n const config = {\n ...baseConfig,\n runtimeHost: options.runtimeHost ?? baseConfig.runtimeHost,\n };\n const logger = getLoggerFor('ApiRuntime');\n\n if (!config.databaseUrl) {\n throw new Error('CSS_IDENTITY_DB_URL or DATABASE_URL environment variable is required');\n }\n\n logger.info(`Starting API Service (edition: ${config.edition})...`);\n\n const container = createApiContainer(config);\n\n if (options.open) {\n container.register({\n authMiddleware: asValue(new OpenAuthMiddleware({ context: options.authContext })),\n });\n }\n\n registerRoutes(container);\n await registerPrimaryServiceToken(container, config, logger);\n await startBackgroundServices(container, logger);\n\n const server = container.resolve('apiServer');\n await server.start();\n logger.info(`API Service active on ${config.socketPath ? `unix://${config.socketPath}` : `${config.host}:${config.port}`}`);\n\n return {\n config,\n container,\n stop: async(): Promise<void> => {\n logger.info('Stopping API Service...');\n await stopBackgroundServices(container);\n await server.stop();\n },\n };\n}\n"]}
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
"undefineds:dist/storage/locking/UrlAwareRedisLocker.jsonld",
|
|
84
84
|
"undefineds:dist/provision/ProvisionPodCreator.jsonld",
|
|
85
85
|
"undefineds:dist/provision/ProvisionCodeCodec.jsonld",
|
|
86
|
+
"undefineds:dist/provision/LocalPodProvisioningService.jsonld",
|
|
86
87
|
"undefineds:dist/authorization/AuthModeSelector.jsonld"
|
|
87
88
|
]
|
|
88
89
|
}
|
|
@@ -1911,6 +1911,42 @@
|
|
|
1911
1911
|
}
|
|
1912
1912
|
}
|
|
1913
1913
|
},
|
|
1914
|
+
"LocalPodProvisioningService": {
|
|
1915
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService",
|
|
1916
|
+
"@prefix": true,
|
|
1917
|
+
"@context": {
|
|
1918
|
+
"options_baseUrl": {
|
|
1919
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_baseUrl"
|
|
1920
|
+
},
|
|
1921
|
+
"options_rootDir": {
|
|
1922
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_rootDir"
|
|
1923
|
+
},
|
|
1924
|
+
"options_sparqlEndpoint": {
|
|
1925
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_sparqlEndpoint"
|
|
1926
|
+
},
|
|
1927
|
+
"options_identityDbUrl": {
|
|
1928
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_identityDbUrl"
|
|
1929
|
+
},
|
|
1930
|
+
"options_oidcIssuer": {
|
|
1931
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_oidcIssuer"
|
|
1932
|
+
},
|
|
1933
|
+
"baseUrl": {
|
|
1934
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_baseUrl"
|
|
1935
|
+
},
|
|
1936
|
+
"rootDir": {
|
|
1937
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_rootDir"
|
|
1938
|
+
},
|
|
1939
|
+
"sparqlEndpoint": {
|
|
1940
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_sparqlEndpoint"
|
|
1941
|
+
},
|
|
1942
|
+
"identityDbUrl": {
|
|
1943
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_identityDbUrl"
|
|
1944
|
+
},
|
|
1945
|
+
"oidcIssuer": {
|
|
1946
|
+
"@id": "undefineds:dist/provision/LocalPodProvisioningService.jsonld#LocalPodProvisioningService_options_oidcIssuer"
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
},
|
|
1914
1950
|
"AuthModeSelector": {
|
|
1915
1951
|
"@id": "undefineds:dist/authorization/AuthModeSelector.jsonld#AuthModeSelector",
|
|
1916
1952
|
"@prefix": true,
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import type { EdgeNodeCapabilityDetector } from './EdgeNodeCapabilityDetector';
|
|
2
2
|
import type { EdgeNodeDnsCoordinator } from './EdgeNodeDnsCoordinator';
|
|
3
|
-
import type { TunnelProvider } from '../tunnel/TunnelProvider';
|
|
4
3
|
export interface LocalNetworkManagerOptions {
|
|
5
4
|
detector: EdgeNodeCapabilityDetector;
|
|
6
5
|
dnsCoordinator: EdgeNodeDnsCoordinator;
|
|
7
|
-
tunnelProvider?: TunnelProvider;
|
|
8
|
-
localPort?: number;
|
|
9
6
|
intervalMs?: number;
|
|
10
7
|
}
|
|
11
8
|
/**
|
|
@@ -16,15 +13,13 @@ export interface LocalNetworkManagerOptions {
|
|
|
16
13
|
*
|
|
17
14
|
* 逻辑:
|
|
18
15
|
* 1. 优先探测公网 IP (IPv6 > IPv4)。
|
|
19
|
-
* 2. 如果有公网 IP ->
|
|
20
|
-
* 3. 如果无公网 IP ->
|
|
16
|
+
* 2. 如果有公网 IP -> 更新 AAAA/A 记录。
|
|
17
|
+
* 3. 如果无公网 IP -> 维持本机/局域网可用,不触发隧道启停。
|
|
21
18
|
*/
|
|
22
19
|
export declare class LocalNetworkManager {
|
|
23
20
|
private readonly logger;
|
|
24
21
|
private readonly detector;
|
|
25
22
|
private readonly dnsCoordinator;
|
|
26
|
-
private readonly tunnelProvider?;
|
|
27
|
-
private readonly localPort;
|
|
28
23
|
private readonly intervalMs;
|
|
29
24
|
private interval?;
|
|
30
25
|
private lastState;
|
|
@@ -10,8 +10,8 @@ const global_logger_factory_1 = require("global-logger-factory");
|
|
|
10
10
|
*
|
|
11
11
|
* 逻辑:
|
|
12
12
|
* 1. 优先探测公网 IP (IPv6 > IPv4)。
|
|
13
|
-
* 2. 如果有公网 IP ->
|
|
14
|
-
* 3. 如果无公网 IP ->
|
|
13
|
+
* 2. 如果有公网 IP -> 更新 AAAA/A 记录。
|
|
14
|
+
* 3. 如果无公网 IP -> 维持本机/局域网可用,不触发隧道启停。
|
|
15
15
|
*/
|
|
16
16
|
class LocalNetworkManager {
|
|
17
17
|
constructor(options) {
|
|
@@ -19,12 +19,9 @@ class LocalNetworkManager {
|
|
|
19
19
|
// 状态追踪,用于减少重复日志
|
|
20
20
|
this.lastState = {
|
|
21
21
|
hasPublicIp: false,
|
|
22
|
-
tunnelRunning: false,
|
|
23
22
|
};
|
|
24
23
|
this.detector = options.detector;
|
|
25
24
|
this.dnsCoordinator = options.dnsCoordinator;
|
|
26
|
-
this.tunnelProvider = options.tunnelProvider;
|
|
27
|
-
this.localPort = options.localPort ?? 3000;
|
|
28
25
|
this.intervalMs = options.intervalMs ?? 60_000; // 默认 1 分钟
|
|
29
26
|
}
|
|
30
27
|
/**
|
|
@@ -47,11 +44,7 @@ class LocalNetworkManager {
|
|
|
47
44
|
clearInterval(this.interval);
|
|
48
45
|
this.interval = undefined;
|
|
49
46
|
}
|
|
50
|
-
//
|
|
51
|
-
if (this.tunnelProvider?.getStatus().running) {
|
|
52
|
-
this.logger.info('Stopping tunnel before exit...');
|
|
53
|
-
await this.tunnelProvider.stop();
|
|
54
|
-
}
|
|
47
|
+
// 不管理 tunnel 生命周期
|
|
55
48
|
}
|
|
56
49
|
async runMaintenance() {
|
|
57
50
|
try {
|
|
@@ -66,45 +59,25 @@ class LocalNetworkManager {
|
|
|
66
59
|
subdomain: '@',
|
|
67
60
|
};
|
|
68
61
|
const hasPublicIp = !!(metadata.ipv4 || metadata.ipv6);
|
|
69
|
-
const tunnelRunning = !!this.tunnelProvider?.getStatus().running;
|
|
70
62
|
// 检查状态是否发生变化
|
|
71
|
-
const stateChanged = hasPublicIp !== this.lastState.hasPublicIp
|
|
72
|
-
tunnelRunning !== this.lastState.tunnelRunning;
|
|
63
|
+
const stateChanged = hasPublicIp !== this.lastState.hasPublicIp;
|
|
73
64
|
if (stateChanged) {
|
|
74
|
-
this.logger.info(`Network status changed: IP=${hasPublicIp ? 'Public' : 'Private'}
|
|
65
|
+
this.logger.info(`Network status changed: IP=${hasPublicIp ? 'Public' : 'Private'} (IPv4=${metadata.ipv4 || 'none'}, IPv6=${metadata.ipv6 || 'none'})`);
|
|
75
66
|
}
|
|
76
67
|
else {
|
|
77
68
|
// 平时仅打印一条极简的调试信息(如果级别设为 info 则每分钟一条)
|
|
78
|
-
this.logger.debug(`Status check: IP=${hasPublicIp ? 'Public' : 'Private'}
|
|
69
|
+
this.logger.debug(`Status check: IP=${hasPublicIp ? 'Public' : 'Private'}`);
|
|
79
70
|
}
|
|
80
71
|
if (hasPublicIp) {
|
|
81
72
|
// === 直连模式 ===
|
|
82
|
-
if (tunnelRunning) {
|
|
83
|
-
this.logger.info('Stopping tunnel fallback to use direct public IP...');
|
|
84
|
-
await this.tunnelProvider.stop();
|
|
85
|
-
this.lastState.tunnelRunning = false;
|
|
86
|
-
}
|
|
87
73
|
// 仅在 IP 变化或初次运行且有 IP 时同步 DNS
|
|
88
74
|
await this.dnsCoordinator.synchronize('local-self', metadata);
|
|
89
75
|
}
|
|
90
76
|
else {
|
|
91
|
-
|
|
92
|
-
if (this.tunnelProvider) {
|
|
93
|
-
if (!tunnelRunning) {
|
|
94
|
-
this.logger.info('No public IP. Starting Cloudflare Tunnel fallback...');
|
|
95
|
-
const config = await this.tunnelProvider.setup({
|
|
96
|
-
subdomain: 'local',
|
|
97
|
-
localPort: this.localPort,
|
|
98
|
-
});
|
|
99
|
-
await this.tunnelProvider.start(config);
|
|
100
|
-
this.logger.info('Tunnel fallback active.');
|
|
101
|
-
this.lastState.tunnelRunning = true;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
77
|
+
this.logger.info('No public IP. Keep local and LAN routes active; tunnel is managed by the runtime provider if configured.');
|
|
104
78
|
}
|
|
105
79
|
// 更新状态追踪
|
|
106
80
|
this.lastState.hasPublicIp = hasPublicIp;
|
|
107
|
-
this.lastState.tunnelRunning = !!this.tunnelProvider?.getStatus().running;
|
|
108
81
|
}
|
|
109
82
|
catch (error) {
|
|
110
83
|
this.logger.error(`Maintenance task failed: ${error.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalNetworkManager.js","sourceRoot":"","sources":["../../src/edge/LocalNetworkManager.ts"],"names":[],"mappings":";;;AAAA,iEAAqD;
|
|
1
|
+
{"version":3,"file":"LocalNetworkManager.js","sourceRoot":"","sources":["../../src/edge/LocalNetworkManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { getLoggerFor } from 'global-logger-factory';\nimport type { EdgeNodeCapabilityDetector } from './EdgeNodeCapabilityDetector';\nimport type { EdgeNodeDnsCoordinator } from './EdgeNodeDnsCoordinator';\n\nexport interface LocalNetworkManagerOptions {\n detector: EdgeNodeCapabilityDetector;\n dnsCoordinator: EdgeNodeDnsCoordinator;\n intervalMs?: number;\n}\n\n/**\n * 本地网络管理器\n * \n * 专门用于 Local 模式,定期探测本机 IP 并自动同步到 DNS。\n * 它是“自闭环”的,不依赖外部心跳。\n * \n * 逻辑:\n * 1. 优先探测公网 IP (IPv6 > IPv4)。\n * 2. 如果有公网 IP -> 更新 AAAA/A 记录。\n * 3. 如果无公网 IP -> 维持本机/局域网可用,不触发隧道启停。\n */\nexport class LocalNetworkManager {\n private readonly logger = getLoggerFor(this);\n private readonly detector: EdgeNodeCapabilityDetector;\n private readonly dnsCoordinator: EdgeNodeDnsCoordinator;\n private readonly intervalMs: number;\n private interval?: NodeJS.Timeout;\n \n // 状态追踪,用于减少重复日志\n private lastState = {\n hasPublicIp: false,\n };\n\n public constructor(options: LocalNetworkManagerOptions) {\n this.detector = options.detector;\n this.dnsCoordinator = options.dnsCoordinator;\n this.intervalMs = options.intervalMs ?? 60_000; // 默认 1 分钟\n }\n\n /**\n * 启动管理循环\n */\n public start(): void {\n if (this.interval) {\n return;\n }\n this.logger.info(`Starting background loop (interval: ${this.intervalMs}ms)`);\n \n // 立即执行一次,然后开始循环\n void this.runMaintenance();\n this.interval = setInterval(() => this.runMaintenance(), this.intervalMs);\n }\n\n /**\n * 停止\n */\n public async stop(): Promise<void> {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n \n // 不管理 tunnel 生命周期\n }\n\n private async runMaintenance(): Promise<void> {\n try {\n this.logger.debug('Starting network detection phase...');\n \n // 1. 探测本机 IP\n const netInfo = await this.detector.detectNetworkAddresses();\n \n // 2. 构造元数据 (只使用公网 IP)\n const metadata: Record<string, unknown> = {\n ipv4: netInfo.ipv4Public,\n ipv6: netInfo.ipv6Public,\n accessMode: 'direct',\n subdomain: '@', \n };\n\n const hasPublicIp = !!(metadata.ipv4 || metadata.ipv6);\n \n // 检查状态是否发生变化\n const stateChanged = hasPublicIp !== this.lastState.hasPublicIp;\n\n if (stateChanged) {\n this.logger.info(`Network status changed: IP=${hasPublicIp ? 'Public' : 'Private'} (IPv4=${metadata.ipv4 || 'none'}, IPv6=${metadata.ipv6 || 'none'})`);\n } else {\n // 平时仅打印一条极简的调试信息(如果级别设为 info 则每分钟一条)\n this.logger.debug(`Status check: IP=${hasPublicIp ? 'Public' : 'Private'}`);\n }\n\n if (hasPublicIp) {\n // === 直连模式 ===\n // 仅在 IP 变化或初次运行且有 IP 时同步 DNS\n await this.dnsCoordinator.synchronize('local-self', metadata);\n\n } else {\n this.logger.info('No public IP. Keep local and LAN routes active; tunnel is managed by the runtime provider if configured.');\n }\n \n // 更新状态追踪\n this.lastState.hasPublicIp = hasPublicIp;\n \n } catch (error: unknown) {\n this.logger.error(`Maintenance task failed: ${(error as Error).message}`);\n }\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ import { AutoDetectIdentityProviderHandler } from './identity/oidc/AutoDetectIde
|
|
|
70
70
|
import { LoopbackClientIdAdapterFactory } from './identity/oidc/LoopbackClientIdAdapterFactory';
|
|
71
71
|
import { ProvisionPodCreator } from './provision/ProvisionPodCreator';
|
|
72
72
|
import { ProvisionCodeCodec } from './provision/ProvisionCodeCodec';
|
|
73
|
+
import { LocalPodProvisioningService } from './provision/LocalPodProvisioningService';
|
|
73
74
|
import { AuthModeSelector } from './authorization/AuthModeSelector';
|
|
74
75
|
export type { DnsProvider, ListDnsRecordsInput, ListableDnsProvider, DeleteDnsRecordInput, DnsRecordSummary, UpsertDnsRecordInput, } from './dns/DnsProvider';
|
|
75
76
|
export type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';
|
|
@@ -79,4 +80,4 @@ export type { EntitlementProvider, AccountEntitlement } from './quota/Entitlemen
|
|
|
79
80
|
export type { TunnelProvider, TunnelConfig, TunnelSetupOptions, TunnelStatus, } from './tunnel/TunnelProvider';
|
|
80
81
|
export type { SubdomainRegistration, ConnectivityResult, SubdomainServiceOptions, } from './subdomain/SubdomainService';
|
|
81
82
|
export { AppStaticAssetHandler } from './http/AppStaticAssetHandler';
|
|
82
|
-
export { RepresentationPartialConvertingStore, MinioDataAccessor, QuadstoreSparqlDataAccessor, QuintStoreSparqlDataAccessor, MixDataAccessor, ConfigurableLoggerFactory, SparqlUpdateResourceStore, SubgraphQueryEngine, QuadstoreSparqlEngine, QuintstoreSparqlEngine, SubgraphSparqlHttpHandler, QuotaAdminHttpHandler, ClusterIngressRouter, ClusterWebSocketConfigurator, EdgeNodeDirectDebugHttpHandler, EdgeNodeProxyHttpHandler, RouterHttpHandler, RouterHttpRoute, TracingHandler, EdgeNodeCertificateHttpHandler, TerminalHttpHandler, ReservedSuffixIdentifierGenerator, DrizzleIndexedStorage, WebIdProfileRepository, PostgresKeyValueStorage, RedisKeyValueStorage, SqliteKeyValueStorage, DrizzleQuotaService, NoopQuotaService, HttpEntitlementProvider, NoopEntitlementProvider, PerAccountQuotaStrategy, TencentDnsProvider, EdgeNodeDnsCoordinator, Dns01CertificateProvisioner, SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager, FrpTunnelManager, EdgeNodeHealthProbeService, EdgeNodeAgent, EdgeNodeCertificateService, AcmeCertificateManager, EdgeNodeModeDetector, ClusterIdentifierStrategy, UsageTrackingStore, CenterNodeRegistrationService, PodRoutingHttpHandler, ReactAppViewHandler, QuintStore, SqliteQuintStore, PgQuintStore, BaseQuintStore, VectorStore, SqliteVectorStore, PostgresVectorStore, VectorHttpHandler, ProviderRegistry, ProviderRegistryImpl, EmbeddingService, EmbeddingServiceImpl, CredentialReader, CredentialReaderImpl, CloudflareTunnelProvider, LocalTunnelProvider, SubdomainService, MultiDomainIdentifierStrategy, SubdomainPodIdentifierStrategy, DisabledOidcHandler, DisabledIdentityProviderHandler, AutoDetectOidcHandler, AutoDetectIdentityProviderHandler, LoopbackClientIdAdapterFactory, UrlAwareRedisLocker, ProvisionPodCreator, ProvisionCodeCodec, AuthModeSelector, };
|
|
83
|
+
export { RepresentationPartialConvertingStore, MinioDataAccessor, QuadstoreSparqlDataAccessor, QuintStoreSparqlDataAccessor, MixDataAccessor, ConfigurableLoggerFactory, SparqlUpdateResourceStore, SubgraphQueryEngine, QuadstoreSparqlEngine, QuintstoreSparqlEngine, SubgraphSparqlHttpHandler, QuotaAdminHttpHandler, ClusterIngressRouter, ClusterWebSocketConfigurator, EdgeNodeDirectDebugHttpHandler, EdgeNodeProxyHttpHandler, RouterHttpHandler, RouterHttpRoute, TracingHandler, EdgeNodeCertificateHttpHandler, TerminalHttpHandler, ReservedSuffixIdentifierGenerator, DrizzleIndexedStorage, WebIdProfileRepository, PostgresKeyValueStorage, RedisKeyValueStorage, SqliteKeyValueStorage, DrizzleQuotaService, NoopQuotaService, HttpEntitlementProvider, NoopEntitlementProvider, PerAccountQuotaStrategy, TencentDnsProvider, EdgeNodeDnsCoordinator, Dns01CertificateProvisioner, SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager, FrpTunnelManager, EdgeNodeHealthProbeService, EdgeNodeAgent, EdgeNodeCertificateService, AcmeCertificateManager, EdgeNodeModeDetector, ClusterIdentifierStrategy, UsageTrackingStore, CenterNodeRegistrationService, PodRoutingHttpHandler, ReactAppViewHandler, QuintStore, SqliteQuintStore, PgQuintStore, BaseQuintStore, VectorStore, SqliteVectorStore, PostgresVectorStore, VectorHttpHandler, ProviderRegistry, ProviderRegistryImpl, EmbeddingService, EmbeddingServiceImpl, CredentialReader, CredentialReaderImpl, CloudflareTunnelProvider, LocalTunnelProvider, SubdomainService, MultiDomainIdentifierStrategy, SubdomainPodIdentifierStrategy, DisabledOidcHandler, DisabledIdentityProviderHandler, AutoDetectOidcHandler, AutoDetectIdentityProviderHandler, LoopbackClientIdAdapterFactory, UrlAwareRedisLocker, ProvisionPodCreator, ProvisionCodeCodec, LocalPodProvisioningService, AuthModeSelector, };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QuintStore = exports.ReactAppViewHandler = exports.PodRoutingHttpHandler = exports.CenterNodeRegistrationService = exports.UsageTrackingStore = exports.ClusterIdentifierStrategy = exports.EdgeNodeModeDetector = exports.AcmeCertificateManager = exports.EdgeNodeCertificateService = exports.EdgeNodeAgent = exports.EdgeNodeHealthProbeService = exports.FrpTunnelManager = exports.NoopEdgeNodeTunnelManager = exports.SimpleEdgeNodeTunnelManager = exports.Dns01CertificateProvisioner = exports.EdgeNodeDnsCoordinator = exports.TencentDnsProvider = exports.PerAccountQuotaStrategy = exports.NoopEntitlementProvider = exports.HttpEntitlementProvider = exports.NoopQuotaService = exports.DrizzleQuotaService = exports.SqliteKeyValueStorage = exports.RedisKeyValueStorage = exports.PostgresKeyValueStorage = exports.WebIdProfileRepository = exports.DrizzleIndexedStorage = exports.ReservedSuffixIdentifierGenerator = exports.TerminalHttpHandler = exports.EdgeNodeCertificateHttpHandler = exports.TracingHandler = exports.RouterHttpRoute = exports.RouterHttpHandler = exports.EdgeNodeProxyHttpHandler = exports.EdgeNodeDirectDebugHttpHandler = exports.ClusterWebSocketConfigurator = exports.ClusterIngressRouter = exports.QuotaAdminHttpHandler = exports.SubgraphSparqlHttpHandler = exports.QuintstoreSparqlEngine = exports.QuadstoreSparqlEngine = exports.SubgraphQueryEngine = exports.SparqlUpdateResourceStore = exports.ConfigurableLoggerFactory = exports.MixDataAccessor = exports.QuintStoreSparqlDataAccessor = exports.QuadstoreSparqlDataAccessor = exports.MinioDataAccessor = exports.RepresentationPartialConvertingStore = exports.AppStaticAssetHandler = void 0;
|
|
4
|
-
exports.AuthModeSelector = exports.ProvisionCodeCodec = exports.ProvisionPodCreator = exports.UrlAwareRedisLocker = exports.LoopbackClientIdAdapterFactory = exports.AutoDetectIdentityProviderHandler = exports.AutoDetectOidcHandler = exports.DisabledIdentityProviderHandler = exports.DisabledOidcHandler = exports.SubdomainPodIdentifierStrategy = exports.MultiDomainIdentifierStrategy = exports.SubdomainService = exports.LocalTunnelProvider = exports.CloudflareTunnelProvider = exports.CredentialReaderImpl = exports.CredentialReader = exports.EmbeddingServiceImpl = exports.EmbeddingService = exports.ProviderRegistryImpl = exports.ProviderRegistry = exports.VectorHttpHandler = exports.PostgresVectorStore = exports.SqliteVectorStore = exports.VectorStore = exports.BaseQuintStore = exports.PgQuintStore = exports.SqliteQuintStore = void 0;
|
|
4
|
+
exports.AuthModeSelector = exports.LocalPodProvisioningService = exports.ProvisionCodeCodec = exports.ProvisionPodCreator = exports.UrlAwareRedisLocker = exports.LoopbackClientIdAdapterFactory = exports.AutoDetectIdentityProviderHandler = exports.AutoDetectOidcHandler = exports.DisabledIdentityProviderHandler = exports.DisabledOidcHandler = exports.SubdomainPodIdentifierStrategy = exports.MultiDomainIdentifierStrategy = exports.SubdomainService = exports.LocalTunnelProvider = exports.CloudflareTunnelProvider = exports.CredentialReaderImpl = exports.CredentialReader = exports.EmbeddingServiceImpl = exports.EmbeddingService = exports.ProviderRegistryImpl = exports.ProviderRegistry = exports.VectorHttpHandler = exports.PostgresVectorStore = exports.SqliteVectorStore = exports.VectorStore = exports.BaseQuintStore = exports.PgQuintStore = exports.SqliteQuintStore = void 0;
|
|
5
5
|
require("./runtime/configure-drizzle-solid");
|
|
6
6
|
const RepresentationPartialConvertingStore_1 = require("./storage/RepresentationPartialConvertingStore");
|
|
7
7
|
Object.defineProperty(exports, "RepresentationPartialConvertingStore", { enumerable: true, get: function () { return RepresentationPartialConvertingStore_1.RepresentationPartialConvertingStore; } });
|
|
@@ -152,6 +152,8 @@ const ProvisionPodCreator_1 = require("./provision/ProvisionPodCreator");
|
|
|
152
152
|
Object.defineProperty(exports, "ProvisionPodCreator", { enumerable: true, get: function () { return ProvisionPodCreator_1.ProvisionPodCreator; } });
|
|
153
153
|
const ProvisionCodeCodec_1 = require("./provision/ProvisionCodeCodec");
|
|
154
154
|
Object.defineProperty(exports, "ProvisionCodeCodec", { enumerable: true, get: function () { return ProvisionCodeCodec_1.ProvisionCodeCodec; } });
|
|
155
|
+
const LocalPodProvisioningService_1 = require("./provision/LocalPodProvisioningService");
|
|
156
|
+
Object.defineProperty(exports, "LocalPodProvisioningService", { enumerable: true, get: function () { return LocalPodProvisioningService_1.LocalPodProvisioningService; } });
|
|
155
157
|
// Authorization components
|
|
156
158
|
const AuthModeSelector_1 = require("./authorization/AuthModeSelector");
|
|
157
159
|
Object.defineProperty(exports, "AuthModeSelector", { enumerable: true, get: function () { return AuthModeSelector_1.AuthModeSelector; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import './runtime/configure-drizzle-solid';\nimport { RepresentationPartialConvertingStore } from './storage/RepresentationPartialConvertingStore';\nimport { MinioDataAccessor } from './storage/accessors/MinioDataAccessor';\nimport { QuadstoreSparqlDataAccessor } from './storage/accessors/QuadstoreSparqlDataAccessor';\nimport { QuintStoreSparqlDataAccessor } from './storage/accessors/QuintStoreSparqlDataAccessor';\nimport { MixDataAccessor } from './storage/accessors/MixDataAccessor';\nimport { ConfigurableLoggerFactory } from './logging/ConfigurableLoggerFactory';\nimport { SubgraphQueryEngine, QuadstoreSparqlEngine, QuintstoreSparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nexport type { SparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nimport { SubgraphSparqlHttpHandler } from './http/SubgraphSparqlHttpHandler';\nimport { QuotaAdminHttpHandler } from './http/quota/QuotaAdminHttpHandler';\nimport { SparqlUpdateResourceStore } from './storage/SparqlUpdateResourceStore';\nimport { ClusterIngressRouter } from './http/ClusterIngressRouter';\nimport { ClusterWebSocketConfigurator } from './http/ClusterWebSocketConfigurator';\nimport { EdgeNodeDirectDebugHttpHandler } from './http/EdgeNodeDirectDebugHttpHandler';\nimport { EdgeNodeProxyHttpHandler } from './http/EdgeNodeProxyHttpHandler';\nimport { RouterHttpHandler } from './http/RouterHttpHandler';\nimport { RouterHttpRoute } from './http/RouterHttpRoute';\nimport { TracingHandler } from './http/TracingHandler';\nimport { TerminalHttpHandler } from './http/terminal/TerminalHttpHandler';\nimport { EdgeNodeCertificateHttpHandler } from './http/admin/EdgeNodeCertificateHttpHandler';\nimport { ReservedSuffixIdentifierGenerator } from './pods/ReservedSuffixIdentifierGenerator';\nimport { DrizzleIndexedStorage } from './identity/drizzle/DrizzleIndexedStorage';\nimport { WebIdProfileRepository } from './identity/drizzle/WebIdProfileRepository';\nimport { PostgresKeyValueStorage } from './storage/keyvalue/PostgresKeyValueStorage';\nimport { RedisKeyValueStorage } from './storage/keyvalue/RedisKeyValueStorage';\nimport { SqliteKeyValueStorage } from './storage/keyvalue/SqliteKeyValueStorage';\nimport { DrizzleQuotaService } from './quota/DrizzleQuotaService';\nimport { NoopQuotaService } from './quota/NoopQuotaService';\nimport { HttpEntitlementProvider, NoopEntitlementProvider } from './quota/EntitlementProvider';\nimport { PerAccountQuotaStrategy } from './storage/quota/PerAccountQuotaStrategy';\nimport { TencentDnsProvider } from './dns/tencent/TencentDnsProvider';\nimport { EdgeNodeDnsCoordinator } from './edge/EdgeNodeDnsCoordinator';\nimport { Dns01CertificateProvisioner } from './edge/Dns01CertificateProvisioner';\nimport { SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager } from './edge/EdgeNodeTunnelManager';\nimport { FrpTunnelManager } from './edge/FrpTunnelManager';\nimport { AcmeCertificateManager } from './edge/acme/AcmeCertificateManager';\nimport { EdgeNodeHealthProbeService } from './edge/EdgeNodeHealthProbeService';\nimport { EdgeNodeAgent } from './edge/EdgeNodeAgent';\nimport { EdgeNodeCertificateService } from './service/EdgeNodeCertificateService';\nimport { createBandwidthThrottleTransform } from './util/stream/BandwidthThrottleTransform';\nimport { UsageTrackingStore } from './storage/quota/UsageTrackingStore';\nimport { EdgeNodeModeDetector } from './edge/EdgeNodeModeDetector';\nimport { ClusterIdentifierStrategy } from './util/identifiers/ClusterIdentifierStrategy';\nimport { CenterNodeRegistrationService } from './identity/CenterNodeRegistrationService';\nimport { PodRoutingHttpHandler } from './http/PodRoutingHttpHandler';\nimport { ReactAppViewHandler } from './identity/ReactAppViewHandler';\nimport { SqliteQuintStore } from './storage/quint/SqliteQuintStore';\nimport { PgQuintStore } from './storage/quint/PgQuintStore';\nimport { BaseQuintStore } from './storage/quint/BaseQuintStore';\nimport { QuintStore } from './storage/quint/types';\nimport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\n// Vector components\nimport { SqliteVectorStore, PostgresVectorStore } from './storage/vector/index';\nimport { VectorHttpHandler } from './http/vector/VectorHttpHandler';\nimport { ProviderRegistry } from './ai/service/ProviderRegistry';\nimport { ProviderRegistryImpl } from './ai/service/ProviderRegistryImpl';\nimport { EmbeddingService } from './ai/service/EmbeddingService';\nimport { EmbeddingServiceImpl } from './ai/service/EmbeddingServiceImpl';\nimport { CredentialReader } from './ai/service/CredentialReader';\nimport { CredentialReaderImpl } from './ai/service/CredentialReaderImpl';\nimport { VectorStore } from './storage/vector/VectorStore';\n// Tunnel and Subdomain components\nimport { CloudflareTunnelProvider } from './tunnel/CloudflareTunnelProvider';\nimport { LocalTunnelProvider } from './tunnel/LocalTunnelProvider';\nimport { SubdomainService } from './subdomain/SubdomainService';\nimport { UrlAwareRedisLocker } from './storage/locking/UrlAwareRedisLocker';\n// IdP/SP separation components\nimport { MultiDomainIdentifierStrategy } from './util/identifiers/MultiDomainIdentifierStrategy';\nimport { SubdomainPodIdentifierStrategy } from './util/identifiers/SubdomainPodIdentifierStrategy';\nimport { DisabledOidcHandler } from './identity/oidc/DisabledOidcHandler';\nimport { DisabledIdentityProviderHandler } from './identity/oidc/DisabledIdentityProviderHandler';\nimport { AutoDetectOidcHandler } from './identity/oidc/AutoDetectOidcHandler';\nimport { AutoDetectIdentityProviderHandler } from './identity/oidc/AutoDetectIdentityProviderHandler';\nimport { LoopbackClientIdAdapterFactory } from './identity/oidc/LoopbackClientIdAdapterFactory';\n// Provision components\nimport { ProvisionPodCreator } from './provision/ProvisionPodCreator';\nimport { ProvisionCodeCodec } from './provision/ProvisionCodeCodec';\n// Authorization components\nimport { AuthModeSelector } from './authorization/AuthModeSelector';\nexport type {\n DnsProvider,\n ListDnsRecordsInput,\n ListableDnsProvider,\n DeleteDnsRecordInput,\n DnsRecordSummary,\n UpsertDnsRecordInput,\n} from './dns/DnsProvider';\nexport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\nexport type { EdgeNodeTunnelManager } from './edge/interfaces/EdgeNodeTunnelManager';\nexport type { QuotaService, AccountQuota } from './quota/QuotaService';\nexport type { EntitlementProvider, AccountEntitlement } from './quota/EntitlementProvider';\n// Tunnel and Subdomain types\nexport type {\n TunnelProvider,\n TunnelConfig,\n TunnelSetupOptions,\n TunnelStatus,\n} from './tunnel/TunnelProvider';\nexport type {\n SubdomainRegistration,\n ConnectivityResult,\n SubdomainServiceOptions,\n} from './subdomain/SubdomainService';\n// Export the new AppStaticAssetHandler\nexport { AppStaticAssetHandler } from './http/AppStaticAssetHandler';\n\nexport { \n RepresentationPartialConvertingStore,\n MinioDataAccessor, \n QuadstoreSparqlDataAccessor,\n QuintStoreSparqlDataAccessor,\n MixDataAccessor,\n ConfigurableLoggerFactory,\n SparqlUpdateResourceStore,\n SubgraphQueryEngine,\n QuadstoreSparqlEngine,\n QuintstoreSparqlEngine,\n SubgraphSparqlHttpHandler,\n QuotaAdminHttpHandler,\n ClusterIngressRouter,\n ClusterWebSocketConfigurator,\n EdgeNodeDirectDebugHttpHandler,\n EdgeNodeProxyHttpHandler,\n RouterHttpHandler,\n RouterHttpRoute,\n TracingHandler,\n EdgeNodeCertificateHttpHandler,\n TerminalHttpHandler,\n ReservedSuffixIdentifierGenerator,\n DrizzleIndexedStorage,\n WebIdProfileRepository,\n PostgresKeyValueStorage,\n RedisKeyValueStorage,\n SqliteKeyValueStorage,\n DrizzleQuotaService,\n NoopQuotaService,\n HttpEntitlementProvider,\n NoopEntitlementProvider,\n PerAccountQuotaStrategy,\n TencentDnsProvider,\n EdgeNodeDnsCoordinator,\n Dns01CertificateProvisioner,\n SimpleEdgeNodeTunnelManager,\n NoopEdgeNodeTunnelManager,\n FrpTunnelManager,\n EdgeNodeHealthProbeService,\n EdgeNodeAgent,\n EdgeNodeCertificateService,\n AcmeCertificateManager,\n EdgeNodeModeDetector,\n ClusterIdentifierStrategy,\n UsageTrackingStore,\n CenterNodeRegistrationService,\n PodRoutingHttpHandler,\n ReactAppViewHandler,\n // Quint exports\n QuintStore,\n SqliteQuintStore,\n PgQuintStore,\n BaseQuintStore,\n // Vector exports\n VectorStore,\n SqliteVectorStore,\n PostgresVectorStore,\n VectorHttpHandler,\n // Embedding exports\n ProviderRegistry,\n ProviderRegistryImpl,\n EmbeddingService,\n EmbeddingServiceImpl,\n CredentialReader,\n CredentialReaderImpl,\n // Tunnel and Subdomain exports\n CloudflareTunnelProvider,\n LocalTunnelProvider,\n SubdomainService,\n // IdP/SP separation exports\n MultiDomainIdentifierStrategy,\n SubdomainPodIdentifierStrategy,\n DisabledOidcHandler,\n DisabledIdentityProviderHandler,\n AutoDetectOidcHandler,\n AutoDetectIdentityProviderHandler,\n LoopbackClientIdAdapterFactory,\n UrlAwareRedisLocker,\n // Provision exports\n ProvisionPodCreator,\n ProvisionCodeCodec,\n // Authorization exports\n AuthModeSelector,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import './runtime/configure-drizzle-solid';\nimport { RepresentationPartialConvertingStore } from './storage/RepresentationPartialConvertingStore';\nimport { MinioDataAccessor } from './storage/accessors/MinioDataAccessor';\nimport { QuadstoreSparqlDataAccessor } from './storage/accessors/QuadstoreSparqlDataAccessor';\nimport { QuintStoreSparqlDataAccessor } from './storage/accessors/QuintStoreSparqlDataAccessor';\nimport { MixDataAccessor } from './storage/accessors/MixDataAccessor';\nimport { ConfigurableLoggerFactory } from './logging/ConfigurableLoggerFactory';\nimport { SubgraphQueryEngine, QuadstoreSparqlEngine, QuintstoreSparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nexport type { SparqlEngine } from './storage/sparql/SubgraphQueryEngine';\nimport { SubgraphSparqlHttpHandler } from './http/SubgraphSparqlHttpHandler';\nimport { QuotaAdminHttpHandler } from './http/quota/QuotaAdminHttpHandler';\nimport { SparqlUpdateResourceStore } from './storage/SparqlUpdateResourceStore';\nimport { ClusterIngressRouter } from './http/ClusterIngressRouter';\nimport { ClusterWebSocketConfigurator } from './http/ClusterWebSocketConfigurator';\nimport { EdgeNodeDirectDebugHttpHandler } from './http/EdgeNodeDirectDebugHttpHandler';\nimport { EdgeNodeProxyHttpHandler } from './http/EdgeNodeProxyHttpHandler';\nimport { RouterHttpHandler } from './http/RouterHttpHandler';\nimport { RouterHttpRoute } from './http/RouterHttpRoute';\nimport { TracingHandler } from './http/TracingHandler';\nimport { TerminalHttpHandler } from './http/terminal/TerminalHttpHandler';\nimport { EdgeNodeCertificateHttpHandler } from './http/admin/EdgeNodeCertificateHttpHandler';\nimport { ReservedSuffixIdentifierGenerator } from './pods/ReservedSuffixIdentifierGenerator';\nimport { DrizzleIndexedStorage } from './identity/drizzle/DrizzleIndexedStorage';\nimport { WebIdProfileRepository } from './identity/drizzle/WebIdProfileRepository';\nimport { PostgresKeyValueStorage } from './storage/keyvalue/PostgresKeyValueStorage';\nimport { RedisKeyValueStorage } from './storage/keyvalue/RedisKeyValueStorage';\nimport { SqliteKeyValueStorage } from './storage/keyvalue/SqliteKeyValueStorage';\nimport { DrizzleQuotaService } from './quota/DrizzleQuotaService';\nimport { NoopQuotaService } from './quota/NoopQuotaService';\nimport { HttpEntitlementProvider, NoopEntitlementProvider } from './quota/EntitlementProvider';\nimport { PerAccountQuotaStrategy } from './storage/quota/PerAccountQuotaStrategy';\nimport { TencentDnsProvider } from './dns/tencent/TencentDnsProvider';\nimport { EdgeNodeDnsCoordinator } from './edge/EdgeNodeDnsCoordinator';\nimport { Dns01CertificateProvisioner } from './edge/Dns01CertificateProvisioner';\nimport { SimpleEdgeNodeTunnelManager, NoopEdgeNodeTunnelManager } from './edge/EdgeNodeTunnelManager';\nimport { FrpTunnelManager } from './edge/FrpTunnelManager';\nimport { AcmeCertificateManager } from './edge/acme/AcmeCertificateManager';\nimport { EdgeNodeHealthProbeService } from './edge/EdgeNodeHealthProbeService';\nimport { EdgeNodeAgent } from './edge/EdgeNodeAgent';\nimport { EdgeNodeCertificateService } from './service/EdgeNodeCertificateService';\nimport { createBandwidthThrottleTransform } from './util/stream/BandwidthThrottleTransform';\nimport { UsageTrackingStore } from './storage/quota/UsageTrackingStore';\nimport { EdgeNodeModeDetector } from './edge/EdgeNodeModeDetector';\nimport { ClusterIdentifierStrategy } from './util/identifiers/ClusterIdentifierStrategy';\nimport { CenterNodeRegistrationService } from './identity/CenterNodeRegistrationService';\nimport { PodRoutingHttpHandler } from './http/PodRoutingHttpHandler';\nimport { ReactAppViewHandler } from './identity/ReactAppViewHandler';\nimport { SqliteQuintStore } from './storage/quint/SqliteQuintStore';\nimport { PgQuintStore } from './storage/quint/PgQuintStore';\nimport { BaseQuintStore } from './storage/quint/BaseQuintStore';\nimport { QuintStore } from './storage/quint/types';\nimport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\n// Vector components\nimport { SqliteVectorStore, PostgresVectorStore } from './storage/vector/index';\nimport { VectorHttpHandler } from './http/vector/VectorHttpHandler';\nimport { ProviderRegistry } from './ai/service/ProviderRegistry';\nimport { ProviderRegistryImpl } from './ai/service/ProviderRegistryImpl';\nimport { EmbeddingService } from './ai/service/EmbeddingService';\nimport { EmbeddingServiceImpl } from './ai/service/EmbeddingServiceImpl';\nimport { CredentialReader } from './ai/service/CredentialReader';\nimport { CredentialReaderImpl } from './ai/service/CredentialReaderImpl';\nimport { VectorStore } from './storage/vector/VectorStore';\n// Tunnel and Subdomain components\nimport { CloudflareTunnelProvider } from './tunnel/CloudflareTunnelProvider';\nimport { LocalTunnelProvider } from './tunnel/LocalTunnelProvider';\nimport { SubdomainService } from './subdomain/SubdomainService';\nimport { UrlAwareRedisLocker } from './storage/locking/UrlAwareRedisLocker';\n// IdP/SP separation components\nimport { MultiDomainIdentifierStrategy } from './util/identifiers/MultiDomainIdentifierStrategy';\nimport { SubdomainPodIdentifierStrategy } from './util/identifiers/SubdomainPodIdentifierStrategy';\nimport { DisabledOidcHandler } from './identity/oidc/DisabledOidcHandler';\nimport { DisabledIdentityProviderHandler } from './identity/oidc/DisabledIdentityProviderHandler';\nimport { AutoDetectOidcHandler } from './identity/oidc/AutoDetectOidcHandler';\nimport { AutoDetectIdentityProviderHandler } from './identity/oidc/AutoDetectIdentityProviderHandler';\nimport { LoopbackClientIdAdapterFactory } from './identity/oidc/LoopbackClientIdAdapterFactory';\n// Provision components\nimport { ProvisionPodCreator } from './provision/ProvisionPodCreator';\nimport { ProvisionCodeCodec } from './provision/ProvisionCodeCodec';\nimport { LocalPodProvisioningService } from './provision/LocalPodProvisioningService';\n// Authorization components\nimport { AuthModeSelector } from './authorization/AuthModeSelector';\nexport type {\n DnsProvider,\n ListDnsRecordsInput,\n ListableDnsProvider,\n DeleteDnsRecordInput,\n DnsRecordSummary,\n UpsertDnsRecordInput,\n} from './dns/DnsProvider';\nexport type { EdgeNodeCertificateProvisioner } from './edge/EdgeNodeCertificateProvisioner';\nexport type { EdgeNodeTunnelManager } from './edge/interfaces/EdgeNodeTunnelManager';\nexport type { QuotaService, AccountQuota } from './quota/QuotaService';\nexport type { EntitlementProvider, AccountEntitlement } from './quota/EntitlementProvider';\n// Tunnel and Subdomain types\nexport type {\n TunnelProvider,\n TunnelConfig,\n TunnelSetupOptions,\n TunnelStatus,\n} from './tunnel/TunnelProvider';\nexport type {\n SubdomainRegistration,\n ConnectivityResult,\n SubdomainServiceOptions,\n} from './subdomain/SubdomainService';\n// Export the new AppStaticAssetHandler\nexport { AppStaticAssetHandler } from './http/AppStaticAssetHandler';\n\nexport { \n RepresentationPartialConvertingStore,\n MinioDataAccessor, \n QuadstoreSparqlDataAccessor,\n QuintStoreSparqlDataAccessor,\n MixDataAccessor,\n ConfigurableLoggerFactory,\n SparqlUpdateResourceStore,\n SubgraphQueryEngine,\n QuadstoreSparqlEngine,\n QuintstoreSparqlEngine,\n SubgraphSparqlHttpHandler,\n QuotaAdminHttpHandler,\n ClusterIngressRouter,\n ClusterWebSocketConfigurator,\n EdgeNodeDirectDebugHttpHandler,\n EdgeNodeProxyHttpHandler,\n RouterHttpHandler,\n RouterHttpRoute,\n TracingHandler,\n EdgeNodeCertificateHttpHandler,\n TerminalHttpHandler,\n ReservedSuffixIdentifierGenerator,\n DrizzleIndexedStorage,\n WebIdProfileRepository,\n PostgresKeyValueStorage,\n RedisKeyValueStorage,\n SqliteKeyValueStorage,\n DrizzleQuotaService,\n NoopQuotaService,\n HttpEntitlementProvider,\n NoopEntitlementProvider,\n PerAccountQuotaStrategy,\n TencentDnsProvider,\n EdgeNodeDnsCoordinator,\n Dns01CertificateProvisioner,\n SimpleEdgeNodeTunnelManager,\n NoopEdgeNodeTunnelManager,\n FrpTunnelManager,\n EdgeNodeHealthProbeService,\n EdgeNodeAgent,\n EdgeNodeCertificateService,\n AcmeCertificateManager,\n EdgeNodeModeDetector,\n ClusterIdentifierStrategy,\n UsageTrackingStore,\n CenterNodeRegistrationService,\n PodRoutingHttpHandler,\n ReactAppViewHandler,\n // Quint exports\n QuintStore,\n SqliteQuintStore,\n PgQuintStore,\n BaseQuintStore,\n // Vector exports\n VectorStore,\n SqliteVectorStore,\n PostgresVectorStore,\n VectorHttpHandler,\n // Embedding exports\n ProviderRegistry,\n ProviderRegistryImpl,\n EmbeddingService,\n EmbeddingServiceImpl,\n CredentialReader,\n CredentialReaderImpl,\n // Tunnel and Subdomain exports\n CloudflareTunnelProvider,\n LocalTunnelProvider,\n SubdomainService,\n // IdP/SP separation exports\n MultiDomainIdentifierStrategy,\n SubdomainPodIdentifierStrategy,\n DisabledOidcHandler,\n DisabledIdentityProviderHandler,\n AutoDetectOidcHandler,\n AutoDetectIdentityProviderHandler,\n LoopbackClientIdAdapterFactory,\n UrlAwareRedisLocker,\n // Provision exports\n ProvisionPodCreator,\n ProvisionCodeCodec,\n LocalPodProvisioningService,\n // Authorization exports\n AuthModeSelector,\n};\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface LocalPodProvisioningInput {
|
|
2
|
+
podName: string;
|
|
3
|
+
webId?: string;
|
|
4
|
+
initialResources?: Record<string, string>;
|
|
5
|
+
}
|
|
6
|
+
export interface LocalPodProvisioningResult {
|
|
7
|
+
podUrl: string;
|
|
8
|
+
accountId: string;
|
|
9
|
+
podId: string;
|
|
10
|
+
}
|
|
11
|
+
export interface LocalPodProvisioningServiceOptions {
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
rootDir: string;
|
|
14
|
+
sparqlEndpoint: string;
|
|
15
|
+
identityDbUrl: string;
|
|
16
|
+
oidcIssuer?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class LocalPodProvisioningService {
|
|
19
|
+
private readonly logger;
|
|
20
|
+
private readonly baseUrl;
|
|
21
|
+
private readonly rootDir;
|
|
22
|
+
private readonly sparqlDbPath;
|
|
23
|
+
private readonly identityDbPath;
|
|
24
|
+
private readonly oidcIssuer?;
|
|
25
|
+
private readonly sqliteRuntime;
|
|
26
|
+
constructor(options: LocalPodProvisioningServiceOptions);
|
|
27
|
+
createPod(input: LocalPodProvisioningInput): Promise<LocalPodProvisioningResult>;
|
|
28
|
+
private createPodFiles;
|
|
29
|
+
private writeQuints;
|
|
30
|
+
private buildPodQuads;
|
|
31
|
+
private addRootAcrQuads;
|
|
32
|
+
private addPublicReadAcrQuads;
|
|
33
|
+
private writeIdentityIndexes;
|
|
34
|
+
}
|