@mayson-org/inject-script 1.0.27 → 1.0.29
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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/plugins/metadata/__tests__/api-handler.test.js +3 -3
- package/dist/plugins/metadata/api-handler.d.ts.map +1 -1
- package/dist/plugins/metadata/index.d.ts +1 -2
- package/dist/plugins/metadata/index.d.ts.map +1 -1
- package/dist/plugins/metadata/index.js +1 -1
- package/dist/plugins/metadata/inject-api-route.d.ts +1 -1
- package/dist/plugins/metadata/inject-api-route.d.ts.map +1 -1
- package/dist/plugins/metadata/inject-api-route.js +7 -6
- package/dist/plugins/metadata/patch-next-config.d.ts +9 -0
- package/dist/plugins/metadata/patch-next-config.d.ts.map +1 -0
- package/dist/plugins/metadata/patch-next-config.js +84 -0
- package/dist/plugins/metadata/patch-vercel-config.d.ts.map +1 -1
- package/dist/plugins/metadata/patch-vercel-config.js +0 -4
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export type { MaysonEnvConfig } from './shared/config.js';
|
|
|
10
10
|
export { fetchGeneratedAppMetadata, resolveMaysonConfig, shouldFetchGeneratedAppMetadata, } from './shared/generated-app-metadata.js';
|
|
11
11
|
export { watermarkPlugin, buildMaysonWatermarkSource, } from './plugins/watermark/index.js';
|
|
12
12
|
export { asciiPlugin, buildMaysonAsciiSource, } from './plugins/ascii/index.js';
|
|
13
|
-
export { metadataPlugin, handleMetadataApiRoute, generateMetadataApiRouteSource, injectMetadataApiRoute, generateRandomApiSubpath, resolveMetadataApiSubpath,
|
|
14
|
-
export type { MetadataApiResponse, MaysonRealtimeStats
|
|
13
|
+
export { metadataPlugin, handleMetadataApiRoute, generateMetadataApiRouteSource, injectMetadataApiRoute, generateRandomApiSubpath, resolveMetadataApiSubpath, patchNextConfig, METADATA_COOKIE_NAME, DEFAULT_COOKIE_MAX_AGE, } from './plugins/metadata/index.js';
|
|
14
|
+
export type { MetadataApiResponse, MaysonRealtimeStats } from './plugins/metadata/index.js';
|
|
15
15
|
export { pwaPlugin, injectPwaProject, buildMaysonServiceWorkerRegisterSource, buildMaysonInstallPromptSource, buildManifestSource, buildSwJsSource, patchLayoutPwaMetadata, } from './plugins/pwa/index.js';
|
|
16
16
|
export { BUILD_WITH_LOVE_ASCII, MAYSON_LETTER_ASCII, } from './shared/ascii-art.js';
|
|
17
17
|
export type { ComponentType, GeneratedComponentInfo, ComponentGeneratorOptions, InjectorOptions, InjectorResult, MaysonPlugin, PluginGenerateContext, ProjectInjectContext, ProjectInjectResult, } from './core/types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,WAAW,EACX,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EAEf,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,WAAW,EACX,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,sCAAsC,EACtC,8BAA8B,EAC9B,mBAAmB,EACnB,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mFAAmF;IACnF,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AA4EF;;;GAGG;AACH,wBAAsB,aAAa,CACjC,WAAW,GAAE,MAAsB,EACnC,cAAc,GAAE,aAAa,EAAE,GAAG,oBAAoC,EACtE,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,cAAc,CAAC,CAoHzB"}
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ export { loadMaysonEnvConfig } from './shared/config.js';
|
|
|
15
15
|
export { fetchGeneratedAppMetadata, resolveMaysonConfig, shouldFetchGeneratedAppMetadata, } from './shared/generated-app-metadata.js';
|
|
16
16
|
export { watermarkPlugin, buildMaysonWatermarkSource, } from './plugins/watermark/index.js';
|
|
17
17
|
export { asciiPlugin, buildMaysonAsciiSource, } from './plugins/ascii/index.js';
|
|
18
|
-
export { metadataPlugin, handleMetadataApiRoute, generateMetadataApiRouteSource, injectMetadataApiRoute, generateRandomApiSubpath, resolveMetadataApiSubpath,
|
|
18
|
+
export { metadataPlugin, handleMetadataApiRoute, generateMetadataApiRouteSource, injectMetadataApiRoute, generateRandomApiSubpath, resolveMetadataApiSubpath, patchNextConfig, METADATA_COOKIE_NAME, DEFAULT_COOKIE_MAX_AGE, } from './plugins/metadata/index.js';
|
|
19
19
|
export { pwaPlugin, injectPwaProject, buildMaysonServiceWorkerRegisterSource, buildMaysonInstallPromptSource, buildManifestSource, buildSwJsSource, patchLayoutPwaMetadata, } from './plugins/pwa/index.js';
|
|
20
20
|
export { BUILD_WITH_LOVE_ASCII, MAYSON_LETTER_ASCII, } from './shared/ascii-art.js';
|
|
21
21
|
const DEFAULT_TYPES = ['watermark', 'ascii', 'metadata', 'pwa'];
|
|
@@ -2,7 +2,7 @@ import { describe, it } from 'node:test';
|
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
3
|
import { handleMetadataApiRoute, METADATA_COOKIE_NAME, generateMetadataApiRouteSource, } from '../api-handler.js';
|
|
4
4
|
import { generateRandomApiSubpath } from '../inject-api-route.js';
|
|
5
|
-
import {
|
|
5
|
+
import { patchNextConfig } from '../patch-next-config.js';
|
|
6
6
|
describe('Metadata API Route & Cookie Caching', () => {
|
|
7
7
|
it('returns cache MISS on initial request without cookie', async () => {
|
|
8
8
|
const req = new Request('http://localhost:3000/api/randomeapipath', {
|
|
@@ -54,8 +54,8 @@ describe('Metadata API Route & Cookie Caching', () => {
|
|
|
54
54
|
assert.ok(!subpath1.startsWith('mayson-'));
|
|
55
55
|
assert.notEqual(subpath1, subpath2);
|
|
56
56
|
});
|
|
57
|
-
it('patches
|
|
58
|
-
const res =
|
|
57
|
+
it('patches next.config with rewrites for /~muxt-app.js and /~api/analytics', () => {
|
|
58
|
+
const res = patchNextConfig({
|
|
59
59
|
projectRoot: process.cwd(),
|
|
60
60
|
appBaseUrl: 'https://mayson.dev',
|
|
61
61
|
dryRun: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/api-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC,CAAC;IAC9E,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/api-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAC5D,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,aAAa,GAAG,cAAc,CAAC,CAAC;IAC9E,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAkBF;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsD5E;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAkIvD"}
|
|
@@ -2,8 +2,7 @@ import type { MaysonPlugin, PluginGenerateContext } from '../../core/types.js';
|
|
|
2
2
|
export { handleMetadataApiRoute, generateMetadataApiRouteSource, METADATA_COOKIE_NAME, DEFAULT_COOKIE_MAX_AGE, } from './api-handler.js';
|
|
3
3
|
export type { MetadataApiResponse } from './api-handler.js';
|
|
4
4
|
export { injectMetadataApiRoute, generateRandomApiSubpath, resolveMetadataApiSubpath, } from './inject-api-route.js';
|
|
5
|
-
export {
|
|
6
|
-
export type { VercelConfig, VercelRewrite } from './patch-vercel-config.js';
|
|
5
|
+
export { patchNextConfig } from './patch-next-config.js';
|
|
7
6
|
export type MaysonRealtimeStats = {
|
|
8
7
|
showRemixPill: boolean;
|
|
9
8
|
enableRemix: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/E,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/E,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAclF;AAED,eAAO,MAAM,cAAc,EAAE,YAK5B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { injectMetadataApiRoute } from './inject-api-route.js';
|
|
2
2
|
export { handleMetadataApiRoute, generateMetadataApiRouteSource, METADATA_COOKIE_NAME, DEFAULT_COOKIE_MAX_AGE, } from './api-handler.js';
|
|
3
3
|
export { injectMetadataApiRoute, generateRandomApiSubpath, resolveMetadataApiSubpath, } from './inject-api-route.js';
|
|
4
|
-
export {
|
|
4
|
+
export { patchNextConfig } from './patch-next-config.js';
|
|
5
5
|
export function buildMaysonMetadataSource(_context) {
|
|
6
6
|
return `'use client';
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ export declare function findAppDir(projectRoot: string, layoutPath?: string): st
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function resolveMetadataApiSubpath(_projectRoot?: string, _layoutPath?: string, overrideSubpath?: string): string;
|
|
11
11
|
/**
|
|
12
|
-
* Inject the metadata API route handler (/api/<random-subpath>) and
|
|
12
|
+
* Inject the metadata API route handler (/api/<random-subpath>) and next.config rewrites into project workspace.
|
|
13
13
|
*/
|
|
14
14
|
export declare function injectMetadataApiRoute(context: ProjectInjectContext & {
|
|
15
15
|
routeSubpath?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inject-api-route.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/inject-api-route.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIrF;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAOjD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,mBAAmB,
|
|
1
|
+
{"version":3,"file":"inject-api-route.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/inject-api-route.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIrF;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAOjD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ3E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,GAAG;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,mBAAmB,CA4DrB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { generateMetadataApiRouteSource } from './api-handler.js';
|
|
4
|
-
import {
|
|
4
|
+
import { patchNextConfig } from './patch-next-config.js';
|
|
5
5
|
/**
|
|
6
6
|
* Generate a purely random 10-character subpath string with no predictable prefix.
|
|
7
7
|
*/
|
|
@@ -32,20 +32,21 @@ export function resolveMetadataApiSubpath(_projectRoot, _layoutPath, overrideSub
|
|
|
32
32
|
return generateRandomApiSubpath();
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
* Inject the metadata API route handler (/api/<random-subpath>) and
|
|
35
|
+
* Inject the metadata API route handler (/api/<random-subpath>) and next.config rewrites into project workspace.
|
|
36
36
|
*/
|
|
37
37
|
export function injectMetadataApiRoute(context) {
|
|
38
38
|
const { projectRoot, layoutPath, dryRun = false } = context;
|
|
39
39
|
const messages = [];
|
|
40
40
|
const injectedComponents = [];
|
|
41
41
|
const skippedComponents = [];
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
const appBaseUrl = context.context?.metadata?.appBaseUrl || context.context?.watermark?.appBaseUrl;
|
|
43
|
+
// Patch next.config rewrites for /~muxt-app.js and /~api/analytics
|
|
44
|
+
const nextConfigResult = patchNextConfig({
|
|
44
45
|
projectRoot,
|
|
45
|
-
appBaseUrl
|
|
46
|
+
appBaseUrl,
|
|
46
47
|
dryRun,
|
|
47
48
|
});
|
|
48
|
-
messages.push(...
|
|
49
|
+
messages.push(...nextConfigResult.messages);
|
|
49
50
|
const subpath = context.routeSubpath ??
|
|
50
51
|
(context.context?.metadata?.apiRoutePath
|
|
51
52
|
? context.context.metadata.apiRoutePath.replace(/^\/api\//, '')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-next-config.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/patch-next-config.ts"],"names":[],"mappings":"AASA,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA0F3C"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
function readEnv(key) {
|
|
4
|
+
return process.env[key]?.trim() ?? '';
|
|
5
|
+
}
|
|
6
|
+
export function patchNextConfig(options) {
|
|
7
|
+
const { projectRoot, dryRun = false } = options;
|
|
8
|
+
const rawBase = (options.appBaseUrl || 'https://mayson.dev').replace(/\/$/, '');
|
|
9
|
+
const messages = [];
|
|
10
|
+
const rewritesSnippet = `
|
|
11
|
+
async rewrites() {
|
|
12
|
+
return [
|
|
13
|
+
{
|
|
14
|
+
source: '/~muxt-app.js',
|
|
15
|
+
destination: '${rawBase}/sdks/v2/muxt-app.js',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
source: '/~api/analytics',
|
|
19
|
+
destination: '${rawBase}/api/analytics?'${`workspace_id=${readEnv('MAYSON_WORKSPACE_ID')}&collection_id=${readEnv('MAYSON_COLLECTION_ID')}`},
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
},`;
|
|
23
|
+
const candidates = ['next.config.js', 'next.config.mjs', 'next.config.ts'];
|
|
24
|
+
const configFile = candidates.find((f) => fs.existsSync(path.join(projectRoot, f)));
|
|
25
|
+
const targetFileName = configFile || 'next.config.js';
|
|
26
|
+
const targetPath = path.join(projectRoot, targetFileName);
|
|
27
|
+
if (!configFile) {
|
|
28
|
+
const newConfigContent = `/** @type {import('next').NextConfig} */
|
|
29
|
+
const nextConfig = {${rewritesSnippet}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports = nextConfig;
|
|
33
|
+
`;
|
|
34
|
+
if (!dryRun) {
|
|
35
|
+
fs.writeFileSync(targetPath, newConfigContent, 'utf-8');
|
|
36
|
+
}
|
|
37
|
+
messages.push(dryRun
|
|
38
|
+
? `would create ${targetFileName} with rewrites`
|
|
39
|
+
: `created ${targetFileName} with rewrites`);
|
|
40
|
+
return { changed: true, messages };
|
|
41
|
+
}
|
|
42
|
+
const content = fs.readFileSync(targetPath, 'utf-8');
|
|
43
|
+
// Skip if rewrites for ~muxt-app.js already present
|
|
44
|
+
if (content.includes('/~muxt-app.js')) {
|
|
45
|
+
messages.push(`${targetFileName} rewrites already up to date`);
|
|
46
|
+
return { changed: false, messages };
|
|
47
|
+
}
|
|
48
|
+
let updated = content;
|
|
49
|
+
if (/async\s+rewrites\s*\(\s*\)\s*\{/.test(updated)) {
|
|
50
|
+
const rewriteItems = `
|
|
51
|
+
{
|
|
52
|
+
source: '/~muxt-app.js',
|
|
53
|
+
destination: '${rawBase}/sdks/v2/muxt-app.js',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
source: '/~api/analytics',
|
|
57
|
+
destination: '${rawBase}/api/analytics',
|
|
58
|
+
},`;
|
|
59
|
+
updated = updated.replace(/return\s*\[/, `return [${rewriteItems}`);
|
|
60
|
+
}
|
|
61
|
+
else if (/const\s+nextConfig\s*(?::\s*NextConfig\s*)?=\s*\{/.test(updated)) {
|
|
62
|
+
updated = updated.replace(/(const\s+nextConfig\s*(?::\s*NextConfig\s*)?=\s*\{)/, `$1${rewritesSnippet}`);
|
|
63
|
+
}
|
|
64
|
+
else if (/module\.exports\s*=\s*\{/.test(updated)) {
|
|
65
|
+
updated = updated.replace(/module\.exports\s*=\s*\{/, `module.exports = {${rewritesSnippet}`);
|
|
66
|
+
}
|
|
67
|
+
else if (/export\s+default\s*\{/.test(updated)) {
|
|
68
|
+
updated = updated.replace(/export\s+default\s*\{/, `export default {${rewritesSnippet}`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
updated += `\n// Mayson App Rewrites\n/** @type {import('next').NextConfig} */\nconst maysonNextConfig = {${rewritesSnippet}\n};\nmodule.exports = maysonNextConfig;\n`;
|
|
72
|
+
}
|
|
73
|
+
if (updated !== content) {
|
|
74
|
+
if (!dryRun) {
|
|
75
|
+
fs.writeFileSync(targetPath, updated, 'utf-8');
|
|
76
|
+
}
|
|
77
|
+
messages.push(dryRun
|
|
78
|
+
? `would update ${targetFileName} with rewrites`
|
|
79
|
+
: `updated ${targetFileName} with rewrites`);
|
|
80
|
+
return { changed: true, messages };
|
|
81
|
+
}
|
|
82
|
+
messages.push(`${targetFileName} left unchanged`);
|
|
83
|
+
return { changed: false, messages };
|
|
84
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patch-vercel-config.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/patch-vercel-config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"patch-vercel-config.d.ts","sourceRoot":"","sources":["../../../src/plugins/metadata/patch-vercel-config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAoE3C"}
|
|
@@ -14,10 +14,6 @@ export function patchVercelConfig(options) {
|
|
|
14
14
|
source: '/~api/analytics',
|
|
15
15
|
destination: `${rawBase}/api/analytics`,
|
|
16
16
|
},
|
|
17
|
-
{
|
|
18
|
-
source: '/~/analytics',
|
|
19
|
-
destination: `${rawBase}/api/analytics`,
|
|
20
|
-
},
|
|
21
17
|
];
|
|
22
18
|
let config = {};
|
|
23
19
|
let fileExists = false;
|
package/package.json
CHANGED