@tamagui/cli 1.14.8 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/cjs/build.js.map +2 -2
  2. package/dist/cjs/cli.js +8 -2
  3. package/dist/cjs/cli.js.map +2 -2
  4. package/dist/cjs/dev/createDevServer.js.map +2 -2
  5. package/dist/cjs/dev.js.map +2 -2
  6. package/dist/cjs/generate.js.map +2 -2
  7. package/dist/cjs/index.js +0 -6
  8. package/dist/cjs/index.js.map +2 -2
  9. package/dist/cjs/studio.js +54 -42
  10. package/dist/cjs/studio.js.map +3 -3
  11. package/dist/cjs/tamaguiConfigUtils.js +34 -12
  12. package/dist/cjs/tamaguiConfigUtils.js.map +3 -3
  13. package/dist/cjs/test.js.map +2 -2
  14. package/dist/cjs/utils.js +0 -1
  15. package/dist/cjs/utils.js.map +2 -2
  16. package/dist/cjs/vendor/repack/dev-server/src/plugins/wss/wssPlugin.js +0 -1
  17. package/dist/cjs/vendor/repack/dev-server/src/plugins/wss/wssPlugin.js.map +2 -2
  18. package/dist/esm/build.js.map +2 -2
  19. package/dist/esm/build.mjs.map +2 -2
  20. package/dist/esm/cli.js +8 -2
  21. package/dist/esm/cli.js.map +2 -2
  22. package/dist/esm/cli.mjs +8 -2
  23. package/dist/esm/cli.mjs.map +2 -2
  24. package/dist/esm/dev/createDevServer.js.map +2 -2
  25. package/dist/esm/dev/createDevServer.mjs.map +2 -2
  26. package/dist/esm/dev.js.map +2 -2
  27. package/dist/esm/dev.mjs.map +2 -2
  28. package/dist/esm/generate.js.map +2 -2
  29. package/dist/esm/generate.mjs.map +2 -2
  30. package/dist/esm/index.js +0 -6
  31. package/dist/esm/index.js.map +2 -2
  32. package/dist/esm/index.mjs +0 -6
  33. package/dist/esm/index.mjs.map +2 -2
  34. package/dist/esm/studio.js +54 -42
  35. package/dist/esm/studio.js.map +2 -2
  36. package/dist/esm/studio.mjs +54 -42
  37. package/dist/esm/studio.mjs.map +2 -2
  38. package/dist/esm/tamaguiConfigUtils.js +34 -12
  39. package/dist/esm/tamaguiConfigUtils.js.map +2 -2
  40. package/dist/esm/tamaguiConfigUtils.mjs +34 -12
  41. package/dist/esm/tamaguiConfigUtils.mjs.map +2 -2
  42. package/dist/esm/test.js.map +2 -2
  43. package/dist/esm/test.mjs.map +2 -2
  44. package/dist/esm/utils.js +0 -1
  45. package/dist/esm/utils.js.map +2 -2
  46. package/dist/esm/utils.mjs +0 -1
  47. package/dist/esm/utils.mjs.map +2 -2
  48. package/dist/esm/vendor/repack/dev-server/src/plugins/wss/wssPlugin.js +0 -1
  49. package/dist/esm/vendor/repack/dev-server/src/plugins/wss/wssPlugin.js.map +2 -2
  50. package/dist/esm/vendor/repack/dev-server/src/plugins/wss/wssPlugin.mjs +0 -1
  51. package/dist/esm/vendor/repack/dev-server/src/plugins/wss/wssPlugin.mjs.map +2 -2
  52. package/package.json +9 -9
  53. package/src/build.ts +2 -3
  54. package/src/cli.ts +8 -2
  55. package/src/dev/createDevServer.ts +3 -2
  56. package/src/dev.ts +2 -2
  57. package/src/generate.ts +5 -5
  58. package/src/index.ts +0 -7
  59. package/src/studio.ts +61 -47
  60. package/src/tamaguiConfigUtils.ts +38 -42
  61. package/src/test.ts +2 -2
  62. package/src/utils.ts +3 -7
  63. package/src/vendor/repack/dev-server/src/plugins/wss/wssPlugin.ts +0 -2
  64. package/types/build.d.ts +2 -2
  65. package/types/build.d.ts.map +1 -1
  66. package/types/dev/createDevServer.d.ts +2 -2
  67. package/types/dev/createDevServer.d.ts.map +1 -1
  68. package/types/dev.d.ts +2 -2
  69. package/types/dev.d.ts.map +1 -1
  70. package/types/generate.d.ts +3 -3
  71. package/types/generate.d.ts.map +1 -1
  72. package/types/index.d.ts.map +1 -1
  73. package/types/studio.d.ts +2 -2
  74. package/types/studio.d.ts.map +1 -1
  75. package/types/tamaguiConfigUtils.d.ts +3 -3
  76. package/types/tamaguiConfigUtils.d.ts.map +1 -1
  77. package/types/test.d.ts +2 -2
  78. package/types/test.d.ts.map +1 -1
  79. package/types/utils.d.ts +2 -2
  80. package/types/utils.d.ts.map +1 -1
  81. package/types/vendor/repack/dev-server/src/plugins/compiler/compilerPlugin.d.ts +1 -2
  82. package/types/vendor/repack/dev-server/src/plugins/compiler/compilerPlugin.d.ts.map +1 -1
  83. package/types/vendor/repack/dev-server/src/plugins/devtools/devtoolsPlugin.d.ts +1 -2
  84. package/types/vendor/repack/dev-server/src/plugins/devtools/devtoolsPlugin.d.ts.map +1 -1
  85. package/types/vendor/repack/dev-server/src/plugins/favicon/faviconPlugin.d.ts +1 -2
  86. package/types/vendor/repack/dev-server/src/plugins/favicon/faviconPlugin.d.ts.map +1 -1
  87. package/types/vendor/repack/dev-server/src/plugins/multipart/multipartPlugin.d.ts +1 -2
  88. package/types/vendor/repack/dev-server/src/plugins/multipart/multipartPlugin.d.ts.map +1 -1
  89. package/types/vendor/repack/dev-server/src/plugins/symbolicate/sybmolicatePlugin.d.ts +1 -2
  90. package/types/vendor/repack/dev-server/src/plugins/symbolicate/sybmolicatePlugin.d.ts.map +1 -1
  91. package/types/vendor/repack/dev-server/src/plugins/wss/wssPlugin.d.ts +1 -2
  92. package/types/vendor/repack/dev-server/src/plugins/wss/wssPlugin.d.ts.map +1 -1
  93. package/src/types.ts +0 -31
  94. package/types/types.d.ts +0 -30
@@ -6,7 +6,6 @@ import { WebSocketEventsServer } from "./servers/WebSocketEventsServer";
6
6
  import { WebSocketHMRServer } from "./servers/WebSocketHMRServer";
7
7
  import { WebSocketMessageServer } from "./servers/WebSocketMessageServer";
8
8
  import { WebSocketRouter } from "./WebSocketRouter";
9
- console.log("HermesInspectorProxy disabled");
10
9
  async function wssPlugin(instance, {
11
10
  options,
12
11
  delegate
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../src/vendor/repack/dev-server/src/plugins/wss/wssPlugin.ts"],
4
- "sourcesContent": ["import type { FastifyInstance } from 'fastify'\nimport fastifyPlugin from 'fastify-plugin'\n\nimport type { Server } from '../../types'\n// import { HermesInspectorProxy } from './servers/HermesInspectorProxy'\nimport { WebSocketApiServer } from './servers/WebSocketApiServer'\nimport { WebSocketDebuggerServer } from './servers/WebSocketDebuggerServer'\nimport { WebSocketDevClientServer } from './servers/WebSocketDevClientServer'\nimport { WebSocketEventsServer } from './servers/WebSocketEventsServer'\nimport { WebSocketHMRServer } from './servers/WebSocketHMRServer'\nimport { WebSocketMessageServer } from './servers/WebSocketMessageServer'\nimport { WebSocketRouter } from './WebSocketRouter'\n\nconsole.log('HermesInspectorProxy disabled')\n\ndeclare module 'fastify' {\n interface FastifyInstance {\n wss: {\n debuggerServer: WebSocketDebuggerServer\n devClientServer: WebSocketDevClientServer\n messageServer: WebSocketMessageServer\n eventsServer: WebSocketEventsServer\n // hermesInspectorProxy: HermesInspectorProxy\n apiServer: WebSocketApiServer\n hmrServer: WebSocketHMRServer\n router: WebSocketRouter\n }\n }\n}\n\nasync function wssPlugin(\n instance: FastifyInstance,\n {\n options,\n delegate,\n }: {\n options: Server.Options\n delegate: Server.Delegate\n }\n) {\n const router = new WebSocketRouter(instance)\n\n console.log('setting up websocket')\n\n const debuggerServer = new WebSocketDebuggerServer(instance)\n const devClientServer = new WebSocketDevClientServer(instance)\n const messageServer = new WebSocketMessageServer(instance)\n const eventsServer = new WebSocketEventsServer(instance, {\n webSocketMessageServer: messageServer,\n })\n // const hermesInspectorProxy = new HermesInspectorProxy(instance, options)\n const apiServer = new WebSocketApiServer(instance)\n const hmrServer = new WebSocketHMRServer(instance, delegate.hmr)\n\n router.registerServer(debuggerServer)\n router.registerServer(devClientServer)\n router.registerServer(messageServer)\n router.registerServer(eventsServer)\n // router.registerServer(hermesInspectorProxy)\n router.registerServer(apiServer)\n router.registerServer(hmrServer)\n\n instance.decorate('wss', {\n debuggerServer,\n devClientServer,\n messageServer,\n eventsServer,\n // hermesInspectorProxy,\n apiServer,\n hmrServer,\n router,\n })\n}\n\nexport default fastifyPlugin(wssPlugin, {\n name: 'wss-plugin',\n})\n"],
5
- "mappings": "AACA,OAAO,mBAAmB;AAI1B,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS,gCAAgC;AACzC,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,8BAA8B;AACvC,SAAS,uBAAuB;AAEhC,QAAQ,IAAI,+BAA+B;AAiB3C,eAAe,UACb,UACA;AAAA,EACE;AAAA,EACA;AACF,GAIA;AACA,QAAM,SAAS,IAAI,gBAAgB,QAAQ;AAE3C,UAAQ,IAAI,sBAAsB;AAElC,QAAM,iBAAiB,IAAI,wBAAwB,QAAQ;AAC3D,QAAM,kBAAkB,IAAI,yBAAyB,QAAQ;AAC7D,QAAM,gBAAgB,IAAI,uBAAuB,QAAQ;AACzD,QAAM,eAAe,IAAI,sBAAsB,UAAU;AAAA,IACvD,wBAAwB;AAAA,EAC1B,CAAC;AAED,QAAM,YAAY,IAAI,mBAAmB,QAAQ;AACjD,QAAM,YAAY,IAAI,mBAAmB,UAAU,SAAS,GAAG;AAE/D,SAAO,eAAe,cAAc;AACpC,SAAO,eAAe,eAAe;AACrC,SAAO,eAAe,aAAa;AACnC,SAAO,eAAe,YAAY;AAElC,SAAO,eAAe,SAAS;AAC/B,SAAO,eAAe,SAAS;AAE/B,WAAS,SAAS,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,IAAO,oBAAQ,cAAc,WAAW;AAAA,EACtC,MAAM;AACR,CAAC;",
4
+ "sourcesContent": ["import type { FastifyInstance } from 'fastify'\nimport fastifyPlugin from 'fastify-plugin'\n\nimport type { Server } from '../../types'\n// import { HermesInspectorProxy } from './servers/HermesInspectorProxy'\nimport { WebSocketApiServer } from './servers/WebSocketApiServer'\nimport { WebSocketDebuggerServer } from './servers/WebSocketDebuggerServer'\nimport { WebSocketDevClientServer } from './servers/WebSocketDevClientServer'\nimport { WebSocketEventsServer } from './servers/WebSocketEventsServer'\nimport { WebSocketHMRServer } from './servers/WebSocketHMRServer'\nimport { WebSocketMessageServer } from './servers/WebSocketMessageServer'\nimport { WebSocketRouter } from './WebSocketRouter'\n\ndeclare module 'fastify' {\n interface FastifyInstance {\n wss: {\n debuggerServer: WebSocketDebuggerServer\n devClientServer: WebSocketDevClientServer\n messageServer: WebSocketMessageServer\n eventsServer: WebSocketEventsServer\n // hermesInspectorProxy: HermesInspectorProxy\n apiServer: WebSocketApiServer\n hmrServer: WebSocketHMRServer\n router: WebSocketRouter\n }\n }\n}\n\nasync function wssPlugin(\n instance: FastifyInstance,\n {\n options,\n delegate,\n }: {\n options: Server.Options\n delegate: Server.Delegate\n }\n) {\n const router = new WebSocketRouter(instance)\n\n console.log('setting up websocket')\n\n const debuggerServer = new WebSocketDebuggerServer(instance)\n const devClientServer = new WebSocketDevClientServer(instance)\n const messageServer = new WebSocketMessageServer(instance)\n const eventsServer = new WebSocketEventsServer(instance, {\n webSocketMessageServer: messageServer,\n })\n // const hermesInspectorProxy = new HermesInspectorProxy(instance, options)\n const apiServer = new WebSocketApiServer(instance)\n const hmrServer = new WebSocketHMRServer(instance, delegate.hmr)\n\n router.registerServer(debuggerServer)\n router.registerServer(devClientServer)\n router.registerServer(messageServer)\n router.registerServer(eventsServer)\n // router.registerServer(hermesInspectorProxy)\n router.registerServer(apiServer)\n router.registerServer(hmrServer)\n\n instance.decorate('wss', {\n debuggerServer,\n devClientServer,\n messageServer,\n eventsServer,\n // hermesInspectorProxy,\n apiServer,\n hmrServer,\n router,\n })\n}\n\nexport default fastifyPlugin(wssPlugin, {\n name: 'wss-plugin',\n})\n"],
5
+ "mappings": "AACA,OAAO,mBAAmB;AAI1B,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS,gCAAgC;AACzC,SAAS,6BAA6B;AACtC,SAAS,0BAA0B;AACnC,SAAS,8BAA8B;AACvC,SAAS,uBAAuB;AAiBhC,eAAe,UACb,UACA;AAAA,EACE;AAAA,EACA;AACF,GAIA;AACA,QAAM,SAAS,IAAI,gBAAgB,QAAQ;AAE3C,UAAQ,IAAI,sBAAsB;AAElC,QAAM,iBAAiB,IAAI,wBAAwB,QAAQ;AAC3D,QAAM,kBAAkB,IAAI,yBAAyB,QAAQ;AAC7D,QAAM,gBAAgB,IAAI,uBAAuB,QAAQ;AACzD,QAAM,eAAe,IAAI,sBAAsB,UAAU;AAAA,IACvD,wBAAwB;AAAA,EAC1B,CAAC;AAED,QAAM,YAAY,IAAI,mBAAmB,QAAQ;AACjD,QAAM,YAAY,IAAI,mBAAmB,UAAU,SAAS,GAAG;AAE/D,SAAO,eAAe,cAAc;AACpC,SAAO,eAAe,eAAe;AACrC,SAAO,eAAe,aAAa;AACnC,SAAO,eAAe,YAAY;AAElC,SAAO,eAAe,SAAS;AAC/B,SAAO,eAAe,SAAS;AAE/B,WAAS,SAAS,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,IAAO,oBAAQ,cAAc,WAAW;AAAA,EACtC,MAAM;AACR,CAAC;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/cli",
3
- "version": "1.14.8",
3
+ "version": "1.15.0",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "module": "dist/esm",
@@ -36,11 +36,14 @@
36
36
  "@callstack/repack-debugger-app": "^1.0.0",
37
37
  "@fastify/sensible": "^4.1.0",
38
38
  "@fastify/static": "^5.0.2",
39
- "@tamagui/build": "1.14.8",
40
- "@tamagui/static": "1.14.8",
41
- "@tamagui/vite-plugin": "1.14.8",
39
+ "@takeout/studio": "1.5.24",
40
+ "@tamagui/build": "1.15.0",
41
+ "@tamagui/static": "1.15.0",
42
+ "@tamagui/types": "1.15.0",
43
+ "@tamagui/vite-plugin": "1.15.0",
42
44
  "@types/compression": "^1.7.2",
43
45
  "@types/morgan": "^1.9.3",
46
+ "@vitejs/plugin-react-swc": "^3.2.0",
44
47
  "arg": "^5.0.2",
45
48
  "chalk": "^4.1.2",
46
49
  "chokidar": "^3.5.2",
@@ -65,13 +68,10 @@
65
68
  "pretty-format": "^28.1.0",
66
69
  "source-map": "^0.7.3",
67
70
  "ts-morph": "^15.1.0",
68
- "typescript": "^4.7.4",
71
+ "typescript": "^5.0.4",
69
72
  "url": "^0.11.0",
70
- "vite": "^4.0.4",
73
+ "vite": "^4.2.1",
71
74
  "ws": "^8.7.0",
72
75
  "zx": "^7.1.1"
73
- },
74
- "devDependencies": {
75
- "@takeout/studio": "1.5.24"
76
76
  }
77
77
  }
package/src/build.ts CHANGED
@@ -2,12 +2,11 @@ import { writeFile } from 'fs'
2
2
  import { basename, dirname, join, resolve } from 'path'
3
3
 
4
4
  import { createExtractor, extractToClassNames, loadTamagui } from '@tamagui/static'
5
+ import { CLIResolvedOptions } from '@tamagui/types'
5
6
  import chokidar from 'chokidar'
6
7
  import { readFile } from 'fs-extra'
7
8
 
8
- import { ResolvedOptions } from './types.js'
9
-
10
- export const build = async (options: ResolvedOptions) => {
9
+ export const build = async (options: CLIResolvedOptions) => {
11
10
  // const tamagui = await loadTamagui(options.tamaguiOptions)
12
11
 
13
12
  const entry = options.pkgJson.source
package/src/cli.ts CHANGED
@@ -8,6 +8,7 @@ import { disposeAll, getOptions } from './utils.js'
8
8
  process.on(_, () => {
9
9
  process.stdout.write(`bye\n`)
10
10
  disposeAll()
11
+ process.exit()
11
12
  })
12
13
  })
13
14
 
@@ -61,14 +62,19 @@ const COMMAND_MAP = {
61
62
  studio: {
62
63
  shorthands: ['s'],
63
64
  description: `Studio`,
64
- flags: {},
65
+ flags: {
66
+ '--help': Boolean,
67
+ '--debug': Boolean,
68
+ '--verbose': Boolean,
69
+ '--local': Boolean,
70
+ },
65
71
  async run() {
66
72
  const { _, ...flags } = arg(this.flags)
67
73
  const { studio } = await import('./studio.js')
68
74
  const options = await getOptions({
69
75
  debug: flags['--debug'] ? (flags['--verbose'] ? 'verbose' : true) : false,
70
76
  })
71
- await studio(options)
77
+ await studio(options, !flags['--local'])
72
78
  },
73
79
  },
74
80
  }
@@ -1,11 +1,12 @@
1
1
  import { readFile } from 'fs/promises'
2
2
 
3
- import { ResolvedOptions } from '../types.js'
3
+ import { CLIResolvedOptions } from '@tamagui/types'
4
+
4
5
  import { DEFAULT_PORT } from '../utils/constants.js'
5
6
  import { Server, createServer } from '../vendor/repack/dev-server/src'
6
7
 
7
8
  export async function createDevServer(
8
- options: ResolvedOptions,
9
+ options: CLIResolvedOptions,
9
10
  {
10
11
  indexJson,
11
12
  getIndexBundle,
package/src/dev.ts CHANGED
@@ -2,16 +2,16 @@ import { readFile } from 'fs/promises'
2
2
  import { AddressInfo } from 'net'
3
3
  import { join } from 'path'
4
4
 
5
+ import { CLIResolvedOptions } from '@tamagui/types'
5
6
  import chalk from 'chalk'
6
7
  import fs from 'fs-extra'
7
8
  import { build, createServer } from 'vite'
8
9
 
9
10
  import { createDevServer } from './dev/createDevServer.js'
10
11
  import { watchTamaguiConfig } from './tamaguiConfigUtils.js'
11
- import { ResolvedOptions } from './types.js'
12
12
  import { registerDispose } from './utils.js'
13
13
 
14
- export const dev = async (options: ResolvedOptions) => {
14
+ export const dev = async (options: CLIResolvedOptions) => {
15
15
  const { root, mode, paths } = options
16
16
 
17
17
  process.chdir(process.cwd())
package/src/generate.ts CHANGED
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import { CLIResolvedOptions } from '@tamagui/types'
3
4
  import fs from 'fs-extra'
4
5
  import { Project } from 'ts-morph'
5
6
 
6
- import { ResolvedOptions } from './types.js'
7
7
  import { loadTamagui } from './utils.js'
8
8
 
9
- export async function generateTypes(options: ResolvedOptions) {
9
+ export async function generateTypes(options: CLIResolvedOptions) {
10
10
  const types = await getTypes(options)
11
11
  await fs.writeJSON(options.paths.types, types, {
12
12
  spaces: 2,
13
13
  })
14
14
  }
15
15
 
16
- export async function getTypes(options: ResolvedOptions) {
16
+ export async function getTypes(options: CLIResolvedOptions) {
17
17
  const tamagui = await loadTamagui(options.tamaguiOptions)
18
18
 
19
19
  const uniqueViewExportingPaths = new Set(
20
20
  Object.keys(tamagui.nameToPaths).map((name) => {
21
21
  return `${[...tamagui.nameToPaths[name]][0]}.ts*`
22
- }),
22
+ })
23
23
  )
24
24
 
25
25
  const project = new Project({
@@ -51,7 +51,7 @@ export async function getTypes(options: ResolvedOptions) {
51
51
  }),
52
52
  ]
53
53
  })
54
- }),
54
+ })
55
55
  )
56
56
 
57
57
  // console.log(
package/src/index.ts CHANGED
@@ -1,11 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- process.on('beforeExit', () => {
4
- process.stdout.write(`exiting22123??????`)
5
- })
6
-
7
- process.on('SIGINT', () => {
8
- process.stdout.write(`exiting33123??????`)
9
- })
10
3
 
11
4
  import './cli.js'
package/src/studio.ts CHANGED
@@ -2,74 +2,88 @@ import { createRequire } from 'module'
2
2
  import { AddressInfo } from 'net'
3
3
  import { dirname } from 'path'
4
4
 
5
+ import { CLIResolvedOptions } from '@tamagui/types'
5
6
  import { tamaguiPlugin } from '@tamagui/vite-plugin'
7
+ import viteReactPlugin from '@vitejs/plugin-react-swc'
6
8
  import chalk from 'chalk'
7
9
  import express from 'express'
8
10
  import proxy from 'express-http-proxy'
9
11
  import fs from 'fs-extra'
10
- import morgan from 'morgan'
11
12
  import { createServer } from 'vite'
12
13
 
13
14
  import { watchTamaguiConfig } from './tamaguiConfigUtils.js'
14
- import { ResolvedOptions } from './types.js'
15
15
 
16
16
  const resolve =
17
17
  'url' in import.meta ? createRequire(import.meta.url).resolve : require.resolve
18
18
 
19
- export const studio = async (options: ResolvedOptions) => {
20
- const { default: getPort } = await import('get-port')
21
- const { paths } = options
22
- const root = dirname(resolve('@takeout/studio/entry'))
23
-
24
- const [serverPort, vitePort] = await Promise.all([
25
- getPort({
26
- port: 1421,
27
- }),
28
- getPort({
29
- port: 1422,
30
- }),
31
- ])
32
-
33
- const server = await createServer({
34
- root,
35
- server: {
36
- // open: true,
37
- host: options.host,
38
- port: vitePort,
39
- },
40
- plugins: [
41
- tamaguiPlugin({
42
- components: ['tamagui'],
19
+ export const studio = async (options: CLIResolvedOptions, isRemote = true) => {
20
+ process.env.TAMAGUI_TARGET = 'web'
21
+
22
+ const configWatchPromise = watchTamaguiConfig(options)
23
+ let localServerPromise = new Promise(() => {})
24
+ if (!isRemote) {
25
+ process.env.VITE_IS_LOCAL = '1'
26
+
27
+ process.stdout.on('error', function (err) {
28
+ if (err.code == 'EPIPE') {
29
+ process.exit(0)
30
+ }
31
+ })
32
+ const { default: getPort } = await import('get-port')
33
+ const { paths } = options
34
+ const root = dirname(resolve('@takeout/studio/entry'))
35
+
36
+ const [serverPort, vitePort] = await Promise.all([
37
+ getPort({
38
+ port: 1421,
39
+ }),
40
+ getPort({
41
+ port: 1422,
43
42
  }),
44
- ],
45
- })
43
+ ])
46
44
 
47
- // these can be lazy loaded (eventually should put in own process)
48
- await server.listen()
45
+ const server = await createServer({
46
+ root,
47
+ server: {
48
+ host: options.host,
49
+ port: vitePort,
50
+ hmr: true,
51
+ cors: true,
52
+ },
53
+ plugins: [
54
+ tamaguiPlugin({
55
+ components: ['tamagui'],
56
+ }),
57
+ viteReactPlugin(),
58
+ ],
59
+ })
49
60
 
50
- const configWatchPromise = watchTamaguiConfig(options)
61
+ // these can be lazy loaded (eventually should put in own process)
62
+ await server.listen()
63
+
64
+ const info = server.httpServer?.address() as AddressInfo
51
65
 
52
- const info = server.httpServer?.address() as AddressInfo
66
+ const app = express()
53
67
 
54
- const app = express()
68
+ app.disable('x-powered-by')
69
+ app.use(express.static(paths.dotDir, { maxAge: '2h' }))
70
+ // app.use(morgan('tiny'))
55
71
 
56
- app.disable('x-powered-by')
57
- app.use(express.static(paths.dotDir, { maxAge: '2h' }))
58
- app.use(morgan('tiny'))
72
+ app.get('/conf.json', async (req, res) => {
73
+ const conf = await fs.readJSON(paths.conf)
74
+ res.status(200).json(conf)
75
+ })
59
76
 
60
- app.get('/conf', async (req, res) => {
61
- const conf = await fs.readJSON(paths.conf)
62
- res.status(200).json(conf)
63
- })
77
+ app.use('/', proxy(`${info.address}:${vitePort}`))
64
78
 
65
- app.use('/', proxy(`${info.address}:${vitePort}`))
79
+ const appServer = app.listen(serverPort)
66
80
 
67
- const appServer = app.listen(serverPort)
81
+ localServerPromise = new Promise((res) => appServer.on('close', res))
68
82
 
69
- console.log(`Listening on`, chalk.green(`http://localhost:${serverPort}`))
83
+ console.log(`Listening on`, chalk.green(`http://localhost:${serverPort}`))
84
+ } else {
85
+ console.log(`Open `, chalk.green(`https://studio.tamagui.dev`), ` to load studio`)
86
+ }
70
87
 
71
- await Promise.allSettled([
72
- configWatchPromise,
73
- new Promise((res) => appServer.on('close', res)),
74
- ])
88
+ await Promise.allSettled([configWatchPromise, localServerPromise])
75
89
  }
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { getVariableValue } from '@tamagui/core-node'
4
+ import { CLIResolvedOptions } from '@tamagui/types'
4
5
  import esbuild from 'esbuild'
5
6
  import fs, { ensureDir } from 'fs-extra'
6
7
 
7
- import { ResolvedOptions } from './types.js'
8
8
  import { loadTamagui } from './utils.js'
9
9
 
10
- export async function generateTamaguiConfig(options: ResolvedOptions) {
10
+ export async function generateTamaguiConfig(options: CLIResolvedOptions) {
11
11
  await ensureDir(options.paths.dotDir)
12
12
  const config = await getTamaguiConfig(options)
13
13
  const { components, nameToPaths } = config
@@ -34,10 +34,10 @@ export async function generateTamaguiConfig(options: ResolvedOptions) {
34
34
  }
35
35
 
36
36
  // remove bulky stuff in components
37
- for (const key in components) {
38
- const component = components[key]
37
+ for (const component of components) {
39
38
  for (const _ in component.nameToInfo) {
40
39
  delete component.nameToInfo[_].staticConfig['validStyles']
40
+ delete component.nameToInfo[_].staticConfig['parentStaticConfig']
41
41
  }
42
42
  }
43
43
 
@@ -47,50 +47,46 @@ export async function generateTamaguiConfig(options: ResolvedOptions) {
47
47
  nameToPaths[key] = [...nameToPaths[key]]
48
48
  }
49
49
 
50
- // cleanup other stuff
51
- // @ts-ignore
52
- delete config.tamaguiConfig['Provider']
53
- // @ts-ignore
54
- delete config.tamaguiConfig['fontsParsed']
55
- // @ts-ignore
56
- delete config.tamaguiConfig['getCSS']
57
- // @ts-ignore
58
- delete config.tamaguiConfig['tokensParsed']
59
- // @ts-ignore
60
- delete config.tamaguiConfig['themeConfig']
50
+ // remove stuff we dont need to send
51
+ const { fontsParsed, getCSS, tokensParsed, themeConfig, ...cleanedConfig } =
52
+ config.tamaguiConfig
61
53
 
62
- await fs.writeJSON(options.paths.conf, config, {
63
- spaces: 2,
64
- })
54
+ await fs.writeJSON(
55
+ options.paths.conf,
56
+ {
57
+ ...config,
58
+ tamaguiConfig: cleanedConfig,
59
+ },
60
+ {
61
+ spaces: 2,
62
+ }
63
+ )
65
64
  }
66
65
 
67
- async function getTamaguiConfig(options: ResolvedOptions) {
66
+ async function getTamaguiConfig(options: CLIResolvedOptions) {
68
67
  return loadTamagui(options.tamaguiOptions)
69
68
  }
70
69
 
71
- export async function watchTamaguiConfig(options: ResolvedOptions) {
72
- console.warn('❌ disabling watch conf')
73
- return
74
- // if (!options.tamaguiOptions.config) return
75
- // await generateTamaguiConfig(options)
76
- // const context = await esbuild.context({
77
- // entryPoints: [options.tamaguiOptions.config],
78
- // sourcemap: false,
79
- // // dont output just use esbuild as a watcher
80
- // write: false,
70
+ export async function watchTamaguiConfig(options: CLIResolvedOptions) {
71
+ if (!options.tamaguiOptions.config) return
72
+ await generateTamaguiConfig(options)
73
+ const context = await esbuild.context({
74
+ entryPoints: [options.tamaguiOptions.config],
75
+ sourcemap: false,
76
+ // dont output just use esbuild as a watcher
77
+ write: false,
81
78
 
82
- // plugins: [
83
- // {
84
- // name: `on-rebuild`,
85
- // setup({ onEnd }) {
86
- // onEnd((res) => {
87
- // generateTamaguiConfig(options)
88
- // })
89
- // },
90
- // },
91
- // ],
92
- // })
79
+ plugins: [
80
+ {
81
+ name: `on-rebuild`,
82
+ setup({ onEnd }) {
83
+ onEnd((res) => {
84
+ generateTamaguiConfig(options)
85
+ })
86
+ },
87
+ },
88
+ ],
89
+ })
93
90
 
94
- // await context.watch()
95
- // console.log('done watching')
91
+ await context.watch()
96
92
  }
package/src/test.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable no-console */
2
- import { ResolvedOptions } from './types.js'
2
+ import { CLIResolvedOptions } from '@tamagui/types'
3
3
 
4
- export const test = async (options: ResolvedOptions) => {
4
+ export const test = async (options: CLIResolvedOptions) => {
5
5
  const { dev } = await import('./dev.js')
6
6
 
7
7
  // failing on startup "Tamagui error bundling components require() of ES Module"
package/src/utils.ts CHANGED
@@ -2,11 +2,9 @@ import { join } from 'path'
2
2
 
3
3
  import type { TamaguiOptions, TamaguiProjectInfo } from '@tamagui/static'
4
4
  import { loadTamagui as loadTamaguiStatic } from '@tamagui/static'
5
+ import { CLIResolvedOptions, CLIUserOptions } from '@tamagui/types'
5
6
  import chalk from 'chalk'
6
7
  import fs, { pathExists, readJSON } from 'fs-extra'
7
- import { ViteDevServer } from 'vite'
8
-
9
- import { ResolvedOptions, UserOptions } from './types.js'
10
8
 
11
9
  export async function getOptions({
12
10
  root = process.cwd(),
@@ -14,14 +12,12 @@ export async function getOptions({
14
12
  tamaguiOptions,
15
13
  host,
16
14
  debug,
17
- }: Partial<UserOptions> = {}): Promise<ResolvedOptions> {
15
+ }: Partial<CLIUserOptions> = {}): Promise<CLIResolvedOptions> {
18
16
  const tsConfigFilePath = join(root, tsconfigPath)
19
17
  ensure(await fs.pathExists(tsConfigFilePath), `No tsconfig found: ${tsConfigFilePath}`)
20
18
  const dotDir = join(root, '.tamagui')
21
19
  const pkgJson = await readJSON(join(root, 'package.json'))
22
20
 
23
- console.log('host', host)
24
-
25
21
  return {
26
22
  mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
27
23
  root,
@@ -82,4 +78,4 @@ export function registerDispose(cb: () => void) {
82
78
 
83
79
  export function disposeAll() {
84
80
  disposers.forEach((cb) => cb())
85
- }
81
+ }
@@ -11,8 +11,6 @@ import { WebSocketHMRServer } from './servers/WebSocketHMRServer'
11
11
  import { WebSocketMessageServer } from './servers/WebSocketMessageServer'
12
12
  import { WebSocketRouter } from './WebSocketRouter'
13
13
 
14
- console.log('HermesInspectorProxy disabled')
15
-
16
14
  declare module 'fastify' {
17
15
  interface FastifyInstance {
18
16
  wss: {
package/types/build.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { ResolvedOptions } from './types.js';
2
- export declare const build: (options: ResolvedOptions) => Promise<void>;
1
+ import { CLIResolvedOptions } from '@tamagui/types';
2
+ export declare const build: (options: CLIResolvedOptions) => Promise<void>;
3
3
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,KAAK,YAAmB,eAAe,kBAoDnD,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAInD,eAAO,MAAM,KAAK,YAAmB,kBAAkB,kBAoDtD,CAAA"}
@@ -1,5 +1,5 @@
1
- import { ResolvedOptions } from '../types.js';
2
- export declare function createDevServer(options: ResolvedOptions, { indexJson, getIndexBundle, }: {
1
+ import { CLIResolvedOptions } from '@tamagui/types';
2
+ export declare function createDevServer(options: CLIResolvedOptions, { indexJson, getIndexBundle, }: {
3
3
  indexJson: Object;
4
4
  getIndexBundle: () => Promise<string>;
5
5
  }): Promise<() => Promise<void>>;
@@ -1 +1 @@
1
- {"version":3,"file":"createDevServer.d.ts","sourceRoot":"","sources":["../../src/dev/createDevServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7C,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,EACE,SAAS,EACT,cAAc,GACf,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,gCAgKhE;AAyBD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;IACrC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAA;CAC5B"}
1
+ {"version":3,"file":"createDevServer.d.ts","sourceRoot":"","sources":["../../src/dev/createDevServer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAKnD,wBAAsB,eAAe,CACnC,OAAO,EAAE,kBAAkB,EAC3B,EACE,SAAS,EACT,cAAc,GACf,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,gCAgKhE;AAyBD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,GAAG,CAAA;IACb,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;IACrC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAA;CAC5B"}
package/types/dev.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { ResolvedOptions } from './types.js';
2
- export declare const dev: (options: ResolvedOptions) => Promise<void>;
1
+ import { CLIResolvedOptions } from '@tamagui/types';
2
+ export declare const dev: (options: CLIResolvedOptions) => Promise<void>;
3
3
  //# sourceMappingURL=dev.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C,eAAO,MAAM,GAAG,YAAmB,eAAe,kBA4KjD,CAAA"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AASnD,eAAO,MAAM,GAAG,YAAmB,kBAAkB,kBA4KpD,CAAA"}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { ResolvedOptions } from './types.js';
3
- export declare function generateTypes(options: ResolvedOptions): Promise<void>;
4
- export declare function getTypes(options: ResolvedOptions): Promise<{
2
+ import { CLIResolvedOptions } from '@tamagui/types';
3
+ export declare function generateTypes(options: CLIResolvedOptions): Promise<void>;
4
+ export declare function getTypes(options: CLIResolvedOptions): Promise<{
5
5
  [k: string]: (string | undefined)[][];
6
6
  }>;
7
7
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,iBAK3D;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe;;GAwDtD"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAMnD,wBAAsB,aAAa,CAAC,OAAO,EAAE,kBAAkB,iBAK9D;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,kBAAkB;;GAwDzD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAUA,OAAO,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,UAAU,CAAA"}
package/types/studio.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { ResolvedOptions } from './types.js';
2
- export declare const studio: (options: ResolvedOptions) => Promise<void>;
1
+ import { CLIResolvedOptions } from '@tamagui/types';
2
+ export declare const studio: (options: CLIResolvedOptions, isRemote?: boolean) => Promise<void>;
3
3
  //# sourceMappingURL=studio.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../src/studio.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAK5C,eAAO,MAAM,MAAM,YAAmB,eAAe,kBAwDpD,CAAA"}
1
+ {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../src/studio.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAcnD,eAAO,MAAM,MAAM,YAAmB,kBAAkB,sCAsEvD,CAAA"}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { ResolvedOptions } from './types.js';
3
- export declare function generateTamaguiConfig(options: ResolvedOptions): Promise<void>;
4
- export declare function watchTamaguiConfig(options: ResolvedOptions): Promise<void>;
2
+ import { CLIResolvedOptions } from '@tamagui/types';
3
+ export declare function generateTamaguiConfig(options: CLIResolvedOptions): Promise<void>;
4
+ export declare function watchTamaguiConfig(options: CLIResolvedOptions): Promise<void>;
5
5
  //# sourceMappingURL=tamaguiConfigUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tamaguiConfigUtils.d.ts","sourceRoot":"","sources":["../src/tamaguiConfigUtils.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,iBAuDnE;AAMD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,iBAyBhE"}
1
+ {"version":3,"file":"tamaguiConfigUtils.d.ts","sourceRoot":"","sources":["../src/tamaguiConfigUtils.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAMnD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,iBAsDtE;AAMD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,iBAsBnE"}
package/types/test.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { ResolvedOptions } from './types.js';
2
- export declare const test: (options: ResolvedOptions) => Promise<void>;
1
+ import { CLIResolvedOptions } from '@tamagui/types';
2
+ export declare const test: (options: CLIResolvedOptions) => Promise<void>;
3
3
  //# sourceMappingURL=test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,IAAI,YAAmB,eAAe,kBAQlD,CAAA"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEnD,eAAO,MAAM,IAAI,YAAmB,kBAAkB,kBAQrD,CAAA"}
package/types/utils.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { TamaguiOptions, TamaguiProjectInfo } from '@tamagui/static';
2
- import { ResolvedOptions, UserOptions } from './types.js';
3
- export declare function getOptions({ root, tsconfigPath, tamaguiOptions, host, debug, }?: Partial<UserOptions>): Promise<ResolvedOptions>;
2
+ import { CLIResolvedOptions, CLIUserOptions } from '@tamagui/types';
3
+ export declare function getOptions({ root, tsconfigPath, tamaguiOptions, host, debug, }?: Partial<CLIUserOptions>): Promise<CLIResolvedOptions>;
4
4
  export declare function ensure(condition: boolean, message: string): void;
5
5
  export declare const loadTamagui: (opts: Partial<TamaguiOptions>) => Promise<TamaguiProjectInfo>;
6
6
  export declare function registerDispose(cb: () => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAMzE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEzD,wBAAsB,UAAU,CAAC,EAC/B,IAAoB,EACpB,YAA8B,EAC9B,cAAc,EACd,IAAI,EACJ,KAAK,GACN,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA0BtD;AAED,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAKzD;AAiBD,eAAO,MAAM,WAAW,SAChB,QAAQ,cAAc,CAAC,KAC5B,QAAQ,kBAAkB,CAM5B,CAAA;AAID,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,IAAI,QAE7C;AAED,wBAAgB,UAAU,SAEzB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAInE,wBAAsB,UAAU,CAAC,EAC/B,IAAoB,EACpB,YAA8B,EAC9B,cAAc,EACd,IAAI,EACJ,KAAK,GACN,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwB5D;AAED,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAKzD;AAiBD,eAAO,MAAM,WAAW,SAChB,QAAQ,cAAc,CAAC,KAC5B,QAAQ,kBAAkB,CAM5B,CAAA;AAID,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,IAAI,QAE7C;AAED,wBAAgB,UAAU,SAEzB"}