ts-glitter 16.2.3 → 16.2.6

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.
@@ -0,0 +1,45 @@
1
+ export declare class SeoConfig {
2
+ static editorSeo: string;
3
+ static collectionSeo(cf: {
4
+ appName: string;
5
+ language: string;
6
+ data: any;
7
+ page: string;
8
+ }): Promise<void>;
9
+ static distributionSEO(cf: {
10
+ appName: string;
11
+ page: string;
12
+ url: string;
13
+ link_prefix: string;
14
+ data: any;
15
+ language: string;
16
+ }): Promise<string>;
17
+ static productSEO(cf: {
18
+ data: any;
19
+ language: any;
20
+ appName: string;
21
+ product_id: string;
22
+ page: string;
23
+ }): Promise<void>;
24
+ static articleSeo(cf: {
25
+ article: any;
26
+ page: string;
27
+ appName: string;
28
+ data: any;
29
+ language: any;
30
+ }): Promise<void>;
31
+ static language(store_info: any, req: any): Promise<any>;
32
+ static fbCode(FBCode: any): string;
33
+ static gTag(g_tag: any[]): string;
34
+ static gA4(ga4: any[]): string;
35
+ }
36
+ export declare function extractCols(data: {
37
+ value: {
38
+ code: string;
39
+ array: {
40
+ code: string;
41
+ }[];
42
+ }[];
43
+ updated_at: Date;
44
+ }): any;
45
+ export declare function extractProds(data: any): any;
@@ -0,0 +1,307 @@
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.SeoConfig = void 0;
7
+ exports.extractCols = extractCols;
8
+ exports.extractProds = extractProds;
9
+ const manager_js_1 = require("./api-public/services/manager.js");
10
+ const database_js_1 = __importDefault(require("./modules/database.js"));
11
+ const ut_database_js_1 = require("./api-public/utils/ut-database.js");
12
+ const shopping_js_1 = require("./api-public/services/shopping.js");
13
+ const html = String.raw;
14
+ class SeoConfig {
15
+ static async collectionSeo(cf) {
16
+ var _a;
17
+ const cols = (_a = (await manager_js_1.Manager.getConfig({
18
+ appName: cf.appName,
19
+ key: 'collection',
20
+ language: cf.language,
21
+ }))[0]) !== null && _a !== void 0 ? _a : {};
22
+ const colJson = extractCols(cols);
23
+ const urlCode = decodeURI(cf.page.split('/')[1]);
24
+ const colData = colJson.find((item) => item.code === urlCode);
25
+ if (colData) {
26
+ cf.data.page_config.seo.title = colData.seo_title;
27
+ cf.data.page_config.seo.content = colData.seo_content;
28
+ cf.data.page_config.seo.keywords = colData.seo_keywords;
29
+ cf.data.tag = cf.page;
30
+ }
31
+ }
32
+ static async distributionSEO(cf) {
33
+ var _a, _b;
34
+ const redURL = new URL(`https://127.0.0.1${cf.url}`);
35
+ const rec = await database_js_1.default.query(`SELECT *
36
+ FROM \`${cf.appName}\`.t_recommend_links
37
+ WHERE content ->>'$.link' = ?;
38
+ `, [cf.page.split('/')[1]]);
39
+ const page = rec[0] && rec[0].content ? rec[0].content : { status: false };
40
+ if (page.status && isCurrentTimeWithinRange(page)) {
41
+ let query = [`(content->>'$.type'='article')`, `(content->>'$.tag'='${page.redirect.split('/')[2]}')`];
42
+ const article = await new ut_database_js_1.UtDatabase(cf.appName, `t_manager_post`).querySql(query, {
43
+ page: 0,
44
+ limit: 1,
45
+ });
46
+ cf.data.page_config = (_a = cf.data.page_config) !== null && _a !== void 0 ? _a : {};
47
+ cf.data.page_config.seo = (_b = cf.data.page_config.seo) !== null && _b !== void 0 ? _b : {};
48
+ if (article.data[0]) {
49
+ if (article.data[0].content.language_data[cf.language]) {
50
+ cf.data.page_config.seo.title = article.data[0].content.language_data[cf.language].seo.title;
51
+ cf.data.page_config.seo.content = article.data[0].content.language_data[cf.language].seo.content;
52
+ cf.data.page_config.seo.keywords = article.data[0].content.language_data[cf.language].seo.keywords;
53
+ }
54
+ else {
55
+ cf.data.page_config.seo.title = article.data[0].content.seo.title;
56
+ cf.data.page_config.seo.content = article.data[0].content.seo.content;
57
+ cf.data.page_config.seo.keywords = article.data[0].content.seo.keywords;
58
+ }
59
+ }
60
+ return html `localStorage.setItem('distributionCode','${page.code}');
61
+ location.href = '${cf.link_prefix ? `/` : ``}${cf.link_prefix}${page.redirect}${redURL.search}';
62
+ `;
63
+ }
64
+ else {
65
+ return html `location.href = '/';`;
66
+ }
67
+ }
68
+ static async productSEO(cf) {
69
+ var _a, _b, _c, _d;
70
+ const product_domain = cf.page.split('/')[1];
71
+ const pd = await new shopping_js_1.Shopping(cf.appName, undefined).getProduct(product_domain
72
+ ? {
73
+ page: 0,
74
+ limit: 1,
75
+ domain: decodeURIComponent(product_domain),
76
+ language: cf.language,
77
+ }
78
+ : {
79
+ page: 0,
80
+ limit: 1,
81
+ id: cf.product_id,
82
+ language: cf.language,
83
+ });
84
+ console.log(`pd==>`, pd);
85
+ if (pd.data.content) {
86
+ pd.data.content.language_data = (_a = pd.data.content.language_data) !== null && _a !== void 0 ? _a : {};
87
+ const productSeo = (pd.data.content.language_data[cf.language] && pd.data.content.language_data[cf.language].seo) || ((_b = pd.data.content.seo) !== null && _b !== void 0 ? _b : {});
88
+ const language_data = pd.data.content.language_data;
89
+ cf.data.page_config = (_c = cf.data.page_config) !== null && _c !== void 0 ? _c : {};
90
+ cf.data.page_config.seo = (_d = cf.data.page_config.seo) !== null && _d !== void 0 ? _d : {};
91
+ cf.data.page_config.seo.title = productSeo.title;
92
+ cf.data.page_config.seo.image = (language_data && language_data[cf.language] && language_data.preview_image && language_data.preview_image[0]) || pd.data.content.preview_image[0];
93
+ cf.data.page_config.seo.content = productSeo.content;
94
+ cf.data.tag = cf.page;
95
+ }
96
+ }
97
+ static async articleSeo(cf) {
98
+ var _a, _b;
99
+ cf.article = cf.article || cf.page.split('/')[1];
100
+ let query = [`(content->>'$.type'='article')`, `(content->>'$.tag'='${cf.article}')`];
101
+ const article = await new ut_database_js_1.UtDatabase(cf.appName, `t_manager_post`).querySql(query, {
102
+ page: 0,
103
+ limit: 1,
104
+ });
105
+ cf.data.page_config = (_a = cf.data.page_config) !== null && _a !== void 0 ? _a : {};
106
+ cf.data.page_config.seo = (_b = cf.data.page_config.seo) !== null && _b !== void 0 ? _b : {};
107
+ if (article.data[0]) {
108
+ cf.data.tag = cf.page;
109
+ if (article.data[0].content.language_data && article.data[0].content.language_data[cf.language]) {
110
+ cf.data.page_config.seo.title = article.data[0].content.language_data[cf.language].seo.title;
111
+ cf.data.page_config.seo.content = article.data[0].content.language_data[cf.language].seo.content;
112
+ cf.data.page_config.seo.keywords = article.data[0].content.language_data[cf.language].seo.keywords;
113
+ }
114
+ else {
115
+ cf.data.page_config.seo.title = article.data[0].content.seo.title;
116
+ cf.data.page_config.seo.content = article.data[0].content.seo.content;
117
+ cf.data.page_config.seo.keywords = article.data[0].content.seo.keywords;
118
+ }
119
+ }
120
+ }
121
+ static async language(store_info, req) {
122
+ function checkIncludes(lan) {
123
+ return store_info.language_setting.support.includes(lan);
124
+ }
125
+ function checkEqual(lan) {
126
+ return `${req.query.page}`.startsWith(`${lan}/`) || req.query.page === lan;
127
+ }
128
+ function replace(lan) {
129
+ if (req.query.page === lan) {
130
+ req.query.page = '';
131
+ }
132
+ else {
133
+ req.query.page = `${req.query.page}`.replace(lan + '/', '');
134
+ }
135
+ }
136
+ if (checkEqual('en') && checkIncludes('en-US')) {
137
+ replace('en');
138
+ return `en-US`;
139
+ }
140
+ else if (checkEqual('cn') && checkIncludes('zh-CN')) {
141
+ replace('cn');
142
+ return `zh-CN`;
143
+ }
144
+ else if (checkEqual('tw') && checkIncludes('zh-TW')) {
145
+ replace('tw');
146
+ return `zh-TW`;
147
+ }
148
+ else {
149
+ return store_info.language_setting.def;
150
+ }
151
+ }
152
+ static fbCode(FBCode) {
153
+ return FBCode && FBCode.pixel
154
+ ? html `<!-- Meta Pixel Code -->
155
+ <script>
156
+ !(function (f, b, e, v, n, t, s) {
157
+ if (f.fbq) return;
158
+ n = f.fbq = function () {
159
+ n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments);
160
+ };
161
+ if (!f._fbq) f._fbq = n;
162
+ n.push = n;
163
+ n.loaded = !0;
164
+ n.version = '2.0';
165
+ n.queue = [];
166
+ t = b.createElement(e);
167
+ t.async = !0;
168
+ t.src = v;
169
+ s = b.getElementsByTagName(e)[0];
170
+ s.parentNode.insertBefore(t, s);
171
+ })(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');
172
+ fbq('init', '${FBCode.pixel}');
173
+ fbq('track', 'PageView');
174
+ </script>
175
+ <noscript><img height="1" width="1" style="display:none"
176
+ src="https://www.facebook.com/tr?id=617830100580621&ev=PageView&noscript=1"/>
177
+ </noscript>
178
+ <!-- End Meta Pixel Code -->`
179
+ : '';
180
+ }
181
+ static gTag(g_tag) {
182
+ return (g_tag || [])
183
+ .map((dd) => {
184
+ return html `<!-- Google tag (gtag.js) -->
185
+ <!-- Google Tag Manager -->
186
+ <script>
187
+ (function (w, d, s, l, i) {
188
+ w[l] = w[l] || [];
189
+ w[l].push({
190
+ 'gtm.start': new Date().getTime(),
191
+ event: 'gtm.js',
192
+ });
193
+ var f = d.getElementsByTagName(s)[0],
194
+ j = d.createElement(s),
195
+ dl = l != 'dataLayer' ? '&l=' + l : '';
196
+ j.async = true;
197
+ j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
198
+ f.parentNode.insertBefore(j, f);
199
+ })(window, document, 'script', 'dataLayer', '${dd.code}');
200
+ </script>
201
+ <!-- End Google Tag Manager -->`;
202
+ })
203
+ .join('');
204
+ }
205
+ static gA4(ga4) {
206
+ return (ga4 || [])
207
+ .map((dd) => {
208
+ return html `<!-- Google tag (gtag.js) -->
209
+ <script async
210
+ src="https://www.googletagmanager.com/gtag/js?id=${dd.code}"></script>
211
+ <script>
212
+ window.dataLayer = window.dataLayer || [];
213
+
214
+ function gtag() {
215
+ dataLayer.push(arguments);
216
+ }
217
+
218
+ gtag('js', new Date());
219
+
220
+ gtag('config', '${dd.code}');
221
+ </script>`;
222
+ })
223
+ .join('');
224
+ }
225
+ }
226
+ exports.SeoConfig = SeoConfig;
227
+ SeoConfig.editorSeo = html `<title>SHOPNEX後台系統</title>
228
+ <link rel="canonical" href="/index"/>
229
+ <meta name="keywords" content="SHOPNEX,電商平台"/>
230
+ <link
231
+ id="appImage"
232
+ rel="shortcut icon"
233
+ href="https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/size1440_s*px$_sas0s9s0s1sesas0_1697354801736-Glitterlogo.png"
234
+ type="image/x-icon"
235
+ />
236
+ <link
237
+ rel="icon"
238
+ href="https://d3jnmi1tfjgtti.cloudfront.net/file/234285319/size1440_s*px$_sas0s9s0s1sesas0_1697354801736-Glitterlogo.png"
239
+ type="image/png"
240
+ sizes="128x128"
241
+ />
242
+ <meta property="og:image"
243
+ content="https://d3jnmi1tfjgtti.cloudfront.net/file/252530754/1718778766524-shopnex_banner.jpg"/>
244
+ <meta property="og:title" content="SHOPNEX後台系統"/>
245
+ <meta
246
+ name="description"
247
+ content="SHOPNEX電商開店平台,零抽成、免手續費。提供精美模板和豐富插件,操作簡單,3分鐘內快速打造專屬商店。購物車、金物流、SEO行銷、資料分析一站搞定。支援APP上架,並提供100%客製化設計,立即免費體驗30天。"
248
+ />
249
+ <meta
250
+ name="og:description"
251
+ content="SHOPNEX電商開店平台,零抽成、免手續費。提供精美模板和豐富插件,操作簡單,3分鐘內快速打造專屬商店。購物車、金物流、SEO行銷、資料分析一站搞定。支援APP上架,並提供100%客製化設計,立即免費體驗30天。"
252
+ />`;
253
+ function extractCols(data) {
254
+ const items = [];
255
+ const updated_at = new Date(data.updated_at).toISOString().replace(/\.\d{3}Z$/, '+00:00');
256
+ data.value.map((item) => {
257
+ items.push({
258
+ code: item.code,
259
+ updated_at,
260
+ seo_title: item.seo_title,
261
+ seo_image: item.seo_image,
262
+ seo_content: item.seo_content,
263
+ });
264
+ if (item.array && item.array.length > 0) {
265
+ item.array.map((child) => {
266
+ items.push({
267
+ code: child.code,
268
+ updated_at,
269
+ seo_title: child.seo_title,
270
+ seo_image: child.seo_image,
271
+ seo_content: child.seo_content,
272
+ });
273
+ });
274
+ }
275
+ });
276
+ return items;
277
+ }
278
+ function extractProds(data) {
279
+ const items = [];
280
+ data.map((item) => {
281
+ const code = (() => {
282
+ try {
283
+ return item.content.seo.domain;
284
+ }
285
+ catch (error) {
286
+ return '';
287
+ }
288
+ })();
289
+ const updated_at = new Date(item.updated_time).toISOString().replace(/\.\d{3}Z$/, '+00:00');
290
+ items.push({ code, updated_at });
291
+ });
292
+ return items;
293
+ }
294
+ function isCurrentTimeWithinRange(data) {
295
+ const now = new Date();
296
+ now.setTime(now.getTime() + 8 * 3600 * 1000);
297
+ const startDateTime = new Date(`${data.startDate}T${data.startTime}`);
298
+ const hasEnd = data.endDate && data.endTime;
299
+ const endDateTime = hasEnd ? new Date(`${data.endDate}T${data.endTime}`) : null;
300
+ if (hasEnd) {
301
+ return now >= startDateTime && now <= endDateTime;
302
+ }
303
+ else {
304
+ return now >= startDateTime;
305
+ }
306
+ }
307
+ //# sourceMappingURL=seo-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-config.js","sourceRoot":"","sources":["seo-config.ts"],"names":[],"mappings":"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"}