codeforlife 2.9.1 → 2.10.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/dist/Countdown-7-Mzftzr.cjs +2 -0
- package/dist/{Countdown-zY3nMzmi.cjs.map → Countdown-7-Mzftzr.cjs.map} +1 -1
- package/dist/{Countdown-DFI1RljW.js → Countdown-ZA68a09m.js} +5 -5
- package/dist/{Countdown-DFI1RljW.js.map → Countdown-ZA68a09m.js.map} +1 -1
- package/dist/{Image-D5jC9UoX.js → Image-KHEjEELP.js} +2 -2
- package/dist/{Image-D5jC9UoX.js.map → Image-KHEjEELP.js.map} +1 -1
- package/dist/LinkButton-Do07PnhU.js +12 -0
- package/dist/LinkButton-Do07PnhU.js.map +1 -0
- package/dist/LinkButton-cfljqSBx.cjs +2 -0
- package/dist/LinkButton-cfljqSBx.cjs.map +1 -0
- package/dist/Navigate-Cu8Ge031.cjs +2 -0
- package/dist/Navigate-Cu8Ge031.cjs.map +1 -0
- package/dist/{Navigate-Dq47aqC8.js → Navigate-DC6ag0th.js} +5 -5
- package/dist/Navigate-DC6ag0th.js.map +1 -0
- package/dist/api/endpoints/index.es.js +2 -2
- package/dist/api/index.es.js +3 -3
- package/dist/{api-Cbyt3rw0.js → api-CYqNqtN9.js} +2 -2
- package/dist/{api-Cbyt3rw0.js.map → api-CYqNqtN9.js.map} +1 -1
- package/dist/auth-C_aSIrwD.cjs +2 -0
- package/dist/auth-C_aSIrwD.cjs.map +1 -0
- package/dist/{auth-BPfUPjmM.js → auth-CvJ5Mh6y.js} +18 -18
- package/dist/auth-CvJ5Mh6y.js.map +1 -0
- package/dist/components/form/index.es.js +1 -1
- package/dist/components/index.cjs.js +1 -10
- package/dist/components/index.cjs.js.map +1 -1
- package/dist/components/index.es.js +179 -256
- package/dist/components/index.es.js.map +1 -1
- package/dist/components/page/index.cjs.js +1 -1
- package/dist/components/page/index.es.js +1 -1
- package/dist/components/router/Navigate.d.ts +1 -1
- package/dist/components/router/index.cjs.js +1 -1
- package/dist/components/router/index.es.js +2 -2
- package/dist/components/table/index.es.js +1 -1
- package/dist/features/index.cjs.js +1 -1
- package/dist/features/index.cjs.js.map +1 -1
- package/dist/features/index.es.js +8 -8
- package/dist/hooks/index.cjs.js +1 -1
- package/dist/hooks/index.es.js +1 -1
- package/dist/hooks/router.d.ts +1 -1
- package/dist/{index-2W--_sNE.js → index-B3cd2A-G.js} +2 -2
- package/dist/{index-2W--_sNE.js.map → index-B3cd2A-G.js.map} +1 -1
- package/dist/{index-CNtOlJ49.js → index-Brh3Kbv6.js} +3 -3
- package/dist/{index-CNtOlJ49.js.map → index-Brh3Kbv6.js.map} +1 -1
- package/dist/{index-B_Zy_zwA.cjs → index-DZ7ETsOg.cjs} +2 -2
- package/dist/{index-B_Zy_zwA.cjs.map → index-DZ7ETsOg.cjs.map} +1 -1
- package/dist/{index-DkM_cG3a.js → index-DlQc68Q4.js} +7 -7
- package/dist/index-DlQc68Q4.js.map +1 -0
- package/dist/index-DsVpb45W.cjs +2 -0
- package/dist/index-DsVpb45W.cjs.map +1 -0
- package/dist/{index-Dqp7dpn3.js → index-DuVBQMst.js} +5 -5
- package/dist/{index-Dqp7dpn3.js.map → index-DuVBQMst.js.map} +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +6 -4
- package/dist/index.es.js.map +1 -1
- package/dist/{jsx-runtime-Dpn_P65e.js → jsx-runtime-XvoU0p7t.js} +57 -57
- package/dist/{jsx-runtime-Dpn_P65e.js.map → jsx-runtime-XvoU0p7t.js.map} +1 -1
- package/dist/palette-BnIdHKDE.cjs +2 -0
- package/dist/{palette-CE2mKYse.cjs.map → palette-BnIdHKDE.cjs.map} +1 -1
- package/dist/palette-CYwuLBW7.js +77 -0
- package/dist/{palette-C_L0akN_.js.map → palette-CYwuLBW7.js.map} +1 -1
- package/dist/{schemas-DlOtf2vf.js → schemas-CDXuSjyI.js} +2 -2
- package/dist/{schemas-DlOtf2vf.js.map → schemas-CDXuSjyI.js.map} +1 -1
- package/dist/server.cjs.js +3 -3
- package/dist/server.cjs.js.map +1 -1
- package/dist/server.d.ts +12 -1
- package/dist/server.es.js +84 -56
- package/dist/server.es.js.map +1 -1
- package/dist/theme/components/index.cjs.js +1 -1
- package/dist/theme/components/index.es.js +1 -1
- package/dist/theme/index.cjs.js +1 -1
- package/dist/theme/index.cjs.js.map +1 -1
- package/dist/theme/index.d.ts +1 -0
- package/dist/theme/index.es.js +27 -25
- package/dist/theme/index.es.js.map +1 -1
- package/dist/{urls-DtHr1d3H.js → urls-BY-za1bX.js} +2 -2
- package/dist/{urls-DtHr1d3H.js.map → urls-BY-za1bX.js.map} +1 -1
- package/dist/utils/api.es.js +2 -2
- package/dist/utils/router.cjs.js +1 -1
- package/dist/utils/router.cjs.js.map +1 -1
- package/dist/utils/router.d.ts +1 -1
- package/dist/utils/router.es.js +4 -4
- package/dist/utils/router.es.js.map +1 -1
- package/dist/utils/test.es.js +1 -1
- package/dist/utils/theme.cjs.js +1 -1
- package/dist/utils/theme.es.js +2 -2
- package/package.json +3 -3
- package/dist/Countdown-zY3nMzmi.cjs +0 -2
- package/dist/LinkButton-BYFkvL_O.cjs +0 -2
- package/dist/LinkButton-BYFkvL_O.cjs.map +0 -1
- package/dist/LinkButton-oK0RThqn.js +0 -12
- package/dist/LinkButton-oK0RThqn.js.map +0 -1
- package/dist/Navigate-Dq47aqC8.js.map +0 -1
- package/dist/Navigate-dQocLhzN.cjs +0 -2
- package/dist/Navigate-dQocLhzN.cjs.map +0 -1
- package/dist/auth-BPfUPjmM.js.map +0 -1
- package/dist/auth-Vf1MgMci.cjs +0 -2
- package/dist/auth-Vf1MgMci.cjs.map +0 -1
- package/dist/index-BgsynEGX.cjs +0 -2
- package/dist/index-BgsynEGX.cjs.map +0 -1
- package/dist/index-DkM_cG3a.js.map +0 -1
- package/dist/palette-CE2mKYse.cjs +0 -2
- package/dist/palette-C_L0akN_.js +0 -43
package/dist/server.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs.js","sources":["../src/server.ts"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 13/12/2024 at 12:15:05(+00:00).\n *\n * A server for an app in a live environment.\n * Based off: https://github.com/bluwy/create-vite-extra/blob/master/template-ssr-react-ts/server.js\n */\n\nimport { Cache, type CacheClass } from \"memory-cache\"\nimport express, { type Express, type Request, type Response } from \"express\"\nimport fs from \"node:fs/promises\"\n\ntype Mode = \"development\" | \"staging\" | \"production\"\ntype Options = Partial<{\n mode: Mode\n port: number\n base: string\n}>\n\ntype HealthStatus =\n | \"healthy\"\n | \"startingUp\"\n | \"shuttingDown\"\n | \"unhealthy\"\n | \"unknown\"\ntype HealthCheck = {\n healthStatus: HealthStatus\n additionalInfo: string\n details?: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\ntype HealthCheckResponse = {\n appId: string\n healthStatus: HealthStatus\n lastCheckedTimestamp: string\n additionalInformation: string\n startupTimestamp: string\n appVersion: string\n details: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\n\ntype Render = (path: string) => Promise<{ head?: string; html?: string }>\ntype EntryModule = { render: Render }\ntype RenderAndTemplate = [Render, string]\ntype GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>\ntype OnServeError = (error: Error) => string | undefined\n\nexport default class Server {\n envIsProduction: boolean\n templateHtml: string\n hostname: string\n mode: Mode\n port: number\n base: string\n app: Express\n cache: CacheClass<string, any>\n healthCheckCacheKey: string\n healthCheckCacheTimeout: number\n healthCheckStatusCodes: Record<HealthStatus, number>\n\n constructor({ mode, port, base }: Options = {}) {\n this.envIsProduction = process.env.NODE_ENV === \"production\"\n this.templateHtml = \"\"\n this.hostname = this.envIsProduction ? \"0.0.0.0\" : \"127.0.0.1\"\n\n this.mode = mode || (process.env.MODE as Mode) || \"development\"\n this.port =\n port ||\n (process.env.PORT\n ? Number(process.env.PORT)\n : this.envIsProduction\n ? 8080\n : 5173)\n this.base = base || process.env.BASE || \"/\"\n\n this.app = express()\n this.cache = new Cache()\n\n this.healthCheckCacheKey = \"health-check\"\n this.healthCheckCacheTimeout = 30000\n this.healthCheckStatusCodes = {\n // The app is running normally.\n healthy: 200,\n // The app is performing app-specific initialisation which must\n // complete before it will serve normal application requests\n // (perhaps the app is warming a cache or something similar). You\n // only need to use this status if your app will be in a start-up\n // mode for a prolonged period of time.\n startingUp: 503,\n // The app is shutting down. As with startingUp, you only need to\n // use this status if your app takes a prolonged amount of time\n // to shutdown, perhaps because it waits for a long-running\n // process to complete before shutting down.\n shuttingDown: 503,\n // The app is not running normally.\n unhealthy: 503,\n // The app is not able to report its own state.\n unknown: 503,\n }\n }\n\n // @ts-expect-error unused var\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getHealthCheck(request: Request): HealthCheck {\n return {\n healthStatus: \"healthy\",\n additionalInfo: \"All healthy.\",\n }\n }\n\n handleHealthCheck(request: Request, response: Response): void {\n let value: HealthCheckResponse = this.cache.get(\n this.healthCheckCacheKey,\n ) as HealthCheckResponse\n if (value === null) {\n const healthCheck = this.getHealthCheck(request)\n\n if (healthCheck.healthStatus !== \"healthy\") {\n console.warn(`health check: ${JSON.stringify(healthCheck)}`)\n }\n\n value = {\n appId: process.env.APP_ID || \"REPLACE_ME\",\n healthStatus: healthCheck.healthStatus,\n lastCheckedTimestamp: new Date().toISOString(),\n additionalInformation: healthCheck.additionalInfo,\n startupTimestamp: new Date().toISOString(),\n appVersion: process.env.APP_VERSION || \"REPLACE_ME\",\n details: healthCheck.details || [],\n }\n\n this.cache.put(\n this.healthCheckCacheKey,\n value,\n this.healthCheckCacheTimeout,\n )\n }\n\n response.status(this.healthCheckStatusCodes[value.healthStatus]).json(value)\n }\n\n async handleServeHtml(\n request: Request,\n response: Response,\n getRenderAndTemplate: GetRenderAndTemplate,\n onServeError: OnServeError,\n ): Promise<void> {\n try {\n const path = request.originalUrl.replace(this.base, \"\")\n\n const [render, template] = await getRenderAndTemplate(path)\n\n const rendered = await render(path)\n\n const html = template\n .replace(`<!--app-head-->`, rendered.head ?? \"\")\n .replace(`<!--app-html-->`, rendered.html ?? \"\")\n\n response.status(200).set({ \"Content-Type\": \"text/html\" }).send(html)\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.stack)\n const body = onServeError(error)\n response.status(500).end(body)\n }\n }\n }\n\n async run() {\n this.app.get(\"/health-check\", (request, response) => {\n this.handleHealthCheck(request, response)\n })\n\n let getRenderAndTemplate: GetRenderAndTemplate\n let onServeError: OnServeError\n if (this.envIsProduction) {\n const compression = (await import(\"compression\")).default\n const sirv = (await import(\"sirv\")).default\n\n this.templateHtml = await fs.readFile(\"./dist/client/index.html\", \"utf-8\")\n\n this.app.use(compression())\n this.app.use(this.base, sirv(\"./dist/client\", { extensions: [] }))\n\n getRenderAndTemplate = async () => {\n const render = (\n (await import(\n // @ts-expect-error only present after building installing app.\n \"../../../dist/server/entry-server.js\"\n )) as EntryModule\n ).render\n\n // Use cached template.\n const template = this.templateHtml\n\n return [render, template]\n }\n\n onServeError = () => undefined\n } else {\n const { createServer } = await import(\"vite\")\n\n const vite = await createServer({\n server: { middlewareMode: true },\n appType: \"custom\",\n base: this.base,\n mode: this.mode,\n })\n\n this.app.use(vite.middlewares)\n\n getRenderAndTemplate = async path => {\n const render = (\n (await vite.ssrLoadModule(\"/src/entry-server.tsx\")) as EntryModule\n ).render\n\n // Always read fresh template.\n let template = await fs.readFile(\"./index.html\", \"utf-8\")\n template = await vite.transformIndexHtml(path, template)\n\n return [render, template]\n }\n\n onServeError = error => {\n vite.ssrFixStacktrace(error)\n return error.stack\n }\n }\n\n this.app.get(\"*\", async (request, response) => {\n await this.handleServeHtml(\n request,\n response,\n getRenderAndTemplate,\n onServeError,\n )\n })\n\n this.app.listen(this.port, this.hostname, () => {\n let startMessage =\n \"Server started.\\n\" +\n `url: http://${this.hostname}:${this.port}\\n` +\n `environment: ${process.env.NODE_ENV}\\n`\n\n if (!this.envIsProduction) startMessage += `mode: ${this.mode}\\n`\n\n console.log(startMessage)\n })\n }\n}\n"],"names":["Server","mode","port","base","express","Cache","request","response","value","healthCheck","getRenderAndTemplate","onServeError","path","render","template","rendered","html","error","body","compression","sirv","fs","createServer","vite","startMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.cjs.js","sources":["../src/server.ts"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 13/12/2024 at 12:15:05(+00:00).\n *\n * A server for an app in a live environment.\n * Based off: https://github.com/bluwy/create-vite-extra/blob/master/template-ssr-react-ts/server.js\n */\n\nimport { Cache, type CacheClass } from \"memory-cache\"\nimport { type UUID, randomUUID } from \"node:crypto\"\nimport express, { type Express, type Request, type Response } from \"express\"\nimport fs from \"node:fs/promises\"\nimport http from \"node:http\"\n\ntype Mode = \"development\" | \"staging\" | \"production\"\ntype Options = Partial<{\n mode: Mode\n port: number\n base: string\n}>\n\ntype HealthStatus =\n | \"healthy\"\n | \"startingUp\"\n | \"shuttingDown\"\n | \"unhealthy\"\n | \"unknown\"\ntype HealthCheck = {\n healthStatus: HealthStatus\n additionalInfo: string\n details?: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\ntype HealthCheckResponse = {\n appId: string\n healthStatus: HealthStatus\n lastCheckedTimestamp: string\n additionalInformation: string\n startupTimestamp: string\n appVersion: string\n details: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\n\ntype Render = (path: string) => Promise<{ head?: string; html?: string }>\ntype EntryModule = { render: Render }\ntype RenderAndTemplate = [Render, string]\ntype GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>\ntype OnServeError = (error: Error) => string | undefined\n\ntype Setup = {\n getRenderAndTemplate: GetRenderAndTemplate\n onServeError: OnServeError\n}\n\nexport default class Server {\n envIsProduction: boolean\n templateHtml: string\n hostname: string\n mode: Mode\n port: number\n base: string\n app: Express\n server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>\n cache: CacheClass<string, any>\n healthCheckCacheKey: string\n healthCheckCacheTimeout: number\n healthCheckStatusCodes: Record<HealthStatus, number>\n devtoolsWorkspaceUUID: UUID\n\n constructor({ mode, port, base }: Options = {}) {\n this.envIsProduction = process.env.NODE_ENV === \"production\"\n this.templateHtml = \"\"\n this.hostname = this.envIsProduction ? \"0.0.0.0\" : \"127.0.0.1\"\n\n this.mode = mode || (process.env.MODE as Mode) || \"development\"\n this.port =\n port ||\n (process.env.PORT\n ? Number(process.env.PORT)\n : this.envIsProduction\n ? 8080\n : 5173)\n this.base = base || process.env.BASE || \"/\"\n\n this.app = express()\n this.server = http.createServer(this.app)\n this.cache = new Cache()\n\n this.healthCheckCacheKey = \"health-check\"\n this.healthCheckCacheTimeout = 30000\n this.healthCheckStatusCodes = {\n // The app is running normally.\n healthy: 200,\n // The app is performing app-specific initialisation which must\n // complete before it will serve normal application requests\n // (perhaps the app is warming a cache or something similar). You\n // only need to use this status if your app will be in a start-up\n // mode for a prolonged period of time.\n startingUp: 503,\n // The app is shutting down. As with startingUp, you only need to\n // use this status if your app takes a prolonged amount of time\n // to shutdown, perhaps because it waits for a long-running\n // process to complete before shutting down.\n shuttingDown: 503,\n // The app is not running normally.\n unhealthy: 503,\n // The app is not able to report its own state.\n unknown: 503,\n }\n\n this.devtoolsWorkspaceUUID = randomUUID()\n }\n\n // @ts-expect-error unused var\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getHealthCheck(request: Request): HealthCheck {\n return {\n healthStatus: \"healthy\",\n additionalInfo: \"All healthy.\",\n }\n }\n\n handleHealthCheck(request: Request, response: Response): void {\n let value: HealthCheckResponse = this.cache.get(\n this.healthCheckCacheKey,\n ) as HealthCheckResponse\n if (value === null) {\n const healthCheck = this.getHealthCheck(request)\n\n if (healthCheck.healthStatus !== \"healthy\") {\n console.warn(`health check: ${JSON.stringify(healthCheck)}`)\n }\n\n value = {\n appId: process.env.APP_ID || \"REPLACE_ME\",\n healthStatus: healthCheck.healthStatus,\n lastCheckedTimestamp: new Date().toISOString(),\n additionalInformation: healthCheck.additionalInfo,\n startupTimestamp: new Date().toISOString(),\n appVersion: process.env.APP_VERSION || \"REPLACE_ME\",\n details: healthCheck.details || [],\n }\n\n this.cache.put(\n this.healthCheckCacheKey,\n value,\n this.healthCheckCacheTimeout,\n )\n }\n\n response.status(this.healthCheckStatusCodes[value.healthStatus]).json(value)\n }\n\n async handleServeHtml(\n request: Request,\n response: Response,\n { getRenderAndTemplate, onServeError }: Setup,\n ): Promise<void> {\n try {\n const path = request.originalUrl.replace(this.base, \"\")\n\n const [render, template] = await getRenderAndTemplate(path)\n\n const rendered = await render(path)\n\n const html = template\n .replace(`<!--app-head-->`, rendered.head ?? \"\")\n .replace(`<!--app-html-->`, rendered.html ?? \"\")\n\n response.status(200).set({ \"Content-Type\": \"text/html\" }).send(html)\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.stack)\n const body = onServeError(error)\n response.status(500).end(body)\n }\n }\n }\n\n // @ts-expect-error unused var\n handleChromeDevTools(request: Request, response: Response) {\n if (this.envIsProduction) {\n response.status(404).json({})\n } else {\n const localWorkspacePath = process.env.LOCAL_WORKSPACE_PATH\n\n let code: number\n let body: object\n if (localWorkspacePath) {\n code = 200\n body = {\n workspace: {\n uuid: this.devtoolsWorkspaceUUID,\n root: localWorkspacePath,\n },\n }\n } else {\n code = 404\n body = { error: \"Local workspace path not configured.\" }\n }\n\n response.status(code).json(body)\n }\n }\n\n async setUpProduction(): Promise<Setup> {\n const compression = (await import(\"compression\")).default\n const sirv = (await import(\"sirv\")).default\n\n this.templateHtml = await fs.readFile(\"./dist/client/index.html\", \"utf-8\")\n\n this.app.use(compression())\n this.app.use(this.base, sirv(\"./dist/client\", { extensions: [] }))\n\n return {\n getRenderAndTemplate: async () => {\n const render = (\n (await import(\n // @ts-expect-error only present after building installing app.\n \"../../../dist/server/entry-server.js\"\n )) as EntryModule\n ).render\n\n // Use cached template.\n const template = this.templateHtml\n\n return [render, template]\n },\n onServeError: () => undefined,\n }\n }\n\n async setUpDevelopment(): Promise<Setup> {\n const { createServer } = await import(\"vite\")\n\n const vite = await createServer({\n server: {\n middlewareMode: true,\n hmr: { server: this.server },\n },\n appType: \"custom\",\n base: this.base,\n mode: this.mode,\n })\n\n this.app.use(vite.middlewares)\n\n return {\n getRenderAndTemplate: async path => {\n const render = (\n (await vite.ssrLoadModule(\"/src/entry-server.tsx\")) as EntryModule\n ).render\n\n // Always read fresh template.\n let template = await fs.readFile(\"./index.html\", \"utf-8\")\n template = await vite.transformIndexHtml(path, template)\n\n return [render, template]\n },\n onServeError: error => {\n vite.ssrFixStacktrace(error)\n return error.stack\n },\n }\n }\n\n async run() {\n const setup = this.envIsProduction\n ? await this.setUpProduction()\n : await this.setUpDevelopment()\n\n this.app.get(\"/health-check\", (request, response) => {\n this.handleHealthCheck(request, response)\n })\n\n this.app.get(\n \"/.well-known/appspecific/com.chrome.devtools.json\",\n (request, response) => {\n this.handleChromeDevTools(request, response)\n },\n )\n\n this.app.get(\"*\", async (request, response) => {\n await this.handleServeHtml(request, response, setup)\n })\n\n this.server.listen(this.port, this.hostname, () => {\n let startMessage =\n \"Server started.\\n\" +\n `url: http://${this.hostname}:${this.port}\\n` +\n `environment: ${process.env.NODE_ENV}\\n`\n\n if (!this.envIsProduction) startMessage += `mode: ${this.mode}\\n`\n\n console.log(startMessage)\n })\n }\n}\n"],"names":["Server","mode","port","base","express","http","Cache","randomUUID","request","response","value","healthCheck","getRenderAndTemplate","onServeError","path","render","template","rendered","html","error","body","localWorkspacePath","code","compression","sirv","fs","createServer","vite","setup","startMessage"],"mappings":"2lBA6DA,MAAqBA,CAAO,CAC1B,gBACA,aACA,SACA,KACA,KACA,KACA,IACA,OACA,MACA,oBACA,wBACA,uBACA,sBAEA,YAAY,CAAE,KAAAC,EAAM,KAAAC,EAAM,KAAAC,CAAA,EAAkB,CAAA,EAAI,CAC9C,KAAK,gBAAkB,QAAQ,IAAI,WAAa,aAChD,KAAK,aAAe,GACpB,KAAK,SAAW,KAAK,gBAAkB,UAAY,YAEnD,KAAK,KAAOF,GAAS,QAAQ,IAAI,MAAiB,cAClD,KAAK,KACHC,IACC,QAAQ,IAAI,KACT,OAAO,QAAQ,IAAI,IAAI,EACvB,KAAK,gBACH,KACA,MACR,KAAK,KAAOC,GAAQ,QAAQ,IAAI,MAAQ,IAExC,KAAK,IAAMC,EAAA,EACX,KAAK,OAASC,EAAK,aAAa,KAAK,GAAG,EACxC,KAAK,MAAQ,IAAIC,QAEjB,KAAK,oBAAsB,eAC3B,KAAK,wBAA0B,IAC/B,KAAK,uBAAyB,CAE5B,QAAS,IAMT,WAAY,IAKZ,aAAc,IAEd,UAAW,IAEX,QAAS,GAAA,EAGX,KAAK,sBAAwBC,aAAA,CAC/B,CAIA,eAAeC,EAA+B,CAC5C,MAAO,CACL,aAAc,UACd,eAAgB,cAAA,CAEpB,CAEA,kBAAkBA,EAAkBC,EAA0B,CAC5D,IAAIC,EAA6B,KAAK,MAAM,IAC1C,KAAK,mBAAA,EAEP,GAAIA,IAAU,KAAM,CAClB,MAAMC,EAAc,KAAK,eAAeH,CAAO,EAE3CG,EAAY,eAAiB,WAC/B,QAAQ,KAAK,iBAAiB,KAAK,UAAUA,CAAW,CAAC,EAAE,EAG7DD,EAAQ,CACN,MAAO,QAAQ,IAAI,QAAU,aAC7B,aAAcC,EAAY,aAC1B,qBAAsB,IAAI,KAAA,EAAO,YAAA,EACjC,sBAAuBA,EAAY,eACnC,iBAAkB,IAAI,KAAA,EAAO,YAAA,EAC7B,WAAY,QAAQ,IAAI,aAAe,aACvC,QAASA,EAAY,SAAW,CAAA,CAAC,EAGnC,KAAK,MAAM,IACT,KAAK,oBACLD,EACA,KAAK,uBAAA,CAET,CAEAD,EAAS,OAAO,KAAK,uBAAuBC,EAAM,YAAY,CAAC,EAAE,KAAKA,CAAK,CAC7E,CAEA,MAAM,gBACJF,EACAC,EACA,CAAE,qBAAAG,EAAsB,aAAAC,GACT,CACf,GAAI,CACF,MAAMC,EAAON,EAAQ,YAAY,QAAQ,KAAK,KAAM,EAAE,EAEhD,CAACO,EAAQC,CAAQ,EAAI,MAAMJ,EAAqBE,CAAI,EAEpDG,EAAW,MAAMF,EAAOD,CAAI,EAE5BI,EAAOF,EACV,QAAQ,kBAAmBC,EAAS,MAAQ,EAAE,EAC9C,QAAQ,kBAAmBA,EAAS,MAAQ,EAAE,EAEjDR,EAAS,OAAO,GAAG,EAAE,IAAI,CAAE,eAAgB,WAAA,CAAa,EAAE,KAAKS,CAAI,CACrE,OAASC,EAAO,CACd,GAAIA,aAAiB,MAAO,CAC1B,QAAQ,MAAMA,EAAM,KAAK,EACzB,MAAMC,EAAOP,EAAaM,CAAK,EAC/BV,EAAS,OAAO,GAAG,EAAE,IAAIW,CAAI,CAC/B,CACF,CACF,CAGA,qBAAqBZ,EAAkBC,EAAoB,CACzD,GAAI,KAAK,gBACPA,EAAS,OAAO,GAAG,EAAE,KAAK,CAAA,CAAE,MACvB,CACL,MAAMY,EAAqB,QAAQ,IAAI,qBAEvC,IAAIC,EACAF,EACAC,GACFC,EAAO,IACPF,EAAO,CACL,UAAW,CACT,KAAM,KAAK,sBACX,KAAMC,CAAA,CACR,IAGFC,EAAO,IACPF,EAAO,CAAE,MAAO,sCAAA,GAGlBX,EAAS,OAAOa,CAAI,EAAE,KAAKF,CAAI,CACjC,CACF,CAEA,MAAM,iBAAkC,CACtC,MAAMG,GAAe,KAAM,QAAO,aAAa,GAAG,QAC5CC,GAAQ,KAAM,QAAO,MAAM,GAAG,QAEpC,YAAK,aAAe,MAAMC,EAAG,SAAS,2BAA4B,OAAO,EAEzE,KAAK,IAAI,IAAIF,GAAa,EAC1B,KAAK,IAAI,IAAI,KAAK,KAAMC,EAAK,gBAAiB,CAAE,WAAY,CAAA,CAAC,CAAG,CAAC,EAE1D,CACL,qBAAsB,SAAY,CAChC,MAAMT,GACH,KAAM,QAEL,sCAAA,GAEF,OAGIC,EAAW,KAAK,aAEtB,MAAO,CAACD,EAAQC,CAAQ,CAC1B,EACA,aAAc,IAAA,EAAM,CAExB,CAEA,MAAM,kBAAmC,CACvC,KAAM,CAAE,aAAAU,CAAA,EAAiB,KAAM,QAAO,MAAM,EAEtCC,EAAO,MAAMD,EAAa,CAC9B,OAAQ,CACN,eAAgB,GAChB,IAAK,CAAE,OAAQ,KAAK,MAAA,CAAO,EAE7B,QAAS,SACT,KAAM,KAAK,KACX,KAAM,KAAK,IAAA,CACZ,EAED,YAAK,IAAI,IAAIC,EAAK,WAAW,EAEtB,CACL,qBAAsB,MAAMb,GAAQ,CAClC,MAAMC,GACH,MAAMY,EAAK,cAAc,uBAAuB,GACjD,OAGF,IAAIX,EAAW,MAAMS,EAAG,SAAS,eAAgB,OAAO,EACxD,OAAAT,EAAW,MAAMW,EAAK,mBAAmBb,EAAME,CAAQ,EAEhD,CAACD,EAAQC,CAAQ,CAC1B,EACA,aAAcG,IACZQ,EAAK,iBAAiBR,CAAK,EACpBA,EAAM,MACf,CAEJ,CAEA,MAAM,KAAM,CACV,MAAMS,EAAQ,KAAK,gBACf,MAAM,KAAK,gBAAA,EACX,MAAM,KAAK,iBAAA,EAEf,KAAK,IAAI,IAAI,gBAAiB,CAACpB,EAASC,IAAa,CACnD,KAAK,kBAAkBD,EAASC,CAAQ,CAC1C,CAAC,EAED,KAAK,IAAI,IACP,oDACA,CAACD,EAASC,IAAa,CACrB,KAAK,qBAAqBD,EAASC,CAAQ,CAC7C,CAAA,EAGF,KAAK,IAAI,IAAI,IAAK,MAAOD,EAASC,IAAa,CAC7C,MAAM,KAAK,gBAAgBD,EAASC,EAAUmB,CAAK,CACrD,CAAC,EAED,KAAK,OAAO,OAAO,KAAK,KAAM,KAAK,SAAU,IAAM,CACjD,IAAIC,EACF;AAAA,cACe,KAAK,QAAQ,IAAI,KAAK,IAAI;AAAA,eACzB,QAAQ,IAAI,QAAQ;AAAA,EAEjC,KAAK,kBAAiBA,GAAgB,SAAS,KAAK,IAAI;AAAA,GAE7D,QAAQ,IAAIA,CAAY,CAC1B,CAAC,CACH,CACF"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CacheClass } from 'memory-cache';
|
|
2
|
+
import { UUID } from 'node:crypto';
|
|
2
3
|
import { Express, Request, Response } from 'express';
|
|
4
|
+
import { default as http } from 'node:http';
|
|
3
5
|
type Mode = "development" | "staging" | "production";
|
|
4
6
|
type Options = Partial<{
|
|
5
7
|
mode: Mode;
|
|
@@ -23,6 +25,10 @@ type Render = (path: string) => Promise<{
|
|
|
23
25
|
type RenderAndTemplate = [Render, string];
|
|
24
26
|
type GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>;
|
|
25
27
|
type OnServeError = (error: Error) => string | undefined;
|
|
28
|
+
type Setup = {
|
|
29
|
+
getRenderAndTemplate: GetRenderAndTemplate;
|
|
30
|
+
onServeError: OnServeError;
|
|
31
|
+
};
|
|
26
32
|
export default class Server {
|
|
27
33
|
envIsProduction: boolean;
|
|
28
34
|
templateHtml: string;
|
|
@@ -31,14 +37,19 @@ export default class Server {
|
|
|
31
37
|
port: number;
|
|
32
38
|
base: string;
|
|
33
39
|
app: Express;
|
|
40
|
+
server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
|
|
34
41
|
cache: CacheClass<string, any>;
|
|
35
42
|
healthCheckCacheKey: string;
|
|
36
43
|
healthCheckCacheTimeout: number;
|
|
37
44
|
healthCheckStatusCodes: Record<HealthStatus, number>;
|
|
45
|
+
devtoolsWorkspaceUUID: UUID;
|
|
38
46
|
constructor({ mode, port, base }?: Options);
|
|
39
47
|
getHealthCheck(request: Request): HealthCheck;
|
|
40
48
|
handleHealthCheck(request: Request, response: Response): void;
|
|
41
|
-
handleServeHtml(request: Request, response: Response, getRenderAndTemplate
|
|
49
|
+
handleServeHtml(request: Request, response: Response, { getRenderAndTemplate, onServeError }: Setup): Promise<void>;
|
|
50
|
+
handleChromeDevTools(request: Request, response: Response): void;
|
|
51
|
+
setUpProduction(): Promise<Setup>;
|
|
52
|
+
setUpDevelopment(): Promise<Setup>;
|
|
42
53
|
run(): Promise<void>;
|
|
43
54
|
}
|
|
44
55
|
export {};
|
package/dist/server.es.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Cache as l } from "memory-cache";
|
|
2
|
-
import p from "
|
|
3
|
-
import
|
|
4
|
-
|
|
2
|
+
import { randomUUID as p } from "node:crypto";
|
|
3
|
+
import d from "express";
|
|
4
|
+
import i from "node:fs/promises";
|
|
5
|
+
import m from "node:http";
|
|
6
|
+
class S {
|
|
5
7
|
envIsProduction;
|
|
6
8
|
templateHtml;
|
|
7
9
|
hostname;
|
|
@@ -9,12 +11,14 @@ class v {
|
|
|
9
11
|
port;
|
|
10
12
|
base;
|
|
11
13
|
app;
|
|
14
|
+
server;
|
|
12
15
|
cache;
|
|
13
16
|
healthCheckCacheKey;
|
|
14
17
|
healthCheckCacheTimeout;
|
|
15
18
|
healthCheckStatusCodes;
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
devtoolsWorkspaceUUID;
|
|
20
|
+
constructor({ mode: h, port: e, base: t } = {}) {
|
|
21
|
+
this.envIsProduction = process.env.NODE_ENV === "production", this.templateHtml = "", this.hostname = this.envIsProduction ? "0.0.0.0" : "127.0.0.1", this.mode = h || process.env.MODE || "development", this.port = e || (process.env.PORT ? Number(process.env.PORT) : this.envIsProduction ? 8080 : 5173), this.base = t || process.env.BASE || "/", this.app = d(), this.server = m.createServer(this.app), this.cache = new l(), this.healthCheckCacheKey = "health-check", this.healthCheckCacheTimeout = 3e4, this.healthCheckStatusCodes = {
|
|
18
22
|
// The app is running normally.
|
|
19
23
|
healthy: 200,
|
|
20
24
|
// The app is performing app-specific initialisation which must
|
|
@@ -32,86 +36,110 @@ class v {
|
|
|
32
36
|
unhealthy: 503,
|
|
33
37
|
// The app is not able to report its own state.
|
|
34
38
|
unknown: 503
|
|
35
|
-
};
|
|
39
|
+
}, this.devtoolsWorkspaceUUID = p();
|
|
36
40
|
}
|
|
37
41
|
// @ts-expect-error unused var
|
|
38
42
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
39
|
-
getHealthCheck(
|
|
43
|
+
getHealthCheck(h) {
|
|
40
44
|
return {
|
|
41
45
|
healthStatus: "healthy",
|
|
42
46
|
additionalInfo: "All healthy."
|
|
43
47
|
};
|
|
44
48
|
}
|
|
45
|
-
handleHealthCheck(
|
|
46
|
-
let
|
|
49
|
+
handleHealthCheck(h, e) {
|
|
50
|
+
let t = this.cache.get(
|
|
47
51
|
this.healthCheckCacheKey
|
|
48
52
|
);
|
|
49
|
-
if (
|
|
50
|
-
const
|
|
51
|
-
|
|
53
|
+
if (t === null) {
|
|
54
|
+
const s = this.getHealthCheck(h);
|
|
55
|
+
s.healthStatus !== "healthy" && console.warn(`health check: ${JSON.stringify(s)}`), t = {
|
|
52
56
|
appId: process.env.APP_ID || "REPLACE_ME",
|
|
53
|
-
healthStatus:
|
|
57
|
+
healthStatus: s.healthStatus,
|
|
54
58
|
lastCheckedTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
55
|
-
additionalInformation:
|
|
59
|
+
additionalInformation: s.additionalInfo,
|
|
56
60
|
startupTimestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
57
61
|
appVersion: process.env.APP_VERSION || "REPLACE_ME",
|
|
58
|
-
details:
|
|
62
|
+
details: s.details || []
|
|
59
63
|
}, this.cache.put(
|
|
60
64
|
this.healthCheckCacheKey,
|
|
61
|
-
|
|
65
|
+
t,
|
|
62
66
|
this.healthCheckCacheTimeout
|
|
63
67
|
);
|
|
64
68
|
}
|
|
65
|
-
|
|
69
|
+
e.status(this.healthCheckStatusCodes[t.healthStatus]).json(t);
|
|
66
70
|
}
|
|
67
|
-
async handleServeHtml(
|
|
71
|
+
async handleServeHtml(h, e, { getRenderAndTemplate: t, onServeError: s }) {
|
|
68
72
|
try {
|
|
69
|
-
const a =
|
|
70
|
-
|
|
73
|
+
const a = h.originalUrl.replace(this.base, ""), [o, n] = await t(a), r = await o(a), c = n.replace("<!--app-head-->", r.head ?? "").replace("<!--app-html-->", r.html ?? "");
|
|
74
|
+
e.status(200).set({ "Content-Type": "text/html" }).send(c);
|
|
71
75
|
} catch (a) {
|
|
72
76
|
if (a instanceof Error) {
|
|
73
77
|
console.error(a.stack);
|
|
74
|
-
const
|
|
75
|
-
|
|
78
|
+
const o = s(a);
|
|
79
|
+
e.status(500).end(o);
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
}
|
|
83
|
+
// @ts-expect-error unused var
|
|
84
|
+
handleChromeDevTools(h, e) {
|
|
85
|
+
if (this.envIsProduction)
|
|
86
|
+
e.status(404).json({});
|
|
87
|
+
else {
|
|
88
|
+
const t = process.env.LOCAL_WORKSPACE_PATH;
|
|
89
|
+
let s, a;
|
|
90
|
+
t ? (s = 200, a = {
|
|
91
|
+
workspace: {
|
|
92
|
+
uuid: this.devtoolsWorkspaceUUID,
|
|
93
|
+
root: t
|
|
94
|
+
}
|
|
95
|
+
}) : (s = 404, a = { error: "Local workspace path not configured." }), e.status(s).json(a);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async setUpProduction() {
|
|
99
|
+
const h = (await import("compression")).default, e = (await import("sirv")).default;
|
|
100
|
+
return this.templateHtml = await i.readFile("./dist/client/index.html", "utf-8"), this.app.use(h()), this.app.use(this.base, e("./dist/client", { extensions: [] })), {
|
|
101
|
+
getRenderAndTemplate: async () => {
|
|
102
|
+
const t = (await import(
|
|
103
|
+
// @ts-expect-error only present after building installing app.
|
|
104
|
+
"../../../dist/server/entry-server.js"
|
|
105
|
+
)).render, s = this.templateHtml;
|
|
106
|
+
return [t, s];
|
|
107
|
+
},
|
|
108
|
+
onServeError: () => {
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async setUpDevelopment() {
|
|
113
|
+
const { createServer: h } = await import("vite"), e = await h({
|
|
114
|
+
server: {
|
|
115
|
+
middlewareMode: !0,
|
|
116
|
+
hmr: { server: this.server }
|
|
117
|
+
},
|
|
118
|
+
appType: "custom",
|
|
119
|
+
base: this.base,
|
|
120
|
+
mode: this.mode
|
|
121
|
+
});
|
|
122
|
+
return this.app.use(e.middlewares), {
|
|
123
|
+
getRenderAndTemplate: async (t) => {
|
|
124
|
+
const s = (await e.ssrLoadModule("/src/entry-server.tsx")).render;
|
|
125
|
+
let a = await i.readFile("./index.html", "utf-8");
|
|
126
|
+
return a = await e.transformIndexHtml(t, a), [s, a];
|
|
127
|
+
},
|
|
128
|
+
onServeError: (t) => (e.ssrFixStacktrace(t), t.stack)
|
|
129
|
+
};
|
|
130
|
+
}
|
|
79
131
|
async run() {
|
|
132
|
+
const h = this.envIsProduction ? await this.setUpProduction() : await this.setUpDevelopment();
|
|
80
133
|
this.app.get("/health-check", (e, t) => {
|
|
81
134
|
this.handleHealthCheck(e, t);
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
)).render, i = this.templateHtml;
|
|
91
|
-
return [a, i];
|
|
92
|
-
}, h = () => {
|
|
93
|
-
};
|
|
94
|
-
} else {
|
|
95
|
-
const { createServer: e } = await import("vite"), t = await e({
|
|
96
|
-
server: { middlewareMode: !0 },
|
|
97
|
-
appType: "custom",
|
|
98
|
-
base: this.base,
|
|
99
|
-
mode: this.mode
|
|
100
|
-
});
|
|
101
|
-
this.app.use(t.middlewares), s = async (a) => {
|
|
102
|
-
const i = (await t.ssrLoadModule("/src/entry-server.tsx")).render;
|
|
103
|
-
let r = await o.readFile("./index.html", "utf-8");
|
|
104
|
-
return r = await t.transformIndexHtml(a, r), [i, r];
|
|
105
|
-
}, h = (a) => (t.ssrFixStacktrace(a), a.stack);
|
|
106
|
-
}
|
|
107
|
-
this.app.get("*", async (e, t) => {
|
|
108
|
-
await this.handleServeHtml(
|
|
109
|
-
e,
|
|
110
|
-
t,
|
|
111
|
-
s,
|
|
112
|
-
h
|
|
113
|
-
);
|
|
114
|
-
}), this.app.listen(this.port, this.hostname, () => {
|
|
135
|
+
}), this.app.get(
|
|
136
|
+
"/.well-known/appspecific/com.chrome.devtools.json",
|
|
137
|
+
(e, t) => {
|
|
138
|
+
this.handleChromeDevTools(e, t);
|
|
139
|
+
}
|
|
140
|
+
), this.app.get("*", async (e, t) => {
|
|
141
|
+
await this.handleServeHtml(e, t, h);
|
|
142
|
+
}), this.server.listen(this.port, this.hostname, () => {
|
|
115
143
|
let e = `Server started.
|
|
116
144
|
url: http://${this.hostname}:${this.port}
|
|
117
145
|
environment: ${process.env.NODE_ENV}
|
|
@@ -122,6 +150,6 @@ environment: ${process.env.NODE_ENV}
|
|
|
122
150
|
}
|
|
123
151
|
}
|
|
124
152
|
export {
|
|
125
|
-
|
|
153
|
+
S as default
|
|
126
154
|
};
|
|
127
155
|
//# sourceMappingURL=server.es.js.map
|
package/dist/server.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.es.js","sources":["../src/server.ts"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 13/12/2024 at 12:15:05(+00:00).\n *\n * A server for an app in a live environment.\n * Based off: https://github.com/bluwy/create-vite-extra/blob/master/template-ssr-react-ts/server.js\n */\n\nimport { Cache, type CacheClass } from \"memory-cache\"\nimport express, { type Express, type Request, type Response } from \"express\"\nimport fs from \"node:fs/promises\"\n\ntype Mode = \"development\" | \"staging\" | \"production\"\ntype Options = Partial<{\n mode: Mode\n port: number\n base: string\n}>\n\ntype HealthStatus =\n | \"healthy\"\n | \"startingUp\"\n | \"shuttingDown\"\n | \"unhealthy\"\n | \"unknown\"\ntype HealthCheck = {\n healthStatus: HealthStatus\n additionalInfo: string\n details?: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\ntype HealthCheckResponse = {\n appId: string\n healthStatus: HealthStatus\n lastCheckedTimestamp: string\n additionalInformation: string\n startupTimestamp: string\n appVersion: string\n details: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\n\ntype Render = (path: string) => Promise<{ head?: string; html?: string }>\ntype EntryModule = { render: Render }\ntype RenderAndTemplate = [Render, string]\ntype GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>\ntype OnServeError = (error: Error) => string | undefined\n\nexport default class Server {\n envIsProduction: boolean\n templateHtml: string\n hostname: string\n mode: Mode\n port: number\n base: string\n app: Express\n cache: CacheClass<string, any>\n healthCheckCacheKey: string\n healthCheckCacheTimeout: number\n healthCheckStatusCodes: Record<HealthStatus, number>\n\n constructor({ mode, port, base }: Options = {}) {\n this.envIsProduction = process.env.NODE_ENV === \"production\"\n this.templateHtml = \"\"\n this.hostname = this.envIsProduction ? \"0.0.0.0\" : \"127.0.0.1\"\n\n this.mode = mode || (process.env.MODE as Mode) || \"development\"\n this.port =\n port ||\n (process.env.PORT\n ? Number(process.env.PORT)\n : this.envIsProduction\n ? 8080\n : 5173)\n this.base = base || process.env.BASE || \"/\"\n\n this.app = express()\n this.cache = new Cache()\n\n this.healthCheckCacheKey = \"health-check\"\n this.healthCheckCacheTimeout = 30000\n this.healthCheckStatusCodes = {\n // The app is running normally.\n healthy: 200,\n // The app is performing app-specific initialisation which must\n // complete before it will serve normal application requests\n // (perhaps the app is warming a cache or something similar). You\n // only need to use this status if your app will be in a start-up\n // mode for a prolonged period of time.\n startingUp: 503,\n // The app is shutting down. As with startingUp, you only need to\n // use this status if your app takes a prolonged amount of time\n // to shutdown, perhaps because it waits for a long-running\n // process to complete before shutting down.\n shuttingDown: 503,\n // The app is not running normally.\n unhealthy: 503,\n // The app is not able to report its own state.\n unknown: 503,\n }\n }\n\n // @ts-expect-error unused var\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getHealthCheck(request: Request): HealthCheck {\n return {\n healthStatus: \"healthy\",\n additionalInfo: \"All healthy.\",\n }\n }\n\n handleHealthCheck(request: Request, response: Response): void {\n let value: HealthCheckResponse = this.cache.get(\n this.healthCheckCacheKey,\n ) as HealthCheckResponse\n if (value === null) {\n const healthCheck = this.getHealthCheck(request)\n\n if (healthCheck.healthStatus !== \"healthy\") {\n console.warn(`health check: ${JSON.stringify(healthCheck)}`)\n }\n\n value = {\n appId: process.env.APP_ID || \"REPLACE_ME\",\n healthStatus: healthCheck.healthStatus,\n lastCheckedTimestamp: new Date().toISOString(),\n additionalInformation: healthCheck.additionalInfo,\n startupTimestamp: new Date().toISOString(),\n appVersion: process.env.APP_VERSION || \"REPLACE_ME\",\n details: healthCheck.details || [],\n }\n\n this.cache.put(\n this.healthCheckCacheKey,\n value,\n this.healthCheckCacheTimeout,\n )\n }\n\n response.status(this.healthCheckStatusCodes[value.healthStatus]).json(value)\n }\n\n async handleServeHtml(\n request: Request,\n response: Response,\n getRenderAndTemplate: GetRenderAndTemplate,\n onServeError: OnServeError,\n ): Promise<void> {\n try {\n const path = request.originalUrl.replace(this.base, \"\")\n\n const [render, template] = await getRenderAndTemplate(path)\n\n const rendered = await render(path)\n\n const html = template\n .replace(`<!--app-head-->`, rendered.head ?? \"\")\n .replace(`<!--app-html-->`, rendered.html ?? \"\")\n\n response.status(200).set({ \"Content-Type\": \"text/html\" }).send(html)\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.stack)\n const body = onServeError(error)\n response.status(500).end(body)\n }\n }\n }\n\n async run() {\n this.app.get(\"/health-check\", (request, response) => {\n this.handleHealthCheck(request, response)\n })\n\n let getRenderAndTemplate: GetRenderAndTemplate\n let onServeError: OnServeError\n if (this.envIsProduction) {\n const compression = (await import(\"compression\")).default\n const sirv = (await import(\"sirv\")).default\n\n this.templateHtml = await fs.readFile(\"./dist/client/index.html\", \"utf-8\")\n\n this.app.use(compression())\n this.app.use(this.base, sirv(\"./dist/client\", { extensions: [] }))\n\n getRenderAndTemplate = async () => {\n const render = (\n (await import(\n // @ts-expect-error only present after building installing app.\n \"../../../dist/server/entry-server.js\"\n )) as EntryModule\n ).render\n\n // Use cached template.\n const template = this.templateHtml\n\n return [render, template]\n }\n\n onServeError = () => undefined\n } else {\n const { createServer } = await import(\"vite\")\n\n const vite = await createServer({\n server: { middlewareMode: true },\n appType: \"custom\",\n base: this.base,\n mode: this.mode,\n })\n\n this.app.use(vite.middlewares)\n\n getRenderAndTemplate = async path => {\n const render = (\n (await vite.ssrLoadModule(\"/src/entry-server.tsx\")) as EntryModule\n ).render\n\n // Always read fresh template.\n let template = await fs.readFile(\"./index.html\", \"utf-8\")\n template = await vite.transformIndexHtml(path, template)\n\n return [render, template]\n }\n\n onServeError = error => {\n vite.ssrFixStacktrace(error)\n return error.stack\n }\n }\n\n this.app.get(\"*\", async (request, response) => {\n await this.handleServeHtml(\n request,\n response,\n getRenderAndTemplate,\n onServeError,\n )\n })\n\n this.app.listen(this.port, this.hostname, () => {\n let startMessage =\n \"Server started.\\n\" +\n `url: http://${this.hostname}:${this.port}\\n` +\n `environment: ${process.env.NODE_ENV}\\n`\n\n if (!this.envIsProduction) startMessage += `mode: ${this.mode}\\n`\n\n console.log(startMessage)\n })\n }\n}\n"],"names":["Server","mode","port","base","express","Cache","request","response","value","healthCheck","getRenderAndTemplate","onServeError","path","render","template","rendered","html","error","body","compression","sirv","fs","createServer","vite","startMessage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.es.js","sources":["../src/server.ts"],"sourcesContent":["/**\n * © Ocado Group\n * Created on 13/12/2024 at 12:15:05(+00:00).\n *\n * A server for an app in a live environment.\n * Based off: https://github.com/bluwy/create-vite-extra/blob/master/template-ssr-react-ts/server.js\n */\n\nimport { Cache, type CacheClass } from \"memory-cache\"\nimport { type UUID, randomUUID } from \"node:crypto\"\nimport express, { type Express, type Request, type Response } from \"express\"\nimport fs from \"node:fs/promises\"\nimport http from \"node:http\"\n\ntype Mode = \"development\" | \"staging\" | \"production\"\ntype Options = Partial<{\n mode: Mode\n port: number\n base: string\n}>\n\ntype HealthStatus =\n | \"healthy\"\n | \"startingUp\"\n | \"shuttingDown\"\n | \"unhealthy\"\n | \"unknown\"\ntype HealthCheck = {\n healthStatus: HealthStatus\n additionalInfo: string\n details?: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\ntype HealthCheckResponse = {\n appId: string\n healthStatus: HealthStatus\n lastCheckedTimestamp: string\n additionalInformation: string\n startupTimestamp: string\n appVersion: string\n details: Array<{\n name: string\n description: string\n health: HealthStatus\n }>\n}\n\ntype Render = (path: string) => Promise<{ head?: string; html?: string }>\ntype EntryModule = { render: Render }\ntype RenderAndTemplate = [Render, string]\ntype GetRenderAndTemplate = (path: string) => Promise<RenderAndTemplate>\ntype OnServeError = (error: Error) => string | undefined\n\ntype Setup = {\n getRenderAndTemplate: GetRenderAndTemplate\n onServeError: OnServeError\n}\n\nexport default class Server {\n envIsProduction: boolean\n templateHtml: string\n hostname: string\n mode: Mode\n port: number\n base: string\n app: Express\n server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>\n cache: CacheClass<string, any>\n healthCheckCacheKey: string\n healthCheckCacheTimeout: number\n healthCheckStatusCodes: Record<HealthStatus, number>\n devtoolsWorkspaceUUID: UUID\n\n constructor({ mode, port, base }: Options = {}) {\n this.envIsProduction = process.env.NODE_ENV === \"production\"\n this.templateHtml = \"\"\n this.hostname = this.envIsProduction ? \"0.0.0.0\" : \"127.0.0.1\"\n\n this.mode = mode || (process.env.MODE as Mode) || \"development\"\n this.port =\n port ||\n (process.env.PORT\n ? Number(process.env.PORT)\n : this.envIsProduction\n ? 8080\n : 5173)\n this.base = base || process.env.BASE || \"/\"\n\n this.app = express()\n this.server = http.createServer(this.app)\n this.cache = new Cache()\n\n this.healthCheckCacheKey = \"health-check\"\n this.healthCheckCacheTimeout = 30000\n this.healthCheckStatusCodes = {\n // The app is running normally.\n healthy: 200,\n // The app is performing app-specific initialisation which must\n // complete before it will serve normal application requests\n // (perhaps the app is warming a cache or something similar). You\n // only need to use this status if your app will be in a start-up\n // mode for a prolonged period of time.\n startingUp: 503,\n // The app is shutting down. As with startingUp, you only need to\n // use this status if your app takes a prolonged amount of time\n // to shutdown, perhaps because it waits for a long-running\n // process to complete before shutting down.\n shuttingDown: 503,\n // The app is not running normally.\n unhealthy: 503,\n // The app is not able to report its own state.\n unknown: 503,\n }\n\n this.devtoolsWorkspaceUUID = randomUUID()\n }\n\n // @ts-expect-error unused var\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getHealthCheck(request: Request): HealthCheck {\n return {\n healthStatus: \"healthy\",\n additionalInfo: \"All healthy.\",\n }\n }\n\n handleHealthCheck(request: Request, response: Response): void {\n let value: HealthCheckResponse = this.cache.get(\n this.healthCheckCacheKey,\n ) as HealthCheckResponse\n if (value === null) {\n const healthCheck = this.getHealthCheck(request)\n\n if (healthCheck.healthStatus !== \"healthy\") {\n console.warn(`health check: ${JSON.stringify(healthCheck)}`)\n }\n\n value = {\n appId: process.env.APP_ID || \"REPLACE_ME\",\n healthStatus: healthCheck.healthStatus,\n lastCheckedTimestamp: new Date().toISOString(),\n additionalInformation: healthCheck.additionalInfo,\n startupTimestamp: new Date().toISOString(),\n appVersion: process.env.APP_VERSION || \"REPLACE_ME\",\n details: healthCheck.details || [],\n }\n\n this.cache.put(\n this.healthCheckCacheKey,\n value,\n this.healthCheckCacheTimeout,\n )\n }\n\n response.status(this.healthCheckStatusCodes[value.healthStatus]).json(value)\n }\n\n async handleServeHtml(\n request: Request,\n response: Response,\n { getRenderAndTemplate, onServeError }: Setup,\n ): Promise<void> {\n try {\n const path = request.originalUrl.replace(this.base, \"\")\n\n const [render, template] = await getRenderAndTemplate(path)\n\n const rendered = await render(path)\n\n const html = template\n .replace(`<!--app-head-->`, rendered.head ?? \"\")\n .replace(`<!--app-html-->`, rendered.html ?? \"\")\n\n response.status(200).set({ \"Content-Type\": \"text/html\" }).send(html)\n } catch (error) {\n if (error instanceof Error) {\n console.error(error.stack)\n const body = onServeError(error)\n response.status(500).end(body)\n }\n }\n }\n\n // @ts-expect-error unused var\n handleChromeDevTools(request: Request, response: Response) {\n if (this.envIsProduction) {\n response.status(404).json({})\n } else {\n const localWorkspacePath = process.env.LOCAL_WORKSPACE_PATH\n\n let code: number\n let body: object\n if (localWorkspacePath) {\n code = 200\n body = {\n workspace: {\n uuid: this.devtoolsWorkspaceUUID,\n root: localWorkspacePath,\n },\n }\n } else {\n code = 404\n body = { error: \"Local workspace path not configured.\" }\n }\n\n response.status(code).json(body)\n }\n }\n\n async setUpProduction(): Promise<Setup> {\n const compression = (await import(\"compression\")).default\n const sirv = (await import(\"sirv\")).default\n\n this.templateHtml = await fs.readFile(\"./dist/client/index.html\", \"utf-8\")\n\n this.app.use(compression())\n this.app.use(this.base, sirv(\"./dist/client\", { extensions: [] }))\n\n return {\n getRenderAndTemplate: async () => {\n const render = (\n (await import(\n // @ts-expect-error only present after building installing app.\n \"../../../dist/server/entry-server.js\"\n )) as EntryModule\n ).render\n\n // Use cached template.\n const template = this.templateHtml\n\n return [render, template]\n },\n onServeError: () => undefined,\n }\n }\n\n async setUpDevelopment(): Promise<Setup> {\n const { createServer } = await import(\"vite\")\n\n const vite = await createServer({\n server: {\n middlewareMode: true,\n hmr: { server: this.server },\n },\n appType: \"custom\",\n base: this.base,\n mode: this.mode,\n })\n\n this.app.use(vite.middlewares)\n\n return {\n getRenderAndTemplate: async path => {\n const render = (\n (await vite.ssrLoadModule(\"/src/entry-server.tsx\")) as EntryModule\n ).render\n\n // Always read fresh template.\n let template = await fs.readFile(\"./index.html\", \"utf-8\")\n template = await vite.transformIndexHtml(path, template)\n\n return [render, template]\n },\n onServeError: error => {\n vite.ssrFixStacktrace(error)\n return error.stack\n },\n }\n }\n\n async run() {\n const setup = this.envIsProduction\n ? await this.setUpProduction()\n : await this.setUpDevelopment()\n\n this.app.get(\"/health-check\", (request, response) => {\n this.handleHealthCheck(request, response)\n })\n\n this.app.get(\n \"/.well-known/appspecific/com.chrome.devtools.json\",\n (request, response) => {\n this.handleChromeDevTools(request, response)\n },\n )\n\n this.app.get(\"*\", async (request, response) => {\n await this.handleServeHtml(request, response, setup)\n })\n\n this.server.listen(this.port, this.hostname, () => {\n let startMessage =\n \"Server started.\\n\" +\n `url: http://${this.hostname}:${this.port}\\n` +\n `environment: ${process.env.NODE_ENV}\\n`\n\n if (!this.envIsProduction) startMessage += `mode: ${this.mode}\\n`\n\n console.log(startMessage)\n })\n }\n}\n"],"names":["Server","mode","port","base","express","http","Cache","randomUUID","request","response","value","healthCheck","getRenderAndTemplate","onServeError","path","render","template","rendered","html","error","body","localWorkspacePath","code","compression","sirv","fs","createServer","vite","setup","startMessage"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";require("@mui/material");const e=require("../../index-
|
|
1
|
+
"use strict";require("@mui/material");const e=require("../../index-DZ7ETsOg.cjs");module.exports=e.components;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/theme/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("@mui/material"),c=require("../index-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("@mui/material"),c=require("../index-DZ7ETsOg.cjs"),o=require("../palette-BnIdHKDE.cjs"),a=require("../jsx-runtime-CeSfJrVB.cjs"),h=require("@mui/icons-material"),j=({options:t=d,withShapes:x=!1,userType:m,bgcolor:n,children:v,sx:M,...g})=>{let l,p,r;switch(m){case"teacher":n=n??o.primary[400],l="tertiary",p="secondary",r=o.palette.primary.contrastText;break;case"student":n=n??o.tertiary[500],l="secondary",p="primary",r=o.palette.tertiary.contrastText;break;case"independent":n=n??o.secondary[500],l="primary",p="tertiary",r=o.palette.secondary.contrastText;break}const y={display:{xs:"none",md:"block"},fontSize:"180px",position:"absolute"},u={color:r,textDecorationColor:r};function s(e,k,O,T="root"){return{...c.getStyleOverrides(e,O,T,t.components),...!c.includesClassNames(e,["no-override"])&&k}}const b=i.responsiveFontSizes(i.createTheme({...t,components:{...t.components,MuiTypography:{...t.components?.MuiTypography,styleOverrides:{...t.components?.MuiTypography?.styleOverrides,root:({ownerState:e})=>s(e,{...u},"MuiTypography")}},MuiFormHelperText:{...t.components?.MuiFormHelperText,styleOverrides:{...t.components?.MuiFormHelperText?.styleOverrides,root:({ownerState:e})=>s(e,{...u},"MuiFormHelperText")}},MuiLink:{...t.components?.MuiLink,styleOverrides:{...t.components?.MuiLink?.styleOverrides,root:({ownerState:e})=>s(e,{...u},"MuiLink")}},MuiButton:{...t.components?.MuiButton,styleOverrides:{...t.components?.MuiButton?.styleOverrides,contained:({ownerState:e})=>s(e,{...m==="independent"&&{backgroundColor:"white","&:hover":{backgroundColor:"#f6f5f5",boxShadow:["0px 6px 10px 0px rgba(0, 0, 0, 0.14)","0px 1px 18px 0px rgba(0, 0, 0, 0.12)","0px 3px 5px 0px rgba(0, 0, 0, 0.2);"].join()},[`&.${i.buttonClasses.disabled}`]:{backgroundColor:"white",color:r}}},"MuiButton","contained"),outlined:({ownerState:e})=>s(e,{...u,border:`2px solid ${r}`,"&:hover":{border:`2px solid ${r}`,backgroundColor:"transparent",textDecoration:"underline"}},"MuiButton","outlined")}},MuiCheckbox:{...t.components?.MuiCheckbox,styleOverrides:{...t.components?.MuiCheckbox?.styleOverrides,root:({ownerState:e})=>s(e,{color:`${r} !important`},"MuiCheckbox")}},MuiSvgIcon:{...t.components?.MuiSvgIcon,styleOverrides:{...t.components?.MuiSvgIcon?.styleOverrides,root:({ownerState:e})=>s(e,{"&.checkbox-error":{color:`${r} !important`}},"MuiSvgIcon")}}}}));return a.jsxRuntimeExports.jsx(i.ThemeProvider,{theme:b,children:a.jsxRuntimeExports.jsxs(i.Box,{sx:{...M,...x&&{paddingY:{xs:2,sm:3,md:5},paddingX:{xs:2,sm:5,md:10},marginX:{md:"90px"}},bgcolor:n,alignItems:"center",position:"relative"},...g,children:[x&&a.jsxRuntimeExports.jsxs(a.jsxRuntimeExports.Fragment,{children:[a.jsxRuntimeExports.jsx(h.Circle,{color:l,sx:{...y,top:"5%",left:"0%",transform:"translate(-60%, 0%)"}}),a.jsxRuntimeExports.jsx(h.Hexagon,{color:p,sx:{...y,bottom:"5%",right:"0%",transform:"translate(60%, 0%) rotate(90deg)"}})]}),v]})})},d={palette:o.palette,components:c.components,spacing:c.spacing,typography:c.typography},C=i.responsiveFontSizes(i.createTheme(d));exports.colors=o.colors;exports.ThemedBox=j;exports.default=C;exports.themeOptions=d;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../src/theme/ThemedBox.tsx","../../src/theme/index.ts"],"sourcesContent":["import {\n Box,\n type BoxProps,\n type CSSObject,\n type PaletteColor,\n type SxProps,\n type ThemeOptions,\n ThemeProvider,\n buttonClasses,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\nimport {\n Circle as CircleIcon,\n Hexagon as HexagonIcon,\n} from \"@mui/icons-material\"\nimport type { CommonProps } from \"@mui/material/OverridableComponent\"\nimport type React from \"react\"\n\nimport { getStyleOverrides, includesClassNames } from \"../utils/theme\"\nimport { primary, secondary, tertiary } from \"./colors\"\nimport type Components from \"./components/_components\"\nimport palette from \"./palette\"\nimport { themeOptions } from \".\"\n\nexport interface ThemedBoxProps extends BoxProps {\n options?: ThemeOptions\n withShapes?: boolean\n userType: \"teacher\" | \"student\" | \"independent\"\n bgcolor?: string\n}\n\nconst ThemedBox: React.FC<ThemedBoxProps> = ({\n options = themeOptions,\n withShapes = false,\n userType,\n bgcolor,\n children,\n sx,\n ...otherBoxProps\n}) => {\n let circleColor: \"primary\" | \"secondary\" | \"tertiary\"\n let hexagonColor: \"primary\" | \"secondary\" | \"tertiary\"\n let contrastText: string\n switch (userType) {\n case \"teacher\":\n bgcolor = bgcolor ?? primary[400]\n circleColor = \"tertiary\"\n hexagonColor = \"secondary\"\n contrastText = (palette.primary as PaletteColor).contrastText\n break\n case \"student\":\n bgcolor = bgcolor ?? tertiary[500]\n circleColor = \"secondary\"\n hexagonColor = \"primary\"\n contrastText = palette.tertiary.contrastText\n break\n case \"independent\":\n bgcolor = bgcolor ?? secondary[500]\n circleColor = \"primary\"\n hexagonColor = \"tertiary\"\n contrastText = (palette.secondary as PaletteColor).contrastText\n break\n }\n\n const commonIconSxProps: SxProps = {\n display: { xs: \"none\", md: \"block\" },\n fontSize: \"180px\",\n position: \"absolute\",\n }\n\n const fontStyleOverrides = {\n color: contrastText,\n textDecorationColor: contrastText,\n }\n\n function overrideStyles(\n ownerState: CommonProps,\n styleOverrides: CSSObject,\n componentKey: keyof Components,\n muiClassName: string = \"root\",\n ): CSSObject {\n return {\n // Get the original styles.\n ...getStyleOverrides(\n ownerState,\n componentKey,\n muiClassName,\n options.components,\n ),\n // Override styles unless the class name 'no-override' is set.\n ...(!includesClassNames(ownerState, [\"no-override\"]) && styleOverrides),\n }\n }\n\n const theme = responsiveFontSizes(\n createTheme({\n ...options,\n components: {\n ...options.components,\n MuiTypography: {\n ...options.components?.MuiTypography,\n styleOverrides: {\n ...options.components?.MuiTypography?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiTypography\",\n ),\n },\n },\n MuiFormHelperText: {\n ...options.components?.MuiFormHelperText,\n styleOverrides: {\n ...options.components?.MuiFormHelperText?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiFormHelperText\",\n ),\n },\n },\n MuiLink: {\n ...options.components?.MuiLink,\n styleOverrides: {\n ...options.components?.MuiLink?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiLink\",\n ),\n },\n },\n MuiButton: {\n ...options.components?.MuiButton,\n styleOverrides: {\n ...options.components?.MuiButton?.styleOverrides,\n contained: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...(userType === \"independent\" && {\n backgroundColor: \"white\",\n \"&:hover\": {\n backgroundColor: \"#f6f5f5\",\n boxShadow: [\n \"0px 6px 10px 0px rgba(0, 0, 0, 0.14)\",\n \"0px 1px 18px 0px rgba(0, 0, 0, 0.12)\",\n \"0px 3px 5px 0px rgba(0, 0, 0, 0.2);\",\n ].join(),\n },\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: \"white\",\n color: contrastText,\n },\n }),\n },\n \"MuiButton\",\n \"contained\",\n ),\n outlined: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n border: `2px solid ${contrastText}`,\n \"&:hover\": {\n border: `2px solid ${contrastText}`,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n },\n },\n \"MuiButton\",\n \"outlined\",\n ),\n },\n },\n MuiCheckbox: {\n ...options.components?.MuiCheckbox,\n styleOverrides: {\n ...options.components?.MuiCheckbox?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n color: `${contrastText} !important`,\n },\n \"MuiCheckbox\",\n ),\n },\n },\n MuiSvgIcon: {\n ...options.components?.MuiSvgIcon,\n styleOverrides: {\n ...options.components?.MuiSvgIcon?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n \"&.checkbox-error\": {\n color: `${contrastText} !important`,\n },\n },\n \"MuiSvgIcon\",\n ),\n },\n },\n },\n }),\n )\n\n return (\n <ThemeProvider theme={theme}>\n <Box\n sx={{\n ...sx,\n ...(withShapes && {\n paddingY: { xs: 2, sm: 3, md: 5 },\n paddingX: { xs: 2, sm: 5, md: 10 },\n marginX: { md: \"90px\" },\n }),\n bgcolor,\n alignItems: \"center\",\n position: \"relative\",\n }}\n {...otherBoxProps}\n >\n {withShapes && (\n <>\n <CircleIcon\n color={circleColor}\n sx={{\n ...commonIconSxProps,\n top: \"5%\",\n left: \"0%\",\n transform: \"translate(-60%, 0%)\",\n }}\n />\n <HexagonIcon\n color={hexagonColor}\n sx={{\n ...commonIconSxProps,\n bottom: \"5%\",\n right: \"0%\",\n transform: \"translate(60%, 0%) rotate(90deg)\",\n }}\n />\n </>\n )}\n {children}\n </Box>\n </ThemeProvider>\n )\n}\n\nexport default ThemedBox\n","import {\n type ThemeOptions,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\n\nimport components from \"./components\"\nimport palette from \"./palette\"\nimport spacing from \"./spacing\"\nimport typography from \"./typography\"\n\nexport * from \"./palette\"\nexport * from \"./ThemedBox\"\nexport { default as ThemedBox } from \"./ThemedBox\"\n\nexport const themeOptions: ThemeOptions = {\n palette,\n components,\n spacing,\n typography,\n}\n\nconst theme = responsiveFontSizes(createTheme(themeOptions))\n\nexport default theme\n"],"names":["ThemedBox","options","themeOptions","withShapes","userType","bgcolor","children","sx","otherBoxProps","circleColor","hexagonColor","contrastText","primary","palette","tertiary","secondary","commonIconSxProps","fontStyleOverrides","overrideStyles","ownerState","styleOverrides","componentKey","muiClassName","getStyleOverrides","includesClassNames","theme","responsiveFontSizes","createTheme","buttonClasses","jsx","ThemeProvider","jsxs","Box","Fragment","CircleIcon","HexagonIcon","components","spacing","typography"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/theme/ThemedBox.tsx","../../src/theme/index.ts"],"sourcesContent":["import {\n Box,\n type BoxProps,\n type CSSObject,\n type PaletteColor,\n type SxProps,\n type ThemeOptions,\n ThemeProvider,\n buttonClasses,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\nimport {\n Circle as CircleIcon,\n Hexagon as HexagonIcon,\n} from \"@mui/icons-material\"\nimport type { CommonProps } from \"@mui/material/OverridableComponent\"\nimport type React from \"react\"\n\nimport { getStyleOverrides, includesClassNames } from \"../utils/theme\"\nimport { primary, secondary, tertiary } from \"./colors\"\nimport type Components from \"./components/_components\"\nimport palette from \"./palette\"\nimport { themeOptions } from \".\"\n\nexport interface ThemedBoxProps extends BoxProps {\n options?: ThemeOptions\n withShapes?: boolean\n userType: \"teacher\" | \"student\" | \"independent\"\n bgcolor?: string\n}\n\nconst ThemedBox: React.FC<ThemedBoxProps> = ({\n options = themeOptions,\n withShapes = false,\n userType,\n bgcolor,\n children,\n sx,\n ...otherBoxProps\n}) => {\n let circleColor: \"primary\" | \"secondary\" | \"tertiary\"\n let hexagonColor: \"primary\" | \"secondary\" | \"tertiary\"\n let contrastText: string\n switch (userType) {\n case \"teacher\":\n bgcolor = bgcolor ?? primary[400]\n circleColor = \"tertiary\"\n hexagonColor = \"secondary\"\n contrastText = (palette.primary as PaletteColor).contrastText\n break\n case \"student\":\n bgcolor = bgcolor ?? tertiary[500]\n circleColor = \"secondary\"\n hexagonColor = \"primary\"\n contrastText = palette.tertiary.contrastText\n break\n case \"independent\":\n bgcolor = bgcolor ?? secondary[500]\n circleColor = \"primary\"\n hexagonColor = \"tertiary\"\n contrastText = (palette.secondary as PaletteColor).contrastText\n break\n }\n\n const commonIconSxProps: SxProps = {\n display: { xs: \"none\", md: \"block\" },\n fontSize: \"180px\",\n position: \"absolute\",\n }\n\n const fontStyleOverrides = {\n color: contrastText,\n textDecorationColor: contrastText,\n }\n\n function overrideStyles(\n ownerState: CommonProps,\n styleOverrides: CSSObject,\n componentKey: keyof Components,\n muiClassName: string = \"root\",\n ): CSSObject {\n return {\n // Get the original styles.\n ...getStyleOverrides(\n ownerState,\n componentKey,\n muiClassName,\n options.components,\n ),\n // Override styles unless the class name 'no-override' is set.\n ...(!includesClassNames(ownerState, [\"no-override\"]) && styleOverrides),\n }\n }\n\n const theme = responsiveFontSizes(\n createTheme({\n ...options,\n components: {\n ...options.components,\n MuiTypography: {\n ...options.components?.MuiTypography,\n styleOverrides: {\n ...options.components?.MuiTypography?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiTypography\",\n ),\n },\n },\n MuiFormHelperText: {\n ...options.components?.MuiFormHelperText,\n styleOverrides: {\n ...options.components?.MuiFormHelperText?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiFormHelperText\",\n ),\n },\n },\n MuiLink: {\n ...options.components?.MuiLink,\n styleOverrides: {\n ...options.components?.MuiLink?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n },\n \"MuiLink\",\n ),\n },\n },\n MuiButton: {\n ...options.components?.MuiButton,\n styleOverrides: {\n ...options.components?.MuiButton?.styleOverrides,\n contained: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...(userType === \"independent\" && {\n backgroundColor: \"white\",\n \"&:hover\": {\n backgroundColor: \"#f6f5f5\",\n boxShadow: [\n \"0px 6px 10px 0px rgba(0, 0, 0, 0.14)\",\n \"0px 1px 18px 0px rgba(0, 0, 0, 0.12)\",\n \"0px 3px 5px 0px rgba(0, 0, 0, 0.2);\",\n ].join(),\n },\n [`&.${buttonClasses.disabled}`]: {\n backgroundColor: \"white\",\n color: contrastText,\n },\n }),\n },\n \"MuiButton\",\n \"contained\",\n ),\n outlined: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n ...fontStyleOverrides,\n border: `2px solid ${contrastText}`,\n \"&:hover\": {\n border: `2px solid ${contrastText}`,\n backgroundColor: \"transparent\",\n textDecoration: \"underline\",\n },\n },\n \"MuiButton\",\n \"outlined\",\n ),\n },\n },\n MuiCheckbox: {\n ...options.components?.MuiCheckbox,\n styleOverrides: {\n ...options.components?.MuiCheckbox?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n color: `${contrastText} !important`,\n },\n \"MuiCheckbox\",\n ),\n },\n },\n MuiSvgIcon: {\n ...options.components?.MuiSvgIcon,\n styleOverrides: {\n ...options.components?.MuiSvgIcon?.styleOverrides,\n root: ({ ownerState }) =>\n overrideStyles(\n ownerState,\n {\n \"&.checkbox-error\": {\n color: `${contrastText} !important`,\n },\n },\n \"MuiSvgIcon\",\n ),\n },\n },\n },\n }),\n )\n\n return (\n <ThemeProvider theme={theme}>\n <Box\n sx={{\n ...sx,\n ...(withShapes && {\n paddingY: { xs: 2, sm: 3, md: 5 },\n paddingX: { xs: 2, sm: 5, md: 10 },\n marginX: { md: \"90px\" },\n }),\n bgcolor,\n alignItems: \"center\",\n position: \"relative\",\n }}\n {...otherBoxProps}\n >\n {withShapes && (\n <>\n <CircleIcon\n color={circleColor}\n sx={{\n ...commonIconSxProps,\n top: \"5%\",\n left: \"0%\",\n transform: \"translate(-60%, 0%)\",\n }}\n />\n <HexagonIcon\n color={hexagonColor}\n sx={{\n ...commonIconSxProps,\n bottom: \"5%\",\n right: \"0%\",\n transform: \"translate(60%, 0%) rotate(90deg)\",\n }}\n />\n </>\n )}\n {children}\n </Box>\n </ThemeProvider>\n )\n}\n\nexport default ThemedBox\n","import {\n type ThemeOptions,\n createTheme,\n responsiveFontSizes,\n} from \"@mui/material\"\n\nimport components from \"./components\"\nimport palette from \"./palette\"\nimport spacing from \"./spacing\"\nimport typography from \"./typography\"\n\nexport * as colors from \"./colors\"\nexport * from \"./palette\"\nexport * from \"./ThemedBox\"\nexport { default as ThemedBox } from \"./ThemedBox\"\n\nexport const themeOptions: ThemeOptions = {\n palette,\n components,\n spacing,\n typography,\n}\n\nconst theme = responsiveFontSizes(createTheme(themeOptions))\n\nexport default theme\n"],"names":["ThemedBox","options","themeOptions","withShapes","userType","bgcolor","children","sx","otherBoxProps","circleColor","hexagonColor","contrastText","primary","palette","tertiary","secondary","commonIconSxProps","fontStyleOverrides","overrideStyles","ownerState","styleOverrides","componentKey","muiClassName","getStyleOverrides","includesClassNames","theme","responsiveFontSizes","createTheme","buttonClasses","jsx","ThemeProvider","jsxs","Box","Fragment","CircleIcon","HexagonIcon","components","spacing","typography"],"mappings":"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"}
|
package/dist/theme/index.d.ts
CHANGED
package/dist/theme/index.es.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { responsiveFontSizes as x, createTheme as u, buttonClasses as O, ThemeProvider as C, Box as T } from "@mui/material";
|
|
2
|
-
import { g as S, i as j, t as B, s as F, c as I } from "../index-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { g as S, i as j, t as B, s as F, c as I } from "../index-Brh3Kbv6.js";
|
|
3
|
+
import { s as H, p as m, t as $, a as L } from "../palette-CYwuLBW7.js";
|
|
4
|
+
import { c as G } from "../palette-CYwuLBW7.js";
|
|
5
|
+
import { j as s } from "../jsx-runtime-XvoU0p7t.js";
|
|
5
6
|
import { Circle as w, Hexagon as z } from "@mui/icons-material";
|
|
6
7
|
const R = ({
|
|
7
8
|
options: r = y,
|
|
8
|
-
withShapes:
|
|
9
|
-
userType:
|
|
10
|
-
bgcolor:
|
|
9
|
+
withShapes: p = !1,
|
|
10
|
+
userType: d,
|
|
11
|
+
bgcolor: t,
|
|
11
12
|
children: h,
|
|
12
13
|
sx: v,
|
|
13
14
|
...M
|
|
14
15
|
}) => {
|
|
15
|
-
let i, a,
|
|
16
|
-
switch (
|
|
16
|
+
let i, a, o;
|
|
17
|
+
switch (d) {
|
|
17
18
|
case "teacher":
|
|
18
|
-
|
|
19
|
+
t = t ?? L[400], i = "tertiary", a = "secondary", o = m.primary.contrastText;
|
|
19
20
|
break;
|
|
20
21
|
case "student":
|
|
21
|
-
|
|
22
|
+
t = t ?? $[500], i = "secondary", a = "primary", o = m.tertiary.contrastText;
|
|
22
23
|
break;
|
|
23
24
|
case "independent":
|
|
24
|
-
|
|
25
|
+
t = t ?? H[500], i = "primary", a = "tertiary", o = m.secondary.contrastText;
|
|
25
26
|
break;
|
|
26
27
|
}
|
|
27
28
|
const l = {
|
|
@@ -29,16 +30,16 @@ const R = ({
|
|
|
29
30
|
fontSize: "180px",
|
|
30
31
|
position: "absolute"
|
|
31
32
|
}, c = {
|
|
32
|
-
color:
|
|
33
|
-
textDecorationColor:
|
|
33
|
+
color: o,
|
|
34
|
+
textDecorationColor: o
|
|
34
35
|
};
|
|
35
|
-
function n(e, b,
|
|
36
|
+
function n(e, b, f, k = "root") {
|
|
36
37
|
return {
|
|
37
38
|
// Get the original styles.
|
|
38
39
|
...S(
|
|
39
40
|
e,
|
|
40
|
-
k,
|
|
41
41
|
f,
|
|
42
|
+
k,
|
|
42
43
|
r.components
|
|
43
44
|
),
|
|
44
45
|
// Override styles unless the class name 'no-override' is set.
|
|
@@ -96,7 +97,7 @@ const R = ({
|
|
|
96
97
|
contained: ({ ownerState: e }) => n(
|
|
97
98
|
e,
|
|
98
99
|
{
|
|
99
|
-
...
|
|
100
|
+
...d === "independent" && {
|
|
100
101
|
backgroundColor: "white",
|
|
101
102
|
"&:hover": {
|
|
102
103
|
backgroundColor: "#f6f5f5",
|
|
@@ -108,7 +109,7 @@ const R = ({
|
|
|
108
109
|
},
|
|
109
110
|
[`&.${O.disabled}`]: {
|
|
110
111
|
backgroundColor: "white",
|
|
111
|
-
color:
|
|
112
|
+
color: o
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
115
|
},
|
|
@@ -119,9 +120,9 @@ const R = ({
|
|
|
119
120
|
e,
|
|
120
121
|
{
|
|
121
122
|
...c,
|
|
122
|
-
border: `2px solid ${
|
|
123
|
+
border: `2px solid ${o}`,
|
|
123
124
|
"&:hover": {
|
|
124
|
-
border: `2px solid ${
|
|
125
|
+
border: `2px solid ${o}`,
|
|
125
126
|
backgroundColor: "transparent",
|
|
126
127
|
textDecoration: "underline"
|
|
127
128
|
}
|
|
@@ -138,7 +139,7 @@ const R = ({
|
|
|
138
139
|
root: ({ ownerState: e }) => n(
|
|
139
140
|
e,
|
|
140
141
|
{
|
|
141
|
-
color: `${
|
|
142
|
+
color: `${o} !important`
|
|
142
143
|
},
|
|
143
144
|
"MuiCheckbox"
|
|
144
145
|
)
|
|
@@ -152,7 +153,7 @@ const R = ({
|
|
|
152
153
|
e,
|
|
153
154
|
{
|
|
154
155
|
"&.checkbox-error": {
|
|
155
|
-
color: `${
|
|
156
|
+
color: `${o} !important`
|
|
156
157
|
}
|
|
157
158
|
},
|
|
158
159
|
"MuiSvgIcon"
|
|
@@ -167,18 +168,18 @@ const R = ({
|
|
|
167
168
|
{
|
|
168
169
|
sx: {
|
|
169
170
|
...v,
|
|
170
|
-
...
|
|
171
|
+
...p && {
|
|
171
172
|
paddingY: { xs: 2, sm: 3, md: 5 },
|
|
172
173
|
paddingX: { xs: 2, sm: 5, md: 10 },
|
|
173
174
|
marginX: { md: "90px" }
|
|
174
175
|
},
|
|
175
|
-
bgcolor:
|
|
176
|
+
bgcolor: t,
|
|
176
177
|
alignItems: "center",
|
|
177
178
|
position: "relative"
|
|
178
179
|
},
|
|
179
180
|
...M,
|
|
180
181
|
children: [
|
|
181
|
-
|
|
182
|
+
p && /* @__PURE__ */ s.jsxs(s.Fragment, { children: [
|
|
182
183
|
/* @__PURE__ */ s.jsx(
|
|
183
184
|
w,
|
|
184
185
|
{
|
|
@@ -209,13 +210,14 @@ const R = ({
|
|
|
209
210
|
}
|
|
210
211
|
) });
|
|
211
212
|
}, y = {
|
|
212
|
-
palette:
|
|
213
|
+
palette: m,
|
|
213
214
|
components: I,
|
|
214
215
|
spacing: F,
|
|
215
216
|
typography: B
|
|
216
217
|
}, Y = x(u(y));
|
|
217
218
|
export {
|
|
218
219
|
R as ThemedBox,
|
|
220
|
+
G as colors,
|
|
219
221
|
Y as default,
|
|
220
222
|
y as themeOptions
|
|
221
223
|
};
|