context.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.initPreContext = exports.getPreUVueContext = exports.getPreNVueContext = exports.getPreVueContext = void 0;
  4. const extend = Object.assign;
  5. const isString = (val) => typeof val === 'string';
  6. const objectToString = Object.prototype.toString;
  7. const toTypeString = (value) => objectToString.call(value);
  8. const isPlainObject = (val) => toTypeString(val) === '[object Object]';
  9. const DEFAULT_KEYS = [
  10. 'UNI_APP_X',
  11. 'APP',
  12. 'APP_UVUE',
  13. 'APP_NVUE',
  14. 'APP_PLUS',
  15. 'APP_PLUS_NVUE',
  16. 'APP_VUE',
  17. 'APP_ANDROID',
  18. 'APP_IOS',
  19. 'H5',
  20. 'MP',
  21. 'MP_360',
  22. 'MP_ALIPAY',
  23. 'MP_BAIDU',
  24. 'MP_QQ',
  25. 'MP_LARK',
  26. 'MP_TOUTIAO',
  27. 'MP_WEIXIN',
  28. 'MP_KUAISHOU',
  29. 'MP_JD',
  30. 'QUICKAPP_NATIVE',
  31. 'QUICKAPP_WEBVIEW',
  32. 'QUICKAPP_WEBVIEW_HUAWEI',
  33. 'QUICKAPP_WEBVIEW_UNION',
  34. 'VUE2',
  35. 'VUE3',
  36. 'WEB',
  37. ];
  38. const preVueContext = Object.create(null);
  39. const preNVueContext = Object.create(null);
  40. const preUVueContext = Object.create(null);
  41. function getPreVueContext() {
  42. return preVueContext;
  43. }
  44. exports.getPreVueContext = getPreVueContext;
  45. function getPreNVueContext() {
  46. return preNVueContext;
  47. }
  48. exports.getPreNVueContext = getPreNVueContext;
  49. function getPreUVueContext() {
  50. return preUVueContext;
  51. }
  52. exports.getPreUVueContext = getPreUVueContext;
  53. function initPreContext(platform, userPreContext, utsPlatform, isX) {
  54. const vueContext = Object.create(null);
  55. const nvueContext = Object.create(null);
  56. const uvueContext = Object.create(null);
  57. const defaultContext = Object.create(null);
  58. DEFAULT_KEYS.forEach((key) => {
  59. defaultContext[key] = false;
  60. });
  61. defaultContext.uniVersion = parseFloat(process.env.UNI_COMPILER_VERSION) || 0;
  62. defaultContext[normalizeKey(platform)] = true;
  63. vueContext.VUE3 = true;
  64. nvueContext.VUE3 = true;
  65. uvueContext.VUE3 = true;
  66. if (isX) {
  67. vueContext.UNI_APP_X = true;
  68. nvueContext.UNI_APP_X = true;
  69. uvueContext.UNI_APP_X = true;
  70. }
  71. if (platform === 'app' || platform === 'app-plus') {
  72. defaultContext.APP = true;
  73. defaultContext.APP_PLUS = isX ? false : true;
  74. vueContext.APP_VUE = true;
  75. nvueContext.APP_NVUE = true;
  76. nvueContext.APP_PLUS_NVUE = true;
  77. uvueContext.APP_UVUE = true;
  78. if (utsPlatform === 'app-android') {
  79. uvueContext.APP_ANDROID = true;
  80. }
  81. else if (utsPlatform === 'app-ios') {
  82. uvueContext.APP_IOS = true;
  83. }
  84. }
  85. else if (platform.startsWith('mp-')) {
  86. defaultContext.MP = true;
  87. }
  88. else if (platform.startsWith('quickapp-webview')) {
  89. defaultContext.QUICKAPP_WEBVIEW = true;
  90. }
  91. else if (platform === 'h5') {
  92. defaultContext.WEB = true;
  93. }
  94. if (userPreContext) {
  95. if (isString(userPreContext)) {
  96. try {
  97. userPreContext = JSON.parse(userPreContext);
  98. }
  99. catch (e) { }
  100. }
  101. if (isPlainObject(userPreContext)) {
  102. Object.keys(userPreContext).forEach((key) => {
  103. defaultContext[normalizeKey(key)] = !!userPreContext[key];
  104. });
  105. }
  106. }
  107. extend(preVueContext, defaultContext, vueContext);
  108. extend(preNVueContext, defaultContext, nvueContext);
  109. extend(preUVueContext, defaultContext, uvueContext);
  110. }
  111. exports.initPreContext = initPreContext;
  112. function normalizeKey(name) {
  113. return name.replace(/-/g, '_').toUpperCase();
  114. }