@modern-js/repo-generator 0.0.0-next-1690395678952 → 0.0.0-next-1690449452554

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 (2) hide show
  1. package/dist/index.js +29 -46
  2. package/package.json +12 -12
package/dist/index.js CHANGED
@@ -122671,8 +122671,6 @@ var require_chainId = __commonJS({
122671
122671
  YAML: "yaml",
122672
122672
  /** Rule for wasm */
122673
122673
  WASM: "wasm",
122674
- /** Rule for node */
122675
- NODE: "node",
122676
122674
  /** Rule for bff */
122677
122675
  JS_BFF_API: "js-bff-api"
122678
122676
  },
@@ -122711,8 +122709,6 @@ var require_chainId = __commonJS({
122711
122709
  TOML: "toml",
122712
122710
  /** html-loader */
122713
122711
  HTML: "html",
122714
- /** node-loader */
122715
- NODE: "html",
122716
122712
  /** babel-loader */
122717
122713
  BABEL: "babel",
122718
122714
  /** esbuild-loader */
@@ -122973,6 +122969,7 @@ var require_constants2 = __commonJS({
122973
122969
  };
122974
122970
  var INTERNAL_MODULE_TOOLS_PLUGINS = {
122975
122971
  "@modern-js/module-tools": "@modern-js/module-tools",
122972
+ "@modern-js/doc-tools": "@modern-js/doc-tools",
122976
122973
  "@modern-js/runtime": "@modern-js/runtime/cli",
122977
122974
  "@modern-js/plugin-testing": "@modern-js/plugin-testing/cli",
122978
122975
  "@modern-js/plugin-storybook": "@modern-js/plugin-storybook/cli",
@@ -123250,12 +123247,11 @@ var require_config2 = __commonJS({
123250
123247
  });
123251
123248
  var _type = require_type();
123252
123249
  var isSSR = (config) => {
123253
- var _server, _server1;
123254
123250
  const { server } = config;
123255
- if ((_server = server) === null || _server === void 0 ? void 0 : _server.ssr) {
123251
+ if (server === null || server === void 0 ? void 0 : server.ssr) {
123256
123252
  return true;
123257
123253
  }
123258
- if (((_server1 = server) === null || _server1 === void 0 ? void 0 : _server1.ssrByEntries) && !(0, _type.isEmpty)(server.ssrByEntries)) {
123254
+ if ((server === null || server === void 0 ? void 0 : server.ssrByEntries) && !(0, _type.isEmpty)(server.ssrByEntries)) {
123259
123255
  for (const name of Object.keys(server.ssrByEntries)) {
123260
123256
  if (server.ssrByEntries[name]) {
123261
123257
  return true;
@@ -123265,29 +123261,27 @@ var require_config2 = __commonJS({
123265
123261
  return false;
123266
123262
  };
123267
123263
  var isUseSSRBundle = (config) => {
123268
- var _output;
123269
123264
  const { output: output2 } = config;
123270
- if ((_output = output2) === null || _output === void 0 ? void 0 : _output.ssg) {
123265
+ if (output2 === null || output2 === void 0 ? void 0 : output2.ssg) {
123271
123266
  return true;
123272
123267
  }
123273
123268
  return isSSR(config);
123274
123269
  };
123275
123270
  var isServiceWorker = (config) => {
123276
- var _deploy_worker, _deploy, _output;
123271
+ var _deploy_worker;
123277
123272
  const { output: output2, deploy } = config;
123278
- if (((_deploy = deploy) === null || _deploy === void 0 ? void 0 : (_deploy_worker = _deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr) && (((_output = output2) === null || _output === void 0 ? void 0 : _output.ssg) || isSSR(config))) {
123273
+ if ((deploy === null || deploy === void 0 ? void 0 : (_deploy_worker = deploy.worker) === null || _deploy_worker === void 0 ? void 0 : _deploy_worker.ssr) && ((output2 === null || output2 === void 0 ? void 0 : output2.ssg) || isSSR(config))) {
123279
123274
  return true;
123280
123275
  }
123281
123276
  return false;
123282
123277
  };
123283
123278
  var isRouterV5 = (config) => {
123284
- var _config_runtime, _config_runtime_router, _config_runtime1, _config;
123285
- return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && ((_config = config) === null || _config === void 0 ? void 0 : (_config_runtime1 = _config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
123279
+ var _config_runtime, _config_runtime1, _config_runtime_router;
123280
+ return typeof ((_config_runtime = config.runtime) === null || _config_runtime === void 0 ? void 0 : _config_runtime.router) !== "boolean" && (config === null || config === void 0 ? void 0 : (_config_runtime1 = config.runtime) === null || _config_runtime1 === void 0 ? void 0 : (_config_runtime_router = _config_runtime1.router) === null || _config_runtime_router === void 0 ? void 0 : _config_runtime_router.mode) === "react-router-5";
123286
123281
  };
123287
123282
  var isSSGEntry = (config, entryName, entrypoints) => {
123288
- var _ssgConfig, _ssgConfig1;
123289
123283
  const ssgConfig = config.output.ssg;
123290
- const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof ((_ssgConfig = ssgConfig) === null || _ssgConfig === void 0 ? void 0 : _ssgConfig[0]) === "function" || Boolean((_ssgConfig1 = ssgConfig) === null || _ssgConfig1 === void 0 ? void 0 : _ssgConfig1[entryName]);
123284
+ const useSSG = isSingleEntry(entrypoints) ? Boolean(ssgConfig) : ssgConfig === true || typeof (ssgConfig === null || ssgConfig === void 0 ? void 0 : ssgConfig[0]) === "function" || Boolean(ssgConfig === null || ssgConfig === void 0 ? void 0 : ssgConfig[entryName]);
123291
123285
  return useSSG;
123292
123286
  };
123293
123287
  var isSingleEntry = (entrypoints) => entrypoints.length === 1 && entrypoints[0].entryName === "main";
@@ -124034,7 +124028,7 @@ var require_alias = __commonJS({
124034
124028
  };
124035
124029
  var mergeAlias = (alias) => (0, _applyOptionsChain.applyOptionsChain)({}, alias);
124036
124030
  var getAliasConfig = (aliasOption, option) => {
124037
- var _tsconfig_compilerOptions, _tsconfig, _tsconfig_compilerOptions1, _tsconfig1;
124031
+ var _tsconfig_compilerOptions, _tsconfig_compilerOptions1;
124038
124032
  const isTsProject = _fs.default.existsSync(option.tsconfigPath);
124039
124033
  const alias = mergeAlias(aliasOption);
124040
124034
  if (!isTsProject) {
@@ -124046,10 +124040,10 @@ var require_alias = __commonJS({
124046
124040
  };
124047
124041
  }
124048
124042
  const tsconfig = (0, _get.readTsConfigByFile)(option.tsconfigPath);
124049
- const baseUrl = (_tsconfig = tsconfig) === null || _tsconfig === void 0 ? void 0 : (_tsconfig_compilerOptions = _tsconfig.compilerOptions) === null || _tsconfig_compilerOptions === void 0 ? void 0 : _tsconfig_compilerOptions.baseUrl;
124043
+ const baseUrl = tsconfig === null || tsconfig === void 0 ? void 0 : (_tsconfig_compilerOptions = tsconfig.compilerOptions) === null || _tsconfig_compilerOptions === void 0 ? void 0 : _tsconfig_compilerOptions.baseUrl;
124050
124044
  return {
124051
124045
  absoluteBaseUrl: baseUrl ? _path.default.join(option.appDirectory, baseUrl) : option.appDirectory,
124052
- paths: __spreadValues(__spreadValues({}, alias), (_tsconfig1 = tsconfig) === null || _tsconfig1 === void 0 ? void 0 : (_tsconfig_compilerOptions1 = _tsconfig1.compilerOptions) === null || _tsconfig_compilerOptions1 === void 0 ? void 0 : _tsconfig_compilerOptions1.paths),
124046
+ paths: __spreadValues(__spreadValues({}, alias), tsconfig === null || tsconfig === void 0 ? void 0 : (_tsconfig_compilerOptions1 = tsconfig.compilerOptions) === null || _tsconfig_compilerOptions1 === void 0 ? void 0 : _tsconfig_compilerOptions1.paths),
124053
124047
  isTsPath: true,
124054
124048
  isTsProject
124055
124049
  };
@@ -124588,8 +124582,7 @@ var require_prettyInstructions = __commonJS({
124588
124582
  const LOCAL_LABEL = "Local: ";
124589
124583
  const NETWORK_LABEL = "Network: ";
124590
124584
  const isLocalhost = (url) => {
124591
- var _url;
124592
- return (_url = url) === null || _url === void 0 ? void 0 : _url.includes("localhost");
124585
+ return url === null || url === void 0 ? void 0 : url.includes("localhost");
124593
124586
  };
124594
124587
  if (host && host !== _constants.DEFAULT_DEV_HOST) {
124595
124588
  return [
@@ -124618,7 +124611,7 @@ var require_prettyInstructions = __commonJS({
124618
124611
  var prettyInstructions = (appContext, config) => {
124619
124612
  var _appContext_builder_context_devServer, _appContext_builder, _config_dev;
124620
124613
  const { entrypoints, serverRoutes, port, apiOnly, checkedEntries } = appContext;
124621
- const isHttps = (0, _is.isDev)() && ((_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : (_appContext_builder_context_devServer = _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
124614
+ const isHttps = (0, _is.isDev)() && ((_appContext_builder_context_devServer = (_appContext_builder = appContext.builder) === null || _appContext_builder === void 0 ? void 0 : _appContext_builder.context.devServer) === null || _appContext_builder_context_devServer === void 0 ? void 0 : _appContext_builder_context_devServer.https);
124622
124615
  const urls = getAddressUrls(isHttps ? "https" : "http", port, (_config_dev = config.dev) === null || _config_dev === void 0 ? void 0 : _config_dev.host);
124623
124616
  const routes = !apiOnly ? serverRoutes.filter((route) => route.entryName) : serverRoutes;
124624
124617
  let message = "App running at:\n\n";
@@ -124683,9 +124676,8 @@ var require_require = __commonJS({
124683
124676
  });
124684
124677
  var _fs = require_fs();
124685
124678
  var compatRequire = (filePath, interop = true) => {
124686
- var _mod;
124687
124679
  const mod = require(filePath);
124688
- const rtnESMDefault = interop && ((_mod = mod) === null || _mod === void 0 ? void 0 : _mod.__esModule);
124680
+ const rtnESMDefault = interop && (mod === null || mod === void 0 ? void 0 : mod.__esModule);
124689
124681
  return rtnESMDefault ? mod.default : mod;
124690
124682
  };
124691
124683
  var dynamicImport = new Function("modulePath", "return import(modulePath)");
@@ -144501,18 +144493,16 @@ var getSolutionSchema = (extra = {}) => {
144501
144493
  type: "string",
144502
144494
  title: extra.isMonorepo ? i18n2.t(localeKeys2.sub_solution.self) : i18n2.t(localeKeys2.solution.self),
144503
144495
  enum: (() => {
144504
- var _extra, _extra1, _extra_customPlugin_custom, _extra_customPlugin, _extra2;
144505
- const items = (((_extra = extra) === null || _extra === void 0 ? void 0 : _extra.solutions) || Object.values(((_extra1 = extra) === null || _extra1 === void 0 ? void 0 : _extra1.isMonorepo) ? SubSolution : Solution)).filter((solution) => {
144506
- var _extra3;
144507
- return !(((_extra3 = extra) === null || _extra3 === void 0 ? void 0 : _extra3.isSubProject) && solution === Solution.Monorepo);
144496
+ var _extra_customPlugin, _extra_customPlugin_custom;
144497
+ const items = ((extra === null || extra === void 0 ? void 0 : extra.solutions) || Object.values((extra === null || extra === void 0 ? void 0 : extra.isMonorepo) ? SubSolution : Solution)).filter((solution) => {
144498
+ return !((extra === null || extra === void 0 ? void 0 : extra.isSubProject) && solution === Solution.Monorepo);
144508
144499
  }).map((solution) => {
144509
- var _extra3;
144510
144500
  return {
144511
144501
  value: solution,
144512
- label: ((_extra3 = extra) === null || _extra3 === void 0 ? void 0 : _extra3.isMonorepo) ? SubSolutionText[solution]() : SolutionText[solution]()
144502
+ label: (extra === null || extra === void 0 ? void 0 : extra.isMonorepo) ? SubSolutionText[solution]() : SolutionText[solution]()
144513
144503
  };
144514
144504
  });
144515
- if ((_extra2 = extra) === null || _extra2 === void 0 ? void 0 : (_extra_customPlugin = _extra2.customPlugin) === null || _extra_customPlugin === void 0 ? void 0 : (_extra_customPlugin_custom = _extra_customPlugin.custom) === null || _extra_customPlugin_custom === void 0 ? void 0 : _extra_customPlugin_custom.length) {
144505
+ if (extra === null || extra === void 0 ? void 0 : (_extra_customPlugin = extra.customPlugin) === null || _extra_customPlugin === void 0 ? void 0 : (_extra_customPlugin_custom = _extra_customPlugin.custom) === null || _extra_customPlugin_custom === void 0 ? void 0 : _extra_customPlugin_custom.length) {
144516
144506
  return [
144517
144507
  ...items,
144518
144508
  {
@@ -144528,8 +144518,7 @@ var getSolutionSchema = (extra = {}) => {
144528
144518
  };
144529
144519
  };
144530
144520
  var getScenesSchema = (extra = {}) => {
144531
- var _extra, _extra1, _extra2, _extra3, _extra4, _extra5, _extra6;
144532
- const hasPlugin = ((_extra = extra) === null || _extra === void 0 ? void 0 : _extra.customPlugin) && extra.customPlugin[((_extra1 = extra) === null || _extra1 === void 0 ? void 0 : _extra1.isMonorepoSubProject) ? getSolutionNameFromSubSolution((_extra2 = extra) === null || _extra2 === void 0 ? void 0 : _extra2.solution) : (_extra3 = extra) === null || _extra3 === void 0 ? void 0 : _extra3.solution] && extra.customPlugin[((_extra4 = extra) === null || _extra4 === void 0 ? void 0 : _extra4.isMonorepoSubProject) ? getSolutionNameFromSubSolution((_extra5 = extra) === null || _extra5 === void 0 ? void 0 : _extra5.solution) : (_extra6 = extra) === null || _extra6 === void 0 ? void 0 : _extra6.solution].length > 0;
144521
+ const hasPlugin = (extra === null || extra === void 0 ? void 0 : extra.customPlugin) && extra.customPlugin[(extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) ? getSolutionNameFromSubSolution(extra === null || extra === void 0 ? void 0 : extra.solution) : extra === null || extra === void 0 ? void 0 : extra.solution] && extra.customPlugin[(extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) ? getSolutionNameFromSubSolution(extra === null || extra === void 0 ? void 0 : extra.solution) : extra === null || extra === void 0 ? void 0 : extra.solution].length > 0;
144533
144522
  return {
144534
144523
  type: "object",
144535
144524
  properties: hasPlugin ? {
@@ -144537,17 +144526,15 @@ var getScenesSchema = (extra = {}) => {
144537
144526
  type: "string",
144538
144527
  title: i18n2.t(localeKeys2.scenes.self),
144539
144528
  enum: (() => {
144540
- var _extra7, _extra12, _extra22, _extra32, _extra42;
144541
- const solution = ((_extra7 = extra) === null || _extra7 === void 0 ? void 0 : _extra7.isMonorepoSubProject) ? getSolutionNameFromSubSolution((_extra12 = extra) === null || _extra12 === void 0 ? void 0 : _extra12.solution) : (_extra22 = extra) === null || _extra22 === void 0 ? void 0 : _extra22.solution;
144542
- const items = (((_extra32 = extra) === null || _extra32 === void 0 ? void 0 : _extra32.customPlugin) ? ((_extra42 = extra) === null || _extra42 === void 0 ? void 0 : _extra42.customPlugin[solution]) || [] : []).map((plugin) => ({
144529
+ const solution = (extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) ? getSolutionNameFromSubSolution(extra === null || extra === void 0 ? void 0 : extra.solution) : extra === null || extra === void 0 ? void 0 : extra.solution;
144530
+ const items = ((extra === null || extra === void 0 ? void 0 : extra.customPlugin) ? (extra === null || extra === void 0 ? void 0 : extra.customPlugin[solution]) || [] : []).map((plugin) => ({
144543
144531
  value: plugin.key,
144544
144532
  label: extra.locale === "zh" ? plugin.name_zh || plugin.name : plugin.name
144545
144533
  }));
144546
144534
  if (solution && solution !== "custom") {
144547
- var _extra52;
144548
144535
  items.unshift({
144549
144536
  value: solution,
144550
- label: `${((_extra52 = extra) === null || _extra52 === void 0 ? void 0 : _extra52.isMonorepoSubProject) ? SubSolutionText[solution]() : SolutionText[solution]()}(${i18n2.t(localeKeys2.solution.default)})`
144537
+ label: `${(extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) ? SubSolutionText[solution]() : SolutionText[solution]()}(${i18n2.t(localeKeys2.solution.default)})`
144551
144538
  });
144552
144539
  }
144553
144540
  return items;
@@ -144604,13 +144591,11 @@ var PackageManagerName = {
144604
144591
  [PackageManager.Npm]: "npm"
144605
144592
  };
144606
144593
  var getPackageManagerSchema = (extra = {}) => {
144607
- var _extra, _extra1;
144608
144594
  return {
144609
144595
  type: "string",
144610
144596
  title: i18n2.t(localeKeys2.packageManager.self),
144611
144597
  enum: Object.values(PackageManager).filter((packageManager) => {
144612
- var _extra2;
144613
- return ((_extra2 = extra) === null || _extra2 === void 0 ? void 0 : _extra2.solution) === "monorepo" ? packageManager !== PackageManager.Npm : true;
144598
+ return (extra === null || extra === void 0 ? void 0 : extra.solution) === "monorepo" ? packageManager !== PackageManager.Npm : true;
144614
144599
  }).map((packageManager) => ({
144615
144600
  value: packageManager,
144616
144601
  label: PackageManagerName[packageManager]
@@ -144620,7 +144605,7 @@ var getPackageManagerSchema = (extra = {}) => {
144620
144605
  dependencies: [],
144621
144606
  fulfill: {
144622
144607
  state: {
144623
- visible: !((_extra = extra) === null || _extra === void 0 ? void 0 : _extra.isMonorepoSubProject) && !((_extra1 = extra) === null || _extra1 === void 0 ? void 0 : _extra1.isSubProject)
144608
+ visible: !(extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) && !(extra === null || extra === void 0 ? void 0 : extra.isSubProject)
144624
144609
  }
144625
144610
  }
144626
144611
  }
@@ -144630,16 +144615,15 @@ var getPackageManagerSchema = (extra = {}) => {
144630
144615
 
144631
144616
  // ../../generator-common/dist/esm-node/common/packageName.js
144632
144617
  var getPackageNameSchema = (extra = {}) => {
144633
- var _extra, _extra1, _extra2, _extra3;
144634
144618
  return {
144635
144619
  type: "string",
144636
- title: ((_extra = extra) === null || _extra === void 0 ? void 0 : _extra.isMonorepoSubProject) ? i18n2.t(localeKeys2.packageName.sub_name) : i18n2.t(localeKeys2.packageName.self),
144620
+ title: (extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) ? i18n2.t(localeKeys2.packageName.sub_name) : i18n2.t(localeKeys2.packageName.self),
144637
144621
  "x-reactions": [
144638
144622
  {
144639
144623
  dependencies: [],
144640
144624
  fulfill: {
144641
144625
  state: {
144642
- visible: Boolean((_extra1 = extra) === null || _extra1 === void 0 ? void 0 : _extra1.isMonorepoSubProject) || !((_extra2 = extra) === null || _extra2 === void 0 ? void 0 : _extra2.isMwa) && !((_extra3 = extra) === null || _extra3 === void 0 ? void 0 : _extra3.isDoc)
144626
+ visible: Boolean(extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject) || !(extra === null || extra === void 0 ? void 0 : extra.isMwa) && !(extra === null || extra === void 0 ? void 0 : extra.isDoc)
144643
144627
  }
144644
144628
  }
144645
144629
  }
@@ -144656,7 +144640,6 @@ var getPackageNameSchema = (extra = {}) => {
144656
144640
  // ../../generator-common/dist/esm-node/common/packagePath.js
144657
144641
  var PackagePathRegex = new RegExp("^[a-z0-9-_]+[a-z0-9-/_]*$");
144658
144642
  var getPackagePathSchema = (extra) => {
144659
- var _extra;
144660
144643
  return {
144661
144644
  type: "string",
144662
144645
  title: i18n2.t(localeKeys2.packagePath.self),
@@ -144668,7 +144651,7 @@ var getPackagePathSchema = (extra) => {
144668
144651
  fulfill: {
144669
144652
  state: {
144670
144653
  value: "{{$deps[0]}}",
144671
- visible: Boolean((_extra = extra) === null || _extra === void 0 ? void 0 : _extra.isMonorepoSubProject)
144654
+ visible: Boolean(extra === null || extra === void 0 ? void 0 : extra.isMonorepoSubProject)
144672
144655
  }
144673
144656
  }
144674
144657
  }
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "0.0.0-next-1690395678952",
18
+ "version": "0.0.0-next-1690449452554",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "main": "./dist/index.js",
21
21
  "files": [
@@ -29,17 +29,17 @@
29
29
  "@types/node": "^14",
30
30
  "jest": "^29",
31
31
  "typescript": "^5",
32
- "@modern-js/base-generator": "0.0.0-next-1690395678952",
33
- "@modern-js/generator-common": "0.0.0-next-1690395678952",
34
- "@modern-js/generator-plugin": "0.0.0-next-1690395678952",
35
- "@modern-js/generator-utils": "0.0.0-next-1690395678952",
36
- "@modern-js/module-generator": "0.0.0-next-1690395678952",
37
- "@modern-js/monorepo-generator": "0.0.0-next-1690395678952",
38
- "@modern-js/mwa-generator": "0.0.0-next-1690395678952",
39
- "@modern-js/utils": "0.0.0-next-1690395678952",
40
- "@modern-js/doc-generator": "0.0.0-next-1690395678952",
41
- "@scripts/build": "0.0.0-next-1690395678952",
42
- "@scripts/jest-config": "0.0.0-next-1690395678952"
32
+ "@modern-js/generator-common": "0.0.0-next-1690449452554",
33
+ "@modern-js/module-generator": "0.0.0-next-1690449452554",
34
+ "@modern-js/monorepo-generator": "0.0.0-next-1690449452554",
35
+ "@modern-js/mwa-generator": "0.0.0-next-1690449452554",
36
+ "@modern-js/doc-generator": "0.0.0-next-1690449452554",
37
+ "@modern-js/utils": "0.0.0-next-1690449452554",
38
+ "@modern-js/generator-plugin": "0.0.0-next-1690449452554",
39
+ "@modern-js/generator-utils": "0.0.0-next-1690449452554",
40
+ "@modern-js/base-generator": "0.0.0-next-1690449452554",
41
+ "@scripts/jest-config": "0.0.0-next-1690449452554",
42
+ "@scripts/build": "0.0.0-next-1690449452554"
43
43
  },
44
44
  "sideEffects": false,
45
45
  "publishConfig": {