@webstir-io/webstir-backend 0.1.15 → 0.1.16

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 (123) hide show
  1. package/README.md +106 -79
  2. package/dist/add.d.ts +59 -0
  3. package/dist/add.js +626 -0
  4. package/dist/build/artifacts.d.ts +115 -1
  5. package/dist/build/artifacts.js +4 -4
  6. package/dist/build/entries.js +1 -1
  7. package/dist/build/pipeline.d.ts +33 -1
  8. package/dist/build/pipeline.js +307 -65
  9. package/dist/cache/diff.js +9 -8
  10. package/dist/cache/reporters.js +1 -1
  11. package/dist/deploy-cli.d.ts +2 -0
  12. package/dist/deploy-cli.js +86 -0
  13. package/dist/diagnostics/summary.js +2 -2
  14. package/dist/index.d.ts +6 -0
  15. package/dist/index.js +4 -0
  16. package/dist/manifest/pipeline.js +103 -32
  17. package/dist/provider.js +35 -17
  18. package/dist/runtime/bun.d.ts +51 -0
  19. package/dist/runtime/bun.js +499 -0
  20. package/dist/runtime/core.d.ts +141 -0
  21. package/dist/runtime/core.js +316 -0
  22. package/dist/runtime/deploy-backend.d.ts +20 -0
  23. package/dist/runtime/deploy-backend.js +175 -0
  24. package/dist/runtime/deploy-shared.d.ts +43 -0
  25. package/dist/runtime/deploy-shared.js +75 -0
  26. package/dist/runtime/deploy-static.d.ts +2 -0
  27. package/dist/runtime/deploy-static.js +161 -0
  28. package/dist/runtime/deploy.d.ts +3 -0
  29. package/dist/runtime/deploy.js +91 -0
  30. package/dist/runtime/forms.d.ts +73 -0
  31. package/dist/runtime/forms.js +236 -0
  32. package/dist/runtime/request-hooks.d.ts +47 -0
  33. package/dist/runtime/request-hooks.js +102 -0
  34. package/dist/runtime/session-metadata.d.ts +13 -0
  35. package/dist/runtime/session-metadata.js +98 -0
  36. package/dist/runtime/session-runtime.d.ts +28 -0
  37. package/dist/runtime/session-runtime.js +180 -0
  38. package/dist/runtime/session.d.ts +83 -0
  39. package/dist/runtime/session.js +396 -0
  40. package/dist/runtime/views.d.ts +74 -0
  41. package/dist/runtime/views.js +221 -0
  42. package/dist/scaffold/assets.js +25 -21
  43. package/dist/testing/context.js +1 -1
  44. package/dist/testing/index.d.ts +1 -1
  45. package/dist/testing/index.js +100 -56
  46. package/dist/utils/bun.d.ts +2 -0
  47. package/dist/utils/bun.js +13 -0
  48. package/dist/watch.d.ts +13 -1
  49. package/dist/watch.js +345 -97
  50. package/dist/workspace.d.ts +8 -0
  51. package/dist/workspace.js +44 -3
  52. package/package.json +49 -14
  53. package/scripts/publish.sh +2 -92
  54. package/scripts/smoke.mjs +282 -107
  55. package/scripts/update-contract.sh +12 -10
  56. package/src/add.ts +964 -0
  57. package/src/build/artifacts.ts +49 -46
  58. package/src/build/entries.ts +12 -12
  59. package/src/build/pipeline.ts +779 -403
  60. package/src/cache/diff.ts +111 -105
  61. package/src/cache/reporters.ts +26 -26
  62. package/src/deploy-cli.ts +111 -0
  63. package/src/diagnostics/summary.ts +28 -22
  64. package/src/index.ts +11 -0
  65. package/src/manifest/pipeline.ts +328 -215
  66. package/src/provider.ts +115 -98
  67. package/src/runtime/bun.ts +793 -0
  68. package/src/runtime/core.ts +598 -0
  69. package/src/runtime/deploy-backend.ts +239 -0
  70. package/src/runtime/deploy-shared.ts +136 -0
  71. package/src/runtime/deploy-static.ts +191 -0
  72. package/src/runtime/deploy.ts +143 -0
  73. package/src/runtime/forms.ts +364 -0
  74. package/src/runtime/request-hooks.ts +165 -0
  75. package/src/runtime/session-metadata.ts +135 -0
  76. package/src/runtime/session-runtime.ts +267 -0
  77. package/src/runtime/session.ts +642 -0
  78. package/src/runtime/views.ts +385 -0
  79. package/src/scaffold/assets.ts +77 -73
  80. package/src/testing/context.js +8 -9
  81. package/src/testing/context.ts +9 -9
  82. package/src/testing/index.d.ts +14 -3
  83. package/src/testing/index.js +254 -175
  84. package/src/testing/index.ts +298 -195
  85. package/src/testing/types.d.ts +18 -19
  86. package/src/testing/types.ts +18 -18
  87. package/src/utils/bun.ts +26 -0
  88. package/src/watch.ts +503 -99
  89. package/src/workspace.ts +59 -3
  90. package/templates/backend/.env.example +15 -0
  91. package/templates/backend/auth/adapter.ts +335 -36
  92. package/templates/backend/db/connection.ts +190 -65
  93. package/templates/backend/db/migrate.ts +149 -43
  94. package/templates/backend/db/types.d.ts +1 -1
  95. package/templates/backend/env.ts +132 -20
  96. package/templates/backend/functions/hello/index.ts +1 -2
  97. package/templates/backend/index.ts +15 -508
  98. package/templates/backend/jobs/nightly/index.ts +1 -1
  99. package/templates/backend/jobs/runtime.ts +24 -11
  100. package/templates/backend/jobs/scheduler.ts +208 -46
  101. package/templates/backend/module.ts +227 -13
  102. package/templates/backend/observability/logger.ts +2 -12
  103. package/templates/backend/observability/metrics.ts +8 -5
  104. package/templates/backend/session/sqlite.ts +152 -0
  105. package/templates/backend/session/store.ts +45 -0
  106. package/templates/backend/tsconfig.json +1 -1
  107. package/tests/add.test.js +327 -0
  108. package/tests/authAdapter.test.js +315 -0
  109. package/tests/bundlerParity.test.js +217 -0
  110. package/tests/cacheReporter.test.js +10 -10
  111. package/tests/dbConnection.test.js +209 -0
  112. package/tests/deploy.test.js +357 -0
  113. package/tests/envLoader.test.js +271 -17
  114. package/tests/integration.test.js +2432 -3
  115. package/tests/jobsScheduler.test.js +253 -0
  116. package/tests/manifest.test.js +287 -12
  117. package/tests/migrationRunner.test.js +249 -0
  118. package/tests/sessionScaffoldStore.test.js +752 -0
  119. package/tests/sessionStore.test.js +490 -0
  120. package/tests/testing.test.js +252 -0
  121. package/tests/watch.test.js +192 -32
  122. package/tsconfig.json +3 -10
  123. package/templates/backend/server/fastify.ts +0 -288
@@ -6,62 +6,65 @@ import type { ModuleArtifact, ModuleDiagnostic, ModuleManifest } from '@webstir-
6
6
 
7
7
  import { pushEntryBucketSummary } from '../diagnostics/summary.js';
8
8
 
9
- export async function collectArtifacts(buildRoot: string, includeSourceMaps: boolean): Promise<ModuleArtifact[]> {
10
- const patterns = ['**/*.js'];
11
- if (includeSourceMaps) {
12
- patterns.push('**/*.js.map');
13
- }
14
- const matches = new Set<string>();
15
- for (const pattern of patterns) {
16
- const files = await glob(pattern, {
17
- cwd: buildRoot,
18
- nodir: true,
19
- dot: false
20
- });
21
- for (const relativePath of files) {
22
- matches.add(relativePath);
23
- }
9
+ export async function collectArtifacts(
10
+ buildRoot: string,
11
+ includeSourceMaps: boolean,
12
+ ): Promise<ModuleArtifact[]> {
13
+ const patterns = ['**/*.js'];
14
+ if (includeSourceMaps) {
15
+ patterns.push('**/*.js.map');
16
+ }
17
+ const matches = new Set<string>();
18
+ for (const pattern of patterns) {
19
+ const files = await glob(pattern, {
20
+ cwd: buildRoot,
21
+ nodir: true,
22
+ dot: false,
23
+ });
24
+ for (const relativePath of files) {
25
+ matches.add(relativePath);
24
26
  }
27
+ }
25
28
 
26
- return Array.from(matches).map<ModuleArtifact>((relativePath) => ({
27
- path: path.join(buildRoot, relativePath),
28
- type: relativePath.endsWith('.map') ? 'asset' : 'bundle'
29
- }));
29
+ return Array.from(matches).map<ModuleArtifact>((relativePath) => ({
30
+ path: path.join(buildRoot, relativePath),
31
+ type: relativePath.endsWith('.map') ? 'asset' : 'bundle',
32
+ }));
30
33
  }
31
34
 
32
35
  export function createBuildManifest(
33
- buildRoot: string,
34
- artifacts: readonly ModuleArtifact[],
35
- diagnostics: ModuleDiagnostic[],
36
- moduleManifest: ModuleManifest
36
+ buildRoot: string,
37
+ artifacts: readonly ModuleArtifact[],
38
+ diagnostics: ModuleDiagnostic[],
39
+ moduleManifest: ModuleManifest,
37
40
  ) {
38
- const entryPoints: string[] = [];
41
+ const entryPoints: string[] = [];
39
42
 
40
- for (const artifact of artifacts) {
41
- const relative = path.relative(buildRoot, artifact.path);
42
- if (relative.endsWith('index.js')) {
43
- entryPoints.push(relative);
44
- }
43
+ for (const artifact of artifacts) {
44
+ const relative = path.relative(buildRoot, artifact.path);
45
+ if (relative.endsWith('index.js')) {
46
+ entryPoints.push(relative);
45
47
  }
48
+ }
46
49
 
47
- if (entryPoints.length === 0) {
48
- const defaultEntry = path.join(buildRoot, 'index.js');
49
- if (existsSync(defaultEntry)) {
50
- entryPoints.push(path.relative(buildRoot, defaultEntry));
51
- } else {
52
- diagnostics.push({
53
- severity: 'warn',
54
- message: 'No backend entry point found (expected index.js).'
55
- });
56
- }
50
+ if (entryPoints.length === 0) {
51
+ const defaultEntry = path.join(buildRoot, 'index.js');
52
+ if (existsSync(defaultEntry)) {
53
+ entryPoints.push(path.relative(buildRoot, defaultEntry));
54
+ } else {
55
+ diagnostics.push({
56
+ severity: 'warn',
57
+ message: 'No backend entry point found (expected index.js).',
58
+ });
57
59
  }
60
+ }
58
61
 
59
- pushEntryBucketSummary(diagnostics, entryPoints);
62
+ pushEntryBucketSummary(diagnostics, entryPoints);
60
63
 
61
- return {
62
- entryPoints,
63
- staticAssets: [],
64
- diagnostics,
65
- module: moduleManifest
66
- };
64
+ return {
65
+ entryPoints,
66
+ staticAssets: [],
67
+ diagnostics,
68
+ module: moduleManifest,
69
+ };
67
70
  }
@@ -3,17 +3,17 @@ import path from 'node:path';
3
3
  import { glob } from 'glob';
4
4
 
5
5
  export async function discoverEntryPoints(sourceRoot: string): Promise<string[]> {
6
- const patterns = [
7
- 'index.{ts,tsx,js,mjs}',
8
- 'functions/*/index.{ts,tsx,js,mjs}',
9
- 'jobs/*/index.{ts,tsx,js,mjs}'
10
- ];
11
- const entries = new Set<string>();
12
- for (const pattern of patterns) {
13
- const matches = await glob(pattern, { cwd: sourceRoot, nodir: true, dot: false });
14
- for (const rel of matches) {
15
- entries.add(path.join(sourceRoot, rel));
16
- }
6
+ const patterns = [
7
+ 'index.{ts,tsx,js,mjs}',
8
+ 'functions/*/index.{ts,tsx,js,mjs}',
9
+ 'jobs/*/index.{ts,tsx,js,mjs}',
10
+ ];
11
+ const entries = new Set<string>();
12
+ for (const pattern of patterns) {
13
+ const matches = await glob(pattern, { cwd: sourceRoot, nodir: true, dot: false });
14
+ for (const rel of matches) {
15
+ entries.add(path.join(sourceRoot, rel));
17
16
  }
18
- return Array.from(entries);
17
+ }
18
+ return Array.from(entries);
19
19
  }