@linktr.ee/linkapp 0.0.21 → 0.0.22
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.
- package/dev-server/classic/main.tsx +313 -29
- package/dev-server/classic.html +21 -35
- package/dev-server/components/SettingsPreview.tsx +330 -0
- package/dev-server/components/ui/dialog.tsx +6 -3
- package/dev-server/featured/main.tsx +313 -29
- package/dev-server/featured.html +21 -35
- package/dev-server/index.html +8 -1
- package/dev-server/lib/utils.ts +6 -0
- package/dev-server/package-lock.json +245 -287
- package/dev-server/package.json +5 -1
- package/dev-server/postcss.config.mjs +5 -0
- package/dev-server/preview/Preview.tsx +95 -69
- package/dev-server/preview/preview.css +20 -35
- package/dev-server/public/apple-touch-icon.png +0 -0
- package/dev-server/public/favicon-96x96.png +0 -0
- package/dev-server/public/favicon.ico +0 -0
- package/dev-server/public/favicon.svg +6 -0
- package/dev-server/public/site.webmanifest +21 -0
- package/dev-server/public/web-app-manifest-192x192.png +0 -0
- package/dev-server/public/web-app-manifest-512x512.png +0 -0
- package/dev-server/vite-env.d.ts +8 -0
- package/dev-server/vite.config.ts +5 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +19 -17
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +110 -2
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/test-url-match-rules.js +1 -1
- package/dist/commands/test-url-match-rules.js.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/lib/auth/device-flow.d.ts +1 -6
- package/dist/lib/auth/device-flow.d.ts.map +1 -1
- package/dist/lib/auth/device-flow.js +3 -9
- package/dist/lib/auth/device-flow.js.map +1 -1
- package/dist/lib/auth/token-storage.d.ts +0 -5
- package/dist/lib/auth/token-storage.d.ts.map +1 -1
- package/dist/lib/auth/token-storage.js +16 -14
- package/dist/lib/auth/token-storage.js.map +1 -1
- package/dist/lib/deploy/generate-manifest-files.js +1 -1
- package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
- package/dist/lib/deploy/pack-project.js +1 -1
- package/dist/lib/deploy/pack-project.js.map +1 -1
- package/dist/lib/deploy/test-url-match-rules.d.ts +2 -1
- package/dist/lib/deploy/test-url-match-rules.d.ts.map +1 -1
- package/dist/lib/deploy/test-url-match-rules.js +1 -1
- package/dist/lib/deploy/test-url-match-rules.js.map +1 -1
- package/dist/lib/deploy/upload.d.ts.map +1 -1
- package/dist/lib/deploy/upload.js +7 -3
- package/dist/lib/deploy/upload.js.map +1 -1
- package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
- package/dist/lib/utils/setup-runtime.js +29 -2
- package/dist/lib/utils/setup-runtime.js.map +1 -1
- package/dist/lib/vite/config-factory.d.ts.map +1 -1
- package/dist/lib/vite/config-factory.js +3 -2
- package/dist/lib/vite/config-factory.js.map +1 -1
- package/dist/schema/config.schema.d.ts +104 -32
- package/dist/schema/config.schema.d.ts.map +1 -1
- package/dist/schema/config.schema.js +27 -17
- package/dist/schema/config.schema.js.map +1 -1
- package/dist/types.d.ts +6 -57
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -2
- package/runtime/index.html +19 -36
package/dist/commands/dev.js
CHANGED
|
@@ -1,11 +1,55 @@
|
|
|
1
1
|
import pc from 'picocolors';
|
|
2
2
|
import { createServer as createViteServer } from 'vite';
|
|
3
|
-
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { dirname, resolve, join } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { existsSync, readFileSync, statSync } from 'node:fs';
|
|
5
6
|
import { validateLayouts } from '../lib/build/detect-layouts.js';
|
|
6
7
|
import { loadConfig } from '../lib/config/load-config.js';
|
|
7
8
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
9
|
const __dirname = dirname(__filename);
|
|
10
|
+
/**
|
|
11
|
+
* Creates a Vite plugin that watches linkapp.config.ts for changes
|
|
12
|
+
* and triggers a full page reload when the config is updated
|
|
13
|
+
*/
|
|
14
|
+
function createConfigWatcherPlugin(userProjectPath, viteServerRef) {
|
|
15
|
+
const configPaths = [
|
|
16
|
+
join(userProjectPath, 'linkapp.config.ts'),
|
|
17
|
+
join(userProjectPath, '.config', 'linkapp.config.ts'),
|
|
18
|
+
];
|
|
19
|
+
return {
|
|
20
|
+
name: 'linkapp-config-watcher',
|
|
21
|
+
configureServer(server) {
|
|
22
|
+
viteServerRef.current = server;
|
|
23
|
+
// Watch for changes to linkapp.config.ts
|
|
24
|
+
configPaths.forEach((configPath) => {
|
|
25
|
+
if (existsSync(configPath)) {
|
|
26
|
+
server.watcher.add(configPath);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
server.watcher.on('change', (file) => {
|
|
30
|
+
// Check if the changed file is the config file
|
|
31
|
+
if (configPaths.some((configPath) => file === configPath)) {
|
|
32
|
+
console.log(pc.cyan(' ○ linkapp.config.ts changed, reloading...'));
|
|
33
|
+
try {
|
|
34
|
+
// Reload the config to validate it
|
|
35
|
+
loadConfig(userProjectPath);
|
|
36
|
+
// Trigger a full page reload for all connected clients
|
|
37
|
+
// This will cause the server to re-evaluate the config on the next request
|
|
38
|
+
server.ws.send({
|
|
39
|
+
type: 'full-reload',
|
|
40
|
+
path: '*',
|
|
41
|
+
});
|
|
42
|
+
console.log(pc.green(' ✓ Config reloaded'));
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.log(pc.red(' ✗ Failed to reload config'));
|
|
46
|
+
console.log(pc.dim(` ${error instanceof Error ? error.message : error}`));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
9
53
|
export async function devCommand(options) {
|
|
10
54
|
const userProjectPath = process.cwd();
|
|
11
55
|
try {
|
|
@@ -19,11 +63,13 @@ export async function devCommand(options) {
|
|
|
19
63
|
}
|
|
20
64
|
process.exit(1);
|
|
21
65
|
}
|
|
22
|
-
// Load config and extract preview_props
|
|
66
|
+
// Load config and extract preview_props and settings
|
|
23
67
|
let previewProps = {};
|
|
68
|
+
let settingsConfig = {};
|
|
24
69
|
try {
|
|
25
70
|
const config = loadConfig(userProjectPath);
|
|
26
71
|
previewProps = config.preview_props || {};
|
|
72
|
+
settingsConfig = config.settings || {};
|
|
27
73
|
}
|
|
28
74
|
catch (error) {
|
|
29
75
|
console.log(pc.yellow('⚠ Warning: Could not load config, using default preview props'));
|
|
@@ -31,10 +77,14 @@ export async function devCommand(options) {
|
|
|
31
77
|
}
|
|
32
78
|
const port = options.port || 3000;
|
|
33
79
|
const devServerPath = resolve(__dirname, '../../dev-server');
|
|
80
|
+
const userPublicDir = join(userProjectPath, 'public');
|
|
81
|
+
// Create a ref to hold the Vite server instance for the config watcher
|
|
82
|
+
const viteServerRef = { current: null };
|
|
34
83
|
// Create Vite server - inject preview props directly via define
|
|
35
84
|
const viteServer = await createViteServer({
|
|
36
85
|
configFile: resolve(devServerPath, 'vite.config.ts'),
|
|
37
86
|
root: devServerPath,
|
|
87
|
+
publicDir: userPublicDir,
|
|
38
88
|
resolve: {
|
|
39
89
|
alias: {
|
|
40
90
|
'@': userProjectPath,
|
|
@@ -44,6 +94,7 @@ export async function devCommand(options) {
|
|
|
44
94
|
},
|
|
45
95
|
define: {
|
|
46
96
|
__PREVIEW_PROPS__: JSON.stringify(previewProps),
|
|
97
|
+
__SETTINGS_CONFIG__: JSON.stringify(settingsConfig),
|
|
47
98
|
},
|
|
48
99
|
server: {
|
|
49
100
|
port,
|
|
@@ -52,6 +103,63 @@ export async function devCommand(options) {
|
|
|
52
103
|
strictPort: false,
|
|
53
104
|
},
|
|
54
105
|
logLevel: 'error',
|
|
106
|
+
plugins: [
|
|
107
|
+
// Watch for config changes and reload
|
|
108
|
+
createConfigWatcherPlugin(userProjectPath, viteServerRef),
|
|
109
|
+
// Custom plugin to serve user's public directory
|
|
110
|
+
{
|
|
111
|
+
name: 'serve-user-public',
|
|
112
|
+
configureServer(server) {
|
|
113
|
+
// Only serve if public directory exists
|
|
114
|
+
if (existsSync(userPublicDir)) {
|
|
115
|
+
// Return middleware that runs early in the stack
|
|
116
|
+
return () => {
|
|
117
|
+
server.middlewares.use((req, res, next) => {
|
|
118
|
+
if (!req.url) {
|
|
119
|
+
next();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// Parse URL and remove query params
|
|
123
|
+
const url = new URL(req.url, `http://${req.headers.host || 'localhost'}`);
|
|
124
|
+
const pathname = url.pathname;
|
|
125
|
+
// Try to serve file from public directory
|
|
126
|
+
const filePath = join(userPublicDir, pathname);
|
|
127
|
+
try {
|
|
128
|
+
if (existsSync(filePath) && statSync(filePath).isFile()) {
|
|
129
|
+
// Determine content type
|
|
130
|
+
const ext = pathname.split('.').pop()?.toLowerCase();
|
|
131
|
+
const contentTypes = {
|
|
132
|
+
'png': 'image/png',
|
|
133
|
+
'jpg': 'image/jpeg',
|
|
134
|
+
'jpeg': 'image/jpeg',
|
|
135
|
+
'gif': 'image/gif',
|
|
136
|
+
'svg': 'image/svg+xml',
|
|
137
|
+
'webp': 'image/webp',
|
|
138
|
+
'ico': 'image/x-icon',
|
|
139
|
+
'json': 'application/json',
|
|
140
|
+
'txt': 'text/plain',
|
|
141
|
+
'html': 'text/html',
|
|
142
|
+
'css': 'text/css',
|
|
143
|
+
'js': 'application/javascript',
|
|
144
|
+
};
|
|
145
|
+
const contentType = (ext && contentTypes[ext]) || 'application/octet-stream';
|
|
146
|
+
const content = readFileSync(filePath);
|
|
147
|
+
res.setHeader('Content-Type', contentType);
|
|
148
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
149
|
+
res.end(content);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
// File doesn't exist or error reading, continue to next middleware
|
|
155
|
+
}
|
|
156
|
+
next();
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
],
|
|
55
163
|
});
|
|
56
164
|
await viteServer.listen();
|
|
57
165
|
const readyTime = ((Date.now() - startTime) / 1000).toFixed(1);
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;AAEvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAEzD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAMrC;;;GAGG;AACH,SAAS,yBAAyB,CAAC,eAAuB,EAAE,aAAgD;IAC1G,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,eAAe,EAAE,mBAAmB,CAAC;QAC1C,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,mBAAmB,CAAC;KACtD,CAAA;IAED,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,eAAe,CAAC,MAAqB;YACnC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAA;YAE9B,yCAAyC;YACzC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBAChC,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;gBACnC,+CAA+C;gBAC/C,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;oBAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAA;oBAEnE,IAAI,CAAC;wBACH,mCAAmC;wBACnC,UAAU,CAAC,eAAe,CAAC,CAAA;wBAE3B,uDAAuD;wBACvD,2EAA2E;wBAC3E,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,GAAG;yBACV,CAAC,CAAA;wBAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAA;oBAC9C,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAA;wBAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;oBAC9E,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IAClD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAErC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,yBAAyB;QACzB,MAAM,UAAU,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;QACnD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAA;YAClD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,qDAAqD;QACrD,IAAI,YAAY,GAAG,EAAE,CAAA;QACrB,IAAI,cAAc,GAAG,EAAE,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC,CAAA;YAC1C,YAAY,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAA;YACzC,cAAc,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAA;YACvF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAC5E,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;QACjC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;QAErD,uEAAuE;QACvE,MAAM,aAAa,GAAsC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAE1E,gEAAgE;QAChE,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC;YACxC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,gBAAgB,CAAC;YACpD,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,GAAG,EAAE,eAAe;iBACrB;gBACD,iFAAiF;gBACjF,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;aAC/B;YACD,MAAM,EAAE;gBACN,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;gBAC/C,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;aACpD;YACD,MAAM,EAAE;gBACN,IAAI;gBACJ,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,KAAK;gBACX,UAAU,EAAE,KAAK;aAClB;YACD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE;gBACP,sCAAsC;gBACtC,yBAAyB,CAAC,eAAe,EAAE,aAAa,CAAC;gBACzD,iDAAiD;gBACjD;oBACE,IAAI,EAAE,mBAAmB;oBACzB,eAAe,CAAC,MAAM;wBACpB,wCAAwC;wBACxC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC9B,iDAAiD;4BACjD,OAAO,GAAG,EAAE;gCACV,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;oCAC1C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;wCACb,IAAI,EAAE,CAAA;wCACN,OAAM;oCACR,CAAC;oCAED,oCAAoC;oCACpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAA;oCACzE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;oCAE7B,0CAA0C;oCAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;oCAE9C,IAAI,CAAC;wCACH,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;4CACxD,yBAAyB;4CACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAA;4CACpD,MAAM,YAAY,GAA2B;gDAC3C,KAAK,EAAE,WAAW;gDAClB,KAAK,EAAE,YAAY;gDACnB,MAAM,EAAE,YAAY;gDACpB,KAAK,EAAE,WAAW;gDAClB,KAAK,EAAE,eAAe;gDACtB,MAAM,EAAE,YAAY;gDACpB,KAAK,EAAE,cAAc;gDACrB,MAAM,EAAE,kBAAkB;gDAC1B,KAAK,EAAE,YAAY;gDACnB,MAAM,EAAE,WAAW;gDACnB,KAAK,EAAE,UAAU;gDACjB,IAAI,EAAE,wBAAwB;6CAC/B,CAAA;4CAED,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,0BAA0B,CAAA;4CAC5E,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;4CAEtC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;4CAC1C,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;4CAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;4CAChB,OAAM;wCACR,CAAC;oCACH,CAAC;oCAAC,OAAO,KAAK,EAAE,CAAC;wCACf,mEAAmE;oCACrE,CAAC;oCAED,IAAI,EAAE,CAAA;gCACR,CAAC,CAAC,CAAA;4BACF,CAAC,CAAA;wBACH,CAAC;oBACH,CAAC;iBACF;aACF;SACF,CAAC,CAAA;QAEF,MAAM,UAAU,CAAC,MAAM,EAAE,CAAA;QAEzB,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAE9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC7D,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3F,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,UAAU,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAC,CAAA;QAEjD,gBAAgB;QAChB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACjB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,aAAa;QACb,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAA;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -13,7 +13,7 @@ export async function testUrlMatchRulesCommand(url, options) {
|
|
|
13
13
|
const accessToken = getToken(config.auth.audience);
|
|
14
14
|
if (!accessToken) {
|
|
15
15
|
console.log(pc.red('✗ Not authenticated'));
|
|
16
|
-
console.log(pc.dim(` Run: linkapp login${options.qa ? ' --qa' : ''}\n`));
|
|
16
|
+
console.log(pc.dim(` Run: npx @linktr.ee/linkapp login${options.qa ? ' --qa' : ''}\n`));
|
|
17
17
|
process.exit(1);
|
|
18
18
|
}
|
|
19
19
|
// Look up the local url_match_rules.json file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-url-match-rules.js","sourceRoot":"","sources":["../../src/commands/test-url-match-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAOzE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,GAAW,EAAE,OAAiC;IAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,CAAC,CAAA;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QACnE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAEjC,uBAAuB;QACvB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;YAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"test-url-match-rules.js","sourceRoot":"","sources":["../../src/commands/test-url-match-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":""}
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";AAAA,+CAA+C"}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import { BaseClient, DeviceFlowHandle, TokenSet } from
|
|
1
|
+
import { BaseClient, DeviceFlowHandle, TokenSet } from "openid-client";
|
|
2
2
|
interface AuthConfig {
|
|
3
3
|
domain: string;
|
|
4
4
|
client_id: string;
|
|
5
5
|
audience: string;
|
|
6
6
|
}
|
|
7
7
|
export declare function initiateDeviceFlow(config: AuthConfig): Promise<DeviceFlowHandle<BaseClient>>;
|
|
8
|
-
export declare function pollForToken(_config: AuthConfig, _deviceCode: string, _interval: number): Promise<{
|
|
9
|
-
access_token: string;
|
|
10
|
-
token_type: string;
|
|
11
|
-
expires_in?: number;
|
|
12
|
-
}>;
|
|
13
8
|
export declare function pollAccessToken(handle: DeviceFlowHandle<BaseClient>): Promise<TokenSet>;
|
|
14
9
|
export {};
|
|
15
10
|
//# sourceMappingURL=device-flow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/device-flow.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"device-flow.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/device-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gBAAgB,EAGhB,QAAQ,EACT,MAAM,eAAe,CAAC;AAEvB,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAUvC;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,GACnC,OAAO,CAAC,QAAQ,CAAC,CASnB"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import { errors, Issuer } from
|
|
1
|
+
import { errors, Issuer, } from "openid-client";
|
|
2
2
|
export async function initiateDeviceFlow(config) {
|
|
3
3
|
const { domain, client_id, audience } = config;
|
|
4
4
|
const auth0Issuer = await Issuer.discover(domain);
|
|
5
5
|
const client = new auth0Issuer.Client({
|
|
6
6
|
client_id,
|
|
7
|
-
token_endpoint_auth_method:
|
|
7
|
+
token_endpoint_auth_method: "none",
|
|
8
8
|
});
|
|
9
|
-
return await client.deviceAuthorization({ scope:
|
|
10
|
-
}
|
|
11
|
-
export async function pollForToken(_config, _deviceCode, _interval) {
|
|
12
|
-
// For the new implementation, we don't use deviceCode directly
|
|
13
|
-
// The device flow handle returned by initiateDeviceFlow contains the poll method
|
|
14
|
-
// This function signature is kept for compatibility but should be updated in the caller
|
|
15
|
-
throw new Error('This function should not be called directly. Use the DeviceFlowHandle.poll() method instead.');
|
|
9
|
+
return await client.deviceAuthorization({ scope: "", audience });
|
|
16
10
|
}
|
|
17
11
|
export async function pollAccessToken(handle) {
|
|
18
12
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../../src/lib/auth/device-flow.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../../src/lib/auth/device-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,MAAM,GAEP,MAAM,eAAe,CAAC;AAQvB,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAkB;IAElB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC;QACpC,SAAS;QACT,0BAA0B,EAAE,MAAM;KACnC,CAAC,CAAC;IAEH,OAAO,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAoC;IAEpC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validates that a JWT token has the correct structure and permissions
|
|
3
|
-
* @throws Error if token is invalid or lacks permissions
|
|
4
|
-
*/
|
|
5
|
-
export declare function validateTokenStructure(tokenString: string): void;
|
|
6
1
|
export declare function saveToken(token: string, audience: string, expiresAt?: number): void;
|
|
7
2
|
export declare function getToken(audience: string): string | null;
|
|
8
3
|
export declare function removeToken(audience?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-storage.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/token-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token-storage.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/token-storage.ts"],"names":[],"mappings":"AAgDA,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAgBN;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BxD;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAkBnD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { homedir } from
|
|
2
|
-
import { join } from
|
|
3
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from
|
|
4
|
-
import jwt from
|
|
5
|
-
const CONFIG_DIR = join(homedir(),
|
|
6
|
-
const TOKEN_FILE = join(CONFIG_DIR,
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync, } from "node:fs";
|
|
4
|
+
import jwt from "jsonwebtoken";
|
|
5
|
+
const CONFIG_DIR = join(homedir(), ".config", "linkapp");
|
|
6
|
+
const TOKEN_FILE = join(CONFIG_DIR, "auth-token.json");
|
|
7
7
|
const TOKEN_EXPIRY_THRESHOLD_SECONDS = 60; // Consider tokens as expired within the last 60s of actual expiry
|
|
8
8
|
/**
|
|
9
9
|
* Validates that a JWT token has the correct structure and permissions
|
|
10
10
|
* @throws Error if token is invalid or lacks permissions
|
|
11
11
|
*/
|
|
12
|
-
|
|
12
|
+
function validateTokenStructure(tokenString) {
|
|
13
13
|
const payload = jwt.decode(tokenString, { json: true });
|
|
14
14
|
if (!payload) {
|
|
15
|
-
throw new Error(
|
|
15
|
+
throw new Error("There was an error parsing the access token, please try logging in again");
|
|
16
16
|
}
|
|
17
17
|
const permissions = payload.permissions ?? [];
|
|
18
18
|
if (permissions.length === 0) {
|
|
19
|
-
throw new Error(
|
|
19
|
+
throw new Error("Login request was successful, but the authenticated user does not have appropriate permissions to view or modify LinkApps");
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
export function saveToken(token, audience, expiresAt) {
|
|
@@ -31,27 +31,29 @@ export function saveToken(token, audience, expiresAt) {
|
|
|
31
31
|
expiresAt,
|
|
32
32
|
audience,
|
|
33
33
|
};
|
|
34
|
-
writeFileSync(TOKEN_FILE, JSON.stringify(data, null, 2),
|
|
34
|
+
writeFileSync(TOKEN_FILE, JSON.stringify(data, null, 2), "utf-8");
|
|
35
35
|
}
|
|
36
36
|
export function getToken(audience) {
|
|
37
37
|
if (!existsSync(TOKEN_FILE)) {
|
|
38
38
|
return null;
|
|
39
39
|
}
|
|
40
40
|
try {
|
|
41
|
-
const data = JSON.parse(readFileSync(TOKEN_FILE,
|
|
41
|
+
const data = JSON.parse(readFileSync(TOKEN_FILE, "utf-8"));
|
|
42
42
|
// Check if token is for the correct audience
|
|
43
43
|
if (data.audience !== audience) {
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
46
|
// Check if token is expired (with threshold buffer)
|
|
47
|
-
if (data.expiresAt &&
|
|
47
|
+
if (data.expiresAt &&
|
|
48
|
+
data.expiresAt - TOKEN_EXPIRY_THRESHOLD_SECONDS <
|
|
49
|
+
Math.floor(Date.now() / 1000)) {
|
|
48
50
|
removeToken();
|
|
49
51
|
return null;
|
|
50
52
|
}
|
|
51
53
|
return data.accessToken;
|
|
52
54
|
}
|
|
53
55
|
catch (error) {
|
|
54
|
-
console.error(
|
|
56
|
+
console.error("Failed to read token:", error);
|
|
55
57
|
return null;
|
|
56
58
|
}
|
|
57
59
|
}
|
|
@@ -62,7 +64,7 @@ export function removeToken(audience) {
|
|
|
62
64
|
// If audience is specified, only remove token if it matches
|
|
63
65
|
if (audience) {
|
|
64
66
|
try {
|
|
65
|
-
const data = JSON.parse(readFileSync(TOKEN_FILE,
|
|
67
|
+
const data = JSON.parse(readFileSync(TOKEN_FILE, "utf-8"));
|
|
66
68
|
if (data.audience !== audience) {
|
|
67
69
|
return; // Don't remove token for different audience
|
|
68
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../../src/lib/auth/token-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"token-storage.js","sourceRoot":"","sources":["../../../src/lib/auth/token-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export async function generateManifestFiles(projectPath = process.cwd()) {
|
|
|
23
23
|
});
|
|
24
24
|
const config = jiti(configPath);
|
|
25
25
|
// Generate manifest.json
|
|
26
|
-
// Note:
|
|
26
|
+
// Note: The LinkApp ID is derived from kebab-case(name) by the backend
|
|
27
27
|
const manifest = {
|
|
28
28
|
name: config.manifest.name,
|
|
29
29
|
tagline: config.manifest.tagline,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-manifest-files.js","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAC7E,yDAAyD;IACzD,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;IAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAA;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAA;IAEjF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,wCAAwC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACvC,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QACF,MAAM,MAAM,GAAkB,IAAI,CAAC,UAAU,CAAC,CAAA;QAE9C,yBAAyB;QACzB,
|
|
1
|
+
{"version":3,"file":"generate-manifest-files.js","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export async function packProject(options = {}) {
|
|
|
10
10
|
const requiredFiles = [configPath];
|
|
11
11
|
const optionalFiles = ['package.json', 'package-lock.json', 'README.md', 'tsconfig.json', 'yarn.lock'];
|
|
12
12
|
const requiredDirs = ['app'];
|
|
13
|
-
const optionalDirs = ['
|
|
13
|
+
const optionalDirs = ['components', 'hooks', 'lib', 'public'];
|
|
14
14
|
// Manifest files from .linkapp directory
|
|
15
15
|
const linkappDir = join(projectPath, '.linkapp');
|
|
16
16
|
const manifestFiles = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-project.js","sourceRoot":"","sources":["../../../src/lib/deploy/pack-project.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAOhC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAuB,EAAE;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IAEzE,gGAAgG;IAChG,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;IAC7D,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,2BAA2B,CAAA;IAEjG,MAAM,aAAa,GAAG,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,CAAA;IACtG,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,YAAY,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"pack-project.js","sourceRoot":"","sources":["../../../src/lib/deploy/pack-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
interface TestUrlMatchRulesResult {
|
|
2
2
|
success: boolean;
|
|
3
3
|
[key: string]: any;
|
|
4
4
|
}
|
|
5
5
|
export declare function testUrlMatchRules(endpoint: string, url: string, rules: any, accessToken: string): Promise<TestUrlMatchRulesResult>;
|
|
6
|
+
export {};
|
|
6
7
|
//# sourceMappingURL=test-url-match-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-url-match-rules.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/test-url-match-rules.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"test-url-match-rules.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/test-url-match-rules.ts"],"names":[],"mappings":"AAEA,UAAU,uBAAuB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,CAAC,CAsBlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-url-match-rules.js","sourceRoot":"","sources":["../../../src/lib/deploy/test-url-match-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"test-url-match-rules.js","sourceRoot":"","sources":["../../../src/lib/deploy/test-url-match-rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,GAAW,EACX,KAAU,EACV,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC/B,GAAG,QAAQ,uBAAuB,EAClC;YACE,GAAG;YACH,KAAK;SACN,EACD;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;aACvC;SACF,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC3B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/upload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAClC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA0FlF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/upload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAClC;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA0FlF;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBjH"}
|
|
@@ -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
|
|
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
|
-
//
|
|
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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAYhC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAsB;IACvD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAA;IACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAE9C,iBAAiB;IACjB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAA;IAE3B,gDAAgD;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE;QACpD,WAAW,EAAE,kBAAkB;QAC/B,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAA;IACF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE;QACtD,WAAW,EAAE,kBAAkB;QAC/B,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAA;IAEF,qBAAqB;IACrB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,EAAE;YACtD,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,EAAE;YAClE,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,sBAAsB;SACjC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE;YAC9C,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,GAAG,IAAI,CAAC,UAAU,EAAE;QACpB,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE;KAC/C,CAAA;IAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAA;IAChD,
|
|
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":"setup-runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup-runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AA0MA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAyBtD"}
|
|
@@ -46,10 +46,21 @@ type ExtensionData = {
|
|
|
46
46
|
__thumbnail?: string
|
|
47
47
|
__linkParams?: any
|
|
48
48
|
__environment?: any
|
|
49
|
+
__layout?: string
|
|
50
|
+
__theme?: {
|
|
51
|
+
cssVariables: Record<string, string>
|
|
52
|
+
}
|
|
49
53
|
displayType?: string
|
|
50
54
|
[key: string]: any
|
|
51
55
|
}
|
|
52
56
|
|
|
57
|
+
// Declare global window property for theme application
|
|
58
|
+
declare global {
|
|
59
|
+
interface Window {
|
|
60
|
+
__linkapp_applyTheme?: (variables: Record<string, string>) => void
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
53
64
|
const rootElement = document.getElementById('root')
|
|
54
65
|
if (!rootElement) {
|
|
55
66
|
throw new Error('Root element not found')
|
|
@@ -62,6 +73,17 @@ const isInIframe = window.parent !== window
|
|
|
62
73
|
const mockContext: ExtensionData = {
|
|
63
74
|
linkUrl: 'https://example.com/demo',
|
|
64
75
|
showTitle: true,
|
|
76
|
+
__theme: {
|
|
77
|
+
cssVariables: {
|
|
78
|
+
'--button-style-text': '#000000',
|
|
79
|
+
'--button-style-background': '#ffffff',
|
|
80
|
+
'--button-style-inner-radius': '12px',
|
|
81
|
+
'--button-style-border-color': '#e5e7eb',
|
|
82
|
+
'--button-style-background-hover': '#f3f4f6',
|
|
83
|
+
'--button-style-contrast-color': '#ffffff',
|
|
84
|
+
'--profileBackground': '#ffffff',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
65
87
|
theme: {
|
|
66
88
|
cssVariables: {
|
|
67
89
|
'--button-style-text': '#000000',
|
|
@@ -83,9 +105,9 @@ const mockContext: ExtensionData = {
|
|
|
83
105
|
}
|
|
84
106
|
|
|
85
107
|
function App({ data }: { data: ExtensionData }) {
|
|
86
|
-
// Get layout from query parameter or default to classic
|
|
108
|
+
// Get layout from extension data (production), query parameter (dev), or default to classic
|
|
87
109
|
const params = new URLSearchParams(window.location.search)
|
|
88
|
-
const layoutName = params.get('layout') || 'classic'
|
|
110
|
+
const layoutName = data.__layout || params.get('layout') || 'classic'
|
|
89
111
|
const LayoutComponent = layouts[layoutName] || layouts.classic
|
|
90
112
|
|
|
91
113
|
if (!LayoutComponent) {
|
|
@@ -117,6 +139,11 @@ const postExtensionReadyMessage = () => {
|
|
|
117
139
|
}
|
|
118
140
|
|
|
119
141
|
const renderApp = (data: ExtensionData) => {
|
|
142
|
+
// Apply theme CSS variables if provided
|
|
143
|
+
if (data.__theme?.cssVariables && window.__linkapp_applyTheme) {
|
|
144
|
+
window.__linkapp_applyTheme(data.__theme.cssVariables)
|
|
145
|
+
}
|
|
146
|
+
|
|
120
147
|
const root = createRoot(rootElement)
|
|
121
148
|
root.render(
|
|
122
149
|
<StrictMode>
|