@cloudbase/lowcode-builder 1.2.0 → 1.2.1-alpha.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.
@@ -54,35 +54,18 @@ const cals_1 = require("@cloudbase/cals");
54
54
  const templateDir = `${config_1.appTemplateDir}/mp/`;
55
55
  const em = chalk_1.default.blue.bold;
56
56
  const error = chalk_1.default.redBright;
57
- async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins, isProduction, deployMode, extraData, isMixMode, options, buildTypeList, isBrowserMpBuilder = false, ignoreInstall = false, }) {
57
+ async function generateWxMp({ buildContext, weapps, plugins, deployMode, options, buildTypeList, isBrowserMpBuilder = false, ignoreInstall = false, }) {
58
58
  var _a;
59
+ const { appId, projDir, materialLibs: materials, isProduction, mainAppData, domain, isPrivateMode = false, endpointType = '', } = buildContext;
59
60
  const operationLabel = em('Wexin MiniProgram Generated');
60
61
  console.time(operationLabel);
61
62
  console.log(`Generating ${em('Wexin MiniProgram')} to ${projDir}`);
62
- console.log(em('domain') + domain);
63
- let mainAppData = weapps[0];
64
- const buildContext = {
65
- projDir,
66
- appId,
67
- isProduction,
68
- materialLibs: materials,
69
- debugMode: !isProduction && !!process.env.WEAPPS_DEBUG,
70
- isMixMode,
71
- mainAppData,
72
- domain,
73
- isBrowserMpBuilder,
74
- };
75
- const yyptConfig = await (0, util_3.getYyptConfigInfo)(extraData);
76
- const { allAppUsedComps } = handleUsedComponents({
77
- buildContext,
78
- weapps,
79
- materials,
80
- });
63
+ const { allAppUsedComps } = handleUsedComponents({ buildContext, weapps });
81
64
  buildContext.miniprogramPlugins = (mainAppData.miniprogramPlugins || []).filter((plugin) => allAppUsedComps[plugin.name]);
82
65
  // 安装依赖库,生成 materials 目录
83
66
  await (0, materials_1.installMaterials)(projDir, allAppUsedComps, weapps, buildContext);
84
67
  const wxmlDataPrefix = (0, mp_1.getWxmlDataPrefix)(!isProduction);
85
- const { projConfig, appConfig, pageConfigs } = (0, mp_config_1.generateMpConfig)(weapps, buildContext, { mpAppId: options === null || options === void 0 ? void 0 : options.mpAppId });
68
+ const { projConfig, appConfig, pageConfigs } = (0, mp_config_1.generateMpConfig)(weapps, buildContext, { mpAppId: options.mpAppId });
86
69
  // #1 generate project files
87
70
  if (!mainAppData.mpPkgUrl) {
88
71
  const projectFileData = {
@@ -135,7 +118,8 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
135
118
  };
136
119
  }
137
120
  if (mainAppData.mpPkgUrl) {
138
- // 合并 project 和 app json
121
+ // 合并 project 和 app json,复写 appId
122
+ projectConfigJson.appId = projConfig.appId;
139
123
  if (!projectConfigJson.setting) {
140
124
  projectConfigJson.setting = {};
141
125
  }
@@ -153,7 +137,6 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
153
137
  const importor = (0, util_3.generateLowcodeImportor)(mainAppData.lowCodes || []);
154
138
  appFileData = {
155
139
  ...appFileData,
156
- 'common/wx_yypt_report_v2.js': {},
157
140
  'app.js': { appConfig, importor },
158
141
  'app.json': { content: appConfig },
159
142
  'app.wxss': {
@@ -166,6 +149,7 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
166
149
  },
167
150
  'package.json': {
168
151
  appId,
152
+ importJSSDK: endpointType === 'tcb-api',
169
153
  extraDeps: resolveNpmDeps(),
170
154
  },
171
155
  };
@@ -187,6 +171,9 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
187
171
  resourceAppid: !!options.isCrossAccount ? options.resourceAppId : '',
188
172
  isProd: deployMode === types_1.DEPLOY_MODE.UPLOAD,
189
173
  clientID: (_a = mainAppData.extra) === null || _a === void 0 ? void 0 : _a.clientId,
174
+ isPrivateMode,
175
+ endpointType,
176
+ tcbApiOrigin: endpointType === 'tcb-api' && isPrivateMode && domain ? `https://${domain}` : '',
190
177
  },
191
178
  'datasources/datasource-profiles.js.tpl': {
192
179
  datasourceProfiles: (0, util_3.JsonToStringWithVariableName)((0, lowcode_generator_1.getDatasourceProfiles)(
@@ -221,6 +208,7 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
221
208
  await (0, generateFiles_1.default)({
222
209
  'package.json': {
223
210
  appId,
211
+ importJSSDK: endpointType === 'tcb-api',
224
212
  extraDeps: resolveNpmDeps(),
225
213
  },
226
214
  }, templateDir, subpackageRootPath, buildContext);
@@ -228,7 +216,10 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
228
216
  }
229
217
  }));
230
218
  if (!isBrowserMpBuilder && fs.existsSync(path_1.default.join(miniprogramRoot, 'package.json'))) {
231
- await (0, webpack_1.installDependencies)(miniprogramRoot, { ignoreInstall });
219
+ await (0, webpack_1.installDependencies)(miniprogramRoot, {
220
+ ignoreInstall,
221
+ fixNodeModulesMap: { '@cloudbase/js-sdk': endpointType !== 'tcb-api', mobx: true },
222
+ });
232
223
  }
233
224
  await handleMpPlugins();
234
225
  console.timeEnd(operationLabel);
@@ -236,11 +227,11 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
236
227
  !isBrowserMpBuilder && cleanProj(weapps, miniprogramRoot);
237
228
  !isBrowserMpBuilder && cleanMaterils(path_1.default.join(miniprogramRoot, config_1.materialsDirName), allAppUsedComps);
238
229
  return { miniprogramRoot };
239
- function resolveNpmDeps() {
230
+ function resolveNpmDeps(extra = {}) {
240
231
  var _a;
241
232
  const deps = [
242
233
  {
243
- deps: ((_a = weapps.find((a) => !a.rootPath)) === null || _a === void 0 ? void 0 : _a.npmDependencies) || [],
234
+ deps: ((_a = weapps.find((a) => !a.rootPath)) === null || _a === void 0 ? void 0 : _a.npmDependencies) || {},
244
235
  name: '主包',
245
236
  },
246
237
  ];
@@ -273,7 +264,7 @@ async function generateWxMp({ weapps, projDir, appId, domain, materials, plugins
273
264
  }
274
265
  });
275
266
  return result;
276
- }, {});
267
+ }, extra);
277
268
  }
278
269
  // SDK 插件
279
270
  async function handleMpPlugins() {
@@ -427,7 +418,7 @@ async function writeLowCodeFiles(appData, outDir, ctx) {
427
418
  // 混合模式,子包不生成顶级(应用级)的 lowcodes
428
419
  if (!(ctx.isMixMode && appData.rootPath)) {
429
420
  await Promise.all(lowCodes
430
- .filter((mod) => mod.type !== 'renderer')
421
+ .filter((mod) => mod.type !== cals_1.ECodeType.RENDERER)
431
422
  .map((m) => {
432
423
  (0, lowcode_1.writeCode2file)(m, lowcodeRootDir, { appDir: outDir }, themeStyle.code);
433
424
  }));
@@ -435,7 +426,7 @@ async function writeLowCodeFiles(appData, outDir, ctx) {
435
426
  await Promise.all((0, weapps_core_1.loopDealWithFn)(appData.pageInstanceList, async (page) => {
436
427
  const codes = (0, cals_1.processRuntimeCodeResources)({ id: page.id }, page.lowCodes || page.codeModules, 'page');
437
428
  await codes
438
- .filter((mod) => mod.type !== 'renderer')
429
+ .filter((mod) => mod.type !== cals_1.ECodeType.RENDERER)
439
430
  .forEach((m) => {
440
431
  (0, lowcode_1.writeCode2file)(m, lowcodeRootDir, { pageId: page.id, appDir: outDir }, themeStyle.code, ctx);
441
432
  });
@@ -463,7 +454,8 @@ function getAppendableJson(json) {
463
454
  * TODO: 与 cals 里的实现进行整合
464
455
  * 关键点在于 appUsedComps 分组, 与 generic componen 的实现
465
456
  */
466
- function handleUsedComponents({ buildContext, weapps, materials, }) {
457
+ function handleUsedComponents({ buildContext, weapps }) {
458
+ const { materialLibs: materials } = buildContext;
467
459
  const appUsedComps = weapps.map((app) => {
468
460
  var _a;
469
461
  const usedComps = {};
@@ -327,6 +327,12 @@ async function generateCompositeComponent(compositedComp, ctx, compLibCommonReso
327
327
  ${compLibCommonResource.theme.class || ''}
328
328
  `;
329
329
  }
330
+ /**
331
+ * 低码没有开放 index 类别,直接去掉
332
+ */
333
+ if (mod.name === 'index') {
334
+ return;
335
+ }
330
336
  return (0, lowcode_1.writeCode2file)(mod, path.join(outDir, LOWCODE_DIR_NAME), { comp: compositedComp }, themeCode, ctx);
331
337
  });
332
338
  // await writeLowCodeFiles(weapp, appRoot)
@@ -1,8 +1,9 @@
1
1
  import { IWeAppData, IPlugin, IMaterialItem } from '@cloudbase/lowcode-generator/lib/weapps-core';
2
2
  import { IAppUsedComp } from '../types/common';
3
- export declare function handleMixMode({ apps, generateMpPath, miniprogramRoot, plugins, ignoreInstall, }: {
3
+ import { IBuildContext } from '../mp/BuildContext';
4
+ export declare function handleMixMode({ buildContext, apps, miniprogramRoot, plugins, ignoreInstall, }: {
5
+ buildContext: IBuildContext;
4
6
  apps: IWeAppData[];
5
- generateMpPath: string;
6
7
  miniprogramRoot: string;
7
8
  plugins: IPlugin[];
8
9
  ignoreInstall: boolean;
@@ -36,13 +36,17 @@ const chalk_1 = __importDefault(require("chalk"));
36
36
  const generateFiles_1 = require("../util/generateFiles");
37
37
  const webpack_1 = require("../service/webpack");
38
38
  // 将 BUILD 目录往混合模式移动
39
- async function handleMixMode({ apps = [], generateMpPath, miniprogramRoot, plugins = [], ignoreInstall, }) {
39
+ async function handleMixMode({ buildContext, apps = [], miniprogramRoot, plugins = [], ignoreInstall, }) {
40
+ const { projDir: generateMpPath, endpointType } = buildContext;
40
41
  // await handleMainApp()
41
42
  // await handleAppPages()
42
43
  await handleSubApps();
43
44
  // await handleAppJson()
44
45
  // await handlePkgJson()
45
- await (0, webpack_1.installDependencies)(miniprogramRoot, { ignoreInstall });
46
+ await (0, webpack_1.installDependencies)(miniprogramRoot, {
47
+ ignoreInstall,
48
+ fixNodeModulesMap: { mobx: true, '@cloudbase/js-sdk': endpointType !== 'tcb-api' },
49
+ });
46
50
  await handlePlugins();
47
51
  // 复制框架公用内容
48
52
  async function handleMainApp() {
@@ -6,7 +6,7 @@ import { IBuildContext } from './BuildContext';
6
6
  * @param kboneConfig https://wechat-miniprogram.github.io/kbone/docs/config/
7
7
  * @param appConfigs app config from prop edit panel
8
8
  */
9
- export declare function generateMpConfig(weapps: IWeAppData[], ctx: IBuildContext, options?: {
9
+ export declare function generateMpConfig(weapps: IWeAppData[], ctx: IBuildContext, options: {
10
10
  mpAppId?: string;
11
11
  }): {
12
12
  appConfig: any;
@@ -117,6 +117,9 @@ function generateMpConfig(weapps, ctx, options) {
117
117
  });
118
118
  }
119
119
  });
120
+ if (options.mpAppId) {
121
+ projConfig.appId = options.mpAppId;
122
+ }
120
123
  // merge(pageConfigs, extractAllPagesConfig())
121
124
  return { appConfig, projConfig, pageConfigs };
122
125
  }
@@ -165,7 +168,7 @@ function transformDynamicData(originData) {
165
168
  const temp = {};
166
169
  for (const key in originData) {
167
170
  const target = originData[key];
168
- if (target && target.value) {
171
+ if (target === null || target === void 0 ? void 0 : target.value) {
169
172
  temp[key] = target.value;
170
173
  }
171
174
  }
@@ -2,6 +2,7 @@ import { IMaterialItem, IWebRuntimeAppData } from '@cloudbase/lowcode-generator/
2
2
  import { BuildType, WebpackModeType } from '../types/common';
3
3
  import { RUNTIME } from '../../types';
4
4
  export declare const PERSISTENT_DEPENDIENCES_MAP: {};
5
+ export declare const OUTPUT_DIR = "preview";
5
6
  export interface IMpConfig {
6
7
  origin: string;
7
8
  entry: string;
@@ -74,11 +75,17 @@ export interface IInstallOpts {
74
75
  version: string;
75
76
  downloadUrl: string;
76
77
  };
78
+ fixNodeModulesMap?: IFixNodeModulesMap;
77
79
  }
78
80
  export declare function installDependencies(targetDir: string, options?: IInstallOpts): Promise<void>;
81
+ interface IFixNodeModulesMap {
82
+ mobx?: boolean;
83
+ '@cloudbase/js-sdk'?: boolean;
84
+ }
79
85
  export declare function getMaterialNodeModulesPathList(dependencies: IMaterialItem[] | undefined, materialsDir: string, base?: string): string[];
80
86
  export declare function generateWebpackWebDevServerFile({ appBuildDir, buildTypeList }: {
81
87
  appBuildDir: any;
82
88
  buildTypeList: any;
83
89
  }): Promise<void>;
84
90
  export declare function downloadAssets(targetDir: string, assetUrl: string): Promise<unknown>;
91
+ export {};
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.downloadAssets = exports.generateWebpackWebDevServerFile = exports.getMaterialNodeModulesPathList = exports.installDependencies = exports.downloadDependencies = exports.downloadAndInstallDependencies = exports.getAllPageMpEntryPath = exports.getWebpackMpBuildParams = exports.getWebpackWebBuildParams = exports.getMpAllRouterConfig = exports.getPageName = exports.getHomePageInstance = exports.getMainAppDataByList = exports.generateMpJsonConfigFile = exports.generateKboneAppConfig = exports.generateKbonePageConfig = exports.downloadAndWriteTabBarIcon = exports.generateKboneTabBarConfig = exports.generateAppConfig = exports.generateWebpackWebBuildParamsFile = exports.fixAppJson = exports.PERSISTENT_DEPENDIENCES_MAP = void 0;
6
+ exports.downloadAssets = exports.generateWebpackWebDevServerFile = exports.getMaterialNodeModulesPathList = exports.installDependencies = exports.downloadDependencies = exports.downloadAndInstallDependencies = exports.getAllPageMpEntryPath = exports.getWebpackMpBuildParams = exports.getWebpackWebBuildParams = exports.getMpAllRouterConfig = exports.getPageName = exports.getHomePageInstance = exports.getMainAppDataByList = exports.generateMpJsonConfigFile = exports.generateKboneAppConfig = exports.generateKbonePageConfig = exports.downloadAndWriteTabBarIcon = exports.generateKboneTabBarConfig = exports.generateAppConfig = exports.generateWebpackWebBuildParamsFile = exports.fixAppJson = exports.OUTPUT_DIR = exports.PERSISTENT_DEPENDIENCES_MAP = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const fs_extra_1 = __importDefault(require("fs-extra"));
9
9
  const lodash_1 = require("lodash");
@@ -18,6 +18,7 @@ const common_2 = require("../util/common");
18
18
  const types_1 = require("../../types");
19
19
  const generateFiles_1 = require("../util/generateFiles");
20
20
  exports.PERSISTENT_DEPENDIENCES_MAP = {};
21
+ exports.OUTPUT_DIR = 'preview';
21
22
  async function fixAppJson(appBuildDir) {
22
23
  const appJsonPath = path_1.default.resolve(appBuildDir, 'dist/mp/app.json');
23
24
  if (!fs_extra_1.default.existsSync(appJsonPath)) {
@@ -273,7 +274,7 @@ function getWebpackWebBuildParams(appId, appBuildDir, publicPath = '/', mode = c
273
274
  watch: false,
274
275
  entry: path_1.default.resolve(appBuildDir, 'src/index.jsx'),
275
276
  output: {
276
- path: path_1.default.resolve(appBuildDir, './preview'),
277
+ path: path_1.default.resolve(appBuildDir, exports.OUTPUT_DIR),
277
278
  filename: '[name].[contenthash].bundle.js',
278
279
  chunkFilename: '[name].[contenthash].chunk.js',
279
280
  publicPath: buildTypeList.includes(common_1.BuildType.APP) || buildTypeList.includes(common_1.BuildType.ADMIN_PORTAL) ? '' : publicPath,
@@ -294,8 +295,6 @@ function getWebpackWebBuildParams(appId, appBuildDir, publicPath = '/', mode = c
294
295
  resolveModules: [path_1.default.resolve(appBuildDir), 'node_modules'],
295
296
  definePlugin: {
296
297
  'process.env.buildType': `"${buildTypeList[0]}"`,
297
- 'process.env.isApp': buildTypeList.includes(common_1.BuildType.APP),
298
- 'process.env.isAdminPortal': (0, common_1.buildAsAdminPortalByBuildType)(buildTypeList),
299
298
  ...extraDefine,
300
299
  },
301
300
  devtool: ['app-nvzcvt10', 'app-msa2ihs9'].includes(appId)
@@ -476,7 +475,7 @@ async function installDependencies(targetDir, options = {}) {
476
475
  console.log(`Installing dependencies in ${targetDir}`);
477
476
  const operationTag = `---------------- ${yarnExists ? 'yarn' : 'npm'} Install dependencies`;
478
477
  console.time(operationTag);
479
- const registry = `--registry=${config_1.npmRegistry}`;
478
+ const registry = `--registry=${process.env.NPM_REGISTRY || config_1.npmRegistry}`;
480
479
  const npmOptions = ['--prefer-offline', '--no-audit', '--progress=false', registry];
481
480
  if (options === null || options === void 0 ? void 0 : options.dependenceMeta) {
482
481
  npmOptions.push('--production');
@@ -488,25 +487,28 @@ async function installDependencies(targetDir, options = {}) {
488
487
  };
489
488
  }
490
489
  }
491
- let installProcess;
492
490
  // 云端构建, 选用 npm
493
- const installlProcessOptions = {
491
+ const installProcessOptions = {
494
492
  cwd: targetDir,
495
493
  // NODE_ENV="production"时,devDependencies里的包不会下载,兼容h5在线编译
496
494
  env: { ...process.env, NODE_ENV: '' },
497
495
  stdio: 'inherit',
498
496
  };
497
+ let installprocess;
498
+ // TODO: install 失败 应该终止进程
499
499
  if (yarnExists && (options === null || options === void 0 ? void 0 : options.runtime) !== types_1.RUNTIME.CI) {
500
500
  const addPackage = packageName ? ['add', packageName] : [];
501
- installProcess = cross_spawn_1.default.sync('yarn', [...addPackage, registry], installlProcessOptions);
501
+ installprocess = cross_spawn_1.default.sync('yarn', [...addPackage, registry], installProcessOptions);
502
502
  }
503
503
  else {
504
- installProcess = cross_spawn_1.default.sync('npm', ['install', packageName, ...npmOptions], installlProcessOptions);
504
+ installprocess = cross_spawn_1.default.sync('npm', ['install', packageName, ...npmOptions], installProcessOptions);
505
505
  }
506
- if (installProcess.status) {
507
- throw new Error(`安装依赖失败 ${installProcess.error || ''}`);
506
+ // TODO: 确认 process.status 语义来判断是否标识进程正常退出
507
+ if (installprocess.status) {
508
+ throw new Error(`安装依赖失败 ${installprocess.error || ''}`);
508
509
  }
509
- fixNodeModules(targetDir);
510
+ console.log('fixNodeModules(targetDir, options?.fixNodeModulesMap)');
511
+ fixNodeModules(targetDir, options === null || options === void 0 ? void 0 : options.fixNodeModulesMap);
510
512
  try {
511
513
  await fs_extra_1.default.remove(path_1.default.join(path_1.default.join(targetDir, 'package-lock.json')));
512
514
  await fs_extra_1.default.remove(path_1.default.join(path_1.default.join(targetDir, 'yarn.lock')));
@@ -515,14 +517,24 @@ async function installDependencies(targetDir, options = {}) {
515
517
  console.timeEnd(operationTag);
516
518
  }
517
519
  exports.installDependencies = installDependencies;
518
- function fixNodeModules(projDir) {
519
- // # fix mobx/package.json: "main": "lib/index.js" -> "main": "lib/index.js"
520
- const mobxPackageFile = path_1.default.join(projDir, 'node_modules', 'mobx/package.json');
521
- if (fs_extra_1.default.existsSync(mobxPackageFile)) {
522
- const mobxPackageFileContent = fs_extra_1.default.readJSONSync(mobxPackageFile);
523
- if (fs_extra_1.default.existsSync(path_1.default.join(projDir, 'node_modules', 'mobx/lib/mobx.min.js'))) {
524
- mobxPackageFileContent.main = 'lib/mobx.min.js';
525
- fs_extra_1.default.writeJSONSync(mobxPackageFile, mobxPackageFileContent);
520
+ function fixNodeModules(projDir, options = { mobx: false, '@cloudbase/js-sdk': false }) {
521
+ const { mobx = false, ['@cloudbase/js-sdk']: jsSDK = false } = options;
522
+ if (mobx) {
523
+ // # fix mobx/package.json: "main": "lib/index.js" -> "main": "lib/index.js"
524
+ const mobxPackageFile = path_1.default.join(projDir, 'node_modules', 'mobx/package.json');
525
+ if (fs_extra_1.default.existsSync(mobxPackageFile)) {
526
+ const mobxPackageFileContent = fs_extra_1.default.readJSONSync(mobxPackageFile);
527
+ if (fs_extra_1.default.existsSync(path_1.default.join(projDir, 'node_modules', 'mobx/lib/mobx.min.js'))) {
528
+ mobxPackageFileContent.main = 'lib/mobx.min.js';
529
+ fs_extra_1.default.writeJSONSync(mobxPackageFile, mobxPackageFileContent);
530
+ }
531
+ }
532
+ }
533
+ if (jsSDK) {
534
+ const scriptPath = path_1.default.resolve(projDir, 'node_modules', '@cloudbase/weda-cloud-sdk/scripts/fix-wx-none-private.js');
535
+ if (fs_extra_1.default.existsSync(scriptPath)) {
536
+ const fix = require(scriptPath);
537
+ fix();
526
538
  }
527
539
  }
528
540
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/lowcode-builder",
3
- "version": "1.2.0",
3
+ "version": "1.2.1-alpha.0",
4
4
  "description": "云开发 Tencent CloudBase Framework Low Code Plugin,将低码配置生成完整项目并一键部署云开发资源。",
5
5
  "author": "yhsunshining@gmail.com",
6
6
  "homepage": "https://github.com/TencentCloudBase/cloudbase-framework#readme",
@@ -38,8 +38,8 @@
38
38
  "url": "https://github.com/TencentCloudBase/cloudbase-framework/issues"
39
39
  },
40
40
  "dependencies": {
41
- "@cloudbase/cals": "^0.5.1",
42
- "@cloudbase/lowcode-generator": "^1.2.0",
41
+ "@cloudbase/cals": "^0.5.2",
42
+ "@cloudbase/lowcode-generator": "1.2.1-alpha.0",
43
43
  "axios": "^0.21.0",
44
44
  "browserfs": "^1.4.3",
45
45
  "browserify-zlib": "^0.2.0",
@@ -12,13 +12,14 @@
12
12
  <meta name="description" content="<%= desc %>" />
13
13
  <link
14
14
  rel="stylesheet"
15
- href="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/0.1.4/_files/static/weda-render/main.ba91c21b0d605c84ac7f.css"
15
+ href="<%=
16
+ cdnEndpoints.cdngo
17
+ %>/lcap/lcap-resource-cdngo/-/0.1.4/_files/static/weda-render/main.ba91c21b0d605c84ac7f.css"
16
18
  />
17
19
  <% cssStyles.forEach(function(styleUrl){%>
18
20
  <link type="text/css" rel="stylesheet" href="<%=styleUrl %>" />
19
- <% })%>
20
-
21
- <script crossorigin="anonymous" src="https://cdn-go.cn/aegis/aegis-sdk/latest/aegis.min.js?v=1"></script>
21
+ <% })%> <% if(cdnEndpoints.aegis){ %>
22
+ <script crossorigin="anonymous" src="<%= cdnEndpoints.aegis %>/aegis/aegis-sdk/latest/aegis.min.js?v=1"></script>
22
23
  <script>
23
24
  <% if(!isAdminPortal){ %>
24
25
  const _aegis = new Aegis({
@@ -40,6 +41,7 @@
40
41
  window._aegis = _aegis;
41
42
  window._aegis_inited = Date.now()
42
43
  </script>
44
+ <% }%>
43
45
  <title><%= title %></title>
44
46
  <% if(mode !== 'production'){ %>
45
47
  <!-- <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script>
@@ -391,10 +393,10 @@
391
393
  <script type="module" src="/src/index.jsx"></script>
392
394
  <% } %> <% if(!isAdminPortal){ %>
393
395
  <script src="/weda-config/weda-private.js"></script>
394
- <script src="//static.cloudbase.net/cloudbase-js-sdk/2.4.7-beta.0/cloudbase.full.js?v=1"></script>
396
+ <script src="<%= cdnEndpoints.cloudbase %>/cloudbase-js-sdk/2.4.7-beta.0/cloudbase.full.js?v=1"></script>
395
397
  <% }%>
396
398
  <script>
397
- if (window.cloudbase) {
399
+ if (window.cloudbase && window._aegis) {
398
400
  const _callFunction = window.cloudbase.__proto__.callFunction;
399
401
  window.cloudbase.__proto__.callFunction = function (args) {
400
402
  let promise = _callFunction.call(window.cloudbase, ...arguments);
@@ -435,19 +437,23 @@
435
437
  </script>
436
438
  <script
437
439
  crossorigin
438
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/release/_npm/react@16.14.0/umd/react.production.min.js"
440
+ src="<%= cdnEndpoints.cdngo %>/lcap/lcap-resource-cdngo/-/release/_npm/react@16.14.0/umd/react.production.min.js"
439
441
  ></script>
440
442
  <script
441
443
  crossorigin
442
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/release/_npm/react-dom@16.14.0/umd/react-dom.production.min.js"
444
+ src="<%=
445
+ cdnEndpoints.cdngo
446
+ %>/lcap/lcap-resource-cdngo/-/release/_npm/react-dom@16.14.0/umd/react-dom.production.min.js"
443
447
  ></script>
444
448
  <script
445
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/0.1.2/_url/ajax/libs/mobx/5.15.7/mobx.umd.js"
449
+ src="<%= cdnEndpoints.cdngo %>/lcap/lcap-resource-cdngo/-/0.1.2/_url/ajax/libs/mobx/5.15.7/mobx.umd.js"
446
450
  crossorigin="anonymous"
447
451
  ></script>
448
452
  <script
449
453
  crossorigin="anonymous"
450
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/release/_npm/@cloudbase/weda-cloud-sdk@1.0.19/dist/h5.browser.js"
454
+ src="<%=
455
+ cdnEndpoints.cdngo
456
+ %>/lcap/lcap-resource-cdngo/-/release/_npm/@cloudbase/weda-cloud-sdk@1.0.19/dist/h5.browser.js"
451
457
  ></script>
452
458
  <script>
453
459
  // zxing polifill
@@ -457,15 +463,19 @@
457
463
  </script>
458
464
  <script
459
465
  crossorigin="anonymous"
460
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/0.1.2/_url/npm/@zxing/library@0.18.6/umd/index.min.js"
466
+ src="<%= cdnEndpoints.cdngo %>/lcap/lcap-resource-cdngo/-/0.1.2/_url/npm/@zxing/library@0.18.6/umd/index.min.js"
461
467
  ></script>
462
468
  <script
463
469
  crossorigin
464
- src="https://qbase.cdn-go.cn//lcap/lcap-resource-cdngo/-/release/_url/qcloud/lowcode/static/ide/assets/js/babel.min.js"
470
+ src="<%=
471
+ cdnEndpoints.cdngo
472
+ %>/lcap/lcap-resource-cdngo/-/release/_url/qcloud/lowcode/static/ide/assets/js/babel.min.js"
465
473
  ></script>
466
474
  <script
467
475
  crossorigin
468
- src="https://qbase.cdn-go.cn/lcap/lcap-resource-cdngo/-/0.1.4/_files/static/weda-render/main.1e31c84cddbb620d740f.bundle.js"
476
+ src="<%=
477
+ cdnEndpoints.cdngo
478
+ %>/lcap/lcap-resource-cdngo/-/0.1.4/_files/static/weda-render/main.90a1845eb61a012b3d66.bundle.js"
469
479
  ></script>
470
480
  </body>
471
481
  </html>
@@ -2,7 +2,7 @@
2
2
  import { app } from './app/weapps-api'
3
3
  // 引入数据源管理器并进行初始化
4
4
  import { setConfig, getAccessToken, EXTRA_API, createStateDataSourceVar, generateParamsParser } from './datasources/index'
5
- import { redirectToLogin, findLoginPage, getAuthConfig } from './common/util'
5
+ import { redirectToLogin, findLoginPage, getAuthConfig, checkAnonymous } from './common/util'
6
6
 
7
7
  // 防止报类型不匹配warning
8
8
  const originWarn = console.warn;
@@ -37,7 +37,8 @@ setConfig({
37
37
  }
38
38
 
39
39
  // 后续做过滤处理
40
- if (!loginPage || (params?.data?.mode === 'c' && skip)) {
40
+ const endpointType = app?.__internal__?.getCloudSdkConfig('endpointType');
41
+ if ((params?.data?.mode === 'c' && skip) || (endpointType !== 'tcb-api' && !loginPage)) {
41
42
  return params;
42
43
  }
43
44
  // await initTcb();
@@ -68,11 +69,7 @@ setConfig({
68
69
  const loginPage = findLoginPage();
69
70
  if (loginPage) {
70
71
  const authConfig = await getAuthConfig();
71
- let isAnonymous = true;
72
- try {
73
- const { accessToken } = await getAccessToken();
74
- isAnonymous = !accessToken;
75
- } catch (e) { }
72
+ const isAnonymous = await checkAnonymous();
76
73
  if (isAnonymous && authConfig.RejectStrategy == 'to_login') {
77
74
  redirectToLogin();
78
75
  } else if (authConfig.RejectStrategy == 'show_warning') {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  import { findForItemsOfWidget, getWidget } from './widget'
3
3
  import { observable, untracked } from 'mobx';
4
- import { getAccessToken } from '../datasources/index'
4
+ import { getAccessToken, loginScope } from '../datasources/index'
5
5
  import { app } from '../app/weapps-api'
6
6
 
7
7
  /**
@@ -61,7 +61,7 @@ export function createEventHandlers(evtListeners) {
61
61
  const [prefix = ''] = name.split('$');
62
62
  // The page event handler
63
63
  const { lists = [], itemsById = {} } = !!currentTarget && findForItemsOfWidget(currentTarget) || {}
64
- const dataContext = untracked(()=>generateDataContext(currentTarget))
64
+ const dataContext = untracked(() => generateDataContext(currentTarget))
65
65
 
66
66
  listeners.forEach(async l => {
67
67
  let { data = {}, boundData = {} } = l;
@@ -310,6 +310,21 @@ async function getAccessPermission(app, appId, pageId) {
310
310
  return isAccess
311
311
  }
312
312
 
313
+ export async function checkAnonymous() {
314
+ let isAnonymous = true;
315
+ try {
316
+ const { accessToken } = await getAccessToken();
317
+ isAnonymous = !accessToken;
318
+ const { app } = getApp();
319
+ // 私密链路有token则不是匿名; tcb链路会匿名登录需要多验证scope === 'anonymous'
320
+ if (accessToken && app.__internal__.getCloudSdkConfig('endpointType') === 'tcb-api') {
321
+ const scope = await loginScope();
322
+ isAnonymous = scope === 'anonymous';
323
+ }
324
+ } catch (e) { }
325
+ return isAnonymous;
326
+ }
327
+
313
328
  /**
314
329
  * 检查页面权限
315
330
  **/
@@ -327,11 +342,7 @@ export async function checkAuth(app, appId, $page) {
327
342
  const [isAccess, authConfig] = await Promise.all(requestList);
328
343
  app.hideNavigationBarLoading();
329
344
 
330
- let isAnonymousUser = true;
331
- try {
332
- const { accessToken } = await getAccessToken();
333
- isAnonymousUser = !accessToken;
334
- } catch (e) { }
345
+ const isAnonymousUser = await checkAnonymous();
335
346
 
336
347
  if (!isAccess) {
337
348
  if (isAnonymousUser && loginPage && (authConfig.NeedLogin || authConfig.RejectStrategy == 'to_login')) {
@@ -19,7 +19,20 @@ export default {
19
19
  dataSourceProfiles: dataSourceProfiles,
20
20
  /**
21
21
  * 新的dataset变量配置对象
22
- * key 为页面ID(全局为$global), val 为变量配置数组
22
+ * key 为页面ID(全局为$global), val 为变量配置数组
23
23
  */
24
24
  datasetProfiles: datasetProfiles,
25
+ /**
26
+ * 确定调用链路
27
+ */
28
+ endpointType: '<%= endpointType %>',
29
+ /**
30
+ * 调用链路为 tcb-api 时有效
31
+ * 私有化需要设置
32
+ */
33
+ tcbApiOrigin: '<%= tcbApiOrigin %>',
34
+ /**
35
+ * 是否是处于私有化版本
36
+ */
37
+ isPrivate: <%= isPrivateMode %>
25
38
  }
@@ -1,4 +1,4 @@
1
- import { _WEDA_CLOUD_SDK as WEDA_CLOUD_SDK, auth} from '@cloudbase/weda-client'
1
+ import { _WEDA_CLOUD_SDK as WEDA_CLOUD_SDK, auth } from '@cloudbase/weda-client'
2
2
  const {
3
3
  setConfig,
4
4
  initTcb,
@@ -10,6 +10,7 @@ const {
10
10
  DS_SDK,
11
11
  } = WEDA_CLOUD_SDK
12
12
  const getAccessToken = auth.getAccessToken
13
+ const loginScope = auth.loginScope
13
14
 
14
15
  export {
15
16
  createDataset,
@@ -20,6 +21,7 @@ export {
20
21
  DS_SDK,
21
22
  setConfig,
22
23
  getAccessToken,
24
+ loginScope,
23
25
  initTcb,
24
26
  }
25
27
 
@@ -2,18 +2,18 @@
2
2
  "name": "lcap-<%= appId%>",
3
3
  "version": "1.0.8",
4
4
  "scripts": {},
5
- "dependencies": {
6
- "@cloudbase/weda-client": "0.2.30",
7
- "@cloudbase/weda-cloud-sdk": "1.0.19",
5
+ "dependencies": {<% if(importJSSDK) {%>
6
+ "@cloudbase/js-sdk": "2.5.6-beta.1",<% } %>
8
7
  "@cloudbase/oauth": "0.1.1-alpha.5",
8
+ "@cloudbase/weda-client": "0.2.36",
9
+ "@cloudbase/weda-cloud-sdk": "1.0.24-alpha.6",
9
10
  "mobx": "^5.15.4",
10
11
  "lodash.get": "^4.4.2",
11
12
  "lodash.set": "^4.3.2",
12
13
  "miniprogram-gesture": "^1.0.6",
13
14
  "miniprogram-api-promise": "^1.0.4"<% Object.keys(extraDeps).map(depName => {%>,
14
- "<%= depName%>": "<%= extraDeps[depName]%>"<%
15
- })
16
- %>
15
+ "<%= depName%>": "<%= extraDeps[depName]%>"<%
16
+ })%>
17
17
  }
18
18
  }
19
19
 
@@ -7,7 +7,7 @@
7
7
  "dependencies": {
8
8
  "@cloudbase/js-sdk": "2.4.0-beta.0",
9
9
  "@tcwd/weapps-core": "2.2.6",
10
- "@tcwd/weapps-sdk": "1.2.10",
10
+ "@tcwd/weapps-sdk": "1.2.12",
11
11
  "@zxing/library": "^0.18.6",
12
12
  "@cloudbase/weda-client": "^0.2.4",
13
13
  "lodash": "^4.17.19",
@@ -45,7 +45,6 @@
45
45
  "postcss": "^8.3.6",
46
46
  "postcss-pxtorem": "^6.0.0",
47
47
  "postcss-loader": "^4.0.3",
48
- "postcss-css-variables": "^0.16.0",
49
48
  "less": "^4.0.0",
50
49
  "less-loader": "^7.0.1",
51
50
  "loader-utils": "^3.2.0",