@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.
- package/dev-server/README.md +5 -5
- package/dev-server/components/SettingsPreview.tsx +330 -0
- package/dev-server/components/ui/dialog.tsx +6 -3
- package/dev-server/env.d.ts +8 -0
- package/dev-server/featured/main.tsx +48 -43
- 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 +7 -4
- package/dev-server/postcss/tailwind-source-fallback.js +94 -0
- package/dev-server/postcss.config.mjs +30 -0
- package/dev-server/preview/Preview.tsx +182 -381
- package/dev-server/preview/preview.css +22 -34
- 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/rsbuild.config.ts +45 -0
- package/dev-server/shared/theme-presets.ts +315 -0
- package/dev-server/shared/theme-utils.ts +38 -0
- package/dev-server/sheet/main.tsx +44 -0
- package/dev-server/sheet.html +56 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +20 -12
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +55 -36
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +74 -59
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +564 -43
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +19 -9
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +9 -4
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/test-url-match-rules.d.ts.map +1 -1
- package/dist/commands/test-url-match-rules.js +24 -13
- 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/build/detect-layouts.d.ts +1 -1
- package/dist/lib/build/detect-layouts.d.ts.map +1 -1
- package/dist/lib/build/detect-layouts.js +8 -7
- package/dist/lib/build/detect-layouts.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 +2 -2
- 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/deploy/validation.d.ts.map +1 -1
- package/dist/lib/deploy/validation.js +8 -5
- package/dist/lib/deploy/validation.js.map +1 -1
- package/dist/lib/rsbuild/config-factory.d.ts +24 -0
- package/dist/lib/rsbuild/config-factory.d.ts.map +1 -0
- package/dist/lib/rsbuild/config-factory.js +135 -0
- package/dist/lib/rsbuild/config-factory.js.map +1 -0
- package/dist/lib/rsbuild/plugins/asset-versioning.d.ts +11 -0
- package/dist/lib/rsbuild/plugins/asset-versioning.d.ts.map +1 -0
- package/dist/lib/rsbuild/plugins/asset-versioning.js +62 -0
- package/dist/lib/rsbuild/plugins/asset-versioning.js.map +1 -0
- package/dist/lib/rsbuild/plugins/copy-public.d.ts +11 -0
- package/dist/lib/rsbuild/plugins/copy-public.d.ts.map +1 -0
- package/dist/lib/rsbuild/plugins/copy-public.js +32 -0
- package/dist/lib/rsbuild/plugins/copy-public.js.map +1 -0
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts +12 -0
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.d.ts.map +1 -0
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js +60 -0
- package/dist/lib/rsbuild/postcss/tailwind-source-fallback.js.map +1 -0
- package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
- package/dist/lib/utils/setup-runtime.js +78 -17
- 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 +8 -3
- package/dist/lib/vite/config-factory.js.map +1 -1
- package/dist/lib/vite/plugins/copy-public.d.ts +12 -0
- package/dist/lib/vite/plugins/copy-public.d.ts.map +1 -0
- package/dist/lib/vite/plugins/copy-public.js +31 -0
- package/dist/lib/vite/plugins/copy-public.js.map +1 -0
- package/dist/schema/config.schema.d.ts +121 -32
- package/dist/schema/config.schema.d.ts.map +1 -1
- package/dist/schema/config.schema.js +28 -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 +7 -4
- package/runtime/index.html +19 -36
- package/dev-server/classic/main.tsx +0 -62
- package/dev-server/classic.html +0 -70
- package/dev-server/vite.config.ts +0 -29
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAWA,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,iBAsFvD"}
|
package/dist/commands/login.js
CHANGED
|
@@ -4,9 +4,13 @@ import open from 'open';
|
|
|
4
4
|
import { getAppConfig } from '../lib/auth/config.js';
|
|
5
5
|
import { initiateDeviceFlow, pollAccessToken } from '../lib/auth/device-flow.js';
|
|
6
6
|
import { saveToken, isTokenValid } from '../lib/auth/token-storage.js';
|
|
7
|
+
const writeLine = (message = '') => {
|
|
8
|
+
process.stdout.write(`${message}\n`);
|
|
9
|
+
};
|
|
7
10
|
export async function loginCommand(options) {
|
|
8
11
|
const env = options.qa ? 'QA' : 'Production';
|
|
9
|
-
|
|
12
|
+
writeLine(pc.cyan(`🔐 Logging in to ${env}...`));
|
|
13
|
+
writeLine();
|
|
10
14
|
try {
|
|
11
15
|
const config = await getAppConfig(options.qa ? 'qa' : 'production');
|
|
12
16
|
// Check if already logged in
|
|
@@ -16,7 +20,8 @@ export async function loginCommand(options) {
|
|
|
16
20
|
initialValue: false,
|
|
17
21
|
});
|
|
18
22
|
if (p.isCancel(shouldReauth) || !shouldReauth) {
|
|
19
|
-
|
|
23
|
+
writeLine();
|
|
24
|
+
writeLine(pc.dim('Login cancelled'));
|
|
20
25
|
return;
|
|
21
26
|
}
|
|
22
27
|
}
|
|
@@ -27,13 +32,16 @@ export async function loginCommand(options) {
|
|
|
27
32
|
s.stop('Device authorization initiated');
|
|
28
33
|
const { expires_in, user_code, verification_uri_complete } = handle;
|
|
29
34
|
const expiryMinutes = Math.floor(expires_in / 60);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
writeLine();
|
|
36
|
+
writeLine(`${pc.green('✓ Authorization code:')} ${pc.bold(user_code)}`);
|
|
37
|
+
writeLine(pc.dim(` ${verification_uri_complete}`));
|
|
38
|
+
writeLine(pc.dim(` Expires in ${expiryMinutes} minutes`));
|
|
39
|
+
writeLine();
|
|
33
40
|
// Open browser
|
|
34
41
|
await open(verification_uri_complete);
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
writeLine(pc.cyan('🌐 Browser opened for authentication'));
|
|
43
|
+
writeLine(pc.dim(' If browser did not open, visit the link above'));
|
|
44
|
+
writeLine();
|
|
37
45
|
// Poll for token
|
|
38
46
|
s.start('Waiting for authorization');
|
|
39
47
|
const token = await pollAccessToken(handle);
|
|
@@ -58,10 +66,12 @@ export async function loginCommand(options) {
|
|
|
58
66
|
}
|
|
59
67
|
process.exit(1);
|
|
60
68
|
}
|
|
61
|
-
|
|
69
|
+
writeLine();
|
|
70
|
+
writeLine(pc.green('✓ Login successful!'));
|
|
62
71
|
if (expiresAt) {
|
|
63
72
|
const expiryDate = new Date(expiresAt * 1000).toLocaleString();
|
|
64
|
-
|
|
73
|
+
writeLine(pc.dim(` Token expires: ${expiryDate}`));
|
|
74
|
+
writeLine();
|
|
65
75
|
}
|
|
66
76
|
}
|
|
67
77
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,EAAE,CAAC,EAAE,OAAO,CAAA;CACb;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,iBAyBzD"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -2,9 +2,13 @@ import pc from 'picocolors';
|
|
|
2
2
|
import open from 'open';
|
|
3
3
|
import { getAppConfig } from '../lib/auth/config.js';
|
|
4
4
|
import { removeToken } from '../lib/auth/token-storage.js';
|
|
5
|
+
const writeLine = (message = '') => {
|
|
6
|
+
process.stdout.write(`${message}\n`);
|
|
7
|
+
};
|
|
5
8
|
export async function logoutCommand(options) {
|
|
6
9
|
const env = options.qa ? 'QA' : 'Production';
|
|
7
|
-
|
|
10
|
+
writeLine(pc.cyan(`🔓 Logging out from ${env}...`));
|
|
11
|
+
writeLine();
|
|
8
12
|
try {
|
|
9
13
|
const config = await getAppConfig(options.qa ? 'qa' : 'production');
|
|
10
14
|
// Remove stored token for the specified audience
|
|
@@ -13,9 +17,10 @@ export async function logoutCommand(options) {
|
|
|
13
17
|
const logoutUrl = `${config.auth.domain}/v2/logout?client_id=${config.auth.client_id}&returnTo=${config.logout_redirect_url}`;
|
|
14
18
|
// Open browser to clear session
|
|
15
19
|
await open(logoutUrl);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
writeLine(pc.green('✓ Logged out successfully'));
|
|
21
|
+
writeLine(pc.dim(' Browser opened to clear session'));
|
|
22
|
+
writeLine(pc.dim(` If browser did not open, visit: ${logoutUrl}`));
|
|
23
|
+
writeLine();
|
|
19
24
|
}
|
|
20
25
|
catch (error) {
|
|
21
26
|
console.error(pc.red('✗ Logout failed:'), error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAE1D,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,EAAQ,EAAE;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAMD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAA;IAC5C,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,CAAC,CAAA;IACnD,SAAS,EAAE,CAAA;IAEX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QAEnE,iDAAiD;QACjD,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEjC,mBAAmB;QACnB,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,wBAAwB,MAAM,CAAC,IAAI,CAAC,SAAS,aAAa,MAAM,CAAC,mBAAmB,EAAE,CAAA;QAE7H,gCAAgC;QAChC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAA;QAErB,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAA;QAChD,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;QACtD,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC,CAAA;QACnE,SAAS,EAAE,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-url-match-rules.d.ts","sourceRoot":"","sources":["../../src/commands/test-url-match-rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-url-match-rules.d.ts","sourceRoot":"","sources":["../../src/commands/test-url-match-rules.ts"],"names":[],"mappings":"AAWA,UAAU,wBAAwB;IAChC,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,iBA6D5F"}
|
|
@@ -4,48 +4,59 @@ import { join } from 'node:path';
|
|
|
4
4
|
import { getAppConfig } from '../lib/auth/config.js';
|
|
5
5
|
import { getToken } from '../lib/auth/token-storage.js';
|
|
6
6
|
import { testUrlMatchRules } from '../lib/deploy/test-url-match-rules.js';
|
|
7
|
+
const writeLine = (message = '') => {
|
|
8
|
+
process.stdout.write(`${message}\n`);
|
|
9
|
+
};
|
|
7
10
|
export async function testUrlMatchRulesCommand(url, options) {
|
|
8
|
-
|
|
11
|
+
writeLine(pc.cyan(`🧪 Testing URL match rules for: ${url}`));
|
|
12
|
+
writeLine();
|
|
9
13
|
try {
|
|
10
14
|
const config = await getAppConfig(options.qa ? 'qa' : 'production');
|
|
11
15
|
const projectPath = process.cwd();
|
|
12
16
|
// Check authentication
|
|
13
17
|
const accessToken = getToken(config.auth.audience);
|
|
14
18
|
if (!accessToken) {
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
writeLine(pc.red('✗ Not authenticated'));
|
|
20
|
+
writeLine(pc.dim(` Run: npx @linktr.ee/linkapp login${options.qa ? ' --qa' : ''}`));
|
|
21
|
+
writeLine();
|
|
17
22
|
process.exit(1);
|
|
18
23
|
}
|
|
19
24
|
// Look up the local url_match_rules.json file
|
|
20
25
|
const urlMatchRulesPath = join(projectPath, 'url_match_rules.json');
|
|
21
26
|
if (!existsSync(urlMatchRulesPath)) {
|
|
22
|
-
|
|
27
|
+
writeLine(pc.red('✗ url_match_rules.json not found in current directory'));
|
|
28
|
+
writeLine();
|
|
23
29
|
process.exit(1);
|
|
24
30
|
}
|
|
25
|
-
|
|
31
|
+
writeLine(pc.cyan('📋 Loading URL match rules from url_match_rules.json...'));
|
|
26
32
|
const urlMatchRulesString = readFileSync(urlMatchRulesPath, 'utf8');
|
|
27
33
|
if (!urlMatchRulesString) {
|
|
28
|
-
|
|
34
|
+
writeLine(pc.red('✗ url_match_rules.json is empty'));
|
|
35
|
+
writeLine();
|
|
29
36
|
process.exit(1);
|
|
30
37
|
}
|
|
31
38
|
let urlMatchRules = null;
|
|
32
39
|
try {
|
|
33
40
|
urlMatchRules = JSON.parse(urlMatchRulesString);
|
|
34
|
-
|
|
41
|
+
writeLine(pc.green('✓ URL match rules loaded successfully'));
|
|
42
|
+
writeLine();
|
|
35
43
|
}
|
|
36
44
|
catch (error) {
|
|
37
|
-
|
|
45
|
+
writeLine(pc.red('✗ url_match_rules.json is invalid JSON'));
|
|
46
|
+
writeLine();
|
|
38
47
|
process.exit(1);
|
|
39
48
|
}
|
|
40
49
|
// Test URL against match rules
|
|
41
|
-
|
|
50
|
+
writeLine(pc.cyan('🔍 Testing URL against match rules...'));
|
|
51
|
+
writeLine();
|
|
42
52
|
const apiUrl = options.endpoint ?? `${config.link_types_url}/link-types`;
|
|
43
53
|
const result = await testUrlMatchRules(apiUrl, url, urlMatchRules, accessToken);
|
|
44
54
|
const success = result.success;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
55
|
+
writeLine(`${success ? pc.green('🎉 Success') : pc.red('❌ Failed')}`);
|
|
56
|
+
writeLine();
|
|
57
|
+
writeLine(pc.bold('Test Result:'));
|
|
58
|
+
writeLine(JSON.stringify(result, null, 2));
|
|
59
|
+
writeLine();
|
|
49
60
|
}
|
|
50
61
|
catch (error) {
|
|
51
62
|
console.error(pc.red('\n✗ Test failed:'), error);
|
|
@@ -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;
|
|
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;AAEzE,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,EAAE,EAAQ,EAAE;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACtC,CAAC,CAAA;AAOD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,GAAW,EAAE,OAAiC;IAC3F,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC,CAAA;IAC5D,SAAS,EAAE,CAAA;IAEX,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,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAA;YACxC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,sCAAsC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACpF,SAAS,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,8CAA8C;QAC9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;QACnE,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAA;YAC1E,SAAS,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC,CAAA;QAE7E,MAAM,mBAAmB,GAAG,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;QACnE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAA;YACpD,SAAS,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,aAAa,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC;YACH,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;YAC/C,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAA;YAC5D,SAAS,EAAE,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAA;YAC3D,SAAS,EAAE,CAAA;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,+BAA+B;QAC/B,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAA;QAC3D,SAAS,EAAE,CAAA;QACX,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,MAAM,CAAC,cAAc,aAAa,CAAA;QACxE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;QAE/E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC9B,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACrE,SAAS,EAAE,CAAA;QACX,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;QAClC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QAC1C,SAAS,EAAE,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -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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"}
|
|
@@ -9,7 +9,7 @@ export interface LayoutDetection {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Detects layout files in the project's /app directory
|
|
12
|
-
* Only
|
|
12
|
+
* Only sheet.tsx, featured.tsx, and featured-carousel.tsx are supported as layout entry points
|
|
13
13
|
*/
|
|
14
14
|
export declare function detectLayouts(projectPath: string): LayoutDetection;
|
|
15
15
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-layouts.d.ts","sourceRoot":"","sources":["../../../src/lib/build/detect-layouts.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"detect-layouts.d.ts","sourceRoot":"","sources":["../../../src/lib/build/detect-layouts.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA6BlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAgBzF"}
|
|
@@ -2,7 +2,7 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
/**
|
|
4
4
|
* Detects layout files in the project's /app directory
|
|
5
|
-
* Only
|
|
5
|
+
* Only sheet.tsx, featured.tsx, and featured-carousel.tsx are supported as layout entry points
|
|
6
6
|
*/
|
|
7
7
|
export function detectLayouts(projectPath) {
|
|
8
8
|
const appDir = join(projectPath, 'app');
|
|
@@ -10,10 +10,11 @@ export function detectLayouts(projectPath) {
|
|
|
10
10
|
return { layouts: [], hasLayout: false };
|
|
11
11
|
}
|
|
12
12
|
const layouts = [];
|
|
13
|
-
//
|
|
13
|
+
// Supported layouts: Only sheet.tsx, featured.tsx, and featured-carousel.tsx are valid layout entry points
|
|
14
14
|
const supportedLayouts = [
|
|
15
|
-
{ name: '
|
|
15
|
+
{ name: 'sheet', fileName: 'sheet.tsx', displayName: 'Sheet' },
|
|
16
16
|
{ name: 'featured', fileName: 'featured.tsx', displayName: 'Featured' },
|
|
17
|
+
{ name: 'featured-carousel', fileName: 'featured-carousel.tsx', displayName: 'FeaturedCarousel' },
|
|
17
18
|
];
|
|
18
19
|
for (const layout of supportedLayouts) {
|
|
19
20
|
const layoutPath = join(appDir, layout.fileName);
|
|
@@ -33,10 +34,10 @@ export function detectLayouts(projectPath) {
|
|
|
33
34
|
export function validateLayouts(projectPath) {
|
|
34
35
|
const detection = detectLayouts(projectPath);
|
|
35
36
|
const errors = [];
|
|
36
|
-
//
|
|
37
|
-
const
|
|
38
|
-
if (!
|
|
39
|
-
errors.push('app/
|
|
37
|
+
// sheet.tsx is always required
|
|
38
|
+
const hasSheet = detection.layouts.some(l => l.name === 'sheet');
|
|
39
|
+
if (!hasSheet) {
|
|
40
|
+
errors.push('app/sheet.tsx is required. This is the default layout for your Link App.');
|
|
40
41
|
}
|
|
41
42
|
// Layout wrapper is optional - will be used if present
|
|
42
43
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-layouts.js","sourceRoot":"","sources":["../../../src/lib/build/detect-layouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAEvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,
|
|
1
|
+
{"version":3,"file":"detect-layouts.js","sourceRoot":"","sources":["../../../src/lib/build/detect-layouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;IAEvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IAC1C,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,2GAA2G;IAC3G,MAAM,gBAAgB,GAAG;QACvB,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE;QAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE;QACvE,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,WAAW,EAAE,kBAAkB,EAAE;KAClG,CAAA;IAED,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;IAEjG,OAAO;QACL,OAAO;QACP,SAAS;KACV,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,+BAA+B;IAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAA;IACzF,CAAC;IAED,uDAAuD;IAEvD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -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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"}
|
|
@@ -8,9 +8,9 @@ export async function packProject(options = {}) {
|
|
|
8
8
|
const rootConfigPath = join(projectPath, 'linkapp.config.ts');
|
|
9
9
|
const configPath = existsSync(rootConfigPath) ? 'linkapp.config.ts' : '.config/linkapp.config.ts';
|
|
10
10
|
const requiredFiles = [configPath];
|
|
11
|
-
const optionalFiles = ['package.json', 'package-lock.json', 'README.md', 'tsconfig.json', 'yarn.lock'];
|
|
11
|
+
const optionalFiles = ['package.json', 'package-lock.json', 'README.md', 'tsconfig.json', 'yarn.lock', 'postcss.config.mjs', 'postcss.config.js', 'postcss.config.cjs'];
|
|
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;
|
|
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"}
|