ts-glitter 16.2.4 → 16.2.8

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