@linktr.ee/linkapp 0.0.21 → 0.0.23

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 (115) hide show
  1. package/dev-server/README.md +5 -5
  2. package/dev-server/components/SettingsPreview.tsx +330 -0
  3. package/dev-server/components/ui/dialog.tsx +6 -3
  4. package/dev-server/env.d.ts +8 -0
  5. package/dev-server/featured/main.tsx +48 -43
  6. package/dev-server/featured.html +21 -35
  7. package/dev-server/index.html +8 -1
  8. package/dev-server/lib/utils.ts +6 -0
  9. package/dev-server/package-lock.json +245 -287
  10. package/dev-server/package.json +7 -4
  11. package/dev-server/postcss/tailwind-source-fallback.js +94 -0
  12. package/dev-server/postcss.config.mjs +30 -0
  13. package/dev-server/preview/Preview.tsx +182 -381
  14. package/dev-server/preview/preview.css +22 -34
  15. package/dev-server/public/apple-touch-icon.png +0 -0
  16. package/dev-server/public/favicon-96x96.png +0 -0
  17. package/dev-server/public/favicon.ico +0 -0
  18. package/dev-server/public/favicon.svg +6 -0
  19. package/dev-server/public/site.webmanifest +21 -0
  20. package/dev-server/public/web-app-manifest-192x192.png +0 -0
  21. package/dev-server/public/web-app-manifest-512x512.png +0 -0
  22. package/dev-server/rsbuild.config.ts +45 -0
  23. package/dev-server/shared/theme-presets.ts +315 -0
  24. package/dev-server/shared/theme-utils.ts +38 -0
  25. package/dev-server/sheet/main.tsx +44 -0
  26. package/dev-server/sheet.html +56 -0
  27. package/dist/commands/add.d.ts.map +1 -1
  28. package/dist/commands/add.js +20 -12
  29. package/dist/commands/add.js.map +1 -1
  30. package/dist/commands/build.d.ts.map +1 -1
  31. package/dist/commands/build.js +55 -36
  32. package/dist/commands/build.js.map +1 -1
  33. package/dist/commands/deploy.d.ts.map +1 -1
  34. package/dist/commands/deploy.js +74 -59
  35. package/dist/commands/deploy.js.map +1 -1
  36. package/dist/commands/dev.d.ts.map +1 -1
  37. package/dist/commands/dev.js +564 -43
  38. package/dist/commands/dev.js.map +1 -1
  39. package/dist/commands/login.d.ts.map +1 -1
  40. package/dist/commands/login.js +19 -9
  41. package/dist/commands/login.js.map +1 -1
  42. package/dist/commands/logout.d.ts.map +1 -1
  43. package/dist/commands/logout.js +9 -4
  44. package/dist/commands/logout.js.map +1 -1
  45. package/dist/commands/test-url-match-rules.d.ts.map +1 -1
  46. package/dist/commands/test-url-match-rules.js +24 -13
  47. package/dist/commands/test-url-match-rules.js.map +1 -1
  48. package/dist/components/index.d.ts +0 -1
  49. package/dist/components/index.d.ts.map +1 -1
  50. package/dist/components/index.js +2 -1
  51. package/dist/components/index.js.map +1 -1
  52. package/dist/lib/auth/device-flow.d.ts +1 -6
  53. package/dist/lib/auth/device-flow.d.ts.map +1 -1
  54. package/dist/lib/auth/device-flow.js +3 -9
  55. package/dist/lib/auth/device-flow.js.map +1 -1
  56. package/dist/lib/auth/token-storage.d.ts +0 -5
  57. package/dist/lib/auth/token-storage.d.ts.map +1 -1
  58. package/dist/lib/auth/token-storage.js +16 -14
  59. package/dist/lib/auth/token-storage.js.map +1 -1
  60. package/dist/lib/build/detect-layouts.d.ts +1 -1
  61. package/dist/lib/build/detect-layouts.d.ts.map +1 -1
  62. package/dist/lib/build/detect-layouts.js +8 -7
  63. package/dist/lib/build/detect-layouts.js.map +1 -1
  64. package/dist/lib/deploy/generate-manifest-files.js +1 -1
  65. package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
  66. package/dist/lib/deploy/pack-project.js +2 -2
  67. package/dist/lib/deploy/pack-project.js.map +1 -1
  68. package/dist/lib/deploy/test-url-match-rules.d.ts +2 -1
  69. package/dist/lib/deploy/test-url-match-rules.d.ts.map +1 -1
  70. package/dist/lib/deploy/test-url-match-rules.js +1 -1
  71. package/dist/lib/deploy/test-url-match-rules.js.map +1 -1
  72. package/dist/lib/deploy/upload.d.ts.map +1 -1
  73. package/dist/lib/deploy/upload.js +7 -3
  74. package/dist/lib/deploy/upload.js.map +1 -1
  75. package/dist/lib/deploy/validation.d.ts.map +1 -1
  76. package/dist/lib/deploy/validation.js +8 -5
  77. package/dist/lib/deploy/validation.js.map +1 -1
  78. package/dist/lib/rsbuild/config-factory.d.ts +24 -0
  79. package/dist/lib/rsbuild/config-factory.d.ts.map +1 -0
  80. package/dist/lib/rsbuild/config-factory.js +135 -0
  81. package/dist/lib/rsbuild/config-factory.js.map +1 -0
  82. package/dist/lib/rsbuild/plugins/asset-versioning.d.ts +11 -0
  83. package/dist/lib/rsbuild/plugins/asset-versioning.d.ts.map +1 -0
  84. package/dist/lib/rsbuild/plugins/asset-versioning.js +62 -0
  85. package/dist/lib/rsbuild/plugins/asset-versioning.js.map +1 -0
  86. package/dist/lib/rsbuild/plugins/copy-public.d.ts +11 -0
  87. package/dist/lib/rsbuild/plugins/copy-public.d.ts.map +1 -0
  88. package/dist/lib/rsbuild/plugins/copy-public.js +32 -0
  89. package/dist/lib/rsbuild/plugins/copy-public.js.map +1 -0
  90. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts +12 -0
  91. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts.map +1 -0
  92. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js +60 -0
  93. package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js.map +1 -0
  94. package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
  95. package/dist/lib/utils/setup-runtime.js +78 -17
  96. package/dist/lib/utils/setup-runtime.js.map +1 -1
  97. package/dist/lib/vite/config-factory.d.ts.map +1 -1
  98. package/dist/lib/vite/config-factory.js +8 -3
  99. package/dist/lib/vite/config-factory.js.map +1 -1
  100. package/dist/lib/vite/plugins/copy-public.d.ts +12 -0
  101. package/dist/lib/vite/plugins/copy-public.d.ts.map +1 -0
  102. package/dist/lib/vite/plugins/copy-public.js +31 -0
  103. package/dist/lib/vite/plugins/copy-public.js.map +1 -0
  104. package/dist/schema/config.schema.d.ts +121 -32
  105. package/dist/schema/config.schema.d.ts.map +1 -1
  106. package/dist/schema/config.schema.js +28 -17
  107. package/dist/schema/config.schema.js.map +1 -1
  108. package/dist/types.d.ts +6 -57
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/types.js.map +1 -1
  111. package/package.json +7 -4
  112. package/runtime/index.html +19 -36
  113. package/dev-server/classic/main.tsx +0 -62
  114. package/dev-server/classic.html +0 -70
  115. package/dev-server/vite.config.ts +0 -29
@@ -19,6 +19,7 @@ export async function uploadAssets(options) {
19
19
  }
20
20
  const form = new FormData();
21
21
  // Add required files with correct content types
22
+ // Note: linkTypeId is read from linkapp.config.ts inside the package, not sent as a form field
22
23
  form.append('package', createReadStream(packagePath), {
23
24
  contentType: 'application/gzip',
24
25
  filename: 'package.tgz',
@@ -54,8 +55,7 @@ export async function uploadAssets(options) {
54
55
  headers['force-update'] = 'true';
55
56
  }
56
57
  const method = options.isUpdate ? 'put' : 'post';
57
- // Use the same base URL for both POST and PUT
58
- // The API determines create vs update based on the request method, not the URL path
58
+ // Use the same URL for both POST and PUT - backend determines create vs update from linkTypeId in form data
59
59
  const url = options.apiUrl;
60
60
  try {
61
61
  const response = await axios[method](url, form, { headers });
@@ -93,7 +93,11 @@ export async function checkLinkAppExists(apiUrl, linkAppId, accessToken) {
93
93
  return response.data?.linkTypeId === linkAppId;
94
94
  }
95
95
  catch (error) {
96
- // Any error (including 404) means the LinkApp doesn't exist or can't be accessed
96
+ // Check if 404 - linkApp with this specific ID doesn't exist
97
+ if (axios.isAxiosError(error) && error.response?.status === 404) {
98
+ return false;
99
+ }
100
+ // For other errors, assume it doesn't exist
97
101
  return false;
98
102
  }
99
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/lib/deploy/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/lib/deploy/upload.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"AAKA,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgDpG;AA6CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAqBrE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"AASA,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,eAAe,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgDpG;AA6CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAqBrE"}
@@ -2,6 +2,9 @@ import { existsSync, statSync, readdirSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { spawn } from 'node:child_process';
4
4
  import pc from 'picocolors';
5
+ const writeLine = (message = '') => {
6
+ process.stdout.write(`${message}\n`);
7
+ };
5
8
  export async function validateProject(projectPath = process.cwd()) {
6
9
  const result = {
7
10
  success: true,
@@ -86,21 +89,21 @@ function getDirSize(dirPath) {
86
89
  export function printValidationResults(result) {
87
90
  // Show errors first if any
88
91
  if (result.errors.length > 0) {
89
- console.log(pc.red(pc.bold('\n ✗ Errors:')));
92
+ writeLine(pc.red(pc.bold('\n ✗ Errors:')));
90
93
  for (const error of result.errors) {
91
- console.log(pc.red(` • ${error}`));
94
+ writeLine(pc.red(` • ${error}`));
92
95
  }
93
96
  }
94
97
  // Show warnings if any
95
98
  if (result.warnings.length > 0) {
96
- console.log(pc.yellow(pc.bold('\n ⚠ Warnings:')));
99
+ writeLine(pc.yellow(pc.bold('\n ⚠ Warnings:')));
97
100
  for (const warning of result.warnings) {
98
- console.log(pc.yellow(` • ${warning}`));
101
+ writeLine(pc.yellow(` • ${warning}`));
99
102
  }
100
103
  }
101
104
  // Show success if no errors
102
105
  if (result.success && result.errors.length === 0) {
103
- console.log(pc.green(pc.bold('\n ✓ Validation passed')));
106
+ writeLine(pc.green(pc.bold('\n ✓ Validation passed')));
104
107
  }
105
108
  }
106
109
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/lib/deploy/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { RsbuildConfig } from '@rsbuild/core';
2
+ /**
3
+ * Environment Variables:
4
+ * - Rsbuild automatically injects process.env.NODE_ENV
5
+ * - Use source.define to inject custom build-time constants
6
+ * - For runtime env vars, prefix with PUBLIC_ (e.g., PUBLIC_API_KEY)
7
+ * and they will be available as import.meta.env.PUBLIC_API_KEY
8
+ *
9
+ * PostCSS & Tailwind CSS:
10
+ * - Rsbuild loads postcss.config.* files from the user's project root
11
+ * - For Tailwind CSS v4, users should create postcss.config.mjs with @tailwindcss/postcss
12
+ * - We let Rsbuild handle loading user's PostCSS config to avoid version conflicts
13
+ */
14
+ interface RsbuildConfigOptions {
15
+ mode: 'development' | 'production';
16
+ port?: number;
17
+ host?: string;
18
+ open?: boolean;
19
+ sourcemap?: boolean;
20
+ profile?: boolean;
21
+ }
22
+ export declare function createRsbuildConfig(options: RsbuildConfigOptions): RsbuildConfig;
23
+ export {};
24
+ //# sourceMappingURL=config-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-factory.d.ts","sourceRoot":"","sources":["../../../src/lib/rsbuild/config-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAOlD;;;;;;;;;;;GAWG;AAEH,UAAU,oBAAoB;IAC5B,IAAI,EAAE,aAAa,GAAG,YAAY,CAAA;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA2IhF"}
@@ -0,0 +1,135 @@
1
+ import { pluginReact } from '@rsbuild/plugin-react';
2
+ import { resolve, join } from 'node:path';
3
+ import { assetVersioning } from './plugins/asset-versioning.js';
4
+ import { setupRuntime } from '../utils/setup-runtime.js';
5
+ import { copyPublicDirectory } from './plugins/copy-public.js';
6
+ export function createRsbuildConfig(options) {
7
+ const { mode, port = 3000, host = 'localhost', open = false, sourcemap = false, profile = false } = options;
8
+ const isDev = mode === 'development';
9
+ const projectRoot = process.cwd();
10
+ const runtimeRoot = join(projectRoot, '.linkapp');
11
+ const hashedJsFilename = isDev ? '[name].js' : '[name].[contenthash:8].js';
12
+ const hashedCssFilename = isDev ? '[name].css' : '[name].[contenthash:8].css';
13
+ const hashedSvgFilename = isDev ? '[name].svg' : '[name].[contenthash:8].svg';
14
+ const hashedAssetFilename = isDev ? '[name][ext]' : '[name].[contenthash:8][ext]';
15
+ // Setup runtime files in user's project
16
+ setupRuntime(projectRoot);
17
+ const config = {
18
+ mode,
19
+ root: runtimeRoot,
20
+ plugins: [pluginReact()],
21
+ source: {
22
+ entry: {
23
+ index: join(runtimeRoot, 'main.tsx'),
24
+ },
25
+ define: {},
26
+ },
27
+ resolve: {
28
+ alias: {
29
+ '@': resolve(projectRoot),
30
+ },
31
+ dedupe: ['react', 'react-dom'],
32
+ },
33
+ html: {
34
+ template: join(runtimeRoot, 'index.html'),
35
+ },
36
+ output: {
37
+ distPath: {
38
+ root: join(projectRoot, 'dist'),
39
+ js: '.',
40
+ jsAsync: '.',
41
+ css: '.',
42
+ cssAsync: '.',
43
+ svg: '.',
44
+ font: '.',
45
+ image: '.',
46
+ media: '.',
47
+ assets: '.',
48
+ },
49
+ assetPrefix: './',
50
+ cleanDistPath: true,
51
+ sourceMap: sourcemap
52
+ ? {
53
+ js: 'hidden-source-map',
54
+ css: true,
55
+ }
56
+ : false,
57
+ minify: !isDev,
58
+ filename: {
59
+ js: hashedJsFilename,
60
+ css: hashedCssFilename,
61
+ svg: hashedSvgFilename,
62
+ font: hashedAssetFilename,
63
+ image: hashedAssetFilename,
64
+ media: hashedAssetFilename,
65
+ assets: hashedAssetFilename,
66
+ },
67
+ filenameHash: true,
68
+ legalComments: 'none',
69
+ injectStyles: false, // Extract CSS to separate files
70
+ },
71
+ server: {
72
+ port,
73
+ host,
74
+ open,
75
+ headers: {
76
+ 'Access-Control-Allow-Origin': '*',
77
+ },
78
+ strictPort: false,
79
+ publicDir: {
80
+ name: join(projectRoot, 'public'),
81
+ copyOnBuild: true,
82
+ },
83
+ },
84
+ tools: {
85
+ postcss: (opts) => {
86
+ // Let Rsbuild load the user's postcss.config.* file for Tailwind v4 support
87
+ // Rsbuild will handle the version compatibility between user's postcss and its compiled version
88
+ opts.postcssOptions = opts.postcssOptions || {};
89
+ opts.sourceMap = sourcemap;
90
+ if (sourcemap) {
91
+ const currentMap = opts.postcssOptions.map;
92
+ if (currentMap && typeof currentMap === 'object') {
93
+ opts.postcssOptions.map = {
94
+ ...currentMap,
95
+ inline: false,
96
+ annotation: false,
97
+ };
98
+ }
99
+ else {
100
+ opts.postcssOptions.map = {
101
+ inline: false,
102
+ annotation: false,
103
+ };
104
+ }
105
+ }
106
+ else {
107
+ opts.postcssOptions.map = false;
108
+ }
109
+ return opts;
110
+ },
111
+ },
112
+ performance: {
113
+ printFileSize: !isDev,
114
+ chunkSplit: {
115
+ strategy: 'split-by-experience',
116
+ },
117
+ },
118
+ };
119
+ // Add production-only plugins
120
+ if (!isDev) {
121
+ config.plugins = config.plugins || [];
122
+ config.plugins.push(copyPublicDirectory({
123
+ publicDir: join(projectRoot, 'public'),
124
+ outDir: join(projectRoot, 'dist'),
125
+ }), assetVersioning({
126
+ manifestPath: 'build-manifest.json',
127
+ }));
128
+ // Add bundle analyzer if requested
129
+ if (profile) {
130
+ console.warn('⚠️ Bundle profiling is not available yet in Rsbuild config. Use --sourcemap flag and analyze with external tools.');
131
+ }
132
+ }
133
+ return config;
134
+ }
135
+ //# sourceMappingURL=config-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-factory.js","sourceRoot":"","sources":["../../../src/lib/rsbuild/config-factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAwB9D,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,WAAW,EAAE,IAAI,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAE3G,MAAM,KAAK,GAAG,IAAI,KAAK,aAAa,CAAA;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IACjD,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAA;IAC1E,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAA;IAC7E,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,CAAA;IAC7E,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6BAA6B,CAAA;IAEjF,wCAAwC;IACxC,YAAY,CAAC,WAAW,CAAC,CAAA;IAEzB,MAAM,MAAM,GAAkB;QAC5B,IAAI;QACJ,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;aACrC;YACD,MAAM,EAAE,EAAE;SACX;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC;aAC1B;YACD,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;SAC/B;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC;SAC1C;QACD,MAAM,EAAE;YACN,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;gBAC/B,EAAE,EAAE,GAAG;gBACP,OAAO,EAAE,GAAG;gBACZ,GAAG,EAAE,GAAG;gBACR,QAAQ,EAAE,GAAG;gBACb,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;aACZ;YACD,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,SAAS;gBAClB,CAAC,CAAC;oBACE,EAAE,EAAE,mBAAmB;oBACvB,GAAG,EAAE,IAAI;iBACV;gBACH,CAAC,CAAC,KAAK;YACT,MAAM,EAAE,CAAC,KAAK;YACd,QAAQ,EAAE;gBACR,EAAE,EAAE,gBAAgB;gBACpB,GAAG,EAAE,iBAAiB;gBACtB,GAAG,EAAE,iBAAiB;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,mBAAmB;gBAC1B,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,mBAAmB;aAC5B;YACD,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,MAAM;YACrB,YAAY,EAAE,KAAK,EAAE,gCAAgC;SACtD;QACD,MAAM,EAAE;YACN,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,OAAO,EAAE;gBACP,6BAA6B,EAAE,GAAG;aACnC;YACD,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE;gBACT,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACjC,WAAW,EAAE,IAAI;aAClB;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,IAAS,EAAE,EAAE;gBACrB,4EAA4E;gBAC5E,gGAAgG;gBAChG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAA;gBAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;gBAE1B,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAA;oBAC1C,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;wBACjD,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG;4BACxB,GAAG,UAAU;4BACb,MAAM,EAAE,KAAK;4BACb,UAAU,EAAE,KAAK;yBAClB,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG;4BACxB,MAAM,EAAE,KAAK;4BACb,UAAU,EAAE,KAAK;yBAClB,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,KAAK,CAAA;gBACjC,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC;SACF;QACD,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,KAAK;YACrB,UAAU,EAAE;gBACV,QAAQ,EAAE,qBAAqB;aAChC;SACF;KACF,CAAA;IAED,8BAA8B;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;QACrC,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,mBAAmB,CAAC;YAClB,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;SAClC,CAAC,EACF,eAAe,CAAC;YACd,YAAY,EAAE,qBAAqB;SACpC,CAAC,CACH,CAAA;QAED,mCAAmC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CACV,oHAAoH,CACrH,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { RsbuildPlugin } from '@rsbuild/core';
2
+ interface AssetVersioningOptions {
3
+ manifestPath?: string;
4
+ }
5
+ /**
6
+ * Rsbuild plugin that creates a build manifest with versioned assets
7
+ * This helps invalidate cache on deployment
8
+ */
9
+ export declare function assetVersioning(options?: AssetVersioningOptions): RsbuildPlugin;
10
+ export {};
11
+ //# sourceMappingURL=asset-versioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-versioning.d.ts","sourceRoot":"","sources":["../../../../src/lib/rsbuild/plugins/asset-versioning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAKlD,UAAU,sBAAsB;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa,CA4DnF"}
@@ -0,0 +1,62 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { writeFileSync, mkdirSync } from 'node:fs';
3
+ import { join, dirname } from 'node:path';
4
+ /**
5
+ * Rsbuild plugin that creates a build manifest with versioned assets
6
+ * This helps invalidate cache on deployment
7
+ */
8
+ export function assetVersioning(options = {}) {
9
+ const manifestPath = options.manifestPath || 'build-manifest.json';
10
+ const manifest = {};
11
+ return {
12
+ name: 'linkapp:asset-versioning',
13
+ setup(api) {
14
+ api.onAfterBuild(({ stats }) => {
15
+ if (!stats)
16
+ return;
17
+ // Clear previous manifest
18
+ Object.keys(manifest).forEach((key) => delete manifest[key]);
19
+ const statsJson = stats.toJson({ assets: true, chunks: true });
20
+ // Collect all asset mappings
21
+ if (statsJson.assets) {
22
+ for (const asset of statsJson.assets) {
23
+ if (asset.name) {
24
+ // Store original name -> hashed name mapping
25
+ const originalName = asset.name.replace(/\.[a-f0-9]+\./, '.');
26
+ manifest[originalName] = asset.name;
27
+ }
28
+ }
29
+ }
30
+ // Mark entry chunks
31
+ if (statsJson.entrypoints) {
32
+ for (const [_entryName, entry] of Object.entries(statsJson.entrypoints)) {
33
+ if (entry && typeof entry === 'object' && 'assets' in entry) {
34
+ const entryAssets = entry.assets;
35
+ for (const asset of entryAssets) {
36
+ manifest[`${asset.name}.entry`] = 'true';
37
+ }
38
+ }
39
+ }
40
+ }
41
+ // Add build timestamp
42
+ manifest['_buildTime'] = new Date().toISOString();
43
+ manifest['_buildHash'] = createHash('sha256')
44
+ .update(JSON.stringify(manifest))
45
+ .digest('hex')
46
+ .slice(0, 8);
47
+ // Write manifest to disk
48
+ const outDir = join(process.cwd(), 'dist');
49
+ const fullPath = join(outDir, manifestPath);
50
+ try {
51
+ // Ensure the output directory exists
52
+ mkdirSync(dirname(fullPath), { recursive: true });
53
+ writeFileSync(fullPath, JSON.stringify(manifest, null, 2));
54
+ }
55
+ catch (error) {
56
+ console.warn('Failed to write build manifest:', error);
57
+ }
58
+ });
59
+ },
60
+ };
61
+ }
62
+ //# sourceMappingURL=asset-versioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-versioning.js","sourceRoot":"","sources":["../../../../src/lib/rsbuild/plugins/asset-versioning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { RsbuildPlugin } from '@rsbuild/core';
2
+ interface CopyPublicOptions {
3
+ publicDir: string;
4
+ outDir: string;
5
+ }
6
+ /**
7
+ * Rsbuild plugin that ensures public directory files are copied to dist
8
+ */
9
+ export declare function copyPublicDirectory(options: CopyPublicOptions): RsbuildPlugin;
10
+ export {};
11
+ //# sourceMappingURL=copy-public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-public.d.ts","sourceRoot":"","sources":["../../../../src/lib/rsbuild/plugins/copy-public.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGlD,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,aAAa,CA4B7E"}
@@ -0,0 +1,32 @@
1
+ import { cpSync, existsSync } from 'node:fs';
2
+ /**
3
+ * Rsbuild plugin that ensures public directory files are copied to dist
4
+ */
5
+ export function copyPublicDirectory(options) {
6
+ return {
7
+ name: 'linkapp:copy-public',
8
+ setup(api) {
9
+ api.onAfterBuild(() => {
10
+ const { publicDir, outDir } = options;
11
+ if (!existsSync(publicDir)) {
12
+ return;
13
+ }
14
+ try {
15
+ cpSync(publicDir, outDir, {
16
+ recursive: true,
17
+ force: true,
18
+ filter: (src) => {
19
+ // Skip hidden files and directories
20
+ const basename = src.split('/').pop() || '';
21
+ return !basename.startsWith('.');
22
+ },
23
+ });
24
+ }
25
+ catch (error) {
26
+ console.warn('Failed to copy public directory:', error);
27
+ }
28
+ });
29
+ },
30
+ };
31
+ }
32
+ //# sourceMappingURL=copy-public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-public.js","sourceRoot":"","sources":["../../../../src/lib/rsbuild/plugins/copy-public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAO5C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA0B;IAC5D,OAAO;QACL,IAAI,EAAE,qBAAqB;QAE3B,KAAK,CAAC,GAAG;YACP,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE;gBACpB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;gBAErC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE;wBACxB,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,IAAI;wBACX,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;4BACd,oCAAoC;4BACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;4BAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;wBAClC,CAAC;qBACF,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAA;gBACzD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { PluginCreator } from 'postcss';
2
+ /**
3
+ * Ensures every processed CSS file has at least one `@source` directive so that
4
+ * Tailwind v4 scans user files even if the project predates the migration.
5
+ */
6
+ interface TailwindSourceFallbackOptions {
7
+ projectRoot: string;
8
+ glob?: string;
9
+ }
10
+ export declare function createTailwindSourceFallback(options: TailwindSourceFallbackOptions): PluginCreator<void>;
11
+ export {};
12
+ //# sourceMappingURL=tailwind-source-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-source-fallback.d.ts","sourceRoot":"","sources":["../../../../src/lib/rsbuild/postcss/tailwind-source-fallback.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5D;;;GAGG;AACH,UAAU,6BAA6B;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAiBD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,aAAa,CAAC,IAAI,CAAC,CAgErB"}
@@ -0,0 +1,60 @@
1
+ import { dirname, relative } from 'node:path';
2
+ function toPosixPath(value) {
3
+ return value.replace(/\\/g, '/');
4
+ }
5
+ const DEFAULT_GLOB = '**/*.{ts,tsx,js,jsx,mdx,html}';
6
+ export function createTailwindSourceFallback(options) {
7
+ const { projectRoot, glob = DEFAULT_GLOB } = options;
8
+ const plugin = () => {
9
+ const postcssPlugin = {
10
+ postcssPlugin: 'linkapp:tailwind-source-fallback',
11
+ Once(root, { result }) {
12
+ const sourceFile = typeof result.opts.from === 'string' ? result.opts.from : null;
13
+ if (!sourceFile) {
14
+ return;
15
+ }
16
+ // Only mutate files that live inside the user's project
17
+ const normalizedSourceFile = toPosixPath(sourceFile);
18
+ const normalizedProjectRoot = toPosixPath(projectRoot.endsWith('/') ? projectRoot : `${projectRoot}/`);
19
+ if (!normalizedSourceFile.startsWith(normalizedProjectRoot)) {
20
+ return;
21
+ }
22
+ let hasSourceDirective = false;
23
+ root.walkAtRules('source', () => {
24
+ hasSourceDirective = true;
25
+ return false;
26
+ });
27
+ if (hasSourceDirective) {
28
+ return;
29
+ }
30
+ const cssDir = dirname(sourceFile);
31
+ const relativeToRoot = relative(cssDir, projectRoot);
32
+ const baseSegment = relativeToRoot === '' ? '.' : relativeToRoot;
33
+ const normalizedBase = toPosixPath(baseSegment);
34
+ const trimmedBase = normalizedBase.replace(/\/$/, '');
35
+ const sourcePath = trimmedBase === '.' || trimmedBase === ''
36
+ ? `./${glob}`
37
+ : `${trimmedBase}/${glob}`;
38
+ // Insert after the last @import to preserve ordering
39
+ let lastImport;
40
+ root.walkAtRules('import', (node) => {
41
+ lastImport = node;
42
+ });
43
+ // Use root.append with string to avoid postcss version mismatch
44
+ // between user's postcss and Rsbuild's compiled postcss
45
+ if (lastImport) {
46
+ lastImport.after(`@source "${sourcePath}"`);
47
+ }
48
+ else {
49
+ root.prepend(`@source "${sourcePath}"`);
50
+ }
51
+ },
52
+ postcss: true,
53
+ };
54
+ return postcssPlugin;
55
+ };
56
+ plugin.postcss = true;
57
+ plugin.__linkappTailwindSource = true;
58
+ return plugin;
59
+ }
60
+ //# sourceMappingURL=tailwind-source-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tailwind-source-fallback.js","sourceRoot":"","sources":["../../../../src/lib/rsbuild/postcss/tailwind-source-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAY7C,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,YAAY,GAAG,+BAA+B,CAAA;AAWpD,MAAM,UAAU,4BAA4B,CAC1C,OAAsC;IAEtC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,YAAY,EAAE,GAAG,OAAO,CAAA;IAEpD,MAAM,MAAM,GAAiC,GAAG,EAAE;QAChD,MAAM,aAAa,GAA0B;YAC3C,aAAa,EAAE,kCAAkC;YACjD,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE;gBACnB,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;gBACjF,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,OAAM;gBACR,CAAC;gBAED,wDAAwD;gBACxD,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;gBACpD,MAAM,qBAAqB,GAAG,WAAW,CACvC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAC5D,CAAA;gBACD,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC5D,OAAM;gBACR,CAAC;gBAED,IAAI,kBAAkB,GAAG,KAAK,CAAA;gBAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE;oBAC9B,kBAAkB,GAAG,IAAI,CAAA;oBACzB,OAAO,KAAK,CAAA;gBACd,CAAC,CAAC,CAAA;gBAEF,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;gBAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;gBACpD,MAAM,WAAW,GAAG,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAA;gBAChE,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;gBAC/C,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;gBACrD,MAAM,UAAU,GACd,WAAW,KAAK,GAAG,IAAI,WAAW,KAAK,EAAE;oBACvC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACb,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,EAAE,CAAA;gBAE9B,qDAAqD;gBACrD,IAAI,UAA8B,CAAA;gBAClC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBAClC,UAAU,GAAG,IAAI,CAAA;gBACnB,CAAC,CAAC,CAAA;gBAEF,gEAAgE;gBAChE,wDAAwD;gBACxD,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,KAAK,CAAC,YAAY,UAAU,GAAG,CAAC,CAAA;gBAC7C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,CAAC,YAAY,UAAU,GAAG,CAAC,CAAA;gBACzC,CAAC;YACH,CAAC;YACD,OAAO,EAAE,IAAI;SACd,CAAA;QAED,OAAO,aAAa,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,CAAC,OAAO,GAAG,IAAI,CACpB;IAAC,MAA2D,CAAC,uBAAuB,GAAG,IAAI,CAAA;IAC5F,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup-runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AA+KA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAyBtD"}
1
+ {"version":3,"file":"setup-runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AA4OA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAyBtD"}