@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.
Files changed (45) hide show
  1. package/.env.example +4 -1
  2. package/README.md +33 -7
  3. package/assets/pwa/mayson-logo-dark-192x192.png +0 -0
  4. package/assets/pwa/mayson-logo-dark-512x512-maskable.png +0 -0
  5. package/assets/pwa/mayson-logo-dark-512x512.png +0 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +18 -3
  8. package/dist/core/generators.d.ts.map +1 -1
  9. package/dist/core/generators.js +5 -4
  10. package/dist/core/types.d.ts +26 -6
  11. package/dist/core/types.d.ts.map +1 -1
  12. package/dist/index.d.ts +10 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +84 -20
  15. package/dist/plugins/index.d.ts +2 -1
  16. package/dist/plugins/index.d.ts.map +1 -1
  17. package/dist/plugins/index.js +3 -1
  18. package/dist/plugins/pwa/index.d.ts +9 -0
  19. package/dist/plugins/pwa/index.d.ts.map +1 -0
  20. package/dist/plugins/pwa/index.js +11 -0
  21. package/dist/plugins/pwa/inject-project.d.ts +4 -0
  22. package/dist/plugins/pwa/inject-project.d.ts.map +1 -0
  23. package/dist/plugins/pwa/inject-project.js +169 -0
  24. package/dist/plugins/pwa/patch-layout-metadata.d.ts +14 -0
  25. package/dist/plugins/pwa/patch-layout-metadata.d.ts.map +1 -0
  26. package/dist/plugins/pwa/patch-layout-metadata.js +162 -0
  27. package/dist/plugins/pwa/templates/install-prompt.d.ts +3 -0
  28. package/dist/plugins/pwa/templates/install-prompt.d.ts.map +1 -0
  29. package/dist/plugins/pwa/templates/install-prompt.js +175 -0
  30. package/dist/plugins/pwa/templates/manifest.d.ts +11 -0
  31. package/dist/plugins/pwa/templates/manifest.d.ts.map +1 -0
  32. package/dist/plugins/pwa/templates/manifest.js +44 -0
  33. package/dist/plugins/pwa/templates/service-worker-register.d.ts +3 -0
  34. package/dist/plugins/pwa/templates/service-worker-register.d.ts.map +1 -0
  35. package/dist/plugins/pwa/templates/service-worker-register.js +23 -0
  36. package/dist/plugins/pwa/templates/sw.js.d.ts +6 -0
  37. package/dist/plugins/pwa/templates/sw.js.d.ts.map +1 -0
  38. package/dist/plugins/pwa/templates/sw.js.js +55 -0
  39. package/dist/shared/config.d.ts +2 -0
  40. package/dist/shared/config.d.ts.map +1 -1
  41. package/dist/shared/config.js +2 -0
  42. package/dist/shared/generated-app-metadata.d.ts +3 -2
  43. package/dist/shared/generated-app-metadata.d.ts.map +1 -1
  44. package/dist/shared/generated-app-metadata.js +3 -0
  45. 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 };
@@ -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,CA0BrD"}
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"}
@@ -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,CAajE;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,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAqDjF;AAED,oFAAoF;AACpF,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,gCAAqC,GAC7C,OAAO,CAAC,eAAe,CAAC,CAa1B"}
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.8",
4
- "description": "CLI and library to inject Mayson watermark and ascii into Next.js App Router layouts.",
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"