@trypattern/sdk 0.0.0-stage → 0.1.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 (247) hide show
  1. package/README.md +127 -2
  2. package/dist/access.d.ts +31 -0
  3. package/dist/access.js +72 -0
  4. package/dist/actions.d.ts +57 -0
  5. package/dist/actions.js +198 -0
  6. package/dist/api.d.ts +20 -0
  7. package/dist/api.js +34 -0
  8. package/dist/app.d.ts +106 -0
  9. package/dist/app.js +224 -0
  10. package/dist/appearance.d.ts +7 -0
  11. package/dist/appearance.js +2 -0
  12. package/dist/auth/sessionApi.d.ts +41 -0
  13. package/dist/auth/sessionApi.js +158 -0
  14. package/dist/auth/sessionStore.d.ts +20 -0
  15. package/dist/auth/sessionStore.js +40 -0
  16. package/dist/auth/user.d.ts +11 -0
  17. package/dist/auth/user.js +9 -0
  18. package/dist/builtins/Account.d.ts +25 -0
  19. package/dist/builtins/Account.js +15 -0
  20. package/dist/builtins/Palette.d.ts +29 -0
  21. package/dist/builtins/Palette.js +63 -0
  22. package/dist/builtins/SignIn.d.ts +28 -0
  23. package/dist/builtins/SignIn.js +60 -0
  24. package/dist/builtins/Toasts.d.ts +32 -0
  25. package/dist/builtins/Toasts.js +24 -0
  26. package/dist/builtins/actions.d.ts +2 -0
  27. package/dist/builtins/actions.js +45 -0
  28. package/dist/cache.d.ts +24 -0
  29. package/dist/cache.js +112 -0
  30. package/dist/cli/app.d.ts +2 -0
  31. package/dist/cli/app.js +1329 -0
  32. package/dist/cli/screenshot.d.ts +1 -0
  33. package/dist/cli/screenshot.js +96 -0
  34. package/dist/cli/tools.d.ts +12 -0
  35. package/dist/cli/tools.js +35 -0
  36. package/dist/components/AppFrame.d.ts +14 -0
  37. package/dist/components/AppFrame.js +64 -0
  38. package/dist/components/AppearancePicker.d.ts +1 -0
  39. package/dist/components/AppearancePicker.js +12 -0
  40. package/dist/components/Avatar.d.ts +9 -0
  41. package/dist/components/Avatar.js +63 -0
  42. package/dist/components/Badge.d.ts +11 -0
  43. package/dist/components/Badge.js +87 -0
  44. package/dist/components/Button.d.ts +23 -0
  45. package/dist/components/Button.js +249 -0
  46. package/dist/components/Card.d.ts +12 -0
  47. package/dist/components/Card.js +38 -0
  48. package/dist/components/CommandMenu.d.ts +23 -0
  49. package/dist/components/CommandMenu.js +214 -0
  50. package/dist/components/CommandPalette.d.ts +1 -0
  51. package/dist/components/CommandPalette.js +7 -0
  52. package/dist/components/Content.d.ts +7 -0
  53. package/dist/components/Content.js +24 -0
  54. package/dist/components/ContextMenu.d.ts +8 -0
  55. package/dist/components/ContextMenu.js +23 -0
  56. package/dist/components/Dialog.d.ts +11 -0
  57. package/dist/components/Dialog.js +81 -0
  58. package/dist/components/Divider.d.ts +6 -0
  59. package/dist/components/Divider.js +15 -0
  60. package/dist/components/EmptyState.d.ts +8 -0
  61. package/dist/components/EmptyState.js +24 -0
  62. package/dist/components/Form.d.ts +9 -0
  63. package/dist/components/Form.js +23 -0
  64. package/dist/components/Icon.d.ts +10 -0
  65. package/dist/components/Icon.js +22 -0
  66. package/dist/components/IconButton.d.ts +14 -0
  67. package/dist/components/IconButton.js +53 -0
  68. package/dist/components/Kbd.d.ts +6 -0
  69. package/dist/components/Kbd.js +67 -0
  70. package/dist/components/Link.d.ts +9 -0
  71. package/dist/components/Link.js +35 -0
  72. package/dist/components/ListRow.d.ts +12 -0
  73. package/dist/components/ListRow.js +62 -0
  74. package/dist/components/LoadingRows.d.ts +5 -0
  75. package/dist/components/LoadingRows.js +6 -0
  76. package/dist/components/Menu.d.ts +12 -0
  77. package/dist/components/Menu.js +33 -0
  78. package/dist/components/MenuItems.d.ts +21 -0
  79. package/dist/components/MenuItems.js +32 -0
  80. package/dist/components/Placement.d.ts +21 -0
  81. package/dist/components/Placement.js +1 -0
  82. package/dist/components/Popup.d.ts +8 -0
  83. package/dist/components/Popup.js +43 -0
  84. package/dist/components/PopupItem.d.ts +8 -0
  85. package/dist/components/PopupItem.js +51 -0
  86. package/dist/components/PropertyRow.d.ts +7 -0
  87. package/dist/components/PropertyRow.js +23 -0
  88. package/dist/components/Row.d.ts +16 -0
  89. package/dist/components/Row.js +27 -0
  90. package/dist/components/Screen.d.ts +13 -0
  91. package/dist/components/Screen.js +56 -0
  92. package/dist/components/Scrim.d.ts +8 -0
  93. package/dist/components/Scrim.js +40 -0
  94. package/dist/components/ScrollArea.d.ts +15 -0
  95. package/dist/components/ScrollArea.js +13 -0
  96. package/dist/components/SegmentedControl.d.ts +17 -0
  97. package/dist/components/SegmentedControl.js +68 -0
  98. package/dist/components/Select.d.ts +17 -0
  99. package/dist/components/Select.js +107 -0
  100. package/dist/components/SettingsRow.d.ts +8 -0
  101. package/dist/components/SettingsRow.js +32 -0
  102. package/dist/components/Sidebar.d.ts +20 -0
  103. package/dist/components/Sidebar.js +138 -0
  104. package/dist/components/SignInScreen.d.ts +1 -0
  105. package/dist/components/SignInScreen.js +40 -0
  106. package/dist/components/Size.d.ts +1 -0
  107. package/dist/components/Size.js +1 -0
  108. package/dist/components/Skeleton.d.ts +8 -0
  109. package/dist/components/Skeleton.js +48 -0
  110. package/dist/components/Spinner.d.ts +6 -0
  111. package/dist/components/Spinner.js +54 -0
  112. package/dist/components/Stack.d.ts +14 -0
  113. package/dist/components/Stack.js +19 -0
  114. package/dist/components/Switch.d.ts +10 -0
  115. package/dist/components/Switch.js +71 -0
  116. package/dist/components/Text.d.ts +21 -0
  117. package/dist/components/Text.js +77 -0
  118. package/dist/components/TextField.d.ts +25 -0
  119. package/dist/components/TextField.js +68 -0
  120. package/dist/components/Toaster.d.ts +1 -0
  121. package/dist/components/Toaster.js +83 -0
  122. package/dist/components/Tooltip.d.ts +8 -0
  123. package/dist/components/Tooltip.js +43 -0
  124. package/dist/components/controlLook.d.ts +60 -0
  125. package/dist/components/controlLook.js +67 -0
  126. package/dist/components/frame.d.ts +4 -0
  127. package/dist/components/frame.js +2 -0
  128. package/dist/components/icons.d.ts +58 -0
  129. package/dist/components/icons.js +105 -0
  130. package/dist/components/interaction.d.ts +12 -0
  131. package/dist/components/interaction.js +22 -0
  132. package/dist/components/spacing.d.ts +118 -0
  133. package/dist/components/spacing.js +46 -0
  134. package/dist/components/tones.d.ts +28 -0
  135. package/dist/components/tones.js +12 -0
  136. package/dist/entityStore.d.ts +46 -0
  137. package/dist/entityStore.js +160 -0
  138. package/dist/flows/accessFlows.d.ts +9 -0
  139. package/dist/flows/accessFlows.js +151 -0
  140. package/dist/flows/browser.d.ts +32 -0
  141. package/dist/flows/browser.js +164 -0
  142. package/dist/flows/contactSheet.d.ts +1 -0
  143. package/dist/flows/contactSheet.js +63 -0
  144. package/dist/flows/flowBrowser.d.ts +23 -0
  145. package/dist/flows/flowBrowser.js +21 -0
  146. package/dist/flows/flowSetup.d.ts +3 -0
  147. package/dist/flows/flowSetup.js +35 -0
  148. package/dist/flows/flows.d.ts +41 -0
  149. package/dist/flows/flows.js +148 -0
  150. package/dist/flows/screenshotName.d.ts +1 -0
  151. package/dist/flows/screenshotName.js +6 -0
  152. package/dist/gate.d.ts +8 -0
  153. package/dist/gate.js +52 -0
  154. package/dist/hooks/appContext.d.ts +14 -0
  155. package/dist/hooks/appContext.js +5 -0
  156. package/dist/hooks/appHooks.d.ts +21 -0
  157. package/dist/hooks/appHooks.js +24 -0
  158. package/dist/hooks/useAnimatesOnChange.d.ts +1 -0
  159. package/dist/hooks/useAnimatesOnChange.js +14 -0
  160. package/dist/hooks/useStoreState.d.ts +6 -0
  161. package/dist/hooks/useStoreState.js +5 -0
  162. package/dist/index.d.ts +40 -0
  163. package/dist/index.js +19 -0
  164. package/dist/memoryApi.d.ts +19 -0
  165. package/dist/memoryApi.js +42 -0
  166. package/dist/model.d.ts +94 -0
  167. package/dist/model.js +243 -0
  168. package/dist/page.d.ts +11 -0
  169. package/dist/page.js +9 -0
  170. package/dist/platform.d.ts +1 -0
  171. package/dist/platform.js +5 -0
  172. package/dist/react.d.ts +46 -0
  173. package/dist/react.js +38 -0
  174. package/dist/registered.d.ts +54 -0
  175. package/dist/registered.js +17 -0
  176. package/dist/routes.d.ts +38 -0
  177. package/dist/routes.js +21 -0
  178. package/dist/rules/checkAllFiles.d.ts +1 -0
  179. package/dist/rules/checkAllFiles.js +741 -0
  180. package/dist/rules/checkApiRouting.d.ts +1 -0
  181. package/dist/rules/checkApiRouting.js +112 -0
  182. package/dist/rules/lintPlugin.d.ts +252 -0
  183. package/dist/rules/lintPlugin.js +1157 -0
  184. package/dist/rules/messages.d.ts +48 -0
  185. package/dist/rules/messages.js +48 -0
  186. package/dist/rules/themeTokens.d.ts +6 -0
  187. package/dist/rules/themeTokens.js +64 -0
  188. package/dist/schema.d.ts +2 -0
  189. package/dist/schema.js +1 -0
  190. package/dist/server/auth.d.ts +115 -0
  191. package/dist/server/auth.js +131 -0
  192. package/dist/server/authService.d.ts +9 -0
  193. package/dist/server/authService.js +50 -0
  194. package/dist/server/createServer.d.ts +357 -0
  195. package/dist/server/createServer.js +62 -0
  196. package/dist/server/env.d.ts +15 -0
  197. package/dist/server/env.js +1 -0
  198. package/dist/server/index.d.ts +8 -0
  199. package/dist/server/index.js +5 -0
  200. package/dist/server/session.d.ts +28 -0
  201. package/dist/server/session.js +54 -0
  202. package/dist/server/sessions.d.ts +92 -0
  203. package/dist/server/sessions.js +47 -0
  204. package/dist/server/signInWire.d.ts +52 -0
  205. package/dist/server/signInWire.js +22 -0
  206. package/dist/server/tables.d.ts +242 -0
  207. package/dist/server/tables.js +246 -0
  208. package/dist/server/users.d.ts +189 -0
  209. package/dist/server/users.js +49 -0
  210. package/dist/shortcuts.d.ts +3 -0
  211. package/dist/shortcuts.js +40 -0
  212. package/dist/start.d.ts +20 -0
  213. package/dist/start.js +121 -0
  214. package/dist/state.d.ts +14 -0
  215. package/dist/state.js +17 -0
  216. package/dist/store.d.ts +43 -0
  217. package/dist/store.js +198 -0
  218. package/dist/subscribers.d.ts +5 -0
  219. package/dist/subscribers.js +13 -0
  220. package/dist/table.d.ts +143 -0
  221. package/dist/table.js +91 -0
  222. package/dist/tables.d.ts +77 -0
  223. package/dist/tables.js +216 -0
  224. package/dist/theme/reset.css +84 -0
  225. package/dist/theme/scales.d.ts +76 -0
  226. package/dist/theme/scales.js +82 -0
  227. package/dist/theme/tokens.stylex.d.ts +218 -0
  228. package/dist/theme/tokens.stylex.js +233 -0
  229. package/dist/vite/commandBridge.d.ts +2 -0
  230. package/dist/vite/commandBridge.js +46 -0
  231. package/dist/vite/designManifest.d.ts +25 -0
  232. package/dist/vite/designManifest.js +191 -0
  233. package/dist/vite/localWorker.d.ts +4 -0
  234. package/dist/vite/localWorker.js +59 -0
  235. package/dist/vite/rootAlias.d.ts +2 -0
  236. package/dist/vite/rootAlias.js +15 -0
  237. package/dist/vite/vite.d.ts +7 -0
  238. package/dist/vite/vite.js +88 -0
  239. package/dist/wire.d.ts +7 -0
  240. package/dist/wire.js +1 -0
  241. package/package.json +99 -3
  242. package/presets/lintPlugin.js +7 -0
  243. package/presets/oxlint.json +167 -0
  244. package/presets/register.d.ts +19 -0
  245. package/presets/server.d.ts +2 -0
  246. package/presets/tsconfig.app.json +29 -0
  247. package/presets/tsconfig.server.json +27 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,112 @@
1
+ import { request } from 'node:http';
2
+ import { createServer as createNetServer } from 'node:net';
3
+ import { createServer, preview } from 'vite';
4
+ const API_ROUTES_REACH_THE_WORKER = 'Browser navigations to /api/* (pasted links, OAuth callbacks) must reach the Hono worker, not the single-page app. Cloudflare serves index.html to navigations without running the worker unless wrangler.jsonc keeps "run_worker_first": ["/api/*"] under "assets". Without it, an OAuth callback lands on the app and loops.';
5
+ const APP_ROUTES_SERVE_THE_APP = 'Browser navigations outside /api/ must serve the app (index.html) so deep links like /issues open the screen. Keep "not_found_handling": "single-page-application" in wrangler.jsonc and keep run_worker_first limited to /api/*.';
6
+ const DEV_SIGN_IN_ONLY_IN_DEV = 'POST /api/auth/dev-sign-in signs anyone in without Google, so it must exist in the dev server (app sign-in, flows and screenshots use it) and must not exist in the production build. createServer in @trypattern/sdk mounts it only under import.meta.env.DEV.';
7
+ const probes = [
8
+ {
9
+ path: '/api/health',
10
+ expectsJson: true,
11
+ rationale: API_ROUTES_REACH_THE_WORKER
12
+ },
13
+ {
14
+ path: '/api/auth/callback?code=check',
15
+ expectsJson: true,
16
+ rationale: API_ROUTES_REACH_THE_WORKER
17
+ },
18
+ {
19
+ path: '/issues',
20
+ expectsJson: false,
21
+ rationale: APP_ROUTES_SERVE_THE_APP
22
+ }
23
+ ];
24
+ function freePort() {
25
+ return new Promise((done, fail) => {
26
+ const server = createNetServer();
27
+ server.on('error', fail);
28
+ server.listen(0, () => {
29
+ const address = server.address();
30
+ const port = typeof address === 'object' && address !== null ? address.port : 0;
31
+ server.close(() => done(port));
32
+ });
33
+ });
34
+ }
35
+ function navigate(url) {
36
+ return new Promise((done, fail) => {
37
+ const sent = request(url, { headers: { 'sec-fetch-mode': 'navigate', accept: 'text/html' } }, (response) => {
38
+ response.resume();
39
+ response.on('end', () => done(response.headers['content-type'] ?? ''));
40
+ });
41
+ sent.on('error', fail);
42
+ sent.end();
43
+ });
44
+ }
45
+ function devSignInStatus(base) {
46
+ return new Promise((done, fail) => {
47
+ const sent = request(new URL('/api/auth/dev-sign-in', base), { method: 'POST', headers: { 'content-type': 'application/json' } }, (response) => {
48
+ response.resume();
49
+ response.on('end', () => done(response.statusCode ?? 0));
50
+ });
51
+ sent.on('error', fail);
52
+ sent.end('{}');
53
+ });
54
+ }
55
+ async function devSignInProblem(label, base, shouldExist) {
56
+ const exists = (await devSignInStatus(base)) !== 404;
57
+ return exists === shouldExist
58
+ ? []
59
+ : [
60
+ `${label}: POST /api/auth/dev-sign-in ${exists ? 'exists' : 'is missing'}.\n ${DEV_SIGN_IN_ONLY_IN_DEV}`
61
+ ];
62
+ }
63
+ async function problemsAt(label, base) {
64
+ const problems = [];
65
+ for (const probe of probes) {
66
+ const contentType = await navigate(new URL(probe.path, base));
67
+ const isJson = !contentType.includes('text/html');
68
+ if (isJson !== probe.expectsJson) {
69
+ problems.push(`${label}: navigating to ${probe.path} returned ${contentType || 'no content type'}, expected ${probe.expectsJson ? 'a response from the worker' : 'the app (text/html)'}.\n ${probe.rationale}`);
70
+ }
71
+ }
72
+ return problems;
73
+ }
74
+ async function devProblems() {
75
+ const port = await freePort();
76
+ const server = await createServer({
77
+ logLevel: 'silent',
78
+ server: { port, strictPort: true, open: false }
79
+ });
80
+ await server.listen();
81
+ try {
82
+ const base = `http://localhost:${port}`;
83
+ return [
84
+ ...(await problemsAt('dev server', base)),
85
+ ...(await devSignInProblem('dev server', base, true))
86
+ ];
87
+ }
88
+ finally {
89
+ await server.close();
90
+ }
91
+ }
92
+ async function buildProblems() {
93
+ const port = await freePort();
94
+ const server = await preview({
95
+ logLevel: 'silent',
96
+ preview: { port, strictPort: true, open: false }
97
+ });
98
+ try {
99
+ const base = `http://localhost:${port}`;
100
+ return [
101
+ ...(await problemsAt('production build', base)),
102
+ ...(await devSignInProblem('production build', base, false))
103
+ ];
104
+ }
105
+ finally {
106
+ await server.close();
107
+ }
108
+ }
109
+ const problems = [...(await devProblems()), ...(await buildProblems())];
110
+ for (const problem of problems)
111
+ console.error(problem);
112
+ process.exit(problems.length === 0 ? 0 : 1);
@@ -0,0 +1,252 @@
1
+ type Location = {
2
+ start: {
3
+ line: number;
4
+ column: number;
5
+ };
6
+ };
7
+ type AstNode = {
8
+ type: string;
9
+ loc: Location;
10
+ } & Record<string, unknown>;
11
+ type RuleContext = {
12
+ filename: string;
13
+ options: readonly unknown[];
14
+ sourceCode: {
15
+ getAllComments: () => {
16
+ type: string;
17
+ loc: Location;
18
+ }[];
19
+ };
20
+ report: (problem: {
21
+ loc: Location;
22
+ message: string;
23
+ }) => void;
24
+ };
25
+ type Visitors = Record<string, (node: AstNode) => void>;
26
+ declare const _default: {
27
+ meta: {
28
+ name: string;
29
+ };
30
+ rules: {
31
+ 'no-comments': {
32
+ meta: {
33
+ type: string;
34
+ };
35
+ create: (context: RuleContext) => Visitors;
36
+ };
37
+ 'no-pointer-cursor': {
38
+ meta: {
39
+ type: string;
40
+ };
41
+ create(context: RuleContext): Visitors;
42
+ };
43
+ 'use-tokens': {
44
+ meta: {
45
+ type: string;
46
+ };
47
+ create(context: RuleContext): Visitors;
48
+ };
49
+ 'no-interactive-transition': {
50
+ meta: {
51
+ type: string;
52
+ };
53
+ create(context: RuleContext): Visitors;
54
+ };
55
+ 'hover-uses-highlight': {
56
+ meta: {
57
+ type: string;
58
+ };
59
+ create(context: RuleContext): Visitors;
60
+ };
61
+ 'scroll-view-only': {
62
+ meta: {
63
+ type: string;
64
+ };
65
+ create(context: RuleContext): Visitors;
66
+ };
67
+ 'selectable-only': {
68
+ meta: {
69
+ type: string;
70
+ };
71
+ create(context: RuleContext): Visitors;
72
+ };
73
+ 'dark-mode-in-tokens': {
74
+ meta: {
75
+ type: string;
76
+ };
77
+ create: (context: RuleContext) => Visitors;
78
+ };
79
+ 'use-breakpoints': {
80
+ meta: {
81
+ type: string;
82
+ };
83
+ create: (context: RuleContext) => Visitors;
84
+ };
85
+ 'no-classname-strings': {
86
+ meta: {
87
+ type: string;
88
+ };
89
+ create: (context: RuleContext) => Visitors;
90
+ };
91
+ 'typed-style-prop': {
92
+ meta: {
93
+ type: string;
94
+ };
95
+ create: (context: RuleContext) => Visitors;
96
+ };
97
+ 'component-file-name': {
98
+ meta: {
99
+ type: string;
100
+ };
101
+ create: (context: RuleContext) => Visitors;
102
+ };
103
+ 'component-first': {
104
+ meta: {
105
+ type: string;
106
+ };
107
+ create: (context: RuleContext) => Visitors;
108
+ };
109
+ 'routes-under-app-layout': {
110
+ meta: {
111
+ type: string;
112
+ };
113
+ create: (context: RuleContext) => Visitors;
114
+ };
115
+ 'no-route-data-apis': {
116
+ meta: {
117
+ type: string;
118
+ };
119
+ create: (context: RuleContext) => Visitors;
120
+ };
121
+ 'use-link': {
122
+ meta: {
123
+ type: string;
124
+ };
125
+ create: (context: RuleContext) => Visitors;
126
+ };
127
+ 'stores-in-app': {
128
+ meta: {
129
+ type: string;
130
+ };
131
+ create: (context: RuleContext) => Visitors;
132
+ };
133
+ 'state-via-hooks': {
134
+ meta: {
135
+ type: string;
136
+ };
137
+ create: (context: RuleContext) => Visitors;
138
+ };
139
+ 'model-members': {
140
+ meta: {
141
+ type: string;
142
+ };
143
+ create: (context: RuleContext) => Visitors;
144
+ };
145
+ 'pure-getters': {
146
+ meta: {
147
+ type: string;
148
+ };
149
+ create: (context: RuleContext) => Visitors;
150
+ };
151
+ 'actions-where': {
152
+ meta: {
153
+ type: string;
154
+ };
155
+ create: (context: RuleContext) => Visitors;
156
+ };
157
+ 'pure-actions': {
158
+ meta: {
159
+ type: string;
160
+ };
161
+ create: (context: RuleContext) => Visitors;
162
+ };
163
+ 'use-model-where': {
164
+ meta: {
165
+ type: string;
166
+ };
167
+ create: (context: RuleContext) => Visitors;
168
+ };
169
+ 'model-by-name': {
170
+ meta: {
171
+ type: string;
172
+ };
173
+ create: (context: RuleContext) => Visitors;
174
+ };
175
+ 'classes-not-factories': {
176
+ meta: {
177
+ type: string;
178
+ };
179
+ create: (context: RuleContext) => Visitors;
180
+ };
181
+ 'explicit-access': {
182
+ meta: {
183
+ type: string;
184
+ };
185
+ create: (context: RuleContext) => Visitors;
186
+ };
187
+ 'dev-only-sign-in': {
188
+ meta: {
189
+ type: string;
190
+ };
191
+ create: (context: RuleContext) => Visitors;
192
+ };
193
+ 'use-primitives': {
194
+ meta: {
195
+ type: string;
196
+ };
197
+ create: (context: RuleContext) => Visitors;
198
+ };
199
+ 'no-widget-roles': {
200
+ meta: {
201
+ type: string;
202
+ };
203
+ create: (context: RuleContext) => Visitors;
204
+ };
205
+ 'no-click-on-static': {
206
+ meta: {
207
+ type: string;
208
+ };
209
+ create: (context: RuleContext) => Visitors;
210
+ };
211
+ 'primitive-names': {
212
+ meta: {
213
+ type: string;
214
+ };
215
+ create: (context: RuleContext) => Visitors;
216
+ };
217
+ 'use-space-tokens': {
218
+ meta: {
219
+ type: string;
220
+ schema: {
221
+ type: string;
222
+ properties: {
223
+ sizes: {
224
+ type: string;
225
+ };
226
+ };
227
+ additionalProperties: boolean;
228
+ }[];
229
+ };
230
+ create(context: RuleContext): Visitors;
231
+ };
232
+ 'text-via-text': {
233
+ meta: {
234
+ type: string;
235
+ };
236
+ create: (context: RuleContext) => Visitors;
237
+ };
238
+ 'compose-in-screens': {
239
+ meta: {
240
+ type: string;
241
+ };
242
+ create: (context: RuleContext) => Visitors;
243
+ };
244
+ 'no-hover-in-app': {
245
+ meta: {
246
+ type: string;
247
+ };
248
+ create(context: RuleContext): Visitors;
249
+ };
250
+ };
251
+ };
252
+ export default _default;