@cloudpss/env 0.3.0-alpha.3 → 0.3.0-alpha.4

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.
@@ -1,3 +1,5 @@
1
+ /** 规范化 URL,转为 absolute URL,去除末尾 '/' */
2
+ export declare function normalizeUrl(url: string | URL): string;
1
3
  declare const cloudpssEnv: {
2
4
  /** API 地址,eg: https://cloudpss.net/api */
3
5
  API_URL: string;
package/dist/cjs/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeUrl = void 0;
3
4
  let fakeEnv = undefined;
4
5
  /** 获取环境变量 */
5
6
  function env() {
@@ -20,7 +21,9 @@ function env() {
20
21
  return fakeEnv;
21
22
  }
22
23
  }
23
- const BASE = (() => {
24
+ /** 基址 */
25
+ function baseUrl() {
26
+ // 通过 DOM API 确定 baseUrl
24
27
  let webBase = 'https://cloudpss.net/';
25
28
  if (typeof document == 'object' && document.baseURI && document.baseURI.startsWith('http')) {
26
29
  webBase = document.baseURI;
@@ -28,6 +31,7 @@ const BASE = (() => {
28
31
  else if (typeof location == 'object' && location.protocol.startsWith('http')) {
29
32
  webBase = location.href;
30
33
  }
34
+ //通过 env 确定 baseUrl
31
35
  const homeUrl = env()['CLOUDPSS_HOME_URL'];
32
36
  if (homeUrl) {
33
37
  try {
@@ -39,7 +43,7 @@ const BASE = (() => {
39
43
  }
40
44
  }
41
45
  return webBase;
42
- })();
46
+ }
43
47
  /** 获取 url */
44
48
  function getUrl(envName, defaults) {
45
49
  let url;
@@ -53,11 +57,26 @@ function getUrl(envName, defaults) {
53
57
  if (typeof url != 'string') {
54
58
  throw new Error('url must be a string');
55
59
  }
56
- const u = new URL(url, BASE);
57
- const ret = u.href.endsWith('/') ? u.href.slice(0, u.href.length - 1) : u.href;
58
- e[envName] = ret;
59
- return ret;
60
+ const u = normalizeUrl(url);
61
+ e[envName] = u;
62
+ return u;
63
+ }
64
+ /** 规范化 URL,转为 absolute URL,去除末尾 '/' */
65
+ function normalizeUrl(url) {
66
+ if (typeof url != 'string') {
67
+ if (url && typeof url.href == 'string') {
68
+ url = url.href;
69
+ }
70
+ else {
71
+ throw new Error('Invalid url, must be a string or a URL');
72
+ }
73
+ }
74
+ const u = new URL(url, baseUrl());
75
+ if (u.href.endsWith('/'))
76
+ return u.href.slice(0, u.href.length - 1);
77
+ return u.href;
60
78
  }
79
+ exports.normalizeUrl = normalizeUrl;
61
80
  const cloudpssEnv = {};
62
81
  const def = [
63
82
  ['API_URL', '/api'],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ /** 规范化 URL,转为 absolute URL,去除末尾 '/' */
2
+ export declare function normalizeUrl(url: string | URL): string;
1
3
  declare const cloudpssEnv: {
2
4
  /** API 地址,eg: https://cloudpss.net/api */
3
5
  API_URL: string;
package/dist/esm/index.js CHANGED
@@ -18,7 +18,9 @@ function env() {
18
18
  return fakeEnv;
19
19
  }
20
20
  }
21
- const BASE = (() => {
21
+ /** 基址 */
22
+ function baseUrl() {
23
+ // 通过 DOM API 确定 baseUrl
22
24
  let webBase = 'https://cloudpss.net/';
23
25
  if (typeof document == 'object' && document.baseURI && document.baseURI.startsWith('http')) {
24
26
  webBase = document.baseURI;
@@ -26,6 +28,7 @@ const BASE = (() => {
26
28
  else if (typeof location == 'object' && location.protocol.startsWith('http')) {
27
29
  webBase = location.href;
28
30
  }
31
+ //通过 env 确定 baseUrl
29
32
  const homeUrl = env()['CLOUDPSS_HOME_URL'];
30
33
  if (homeUrl) {
31
34
  try {
@@ -37,7 +40,7 @@ const BASE = (() => {
37
40
  }
38
41
  }
39
42
  return webBase;
40
- })();
43
+ }
41
44
  /** 获取 url */
42
45
  function getUrl(envName, defaults) {
43
46
  let url;
@@ -51,10 +54,24 @@ function getUrl(envName, defaults) {
51
54
  if (typeof url != 'string') {
52
55
  throw new Error('url must be a string');
53
56
  }
54
- const u = new URL(url, BASE);
55
- const ret = u.href.endsWith('/') ? u.href.slice(0, u.href.length - 1) : u.href;
56
- e[envName] = ret;
57
- return ret;
57
+ const u = normalizeUrl(url);
58
+ e[envName] = u;
59
+ return u;
60
+ }
61
+ /** 规范化 URL,转为 absolute URL,去除末尾 '/' */
62
+ export function normalizeUrl(url) {
63
+ if (typeof url != 'string') {
64
+ if (url && typeof url.href == 'string') {
65
+ url = url.href;
66
+ }
67
+ else {
68
+ throw new Error('Invalid url, must be a string or a URL');
69
+ }
70
+ }
71
+ const u = new URL(url, baseUrl());
72
+ if (u.href.endsWith('/'))
73
+ return u.href.slice(0, u.href.length - 1);
74
+ return u.href;
58
75
  }
59
76
  const cloudpssEnv = {};
60
77
  const def = [
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudpss/env",
3
- "version": "0.3.0-alpha.3",
3
+ "version": "0.3.0-alpha.4",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "main": "dist/cjs/index.js",
@@ -18,4 +18,4 @@
18
18
  "@types/node": "^16.10.2",
19
19
  "@types/web": "^0.0.39"
20
20
  }
21
- }
21
+ }
package/src/index.ts CHANGED
@@ -19,13 +19,17 @@ function env(): NodeJS.ProcessEnv {
19
19
  }
20
20
  }
21
21
 
22
- const BASE = (() => {
22
+ /** 基址 */
23
+ function baseUrl(): string {
24
+ // 通过 DOM API 确定 baseUrl
23
25
  let webBase = 'https://cloudpss.net/';
24
26
  if (typeof document == 'object' && document.baseURI && document.baseURI.startsWith('http')) {
25
27
  webBase = document.baseURI;
26
28
  } else if (typeof location == 'object' && location.protocol.startsWith('http')) {
27
29
  webBase = location.href;
28
30
  }
31
+
32
+ //通过 env 确定 baseUrl
29
33
  const homeUrl = env()['CLOUDPSS_HOME_URL'];
30
34
  if (homeUrl) {
31
35
  try {
@@ -36,7 +40,7 @@ const BASE = (() => {
36
40
  }
37
41
  }
38
42
  return webBase;
39
- })();
43
+ }
40
44
 
41
45
  /** 获取 url */
42
46
  function getUrl(envName: string, defaults: string): string {
@@ -51,10 +55,23 @@ function getUrl(envName: string, defaults: string): string {
51
55
  if (typeof url != 'string') {
52
56
  throw new Error('url must be a string');
53
57
  }
54
- const u = new URL(url, BASE);
55
- const ret = u.href.endsWith('/') ? u.href.slice(0, u.href.length - 1) : u.href;
56
- e[envName] = ret;
57
- return ret;
58
+ const u = normalizeUrl(url);
59
+ e[envName] = u;
60
+ return u;
61
+ }
62
+
63
+ /** 规范化 URL,转为 absolute URL,去除末尾 '/' */
64
+ export function normalizeUrl(url: string | URL): string {
65
+ if (typeof url != 'string') {
66
+ if (url && typeof url.href == 'string') {
67
+ url = url.href;
68
+ } else {
69
+ throw new Error('Invalid url, must be a string or a URL');
70
+ }
71
+ }
72
+ const u = new URL(url, baseUrl());
73
+ if (u.href.endsWith('/')) return u.href.slice(0, u.href.length - 1);
74
+ return u.href;
58
75
  }
59
76
 
60
77
  const cloudpssEnv = {} as {