@stackbit/sdk 0.2.39-alpha.2 → 0.3.0

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 (65) hide show
  1. package/dist/analyzer/site-analyzer.d.ts.map +1 -1
  2. package/dist/analyzer/site-analyzer.js +3 -1
  3. package/dist/analyzer/site-analyzer.js.map +1 -1
  4. package/dist/config/config-errors.d.ts +3 -0
  5. package/dist/config/config-errors.d.ts.map +1 -1
  6. package/dist/config/config-errors.js +7 -2
  7. package/dist/config/config-errors.js.map +1 -1
  8. package/dist/config/config-loader-esbuild.d.ts +3 -14
  9. package/dist/config/config-loader-esbuild.d.ts.map +1 -1
  10. package/dist/config/config-loader-esbuild.js +19 -2
  11. package/dist/config/config-loader-esbuild.js.map +1 -1
  12. package/dist/config/config-loader-static.d.ts +14 -0
  13. package/dist/config/config-loader-static.d.ts.map +1 -0
  14. package/dist/config/config-loader-static.js +170 -0
  15. package/dist/config/config-loader-static.js.map +1 -0
  16. package/dist/config/config-loader-utils.d.ts +34 -0
  17. package/dist/config/config-loader-utils.d.ts.map +1 -0
  18. package/dist/config/config-loader-utils.js +211 -0
  19. package/dist/config/config-loader-utils.js.map +1 -0
  20. package/dist/config/config-loader.d.ts +13 -9
  21. package/dist/config/config-loader.d.ts.map +1 -1
  22. package/dist/config/config-loader.js +174 -198
  23. package/dist/config/config-loader.js.map +1 -1
  24. package/dist/config/config-schema/style-field-schema.d.ts.map +1 -1
  25. package/dist/config/config-schema/style-field-schema.js.map +1 -1
  26. package/dist/config/config-schema.d.ts +2 -2
  27. package/dist/config/config-schema.d.ts.map +1 -1
  28. package/dist/config/config-schema.js +5 -6
  29. package/dist/config/config-schema.js.map +1 -1
  30. package/dist/config/config-types.d.ts +32 -2
  31. package/dist/config/config-types.d.ts.map +1 -1
  32. package/dist/config/config-validator.d.ts +5 -3
  33. package/dist/config/config-validator.d.ts.map +1 -1
  34. package/dist/config/config-validator.js.map +1 -1
  35. package/dist/config/config-writer.d.ts +1 -4
  36. package/dist/config/config-writer.d.ts.map +1 -1
  37. package/dist/config/config-writer.js +3 -27
  38. package/dist/config/config-writer.js.map +1 -1
  39. package/dist/content/content-schema.js +5 -6
  40. package/dist/content/content-schema.js.map +1 -1
  41. package/dist/index.d.ts +4 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +6 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/utils/index.d.ts +1 -1
  46. package/dist/utils/index.d.ts.map +1 -1
  47. package/dist/utils/model-extender.d.ts +1 -1
  48. package/dist/utils/model-extender.d.ts.map +1 -1
  49. package/dist/utils/model-extender.js.map +1 -1
  50. package/package.json +4 -3
  51. package/src/analyzer/site-analyzer.ts +3 -1
  52. package/src/config/config-errors.ts +7 -1
  53. package/src/config/config-loader-esbuild.ts +24 -19
  54. package/src/config/config-loader-static.ts +210 -0
  55. package/src/config/config-loader-utils.ts +253 -0
  56. package/src/config/config-loader.ts +209 -236
  57. package/src/config/config-schema/style-field-schema.ts +1 -4
  58. package/src/config/config-schema.ts +17 -18
  59. package/src/config/config-types.ts +31 -2
  60. package/src/config/config-validator.ts +5 -3
  61. package/src/config/config-writer.ts +2 -30
  62. package/src/content/content-schema.ts +17 -18
  63. package/src/index.ts +4 -2
  64. package/src/utils/index.ts +1 -1
  65. package/src/utils/model-extender.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"site-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/site-analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAY,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAY,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAU,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAExD,oBAAY,mBAAmB,GAAG,qBAAqB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkC3F"}
1
+ {"version":3,"file":"site-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/site-analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAY,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,cAAc,EAAY,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAU,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAExD,oBAAY,mBAAmB,GAAG,qBAAqB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAC/B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoC3F"}
@@ -29,7 +29,9 @@ async function analyzeSite(options) {
29
29
  dataDir: dataDir,
30
30
  pagesDir: pagesDir,
31
31
  assets: assets,
32
- models: (schemaGeneratorResult === null || schemaGeneratorResult === void 0 ? void 0 : schemaGeneratorResult.models) || []
32
+ models: (schemaGeneratorResult === null || schemaGeneratorResult === void 0 ? void 0 : schemaGeneratorResult.models) || [],
33
+ dirPath: '/temp',
34
+ filePath: '/temp/stackbit.yaml'
33
35
  };
34
36
  config = lodash_1.default.omitBy(config, lodash_1.default.isUndefined);
35
37
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"site-analyzer.js","sourceRoot":"","sources":["../../src/analyzer/site-analyzer.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,iDAAkF;AAClF,+CAAyD;AACzD,+CAAyD;AACzD,yDAA2E;AAWpE,KAAK,UAAU,WAAW,CAAC,OAA4B;IAC1D,MAAM,WAAW,GAAG,wCAAyB,CAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,MAAM,sBAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,sBAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,IAAI,qBAAqB,GAAiC,IAAI,CAAC;IAC/D,IAAI,CAAC,cAAc,EAAE;QACjB,qBAAqB,GAAG,MAAM,iCAAc,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;KACjF;IAED,MAAM,OAAO,GAAG,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,MAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAAC;IAChH,MAAM,QAAQ,GAAG,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,MAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,CAAC;IAEpH,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE9C,IAAI,MAAM,GAAW;QACjB,eAAe,EAAE,QAAQ;QACzB,OAAO,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO;QAChC,OAAO,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO;QAChC,WAAW,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW;QACxC,UAAU,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,UAAU;QACtC,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,MAAM,KAAI,EAAE;KAC9C,CAAC;IAEF,MAAM,GAAG,gBAAC,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAC,CAAC,WAAW,CAAW,CAAC;IAEnD,OAAO;QACH,cAAc;QACd,cAAc;QACd,MAAM;KACT,CAAC;AACN,CAAC;AAlCD,kCAkCC;AAED,SAAS,cAAc,CAAC,cAAqC;IACzD,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,mBAAmB,MAAK,QAAQ,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAA,EAAE;QAC/E,OAAO;YACH,aAAa,EAAE,QAAQ;YACvB,SAAS,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS;YACpC,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,GAAG;SAClB,CAAC;KACL;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"site-analyzer.js","sourceRoot":"","sources":["../../src/analyzer/site-analyzer.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAEvB,iDAAkF;AAClF,+CAAyD;AACzD,+CAAyD;AACzD,yDAA2E;AAWpE,KAAK,UAAU,WAAW,CAAC,OAA4B;IAC1D,MAAM,WAAW,GAAG,wCAAyB,CAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,cAAc,GAAG,MAAM,sBAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,sBAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,IAAI,qBAAqB,GAAiC,IAAI,CAAC;IAC/D,IAAI,CAAC,cAAc,EAAE;QACjB,qBAAqB,GAAG,MAAM,iCAAc,CAAC,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;KACjF;IAED,MAAM,OAAO,GAAG,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,MAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO,CAAC;IAChH,MAAM,QAAQ,GAAG,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,QAAQ,MAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,QAAQ,CAAC;IAEpH,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE9C,IAAI,MAAM,GAAW;QACjB,eAAe,EAAE,QAAQ;QACzB,OAAO,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO;QAChC,OAAO,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO;QAChC,WAAW,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,WAAW;QACxC,UAAU,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,UAAU;QACtC,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,MAAM,KAAI,EAAE;QAC3C,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,qBAAqB;KAClC,CAAC;IAEF,MAAM,GAAG,gBAAC,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAC,CAAC,WAAW,CAAW,CAAC;IAEnD,OAAO;QACH,cAAc;QACd,cAAc;QACd,MAAM;KACT,CAAC;AACN,CAAC;AApCD,kCAoCC;AAED,SAAS,cAAc,CAAC,cAAqC;IACzD,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,mBAAmB,MAAK,QAAQ,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS,CAAA,EAAE;QAC/E,OAAO;YACH,aAAa,EAAE,QAAQ;YACvB,SAAS,EAAE,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,SAAS;YACpC,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,GAAG;SAClB,CAAC;KACL;IACD,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -1,3 +1,6 @@
1
+ export declare const REFER_TO_STACKBIT_REFERENCE_DOCS = "please refer to Stackbit documentation: https://docs.stackbit.com/reference/";
2
+ export declare const REFER_TO_STACKBIT_CONFIG_DOCS: string;
3
+ export declare const STACKBIT_CONFIG_NOT_FOUND: string;
1
4
  export declare class ConfigLoadError extends Error {
2
5
  name: 'ConfigLoadError';
3
6
  originalError?: Error;
@@ -1 +1 @@
1
- {"version":3,"file":"config-errors.d.ts","sourceRoot":"","sources":["../../src/config/config-errors.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,GAAE;QAAE,aAAa,CAAC,EAAE,KAAK,CAAA;KAAO;CAQjF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC5C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,aAAa,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,GAAG,CAAC;gBACA,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,aAAa,EACb,KAAK,EACR,EAAE;QACC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,EAAE,GAAG,CAAC;KACf;CAUJ;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,IAAI,EAAE,oBAAoB,CAAC;gBACf,OAAO,EAAE,MAAM;CAI9B;AAED,oBAAY,WAAW,GAAG,eAAe,GAAG,qBAAqB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"config-errors.d.ts","sourceRoot":"","sources":["../../src/config/config-errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gCAAgC,iFAAiF,CAAC;AAC/H,eAAO,MAAM,6BAA6B,QAAsD,CAAC;AACjG,eAAO,MAAM,yBAAyB,QAAwF,CAAC;AAE/H,qBAAa,eAAgB,SAAQ,KAAK;IACtC,IAAI,EAAE,iBAAiB,CAAC;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,GAAE;QAAE,aAAa,CAAC,EAAE,KAAK,CAAA;KAAO;CAUjF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC5C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC/B,aAAa,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,GAAG,CAAC;gBACA,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,aAAa,EACb,KAAK,EACR,EAAE;QACC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,EAAE,GAAG,CAAC;KACf;CAUJ;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,IAAI,EAAE,oBAAoB,CAAC;gBACf,OAAO,EAAE,MAAM;CAI9B;AAED,oBAAY,WAAW,GAAG,eAAe,GAAG,qBAAqB,GAAG,kBAAkB,CAAC"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConfigPresetsError = exports.ConfigValidationError = exports.ConfigLoadError = void 0;
3
+ exports.ConfigPresetsError = exports.ConfigValidationError = exports.ConfigLoadError = exports.STACKBIT_CONFIG_NOT_FOUND = exports.REFER_TO_STACKBIT_CONFIG_DOCS = exports.REFER_TO_STACKBIT_REFERENCE_DOCS = void 0;
4
+ exports.REFER_TO_STACKBIT_REFERENCE_DOCS = 'please refer to Stackbit documentation: https://docs.stackbit.com/reference/';
5
+ exports.REFER_TO_STACKBIT_CONFIG_DOCS = exports.REFER_TO_STACKBIT_REFERENCE_DOCS + 'stackbit-yaml/';
6
+ exports.STACKBIT_CONFIG_NOT_FOUND = `stackbit.yaml or stackbit.config.js was not found, ${exports.REFER_TO_STACKBIT_CONFIG_DOCS}`;
4
7
  class ConfigLoadError extends Error {
5
8
  constructor(message, { originalError } = {}) {
6
9
  super(message);
@@ -9,6 +12,8 @@ class ConfigLoadError extends Error {
9
12
  this.originalError = originalError;
10
13
  this.stack = originalError.stack;
11
14
  }
15
+ // redefine "message" as enumerable, this helps comparing the received and the expected error.message in Jest's toMatchObject() tests
16
+ Object.defineProperty(this, 'message', { value: message, writable: true, enumerable: true, configurable: true });
12
17
  }
13
18
  }
14
19
  exports.ConfigLoadError = ConfigLoadError;
@@ -20,7 +25,7 @@ class ConfigValidationError extends Error {
20
25
  this.fieldPath = fieldPath;
21
26
  this.normFieldPath = normFieldPath || fieldPath;
22
27
  this.value = value;
23
- // redefine "message" as enumerable, this helps seeing the provided and the expected message in failed Jest's toMatchObject calls
28
+ // redefine "message" as enumerable, this helps comparing the received and the expected error.message in Jest's toMatchObject() tests
24
29
  Object.defineProperty(this, 'message', { value: message, writable: true, enumerable: true, configurable: true });
25
30
  }
26
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-errors.js","sourceRoot":"","sources":["../../src/config/config-errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAgB,SAAQ,KAAK;IAGtC,YAAY,OAAe,EAAE,EAAE,aAAa,KAAgC,EAAE;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;SACpC;IACL,CAAC;CACJ;AAXD,0CAWC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAM5C,YAAY,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,aAAa,EACb,KAAK,EAOR;QACG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,iIAAiI;QACjI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACrH,CAAC;CACJ;AA5BD,sDA4BC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAEzC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACrC,CAAC;CACJ;AAND,gDAMC"}
1
+ {"version":3,"file":"config-errors.js","sourceRoot":"","sources":["../../src/config/config-errors.ts"],"names":[],"mappings":";;;AAAa,QAAA,gCAAgC,GAAG,8EAA8E,CAAC;AAClH,QAAA,6BAA6B,GAAG,wCAAgC,GAAG,gBAAgB,CAAC;AACpF,QAAA,yBAAyB,GAAG,sDAAsD,qCAA6B,EAAE,CAAC;AAE/H,MAAa,eAAgB,SAAQ,KAAK;IAGtC,YAAY,OAAe,EAAE,EAAE,aAAa,KAAgC,EAAE;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;SACpC;QACD,qIAAqI;QACrI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACrH,CAAC;CACJ;AAbD,0CAaC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAM5C,YAAY,EACR,OAAO,EACP,IAAI,EACJ,SAAS,EACT,aAAa,EACb,KAAK,EAOR;QACG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,qIAAqI;QACrI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACrH,CAAC;CACJ;AA5BD,sDA4BC;AAED,MAAa,kBAAmB,SAAQ,KAAK;IAEzC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACrC,CAAC;CACJ;AAND,gDAMC"}
@@ -1,20 +1,9 @@
1
- import { YamlConfig } from './config-types';
2
- import { ConfigLoadError } from './config-errors';
3
- export declare type LoadStackbitConfigResult = {
4
- config: YamlConfig;
5
- error: null;
6
- } | {
7
- config: null;
8
- error: ConfigLoadError;
9
- };
10
- export declare type StopConfigWatch = {
11
- stop?: () => void;
12
- };
1
+ import { LoadRawConfigResult, LoadRawConfigResultWithStop } from './config-loader-utils';
13
2
  export declare function loadStackbitConfigFromJs({ configPath, watch, callback, logger, outDir }: {
14
3
  configPath: string;
15
4
  watch?: boolean;
16
- callback?: (result: LoadStackbitConfigResult) => void;
5
+ callback?: (result: LoadRawConfigResult) => void;
17
6
  logger?: any;
18
7
  outDir?: string;
19
- }): Promise<LoadStackbitConfigResult & StopConfigWatch>;
8
+ }): Promise<LoadRawConfigResultWithStop>;
20
9
  //# sourceMappingURL=config-loader-esbuild.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader-esbuild.d.ts","sourceRoot":"","sources":["../../src/config/config-loader-esbuild.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,oBAAY,wBAAwB,GAC9B;IACI,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,IAAI,CAAC;CACf,GACD;IACI,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;CAC1B,CAAC;AAER,oBAAY,eAAe,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAEpD,wBAAsB,wBAAwB,CAAC,EAC3C,UAAU,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACT,EAAE;IACC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACtD,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,wBAAwB,GAAG,eAAe,CAAC,CAoCtD"}
1
+ {"version":3,"file":"config-loader-esbuild.d.ts","sourceRoot":"","sources":["../../src/config/config-loader-esbuild.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAEzF,wBAAsB,wBAAwB,CAAC,EAC3C,UAAU,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACT,EAAE;IACC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAoDvC"}
@@ -38,6 +38,7 @@ async function loadStackbitConfigFromJs({ configPath, watch, callback, logger, o
38
38
  const fileName = path.basename(configPath);
39
39
  const tempDir = outDir ? path.resolve(projectDir, outDir) : await fs.mkdtemp(path.join(os.tmpdir(), 'stackbit-config-'));
40
40
  const outfilePath = path.join(tempDir, 'stackbit.config.cjs');
41
+ let stopped = false;
41
42
  const result = await esbuild.build({
42
43
  entryPoints: [configPath],
43
44
  entryNames: '[name].[hash]',
@@ -51,12 +52,28 @@ async function loadStackbitConfigFromJs({ configPath, watch, callback, logger, o
51
52
  logLevel: 'silent',
52
53
  metafile: true,
53
54
  absWorkingDir: projectDir,
55
+ external: ['./node_modules/*'],
54
56
  watch: watch ? { onRebuild: onRebuildHandler(fileName, projectDir, callback, logger) } : false
55
57
  });
56
58
  const configResult = await getConfigFromResult(result, fileName, projectDir);
57
59
  return {
58
60
  ...configResult,
59
- stop: result.stop
61
+ stop: () => {
62
+ var _a;
63
+ if (stopped) {
64
+ return;
65
+ }
66
+ stopped = true;
67
+ (_a = result.stop) === null || _a === void 0 ? void 0 : _a.call(result);
68
+ },
69
+ reload: async () => {
70
+ const res = await loadStackbitConfigFromJs({
71
+ configPath,
72
+ logger,
73
+ outDir
74
+ });
75
+ callback === null || callback === void 0 ? void 0 : callback(res);
76
+ }
60
77
  };
61
78
  }
62
79
  catch (error) {
@@ -85,7 +102,7 @@ function onRebuildHandler(fileName, projectDir, callback, logger) {
85
102
  callback === null || callback === void 0 ? void 0 : callback(configResult);
86
103
  }
87
104
  catch (error) {
88
- logger === null || logger === void 0 ? void 0 : logger.debug('error in load stackbit config callback');
105
+ logger === null || logger === void 0 ? void 0 : logger.debug(`error loading stackbit config callback, error: ${error.message}`);
89
106
  }
90
107
  }
91
108
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader-esbuild.js","sourceRoot":"","sources":["../../src/config/config-loader-esbuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-loader-esbuild.js","sourceRoot":"","sources":["../../src/config/config-loader-esbuild.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ConfigLoadError } from './config-errors';
2
+ import { Config } from './config-types';
3
+ export declare type LoadStaticStackbitConfigOptions = {
4
+ dirPath: string;
5
+ secondaryDirPath?: string;
6
+ logger?: any;
7
+ };
8
+ export declare type StaticConfig = Pick<Config, 'stackbitVersion' | 'nodeVersion' | 'ssgName' | 'ssgVersion' | 'cmsName' | 'postGitCloneCommand' | 'preInstallCommand' | 'postInstallCommand' | 'import' | 'buildCommand' | 'publishDir' | 'dirPath' | 'filePath'>;
9
+ export declare type LoadStaticConfigResult = {
10
+ config: StaticConfig | null;
11
+ errors: ConfigLoadError[];
12
+ };
13
+ export declare function loadStaticConfig({ dirPath, secondaryDirPath, logger }: LoadStaticStackbitConfigOptions): Promise<LoadStaticConfigResult>;
14
+ //# sourceMappingURL=config-loader-static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-static.d.ts","sourceRoot":"","sources":["../../src/config/config-loader-static.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAA4D,MAAM,iBAAiB,CAAC;AAE5G,OAAO,EAAE,MAAM,EAAU,MAAM,gBAAgB,CAAC;AA+BhD,oBAAY,+BAA+B,GAAG;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,GAAG,CAAC;CAChB,CAAC;AAEF,oBAAY,YAAY,GAAG,IAAI,CAC3B,MAAM,EACJ,iBAAiB,GACjB,aAAa,GACb,SAAS,GACT,YAAY,GACZ,SAAS,GACT,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,SAAS,GACT,UAAU,CACX,CAAC;AAEN,oBAAY,sBAAsB,GAAG;IACjC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,+BAA+B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAsB9I"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.loadStaticConfig = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const utils_1 = require("@stackbit/utils");
11
+ const config_errors_1 = require("./config-errors");
12
+ const config_loader_utils_1 = require("./config-loader-utils");
13
+ const ROOT_PROPERTIES = [
14
+ 'nodeVersion',
15
+ 'ssgName',
16
+ 'ssgVersion',
17
+ 'cmsName',
18
+ 'postGitCloneCommand',
19
+ 'preInstallCommand',
20
+ 'postInstallCommand',
21
+ 'buildCommand',
22
+ 'publishDir'
23
+ ];
24
+ const IMPORT_PROPERTIES = [
25
+ 'uploadAssets',
26
+ 'assetsDirectory',
27
+ 'spaceIdEnvVar',
28
+ 'accessTokenEnvVar',
29
+ 'deliveryTokenEnvVar',
30
+ 'previewTokenEnvVar',
31
+ 'sanityStudioPath',
32
+ 'deployStudio',
33
+ 'deployGraphql',
34
+ 'projectIdEnvVar',
35
+ 'datasetEnvVar',
36
+ 'tokenEnvVar'
37
+ ];
38
+ const BOOLEAN_PROPERTIES = ['uploadAssets', 'deployStudio', 'deployGraphql'];
39
+ async function loadStaticConfig({ dirPath, secondaryDirPath, logger }) {
40
+ try {
41
+ const lookupDirs = [dirPath, secondaryDirPath].filter((dir) => typeof dir === 'string');
42
+ const configFilePath = await config_loader_utils_1.findStackbitConfigFile(lookupDirs);
43
+ if (!configFilePath) {
44
+ return {
45
+ config: null,
46
+ errors: [new config_errors_1.ConfigLoadError(config_errors_1.STACKBIT_CONFIG_NOT_FOUND)]
47
+ };
48
+ }
49
+ logger === null || logger === void 0 ? void 0 : logger.debug(`[config-loader-static] found stackbit config at ${configFilePath}`);
50
+ const configExtension = path_1.default.extname(configFilePath).substring(1);
51
+ if (['yaml', 'yml'].includes(configExtension)) {
52
+ return loadStaticConfigFromStackbitYaml(configFilePath);
53
+ }
54
+ return loadStaticConfigFromStackbitJs(configFilePath);
55
+ }
56
+ catch (error) {
57
+ return {
58
+ config: null,
59
+ errors: [new config_errors_1.ConfigLoadError(`Error loading Stackbit configuration: ${error.message}`, { originalError: error })]
60
+ };
61
+ }
62
+ }
63
+ exports.loadStaticConfig = loadStaticConfig;
64
+ async function loadStaticConfigFromStackbitYaml(configFilePath) {
65
+ const result = await config_loader_utils_1.loadConfigFromStackbitYaml(configFilePath);
66
+ if (result.error) {
67
+ return {
68
+ config: null,
69
+ errors: [result.error]
70
+ };
71
+ }
72
+ const stackbitVersion = result.config.stackbitVersion;
73
+ if (!stackbitVersion) {
74
+ const fileName = path_1.default.basename(configFilePath);
75
+ return {
76
+ config: null,
77
+ errors: [new config_errors_1.ConfigLoadError(`stackbitVersion not found in ${fileName}, ${config_errors_1.REFER_TO_STACKBIT_CONFIG_DOCS}`)]
78
+ };
79
+ }
80
+ const config = {
81
+ stackbitVersion: stackbitVersion,
82
+ ...utils_1.omitByNil(ROOT_PROPERTIES.reduce((accum, propertyName) => {
83
+ accum[propertyName] = toStringOrNull(result.config[propertyName]);
84
+ return accum;
85
+ }, {
86
+ import: result.config.import
87
+ })),
88
+ dirPath: path_1.default.dirname(configFilePath),
89
+ filePath: configFilePath
90
+ };
91
+ return {
92
+ config: config,
93
+ errors: []
94
+ };
95
+ }
96
+ function toStringOrNull(value) {
97
+ if (value) {
98
+ return lodash_1.default.toString(value);
99
+ }
100
+ return null;
101
+ }
102
+ async function loadStaticConfigFromStackbitJs(configFilePath) {
103
+ const jsConfigString = await fs_extra_1.default.readFile(configFilePath, 'utf8');
104
+ const stackbitVersion = parseInlineProperty(jsConfigString, 'stackbitVersion');
105
+ if (!stackbitVersion) {
106
+ const fileName = path_1.default.basename(configFilePath);
107
+ return {
108
+ config: null,
109
+ errors: [new config_errors_1.ConfigLoadError(`stackbitVersion not found in ${fileName}, ${config_errors_1.REFER_TO_STACKBIT_CONFIG_DOCS}`)]
110
+ };
111
+ }
112
+ const config = {
113
+ stackbitVersion: stackbitVersion,
114
+ ...utils_1.omitByNil(ROOT_PROPERTIES.reduce((accum, propertyName) => {
115
+ accum[propertyName] = parseInlineProperty(jsConfigString, propertyName);
116
+ return accum;
117
+ }, {
118
+ import: parseImport(jsConfigString)
119
+ })),
120
+ dirPath: path_1.default.dirname(configFilePath),
121
+ filePath: configFilePath
122
+ };
123
+ return {
124
+ config: config,
125
+ errors: []
126
+ };
127
+ }
128
+ function parseImport(jsConfigString) {
129
+ const importObjectRegExp = /(["']?)import\1\s*:\s*{([^}]+)}/;
130
+ const match = jsConfigString.match(importObjectRegExp);
131
+ if (match) {
132
+ const importObjectStr = match[2];
133
+ const type = parseInlineProperty(importObjectStr, 'type');
134
+ const contentFile = parseInlineProperty(importObjectStr, 'contentFile');
135
+ if (!type || !contentFile) {
136
+ return null;
137
+ }
138
+ return {
139
+ type,
140
+ contentFile,
141
+ ...utils_1.omitByNil(IMPORT_PROPERTIES.reduce((result, propertyName) => {
142
+ result[propertyName] = parseInlineProperty(jsConfigString, propertyName);
143
+ return result;
144
+ }, {}))
145
+ };
146
+ }
147
+ return null;
148
+ }
149
+ function parseInlineProperty(jsConfigString, propertyName) {
150
+ const propRegExp = `(["']?)${propertyName}\\1`;
151
+ const valueRegExp = '(?:\'(.+?)(?<!\\\\)\'|"(.+?)(?<!\\\\)"|([^\\s\'",}]+))';
152
+ const fullRegExp = new RegExp(`${propRegExp}\\s*:\\s*${valueRegExp}`);
153
+ const match = jsConfigString.match(fullRegExp);
154
+ if (match) {
155
+ if (match[2]) {
156
+ return match[2].replace(/\\'/g, "'");
157
+ }
158
+ else if (match[3]) {
159
+ return match[3].replace(/\\"/g, '"');
160
+ }
161
+ else if (BOOLEAN_PROPERTIES.includes(propertyName)) {
162
+ return match[4] === 'true';
163
+ }
164
+ else {
165
+ return lodash_1.default.toString(match[4]);
166
+ }
167
+ }
168
+ return null;
169
+ }
170
+ //# sourceMappingURL=config-loader-static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-static.js","sourceRoot":"","sources":["../../src/config/config-loader-static.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAA2B;AAC3B,oDAAuB;AAEvB,2CAA4C;AAE5C,mDAA4G;AAC5G,+DAA2F;AAG3F,MAAM,eAAe,GAAG;IACpB,aAAa;IACb,SAAS;IACT,YAAY;IACZ,SAAS;IACT,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,cAAc;IACd,YAAY;CACN,CAAC;AAEX,MAAM,iBAAiB,GAAG;IACtB,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,aAAa;CACP,CAAC;AAEX,MAAM,kBAAkB,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;AA8BtE,KAAK,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAmC;IACzG,IAAI;QACA,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QACvG,MAAM,cAAc,GAAG,MAAM,4CAAsB,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,EAAE;YACjB,OAAO;gBACH,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,CAAC,IAAI,+BAAe,CAAC,yCAAyB,CAAC,CAAC;aAC3D,CAAC;SACL;QACD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,mDAAmD,cAAc,EAAE,CAAC,CAAC;QACnF,MAAM,eAAe,GAAG,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;YAC3C,OAAO,gCAAgC,CAAC,cAAc,CAAC,CAAC;SAC3D;QACD,OAAO,8BAA8B,CAAC,cAAc,CAAC,CAAC;KACzD;IAAC,OAAO,KAAU,EAAE;QACjB,OAAO;YACH,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,CAAC,IAAI,+BAAe,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;SACpH,CAAC;KACL;AACL,CAAC;AAtBD,4CAsBC;AAED,KAAK,UAAU,gCAAgC,CAAC,cAAsB;IAClE,MAAM,MAAM,GAAG,MAAM,gDAA0B,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,KAAK,EAAE;QACd,OAAO;YACH,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;SACzB,CAAC;KACL;IACD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO;YACH,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,CAAC,IAAI,+BAAe,CAAC,gCAAgC,QAAQ,KAAK,6CAA6B,EAAE,CAAC,CAAC;SAC9G,CAAC;KACL;IACD,MAAM,MAAM,GAAG;QACX,eAAe,EAAE,eAAe;QAChC,GAAG,iBAAS,CACR,eAAe,CAAC,MAAM,CAClB,CAAC,KAA0B,EAAE,YAAY,EAAE,EAAE;YACzC,KAAK,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACjB,CAAC,EACD;YACI,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;SAC/B,CACJ,CACJ;QACD,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QACrC,QAAQ,EAAE,cAAc;KAC3B,CAAC;IACF,OAAO;QACH,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,EAAE;KACb,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IAClC,IAAI,KAAK,EAAE;QACP,OAAO,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,cAAsB;IAChE,MAAM,cAAc,GAAG,MAAM,kBAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC/E,IAAI,CAAC,eAAe,EAAE;QAClB,MAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO;YACH,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,CAAC,IAAI,+BAAe,CAAC,gCAAgC,QAAQ,KAAK,6CAA6B,EAAE,CAAC,CAAC;SAC9G,CAAC;KACL;IACD,MAAM,MAAM,GAAG;QACX,eAAe,EAAE,eAAe;QAChC,GAAG,iBAAS,CACR,eAAe,CAAC,MAAM,CAClB,CAAC,KAA0B,EAAE,YAAY,EAAE,EAAE;YACzC,KAAK,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACxE,OAAO,KAAK,CAAC;QACjB,CAAC,EACD;YACI,MAAM,EAAE,WAAW,CAAC,cAAc,CAAC;SACtC,CACJ,CACJ;QACD,OAAO,EAAE,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QACrC,QAAQ,EAAE,cAAc;KAC3B,CAAC;IACF,OAAO;QACH,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,EAAE;KACb,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAAC,cAAsB;IACvC,MAAM,kBAAkB,GAAG,iCAAiC,CAAC;IAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACvD,IAAI,KAAK,EAAE;QACP,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAClC,MAAM,IAAI,GAAG,mBAAmB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YACvB,OAAO,IAAI,CAAC;SACf;QACD,OAAO;YACH,IAAI;YACJ,WAAW;YACX,GAAG,iBAAS,CACR,iBAAiB,CAAC,MAAM,CAAC,CAAC,MAA2B,EAAE,YAAY,EAAE,EAAE;gBACnE,MAAM,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;gBACzE,OAAO,MAAM,CAAC;YAClB,CAAC,EAAE,EAAE,CAAC,CACT;SACM,CAAC;KACf;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,cAAsB,EAAE,YAAoB;IACrE,MAAM,UAAU,GAAG,UAAU,YAAY,KAAK,CAAC;IAC/C,MAAM,WAAW,GAAG,wDAAwD,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,UAAU,YAAY,WAAW,EAAE,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE;QACP,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SACxC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;YACjB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SACxC;aAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAClD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B;aAAM;YACH,OAAO,gBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;KACJ;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ConfigLoadError } from './config-errors';
2
+ import { Config, RawConfig } from './config-types';
3
+ export declare const STACKBIT_CONFIG_YAML_FILES: string[];
4
+ export declare const STACKBIT_CONFIG_JS_FILES: string[];
5
+ export declare const STACKBIT_CONFIG_FILES: string[];
6
+ export declare const LATEST_STACKBIT_VERSION = "0.5.0";
7
+ export declare type RawConfigWithPaths = RawConfig & {
8
+ dirPath: string;
9
+ filePath: string;
10
+ };
11
+ export declare type LoadRawConfigResult = {
12
+ config: RawConfig;
13
+ error: null;
14
+ } | {
15
+ config: null;
16
+ error: ConfigLoadError;
17
+ };
18
+ export declare type StopConfigWatch = {
19
+ stop?: () => void;
20
+ reload?: () => void;
21
+ };
22
+ export declare type LoadRawConfigResultWithStop = LoadRawConfigResult & StopConfigWatch;
23
+ export declare type LoadRawConfigWithModelsResult = {
24
+ config?: RawConfig;
25
+ errors: ConfigLoadError[];
26
+ };
27
+ export declare function loadConfigWithModelsFromDir(dirPath: string): Promise<LoadRawConfigWithModelsResult>;
28
+ export declare function loadConfigFromStackbitYaml(stackbitYamlPath: string): Promise<LoadRawConfigResult>;
29
+ export declare function findStackbitConfigFile(dirs: string[]): Promise<string | null>;
30
+ export declare function isStackbitYamlFile(filePath: string): boolean;
31
+ export declare function convertToYamlConfig({ config }: {
32
+ config: Config;
33
+ }): RawConfig;
34
+ //# sourceMappingURL=config-loader-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader-utils.d.ts","sourceRoot":"","sources":["../../src/config/config-loader-utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAA4D,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,MAAM,EAAgD,SAAS,EAAa,MAAM,gBAAgB,CAAC;AAG5G,eAAO,MAAM,0BAA0B,UAAoC,CAAC;AAC5E,eAAO,MAAM,wBAAwB,UAA6F,CAAC;AACnI,eAAO,MAAM,qBAAqB,UAA+D,CAAC;AAClG,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,oBAAY,kBAAkB,GAAG,SAAS,GAAG;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,oBAAY,mBAAmB,GACzB;IACI,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,IAAI,CAAC;CACf,GACD;IACI,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;CAC1B,CAAC;AAER,oBAAY,eAAe,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,oBAAY,2BAA2B,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEhF,oBAAY,6BAA6B,GAAG;IACxC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAsBzG;AAED,wBAAsB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAcvG;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUnF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,WAGlD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA0B7E"}
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertToYamlConfig = exports.isStackbitYamlFile = exports.findStackbitConfigFile = exports.loadConfigFromStackbitYaml = exports.loadConfigWithModelsFromDir = exports.LATEST_STACKBIT_VERSION = exports.STACKBIT_CONFIG_FILES = exports.STACKBIT_CONFIG_JS_FILES = exports.STACKBIT_CONFIG_YAML_FILES = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const js_yaml_1 = __importDefault(require("js-yaml"));
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ const utils_1 = require("@stackbit/utils");
12
+ const config_errors_1 = require("./config-errors");
13
+ const utils_2 = require("../utils");
14
+ exports.STACKBIT_CONFIG_YAML_FILES = ['stackbit.yaml', 'stackbit.yml'];
15
+ exports.STACKBIT_CONFIG_JS_FILES = ['stackbit.config.js', 'stackbit.config.cjs', 'stackbit.config.mjs', 'stackbit.config.ts'];
16
+ exports.STACKBIT_CONFIG_FILES = [...exports.STACKBIT_CONFIG_YAML_FILES, ...exports.STACKBIT_CONFIG_JS_FILES];
17
+ exports.LATEST_STACKBIT_VERSION = '0.5.0';
18
+ async function loadConfigWithModelsFromDir(dirPath) {
19
+ var _a;
20
+ const stackbitYamlPath = await utils_1.getFirstExistingFile(exports.STACKBIT_CONFIG_YAML_FILES, dirPath);
21
+ if (!stackbitYamlPath) {
22
+ return {
23
+ errors: [new config_errors_1.ConfigLoadError(config_errors_1.STACKBIT_CONFIG_NOT_FOUND)]
24
+ };
25
+ }
26
+ const stackbitYamlResult = await loadConfigFromStackbitYaml(stackbitYamlPath);
27
+ if (stackbitYamlResult.error) {
28
+ return {
29
+ errors: [stackbitYamlResult.error]
30
+ };
31
+ }
32
+ const { models: modelsFromFiles, errors: fileModelsErrors } = await loadYamlModelsFromFiles(dirPath, stackbitYamlResult.config);
33
+ const mergedModels = mergeConfigModelsWithModelsFromFiles((_a = stackbitYamlResult.config.models) !== null && _a !== void 0 ? _a : {}, modelsFromFiles);
34
+ return {
35
+ config: {
36
+ ...stackbitYamlResult.config,
37
+ models: mergedModels
38
+ },
39
+ errors: fileModelsErrors
40
+ };
41
+ }
42
+ exports.loadConfigWithModelsFromDir = loadConfigWithModelsFromDir;
43
+ async function loadConfigFromStackbitYaml(stackbitYamlPath) {
44
+ const stackbitYaml = await fs_extra_1.default.readFile(stackbitYamlPath, 'utf8');
45
+ const config = js_yaml_1.default.load(stackbitYaml, { schema: js_yaml_1.default.JSON_SCHEMA });
46
+ if (!config || typeof config !== 'object') {
47
+ const fileName = path_1.default.basename(stackbitYamlPath);
48
+ return {
49
+ config: null,
50
+ error: new config_errors_1.ConfigLoadError(`error parsing ${fileName}, ${config_errors_1.REFER_TO_STACKBIT_CONFIG_DOCS}`)
51
+ };
52
+ }
53
+ return {
54
+ config,
55
+ error: null
56
+ };
57
+ }
58
+ exports.loadConfigFromStackbitYaml = loadConfigFromStackbitYaml;
59
+ async function findStackbitConfigFile(dirs) {
60
+ for (const dir of dirs) {
61
+ for (const fileName of exports.STACKBIT_CONFIG_FILES) {
62
+ const filePath = path_1.default.resolve(dir, fileName);
63
+ if (await fs_extra_1.default.pathExists(filePath)) {
64
+ return filePath;
65
+ }
66
+ }
67
+ }
68
+ return null;
69
+ }
70
+ exports.findStackbitConfigFile = findStackbitConfigFile;
71
+ function isStackbitYamlFile(filePath) {
72
+ const pathObject = path_1.default.parse(filePath);
73
+ return pathObject.base === 'stackbit.yaml' || pathObject.dir.split(path_1.default.sep).includes('.stackbit');
74
+ }
75
+ exports.isStackbitYamlFile = isStackbitYamlFile;
76
+ function convertToYamlConfig({ config }) {
77
+ const yamlConfig = lodash_1.default.cloneDeep(lodash_1.default.omit(config, ['models', 'dirPath', 'filePath']));
78
+ if (!lodash_1.default.isEmpty(config.models)) {
79
+ yamlConfig.models = lodash_1.default.reduce(config.models, (yamlModels, model) => {
80
+ if (model.type === 'image') {
81
+ return yamlModels;
82
+ }
83
+ const yamlModel = lodash_1.default.omit(model, ['name', '__metadata']);
84
+ if (yamlModel.type === 'page' && !yamlModel.hideContent && yamlModel.fields) {
85
+ lodash_1.default.remove(yamlModel.fields, (field) => field.name === 'markdown_content');
86
+ }
87
+ if (yamlModel.type === 'page' && yamlModel.fields) {
88
+ lodash_1.default.remove(yamlModel.fields, (field) => field.name === (config.pageLayoutKey || 'layout'));
89
+ }
90
+ if (yamlModel.type === 'data' && yamlModel.fields) {
91
+ lodash_1.default.remove(yamlModel.fields, (field) => field.name === (config.objectTypeKey || 'type'));
92
+ }
93
+ yamlModels[model.name] = yamlModel;
94
+ return yamlModels;
95
+ }, {});
96
+ }
97
+ return yamlConfig;
98
+ }
99
+ exports.convertToYamlConfig = convertToYamlConfig;
100
+ async function loadYamlModelsFromFiles(dirPath, config) {
101
+ const modelsSource = lodash_1.default.get(config, 'modelsSource', {});
102
+ const sourceType = lodash_1.default.get(modelsSource, 'type', 'files');
103
+ const defaultModelDirs = ['node_modules/@stackbit/components/models', '.stackbit/models'];
104
+ const modelDirs = sourceType === 'files'
105
+ ? lodash_1.default.castArray(lodash_1.default.get(modelsSource, 'modelDirs', defaultModelDirs)).map((modelDir) => lodash_1.default.trim(modelDir, '/'))
106
+ : defaultModelDirs;
107
+ const modelFiles = await utils_1.reducePromise(modelDirs, async (modelFiles, modelDir) => {
108
+ const absModelsDir = path_1.default.join(dirPath, modelDir);
109
+ const dirExists = await fs_extra_1.default.pathExists(absModelsDir);
110
+ if (!dirExists) {
111
+ return modelFiles;
112
+ }
113
+ const files = await readYamlModelFilesFromDir(absModelsDir);
114
+ return modelFiles.concat(files.map((filePath) => path_1.default.join(modelDir, filePath)));
115
+ }, []);
116
+ return utils_1.reducePromise(modelFiles, async (result, modelFile) => {
117
+ let model;
118
+ try {
119
+ model = await utils_1.parseFile(path_1.default.join(dirPath, modelFile));
120
+ }
121
+ catch (error) {
122
+ return {
123
+ models: result.models,
124
+ errors: result.errors.concat(new config_errors_1.ConfigLoadError(`error parsing model, file: ${modelFile}`))
125
+ };
126
+ }
127
+ const modelName = model === null || model === void 0 ? void 0 : model.name;
128
+ if (!modelName) {
129
+ return {
130
+ models: result.models,
131
+ errors: result.errors.concat(new config_errors_1.ConfigLoadError(`model does not have a name, file: ${modelFile}`))
132
+ };
133
+ }
134
+ result.models[modelName] = lodash_1.default.omit(model, 'name');
135
+ result.models[modelName].__metadata = {
136
+ filePath: modelFile
137
+ };
138
+ return result;
139
+ }, { models: {}, errors: [] });
140
+ }
141
+ async function readYamlModelFilesFromDir(modelsDir) {
142
+ return await utils_1.readDirRecursively(modelsDir, {
143
+ filter: (filePath, stats) => {
144
+ if (stats.isDirectory()) {
145
+ return true;
146
+ }
147
+ const extension = path_1.default.extname(filePath).substring(1);
148
+ return stats.isFile() && ['yaml', 'yml'].includes(extension);
149
+ }
150
+ });
151
+ }
152
+ function mergeConfigModelsWithModelsFromFiles(configModels, modelsFromFiles) {
153
+ const mergedModels = lodash_1.default.mapValues(modelsFromFiles, (modelFromFile, modelName) => {
154
+ var _a, _b, _c;
155
+ // resolve thumbnails of models loaded from files
156
+ const modelFilePath = (_a = modelFromFile.__metadata) === null || _a === void 0 ? void 0 : _a.filePath;
157
+ resolveThumbnailPathForModel(modelFromFile, modelFilePath);
158
+ utils_2.iterateModelFieldsRecursively(modelFromFile, (field) => {
159
+ if (utils_2.isListField(field)) {
160
+ field = utils_2.normalizeListFieldInPlace(field);
161
+ field = field.items;
162
+ }
163
+ if (utils_2.isObjectField(field)) {
164
+ resolveThumbnailPathForModel(field, modelFilePath);
165
+ }
166
+ else if (utils_2.isEnumField(field)) {
167
+ resolveThumbnailPathForEnumField(field, modelFilePath);
168
+ }
169
+ });
170
+ const configModel = lodash_1.default.get(configModels, modelName);
171
+ if (!configModel) {
172
+ return modelFromFile;
173
+ }
174
+ return lodash_1.default.assign({}, modelFromFile, configModel, {
175
+ fields: lodash_1.default.unionBy((_b = configModel === null || configModel === void 0 ? void 0 : configModel.fields) !== null && _b !== void 0 ? _b : [], (_c = modelFromFile === null || modelFromFile === void 0 ? void 0 : modelFromFile.fields) !== null && _c !== void 0 ? _c : [], 'name')
176
+ });
177
+ });
178
+ return Object.assign({}, configModels, mergedModels);
179
+ }
180
+ function resolveThumbnailPathForModel(modelOrField, modelFilePath) {
181
+ if (modelOrField.thumbnail && modelFilePath) {
182
+ const modelDirPath = path_1.default.dirname(modelFilePath);
183
+ modelOrField.thumbnail = resolveThumbnailPath(modelOrField.thumbnail, modelDirPath);
184
+ }
185
+ }
186
+ function resolveThumbnailPathForEnumField(enumField, modelFilePath) {
187
+ if (enumField.controlType === 'thumbnails' && modelFilePath) {
188
+ const modelDirPath = path_1.default.dirname(modelFilePath);
189
+ lodash_1.default.forEach(enumField.options, (option) => {
190
+ if (option.thumbnail) {
191
+ option.thumbnail = resolveThumbnailPath(option.thumbnail, modelDirPath);
192
+ }
193
+ });
194
+ }
195
+ }
196
+ function resolveThumbnailPath(thumbnail, modelDirPath) {
197
+ if (thumbnail.startsWith('//') || /https?:\/\//.test(thumbnail)) {
198
+ return thumbnail;
199
+ }
200
+ if (thumbnail.startsWith('/')) {
201
+ if (modelDirPath.endsWith('@stackbit/components/models')) {
202
+ modelDirPath = modelDirPath.replace(/\/models$/, '');
203
+ }
204
+ else {
205
+ modelDirPath = '';
206
+ }
207
+ thumbnail = thumbnail.replace(/^\//, '');
208
+ }
209
+ return path_1.default.join(modelDirPath, thumbnail);
210
+ }
211
+ //# sourceMappingURL=config-loader-utils.js.map