@mayson-org/inject-script 1.0.8 → 1.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/.env.example +4 -1
- package/README.md +33 -7
- package/assets/pwa/mayson-logo-dark-192x192.png +0 -0
- package/assets/pwa/mayson-logo-dark-512x512-maskable.png +0 -0
- package/assets/pwa/mayson-logo-dark-512x512.png +0 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -3
- package/dist/core/generators.d.ts.map +1 -1
- package/dist/core/generators.js +5 -4
- package/dist/core/types.d.ts +26 -6
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -20
- package/dist/plugins/index.d.ts +2 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +3 -1
- package/dist/plugins/pwa/index.d.ts +9 -0
- package/dist/plugins/pwa/index.d.ts.map +1 -0
- package/dist/plugins/pwa/index.js +11 -0
- package/dist/plugins/pwa/inject-project.d.ts +4 -0
- package/dist/plugins/pwa/inject-project.d.ts.map +1 -0
- package/dist/plugins/pwa/inject-project.js +169 -0
- package/dist/plugins/pwa/patch-layout-metadata.d.ts +14 -0
- package/dist/plugins/pwa/patch-layout-metadata.d.ts.map +1 -0
- package/dist/plugins/pwa/patch-layout-metadata.js +162 -0
- package/dist/plugins/pwa/templates/install-prompt.d.ts +3 -0
- package/dist/plugins/pwa/templates/install-prompt.d.ts.map +1 -0
- package/dist/plugins/pwa/templates/install-prompt.js +175 -0
- package/dist/plugins/pwa/templates/manifest.d.ts +11 -0
- package/dist/plugins/pwa/templates/manifest.d.ts.map +1 -0
- package/dist/plugins/pwa/templates/manifest.js +44 -0
- package/dist/plugins/pwa/templates/service-worker-register.d.ts +3 -0
- package/dist/plugins/pwa/templates/service-worker-register.d.ts.map +1 -0
- package/dist/plugins/pwa/templates/service-worker-register.js +23 -0
- package/dist/plugins/pwa/templates/sw.js.d.ts +6 -0
- package/dist/plugins/pwa/templates/sw.js.d.ts.map +1 -0
- package/dist/plugins/pwa/templates/sw.js.js +55 -0
- package/dist/shared/config.d.ts +2 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +2 -0
- package/dist/shared/generated-app-metadata.d.ts +3 -2
- package/dist/shared/generated-app-metadata.d.ts.map +1 -1
- package/dist/shared/generated-app-metadata.js +3 -0
- package/package.json +4 -2
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const SW_MARKER = '@mayson-pwa-sw';
|
|
2
|
+
const CACHE_VERSION = 'mayson-pwa-v1';
|
|
3
|
+
/** public/sw.js source with Mayson ownership marker. */
|
|
4
|
+
export function buildSwJsSource() {
|
|
5
|
+
return `// ${SW_MARKER}
|
|
6
|
+
// Minimal PWA service worker.
|
|
7
|
+
//
|
|
8
|
+
// Cache-first ONLY for content-hashed, immutable URLs:
|
|
9
|
+
// /_next/static/** — Next.js build output (hash in filename)
|
|
10
|
+
// /generated/** — agent-generated images (written once, never edited)
|
|
11
|
+
// Everything else (HTML, API calls, dev HMR) is a plain network passthrough.
|
|
12
|
+
// Bump CACHE_VERSION when the caching rules change.
|
|
13
|
+
const CACHE_VERSION = ${JSON.stringify(CACHE_VERSION)};
|
|
14
|
+
|
|
15
|
+
self.addEventListener('install', () => self.skipWaiting());
|
|
16
|
+
|
|
17
|
+
self.addEventListener('activate', (event) => {
|
|
18
|
+
event.waitUntil(
|
|
19
|
+
caches
|
|
20
|
+
.keys()
|
|
21
|
+
.then((keys) =>
|
|
22
|
+
Promise.all(keys.filter((k) => k !== CACHE_VERSION).map((k) => caches.delete(k))),
|
|
23
|
+
)
|
|
24
|
+
.then(() => self.clients.claim()),
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
function isCacheable(url) {
|
|
29
|
+
return (
|
|
30
|
+
url.origin === self.location.origin &&
|
|
31
|
+
(url.pathname.startsWith('/_next/static/') || url.pathname.startsWith('/generated/'))
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
self.addEventListener('fetch', (event) => {
|
|
36
|
+
const { request } = event;
|
|
37
|
+
if (request.method !== 'GET') return;
|
|
38
|
+
const url = new URL(request.url);
|
|
39
|
+
if (!isCacheable(url)) return; // passthrough: do not call respondWith
|
|
40
|
+
|
|
41
|
+
event.respondWith(
|
|
42
|
+
caches.open(CACHE_VERSION).then((cache) =>
|
|
43
|
+
cache.match(request).then((cached) => {
|
|
44
|
+
if (cached) return cached;
|
|
45
|
+
return fetch(request).then((response) => {
|
|
46
|
+
if (response.ok) cache.put(request, response.clone());
|
|
47
|
+
return response;
|
|
48
|
+
});
|
|
49
|
+
}),
|
|
50
|
+
),
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
export { SW_MARKER, CACHE_VERSION };
|
package/dist/shared/config.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export type MaysonEnvConfig = {
|
|
|
7
7
|
/** Local defaults before API merge */
|
|
8
8
|
showRemixPill: boolean;
|
|
9
9
|
enableRemix: boolean;
|
|
10
|
+
/** PWA / manifest display name when known */
|
|
11
|
+
websiteTitle: string;
|
|
10
12
|
};
|
|
11
13
|
/** Load Mayson platform env (inject-time / CLI). */
|
|
12
14
|
export declare function loadMaysonEnvConfig(): MaysonEnvConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAMF,oDAAoD;AACpD,wBAAgB,mBAAmB,IAAI,eAAe,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAMF,oDAAoD;AACpD,wBAAgB,mBAAmB,IAAI,eAAe,CA8BrD"}
|
package/dist/shared/config.js
CHANGED
|
@@ -13,6 +13,7 @@ export function loadMaysonEnvConfig() {
|
|
|
13
13
|
if (!workspaceId && !collectionId && !apiBaseUrl) {
|
|
14
14
|
console.warn('[mayson] missing MAYSON_WORKSPACE_ID, MAYSON_COLLECTION_ID, or MAYSON_API_BASE_URL — metadata fetch may be skipped');
|
|
15
15
|
}
|
|
16
|
+
const websiteTitle = readEnv('MAYSON_WEBSITE_TITLE') || readEnv('NEXT_PUBLIC_MAYSON_WEBSITE_TITLE');
|
|
16
17
|
return {
|
|
17
18
|
workspaceId,
|
|
18
19
|
collectionId,
|
|
@@ -21,5 +22,6 @@ export function loadMaysonEnvConfig() {
|
|
|
21
22
|
webToken,
|
|
22
23
|
showRemixPill: false,
|
|
23
24
|
enableRemix: false,
|
|
25
|
+
websiteTitle,
|
|
24
26
|
};
|
|
25
27
|
}
|
|
@@ -2,6 +2,7 @@ import type { MaysonEnvConfig } from './config.js';
|
|
|
2
2
|
export type GeneratedAppMetadataValue = {
|
|
3
3
|
show_remix_pill?: boolean | null;
|
|
4
4
|
enable_remix?: boolean | null;
|
|
5
|
+
website_title?: string | null;
|
|
5
6
|
};
|
|
6
7
|
export type GeneratedAppMetadataResponse = {
|
|
7
8
|
response_code?: number;
|
|
@@ -18,11 +19,11 @@ export type FetchGeneratedAppMetadataOptions = {
|
|
|
18
19
|
export declare const METADATA_NOT_FOUND_DEFAULTS: Pick<MaysonEnvConfig, 'showRemixPill' | 'enableRemix'>;
|
|
19
20
|
export declare function resolveGeneratedAppMetadataUrl(config: Pick<MaysonEnvConfig, 'apiBaseUrl' | 'workspaceId' | 'collectionId'>): string | null;
|
|
20
21
|
export declare function shouldFetchGeneratedAppMetadata(config: MaysonEnvConfig, webToken?: string): boolean;
|
|
21
|
-
export declare function mapGeneratedAppMetadataValue(value: GeneratedAppMetadataValue): Partial<Pick<MaysonEnvConfig, 'showRemixPill' | 'enableRemix'>>;
|
|
22
|
+
export declare function mapGeneratedAppMetadataValue(value: GeneratedAppMetadataValue): Partial<Pick<MaysonEnvConfig, 'showRemixPill' | 'enableRemix' | 'websiteTitle'>>;
|
|
22
23
|
/** True when API indicates no metadata row exists yet (HTTP or body 404). */
|
|
23
24
|
export declare function isGeneratedAppMetadataNotFound(httpStatus: number, data: GeneratedAppMetadataResponse | null | undefined): boolean;
|
|
24
25
|
/** Fetch generated-app-metadata. Returns null on hard failure (network / non-404 errors). */
|
|
25
|
-
export declare function fetchGeneratedAppMetadata(config: MaysonEnvConfig, options?: FetchGeneratedAppMetadataOptions): Promise<Partial<Pick<MaysonEnvConfig, 'showRemixPill' | 'enableRemix'>> | null>;
|
|
26
|
+
export declare function fetchGeneratedAppMetadata(config: MaysonEnvConfig, options?: FetchGeneratedAppMetadataOptions): Promise<Partial<Pick<MaysonEnvConfig, 'showRemixPill' | 'enableRemix' | 'websiteTitle'>> | null>;
|
|
26
27
|
/** Local env config merged with generated-app-metadata when credentials are set. */
|
|
27
28
|
export declare function resolveMaysonConfig(options?: FetchGeneratedAppMetadataOptions): Promise<MaysonEnvConfig>;
|
|
28
29
|
//# sourceMappingURL=generated-app-metadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-app-metadata.d.ts","sourceRoot":"","sources":["../../src/shared/generated-app-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,MAAM,yBAAyB,GAAG;IACtC,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,yBAAyB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,EAAE,IAAI,CAC5C,eAAe,EACf,eAAe,GAAG,aAAa,CAIhC,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC,GAC3E,MAAM,GAAG,IAAI,CASf;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAGT;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"generated-app-metadata.d.ts","sourceRoot":"","sources":["../../src/shared/generated-app-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,MAAM,yBAAyB,GAAG;IACtC,eAAe,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,yBAAyB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,EAAE,IAAI,CAC5C,eAAe,EACf,eAAe,GAAG,aAAa,CAIhC,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC,GAC3E,MAAM,GAAG,IAAI,CASf;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAGT;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC,CAAC,CAkBlF;AAeD,6EAA6E;AAC7E,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,4BAA4B,GAAG,IAAI,GAAG,SAAS,GACpD,OAAO,CAiBT;AAYD,6FAA6F;AAC7F,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CACR,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC,CAAC,GAAG,IAAI,CACxF,CAqDA;AAED,oFAAoF;AACpF,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,eAAe,CAAC,CAa1B"}
|
|
@@ -27,6 +27,9 @@ export function mapGeneratedAppMetadataValue(value) {
|
|
|
27
27
|
if (remix !== undefined) {
|
|
28
28
|
partial.enableRemix = remix;
|
|
29
29
|
}
|
|
30
|
+
if (typeof value.website_title === 'string' && value.website_title.trim()) {
|
|
31
|
+
partial.websiteTitle = value.website_title.trim();
|
|
32
|
+
}
|
|
30
33
|
return partial;
|
|
31
34
|
}
|
|
32
35
|
function coerceBoolean(value) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mayson-org/inject-script",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "CLI and library to inject Mayson watermark and
|
|
3
|
+
"version": "1.0.10",
|
|
4
|
+
"description": "CLI and library to inject Mayson watermark, ascii, and PWA into Next.js App Router layouts.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"files": [
|
|
25
25
|
"bin",
|
|
26
26
|
"dist",
|
|
27
|
+
"assets",
|
|
27
28
|
"README.md",
|
|
28
29
|
".env.example"
|
|
29
30
|
],
|
|
@@ -35,6 +36,7 @@
|
|
|
35
36
|
"app-router",
|
|
36
37
|
"layout",
|
|
37
38
|
"watermark",
|
|
39
|
+
"pwa",
|
|
38
40
|
"metadata",
|
|
39
41
|
"mayson",
|
|
40
42
|
"cli"
|