@noego/forge 0.0.20 → 0.0.22

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/client.d.ts CHANGED
@@ -3,7 +3,7 @@ import { RequestHandler } from 'express';
3
3
 
4
4
  declare type AssetEntry = string | RequestHandler | ErrorRequestHandler;
5
5
 
6
- declare function assets(overrides?: ForgeAssetsOverrides, _config?: ForgeAssetsConfig): Record<string, AssetEntry[]>;
6
+ declare function assets(overrides?: ForgeAssetsOverrides, config?: ForgeAssetsConfig): Record<string, AssetEntry[]>;
7
7
 
8
8
  declare type AsyncHeadersMiddleware = (headers: HeadersObject) => Promise<void> | void;
9
9
 
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.assets = void 0;
7
+ const path_1 = __importDefault(require("path"));
4
8
  const toArray = (value) => {
5
9
  if (Array.isArray(value)) {
6
10
  return value.filter(Boolean);
@@ -26,15 +30,15 @@ const mergeRecords = (target, additions) => {
26
30
  }
27
31
  return target;
28
32
  };
29
- function assets(overrides = {}, _config = {}) {
30
- const isProduction = process.env.NODE_ENV === 'production';
31
- const base = {
32
- '/assets': ['.app/assets']
33
- };
34
- if (isProduction) {
35
- const entries = new Set(base['/assets']);
36
- base['/assets'] = Array.from(entries);
33
+ function assets(overrides = {}, config = {}) {
34
+ const envBuilt = process.env.NOEGO_BUILT === 'true' || process.env.FORGE_BUILT === 'true';
35
+ const clientDir = config.clientDir ?? '.app';
36
+ const clientAssetsDir = config.clientAssetsDir ?? path_1.default.join(clientDir, 'assets');
37
+ const base = {};
38
+ if (envBuilt) {
39
+ base['/assets'] = toArray(clientAssetsDir);
37
40
  }
41
+ mergeRecords(base, config.extras);
38
42
  mergeRecords(base, overrides);
39
43
  return base;
40
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":";;;AAkDA,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAgB,MAAM,CAClB,YAAkC,EAAE,EACpC,UAA6B,EAAE;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE3D,MAAM,IAAI,GAAiC;QACvC,SAAS,EAAE,CAAC,aAAa,CAAC;KAC7B,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC;AAlBD,wBAkBC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAmDxB,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAgB,MAAM,CAClB,YAAkC,EAAE,EACpC,SAA4B,EAAE;IAE9B,MAAM,QAAQ,GACV,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;IAC7C,MAAM,eAAe,GACjB,MAAM,CAAC,eAAe,IAAI,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAiC,EAAE,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC;AApBD,wBAoBC"}
@@ -44,5 +44,5 @@ export interface ForgeAssetsConfig {
44
44
  */
45
45
  includeStylesInProduction?: boolean;
46
46
  }
47
- export declare function assets(overrides?: ForgeAssetsOverrides, _config?: ForgeAssetsConfig): Record<string, AssetEntry[]>;
47
+ export declare function assets(overrides?: ForgeAssetsOverrides, config?: ForgeAssetsConfig): Record<string, AssetEntry[]>;
48
48
  export type ForgeAssets = ReturnType<typeof assets>;
@@ -1,3 +1,4 @@
1
+ import path from 'path';
1
2
  const toArray = (value) => {
2
3
  if (Array.isArray(value)) {
3
4
  return value.filter(Boolean);
@@ -23,15 +24,15 @@ const mergeRecords = (target, additions) => {
23
24
  }
24
25
  return target;
25
26
  };
26
- export function assets(overrides = {}, _config = {}) {
27
- const isProduction = process.env.NODE_ENV === 'production';
28
- const base = {
29
- '/assets': ['.app/assets']
30
- };
31
- if (isProduction) {
32
- const entries = new Set(base['/assets']);
33
- base['/assets'] = Array.from(entries);
27
+ export function assets(overrides = {}, config = {}) {
28
+ const envBuilt = process.env.NOEGO_BUILT === 'true' || process.env.FORGE_BUILT === 'true';
29
+ const clientDir = config.clientDir ?? '.app';
30
+ const clientAssetsDir = config.clientAssetsDir ?? path.join(clientDir, 'assets');
31
+ const base = {};
32
+ if (envBuilt) {
33
+ base['/assets'] = toArray(clientAssetsDir);
34
34
  }
35
+ mergeRecords(base, config.extras);
35
36
  mergeRecords(base, overrides);
36
37
  return base;
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":"AAkDA,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,MAAM,CAClB,YAAkC,EAAE,EACpC,UAA6B,EAAE;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE3D,MAAM,IAAI,GAAiC;QACvC,SAAS,EAAE,CAAC,aAAa,CAAC;KAC7B,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAmDxB,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,MAAM,CAClB,YAAkC,EAAE,EACpC,SAA4B,EAAE;IAE9B,MAAM,QAAQ,GACV,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;IAC7C,MAAM,eAAe,GACjB,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAiC,EAAE,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.assets = void 0;
7
+ const path_1 = __importDefault(require("path"));
4
8
  const toArray = (value) => {
5
9
  if (Array.isArray(value)) {
6
10
  return value.filter(Boolean);
@@ -26,15 +30,15 @@ const mergeRecords = (target, additions) => {
26
30
  }
27
31
  return target;
28
32
  };
29
- function assets(overrides = {}, _config = {}) {
30
- const isProduction = process.env.NODE_ENV === 'production';
31
- const base = {
32
- '/assets': ['.app/assets']
33
- };
34
- if (isProduction) {
35
- const entries = new Set(base['/assets']);
36
- base['/assets'] = Array.from(entries);
33
+ function assets(overrides = {}, config = {}) {
34
+ const envBuilt = process.env.NOEGO_BUILT === 'true' || process.env.FORGE_BUILT === 'true';
35
+ const clientDir = config.clientDir ?? '.app';
36
+ const clientAssetsDir = config.clientAssetsDir ?? path_1.default.join(clientDir, 'assets');
37
+ const base = {};
38
+ if (envBuilt) {
39
+ base['/assets'] = toArray(clientAssetsDir);
37
40
  }
41
+ mergeRecords(base, config.extras);
38
42
  mergeRecords(base, overrides);
39
43
  return base;
40
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":";;;AAkDA,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAgB,MAAM,CAClB,YAAkC,EAAE,EACpC,UAA6B,EAAE;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE3D,MAAM,IAAI,GAAiC;QACvC,SAAS,EAAE,CAAC,aAAa,CAAC;KAC7B,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC;AAlBD,wBAkBC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAmDxB,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAgB,MAAM,CAClB,YAAkC,EAAE,EACpC,SAA4B,EAAE;IAE9B,MAAM,QAAQ,GACV,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;IAC7C,MAAM,eAAe,GACjB,MAAM,CAAC,eAAe,IAAI,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAiC,EAAE,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC;AApBD,wBAoBC"}
@@ -44,5 +44,5 @@ export interface ForgeAssetsConfig {
44
44
  */
45
45
  includeStylesInProduction?: boolean;
46
46
  }
47
- export declare function assets(overrides?: ForgeAssetsOverrides, _config?: ForgeAssetsConfig): Record<string, AssetEntry[]>;
47
+ export declare function assets(overrides?: ForgeAssetsOverrides, config?: ForgeAssetsConfig): Record<string, AssetEntry[]>;
48
48
  export type ForgeAssets = ReturnType<typeof assets>;
@@ -1,3 +1,4 @@
1
+ import path from 'path';
1
2
  const toArray = (value) => {
2
3
  if (Array.isArray(value)) {
3
4
  return value.filter(Boolean);
@@ -23,15 +24,15 @@ const mergeRecords = (target, additions) => {
23
24
  }
24
25
  return target;
25
26
  };
26
- export function assets(overrides = {}, _config = {}) {
27
- const isProduction = process.env.NODE_ENV === 'production';
28
- const base = {
29
- '/assets': ['.app/assets']
30
- };
31
- if (isProduction) {
32
- const entries = new Set(base['/assets']);
33
- base['/assets'] = Array.from(entries);
27
+ export function assets(overrides = {}, config = {}) {
28
+ const envBuilt = process.env.NOEGO_BUILT === 'true' || process.env.FORGE_BUILT === 'true';
29
+ const clientDir = config.clientDir ?? '.app';
30
+ const clientAssetsDir = config.clientAssetsDir ?? path.join(clientDir, 'assets');
31
+ const base = {};
32
+ if (envBuilt) {
33
+ base['/assets'] = toArray(clientAssetsDir);
34
34
  }
35
+ mergeRecords(base, config.extras);
35
36
  mergeRecords(base, overrides);
36
37
  return base;
37
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":"AAkDA,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,MAAM,CAClB,YAAkC,EAAE,EACpC,UAA6B,EAAE;IAE/B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IAE3D,MAAM,IAAI,GAAiC;QACvC,SAAS,EAAE,CAAC,aAAa,CAAC;KAC7B,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/options/assets.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAmDxB,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAgB,EAAE;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACjB,MAAoC,EACpC,SAAgC,EAClC,EAAE;IACA,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;YACzB,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAa,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,UAAU,MAAM,CAClB,YAAkC,EAAE,EACpC,SAA4B,EAAE;IAE9B,MAAM,QAAQ,GACV,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;IAE7E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;IAC7C,MAAM,eAAe,GACjB,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAiC,EAAE,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -378,9 +378,28 @@ async function layout_requires_server(route, loader) {
378
378
  if (!layout) {
379
379
  return false;
380
380
  }
381
- const load_required = await Promise.all(layout.map(async (layout2) => {
382
- const component = await loader.load(layout2);
383
- return !!component.load;
381
+ const load_required = await Promise.all(layout.map(async (layoutPath) => {
382
+ const fullPath = loader.getComponentFullPath(layoutPath);
383
+ const { dir, name } = path.parse(fullPath);
384
+ const extensions = [".js", ".ts"];
385
+ for (const ext of extensions) {
386
+ const loaderFilePath = path.join(dir, `${name}.load${ext}`);
387
+ try {
388
+ if (fs.existsSync(loaderFilePath)) {
389
+ const module2 = await import(url.pathToFileURL(loaderFilePath).href);
390
+ if (typeof (module2 == null ? void 0 : module2.default) === "function") {
391
+ return true;
392
+ }
393
+ }
394
+ } catch (error) {
395
+ }
396
+ }
397
+ try {
398
+ const component = await loader.load(layoutPath);
399
+ return !!component.load;
400
+ } catch {
401
+ return false;
402
+ }
384
403
  }));
385
404
  return load_required.some((required) => required);
386
405
  }
@@ -389,8 +408,27 @@ async function view_requires_server(route, loader) {
389
408
  if (!view) {
390
409
  return false;
391
410
  }
392
- const component = await loader.load(view);
393
- return !!component.load;
411
+ const fullPath = loader.getComponentFullPath(view);
412
+ const { dir, name } = path.parse(fullPath);
413
+ const extensions = [".js", ".ts"];
414
+ for (const ext of extensions) {
415
+ const loaderFilePath = path.join(dir, `${name}.load${ext}`);
416
+ try {
417
+ if (fs.existsSync(loaderFilePath)) {
418
+ const module2 = await import(url.pathToFileURL(loaderFilePath).href);
419
+ if (typeof (module2 == null ? void 0 : module2.default) === "function") {
420
+ return true;
421
+ }
422
+ }
423
+ } catch (error) {
424
+ }
425
+ }
426
+ try {
427
+ const component = await loader.load(view);
428
+ return !!component.load;
429
+ } catch {
430
+ return false;
431
+ }
394
432
  }
395
433
  class ApiAdapter {
396
434
  constructor(manager) {
@@ -509,11 +547,19 @@ class ComponentManager {
509
547
  return layouts_components;
510
548
  }
511
549
  async getLayoutLoaders(route) {
512
- const layout_components = await this.getLayoutComponents(route);
513
- const layout_loaders = await Promise.all(layout_components.map(async (layout) => {
514
- return layout.load;
515
- }));
516
- return layout_loaders;
550
+ const layout_paths = route.layout || [];
551
+ const loaders_from_files = await Promise.all(
552
+ layout_paths.map((layoutPath) => this.resolveLoader(layoutPath))
553
+ );
554
+ const needs_fallback = loaders_from_files.some((loader) => !loader);
555
+ if (needs_fallback) {
556
+ const layout_components = await this.getLayoutComponents(route);
557
+ const old_style_loaders = layout_components.map((layout) => layout.load);
558
+ return loaders_from_files.map(
559
+ (loader, index) => loader || old_style_loaders[index] || null
560
+ );
561
+ }
562
+ return loaders_from_files;
517
563
  }
518
564
  async getViewComponent(route) {
519
565
  return await this.componentLoader.load(route.view);
@@ -537,30 +583,38 @@ class ComponentManager {
537
583
  view
538
584
  };
539
585
  }
540
- getLoaderFilePath(componentPath) {
586
+ getLoaderFilePath(componentPath, extension = ".js") {
541
587
  if (!componentPath) {
542
588
  return null;
543
589
  }
544
590
  const fullPath = this.componentLoader.getComponentFullPath(componentPath);
545
591
  const { dir, name } = path.parse(fullPath);
546
- return path.join(dir, `${name}.load.ts`);
592
+ return path.join(dir, `${name}.load${extension}`);
547
593
  }
548
594
  async resolveLoader(componentPath) {
549
- const loaderFilePath = this.getLoaderFilePath(componentPath);
550
- if (!loaderFilePath) {
595
+ if (!componentPath) {
551
596
  return null;
552
597
  }
553
- try {
554
- const module2 = await import(url.pathToFileURL(loaderFilePath).href);
555
- const loader = module2 == null ? void 0 : module2.default;
556
- return typeof loader === "function" ? loader : null;
557
- } catch (error) {
558
- if ((error == null ? void 0 : error.code) === "MODULE_NOT_FOUND" || (error == null ? void 0 : error.code) === "ERR_MODULE_NOT_FOUND") {
559
- return null;
598
+ const extensions = [".js", ".ts"];
599
+ for (const ext of extensions) {
600
+ const loaderFilePath = this.getLoaderFilePath(componentPath, ext);
601
+ if (!loaderFilePath) {
602
+ continue;
603
+ }
604
+ try {
605
+ const module2 = await import(url.pathToFileURL(loaderFilePath).href);
606
+ const loader = module2 == null ? void 0 : module2.default;
607
+ if (typeof loader === "function") {
608
+ return loader;
609
+ }
610
+ } catch (error) {
611
+ if ((error == null ? void 0 : error.code) === "MODULE_NOT_FOUND" || (error == null ? void 0 : error.code) === "ERR_MODULE_NOT_FOUND") {
612
+ continue;
613
+ }
614
+ console.error(`[ComponentManager] Failed to load loader for ${componentPath} (${ext}):`, error);
560
615
  }
561
- console.error(`[ComponentManager] Failed to load loader for ${componentPath}:`, error);
562
- return null;
563
616
  }
617
+ return null;
564
618
  }
565
619
  async getView(route) {
566
620
  const view = await this.componentLoader.load(route.view);