rwsdk 1.0.0-alpha.9 → 1.0.0-beta.1

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 (159) hide show
  1. package/dist/lib/constants.mjs +1 -2
  2. package/dist/lib/e2e/browser.d.mts +1 -1
  3. package/dist/lib/e2e/browser.mjs +3 -4
  4. package/dist/lib/e2e/dev.mjs +62 -52
  5. package/dist/lib/e2e/environment.d.mts +2 -6
  6. package/dist/lib/e2e/environment.mjs +72 -72
  7. package/dist/lib/e2e/index.d.mts +5 -4
  8. package/dist/lib/e2e/index.mjs +5 -4
  9. package/dist/lib/e2e/poll.d.mts +8 -0
  10. package/dist/lib/e2e/poll.mjs +31 -0
  11. package/dist/lib/e2e/release.mjs +4 -4
  12. package/dist/lib/e2e/retry.d.mts +4 -0
  13. package/dist/lib/e2e/retry.mjs +16 -0
  14. package/dist/lib/e2e/setup.d.mts +2 -0
  15. package/dist/lib/e2e/setup.mjs +1 -0
  16. package/dist/lib/e2e/tarball.d.mts +3 -2
  17. package/dist/lib/e2e/tarball.mjs +30 -5
  18. package/dist/lib/e2e/testHarness.d.mts +59 -50
  19. package/dist/lib/e2e/testHarness.mjs +289 -343
  20. package/dist/lib/getShortName.mjs +1 -2
  21. package/dist/lib/getShortName.test.mjs +2 -2
  22. package/dist/lib/getSrcPaths.js +2 -2
  23. package/dist/lib/hasPkgScript.test.mjs +2 -2
  24. package/dist/lib/jsonUtils.test.mjs +2 -2
  25. package/dist/lib/normalizeModulePath.test.mjs +2 -2
  26. package/dist/lib/setupEnvFiles.mjs +2 -2
  27. package/dist/lib/smokeTests/artifacts.mjs +2 -2
  28. package/dist/lib/smokeTests/browser.d.mts +1 -1
  29. package/dist/lib/smokeTests/browser.mjs +6 -7
  30. package/dist/lib/smokeTests/cleanup.mjs +6 -9
  31. package/dist/lib/smokeTests/codeUpdates.mjs +5 -5
  32. package/dist/lib/smokeTests/development.mjs +2 -2
  33. package/dist/lib/smokeTests/environment.d.mts +2 -3
  34. package/dist/lib/smokeTests/environment.mjs +17 -3
  35. package/dist/lib/smokeTests/release.d.mts +2 -2
  36. package/dist/lib/smokeTests/release.mjs +3 -3
  37. package/dist/lib/smokeTests/reporting.mjs +2 -2
  38. package/dist/lib/smokeTests/runSmokeTests.mjs +4 -4
  39. package/dist/lib/smokeTests/utils.mjs +3 -3
  40. package/dist/lib/testUtils/stubEnvVars.mjs +1 -1
  41. package/dist/llms/rules/middleware.d.ts +1 -1
  42. package/dist/llms/rules/middleware.js +4 -4
  43. package/dist/runtime/client/client.d.ts +2 -2
  44. package/dist/runtime/client/client.js +2 -2
  45. package/dist/runtime/client/navigation.test.js +1 -1
  46. package/dist/runtime/client/types.d.ts +1 -1
  47. package/dist/runtime/entries/client.d.ts +2 -2
  48. package/dist/runtime/entries/client.js +2 -2
  49. package/dist/runtime/entries/router.d.ts +1 -1
  50. package/dist/runtime/entries/router.js +1 -1
  51. package/dist/runtime/entries/worker.d.ts +5 -6
  52. package/dist/runtime/entries/worker.js +5 -6
  53. package/dist/runtime/imports/worker.js +1 -1
  54. package/dist/runtime/lib/auth/session.d.ts +2 -2
  55. package/dist/runtime/lib/auth/session.js +5 -5
  56. package/dist/runtime/lib/db/DOWorkerDialect.d.ts +1 -1
  57. package/dist/runtime/lib/db/DOWorkerDialect.js +1 -1
  58. package/dist/runtime/lib/db/SqliteDurableObject.js +2 -2
  59. package/dist/runtime/lib/db/index.d.ts +2 -2
  60. package/dist/runtime/lib/db/index.js +2 -2
  61. package/dist/runtime/lib/db/migrations.d.ts +1 -1
  62. package/dist/runtime/lib/db/typeInference/builders/alterTable.d.ts +3 -3
  63. package/dist/runtime/lib/db/typeInference/builders/columnDefinition.d.ts +1 -1
  64. package/dist/runtime/lib/db/typeInference/builders/createTable.d.ts +2 -2
  65. package/dist/runtime/lib/db/typeInference/builders/createView.d.ts +1 -1
  66. package/dist/runtime/lib/db/typeInference/builders/dropTable.d.ts +1 -1
  67. package/dist/runtime/lib/db/typeInference/builders/dropView.d.ts +1 -1
  68. package/dist/runtime/lib/db/typeInference/builders/schema.d.ts +3 -3
  69. package/dist/runtime/lib/db/typeInference/database.d.ts +2 -2
  70. package/dist/runtime/lib/memoizeOnId.test.js +1 -1
  71. package/dist/runtime/lib/realtime/client.js +2 -2
  72. package/dist/runtime/lib/realtime/durableObject.js +1 -1
  73. package/dist/runtime/lib/realtime/protocol.test.js +1 -1
  74. package/dist/runtime/lib/realtime/shared.test.js +1 -1
  75. package/dist/runtime/lib/realtime/validateUpgradeRequest.test.js +1 -1
  76. package/dist/runtime/lib/realtime/worker.js +2 -2
  77. package/dist/runtime/lib/router.d.ts +1 -1
  78. package/dist/runtime/lib/router.test.js +2 -3
  79. package/dist/runtime/lib/rwContext.d.ts +1 -1
  80. package/dist/runtime/lib/stitchDocumentAndAppStreams.d.ts +18 -0
  81. package/dist/runtime/lib/stitchDocumentAndAppStreams.js +143 -0
  82. package/dist/runtime/lib/turnstile/useTurnstile.js +1 -1
  83. package/dist/runtime/lib/turnstile/verifyTurnstileToken.test.js +1 -1
  84. package/dist/runtime/register/worker.d.ts +1 -1
  85. package/dist/runtime/register/worker.js +34 -22
  86. package/dist/runtime/render/assembleDocument.d.ts +1 -1
  87. package/dist/runtime/render/createThenableFromReadableStream.js +1 -1
  88. package/dist/runtime/render/preloads.d.ts +2 -2
  89. package/dist/runtime/render/renderDocumentHtmlStream.js +6 -6
  90. package/dist/runtime/render/renderHtmlStream.d.ts +1 -1
  91. package/dist/runtime/render/renderToRscStream.d.ts +4 -1
  92. package/dist/runtime/render/renderToRscStream.js +11 -1
  93. package/dist/runtime/render/renderToStream.d.ts +1 -1
  94. package/dist/runtime/render/renderToStream.js +2 -2
  95. package/dist/runtime/render/stylesheets.d.ts +1 -1
  96. package/dist/runtime/requestInfo/types.d.ts +0 -2
  97. package/dist/runtime/requestInfo/worker.d.ts +1 -1
  98. package/dist/runtime/requestInfo/worker.js +1 -9
  99. package/dist/runtime/script.js +1 -1
  100. package/dist/runtime/ssrBridge.d.ts +2 -2
  101. package/dist/runtime/ssrBridge.js +2 -2
  102. package/dist/runtime/worker.d.ts +1 -1
  103. package/dist/runtime/worker.js +3 -11
  104. package/dist/scripts/addon.d.mts +1 -0
  105. package/dist/scripts/addon.mjs +73 -0
  106. package/dist/scripts/debug-sync.mjs +106 -137
  107. package/dist/scripts/ensure-deploy-env.mjs +6 -6
  108. package/dist/scripts/migrate-new.mjs +3 -4
  109. package/dist/scripts/smoke-test.mjs +2 -9
  110. package/dist/scripts/worker-run.mjs +7 -9
  111. package/dist/vite/buildApp.mjs +1 -1
  112. package/dist/vite/checkIsUsingPrisma.test.mjs +1 -1
  113. package/dist/vite/configPlugin.mjs +33 -6
  114. package/dist/vite/createDirectiveLookupPlugin.mjs +1 -1
  115. package/dist/vite/createDirectiveLookupPlugin.test.mjs +2 -2
  116. package/dist/vite/createViteAwareResolver.d.mts +1 -2
  117. package/dist/vite/createViteAwareResolver.mjs +1 -1
  118. package/dist/vite/directiveModulesDevPlugin.mjs +4 -4
  119. package/dist/vite/directiveModulesDevPlugin.test.mjs +2 -2
  120. package/dist/vite/directivesPlugin.mjs +3 -3
  121. package/dist/vite/directivesPlugin.test.mjs +1 -1
  122. package/dist/vite/ensureAliasArray.test.mjs +1 -1
  123. package/dist/vite/findSpecifiers.mjs +1 -1
  124. package/dist/vite/findSpecifiers.test.mjs +2 -2
  125. package/dist/vite/findSsrSpecifiers.mjs +1 -1
  126. package/dist/vite/findSsrSpecifiers.test.mjs +1 -1
  127. package/dist/vite/getViteEsbuild.mjs +1 -1
  128. package/dist/vite/hasDirective.test.mjs +1 -1
  129. package/dist/vite/index.d.mts +1 -1
  130. package/dist/vite/invalidateCacheIfPrismaClientChanged.mjs +2 -2
  131. package/dist/vite/isJsFile.test.mjs +1 -1
  132. package/dist/vite/{reactConditionsResolverPlugin.d.mts → knownDepsResolverPlugin.d.mts} +3 -3
  133. package/dist/vite/{reactConditionsResolverPlugin.mjs → knownDepsResolverPlugin.mjs} +29 -24
  134. package/dist/vite/linkerPlugin.mjs +2 -2
  135. package/dist/vite/linkerPlugin.test.mjs +1 -1
  136. package/dist/vite/miniflareHMRPlugin.mjs +5 -5
  137. package/dist/vite/miniflareHMRPlugin.test.mjs +1 -1
  138. package/dist/vite/prismaPlugin.mjs +1 -1
  139. package/dist/vite/redwoodPlugin.d.mts +2 -0
  140. package/dist/vite/redwoodPlugin.mjs +36 -17
  141. package/dist/vite/redwoodPlugin.test.mjs +2 -2
  142. package/dist/vite/resolveForcedPaths.d.mts +4 -0
  143. package/dist/vite/resolveForcedPaths.mjs +9 -0
  144. package/dist/vite/runDirectivesScan.d.mts +2 -1
  145. package/dist/vite/runDirectivesScan.mjs +53 -17
  146. package/dist/vite/runDirectivesScan.test.mjs +2 -2
  147. package/dist/vite/ssrBridgePlugin.mjs +10 -3
  148. package/dist/vite/transformClientComponents.mjs +8 -6
  149. package/dist/vite/transformClientComponents.test.mjs +117 -59
  150. package/dist/vite/transformJsxScriptTagsPlugin.mjs +1 -1
  151. package/dist/vite/transformJsxScriptTagsPlugin.test.mjs +2 -2
  152. package/dist/vite/transformServerFunctions.d.mts +1 -1
  153. package/dist/vite/transformServerFunctions.mjs +5 -5
  154. package/dist/vite/transformServerFunctions.test.mjs +3 -3
  155. package/package.json +54 -44
  156. package/dist/runtime/imports/resolveSSRValue.d.ts +0 -1
  157. package/dist/runtime/imports/resolveSSRValue.js +0 -8
  158. package/dist/runtime/lib/injectHtmlAtMarker.d.ts +0 -11
  159. package/dist/runtime/lib/injectHtmlAtMarker.js +0 -90
@@ -1,8 +1,6 @@
1
- import type { Browser, Page } from "puppeteer-core";
2
- interface PlaygroundEnvironment {
3
- projectDir: string;
4
- cleanup: () => Promise<void>;
5
- }
1
+ import { type Browser, type Page } from "puppeteer-core";
2
+ import { test } from "vitest";
3
+ export type { Browser, Page } from "puppeteer-core";
6
4
  interface DevServerInstance {
7
5
  url: string;
8
6
  stopDev: () => Promise<void>;
@@ -12,39 +10,48 @@ interface DeploymentInstance {
12
10
  workerName: string;
13
11
  resourceUniqueKey: string;
14
12
  projectDir: string;
13
+ cleanup: () => Promise<void>;
14
+ }
15
+ export interface SetupPlaygroundEnvironmentOptions {
16
+ /**
17
+ * The directory of the playground project to set up.
18
+ * Can be an absolute path, or a `import.meta.url` `file://` string.
19
+ * If not provided, it will be inferred from the test file's path.
20
+ */
21
+ sourceProjectDir?: string;
22
+ /**
23
+ * The root directory of the monorepo, if the project is part of one.
24
+ * This is used to correctly set up the test environment for monorepo projects.
25
+ */
26
+ monorepoRoot?: string;
27
+ /**
28
+ * Whether to provision a dev server for the test suite.
29
+ * @default true
30
+ */
31
+ dev?: boolean;
32
+ /**
33
+ * Whether to provision a deployment for the test suite.
34
+ * @default true
35
+ */
36
+ deploy?: boolean;
15
37
  }
16
38
  /**
17
- * Sets up a playground environment for the entire test suite.
18
- * Automatically registers beforeAll and afterAll hooks.
19
- *
20
- * @param sourceProjectDir - Explicit path to playground directory, or import.meta.url to auto-detect
21
- */
22
- export declare function setupPlaygroundEnvironment(sourceProjectDir?: string): void;
23
- /**
24
- * Gets the current playground environment.
25
- * Throws if no environment has been set up.
39
+ * A Vitest hook that sets up a playground environment for a test file.
40
+ * It creates a temporary directory, copies the playground project into it,
41
+ * and installs dependencies using a tarball of the SDK.
42
+ * This ensures that tests run in a clean, isolated environment.
26
43
  */
27
- export declare function getPlaygroundEnvironment(): PlaygroundEnvironment;
44
+ export declare function setupPlaygroundEnvironment(options?: string | SetupPlaygroundEnvironmentOptions): void;
28
45
  /**
29
46
  * Creates a dev server instance using the shared playground environment.
30
47
  * Automatically registers cleanup to run after the test.
31
48
  */
32
- export declare function createDevServer(): Promise<DevServerInstance>;
49
+ export declare function createDevServer(projectDir: string): Promise<DevServerInstance>;
33
50
  /**
34
51
  * Creates a deployment instance using the shared playground environment.
35
52
  * Automatically registers cleanup to run after the test.
36
53
  */
37
- export declare function createDeployment(): Promise<DeploymentInstance>;
38
- /**
39
- * Manually cleans up a deployment instance (deletes worker and D1 database).
40
- * This is optional since cleanup happens automatically after each test.
41
- */
42
- export declare function cleanupDeployment(deployment: DeploymentInstance): Promise<void>;
43
- /**
44
- * Creates a browser instance for testing.
45
- * Automatically registers cleanup to run after the test.
46
- */
47
- export declare function createBrowser(): Promise<Browser>;
54
+ export declare function createDeployment(projectDir: string): Promise<DeploymentInstance>;
48
55
  /**
49
56
  * Executes a test function with a retry mechanism for specific error codes.
50
57
  * @param name - The name of the test, used for logging.
@@ -53,23 +60,24 @@ export declare function createBrowser(): Promise<Browser>;
53
60
  * return a cleanup function. The cleanup function will be
54
61
  * called automatically on failure.
55
62
  */
56
- export declare function runTestWithRetries(name: string, attemptFn: () => Promise<{
57
- cleanup: () => Promise<void>;
58
- }>): Promise<void>;
63
+ export declare function runTestWithRetries(name: string, attemptFn: () => Promise<void>): Promise<void>;
64
+ declare function createTestRunner(testFn: (typeof test | typeof test.only)["concurrent"], envType: "dev" | "deploy"): (name: string, testLogic: (context: {
65
+ devServer?: DevServerInstance;
66
+ deployment?: DeploymentInstance;
67
+ browser: Browser;
68
+ page: Page;
69
+ url: string;
70
+ }) => Promise<void>) => void;
59
71
  /**
60
72
  * High-level test wrapper for dev server tests.
61
73
  * Automatically skips if RWSDK_SKIP_DEV=1
62
74
  */
63
- export declare function testDev(name: string, testFn: (context: {
64
- devServer: DevServerInstance;
65
- browser: Browser;
66
- page: Page;
67
- url: string;
68
- }) => Promise<void>): void;
75
+ export declare function testDev(...args: Parameters<ReturnType<typeof createTestRunner>>): void;
69
76
  export declare namespace testDev {
70
77
  var skip: (name: string, testFn?: any) => void;
71
- var only: (name: string, testFn: (context: {
72
- devServer: DevServerInstance;
78
+ var only: (name: string, testLogic: (context: {
79
+ devServer?: DevServerInstance;
80
+ deployment?: DeploymentInstance;
73
81
  browser: Browser;
74
82
  page: Page;
75
83
  url: string;
@@ -79,16 +87,12 @@ export declare namespace testDev {
79
87
  * High-level test wrapper for deployment tests.
80
88
  * Automatically skips if RWSDK_SKIP_DEPLOY=1
81
89
  */
82
- export declare function testDeploy(name: string, testFn: (context: {
83
- deployment: DeploymentInstance;
84
- browser: Browser;
85
- page: Page;
86
- url: string;
87
- }) => Promise<void>): void;
90
+ export declare function testDeploy(...args: Parameters<ReturnType<typeof createTestRunner>>): void;
88
91
  export declare namespace testDeploy {
89
92
  var skip: (name: string, testFn?: any) => void;
90
- var only: (name: string, testFn: (context: {
91
- deployment: DeploymentInstance;
93
+ var only: (name: string, testLogic: (context: {
94
+ devServer?: DevServerInstance;
95
+ deployment?: DeploymentInstance;
92
96
  browser: Browser;
93
97
  page: Page;
94
98
  url: string;
@@ -116,8 +120,13 @@ export declare namespace testDevAndDeploy {
116
120
  }) => Promise<void>) => void;
117
121
  }
118
122
  /**
119
- * Utility function for polling/retrying assertions
123
+ * Waits for the page to be fully loaded and hydrated.
124
+ * This should be used before any user interaction is simulated.
120
125
  */
121
- export declare function poll(fn: () => Promise<boolean>, timeout?: number, // 2 minutes
122
- interval?: number): Promise<void>;
123
- export {};
126
+ export declare function waitForHydration(page: Page): Promise<void>;
127
+ export declare function trackPageErrors(page: Page): {
128
+ get: () => {
129
+ consoleErrors: string[];
130
+ failedRequests: string[];
131
+ };
132
+ };