@linktr.ee/linkapp 0.0.9 → 0.0.10
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 +32 -15
- package/dev-server/components/ui/dialog.tsx +19 -42
- package/dev-server/components/ui/tabs.tsx +6 -6
- package/dev-server/featured/main.tsx +32 -15
- package/dev-server/lib/utils.ts +2 -2
- package/dev-server/preview/Preview.tsx +13 -11
- package/dev-server/vite.config.ts +11 -11
- package/dist/cli.js +4 -12
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +15 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/lib/build/detect-layouts.d.ts +2 -2
- package/dist/lib/build/detect-layouts.d.ts.map +1 -1
- package/dist/lib/build/detect-layouts.js +13 -21
- package/dist/lib/build/detect-layouts.js.map +1 -1
- package/dist/lib/config/load-config.d.ts +9 -0
- package/dist/lib/config/load-config.d.ts.map +1 -0
- package/dist/lib/config/load-config.js +31 -0
- package/dist/lib/config/load-config.js.map +1 -0
- package/dist/lib/deploy/generate-manifest-files.d.ts.map +1 -1
- package/dist/lib/deploy/generate-manifest-files.js +14 -35
- package/dist/lib/deploy/generate-manifest-files.js.map +1 -1
- package/dist/lib/deploy/upload.js +5 -5
- package/dist/lib/utils/setup-runtime.d.ts.map +1 -1
- package/dist/lib/utils/setup-runtime.js +2 -6
- 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 +2 -2
- package/dist/lib/vite/config-factory.js.map +1 -1
- package/dist/lib/vite/plugins/asset-versioning.d.ts.map +1 -1
- package/dist/lib/vite/plugins/asset-versioning.js +4 -2
- package/dist/lib/vite/plugins/asset-versioning.js.map +1 -1
- package/dist/schema/config.schema.d.ts +125 -34
- package/dist/schema/config.schema.d.ts.map +1 -1
- package/dist/schema/config.schema.js +58 -14
- package/dist/schema/config.schema.js.map +1 -1
- package/dist/types.d.ts +23 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { createJiti } from 'jiti';
|
|
4
|
+
/**
|
|
5
|
+
* Loads the LinkApp configuration from the user's project
|
|
6
|
+
* @param projectPath - Path to the user's project (defaults to cwd)
|
|
7
|
+
* @returns The loaded configuration
|
|
8
|
+
* @throws Error if config file is not found or cannot be loaded
|
|
9
|
+
*/
|
|
10
|
+
export function loadConfig(projectPath = process.cwd()) {
|
|
11
|
+
// Check for config in root first, then .config directory
|
|
12
|
+
const rootConfigPath = join(projectPath, 'linkapp.config.ts');
|
|
13
|
+
const nestedConfigPath = join(projectPath, '.config', 'linkapp.config.ts');
|
|
14
|
+
const configPath = existsSync(rootConfigPath) ? rootConfigPath : nestedConfigPath;
|
|
15
|
+
if (!existsSync(configPath)) {
|
|
16
|
+
throw new Error('Config file not found: linkapp.config.ts');
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
// Load the TypeScript config using jiti
|
|
20
|
+
const jiti = createJiti(import.meta.url, {
|
|
21
|
+
interopDefault: true,
|
|
22
|
+
moduleCache: false,
|
|
23
|
+
});
|
|
24
|
+
const config = jiti(configPath);
|
|
25
|
+
return config;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
throw new Error(`Failed to load config: ${error instanceof Error ? error.message : error}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=load-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../src/lib/config/load-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjC;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IAC5D,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,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;QAC9C,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IAC7F,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-manifest-files.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-manifest-files.d.ts","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"AAMA,wBAAsB,qBAAqB,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D9F"}
|
|
@@ -1,31 +1,7 @@
|
|
|
1
1
|
import { writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { createJiti } from 'jiti';
|
|
4
|
-
|
|
5
|
-
* Convert camelCase string to snake_case
|
|
6
|
-
*/
|
|
7
|
-
function toSnakeCase(str) {
|
|
8
|
-
return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Recursively convert all camelCase keys to snake_case in an object
|
|
12
|
-
*/
|
|
13
|
-
function convertKeysToSnakeCase(obj) {
|
|
14
|
-
if (obj === null || obj === undefined) {
|
|
15
|
-
return obj;
|
|
16
|
-
}
|
|
17
|
-
if (Array.isArray(obj)) {
|
|
18
|
-
return obj.map(item => convertKeysToSnakeCase(item));
|
|
19
|
-
}
|
|
20
|
-
if (typeof obj === 'object' && obj.constructor === Object) {
|
|
21
|
-
return Object.keys(obj).reduce((acc, key) => {
|
|
22
|
-
const snakeKey = toSnakeCase(key);
|
|
23
|
-
acc[snakeKey] = convertKeysToSnakeCase(obj[key]);
|
|
24
|
-
return acc;
|
|
25
|
-
}, {});
|
|
26
|
-
}
|
|
27
|
-
return obj;
|
|
28
|
-
}
|
|
4
|
+
import { detectLayouts } from '../build/detect-layouts.js';
|
|
29
5
|
export async function generateManifestFiles(projectPath = process.cwd()) {
|
|
30
6
|
// Check for config in root first, then .config directory
|
|
31
7
|
const rootConfigPath = join(projectPath, 'linkapp.config.ts');
|
|
@@ -46,32 +22,35 @@ export async function generateManifestFiles(projectPath = process.cwd()) {
|
|
|
46
22
|
moduleCache: false,
|
|
47
23
|
});
|
|
48
24
|
const config = jiti(configPath);
|
|
49
|
-
// Generate manifest.json
|
|
25
|
+
// Generate manifest.json
|
|
50
26
|
// Note: id is kept in config for internal use but NOT sent to the API
|
|
51
|
-
const
|
|
27
|
+
const manifest = {
|
|
52
28
|
name: config.manifest.name,
|
|
53
29
|
tagline: config.manifest.tagline,
|
|
54
30
|
description: config.manifest.description,
|
|
55
|
-
|
|
31
|
+
manifest_version: config.manifest.manifest_version,
|
|
56
32
|
version: config.manifest.version,
|
|
57
|
-
|
|
33
|
+
supporting_links: config.manifest.supporting_links,
|
|
58
34
|
category: config.manifest.category,
|
|
59
|
-
|
|
35
|
+
search_terms: config.manifest.search_terms,
|
|
60
36
|
author: config.manifest.author,
|
|
61
37
|
};
|
|
62
|
-
const manifest = convertKeysToSnakeCase(manifestData);
|
|
63
38
|
writeFileSync(join(linkappDir, 'manifest.json'), JSON.stringify(manifest, null, 2), 'utf-8');
|
|
64
|
-
//
|
|
65
|
-
|
|
39
|
+
// Auto-detect featured layout support based on app/featured.tsx presence
|
|
40
|
+
const layoutDetection = detectLayouts(projectPath);
|
|
41
|
+
const hasFeaturedLayout = layoutDetection.layouts.some(layout => layout.name === 'featured');
|
|
42
|
+
// Generate settings.json
|
|
66
43
|
const settings = {
|
|
67
44
|
title: config.settings.title,
|
|
68
45
|
overview: config.settings.overview,
|
|
69
46
|
elements: config.settings.elements,
|
|
47
|
+
// Auto-detected: true if app/featured.tsx exists, false otherwise
|
|
48
|
+
supports_featured_layout: hasFeaturedLayout,
|
|
70
49
|
};
|
|
71
50
|
writeFileSync(join(linkappDir, 'settings.json'), JSON.stringify(settings, null, 2), 'utf-8');
|
|
72
51
|
// Generate url_match_rules.json if present
|
|
73
|
-
if (config.
|
|
74
|
-
writeFileSync(join(linkappDir, 'url_match_rules.json'), JSON.stringify(config.
|
|
52
|
+
if (config.url_match_rules) {
|
|
53
|
+
writeFileSync(join(linkappDir, 'url_match_rules.json'), JSON.stringify(config.url_match_rules, null, 2), 'utf-8');
|
|
75
54
|
}
|
|
76
55
|
}
|
|
77
56
|
catch (error) {
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"generate-manifest-files.js","sourceRoot":"","sources":["../../../src/lib/deploy/generate-manifest-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,29 +21,29 @@ export async function uploadAssets(options) {
|
|
|
21
21
|
// Add required files with correct content types
|
|
22
22
|
form.append('package', createReadStream(packagePath), {
|
|
23
23
|
contentType: 'application/gzip',
|
|
24
|
-
filename: 'package.tgz'
|
|
24
|
+
filename: 'package.tgz',
|
|
25
25
|
});
|
|
26
26
|
form.append('manifest', createReadStream(manifestPath), {
|
|
27
27
|
contentType: 'application/json',
|
|
28
|
-
filename: 'manifest.json'
|
|
28
|
+
filename: 'manifest.json',
|
|
29
29
|
});
|
|
30
30
|
// Add optional files
|
|
31
31
|
if (existsSync(settingsPath)) {
|
|
32
32
|
form.append('settings', createReadStream(settingsPath), {
|
|
33
33
|
contentType: 'application/json',
|
|
34
|
-
filename: 'settings.json'
|
|
34
|
+
filename: 'settings.json',
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
if (existsSync(urlMatchRulesPath)) {
|
|
38
38
|
form.append('url_match_rules', createReadStream(urlMatchRulesPath), {
|
|
39
39
|
contentType: 'application/json',
|
|
40
|
-
filename: 'url_match_rules.json'
|
|
40
|
+
filename: 'url_match_rules.json',
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
if (existsSync(iconPath)) {
|
|
44
44
|
form.append('icon', createReadStream(iconPath), {
|
|
45
45
|
contentType: 'image/svg+xml',
|
|
46
|
-
filename: 'icon.svg'
|
|
46
|
+
filename: 'icon.svg',
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
49
|
const headers = {
|
|
@@ -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":"AA4EA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAyBtD"}
|
|
@@ -11,13 +11,9 @@ function generateMainTsx(projectPath) {
|
|
|
11
11
|
const detection = detectLayouts(projectPath);
|
|
12
12
|
const layouts = detection.layouts;
|
|
13
13
|
// Generate import statements for each layout
|
|
14
|
-
const imports = layouts
|
|
15
|
-
.map(layout => `import ${layout.displayName} from '../app/${layout.fileName}'`)
|
|
16
|
-
.join('\n');
|
|
14
|
+
const imports = layouts.map((layout) => `import ${layout.displayName} from '../app/${layout.fileName}'`).join('\n');
|
|
17
15
|
// Generate layouts object
|
|
18
|
-
const layoutsObj = layouts
|
|
19
|
-
.map(layout => ` ${layout.name}: ${layout.displayName},`)
|
|
20
|
-
.join('\n');
|
|
16
|
+
const layoutsObj = layouts.map((layout) => ` ${layout.name}: ${layout.displayName},`).join('\n');
|
|
21
17
|
return `import { StrictMode } from 'react'
|
|
22
18
|
import { createRoot } from 'react-dom/client'
|
|
23
19
|
import Layout from '../app/layout.tsx'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-runtime.js","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC;;GAEG;AACH,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;IAEjC,6CAA6C;IAC7C,MAAM,OAAO,GAAG,OAAO
|
|
1
|
+
{"version":3,"file":"setup-runtime.js","sourceRoot":"","sources":["../../../src/lib/utils/setup-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAErC;;GAEG;AACH,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;IAEjC,6CAA6C;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,MAAM,CAAC,WAAW,iBAAiB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEnH,0BAA0B;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjG,OAAO;;;EAGP,OAAO;;;;;EAKP,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CX,CAAA;AACD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;QAErE,gDAAgD;QAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,kBAAkB;QAClB,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;QAC1D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACtD,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAEjE,oEAAoE;QACpE,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;QAC5C,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAA;QACtD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-factory.d.ts","sourceRoot":"","sources":["../../../src/lib/vite/config-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAMxC,UAAU,iBAAiB;IACzB,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,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"config-factory.d.ts","sourceRoot":"","sources":["../../../src/lib/vite/config-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAMxC,UAAU,iBAAiB;IACzB,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,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,YAAY,CA2DzE"}
|
|
@@ -3,7 +3,7 @@ import { resolve, join } from 'node:path';
|
|
|
3
3
|
import { assetVersioning } from './plugins/asset-versioning.js';
|
|
4
4
|
import { setupRuntime } from '../utils/setup-runtime.js';
|
|
5
5
|
export function createViteConfig(options) {
|
|
6
|
-
const { mode, port = 3000, host = 'localhost', open = false, sourcemap = false, profile = false
|
|
6
|
+
const { mode, port = 3000, host = 'localhost', open = false, sourcemap = false, profile = false } = options;
|
|
7
7
|
const isDev = mode === 'development';
|
|
8
8
|
const projectRoot = process.cwd();
|
|
9
9
|
// Setup runtime files in user's project
|
|
@@ -14,7 +14,7 @@ export function createViteConfig(options) {
|
|
|
14
14
|
plugins: [react()],
|
|
15
15
|
resolve: {
|
|
16
16
|
alias: {
|
|
17
|
-
'@': resolve(projectRoot
|
|
17
|
+
'@': resolve(projectRoot),
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
build: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-factory.js","sourceRoot":"","sources":["../../../src/lib/vite/config-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,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;AAWxD,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IACzD,MAAM,
|
|
1
|
+
{"version":3,"file":"config-factory.js","sourceRoot":"","sources":["../../../src/lib/vite/config-factory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,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;AAWxD,MAAM,UAAU,gBAAgB,CAAC,OAA0B;IACzD,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;IAEjC,wCAAwC;IACxC,YAAY,CAAC,WAAW,CAAC,CAAA;IAEzB,MAAM,MAAM,GAAiB;QAC3B,IAAI;QACJ,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC;aAC1B;SACF;QACD,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YACvC,MAAM,EAAE,CAAC,KAAK;YACd,aAAa,EAAE;gBACb,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,YAAY,CAAC;gBAClD,MAAM,EAAE;oBACN,cAAc,EAAE,kBAAkB;oBAClC,cAAc,EAAE,kBAAkB;oBAClC,cAAc,EAAE,qBAAqB;iBACtC;aACF;SACF;QACD,MAAM,EAAE;YACN,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,KAAK;SAClB;KACF,CAAA;IAED,8BAA8B;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,CAAC,OAAO,EAAE,IAAI,CAClB,eAAe,CAAC;YACd,YAAY,EAAE,qBAAqB;SACpC,CAAC,CACH,CAAA;QAED,mCAAmC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,uEAAuE;YACvE,kFAAkF;YAClF,OAAO,CAAC,IAAI,CACV,8GAA8G,CAC/G,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-versioning.d.ts","sourceRoot":"","sources":["../../../../src/lib/vite/plugins/asset-versioning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAKlC,UAAU,sBAAsB;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"asset-versioning.d.ts","sourceRoot":"","sources":["../../../../src/lib/vite/plugins/asset-versioning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAKlC,UAAU,sBAAsB;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAiD5E"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
|
-
import { writeFileSync } from 'node:fs';
|
|
3
|
-
import { join } from 'node:path';
|
|
2
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
3
|
+
import { join, dirname } from 'node:path';
|
|
4
4
|
/**
|
|
5
5
|
* Vite plugin that creates a build manifest with versioned assets
|
|
6
6
|
* This helps invalidate cache on deployment
|
|
@@ -39,6 +39,8 @@ export function assetVersioning(options = {}) {
|
|
|
39
39
|
const outDir = process.env.VITE_OUT_DIR || 'dist';
|
|
40
40
|
const fullPath = join(process.cwd(), outDir, manifestPath);
|
|
41
41
|
try {
|
|
42
|
+
// Ensure the output directory exists
|
|
43
|
+
mkdirSync(dirname(fullPath), { recursive: true });
|
|
42
44
|
writeFileSync(fullPath, JSON.stringify(manifest, null, 2));
|
|
43
45
|
}
|
|
44
46
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-versioning.js","sourceRoot":"","sources":["../../../../src/lib/vite/plugins/asset-versioning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"asset-versioning.js","sourceRoot":"","sources":["../../../../src/lib/vite/plugins/asset-versioning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMzC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,qBAAqB,CAAA;IAClE,MAAM,QAAQ,GAA2B,EAAE,CAAA;IAE3C,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,MAAM;QAEf,cAAc,CAAC,QAAQ,EAAE,MAAM;YAC7B,6BAA6B;YAC7B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrD,6CAA6C;oBAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAA;oBAC3D,QAAQ,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAA;oBAEjC,eAAe;oBACf,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAC5C,QAAQ,CAAC,GAAG,YAAY,QAAQ,CAAC,GAAG,MAAM,CAAA;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,QAAQ,CAAC,YAAY,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;YACjD,QAAQ,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAExG,qBAAqB;YACrB,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1C,CAAC,CAAA;QACJ,CAAC;QAED,WAAW;YACT,qDAAqD;YACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAA;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;YAE1D,IAAI,CAAC;gBACH,qCAAqC;gBACrC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACjD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -3,11 +3,11 @@ declare const manifestSchema: z.ZodObject<{
|
|
|
3
3
|
name: z.ZodString;
|
|
4
4
|
tagline: z.ZodString;
|
|
5
5
|
description: z.ZodArray<z.ZodString>;
|
|
6
|
-
|
|
6
|
+
manifest_version: z.ZodString;
|
|
7
7
|
version: z.ZodString;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
supporting_links: z.ZodObject<{
|
|
9
|
+
terms_of_service: z.ZodString;
|
|
10
|
+
privacy_policy: z.ZodString;
|
|
11
11
|
documentation: z.ZodOptional<z.ZodString>;
|
|
12
12
|
website: z.ZodOptional<z.ZodString>;
|
|
13
13
|
}, z.core.$strip>;
|
|
@@ -15,9 +15,9 @@ declare const manifestSchema: z.ZodObject<{
|
|
|
15
15
|
grow: "grow";
|
|
16
16
|
sell: "sell";
|
|
17
17
|
share: "share";
|
|
18
|
-
|
|
18
|
+
learn: "learn";
|
|
19
19
|
}>;
|
|
20
|
-
|
|
20
|
+
search_terms: z.ZodArray<z.ZodString>;
|
|
21
21
|
author: z.ZodObject<{
|
|
22
22
|
name: z.ZodString;
|
|
23
23
|
accounts: z.ZodArray<z.ZodString>;
|
|
@@ -31,47 +31,66 @@ declare const settingsElementSchema: z.ZodObject<{
|
|
|
31
31
|
id: z.ZodString;
|
|
32
32
|
inputType: z.ZodEnum<{
|
|
33
33
|
number: "number";
|
|
34
|
+
array: "array";
|
|
35
|
+
url: "url";
|
|
34
36
|
text: "text";
|
|
35
37
|
switch: "switch";
|
|
36
38
|
select: "select";
|
|
37
|
-
|
|
39
|
+
checkbox: "checkbox";
|
|
40
|
+
linkBehavior: "linkBehavior";
|
|
38
41
|
textarea: "textarea";
|
|
39
42
|
}>;
|
|
40
|
-
title: z.ZodString
|
|
43
|
+
title: z.ZodOptional<z.ZodString>;
|
|
41
44
|
description: z.ZodOptional<z.ZodString>;
|
|
42
45
|
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
43
46
|
label: z.ZodOptional<z.ZodString>;
|
|
47
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
48
|
+
validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
44
49
|
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
45
50
|
label: z.ZodString;
|
|
46
51
|
value: z.ZodUnknown;
|
|
47
52
|
}, z.core.$strip>>>;
|
|
48
|
-
|
|
53
|
+
linkBehaviorLabels: z.ZodOptional<z.ZodObject<{
|
|
54
|
+
embedLabel: z.ZodString;
|
|
55
|
+
linkOffLabel: z.ZodString;
|
|
56
|
+
}, z.core.$strip>>;
|
|
57
|
+
}, z.core.$loose>;
|
|
49
58
|
declare const settingsSchema: z.ZodObject<{
|
|
50
59
|
title: z.ZodString;
|
|
51
60
|
overview: z.ZodObject<{
|
|
52
61
|
title: z.ZodString;
|
|
53
62
|
description: z.ZodString;
|
|
54
|
-
|
|
63
|
+
support_link: z.ZodString;
|
|
55
64
|
}, z.core.$strip>;
|
|
56
65
|
elements: z.ZodArray<z.ZodObject<{
|
|
57
66
|
id: z.ZodString;
|
|
58
67
|
inputType: z.ZodEnum<{
|
|
59
68
|
number: "number";
|
|
69
|
+
array: "array";
|
|
70
|
+
url: "url";
|
|
60
71
|
text: "text";
|
|
61
72
|
switch: "switch";
|
|
62
73
|
select: "select";
|
|
63
|
-
|
|
74
|
+
checkbox: "checkbox";
|
|
75
|
+
linkBehavior: "linkBehavior";
|
|
64
76
|
textarea: "textarea";
|
|
65
77
|
}>;
|
|
66
|
-
title: z.ZodString
|
|
78
|
+
title: z.ZodOptional<z.ZodString>;
|
|
67
79
|
description: z.ZodOptional<z.ZodString>;
|
|
68
80
|
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
69
81
|
label: z.ZodOptional<z.ZodString>;
|
|
82
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
83
|
+
validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
70
84
|
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
71
85
|
label: z.ZodString;
|
|
72
86
|
value: z.ZodUnknown;
|
|
73
87
|
}, z.core.$strip>>>;
|
|
74
|
-
|
|
88
|
+
linkBehaviorLabels: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
embedLabel: z.ZodString;
|
|
90
|
+
linkOffLabel: z.ZodString;
|
|
91
|
+
}, z.core.$strip>>;
|
|
92
|
+
}, z.core.$loose>>;
|
|
93
|
+
supports_featured_layout: z.ZodOptional<z.ZodBoolean>;
|
|
75
94
|
}, z.core.$strip>;
|
|
76
95
|
declare const urlMatchRulesSchema: z.ZodObject<{
|
|
77
96
|
hostnames: z.ZodArray<z.ZodString>;
|
|
@@ -88,11 +107,11 @@ export declare const linkAppConfigSchema: z.ZodObject<{
|
|
|
88
107
|
name: z.ZodString;
|
|
89
108
|
tagline: z.ZodString;
|
|
90
109
|
description: z.ZodArray<z.ZodString>;
|
|
91
|
-
|
|
110
|
+
manifest_version: z.ZodString;
|
|
92
111
|
version: z.ZodString;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
112
|
+
supporting_links: z.ZodObject<{
|
|
113
|
+
terms_of_service: z.ZodString;
|
|
114
|
+
privacy_policy: z.ZodString;
|
|
96
115
|
documentation: z.ZodOptional<z.ZodString>;
|
|
97
116
|
website: z.ZodOptional<z.ZodString>;
|
|
98
117
|
}, z.core.$strip>;
|
|
@@ -100,9 +119,9 @@ export declare const linkAppConfigSchema: z.ZodObject<{
|
|
|
100
119
|
grow: "grow";
|
|
101
120
|
sell: "sell";
|
|
102
121
|
share: "share";
|
|
103
|
-
|
|
122
|
+
learn: "learn";
|
|
104
123
|
}>;
|
|
105
|
-
|
|
124
|
+
search_terms: z.ZodArray<z.ZodString>;
|
|
106
125
|
author: z.ZodObject<{
|
|
107
126
|
name: z.ZodString;
|
|
108
127
|
accounts: z.ZodArray<z.ZodString>;
|
|
@@ -117,29 +136,39 @@ export declare const linkAppConfigSchema: z.ZodObject<{
|
|
|
117
136
|
overview: z.ZodObject<{
|
|
118
137
|
title: z.ZodString;
|
|
119
138
|
description: z.ZodString;
|
|
120
|
-
|
|
139
|
+
support_link: z.ZodString;
|
|
121
140
|
}, z.core.$strip>;
|
|
122
141
|
elements: z.ZodArray<z.ZodObject<{
|
|
123
142
|
id: z.ZodString;
|
|
124
143
|
inputType: z.ZodEnum<{
|
|
125
144
|
number: "number";
|
|
145
|
+
array: "array";
|
|
146
|
+
url: "url";
|
|
126
147
|
text: "text";
|
|
127
148
|
switch: "switch";
|
|
128
149
|
select: "select";
|
|
129
|
-
|
|
150
|
+
checkbox: "checkbox";
|
|
151
|
+
linkBehavior: "linkBehavior";
|
|
130
152
|
textarea: "textarea";
|
|
131
153
|
}>;
|
|
132
|
-
title: z.ZodString
|
|
154
|
+
title: z.ZodOptional<z.ZodString>;
|
|
133
155
|
description: z.ZodOptional<z.ZodString>;
|
|
134
156
|
defaultValue: z.ZodOptional<z.ZodUnknown>;
|
|
135
157
|
label: z.ZodOptional<z.ZodString>;
|
|
158
|
+
placeholder: z.ZodOptional<z.ZodString>;
|
|
159
|
+
validation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
136
160
|
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
137
161
|
label: z.ZodString;
|
|
138
162
|
value: z.ZodUnknown;
|
|
139
163
|
}, z.core.$strip>>>;
|
|
140
|
-
|
|
164
|
+
linkBehaviorLabels: z.ZodOptional<z.ZodObject<{
|
|
165
|
+
embedLabel: z.ZodString;
|
|
166
|
+
linkOffLabel: z.ZodString;
|
|
167
|
+
}, z.core.$strip>>;
|
|
168
|
+
}, z.core.$loose>>;
|
|
169
|
+
supports_featured_layout: z.ZodOptional<z.ZodBoolean>;
|
|
141
170
|
}, z.core.$strip>;
|
|
142
|
-
|
|
171
|
+
url_match_rules: z.ZodOptional<z.ZodObject<{
|
|
143
172
|
hostnames: z.ZodArray<z.ZodString>;
|
|
144
173
|
patterns: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
145
174
|
pathname: z.ZodString;
|
|
@@ -148,6 +177,35 @@ export declare const linkAppConfigSchema: z.ZodObject<{
|
|
|
148
177
|
pathname: z.ZodString;
|
|
149
178
|
}, z.core.$strip>>>;
|
|
150
179
|
}, z.core.$strip>>;
|
|
180
|
+
preview_props: z.ZodOptional<z.ZodObject<{
|
|
181
|
+
linkUrl: z.ZodString;
|
|
182
|
+
layout: z.ZodOptional<z.ZodEnum<{
|
|
183
|
+
featured: "featured";
|
|
184
|
+
stack: "stack";
|
|
185
|
+
grid: "grid";
|
|
186
|
+
carousel: "carousel";
|
|
187
|
+
}>>;
|
|
188
|
+
theme: z.ZodObject<{
|
|
189
|
+
textColor: z.ZodString;
|
|
190
|
+
backgroundColor: z.ZodString;
|
|
191
|
+
borderRadius: z.ZodString;
|
|
192
|
+
borderColor: z.ZodString;
|
|
193
|
+
isOutlineStyle: z.ZodBoolean;
|
|
194
|
+
contrastColor: z.ZodString;
|
|
195
|
+
textHoverColor: z.ZodString;
|
|
196
|
+
}, z.core.$strip>;
|
|
197
|
+
locale: z.ZodString;
|
|
198
|
+
currency: z.ZodString;
|
|
199
|
+
username: z.ZodString;
|
|
200
|
+
viewport: z.ZodObject<{
|
|
201
|
+
width: z.ZodNumber;
|
|
202
|
+
height: z.ZodNumber;
|
|
203
|
+
}, z.core.$strip>;
|
|
204
|
+
position: z.ZodOptional<z.ZodObject<{
|
|
205
|
+
latitude: z.ZodNumber;
|
|
206
|
+
longitude: z.ZodNumber;
|
|
207
|
+
}, z.core.$strip>>;
|
|
208
|
+
}, z.core.$catchall<z.ZodUnknown>>>;
|
|
151
209
|
}, z.core.$strip>;
|
|
152
210
|
export type LinkAppConfig = z.infer<typeof linkAppConfigSchema>;
|
|
153
211
|
export type LinkAppManifest = z.infer<typeof manifestSchema>;
|
|
@@ -172,16 +230,16 @@ export declare function safeLyValidateLinkAppConfig(config: unknown): z.ZodSafeP
|
|
|
172
230
|
name: string;
|
|
173
231
|
tagline: string;
|
|
174
232
|
description: string[];
|
|
175
|
-
|
|
233
|
+
manifest_version: string;
|
|
176
234
|
version: string;
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
235
|
+
supporting_links: {
|
|
236
|
+
terms_of_service: string;
|
|
237
|
+
privacy_policy: string;
|
|
180
238
|
documentation?: string | undefined;
|
|
181
239
|
website?: string | undefined;
|
|
182
240
|
};
|
|
183
|
-
category: "grow" | "sell" | "share" | "
|
|
184
|
-
|
|
241
|
+
category: "grow" | "sell" | "share" | "learn";
|
|
242
|
+
search_terms: string[];
|
|
185
243
|
author: {
|
|
186
244
|
name: string;
|
|
187
245
|
accounts: string[];
|
|
@@ -196,22 +254,30 @@ export declare function safeLyValidateLinkAppConfig(config: unknown): z.ZodSafeP
|
|
|
196
254
|
overview: {
|
|
197
255
|
title: string;
|
|
198
256
|
description: string;
|
|
199
|
-
|
|
257
|
+
support_link: string;
|
|
200
258
|
};
|
|
201
259
|
elements: {
|
|
260
|
+
[x: string]: unknown;
|
|
202
261
|
id: string;
|
|
203
|
-
inputType: "number" | "text" | "switch" | "select" | "
|
|
204
|
-
title
|
|
262
|
+
inputType: "number" | "array" | "url" | "text" | "switch" | "select" | "checkbox" | "linkBehavior" | "textarea";
|
|
263
|
+
title?: string | undefined;
|
|
205
264
|
description?: string | undefined;
|
|
206
265
|
defaultValue?: unknown;
|
|
207
266
|
label?: string | undefined;
|
|
267
|
+
placeholder?: string | undefined;
|
|
268
|
+
validation?: Record<string, unknown> | undefined;
|
|
208
269
|
options?: {
|
|
209
270
|
label: string;
|
|
210
271
|
value: unknown;
|
|
211
272
|
}[] | undefined;
|
|
273
|
+
linkBehaviorLabels?: {
|
|
274
|
+
embedLabel: string;
|
|
275
|
+
linkOffLabel: string;
|
|
276
|
+
} | undefined;
|
|
212
277
|
}[];
|
|
278
|
+
supports_featured_layout?: boolean | undefined;
|
|
213
279
|
};
|
|
214
|
-
|
|
280
|
+
url_match_rules?: {
|
|
215
281
|
hostnames: string[];
|
|
216
282
|
patterns?: {
|
|
217
283
|
pathname: string;
|
|
@@ -220,6 +286,31 @@ export declare function safeLyValidateLinkAppConfig(config: unknown): z.ZodSafeP
|
|
|
220
286
|
pathname: string;
|
|
221
287
|
}[] | undefined;
|
|
222
288
|
} | undefined;
|
|
289
|
+
preview_props?: {
|
|
290
|
+
[x: string]: unknown;
|
|
291
|
+
linkUrl: string;
|
|
292
|
+
theme: {
|
|
293
|
+
textColor: string;
|
|
294
|
+
backgroundColor: string;
|
|
295
|
+
borderRadius: string;
|
|
296
|
+
borderColor: string;
|
|
297
|
+
isOutlineStyle: boolean;
|
|
298
|
+
contrastColor: string;
|
|
299
|
+
textHoverColor: string;
|
|
300
|
+
};
|
|
301
|
+
locale: string;
|
|
302
|
+
currency: string;
|
|
303
|
+
username: string;
|
|
304
|
+
viewport: {
|
|
305
|
+
width: number;
|
|
306
|
+
height: number;
|
|
307
|
+
};
|
|
308
|
+
layout?: "featured" | "stack" | "grid" | "carousel" | undefined;
|
|
309
|
+
position?: {
|
|
310
|
+
latitude: number;
|
|
311
|
+
longitude: number;
|
|
312
|
+
} | undefined;
|
|
313
|
+
} | undefined;
|
|
223
314
|
}>;
|
|
224
315
|
/**
|
|
225
316
|
* Type guard to check if a value is a valid LinkAppConfig
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8BvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBlB,CAAA;AAGF,QAAA,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schema/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA8BvB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBlB,CAAA;AAGF,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBX,CAAA;AAGhB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAUlB,CAAA;AAGF,QAAA,MAAM,mBAAmB;;;;;;;;iBAgBvB,CAAA;AAsCF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAU9B,CAAA;AAGF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE"}
|