@infuro/cms-core 1.0.19 → 1.0.20
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.
- package/dist/admin.cjs +534 -11
- package/dist/admin.cjs.map +1 -1
- package/dist/admin.js +564 -23
- package/dist/admin.js.map +1 -1
- package/dist/api.cjs +727 -36
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.cts +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +705 -18
- package/dist/api.js.map +1 -1
- package/dist/{index-GMn7-9PX.d.ts → index--GBYw5JE.d.ts} +84 -2
- package/dist/{index-D2C1O9b4.d.cts → index-DGtM2Gsk.d.cts} +84 -2
- package/dist/index.cjs +1701 -713
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +99 -13
- package/dist/index.d.ts +99 -13
- package/dist/index.js +1554 -574
- package/dist/index.js.map +1 -1
- package/dist/migrations/1775300000000-LlmAgents.ts +57 -0
- package/dist/migrations/1775300000001-LlmAgentsValidationRulesText.ts +43 -0
- package/dist/migrations/1775300000002-SeedLlmAgentsPermissions.ts +33 -0
- package/dist/migrations/1775300000003-LlmAgentKnowledgeDocuments.ts +50 -0
- package/dist/migrations/1775400000000-KnowledgeBaseVectorDimension384.ts +32 -0
- package/package.json +8 -6
package/dist/index.cjs
CHANGED
|
@@ -653,6 +653,7 @@ __export(src_exports, {
|
|
|
653
653
|
FormSubmission: () => FormSubmission,
|
|
654
654
|
KnowledgeBaseChunk: () => KnowledgeBaseChunk,
|
|
655
655
|
KnowledgeBaseDocument: () => KnowledgeBaseDocument,
|
|
656
|
+
LlmAgent: () => LlmAgent,
|
|
656
657
|
LlmService: () => LlmService,
|
|
657
658
|
Media: () => Media,
|
|
658
659
|
MessageTemplate: () => MessageTemplate,
|
|
@@ -702,6 +703,7 @@ __export(src_exports, {
|
|
|
702
703
|
createForgotPasswordHandler: () => createForgotPasswordHandler,
|
|
703
704
|
createFormBySlugHandler: () => createFormBySlugHandler,
|
|
704
705
|
createInviteAcceptHandler: () => createInviteAcceptHandler,
|
|
706
|
+
createLlmAgentKnowledgeHandlers: () => createLlmAgentKnowledgeHandlers,
|
|
705
707
|
createMediaZipExtractHandler: () => createMediaZipExtractHandler,
|
|
706
708
|
createOtpChallenge: () => createOtpChallenge,
|
|
707
709
|
createSetPasswordHandler: () => createSetPasswordHandler,
|
|
@@ -735,13 +737,17 @@ __export(src_exports, {
|
|
|
735
737
|
isZipMedia: () => isZipMedia,
|
|
736
738
|
joinRecipientsForSend: () => joinRecipientsForSend,
|
|
737
739
|
linkUnclaimedContactToUser: () => linkUnclaimedContactToUser,
|
|
740
|
+
llmAgentToChatAgentOptions: () => llmAgentToChatAgentOptions,
|
|
738
741
|
llmPlugin: () => llmPlugin,
|
|
739
742
|
loadPublicThemeSettings: () => loadPublicThemeSettings,
|
|
740
743
|
localStoragePlugin: () => localStoragePlugin,
|
|
741
744
|
mergeEmailLayoutCompanyDetails: () => mergeEmailLayoutCompanyDetails,
|
|
745
|
+
mergeGuardrailsIntoSystemPrompt: () => mergeGuardrailsIntoSystemPrompt,
|
|
742
746
|
mergeSeoBySlug: () => mergeSeoBySlug,
|
|
743
747
|
normalizePhoneE164: () => normalizePhoneE164,
|
|
744
748
|
parseEmailRecipientsFromConfig: () => parseEmailRecipientsFromConfig,
|
|
749
|
+
parseHfInferenceEmbeddingBody: () => parseHfInferenceEmbeddingBody,
|
|
750
|
+
parseLlmAgentValidationRules: () => parseLlmAgentValidationRules,
|
|
745
751
|
paymentPlugin: () => paymentPlugin,
|
|
746
752
|
permissionRowsToRecord: () => permissionRowsToRecord,
|
|
747
753
|
queueEmail: () => queueEmail,
|
|
@@ -773,6 +779,8 @@ __export(src_exports, {
|
|
|
773
779
|
smsPlugin: () => smsPlugin,
|
|
774
780
|
truncateText: () => truncateText,
|
|
775
781
|
validateSlug: () => validateSlug,
|
|
782
|
+
validateUserMessageAgainstAgentRules: () => validateUserMessageAgainstAgentRules,
|
|
783
|
+
validateUserMessageAgainstStructuredRules: () => validateUserMessageAgainstStructuredRules,
|
|
776
784
|
verifyAndConsumeOtpChallenge: () => verifyAndConsumeOtpChallenge,
|
|
777
785
|
verifyOtpCodeHash: () => verifyOtpCodeHash
|
|
778
786
|
});
|
|
@@ -2605,29 +2613,111 @@ function localStoragePlugin(config = {}) {
|
|
|
2605
2613
|
}
|
|
2606
2614
|
|
|
2607
2615
|
// src/plugins/llm/llm-service.ts
|
|
2616
|
+
function parseHfInferenceEmbeddingBody(data) {
|
|
2617
|
+
if (data === null || data === void 0) return null;
|
|
2618
|
+
if (Array.isArray(data)) {
|
|
2619
|
+
if (data.length === 0) return null;
|
|
2620
|
+
const first = data[0];
|
|
2621
|
+
if (typeof first === "number") return data;
|
|
2622
|
+
if (Array.isArray(first) && first.length > 0 && typeof first[0] === "number") {
|
|
2623
|
+
return first;
|
|
2624
|
+
}
|
|
2625
|
+
if (Array.isArray(first) && Array.isArray(first[0]) && typeof first[0][0] === "number") {
|
|
2626
|
+
return first[0];
|
|
2627
|
+
}
|
|
2628
|
+
return null;
|
|
2629
|
+
}
|
|
2630
|
+
if (typeof data === "object" && data !== null && !Array.isArray(data)) {
|
|
2631
|
+
const o = data;
|
|
2632
|
+
if (typeof o.error === "string") return null;
|
|
2633
|
+
if ("embeddings" in o) return parseHfInferenceEmbeddingBody(o.embeddings);
|
|
2634
|
+
}
|
|
2635
|
+
return null;
|
|
2636
|
+
}
|
|
2608
2637
|
var LlmService = class _LlmService {
|
|
2609
|
-
|
|
2610
|
-
|
|
2638
|
+
static embedHttpErrorLogged = false;
|
|
2639
|
+
static embedShapeErrorLogged = false;
|
|
2640
|
+
static embedSuccessLogged = false;
|
|
2641
|
+
static hfDimensionMismatchWarned = false;
|
|
2642
|
+
baseURL;
|
|
2643
|
+
apiKey;
|
|
2644
|
+
defaultEmbeddingModel;
|
|
2645
|
+
embeddingProvider;
|
|
2646
|
+
hfInferenceBaseURL;
|
|
2647
|
+
embeddingApiKey;
|
|
2648
|
+
constructor(baseURL, apiKey, defaultEmbeddingModel, embedOpts) {
|
|
2649
|
+
this.baseURL = baseURL.replace(/\/$/, "");
|
|
2611
2650
|
this.apiKey = apiKey;
|
|
2612
2651
|
this.defaultEmbeddingModel = defaultEmbeddingModel;
|
|
2652
|
+
const p = (embedOpts?.embeddingProvider ?? "openai").toLowerCase();
|
|
2653
|
+
this.embeddingProvider = p === "huggingface" ? "huggingface" : "openai";
|
|
2654
|
+
this.hfInferenceBaseURL = (embedOpts?.hfInferenceBaseUrl ?? "https://api-inference.huggingface.co").replace(
|
|
2655
|
+
/\/$/,
|
|
2656
|
+
""
|
|
2657
|
+
);
|
|
2658
|
+
this.embeddingApiKey = (embedOpts?.embeddingApiKey ?? apiKey).trim();
|
|
2613
2659
|
}
|
|
2614
|
-
static embedWarned = false;
|
|
2615
2660
|
get base() {
|
|
2616
2661
|
return this.baseURL.replace(/\/$/, "");
|
|
2617
2662
|
}
|
|
2618
2663
|
get url() {
|
|
2619
2664
|
return `${this.base}/v1/chat/completions`;
|
|
2620
2665
|
}
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2666
|
+
llmDebugEnabled() {
|
|
2667
|
+
const v = process.env.LLM_DEBUG?.toLowerCase();
|
|
2668
|
+
return v === "1" || v === "true" || v === "yes";
|
|
2669
|
+
}
|
|
2670
|
+
/** Per-request embedding logs (noisy with many chunks). Set `LLM_EMBED_DEBUG=1`. */
|
|
2671
|
+
embedDebugEnabled() {
|
|
2672
|
+
const v = process.env.LLM_EMBED_DEBUG?.toLowerCase();
|
|
2673
|
+
return v === "1" || v === "true" || v === "yes";
|
|
2674
|
+
}
|
|
2675
|
+
logAgentComposition(options) {
|
|
2676
|
+
if (!this.llmDebugEnabled()) return;
|
|
2677
|
+
const { systemPrompt, context, history = [], userPrompt, model, temperature, max_tokens } = options;
|
|
2678
|
+
console.log("\n[LLM chatAgent] composing request");
|
|
2679
|
+
if (systemPrompt?.trim()) {
|
|
2680
|
+
console.log("[System instruction]\n", systemPrompt.trim());
|
|
2681
|
+
}
|
|
2682
|
+
if (context?.trim()) {
|
|
2683
|
+
console.log("[Context \u2014 merged into system message by chatAgent]\n", context.trim());
|
|
2684
|
+
}
|
|
2685
|
+
if (history.length > 0) {
|
|
2686
|
+
console.log("[Conversation so far]");
|
|
2687
|
+
for (const m of history) {
|
|
2688
|
+
console.log(` ${m.role}: ${m.content}`);
|
|
2689
|
+
}
|
|
2690
|
+
}
|
|
2691
|
+
console.log("[Current user message]\n", userPrompt);
|
|
2692
|
+
if (model !== void 0 || temperature !== void 0 || max_tokens !== void 0) {
|
|
2693
|
+
console.log("[Agent options]", { model, temperature, max_tokens });
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2696
|
+
logChatCompletionsRequest(kind, messages, options, stream) {
|
|
2697
|
+
if (!this.llmDebugEnabled()) return;
|
|
2698
|
+
const model = options.model ?? "meta-llama/Meta-Llama-3-8B-Instruct";
|
|
2699
|
+
console.log(`
|
|
2700
|
+
[LLM ${kind}] POST`, this.url);
|
|
2701
|
+
console.log("[Request options]", {
|
|
2702
|
+
model,
|
|
2703
|
+
temperature: options.temperature,
|
|
2704
|
+
max_tokens: options.max_tokens,
|
|
2705
|
+
stream
|
|
2706
|
+
});
|
|
2707
|
+
console.log("[Messages \u2014 wire payload]\n", JSON.stringify(messages, null, 2));
|
|
2708
|
+
}
|
|
2627
2709
|
async embed(text, options = {}) {
|
|
2628
|
-
const model = options.model ?? this.defaultEmbeddingModel ?? "text-embedding-3-small";
|
|
2629
2710
|
const input = text.slice(0, 8e3);
|
|
2630
|
-
|
|
2711
|
+
if (this.embeddingProvider === "huggingface") {
|
|
2712
|
+
const model2 = options.model ?? this.defaultEmbeddingModel ?? "sentence-transformers/all-MiniLM-L6-v2";
|
|
2713
|
+
return this.embedHuggingFaceInference(input, model2);
|
|
2714
|
+
}
|
|
2715
|
+
const model = options.model ?? this.defaultEmbeddingModel ?? "text-embedding-3-small";
|
|
2716
|
+
const embedUrl = `${this.base}/v1/embeddings`;
|
|
2717
|
+
if (this.embedDebugEnabled()) {
|
|
2718
|
+
console.info("[LLM embed] request", { url: embedUrl, model, inputChars: input.length });
|
|
2719
|
+
}
|
|
2720
|
+
const res = await fetch(embedUrl, {
|
|
2631
2721
|
method: "POST",
|
|
2632
2722
|
headers: {
|
|
2633
2723
|
"Content-Type": "application/json",
|
|
@@ -2640,9 +2730,17 @@ var LlmService = class _LlmService {
|
|
|
2640
2730
|
});
|
|
2641
2731
|
if (!res.ok) {
|
|
2642
2732
|
const body = await res.text();
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2733
|
+
const hint404 = res.status === 404 ? "This base URL does not expose OpenAI-compatible POST /v1/embeddings (e.g. router.huggingface.co). Set EMBEDDING_PROVIDER=huggingface and EMBEDDING_MODEL to a HF Inference\u2013supported embedding model, or use a host with /v1/embeddings." : "Embeddings HTTP error \u2014 knowledge_base_chunks.embedding will stay NULL for failed calls.";
|
|
2734
|
+
if (!_LlmService.embedHttpErrorLogged) {
|
|
2735
|
+
_LlmService.embedHttpErrorLogged = true;
|
|
2736
|
+
console.error("[LLM embed]", hint404, {
|
|
2737
|
+
url: embedUrl,
|
|
2738
|
+
status: res.status,
|
|
2739
|
+
statusText: res.statusText,
|
|
2740
|
+
bodyPreview: body.slice(0, 800)
|
|
2741
|
+
});
|
|
2742
|
+
} else if (this.embedDebugEnabled()) {
|
|
2743
|
+
console.warn("[LLM embed] repeat HTTP error", { status: res.status, bodyPreview: body.slice(0, 200) });
|
|
2646
2744
|
}
|
|
2647
2745
|
return [];
|
|
2648
2746
|
}
|
|
@@ -2650,7 +2748,10 @@ var LlmService = class _LlmService {
|
|
|
2650
2748
|
try {
|
|
2651
2749
|
data = await res.json();
|
|
2652
2750
|
} catch {
|
|
2653
|
-
|
|
2751
|
+
if (!_LlmService.embedShapeErrorLogged) {
|
|
2752
|
+
_LlmService.embedShapeErrorLogged = true;
|
|
2753
|
+
console.error("[LLM embed] Response body is not JSON \u2014 treating as no embedding.");
|
|
2754
|
+
}
|
|
2654
2755
|
return [];
|
|
2655
2756
|
}
|
|
2656
2757
|
let embedding = data?.data?.[0]?.embedding;
|
|
@@ -2661,13 +2762,154 @@ var LlmService = class _LlmService {
|
|
|
2661
2762
|
const first = data.data[0];
|
|
2662
2763
|
embedding = Array.isArray(first) ? first : first?.embedding;
|
|
2663
2764
|
}
|
|
2664
|
-
if (!Array.isArray(embedding)
|
|
2665
|
-
_LlmService.
|
|
2666
|
-
|
|
2765
|
+
if (!Array.isArray(embedding)) {
|
|
2766
|
+
if (!_LlmService.embedShapeErrorLogged) {
|
|
2767
|
+
_LlmService.embedShapeErrorLogged = true;
|
|
2768
|
+
console.error(
|
|
2769
|
+
"[LLM embed] Response OK but no parseable embedding array (OpenAI shape expected). knowledge_base_chunks will not update.",
|
|
2770
|
+
{
|
|
2771
|
+
url: embedUrl,
|
|
2772
|
+
topKeys: Object.keys(data),
|
|
2773
|
+
data0Type: Array.isArray(data?.data) ? typeof data.data[0] : "n/a"
|
|
2774
|
+
}
|
|
2775
|
+
);
|
|
2776
|
+
}
|
|
2777
|
+
return [];
|
|
2778
|
+
}
|
|
2779
|
+
if (!_LlmService.embedSuccessLogged) {
|
|
2780
|
+
_LlmService.embedSuccessLogged = true;
|
|
2781
|
+
console.info("[LLM embed] first success", { dimension: embedding.length, model });
|
|
2782
|
+
} else if (this.embedDebugEnabled()) {
|
|
2783
|
+
console.info("[LLM embed] ok", { dimension: embedding.length });
|
|
2784
|
+
}
|
|
2785
|
+
return embedding;
|
|
2786
|
+
}
|
|
2787
|
+
async embedHuggingFaceInference(input, model) {
|
|
2788
|
+
const normalizedBase = this.hfInferenceBaseURL.replace(/\/$/, "");
|
|
2789
|
+
const baseWithProvider = /router\.huggingface\.co\/hf-inference$/i.test(normalizedBase) ? normalizedBase : /router\.huggingface\.co$/i.test(normalizedBase) ? `${normalizedBase}/hf-inference` : normalizedBase;
|
|
2790
|
+
const requestBody = JSON.stringify({
|
|
2791
|
+
inputs: input,
|
|
2792
|
+
options: { wait_for_model: true }
|
|
2793
|
+
});
|
|
2794
|
+
const pipelineUrl = `${baseWithProvider}/pipeline/feature-extraction/${model}`;
|
|
2795
|
+
const modelUrl = `${baseWithProvider}/models/${model}`;
|
|
2796
|
+
if (this.embedDebugEnabled()) {
|
|
2797
|
+
console.info("[LLM embed HF]", { url: pipelineUrl, model, inputChars: input.length });
|
|
2798
|
+
}
|
|
2799
|
+
let embedUrl = pipelineUrl;
|
|
2800
|
+
let res = await fetch(embedUrl, {
|
|
2801
|
+
method: "POST",
|
|
2802
|
+
headers: {
|
|
2803
|
+
"Content-Type": "application/json",
|
|
2804
|
+
Authorization: `Bearer ${this.embeddingApiKey}`
|
|
2805
|
+
},
|
|
2806
|
+
body: requestBody
|
|
2807
|
+
});
|
|
2808
|
+
let bodyText = await res.text();
|
|
2809
|
+
if (res.status === 404) {
|
|
2810
|
+
embedUrl = modelUrl;
|
|
2811
|
+
if (this.embedDebugEnabled()) {
|
|
2812
|
+
console.warn("[LLM embed HF] /pipeline route returned 404; retrying with /models.", {
|
|
2813
|
+
model,
|
|
2814
|
+
fallbackUrl: embedUrl
|
|
2815
|
+
});
|
|
2816
|
+
}
|
|
2817
|
+
res = await fetch(embedUrl, {
|
|
2818
|
+
method: "POST",
|
|
2819
|
+
headers: {
|
|
2820
|
+
"Content-Type": "application/json",
|
|
2821
|
+
Authorization: `Bearer ${this.embeddingApiKey}`
|
|
2822
|
+
},
|
|
2823
|
+
body: requestBody
|
|
2824
|
+
});
|
|
2825
|
+
bodyText = await res.text();
|
|
2826
|
+
}
|
|
2827
|
+
if (!res.ok) {
|
|
2828
|
+
if (!_LlmService.embedHttpErrorLogged) {
|
|
2829
|
+
_LlmService.embedHttpErrorLogged = true;
|
|
2830
|
+
console.error(
|
|
2831
|
+
"[LLM embed HF] Hugging Face Inference request failed \u2014 knowledge chunks stay without vectors.",
|
|
2832
|
+
{
|
|
2833
|
+
url: embedUrl,
|
|
2834
|
+
status: res.status,
|
|
2835
|
+
statusText: res.statusText,
|
|
2836
|
+
bodyPreview: bodyText.slice(0, 800),
|
|
2837
|
+
hint: res.status === 410 || res.status === 404 ? "Model or route unavailable on Inference API; pick another EMBEDDING_MODEL (e.g. sentence-transformers/all-MiniLM-L6-v2)." : void 0
|
|
2838
|
+
}
|
|
2839
|
+
);
|
|
2840
|
+
} else if (this.embedDebugEnabled()) {
|
|
2841
|
+
console.warn("[LLM embed HF] repeat HTTP error", { status: res.status, bodyPreview: bodyText.slice(0, 200) });
|
|
2842
|
+
}
|
|
2843
|
+
return [];
|
|
2844
|
+
}
|
|
2845
|
+
let data;
|
|
2846
|
+
try {
|
|
2847
|
+
data = JSON.parse(bodyText);
|
|
2848
|
+
} catch {
|
|
2849
|
+
if (!_LlmService.embedShapeErrorLogged) {
|
|
2850
|
+
_LlmService.embedShapeErrorLogged = true;
|
|
2851
|
+
console.error("[LLM embed HF] Response is not JSON \u2014 treating as no embedding.");
|
|
2852
|
+
}
|
|
2853
|
+
return [];
|
|
2854
|
+
}
|
|
2855
|
+
const embedding = parseHfInferenceEmbeddingBody(data);
|
|
2856
|
+
if (!embedding?.length) {
|
|
2857
|
+
if (!_LlmService.embedShapeErrorLogged) {
|
|
2858
|
+
_LlmService.embedShapeErrorLogged = true;
|
|
2859
|
+
const preview = typeof data === "object" && data !== null && !Array.isArray(data) ? Object.keys(data) : typeof data;
|
|
2860
|
+
console.error("[LLM embed HF] Unrecognized embedding shape from Inference API.", { url: embedUrl, preview });
|
|
2861
|
+
}
|
|
2862
|
+
return [];
|
|
2863
|
+
}
|
|
2864
|
+
if (!_LlmService.embedSuccessLogged) {
|
|
2865
|
+
_LlmService.embedSuccessLogged = true;
|
|
2866
|
+
console.info("[LLM embed HF] first success", { dimension: embedding.length, model });
|
|
2867
|
+
if (!_LlmService.hfDimensionMismatchWarned && embedding.length !== 1536) {
|
|
2868
|
+
_LlmService.hfDimensionMismatchWarned = true;
|
|
2869
|
+
console.warn(
|
|
2870
|
+
`[LLM embed HF] Embedding dimensions=${embedding.length}; default CMS migration uses vector(1536). If pgvector updates fail, alter the column, e.g. ALTER TABLE knowledge_base_chunks ALTER COLUMN embedding TYPE vector(${embedding.length});`
|
|
2871
|
+
);
|
|
2872
|
+
}
|
|
2873
|
+
} else if (this.embedDebugEnabled()) {
|
|
2874
|
+
console.info("[LLM embed HF] ok", { dimension: embedding.length });
|
|
2875
|
+
}
|
|
2876
|
+
return embedding;
|
|
2877
|
+
}
|
|
2878
|
+
buildAgentMessages(options) {
|
|
2879
|
+
const { systemPrompt, userPrompt, history = [], context } = options;
|
|
2880
|
+
const messages = [];
|
|
2881
|
+
let systemContent = systemPrompt?.trim();
|
|
2882
|
+
if (context) {
|
|
2883
|
+
systemContent = systemContent ? `${systemContent}
|
|
2884
|
+
|
|
2885
|
+
Context:
|
|
2886
|
+
${context}` : `Use the following context to answer:
|
|
2887
|
+
|
|
2888
|
+
${context}`;
|
|
2889
|
+
}
|
|
2890
|
+
if (systemContent) {
|
|
2891
|
+
messages.push({ role: "system", content: systemContent });
|
|
2667
2892
|
}
|
|
2668
|
-
|
|
2893
|
+
if (history.length > 0) {
|
|
2894
|
+
messages.push(...history);
|
|
2895
|
+
}
|
|
2896
|
+
messages.push({ role: "user", content: userPrompt });
|
|
2897
|
+
return messages;
|
|
2898
|
+
}
|
|
2899
|
+
async chatAgent(options) {
|
|
2900
|
+
this.logAgentComposition(options);
|
|
2901
|
+
const messages = this.buildAgentMessages(options);
|
|
2902
|
+
const { model, temperature, max_tokens } = options;
|
|
2903
|
+
return this.chat(messages, { model, temperature, max_tokens });
|
|
2904
|
+
}
|
|
2905
|
+
async *streamChatAgent(options) {
|
|
2906
|
+
this.logAgentComposition(options);
|
|
2907
|
+
const messages = this.buildAgentMessages(options);
|
|
2908
|
+
const { model, temperature, max_tokens } = options;
|
|
2909
|
+
yield* this.streamChat(messages, { model, temperature, max_tokens });
|
|
2669
2910
|
}
|
|
2670
2911
|
async chat(messages, options = {}) {
|
|
2912
|
+
this.logChatCompletionsRequest("chat", messages, options, false);
|
|
2671
2913
|
const res = await fetch(this.url, {
|
|
2672
2914
|
method: "POST",
|
|
2673
2915
|
headers: {
|
|
@@ -2675,7 +2917,7 @@ var LlmService = class _LlmService {
|
|
|
2675
2917
|
Authorization: `Bearer ${this.apiKey}`
|
|
2676
2918
|
},
|
|
2677
2919
|
body: JSON.stringify({
|
|
2678
|
-
model: options.model ?? "
|
|
2920
|
+
model: options.model ?? "meta-llama/Meta-Llama-3-8B-Instruct",
|
|
2679
2921
|
messages,
|
|
2680
2922
|
stream: false,
|
|
2681
2923
|
temperature: options.temperature,
|
|
@@ -2688,9 +2930,13 @@ var LlmService = class _LlmService {
|
|
|
2688
2930
|
}
|
|
2689
2931
|
const data = await res.json();
|
|
2690
2932
|
const content = data.choices?.[0]?.message?.content ?? "";
|
|
2933
|
+
if (this.llmDebugEnabled()) {
|
|
2934
|
+
console.log("\n[LLM chat] assistant reply\n", content);
|
|
2935
|
+
}
|
|
2691
2936
|
return { content };
|
|
2692
2937
|
}
|
|
2693
2938
|
async *streamChat(messages, options = {}) {
|
|
2939
|
+
this.logChatCompletionsRequest("streamChat", messages, options, true);
|
|
2694
2940
|
const res = await fetch(this.url, {
|
|
2695
2941
|
method: "POST",
|
|
2696
2942
|
headers: {
|
|
@@ -2698,7 +2944,7 @@ var LlmService = class _LlmService {
|
|
|
2698
2944
|
Authorization: `Bearer ${this.apiKey}`
|
|
2699
2945
|
},
|
|
2700
2946
|
body: JSON.stringify({
|
|
2701
|
-
model: options.model ?? "
|
|
2947
|
+
model: options.model ?? "meta-llama/Meta-Llama-3-8B-Instruct",
|
|
2702
2948
|
messages,
|
|
2703
2949
|
stream: true,
|
|
2704
2950
|
temperature: options.temperature,
|
|
@@ -2713,6 +2959,8 @@ var LlmService = class _LlmService {
|
|
|
2713
2959
|
if (!reader) return;
|
|
2714
2960
|
const decoder = new TextDecoder();
|
|
2715
2961
|
let buffer = "";
|
|
2962
|
+
const debug = this.llmDebugEnabled();
|
|
2963
|
+
let streamedReply = "";
|
|
2716
2964
|
while (true) {
|
|
2717
2965
|
const { value, done } = await reader.read();
|
|
2718
2966
|
if (done) break;
|
|
@@ -2724,16 +2972,28 @@ var LlmService = class _LlmService {
|
|
|
2724
2972
|
try {
|
|
2725
2973
|
const json = JSON.parse(line.slice(6));
|
|
2726
2974
|
const content = json.choices?.[0]?.delta?.content;
|
|
2727
|
-
if (content)
|
|
2975
|
+
if (content) {
|
|
2976
|
+
if (debug) streamedReply += content;
|
|
2977
|
+
yield content;
|
|
2978
|
+
}
|
|
2728
2979
|
} catch {
|
|
2729
2980
|
}
|
|
2730
2981
|
}
|
|
2731
2982
|
}
|
|
2732
2983
|
}
|
|
2984
|
+
if (debug) {
|
|
2985
|
+
console.log("\n[LLM streamChat] assistant reply (full)\n", streamedReply);
|
|
2986
|
+
}
|
|
2733
2987
|
}
|
|
2734
2988
|
};
|
|
2735
2989
|
|
|
2736
2990
|
// src/plugins/llm/index.ts
|
|
2991
|
+
function normalizeEmbeddingProvider(raw) {
|
|
2992
|
+
if (!raw) return "openai";
|
|
2993
|
+
const s = raw.toLowerCase().trim();
|
|
2994
|
+
if (s === "huggingface" || s === "hf" || s === "hf_inference" || s === "inference") return "huggingface";
|
|
2995
|
+
return "openai";
|
|
2996
|
+
}
|
|
2737
2997
|
function llmPlugin(config = {}) {
|
|
2738
2998
|
return {
|
|
2739
2999
|
name: "llm",
|
|
@@ -2746,7 +3006,16 @@ function llmPlugin(config = {}) {
|
|
|
2746
3006
|
return void 0;
|
|
2747
3007
|
}
|
|
2748
3008
|
const embeddingModel = config.embeddingModel ?? context.config.EMBEDDING_MODEL;
|
|
2749
|
-
|
|
3009
|
+
const embeddingProvider = normalizeEmbeddingProvider(
|
|
3010
|
+
config.embeddingProvider ?? context.config.EMBEDDING_PROVIDER
|
|
3011
|
+
);
|
|
3012
|
+
const hfInferenceBaseUrl = config.hfInferenceBaseUrl ?? context.config.HF_INFERENCE_URL;
|
|
3013
|
+
const embeddingApiKey = config.embeddingApiKey ?? context.config.EMBEDDING_API_KEY;
|
|
3014
|
+
return new LlmService(baseURL.replace(/\/$/, ""), apiKey, embeddingModel, {
|
|
3015
|
+
embeddingProvider,
|
|
3016
|
+
hfInferenceBaseUrl,
|
|
3017
|
+
embeddingApiKey
|
|
3018
|
+
});
|
|
2750
3019
|
}
|
|
2751
3020
|
};
|
|
2752
3021
|
}
|
|
@@ -3606,10 +3875,90 @@ async function seedDefaultAdmin(ds, entityMap, opts) {
|
|
|
3606
3875
|
}
|
|
3607
3876
|
|
|
3608
3877
|
// src/api/cms-handlers.ts
|
|
3609
|
-
var
|
|
3878
|
+
var import_typeorm6 = require("typeorm");
|
|
3610
3879
|
init_email_queue();
|
|
3611
3880
|
init_erp_queue();
|
|
3612
3881
|
|
|
3882
|
+
// src/entities/llm-agent.entity.ts
|
|
3883
|
+
var import_typeorm4 = require("typeorm");
|
|
3884
|
+
var LlmAgent = class {
|
|
3885
|
+
id;
|
|
3886
|
+
name;
|
|
3887
|
+
slug;
|
|
3888
|
+
systemInstruction;
|
|
3889
|
+
model;
|
|
3890
|
+
temperature;
|
|
3891
|
+
maxTokens;
|
|
3892
|
+
validationRules;
|
|
3893
|
+
enabled;
|
|
3894
|
+
createdAt;
|
|
3895
|
+
updatedAt;
|
|
3896
|
+
deletedAt;
|
|
3897
|
+
deleted;
|
|
3898
|
+
createdBy;
|
|
3899
|
+
updatedBy;
|
|
3900
|
+
deletedBy;
|
|
3901
|
+
};
|
|
3902
|
+
__decorateClass([
|
|
3903
|
+
(0, import_typeorm4.PrimaryGeneratedColumn)()
|
|
3904
|
+
], LlmAgent.prototype, "id", 2);
|
|
3905
|
+
__decorateClass([
|
|
3906
|
+
(0, import_typeorm4.Column)("varchar")
|
|
3907
|
+
], LlmAgent.prototype, "name", 2);
|
|
3908
|
+
__decorateClass([
|
|
3909
|
+
(0, import_typeorm4.Column)("varchar")
|
|
3910
|
+
], LlmAgent.prototype, "slug", 2);
|
|
3911
|
+
__decorateClass([
|
|
3912
|
+
(0, import_typeorm4.Column)("text", { name: "system_instruction", default: "" })
|
|
3913
|
+
], LlmAgent.prototype, "systemInstruction", 2);
|
|
3914
|
+
__decorateClass([
|
|
3915
|
+
(0, import_typeorm4.Column)("varchar", { nullable: true })
|
|
3916
|
+
], LlmAgent.prototype, "model", 2);
|
|
3917
|
+
__decorateClass([
|
|
3918
|
+
(0, import_typeorm4.Column)("double precision", { name: "temperature", nullable: true })
|
|
3919
|
+
], LlmAgent.prototype, "temperature", 2);
|
|
3920
|
+
__decorateClass([
|
|
3921
|
+
(0, import_typeorm4.Column)("int", { name: "max_tokens", nullable: true })
|
|
3922
|
+
], LlmAgent.prototype, "maxTokens", 2);
|
|
3923
|
+
__decorateClass([
|
|
3924
|
+
(0, import_typeorm4.Column)("text", { name: "validation_rules", nullable: true })
|
|
3925
|
+
], LlmAgent.prototype, "validationRules", 2);
|
|
3926
|
+
__decorateClass([
|
|
3927
|
+
(0, import_typeorm4.Column)("boolean", { default: true })
|
|
3928
|
+
], LlmAgent.prototype, "enabled", 2);
|
|
3929
|
+
__decorateClass([
|
|
3930
|
+
(0, import_typeorm4.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
3931
|
+
], LlmAgent.prototype, "createdAt", 2);
|
|
3932
|
+
__decorateClass([
|
|
3933
|
+
(0, import_typeorm4.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
3934
|
+
], LlmAgent.prototype, "updatedAt", 2);
|
|
3935
|
+
__decorateClass([
|
|
3936
|
+
(0, import_typeorm4.Column)({ type: "timestamp", nullable: true })
|
|
3937
|
+
], LlmAgent.prototype, "deletedAt", 2);
|
|
3938
|
+
__decorateClass([
|
|
3939
|
+
(0, import_typeorm4.Column)("boolean", { default: false })
|
|
3940
|
+
], LlmAgent.prototype, "deleted", 2);
|
|
3941
|
+
__decorateClass([
|
|
3942
|
+
(0, import_typeorm4.Column)("int", { nullable: true })
|
|
3943
|
+
], LlmAgent.prototype, "createdBy", 2);
|
|
3944
|
+
__decorateClass([
|
|
3945
|
+
(0, import_typeorm4.Column)("int", { nullable: true })
|
|
3946
|
+
], LlmAgent.prototype, "updatedBy", 2);
|
|
3947
|
+
__decorateClass([
|
|
3948
|
+
(0, import_typeorm4.Column)("int", { nullable: true })
|
|
3949
|
+
], LlmAgent.prototype, "deletedBy", 2);
|
|
3950
|
+
LlmAgent = __decorateClass([
|
|
3951
|
+
(0, import_typeorm4.Entity)("llm_agents")
|
|
3952
|
+
], LlmAgent);
|
|
3953
|
+
function llmAgentToChatAgentOptions(agent) {
|
|
3954
|
+
return {
|
|
3955
|
+
systemPrompt: agent.systemInstruction?.trim() || void 0,
|
|
3956
|
+
model: agent.model?.trim() || void 0,
|
|
3957
|
+
temperature: agent.temperature ?? void 0,
|
|
3958
|
+
max_tokens: agent.maxTokens ?? void 0
|
|
3959
|
+
};
|
|
3960
|
+
}
|
|
3961
|
+
|
|
3613
3962
|
// src/lib/media-folder-path.ts
|
|
3614
3963
|
function sanitizeMediaFolderPath(input) {
|
|
3615
3964
|
if (input == null) return "";
|
|
@@ -3641,7 +3990,7 @@ async function relativePathFromMediaParentId(dataSource, entityMap, parentId) {
|
|
|
3641
3990
|
}
|
|
3642
3991
|
|
|
3643
3992
|
// src/lib/media-zip-extract.ts
|
|
3644
|
-
var
|
|
3993
|
+
var import_typeorm5 = require("typeorm");
|
|
3645
3994
|
var ZIP_MIME_TYPES = /* @__PURE__ */ new Set(["application/zip", "application/x-zip-compressed"]);
|
|
3646
3995
|
var MAX_ENTRIES = 2e3;
|
|
3647
3996
|
var MAX_TOTAL_UNCOMPRESSED = 80 * 1024 * 1024;
|
|
@@ -3692,7 +4041,7 @@ function guessMimeType(fileName) {
|
|
|
3692
4041
|
async function findOrCreateFolder(dataSource, entityMap, parentId, name) {
|
|
3693
4042
|
const safe = sanitizeStorageSegment(name);
|
|
3694
4043
|
const repo = dataSource.getRepository(entityMap.media);
|
|
3695
|
-
const where = parentId == null ? { kind: "folder", filename: safe, parentId: (0,
|
|
4044
|
+
const where = parentId == null ? { kind: "folder", filename: safe, parentId: (0, import_typeorm5.IsNull)() } : { kind: "folder", filename: safe, parentId };
|
|
3696
4045
|
const existing = await repo.findOne({ where });
|
|
3697
4046
|
if (existing) return existing.id;
|
|
3698
4047
|
const row = await repo.save(
|
|
@@ -3799,6 +4148,82 @@ async function extractZipMediaIntoParentTree(opts) {
|
|
|
3799
4148
|
}
|
|
3800
4149
|
|
|
3801
4150
|
// src/api/cms-handlers.ts
|
|
4151
|
+
function historyBeforeCurrentUser(history, currentUserContent) {
|
|
4152
|
+
const last = history[history.length - 1];
|
|
4153
|
+
if (last?.role === "user" && last.content === currentUserContent) {
|
|
4154
|
+
return history.slice(0, -1);
|
|
4155
|
+
}
|
|
4156
|
+
return [...history];
|
|
4157
|
+
}
|
|
4158
|
+
function pickStructuredRules(rules) {
|
|
4159
|
+
return {
|
|
4160
|
+
maxUserChars: rules.maxUserChars,
|
|
4161
|
+
maxMessageLength: rules.maxMessageLength,
|
|
4162
|
+
minUserChars: rules.minUserChars,
|
|
4163
|
+
minMessageLength: rules.minMessageLength,
|
|
4164
|
+
blockedSubstrings: rules.blockedSubstrings
|
|
4165
|
+
};
|
|
4166
|
+
}
|
|
4167
|
+
function guardrailsTextFromJsonObject(rules) {
|
|
4168
|
+
const g = typeof rules.guardrails === "string" && rules.guardrails.trim() || typeof rules.outputRules === "string" && rules.outputRules.trim() || typeof rules.outputInstructions === "string" && rules.outputInstructions.trim() || "";
|
|
4169
|
+
return g || null;
|
|
4170
|
+
}
|
|
4171
|
+
function parseLlmAgentValidationRules(validationRulesText) {
|
|
4172
|
+
const raw = validationRulesText?.trim();
|
|
4173
|
+
if (!raw) return { structured: {}, guardrailsForPrompt: null };
|
|
4174
|
+
try {
|
|
4175
|
+
const parsed = JSON.parse(raw);
|
|
4176
|
+
if (typeof parsed === "string") {
|
|
4177
|
+
const s = parsed.trim();
|
|
4178
|
+
return { structured: {}, guardrailsForPrompt: s || null };
|
|
4179
|
+
}
|
|
4180
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
4181
|
+
return { structured: {}, guardrailsForPrompt: raw };
|
|
4182
|
+
}
|
|
4183
|
+
const rules = parsed;
|
|
4184
|
+
return {
|
|
4185
|
+
structured: pickStructuredRules(rules),
|
|
4186
|
+
guardrailsForPrompt: guardrailsTextFromJsonObject(rules)
|
|
4187
|
+
};
|
|
4188
|
+
} catch {
|
|
4189
|
+
return { structured: {}, guardrailsForPrompt: raw };
|
|
4190
|
+
}
|
|
4191
|
+
}
|
|
4192
|
+
function validateUserMessageAgainstStructuredRules(message, structured) {
|
|
4193
|
+
const maxLen = structured.maxUserChars ?? structured.maxMessageLength;
|
|
4194
|
+
if (typeof maxLen === "number" && Number.isFinite(maxLen) && maxLen >= 0 && message.length > maxLen) {
|
|
4195
|
+
return { ok: false, error: `Message exceeds maximum length (${maxLen} characters)` };
|
|
4196
|
+
}
|
|
4197
|
+
const minLen = structured.minUserChars ?? structured.minMessageLength;
|
|
4198
|
+
if (typeof minLen === "number" && Number.isFinite(minLen) && minLen > 0 && message.length < minLen) {
|
|
4199
|
+
return { ok: false, error: `Message is shorter than minimum length (${minLen} characters)` };
|
|
4200
|
+
}
|
|
4201
|
+
const blocked = structured.blockedSubstrings;
|
|
4202
|
+
if (Array.isArray(blocked) && blocked.length > 0) {
|
|
4203
|
+
const lower = message.toLowerCase();
|
|
4204
|
+
for (const s of blocked) {
|
|
4205
|
+
if (typeof s !== "string" || !s.trim()) continue;
|
|
4206
|
+
if (lower.includes(s.toLowerCase())) {
|
|
4207
|
+
return { ok: false, error: "Message contains disallowed content" };
|
|
4208
|
+
}
|
|
4209
|
+
}
|
|
4210
|
+
}
|
|
4211
|
+
return { ok: true };
|
|
4212
|
+
}
|
|
4213
|
+
function validateUserMessageAgainstAgentRules(message, validationRulesText) {
|
|
4214
|
+
const { structured } = parseLlmAgentValidationRules(validationRulesText);
|
|
4215
|
+
return validateUserMessageAgainstStructuredRules(message, structured);
|
|
4216
|
+
}
|
|
4217
|
+
function mergeGuardrailsIntoSystemPrompt(baseSystem, guardrailsForPrompt) {
|
|
4218
|
+
const g = guardrailsForPrompt?.trim();
|
|
4219
|
+
const b = (baseSystem ?? "").trim();
|
|
4220
|
+
if (!g) return b;
|
|
4221
|
+
const block = `### Output guardrails (follow in every reply)
|
|
4222
|
+
${g}`;
|
|
4223
|
+
return b ? `${b}
|
|
4224
|
+
|
|
4225
|
+
${block}` : block;
|
|
4226
|
+
}
|
|
3802
4227
|
function createDashboardStatsHandler(config) {
|
|
3803
4228
|
const { dataSource, entityMap, json, requireAuth, requirePermission, requireEntityPermission } = config;
|
|
3804
4229
|
return async function GET(req) {
|
|
@@ -3821,8 +4246,8 @@ function createDashboardStatsHandler(config) {
|
|
|
3821
4246
|
repo("form_submissions")?.count() ?? 0,
|
|
3822
4247
|
repo("users")?.count({ where: { deleted: false } }) ?? 0,
|
|
3823
4248
|
repo("blogs")?.count({ where: { deleted: false } }) ?? 0,
|
|
3824
|
-
repo("contacts")?.count({ where: { createdAt: (0,
|
|
3825
|
-
repo("form_submissions")?.count({ where: { createdAt: (0,
|
|
4249
|
+
repo("contacts")?.count({ where: { createdAt: (0, import_typeorm6.MoreThanOrEqual)(sevenDaysAgo) } }) ?? 0,
|
|
4250
|
+
repo("form_submissions")?.count({ where: { createdAt: (0, import_typeorm6.MoreThanOrEqual)(sevenDaysAgo) } }) ?? 0,
|
|
3826
4251
|
repo("contacts")?.createQueryBuilder("c").select("COALESCE(NULLIF(TRIM(c.type), ''), 'unknown')", "type").addSelect("COUNT(*)", "count").where("c.deleted = :deleted", { deleted: false }).groupBy("COALESCE(NULLIF(TRIM(c.type), ''), 'unknown')").getRawMany() ?? []
|
|
3827
4252
|
]);
|
|
3828
4253
|
return json({
|
|
@@ -3871,19 +4296,19 @@ function createEcommerceAnalyticsHandler(config) {
|
|
|
3871
4296
|
const productRepo = dataSource.getRepository(entityMap.products);
|
|
3872
4297
|
const [salesOrders, returnOrders, replacementOrders, payments, products] = await Promise.all([
|
|
3873
4298
|
orderRepo.find({
|
|
3874
|
-
where: { deleted: false, createdAt: (0,
|
|
4299
|
+
where: { deleted: false, createdAt: (0, import_typeorm6.MoreThanOrEqual)(start), orderKind: "sale", status: (0, import_typeorm6.In)(["confirmed", "processing", "completed"]) },
|
|
3875
4300
|
select: ["id", "contactId", "createdAt", "subtotal", "discount", "tax", "total", "status"]
|
|
3876
4301
|
}),
|
|
3877
4302
|
orderRepo.find({
|
|
3878
|
-
where: { deleted: false, createdAt: (0,
|
|
4303
|
+
where: { deleted: false, createdAt: (0, import_typeorm6.MoreThanOrEqual)(start), orderKind: "return" },
|
|
3879
4304
|
select: ["id", "createdAt", "total"]
|
|
3880
4305
|
}),
|
|
3881
4306
|
orderRepo.find({
|
|
3882
|
-
where: { deleted: false, createdAt: (0,
|
|
4307
|
+
where: { deleted: false, createdAt: (0, import_typeorm6.MoreThanOrEqual)(start), orderKind: "replacement" },
|
|
3883
4308
|
select: ["id", "createdAt", "total"]
|
|
3884
4309
|
}),
|
|
3885
4310
|
paymentRepo.find({
|
|
3886
|
-
where: { deleted: false, createdAt: (0,
|
|
4311
|
+
where: { deleted: false, createdAt: (0, import_typeorm6.MoreThanOrEqual)(start) },
|
|
3887
4312
|
select: ["id", "status", "method", "amount", "createdAt"]
|
|
3888
4313
|
}),
|
|
3889
4314
|
productRepo.find({
|
|
@@ -3893,7 +4318,7 @@ function createEcommerceAnalyticsHandler(config) {
|
|
|
3893
4318
|
]);
|
|
3894
4319
|
const saleOrderIds = salesOrders.map((o) => o.id);
|
|
3895
4320
|
const orderItems = saleOrderIds.length ? await itemRepo.find({
|
|
3896
|
-
where: { orderId: (0,
|
|
4321
|
+
where: { orderId: (0, import_typeorm6.In)(saleOrderIds) },
|
|
3897
4322
|
select: ["id", "orderId", "productId", "quantity", "total"]
|
|
3898
4323
|
}) : [];
|
|
3899
4324
|
const grossSales = salesOrders.reduce((sum, o) => sum + toNum(o.subtotal), 0);
|
|
@@ -4581,8 +5006,8 @@ function createUsersApiHandlers(config) {
|
|
|
4581
5006
|
const sortOrder = url.searchParams.get("sortOrder") === "desc" ? "DESC" : "ASC";
|
|
4582
5007
|
const search = url.searchParams.get("search");
|
|
4583
5008
|
const where = search ? [
|
|
4584
|
-
{ name: (0,
|
|
4585
|
-
{ email: (0,
|
|
5009
|
+
{ name: (0, import_typeorm6.ILike)(`%${search}%`), deleted: false },
|
|
5010
|
+
{ email: (0, import_typeorm6.ILike)(`%${search}%`), deleted: false }
|
|
4586
5011
|
] : { deleted: false };
|
|
4587
5012
|
const [data, total] = await userRepo().findAndCount({
|
|
4588
5013
|
skip,
|
|
@@ -4880,9 +5305,24 @@ function createSettingsApiHandlers(config) {
|
|
|
4880
5305
|
}
|
|
4881
5306
|
var KB_CHUNK_LIMIT = 10;
|
|
4882
5307
|
var KB_CONTEXT_MAX_CHARS = 4e3;
|
|
5308
|
+
var RAG_LOG = "[rag-context]";
|
|
4883
5309
|
function getQueryTerms(message) {
|
|
4884
5310
|
return message.replace(/[^\w\s]/g, " ").split(/\s+/).filter((w) => w.length > 2).slice(0, 6);
|
|
4885
5311
|
}
|
|
5312
|
+
function normalizeChatModeSetting(raw) {
|
|
5313
|
+
if (raw === "external" || raw === "llm") return raw;
|
|
5314
|
+
return "whatsapp";
|
|
5315
|
+
}
|
|
5316
|
+
async function loadLlmSettingsMap(dataSource, entityMap) {
|
|
5317
|
+
if (!entityMap.configs) return {};
|
|
5318
|
+
const repo = dataSource.getRepository(entityMap.configs);
|
|
5319
|
+
const rows = await repo.find({ where: { settings: "llm", deleted: false } });
|
|
5320
|
+
const out = {};
|
|
5321
|
+
for (const row of rows) {
|
|
5322
|
+
out[row.key] = row.value;
|
|
5323
|
+
}
|
|
5324
|
+
return out;
|
|
5325
|
+
}
|
|
4886
5326
|
function createChatHandlers(config) {
|
|
4887
5327
|
const { dataSource, entityMap, json, getCms } = config;
|
|
4888
5328
|
const contactRepo = () => dataSource.getRepository(entityMap.contacts);
|
|
@@ -4890,6 +5330,26 @@ function createChatHandlers(config) {
|
|
|
4890
5330
|
const msgRepo = () => dataSource.getRepository(entityMap.chat_messages);
|
|
4891
5331
|
const chunkRepo = () => dataSource.getRepository(entityMap.knowledge_base_chunks);
|
|
4892
5332
|
return {
|
|
5333
|
+
async publicConfig(_req) {
|
|
5334
|
+
try {
|
|
5335
|
+
const map = await loadLlmSettingsMap(dataSource, entityMap);
|
|
5336
|
+
const mode = normalizeChatModeSetting(map.chatMode);
|
|
5337
|
+
const body = {
|
|
5338
|
+
enabled: map.enabled !== "false",
|
|
5339
|
+
chatMode: mode,
|
|
5340
|
+
agentSlug: mode === "llm" ? (map.attachedAgentSlug ?? "").trim() : "",
|
|
5341
|
+
botName: map.botName ?? "",
|
|
5342
|
+
icon: map.icon ?? "",
|
|
5343
|
+
iconImageUrl: map.iconImageUrl ?? "",
|
|
5344
|
+
iconBackgroundColor: map.iconBackgroundColor ?? "#6366f1",
|
|
5345
|
+
headerColor: map.headerColor ?? "#6366f1",
|
|
5346
|
+
whatsappPhone: map.whatsappPhone ?? ""
|
|
5347
|
+
};
|
|
5348
|
+
return json(body);
|
|
5349
|
+
} catch {
|
|
5350
|
+
return json({ error: "Failed to load chat config" }, { status: 500 });
|
|
5351
|
+
}
|
|
5352
|
+
},
|
|
4893
5353
|
async identify(req) {
|
|
4894
5354
|
try {
|
|
4895
5355
|
const body = await req.json();
|
|
@@ -4937,20 +5397,78 @@ function createChatHandlers(config) {
|
|
|
4937
5397
|
relations: ["messages"]
|
|
4938
5398
|
});
|
|
4939
5399
|
if (!conv) return json({ error: "Conversation not found" }, { status: 404 });
|
|
4940
|
-
const msgRepoInst = msgRepo();
|
|
4941
|
-
await msgRepoInst.save(msgRepoInst.create({ conversationId, role: "user", content: message }));
|
|
4942
5400
|
const cms = await getCms();
|
|
4943
5401
|
const llm = cms.getPlugin("llm");
|
|
4944
5402
|
if (!llm?.chat) return json({ error: "LLM not configured" }, { status: 503 });
|
|
5403
|
+
const llmSettings = await loadLlmSettingsMap(dataSource, entityMap);
|
|
5404
|
+
const supportMode = normalizeChatModeSetting(llmSettings.chatMode);
|
|
5405
|
+
let effectiveSlug = (body?.agentSlug ?? "").trim();
|
|
5406
|
+
if (!effectiveSlug && supportMode === "llm" && entityMap.llm_agents) {
|
|
5407
|
+
effectiveSlug = (llmSettings.attachedAgentSlug ?? "").trim();
|
|
5408
|
+
}
|
|
5409
|
+
let agentRow = null;
|
|
5410
|
+
if (effectiveSlug) {
|
|
5411
|
+
if (!entityMap.llm_agents) {
|
|
5412
|
+
return json({ error: "LLM agents are not configured on this deployment" }, { status: 400 });
|
|
5413
|
+
}
|
|
5414
|
+
const agentRepo = dataSource.getRepository(
|
|
5415
|
+
entityMap.llm_agents
|
|
5416
|
+
);
|
|
5417
|
+
agentRow = await agentRepo.findOne({
|
|
5418
|
+
where: { slug: effectiveSlug, deleted: false, enabled: true }
|
|
5419
|
+
});
|
|
5420
|
+
if (!agentRow && (body?.agentSlug ?? "").trim()) {
|
|
5421
|
+
return json({ error: "Agent not found or disabled", agentSlug: effectiveSlug }, { status: 404 });
|
|
5422
|
+
}
|
|
5423
|
+
}
|
|
5424
|
+
console.info(RAG_LOG, "step 1 | resolve agent", {
|
|
5425
|
+
agentSlug: effectiveSlug || "(none)",
|
|
5426
|
+
agentFound: !!agentRow,
|
|
5427
|
+
agentId: agentRow?.id ?? null
|
|
5428
|
+
});
|
|
5429
|
+
const parsedValidation = agentRow ? parseLlmAgentValidationRules(agentRow.validationRules) : { structured: {}, guardrailsForPrompt: null };
|
|
5430
|
+
if (agentRow) {
|
|
5431
|
+
const v = validateUserMessageAgainstStructuredRules(message, parsedValidation.structured);
|
|
5432
|
+
if (!v.ok) return json({ error: v.error, reason: "validation_failed" }, { status: 400 });
|
|
5433
|
+
}
|
|
5434
|
+
let kbDocumentScope;
|
|
5435
|
+
const Junction = entityMap.llm_agent_knowledge_documents;
|
|
5436
|
+
if (agentRow && Junction) {
|
|
5437
|
+
const linkRepo = dataSource.getRepository(Junction);
|
|
5438
|
+
const links = await linkRepo.find({ where: { agentId: agentRow.id } });
|
|
5439
|
+
const ids = [...new Set(links.map((l) => l.documentId))];
|
|
5440
|
+
if (ids.length > 0) kbDocumentScope = ids;
|
|
5441
|
+
}
|
|
5442
|
+
console.info(RAG_LOG, "step 2 | knowledge scope", {
|
|
5443
|
+
scopedDocumentIds: kbDocumentScope ?? "(all documents)",
|
|
5444
|
+
documentCount: kbDocumentScope?.length ?? "all"
|
|
5445
|
+
});
|
|
5446
|
+
const msgRepoInst = msgRepo();
|
|
5447
|
+
await msgRepoInst.save(msgRepoInst.create({ conversationId, role: "user", content: message }));
|
|
4945
5448
|
let contextParts = [];
|
|
5449
|
+
console.info(RAG_LOG, "step 3 | embed user query", {
|
|
5450
|
+
messageChars: message.length,
|
|
5451
|
+
embedAvailable: !!llm.embed
|
|
5452
|
+
});
|
|
4946
5453
|
const queryEmbedding = llm.embed ? await llm.embed(message) : null;
|
|
5454
|
+
console.info(RAG_LOG, "step 4 | query embedding result", {
|
|
5455
|
+
dimensions: queryEmbedding?.length ?? 0,
|
|
5456
|
+
hasEmbedding: !!(queryEmbedding && queryEmbedding.length > 0)
|
|
5457
|
+
});
|
|
4947
5458
|
if (queryEmbedding && queryEmbedding.length > 0) {
|
|
4948
5459
|
const vectorStr = "[" + queryEmbedding.join(",") + "]";
|
|
4949
5460
|
try {
|
|
4950
|
-
const rows = await dataSource.query(
|
|
5461
|
+
const rows = kbDocumentScope?.length ? await dataSource.query(
|
|
5462
|
+
`SELECT id, content FROM knowledge_base_chunks WHERE embedding IS NOT NULL AND "documentId" = ANY($3::int[]) ORDER BY embedding <=> $1::vector LIMIT $2`,
|
|
5463
|
+
[vectorStr, KB_CHUNK_LIMIT, kbDocumentScope]
|
|
5464
|
+
) : await dataSource.query(
|
|
4951
5465
|
`SELECT id, content FROM knowledge_base_chunks WHERE embedding IS NOT NULL ORDER BY embedding <=> $1::vector LIMIT $2`,
|
|
4952
5466
|
[vectorStr, KB_CHUNK_LIMIT]
|
|
4953
5467
|
);
|
|
5468
|
+
console.info(RAG_LOG, "step 5 | vector search results", {
|
|
5469
|
+
rowsReturned: rows.length,
|
|
5470
|
+
chunkIds: rows.map((r) => r.id)
|
|
5471
|
+
});
|
|
4954
5472
|
let totalLen = 0;
|
|
4955
5473
|
for (const r of rows) {
|
|
4956
5474
|
const text = (r.content ?? "").trim();
|
|
@@ -4958,13 +5476,24 @@ function createChatHandlers(config) {
|
|
|
4958
5476
|
contextParts.push(text);
|
|
4959
5477
|
totalLen += text.length;
|
|
4960
5478
|
}
|
|
4961
|
-
|
|
5479
|
+
console.info(RAG_LOG, "step 5a | vector context selected", {
|
|
5480
|
+
chunksUsed: contextParts.length,
|
|
5481
|
+
totalChars: totalLen
|
|
5482
|
+
});
|
|
5483
|
+
} catch (vecErr) {
|
|
5484
|
+
console.warn(RAG_LOG, "step 5 | vector search failed; falling back to keyword", {
|
|
5485
|
+
err: vecErr instanceof Error ? vecErr.message : String(vecErr)
|
|
5486
|
+
});
|
|
4962
5487
|
}
|
|
4963
5488
|
}
|
|
4964
5489
|
if (contextParts.length === 0) {
|
|
4965
5490
|
const terms = getQueryTerms(message);
|
|
5491
|
+
console.info(RAG_LOG, "step 6 | keyword fallback", {
|
|
5492
|
+
reason: !(queryEmbedding && queryEmbedding.length > 0) ? "no embedding" : "vector search returned nothing",
|
|
5493
|
+
searchTerms: terms
|
|
5494
|
+
});
|
|
4966
5495
|
if (terms.length > 0) {
|
|
4967
|
-
const conditions = terms.map((t) => ({ content: (0,
|
|
5496
|
+
const conditions = kbDocumentScope?.length ? terms.map((t) => ({ content: (0, import_typeorm6.ILike)(`%${t}%`), documentId: (0, import_typeorm6.In)(kbDocumentScope) })) : terms.map((t) => ({ content: (0, import_typeorm6.ILike)(`%${t}%`) }));
|
|
4968
5497
|
const chunks = await chunkRepo().find({
|
|
4969
5498
|
where: conditions,
|
|
4970
5499
|
take: KB_CHUNK_LIMIT,
|
|
@@ -4979,19 +5508,66 @@ function createChatHandlers(config) {
|
|
|
4979
5508
|
contextParts.push(text);
|
|
4980
5509
|
totalLen += text.length;
|
|
4981
5510
|
}
|
|
5511
|
+
console.info(RAG_LOG, "step 6a | keyword results", {
|
|
5512
|
+
chunksFound: chunks.length,
|
|
5513
|
+
chunksUsed: contextParts.length,
|
|
5514
|
+
totalChars: totalLen
|
|
5515
|
+
});
|
|
4982
5516
|
}
|
|
4983
5517
|
}
|
|
4984
|
-
const
|
|
4985
|
-
const
|
|
5518
|
+
const historyRaw = (conv.messages ?? []).sort((a, b) => new Date(a.createdAt ?? 0).getTime() - new Date(b.createdAt ?? 0).getTime()).map((m) => ({ role: m.role, content: m.content }));
|
|
5519
|
+
const history = historyBeforeCurrentUser(historyRaw, message);
|
|
5520
|
+
let content;
|
|
5521
|
+
const ragContext = contextParts.length > 0 ? contextParts.join("\n\n") : void 0;
|
|
5522
|
+
console.info(RAG_LOG, "step 7 | final context", {
|
|
5523
|
+
method: contextParts.length > 0 ? "rag" : "none",
|
|
5524
|
+
contextChunks: contextParts.length,
|
|
5525
|
+
contextChars: ragContext?.length ?? 0,
|
|
5526
|
+
contextPreview: ragContext ? ragContext.slice(0, 200) + (ragContext.length > 200 ? "\u2026" : "") : "(no context)"
|
|
5527
|
+
});
|
|
5528
|
+
if (agentRow && llm.chatAgent) {
|
|
5529
|
+
const fromAgent = llmAgentToChatAgentOptions(agentRow);
|
|
5530
|
+
const systemPrompt = mergeGuardrailsIntoSystemPrompt(
|
|
5531
|
+
fromAgent.systemPrompt,
|
|
5532
|
+
parsedValidation.guardrailsForPrompt
|
|
5533
|
+
);
|
|
5534
|
+
const res = await llm.chatAgent({
|
|
5535
|
+
...fromAgent,
|
|
5536
|
+
systemPrompt: systemPrompt || void 0,
|
|
5537
|
+
context: ragContext,
|
|
5538
|
+
history,
|
|
5539
|
+
userPrompt: message
|
|
5540
|
+
});
|
|
5541
|
+
content = res.content;
|
|
5542
|
+
} else {
|
|
5543
|
+
const ragSystem = contextParts.length > 0 ? `Use the following context about the company and its products to answer. If the answer is not in the context, say so.
|
|
4986
5544
|
|
|
4987
5545
|
Context:
|
|
4988
|
-
${contextParts.join("\n\n")}` : "
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
5546
|
+
${contextParts.join("\n\n")}` : "";
|
|
5547
|
+
const defaultSystem = "You are a helpful assistant for the company. If you do not have specific information, say so.";
|
|
5548
|
+
let systemContent;
|
|
5549
|
+
if (agentRow) {
|
|
5550
|
+
const base = agentRow.systemInstruction?.trim() || "";
|
|
5551
|
+
systemContent = mergeGuardrailsIntoSystemPrompt(
|
|
5552
|
+
[base, ragSystem].filter(Boolean).join("\n\n") || defaultSystem,
|
|
5553
|
+
parsedValidation.guardrailsForPrompt
|
|
5554
|
+
);
|
|
5555
|
+
} else {
|
|
5556
|
+
systemContent = ragSystem || defaultSystem;
|
|
5557
|
+
}
|
|
5558
|
+
const messages = [
|
|
5559
|
+
{ role: "system", content: systemContent },
|
|
5560
|
+
...history,
|
|
5561
|
+
{ role: "user", content: message }
|
|
5562
|
+
];
|
|
5563
|
+
const chatOpts = agentRow ? {
|
|
5564
|
+
model: agentRow.model ?? void 0,
|
|
5565
|
+
temperature: agentRow.temperature ?? void 0,
|
|
5566
|
+
max_tokens: agentRow.maxTokens ?? void 0
|
|
5567
|
+
} : {};
|
|
5568
|
+
const res = await llm.chat(messages, chatOpts);
|
|
5569
|
+
content = res.content;
|
|
5570
|
+
}
|
|
4995
5571
|
await msgRepoInst.save(msgRepoInst.create({ conversationId, role: "assistant", content }));
|
|
4996
5572
|
return json({ content });
|
|
4997
5573
|
} catch (err) {
|
|
@@ -5050,13 +5626,13 @@ async function loadPublicThemeSettings(config) {
|
|
|
5050
5626
|
}
|
|
5051
5627
|
|
|
5052
5628
|
// src/entities/user.entity.ts
|
|
5053
|
-
var
|
|
5629
|
+
var import_typeorm9 = require("typeorm");
|
|
5054
5630
|
|
|
5055
5631
|
// src/entities/user-group.entity.ts
|
|
5056
|
-
var
|
|
5632
|
+
var import_typeorm8 = require("typeorm");
|
|
5057
5633
|
|
|
5058
5634
|
// src/entities/permission.entity.ts
|
|
5059
|
-
var
|
|
5635
|
+
var import_typeorm7 = require("typeorm");
|
|
5060
5636
|
var Permission = class {
|
|
5061
5637
|
id;
|
|
5062
5638
|
groupId;
|
|
@@ -5075,53 +5651,53 @@ var Permission = class {
|
|
|
5075
5651
|
group;
|
|
5076
5652
|
};
|
|
5077
5653
|
__decorateClass([
|
|
5078
|
-
(0,
|
|
5654
|
+
(0, import_typeorm7.PrimaryGeneratedColumn)()
|
|
5079
5655
|
], Permission.prototype, "id", 2);
|
|
5080
5656
|
__decorateClass([
|
|
5081
|
-
(0,
|
|
5657
|
+
(0, import_typeorm7.Column)("int")
|
|
5082
5658
|
], Permission.prototype, "groupId", 2);
|
|
5083
5659
|
__decorateClass([
|
|
5084
|
-
(0,
|
|
5660
|
+
(0, import_typeorm7.Column)("varchar")
|
|
5085
5661
|
], Permission.prototype, "entity", 2);
|
|
5086
5662
|
__decorateClass([
|
|
5087
|
-
(0,
|
|
5663
|
+
(0, import_typeorm7.Column)("boolean", { default: false })
|
|
5088
5664
|
], Permission.prototype, "canCreate", 2);
|
|
5089
5665
|
__decorateClass([
|
|
5090
|
-
(0,
|
|
5666
|
+
(0, import_typeorm7.Column)("boolean", { default: false })
|
|
5091
5667
|
], Permission.prototype, "canRead", 2);
|
|
5092
5668
|
__decorateClass([
|
|
5093
|
-
(0,
|
|
5669
|
+
(0, import_typeorm7.Column)("boolean", { default: false })
|
|
5094
5670
|
], Permission.prototype, "canUpdate", 2);
|
|
5095
5671
|
__decorateClass([
|
|
5096
|
-
(0,
|
|
5672
|
+
(0, import_typeorm7.Column)("boolean", { default: false })
|
|
5097
5673
|
], Permission.prototype, "canDelete", 2);
|
|
5098
5674
|
__decorateClass([
|
|
5099
|
-
(0,
|
|
5675
|
+
(0, import_typeorm7.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5100
5676
|
], Permission.prototype, "createdAt", 2);
|
|
5101
5677
|
__decorateClass([
|
|
5102
|
-
(0,
|
|
5678
|
+
(0, import_typeorm7.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5103
5679
|
], Permission.prototype, "updatedAt", 2);
|
|
5104
5680
|
__decorateClass([
|
|
5105
|
-
(0,
|
|
5681
|
+
(0, import_typeorm7.Column)({ type: "timestamp", nullable: true })
|
|
5106
5682
|
], Permission.prototype, "deletedAt", 2);
|
|
5107
5683
|
__decorateClass([
|
|
5108
|
-
(0,
|
|
5684
|
+
(0, import_typeorm7.Column)("boolean", { default: false })
|
|
5109
5685
|
], Permission.prototype, "deleted", 2);
|
|
5110
5686
|
__decorateClass([
|
|
5111
|
-
(0,
|
|
5687
|
+
(0, import_typeorm7.Column)("int", { nullable: true })
|
|
5112
5688
|
], Permission.prototype, "createdBy", 2);
|
|
5113
5689
|
__decorateClass([
|
|
5114
|
-
(0,
|
|
5690
|
+
(0, import_typeorm7.Column)("int", { nullable: true })
|
|
5115
5691
|
], Permission.prototype, "updatedBy", 2);
|
|
5116
5692
|
__decorateClass([
|
|
5117
|
-
(0,
|
|
5693
|
+
(0, import_typeorm7.Column)("int", { nullable: true })
|
|
5118
5694
|
], Permission.prototype, "deletedBy", 2);
|
|
5119
5695
|
__decorateClass([
|
|
5120
|
-
(0,
|
|
5121
|
-
(0,
|
|
5696
|
+
(0, import_typeorm7.ManyToOne)(() => UserGroup, (g) => g.permissions, { onDelete: "CASCADE" }),
|
|
5697
|
+
(0, import_typeorm7.JoinColumn)({ name: "groupId" })
|
|
5122
5698
|
], Permission.prototype, "group", 2);
|
|
5123
5699
|
Permission = __decorateClass([
|
|
5124
|
-
(0,
|
|
5700
|
+
(0, import_typeorm7.Entity)("permissions")
|
|
5125
5701
|
], Permission);
|
|
5126
5702
|
|
|
5127
5703
|
// src/entities/user-group.entity.ts
|
|
@@ -5139,40 +5715,40 @@ var UserGroup = class {
|
|
|
5139
5715
|
users;
|
|
5140
5716
|
};
|
|
5141
5717
|
__decorateClass([
|
|
5142
|
-
(0,
|
|
5718
|
+
(0, import_typeorm8.PrimaryGeneratedColumn)()
|
|
5143
5719
|
], UserGroup.prototype, "id", 2);
|
|
5144
5720
|
__decorateClass([
|
|
5145
|
-
(0,
|
|
5721
|
+
(0, import_typeorm8.Column)("varchar", { unique: true })
|
|
5146
5722
|
], UserGroup.prototype, "name", 2);
|
|
5147
5723
|
__decorateClass([
|
|
5148
|
-
(0,
|
|
5724
|
+
(0, import_typeorm8.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5149
5725
|
], UserGroup.prototype, "createdAt", 2);
|
|
5150
5726
|
__decorateClass([
|
|
5151
|
-
(0,
|
|
5727
|
+
(0, import_typeorm8.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5152
5728
|
], UserGroup.prototype, "updatedAt", 2);
|
|
5153
5729
|
__decorateClass([
|
|
5154
|
-
(0,
|
|
5730
|
+
(0, import_typeorm8.Column)({ type: "timestamp", nullable: true })
|
|
5155
5731
|
], UserGroup.prototype, "deletedAt", 2);
|
|
5156
5732
|
__decorateClass([
|
|
5157
|
-
(0,
|
|
5733
|
+
(0, import_typeorm8.Column)("boolean", { default: false })
|
|
5158
5734
|
], UserGroup.prototype, "deleted", 2);
|
|
5159
5735
|
__decorateClass([
|
|
5160
|
-
(0,
|
|
5736
|
+
(0, import_typeorm8.Column)("int", { nullable: true })
|
|
5161
5737
|
], UserGroup.prototype, "createdBy", 2);
|
|
5162
5738
|
__decorateClass([
|
|
5163
|
-
(0,
|
|
5739
|
+
(0, import_typeorm8.Column)("int", { nullable: true })
|
|
5164
5740
|
], UserGroup.prototype, "updatedBy", 2);
|
|
5165
5741
|
__decorateClass([
|
|
5166
|
-
(0,
|
|
5742
|
+
(0, import_typeorm8.Column)("int", { nullable: true })
|
|
5167
5743
|
], UserGroup.prototype, "deletedBy", 2);
|
|
5168
5744
|
__decorateClass([
|
|
5169
|
-
(0,
|
|
5745
|
+
(0, import_typeorm8.OneToMany)(() => Permission, (p) => p.group)
|
|
5170
5746
|
], UserGroup.prototype, "permissions", 2);
|
|
5171
5747
|
__decorateClass([
|
|
5172
|
-
(0,
|
|
5748
|
+
(0, import_typeorm8.OneToMany)(() => User, (u) => u.group)
|
|
5173
5749
|
], UserGroup.prototype, "users", 2);
|
|
5174
5750
|
UserGroup = __decorateClass([
|
|
5175
|
-
(0,
|
|
5751
|
+
(0, import_typeorm8.Entity)("user_groups")
|
|
5176
5752
|
], UserGroup);
|
|
5177
5753
|
|
|
5178
5754
|
// src/entities/user.entity.ts
|
|
@@ -5197,66 +5773,66 @@ var User = class {
|
|
|
5197
5773
|
group;
|
|
5198
5774
|
};
|
|
5199
5775
|
__decorateClass([
|
|
5200
|
-
(0,
|
|
5776
|
+
(0, import_typeorm9.PrimaryGeneratedColumn)()
|
|
5201
5777
|
], User.prototype, "id", 2);
|
|
5202
5778
|
__decorateClass([
|
|
5203
|
-
(0,
|
|
5779
|
+
(0, import_typeorm9.Column)("varchar")
|
|
5204
5780
|
], User.prototype, "name", 2);
|
|
5205
5781
|
__decorateClass([
|
|
5206
|
-
(0,
|
|
5782
|
+
(0, import_typeorm9.Column)("varchar", { unique: true })
|
|
5207
5783
|
], User.prototype, "email", 2);
|
|
5208
5784
|
__decorateClass([
|
|
5209
|
-
(0,
|
|
5785
|
+
(0, import_typeorm9.Column)("varchar", { nullable: true })
|
|
5210
5786
|
], User.prototype, "phone", 2);
|
|
5211
5787
|
__decorateClass([
|
|
5212
|
-
(0,
|
|
5788
|
+
(0, import_typeorm9.Column)({ type: "timestamp", nullable: true })
|
|
5213
5789
|
], User.prototype, "phoneVerifiedAt", 2);
|
|
5214
5790
|
__decorateClass([
|
|
5215
|
-
(0,
|
|
5791
|
+
(0, import_typeorm9.Column)({ type: "timestamp", nullable: true })
|
|
5216
5792
|
], User.prototype, "emailVerifiedAt", 2);
|
|
5217
5793
|
__decorateClass([
|
|
5218
|
-
(0,
|
|
5794
|
+
(0, import_typeorm9.Column)("varchar", { nullable: true })
|
|
5219
5795
|
], User.prototype, "password", 2);
|
|
5220
5796
|
__decorateClass([
|
|
5221
|
-
(0,
|
|
5797
|
+
(0, import_typeorm9.Column)("boolean", { default: false })
|
|
5222
5798
|
], User.prototype, "blocked", 2);
|
|
5223
5799
|
__decorateClass([
|
|
5224
|
-
(0,
|
|
5800
|
+
(0, import_typeorm9.Column)("boolean", { default: false })
|
|
5225
5801
|
], User.prototype, "adminAccess", 2);
|
|
5226
5802
|
__decorateClass([
|
|
5227
|
-
(0,
|
|
5803
|
+
(0, import_typeorm9.Column)("int", { nullable: true })
|
|
5228
5804
|
], User.prototype, "groupId", 2);
|
|
5229
5805
|
__decorateClass([
|
|
5230
|
-
(0,
|
|
5806
|
+
(0, import_typeorm9.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5231
5807
|
], User.prototype, "createdAt", 2);
|
|
5232
5808
|
__decorateClass([
|
|
5233
|
-
(0,
|
|
5809
|
+
(0, import_typeorm9.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5234
5810
|
], User.prototype, "updatedAt", 2);
|
|
5235
5811
|
__decorateClass([
|
|
5236
|
-
(0,
|
|
5812
|
+
(0, import_typeorm9.Column)({ type: "timestamp", nullable: true })
|
|
5237
5813
|
], User.prototype, "deletedAt", 2);
|
|
5238
5814
|
__decorateClass([
|
|
5239
|
-
(0,
|
|
5815
|
+
(0, import_typeorm9.Column)("boolean", { default: false })
|
|
5240
5816
|
], User.prototype, "deleted", 2);
|
|
5241
5817
|
__decorateClass([
|
|
5242
|
-
(0,
|
|
5818
|
+
(0, import_typeorm9.Column)("int", { nullable: true })
|
|
5243
5819
|
], User.prototype, "createdBy", 2);
|
|
5244
5820
|
__decorateClass([
|
|
5245
|
-
(0,
|
|
5821
|
+
(0, import_typeorm9.Column)("int", { nullable: true })
|
|
5246
5822
|
], User.prototype, "updatedBy", 2);
|
|
5247
5823
|
__decorateClass([
|
|
5248
|
-
(0,
|
|
5824
|
+
(0, import_typeorm9.Column)("int", { nullable: true })
|
|
5249
5825
|
], User.prototype, "deletedBy", 2);
|
|
5250
5826
|
__decorateClass([
|
|
5251
|
-
(0,
|
|
5252
|
-
(0,
|
|
5827
|
+
(0, import_typeorm9.ManyToOne)(() => UserGroup, (g) => g.users, { onDelete: "SET NULL" }),
|
|
5828
|
+
(0, import_typeorm9.JoinColumn)({ name: "groupId" })
|
|
5253
5829
|
], User.prototype, "group", 2);
|
|
5254
5830
|
User = __decorateClass([
|
|
5255
|
-
(0,
|
|
5831
|
+
(0, import_typeorm9.Entity)("users")
|
|
5256
5832
|
], User);
|
|
5257
5833
|
|
|
5258
5834
|
// src/entities/otp-challenge.entity.ts
|
|
5259
|
-
var
|
|
5835
|
+
var import_typeorm10 = require("typeorm");
|
|
5260
5836
|
var OtpChallenge = class {
|
|
5261
5837
|
id;
|
|
5262
5838
|
purpose;
|
|
@@ -5269,39 +5845,39 @@ var OtpChallenge = class {
|
|
|
5269
5845
|
createdAt;
|
|
5270
5846
|
};
|
|
5271
5847
|
__decorateClass([
|
|
5272
|
-
(0,
|
|
5848
|
+
(0, import_typeorm10.PrimaryGeneratedColumn)()
|
|
5273
5849
|
], OtpChallenge.prototype, "id", 2);
|
|
5274
5850
|
__decorateClass([
|
|
5275
|
-
(0,
|
|
5851
|
+
(0, import_typeorm10.Column)("varchar")
|
|
5276
5852
|
], OtpChallenge.prototype, "purpose", 2);
|
|
5277
5853
|
__decorateClass([
|
|
5278
|
-
(0,
|
|
5854
|
+
(0, import_typeorm10.Column)("varchar")
|
|
5279
5855
|
], OtpChallenge.prototype, "channel", 2);
|
|
5280
5856
|
__decorateClass([
|
|
5281
|
-
(0,
|
|
5857
|
+
(0, import_typeorm10.Column)("varchar")
|
|
5282
5858
|
], OtpChallenge.prototype, "identifier", 2);
|
|
5283
5859
|
__decorateClass([
|
|
5284
|
-
(0,
|
|
5860
|
+
(0, import_typeorm10.Column)("varchar")
|
|
5285
5861
|
], OtpChallenge.prototype, "codeHash", 2);
|
|
5286
5862
|
__decorateClass([
|
|
5287
|
-
(0,
|
|
5863
|
+
(0, import_typeorm10.Column)({ type: "timestamp" })
|
|
5288
5864
|
], OtpChallenge.prototype, "expiresAt", 2);
|
|
5289
5865
|
__decorateClass([
|
|
5290
|
-
(0,
|
|
5866
|
+
(0, import_typeorm10.Column)("int", { default: 0 })
|
|
5291
5867
|
], OtpChallenge.prototype, "attempts", 2);
|
|
5292
5868
|
__decorateClass([
|
|
5293
|
-
(0,
|
|
5869
|
+
(0, import_typeorm10.Column)({ type: "timestamp", nullable: true })
|
|
5294
5870
|
], OtpChallenge.prototype, "consumedAt", 2);
|
|
5295
5871
|
__decorateClass([
|
|
5296
|
-
(0,
|
|
5872
|
+
(0, import_typeorm10.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5297
5873
|
], OtpChallenge.prototype, "createdAt", 2);
|
|
5298
5874
|
OtpChallenge = __decorateClass([
|
|
5299
|
-
(0,
|
|
5300
|
-
(0,
|
|
5875
|
+
(0, import_typeorm10.Entity)("otp_challenges"),
|
|
5876
|
+
(0, import_typeorm10.Index)(["purpose", "identifier"])
|
|
5301
5877
|
], OtpChallenge);
|
|
5302
5878
|
|
|
5303
5879
|
// src/entities/password-reset-token.entity.ts
|
|
5304
|
-
var
|
|
5880
|
+
var import_typeorm11 = require("typeorm");
|
|
5305
5881
|
var PasswordResetToken = class {
|
|
5306
5882
|
id;
|
|
5307
5883
|
email;
|
|
@@ -5310,29 +5886,29 @@ var PasswordResetToken = class {
|
|
|
5310
5886
|
createdAt;
|
|
5311
5887
|
};
|
|
5312
5888
|
__decorateClass([
|
|
5313
|
-
(0,
|
|
5889
|
+
(0, import_typeorm11.PrimaryGeneratedColumn)()
|
|
5314
5890
|
], PasswordResetToken.prototype, "id", 2);
|
|
5315
5891
|
__decorateClass([
|
|
5316
|
-
(0,
|
|
5892
|
+
(0, import_typeorm11.Column)("varchar")
|
|
5317
5893
|
], PasswordResetToken.prototype, "email", 2);
|
|
5318
5894
|
__decorateClass([
|
|
5319
|
-
(0,
|
|
5895
|
+
(0, import_typeorm11.Column)("varchar", { unique: true })
|
|
5320
5896
|
], PasswordResetToken.prototype, "token", 2);
|
|
5321
5897
|
__decorateClass([
|
|
5322
|
-
(0,
|
|
5898
|
+
(0, import_typeorm11.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5323
5899
|
], PasswordResetToken.prototype, "expiresAt", 2);
|
|
5324
5900
|
__decorateClass([
|
|
5325
|
-
(0,
|
|
5901
|
+
(0, import_typeorm11.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5326
5902
|
], PasswordResetToken.prototype, "createdAt", 2);
|
|
5327
5903
|
PasswordResetToken = __decorateClass([
|
|
5328
|
-
(0,
|
|
5904
|
+
(0, import_typeorm11.Entity)("password_reset_tokens")
|
|
5329
5905
|
], PasswordResetToken);
|
|
5330
5906
|
|
|
5331
5907
|
// src/entities/blog.entity.ts
|
|
5332
|
-
var
|
|
5908
|
+
var import_typeorm16 = require("typeorm");
|
|
5333
5909
|
|
|
5334
5910
|
// src/entities/category.entity.ts
|
|
5335
|
-
var
|
|
5911
|
+
var import_typeorm12 = require("typeorm");
|
|
5336
5912
|
var Category = class {
|
|
5337
5913
|
id;
|
|
5338
5914
|
name;
|
|
@@ -5346,41 +5922,41 @@ var Category = class {
|
|
|
5346
5922
|
blogs;
|
|
5347
5923
|
};
|
|
5348
5924
|
__decorateClass([
|
|
5349
|
-
(0,
|
|
5925
|
+
(0, import_typeorm12.PrimaryGeneratedColumn)()
|
|
5350
5926
|
], Category.prototype, "id", 2);
|
|
5351
5927
|
__decorateClass([
|
|
5352
|
-
(0,
|
|
5928
|
+
(0, import_typeorm12.Column)("varchar", { unique: true })
|
|
5353
5929
|
], Category.prototype, "name", 2);
|
|
5354
5930
|
__decorateClass([
|
|
5355
|
-
(0,
|
|
5931
|
+
(0, import_typeorm12.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5356
5932
|
], Category.prototype, "createdAt", 2);
|
|
5357
5933
|
__decorateClass([
|
|
5358
|
-
(0,
|
|
5934
|
+
(0, import_typeorm12.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5359
5935
|
], Category.prototype, "updatedAt", 2);
|
|
5360
5936
|
__decorateClass([
|
|
5361
|
-
(0,
|
|
5937
|
+
(0, import_typeorm12.Column)({ type: "timestamp", nullable: true })
|
|
5362
5938
|
], Category.prototype, "deletedAt", 2);
|
|
5363
5939
|
__decorateClass([
|
|
5364
|
-
(0,
|
|
5940
|
+
(0, import_typeorm12.Column)("boolean", { default: false })
|
|
5365
5941
|
], Category.prototype, "deleted", 2);
|
|
5366
5942
|
__decorateClass([
|
|
5367
|
-
(0,
|
|
5943
|
+
(0, import_typeorm12.Column)("int", { nullable: true })
|
|
5368
5944
|
], Category.prototype, "createdBy", 2);
|
|
5369
5945
|
__decorateClass([
|
|
5370
|
-
(0,
|
|
5946
|
+
(0, import_typeorm12.Column)("int", { nullable: true })
|
|
5371
5947
|
], Category.prototype, "updatedBy", 2);
|
|
5372
5948
|
__decorateClass([
|
|
5373
|
-
(0,
|
|
5949
|
+
(0, import_typeorm12.Column)("int", { nullable: true })
|
|
5374
5950
|
], Category.prototype, "deletedBy", 2);
|
|
5375
5951
|
__decorateClass([
|
|
5376
|
-
(0,
|
|
5952
|
+
(0, import_typeorm12.OneToMany)("Blog", "category")
|
|
5377
5953
|
], Category.prototype, "blogs", 2);
|
|
5378
5954
|
Category = __decorateClass([
|
|
5379
|
-
(0,
|
|
5955
|
+
(0, import_typeorm12.Entity)("categories")
|
|
5380
5956
|
], Category);
|
|
5381
5957
|
|
|
5382
5958
|
// src/entities/seo.entity.ts
|
|
5383
|
-
var
|
|
5959
|
+
var import_typeorm13 = require("typeorm");
|
|
5384
5960
|
var Seo = class {
|
|
5385
5961
|
id;
|
|
5386
5962
|
title;
|
|
@@ -5400,59 +5976,59 @@ var Seo = class {
|
|
|
5400
5976
|
blogs;
|
|
5401
5977
|
};
|
|
5402
5978
|
__decorateClass([
|
|
5403
|
-
(0,
|
|
5979
|
+
(0, import_typeorm13.PrimaryGeneratedColumn)()
|
|
5404
5980
|
], Seo.prototype, "id", 2);
|
|
5405
5981
|
__decorateClass([
|
|
5406
|
-
(0,
|
|
5982
|
+
(0, import_typeorm13.Column)("varchar", { nullable: true })
|
|
5407
5983
|
], Seo.prototype, "title", 2);
|
|
5408
5984
|
__decorateClass([
|
|
5409
|
-
(0,
|
|
5985
|
+
(0, import_typeorm13.Column)("varchar", { nullable: true })
|
|
5410
5986
|
], Seo.prototype, "description", 2);
|
|
5411
5987
|
__decorateClass([
|
|
5412
|
-
(0,
|
|
5988
|
+
(0, import_typeorm13.Column)("varchar", { nullable: true })
|
|
5413
5989
|
], Seo.prototype, "keywords", 2);
|
|
5414
5990
|
__decorateClass([
|
|
5415
|
-
(0,
|
|
5991
|
+
(0, import_typeorm13.Column)("varchar", { nullable: true })
|
|
5416
5992
|
], Seo.prototype, "ogTitle", 2);
|
|
5417
5993
|
__decorateClass([
|
|
5418
|
-
(0,
|
|
5994
|
+
(0, import_typeorm13.Column)("varchar", { nullable: true })
|
|
5419
5995
|
], Seo.prototype, "ogDescription", 2);
|
|
5420
5996
|
__decorateClass([
|
|
5421
|
-
(0,
|
|
5997
|
+
(0, import_typeorm13.Column)("varchar", { nullable: true })
|
|
5422
5998
|
], Seo.prototype, "ogImage", 2);
|
|
5423
5999
|
__decorateClass([
|
|
5424
|
-
(0,
|
|
6000
|
+
(0, import_typeorm13.Column)("varchar", { unique: true })
|
|
5425
6001
|
], Seo.prototype, "slug", 2);
|
|
5426
6002
|
__decorateClass([
|
|
5427
|
-
(0,
|
|
6003
|
+
(0, import_typeorm13.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5428
6004
|
], Seo.prototype, "createdAt", 2);
|
|
5429
6005
|
__decorateClass([
|
|
5430
|
-
(0,
|
|
6006
|
+
(0, import_typeorm13.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5431
6007
|
], Seo.prototype, "updatedAt", 2);
|
|
5432
6008
|
__decorateClass([
|
|
5433
|
-
(0,
|
|
6009
|
+
(0, import_typeorm13.Column)({ type: "timestamp", nullable: true })
|
|
5434
6010
|
], Seo.prototype, "deletedAt", 2);
|
|
5435
6011
|
__decorateClass([
|
|
5436
|
-
(0,
|
|
6012
|
+
(0, import_typeorm13.Column)("boolean", { default: false })
|
|
5437
6013
|
], Seo.prototype, "deleted", 2);
|
|
5438
6014
|
__decorateClass([
|
|
5439
|
-
(0,
|
|
6015
|
+
(0, import_typeorm13.Column)("int", { nullable: true })
|
|
5440
6016
|
], Seo.prototype, "createdBy", 2);
|
|
5441
6017
|
__decorateClass([
|
|
5442
|
-
(0,
|
|
6018
|
+
(0, import_typeorm13.Column)("int", { nullable: true })
|
|
5443
6019
|
], Seo.prototype, "updatedBy", 2);
|
|
5444
6020
|
__decorateClass([
|
|
5445
|
-
(0,
|
|
6021
|
+
(0, import_typeorm13.Column)("int", { nullable: true })
|
|
5446
6022
|
], Seo.prototype, "deletedBy", 2);
|
|
5447
6023
|
__decorateClass([
|
|
5448
|
-
(0,
|
|
6024
|
+
(0, import_typeorm13.OneToMany)(() => Blog, (blog) => blog.seo)
|
|
5449
6025
|
], Seo.prototype, "blogs", 2);
|
|
5450
6026
|
Seo = __decorateClass([
|
|
5451
|
-
(0,
|
|
6027
|
+
(0, import_typeorm13.Entity)("seos")
|
|
5452
6028
|
], Seo);
|
|
5453
6029
|
|
|
5454
6030
|
// src/entities/comment.entity.ts
|
|
5455
|
-
var
|
|
6031
|
+
var import_typeorm14 = require("typeorm");
|
|
5456
6032
|
var Comment = class {
|
|
5457
6033
|
id;
|
|
5458
6034
|
content;
|
|
@@ -5469,52 +6045,52 @@ var Comment = class {
|
|
|
5469
6045
|
blog;
|
|
5470
6046
|
};
|
|
5471
6047
|
__decorateClass([
|
|
5472
|
-
(0,
|
|
6048
|
+
(0, import_typeorm14.PrimaryGeneratedColumn)()
|
|
5473
6049
|
], Comment.prototype, "id", 2);
|
|
5474
6050
|
__decorateClass([
|
|
5475
|
-
(0,
|
|
6051
|
+
(0, import_typeorm14.Column)("text")
|
|
5476
6052
|
], Comment.prototype, "content", 2);
|
|
5477
6053
|
__decorateClass([
|
|
5478
|
-
(0,
|
|
6054
|
+
(0, import_typeorm14.Column)("int")
|
|
5479
6055
|
], Comment.prototype, "blogId", 2);
|
|
5480
6056
|
__decorateClass([
|
|
5481
|
-
(0,
|
|
6057
|
+
(0, import_typeorm14.Column)("int")
|
|
5482
6058
|
], Comment.prototype, "authorId", 2);
|
|
5483
6059
|
__decorateClass([
|
|
5484
|
-
(0,
|
|
6060
|
+
(0, import_typeorm14.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5485
6061
|
], Comment.prototype, "createdAt", 2);
|
|
5486
6062
|
__decorateClass([
|
|
5487
|
-
(0,
|
|
6063
|
+
(0, import_typeorm14.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5488
6064
|
], Comment.prototype, "updatedAt", 2);
|
|
5489
6065
|
__decorateClass([
|
|
5490
|
-
(0,
|
|
6066
|
+
(0, import_typeorm14.Column)({ type: "timestamp", nullable: true })
|
|
5491
6067
|
], Comment.prototype, "deletedAt", 2);
|
|
5492
6068
|
__decorateClass([
|
|
5493
|
-
(0,
|
|
6069
|
+
(0, import_typeorm14.Column)("boolean", { default: false })
|
|
5494
6070
|
], Comment.prototype, "deleted", 2);
|
|
5495
6071
|
__decorateClass([
|
|
5496
|
-
(0,
|
|
6072
|
+
(0, import_typeorm14.Column)("int", { nullable: true })
|
|
5497
6073
|
], Comment.prototype, "createdBy", 2);
|
|
5498
6074
|
__decorateClass([
|
|
5499
|
-
(0,
|
|
6075
|
+
(0, import_typeorm14.Column)("int", { nullable: true })
|
|
5500
6076
|
], Comment.prototype, "updatedBy", 2);
|
|
5501
6077
|
__decorateClass([
|
|
5502
|
-
(0,
|
|
6078
|
+
(0, import_typeorm14.Column)("int", { nullable: true })
|
|
5503
6079
|
], Comment.prototype, "deletedBy", 2);
|
|
5504
6080
|
__decorateClass([
|
|
5505
|
-
(0,
|
|
5506
|
-
(0,
|
|
6081
|
+
(0, import_typeorm14.ManyToOne)(() => User, { onDelete: "CASCADE" }),
|
|
6082
|
+
(0, import_typeorm14.JoinColumn)({ name: "authorId" })
|
|
5507
6083
|
], Comment.prototype, "author", 2);
|
|
5508
6084
|
__decorateClass([
|
|
5509
|
-
(0,
|
|
5510
|
-
(0,
|
|
6085
|
+
(0, import_typeorm14.ManyToOne)(() => Blog, (b) => b.comments, { onDelete: "CASCADE" }),
|
|
6086
|
+
(0, import_typeorm14.JoinColumn)({ name: "blogId" })
|
|
5511
6087
|
], Comment.prototype, "blog", 2);
|
|
5512
6088
|
Comment = __decorateClass([
|
|
5513
|
-
(0,
|
|
6089
|
+
(0, import_typeorm14.Entity)("comments")
|
|
5514
6090
|
], Comment);
|
|
5515
6091
|
|
|
5516
6092
|
// src/entities/tag.entity.ts
|
|
5517
|
-
var
|
|
6093
|
+
var import_typeorm15 = require("typeorm");
|
|
5518
6094
|
var Tag = class {
|
|
5519
6095
|
id;
|
|
5520
6096
|
name;
|
|
@@ -5528,37 +6104,37 @@ var Tag = class {
|
|
|
5528
6104
|
blogs;
|
|
5529
6105
|
};
|
|
5530
6106
|
__decorateClass([
|
|
5531
|
-
(0,
|
|
6107
|
+
(0, import_typeorm15.PrimaryGeneratedColumn)()
|
|
5532
6108
|
], Tag.prototype, "id", 2);
|
|
5533
6109
|
__decorateClass([
|
|
5534
|
-
(0,
|
|
6110
|
+
(0, import_typeorm15.Column)("varchar", { unique: true })
|
|
5535
6111
|
], Tag.prototype, "name", 2);
|
|
5536
6112
|
__decorateClass([
|
|
5537
|
-
(0,
|
|
6113
|
+
(0, import_typeorm15.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5538
6114
|
], Tag.prototype, "createdAt", 2);
|
|
5539
6115
|
__decorateClass([
|
|
5540
|
-
(0,
|
|
6116
|
+
(0, import_typeorm15.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5541
6117
|
], Tag.prototype, "updatedAt", 2);
|
|
5542
6118
|
__decorateClass([
|
|
5543
|
-
(0,
|
|
6119
|
+
(0, import_typeorm15.Column)({ type: "timestamp", nullable: true })
|
|
5544
6120
|
], Tag.prototype, "deletedAt", 2);
|
|
5545
6121
|
__decorateClass([
|
|
5546
|
-
(0,
|
|
6122
|
+
(0, import_typeorm15.Column)("boolean", { default: false })
|
|
5547
6123
|
], Tag.prototype, "deleted", 2);
|
|
5548
6124
|
__decorateClass([
|
|
5549
|
-
(0,
|
|
6125
|
+
(0, import_typeorm15.Column)("int", { nullable: true })
|
|
5550
6126
|
], Tag.prototype, "createdBy", 2);
|
|
5551
6127
|
__decorateClass([
|
|
5552
|
-
(0,
|
|
6128
|
+
(0, import_typeorm15.Column)("int", { nullable: true })
|
|
5553
6129
|
], Tag.prototype, "updatedBy", 2);
|
|
5554
6130
|
__decorateClass([
|
|
5555
|
-
(0,
|
|
6131
|
+
(0, import_typeorm15.Column)("int", { nullable: true })
|
|
5556
6132
|
], Tag.prototype, "deletedBy", 2);
|
|
5557
6133
|
__decorateClass([
|
|
5558
|
-
(0,
|
|
6134
|
+
(0, import_typeorm15.ManyToMany)(() => Blog, (blog) => blog.tags)
|
|
5559
6135
|
], Tag.prototype, "blogs", 2);
|
|
5560
6136
|
Tag = __decorateClass([
|
|
5561
|
-
(0,
|
|
6137
|
+
(0, import_typeorm15.Entity)("tags")
|
|
5562
6138
|
], Tag);
|
|
5563
6139
|
|
|
5564
6140
|
// src/entities/blog.entity.ts
|
|
@@ -5586,91 +6162,91 @@ var Blog = class {
|
|
|
5586
6162
|
tags;
|
|
5587
6163
|
};
|
|
5588
6164
|
__decorateClass([
|
|
5589
|
-
(0,
|
|
6165
|
+
(0, import_typeorm16.PrimaryGeneratedColumn)()
|
|
5590
6166
|
], Blog.prototype, "id", 2);
|
|
5591
6167
|
__decorateClass([
|
|
5592
|
-
(0,
|
|
6168
|
+
(0, import_typeorm16.Column)("varchar")
|
|
5593
6169
|
], Blog.prototype, "title", 2);
|
|
5594
6170
|
__decorateClass([
|
|
5595
|
-
(0,
|
|
6171
|
+
(0, import_typeorm16.Column)("text")
|
|
5596
6172
|
], Blog.prototype, "content", 2);
|
|
5597
6173
|
__decorateClass([
|
|
5598
|
-
(0,
|
|
6174
|
+
(0, import_typeorm16.Column)("varchar", { nullable: true })
|
|
5599
6175
|
], Blog.prototype, "coverImage", 2);
|
|
5600
6176
|
__decorateClass([
|
|
5601
|
-
(0,
|
|
6177
|
+
(0, import_typeorm16.Column)("int")
|
|
5602
6178
|
], Blog.prototype, "authorId", 2);
|
|
5603
6179
|
__decorateClass([
|
|
5604
|
-
(0,
|
|
6180
|
+
(0, import_typeorm16.Column)("int", { nullable: true })
|
|
5605
6181
|
], Blog.prototype, "categoryId", 2);
|
|
5606
6182
|
__decorateClass([
|
|
5607
|
-
(0,
|
|
6183
|
+
(0, import_typeorm16.Column)("int", { nullable: true })
|
|
5608
6184
|
], Blog.prototype, "seoId", 2);
|
|
5609
6185
|
__decorateClass([
|
|
5610
|
-
(0,
|
|
6186
|
+
(0, import_typeorm16.Column)("boolean", { default: false })
|
|
5611
6187
|
], Blog.prototype, "published", 2);
|
|
5612
6188
|
__decorateClass([
|
|
5613
|
-
(0,
|
|
6189
|
+
(0, import_typeorm16.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5614
6190
|
], Blog.prototype, "createdAt", 2);
|
|
5615
6191
|
__decorateClass([
|
|
5616
|
-
(0,
|
|
6192
|
+
(0, import_typeorm16.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5617
6193
|
], Blog.prototype, "updatedAt", 2);
|
|
5618
6194
|
__decorateClass([
|
|
5619
|
-
(0,
|
|
6195
|
+
(0, import_typeorm16.Column)({ type: "timestamp", nullable: true })
|
|
5620
6196
|
], Blog.prototype, "deletedAt", 2);
|
|
5621
6197
|
__decorateClass([
|
|
5622
|
-
(0,
|
|
6198
|
+
(0, import_typeorm16.Column)("boolean", { default: false })
|
|
5623
6199
|
], Blog.prototype, "deleted", 2);
|
|
5624
6200
|
__decorateClass([
|
|
5625
|
-
(0,
|
|
6201
|
+
(0, import_typeorm16.Column)("int", { nullable: true })
|
|
5626
6202
|
], Blog.prototype, "createdBy", 2);
|
|
5627
6203
|
__decorateClass([
|
|
5628
|
-
(0,
|
|
6204
|
+
(0, import_typeorm16.Column)("int", { nullable: true })
|
|
5629
6205
|
], Blog.prototype, "updatedBy", 2);
|
|
5630
6206
|
__decorateClass([
|
|
5631
|
-
(0,
|
|
6207
|
+
(0, import_typeorm16.Column)("int", { nullable: true })
|
|
5632
6208
|
], Blog.prototype, "deletedBy", 2);
|
|
5633
6209
|
__decorateClass([
|
|
5634
|
-
(0,
|
|
6210
|
+
(0, import_typeorm16.Column)("varchar", { unique: true })
|
|
5635
6211
|
], Blog.prototype, "slug", 2);
|
|
5636
6212
|
__decorateClass([
|
|
5637
|
-
(0,
|
|
5638
|
-
(0,
|
|
6213
|
+
(0, import_typeorm16.ManyToOne)(() => User, { onDelete: "CASCADE" }),
|
|
6214
|
+
(0, import_typeorm16.JoinColumn)({ name: "authorId" })
|
|
5639
6215
|
], Blog.prototype, "author", 2);
|
|
5640
6216
|
__decorateClass([
|
|
5641
|
-
(0,
|
|
5642
|
-
(0,
|
|
6217
|
+
(0, import_typeorm16.ManyToOne)(() => Category, (c) => c.blogs, { onDelete: "SET NULL" }),
|
|
6218
|
+
(0, import_typeorm16.JoinColumn)({ name: "categoryId" })
|
|
5643
6219
|
], Blog.prototype, "category", 2);
|
|
5644
6220
|
__decorateClass([
|
|
5645
|
-
(0,
|
|
5646
|
-
(0,
|
|
6221
|
+
(0, import_typeorm16.ManyToOne)(() => Seo, (s) => s.blogs, { onDelete: "SET NULL" }),
|
|
6222
|
+
(0, import_typeorm16.JoinColumn)({ name: "seoId" })
|
|
5647
6223
|
], Blog.prototype, "seo", 2);
|
|
5648
6224
|
__decorateClass([
|
|
5649
|
-
(0,
|
|
6225
|
+
(0, import_typeorm16.OneToMany)(() => Comment, (c) => c.blog)
|
|
5650
6226
|
], Blog.prototype, "comments", 2);
|
|
5651
6227
|
__decorateClass([
|
|
5652
|
-
(0,
|
|
5653
|
-
(0,
|
|
6228
|
+
(0, import_typeorm16.ManyToMany)(() => Tag, (t) => t.blogs),
|
|
6229
|
+
(0, import_typeorm16.JoinTable)({
|
|
5654
6230
|
name: "blog_tags",
|
|
5655
6231
|
joinColumn: { name: "blogId", referencedColumnName: "id" },
|
|
5656
6232
|
inverseJoinColumn: { name: "tagId", referencedColumnName: "id" }
|
|
5657
6233
|
})
|
|
5658
6234
|
], Blog.prototype, "tags", 2);
|
|
5659
6235
|
Blog = __decorateClass([
|
|
5660
|
-
(0,
|
|
6236
|
+
(0, import_typeorm16.Entity)("blogs")
|
|
5661
6237
|
], Blog);
|
|
5662
6238
|
|
|
5663
6239
|
// src/entities/contact.entity.ts
|
|
5664
|
-
var
|
|
6240
|
+
var import_typeorm25 = require("typeorm");
|
|
5665
6241
|
|
|
5666
6242
|
// src/entities/form-submission.entity.ts
|
|
5667
|
-
var
|
|
6243
|
+
var import_typeorm19 = require("typeorm");
|
|
5668
6244
|
|
|
5669
6245
|
// src/entities/form.entity.ts
|
|
5670
|
-
var
|
|
6246
|
+
var import_typeorm18 = require("typeorm");
|
|
5671
6247
|
|
|
5672
6248
|
// src/entities/form-field.entity.ts
|
|
5673
|
-
var
|
|
6249
|
+
var import_typeorm17 = require("typeorm");
|
|
5674
6250
|
var FormField = class {
|
|
5675
6251
|
id;
|
|
5676
6252
|
formId;
|
|
@@ -5693,65 +6269,65 @@ var FormField = class {
|
|
|
5693
6269
|
form;
|
|
5694
6270
|
};
|
|
5695
6271
|
__decorateClass([
|
|
5696
|
-
(0,
|
|
6272
|
+
(0, import_typeorm17.PrimaryGeneratedColumn)()
|
|
5697
6273
|
], FormField.prototype, "id", 2);
|
|
5698
6274
|
__decorateClass([
|
|
5699
|
-
(0,
|
|
6275
|
+
(0, import_typeorm17.Column)("int")
|
|
5700
6276
|
], FormField.prototype, "formId", 2);
|
|
5701
6277
|
__decorateClass([
|
|
5702
|
-
(0,
|
|
6278
|
+
(0, import_typeorm17.Column)("varchar")
|
|
5703
6279
|
], FormField.prototype, "label", 2);
|
|
5704
6280
|
__decorateClass([
|
|
5705
|
-
(0,
|
|
6281
|
+
(0, import_typeorm17.Column)("varchar")
|
|
5706
6282
|
], FormField.prototype, "type", 2);
|
|
5707
6283
|
__decorateClass([
|
|
5708
|
-
(0,
|
|
6284
|
+
(0, import_typeorm17.Column)("varchar", { nullable: true })
|
|
5709
6285
|
], FormField.prototype, "placeholder", 2);
|
|
5710
6286
|
__decorateClass([
|
|
5711
|
-
(0,
|
|
6287
|
+
(0, import_typeorm17.Column)("varchar", { nullable: true })
|
|
5712
6288
|
], FormField.prototype, "options", 2);
|
|
5713
6289
|
__decorateClass([
|
|
5714
|
-
(0,
|
|
6290
|
+
(0, import_typeorm17.Column)("boolean", { default: false })
|
|
5715
6291
|
], FormField.prototype, "required", 2);
|
|
5716
6292
|
__decorateClass([
|
|
5717
|
-
(0,
|
|
6293
|
+
(0, import_typeorm17.Column)("varchar", { nullable: true })
|
|
5718
6294
|
], FormField.prototype, "validation", 2);
|
|
5719
6295
|
__decorateClass([
|
|
5720
|
-
(0,
|
|
6296
|
+
(0, import_typeorm17.Column)("int")
|
|
5721
6297
|
], FormField.prototype, "order", 2);
|
|
5722
6298
|
__decorateClass([
|
|
5723
|
-
(0,
|
|
6299
|
+
(0, import_typeorm17.Column)("int", { default: 1 })
|
|
5724
6300
|
], FormField.prototype, "groupId", 2);
|
|
5725
6301
|
__decorateClass([
|
|
5726
|
-
(0,
|
|
6302
|
+
(0, import_typeorm17.Column)("int", { default: 12 })
|
|
5727
6303
|
], FormField.prototype, "columnWidth", 2);
|
|
5728
6304
|
__decorateClass([
|
|
5729
|
-
(0,
|
|
6305
|
+
(0, import_typeorm17.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5730
6306
|
], FormField.prototype, "createdAt", 2);
|
|
5731
6307
|
__decorateClass([
|
|
5732
|
-
(0,
|
|
6308
|
+
(0, import_typeorm17.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5733
6309
|
], FormField.prototype, "updatedAt", 2);
|
|
5734
6310
|
__decorateClass([
|
|
5735
|
-
(0,
|
|
6311
|
+
(0, import_typeorm17.Column)({ type: "timestamp", nullable: true })
|
|
5736
6312
|
], FormField.prototype, "deletedAt", 2);
|
|
5737
6313
|
__decorateClass([
|
|
5738
|
-
(0,
|
|
6314
|
+
(0, import_typeorm17.Column)("boolean", { default: false })
|
|
5739
6315
|
], FormField.prototype, "deleted", 2);
|
|
5740
6316
|
__decorateClass([
|
|
5741
|
-
(0,
|
|
6317
|
+
(0, import_typeorm17.Column)("int", { nullable: true })
|
|
5742
6318
|
], FormField.prototype, "createdBy", 2);
|
|
5743
6319
|
__decorateClass([
|
|
5744
|
-
(0,
|
|
6320
|
+
(0, import_typeorm17.Column)("int", { nullable: true })
|
|
5745
6321
|
], FormField.prototype, "updatedBy", 2);
|
|
5746
6322
|
__decorateClass([
|
|
5747
|
-
(0,
|
|
6323
|
+
(0, import_typeorm17.Column)("int", { nullable: true })
|
|
5748
6324
|
], FormField.prototype, "deletedBy", 2);
|
|
5749
6325
|
__decorateClass([
|
|
5750
|
-
(0,
|
|
5751
|
-
(0,
|
|
6326
|
+
(0, import_typeorm17.ManyToOne)(() => Form, (f) => f.fields, { onDelete: "CASCADE" }),
|
|
6327
|
+
(0, import_typeorm17.JoinColumn)({ name: "formId" })
|
|
5752
6328
|
], FormField.prototype, "form", 2);
|
|
5753
6329
|
FormField = __decorateClass([
|
|
5754
|
-
(0,
|
|
6330
|
+
(0, import_typeorm17.Entity)("form_fields")
|
|
5755
6331
|
], FormField);
|
|
5756
6332
|
|
|
5757
6333
|
// src/entities/form.entity.ts
|
|
@@ -5773,52 +6349,52 @@ var Form = class {
|
|
|
5773
6349
|
submissions;
|
|
5774
6350
|
};
|
|
5775
6351
|
__decorateClass([
|
|
5776
|
-
(0,
|
|
6352
|
+
(0, import_typeorm18.PrimaryGeneratedColumn)()
|
|
5777
6353
|
], Form.prototype, "id", 2);
|
|
5778
6354
|
__decorateClass([
|
|
5779
|
-
(0,
|
|
6355
|
+
(0, import_typeorm18.Column)("varchar")
|
|
5780
6356
|
], Form.prototype, "name", 2);
|
|
5781
6357
|
__decorateClass([
|
|
5782
|
-
(0,
|
|
6358
|
+
(0, import_typeorm18.Column)("text", { nullable: true })
|
|
5783
6359
|
], Form.prototype, "description", 2);
|
|
5784
6360
|
__decorateClass([
|
|
5785
|
-
(0,
|
|
6361
|
+
(0, import_typeorm18.Column)("varchar", { nullable: true })
|
|
5786
6362
|
], Form.prototype, "campaign", 2);
|
|
5787
6363
|
__decorateClass([
|
|
5788
|
-
(0,
|
|
6364
|
+
(0, import_typeorm18.Column)("varchar", { unique: true })
|
|
5789
6365
|
], Form.prototype, "slug", 2);
|
|
5790
6366
|
__decorateClass([
|
|
5791
|
-
(0,
|
|
6367
|
+
(0, import_typeorm18.Column)("boolean", { default: false })
|
|
5792
6368
|
], Form.prototype, "published", 2);
|
|
5793
6369
|
__decorateClass([
|
|
5794
|
-
(0,
|
|
6370
|
+
(0, import_typeorm18.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5795
6371
|
], Form.prototype, "createdAt", 2);
|
|
5796
6372
|
__decorateClass([
|
|
5797
|
-
(0,
|
|
6373
|
+
(0, import_typeorm18.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5798
6374
|
], Form.prototype, "updatedAt", 2);
|
|
5799
6375
|
__decorateClass([
|
|
5800
|
-
(0,
|
|
6376
|
+
(0, import_typeorm18.Column)({ type: "timestamp", nullable: true })
|
|
5801
6377
|
], Form.prototype, "deletedAt", 2);
|
|
5802
6378
|
__decorateClass([
|
|
5803
|
-
(0,
|
|
6379
|
+
(0, import_typeorm18.Column)("boolean", { default: false })
|
|
5804
6380
|
], Form.prototype, "deleted", 2);
|
|
5805
6381
|
__decorateClass([
|
|
5806
|
-
(0,
|
|
6382
|
+
(0, import_typeorm18.Column)("int", { nullable: true })
|
|
5807
6383
|
], Form.prototype, "createdBy", 2);
|
|
5808
6384
|
__decorateClass([
|
|
5809
|
-
(0,
|
|
6385
|
+
(0, import_typeorm18.Column)("int", { nullable: true })
|
|
5810
6386
|
], Form.prototype, "updatedBy", 2);
|
|
5811
6387
|
__decorateClass([
|
|
5812
|
-
(0,
|
|
6388
|
+
(0, import_typeorm18.Column)("int", { nullable: true })
|
|
5813
6389
|
], Form.prototype, "deletedBy", 2);
|
|
5814
6390
|
__decorateClass([
|
|
5815
|
-
(0,
|
|
6391
|
+
(0, import_typeorm18.OneToMany)(() => FormField, (f) => f.form)
|
|
5816
6392
|
], Form.prototype, "fields", 2);
|
|
5817
6393
|
__decorateClass([
|
|
5818
|
-
(0,
|
|
6394
|
+
(0, import_typeorm18.OneToMany)(() => FormSubmission, (s) => s.form)
|
|
5819
6395
|
], Form.prototype, "submissions", 2);
|
|
5820
6396
|
Form = __decorateClass([
|
|
5821
|
-
(0,
|
|
6397
|
+
(0, import_typeorm18.Entity)("forms")
|
|
5822
6398
|
], Form);
|
|
5823
6399
|
|
|
5824
6400
|
// src/entities/form-submission.entity.ts
|
|
@@ -5835,43 +6411,43 @@ var FormSubmission = class {
|
|
|
5835
6411
|
contact;
|
|
5836
6412
|
};
|
|
5837
6413
|
__decorateClass([
|
|
5838
|
-
(0,
|
|
6414
|
+
(0, import_typeorm19.PrimaryGeneratedColumn)()
|
|
5839
6415
|
], FormSubmission.prototype, "id", 2);
|
|
5840
6416
|
__decorateClass([
|
|
5841
|
-
(0,
|
|
6417
|
+
(0, import_typeorm19.Column)("int")
|
|
5842
6418
|
], FormSubmission.prototype, "formId", 2);
|
|
5843
6419
|
__decorateClass([
|
|
5844
|
-
(0,
|
|
6420
|
+
(0, import_typeorm19.Column)("int", { nullable: true })
|
|
5845
6421
|
], FormSubmission.prototype, "contactId", 2);
|
|
5846
6422
|
__decorateClass([
|
|
5847
|
-
(0,
|
|
6423
|
+
(0, import_typeorm19.Column)("jsonb")
|
|
5848
6424
|
], FormSubmission.prototype, "data", 2);
|
|
5849
6425
|
__decorateClass([
|
|
5850
|
-
(0,
|
|
6426
|
+
(0, import_typeorm19.Column)("varchar", { nullable: true })
|
|
5851
6427
|
], FormSubmission.prototype, "ipAddress", 2);
|
|
5852
6428
|
__decorateClass([
|
|
5853
|
-
(0,
|
|
6429
|
+
(0, import_typeorm19.Column)("varchar", { nullable: true })
|
|
5854
6430
|
], FormSubmission.prototype, "userAgent", 2);
|
|
5855
6431
|
__decorateClass([
|
|
5856
|
-
(0,
|
|
6432
|
+
(0, import_typeorm19.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5857
6433
|
], FormSubmission.prototype, "createdAt", 2);
|
|
5858
6434
|
__decorateClass([
|
|
5859
|
-
(0,
|
|
6435
|
+
(0, import_typeorm19.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5860
6436
|
], FormSubmission.prototype, "updatedAt", 2);
|
|
5861
6437
|
__decorateClass([
|
|
5862
|
-
(0,
|
|
5863
|
-
(0,
|
|
6438
|
+
(0, import_typeorm19.ManyToOne)(() => Form, (f) => f.submissions, { onDelete: "CASCADE" }),
|
|
6439
|
+
(0, import_typeorm19.JoinColumn)({ name: "formId" })
|
|
5864
6440
|
], FormSubmission.prototype, "form", 2);
|
|
5865
6441
|
__decorateClass([
|
|
5866
|
-
(0,
|
|
5867
|
-
(0,
|
|
6442
|
+
(0, import_typeorm19.ManyToOne)(() => Contact, (c) => c.form_submissions, { onDelete: "SET NULL" }),
|
|
6443
|
+
(0, import_typeorm19.JoinColumn)({ name: "contactId" })
|
|
5868
6444
|
], FormSubmission.prototype, "contact", 2);
|
|
5869
6445
|
FormSubmission = __decorateClass([
|
|
5870
|
-
(0,
|
|
6446
|
+
(0, import_typeorm19.Entity)("form_submissions")
|
|
5871
6447
|
], FormSubmission);
|
|
5872
6448
|
|
|
5873
6449
|
// src/entities/address.entity.ts
|
|
5874
|
-
var
|
|
6450
|
+
var import_typeorm20 = require("typeorm");
|
|
5875
6451
|
var Address = class {
|
|
5876
6452
|
id;
|
|
5877
6453
|
contactId;
|
|
@@ -5887,48 +6463,48 @@ var Address = class {
|
|
|
5887
6463
|
contact;
|
|
5888
6464
|
};
|
|
5889
6465
|
__decorateClass([
|
|
5890
|
-
(0,
|
|
6466
|
+
(0, import_typeorm20.PrimaryGeneratedColumn)()
|
|
5891
6467
|
], Address.prototype, "id", 2);
|
|
5892
6468
|
__decorateClass([
|
|
5893
|
-
(0,
|
|
6469
|
+
(0, import_typeorm20.Column)("int")
|
|
5894
6470
|
], Address.prototype, "contactId", 2);
|
|
5895
6471
|
__decorateClass([
|
|
5896
|
-
(0,
|
|
6472
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5897
6473
|
], Address.prototype, "tag", 2);
|
|
5898
6474
|
__decorateClass([
|
|
5899
|
-
(0,
|
|
6475
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5900
6476
|
], Address.prototype, "line1", 2);
|
|
5901
6477
|
__decorateClass([
|
|
5902
|
-
(0,
|
|
6478
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5903
6479
|
], Address.prototype, "line2", 2);
|
|
5904
6480
|
__decorateClass([
|
|
5905
|
-
(0,
|
|
6481
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5906
6482
|
], Address.prototype, "city", 2);
|
|
5907
6483
|
__decorateClass([
|
|
5908
|
-
(0,
|
|
6484
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5909
6485
|
], Address.prototype, "state", 2);
|
|
5910
6486
|
__decorateClass([
|
|
5911
|
-
(0,
|
|
6487
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5912
6488
|
], Address.prototype, "postalCode", 2);
|
|
5913
6489
|
__decorateClass([
|
|
5914
|
-
(0,
|
|
6490
|
+
(0, import_typeorm20.Column)("varchar", { nullable: true })
|
|
5915
6491
|
], Address.prototype, "country", 2);
|
|
5916
6492
|
__decorateClass([
|
|
5917
|
-
(0,
|
|
6493
|
+
(0, import_typeorm20.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5918
6494
|
], Address.prototype, "createdAt", 2);
|
|
5919
6495
|
__decorateClass([
|
|
5920
|
-
(0,
|
|
6496
|
+
(0, import_typeorm20.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
5921
6497
|
], Address.prototype, "updatedAt", 2);
|
|
5922
6498
|
__decorateClass([
|
|
5923
|
-
(0,
|
|
5924
|
-
(0,
|
|
6499
|
+
(0, import_typeorm20.ManyToOne)(() => Contact, (c) => c.addresses, { onDelete: "CASCADE" }),
|
|
6500
|
+
(0, import_typeorm20.JoinColumn)({ name: "contactId" })
|
|
5925
6501
|
], Address.prototype, "contact", 2);
|
|
5926
6502
|
Address = __decorateClass([
|
|
5927
|
-
(0,
|
|
6503
|
+
(0, import_typeorm20.Entity)("addresses")
|
|
5928
6504
|
], Address);
|
|
5929
6505
|
|
|
5930
6506
|
// src/entities/order.entity.ts
|
|
5931
|
-
var
|
|
6507
|
+
var import_typeorm21 = require("typeorm");
|
|
5932
6508
|
var Order = class {
|
|
5933
6509
|
id;
|
|
5934
6510
|
orderNumber;
|
|
@@ -5960,99 +6536,99 @@ var Order = class {
|
|
|
5960
6536
|
payments;
|
|
5961
6537
|
};
|
|
5962
6538
|
__decorateClass([
|
|
5963
|
-
(0,
|
|
6539
|
+
(0, import_typeorm21.PrimaryGeneratedColumn)()
|
|
5964
6540
|
], Order.prototype, "id", 2);
|
|
5965
6541
|
__decorateClass([
|
|
5966
|
-
(0,
|
|
6542
|
+
(0, import_typeorm21.Column)("varchar", { unique: true })
|
|
5967
6543
|
], Order.prototype, "orderNumber", 2);
|
|
5968
6544
|
__decorateClass([
|
|
5969
|
-
(0,
|
|
6545
|
+
(0, import_typeorm21.Column)("varchar", { default: "sale" })
|
|
5970
6546
|
], Order.prototype, "orderKind", 2);
|
|
5971
6547
|
__decorateClass([
|
|
5972
|
-
(0,
|
|
6548
|
+
(0, import_typeorm21.Column)("int", { nullable: true })
|
|
5973
6549
|
], Order.prototype, "parentOrderId", 2);
|
|
5974
6550
|
__decorateClass([
|
|
5975
|
-
(0,
|
|
6551
|
+
(0, import_typeorm21.Column)("int")
|
|
5976
6552
|
], Order.prototype, "contactId", 2);
|
|
5977
6553
|
__decorateClass([
|
|
5978
|
-
(0,
|
|
6554
|
+
(0, import_typeorm21.Column)("int", { nullable: true })
|
|
5979
6555
|
], Order.prototype, "billingAddressId", 2);
|
|
5980
6556
|
__decorateClass([
|
|
5981
|
-
(0,
|
|
6557
|
+
(0, import_typeorm21.Column)("int", { nullable: true })
|
|
5982
6558
|
], Order.prototype, "shippingAddressId", 2);
|
|
5983
6559
|
__decorateClass([
|
|
5984
|
-
(0,
|
|
6560
|
+
(0, import_typeorm21.Column)("varchar", { default: "pending" })
|
|
5985
6561
|
], Order.prototype, "status", 2);
|
|
5986
6562
|
__decorateClass([
|
|
5987
|
-
(0,
|
|
6563
|
+
(0, import_typeorm21.Column)("decimal", { precision: 12, scale: 2, default: 0 })
|
|
5988
6564
|
], Order.prototype, "subtotal", 2);
|
|
5989
6565
|
__decorateClass([
|
|
5990
|
-
(0,
|
|
6566
|
+
(0, import_typeorm21.Column)("decimal", { precision: 12, scale: 2, default: 0 })
|
|
5991
6567
|
], Order.prototype, "tax", 2);
|
|
5992
6568
|
__decorateClass([
|
|
5993
|
-
(0,
|
|
6569
|
+
(0, import_typeorm21.Column)("decimal", { precision: 12, scale: 2, default: 0 })
|
|
5994
6570
|
], Order.prototype, "discount", 2);
|
|
5995
6571
|
__decorateClass([
|
|
5996
|
-
(0,
|
|
6572
|
+
(0, import_typeorm21.Column)("decimal", { precision: 12, scale: 2, default: 0 })
|
|
5997
6573
|
], Order.prototype, "total", 2);
|
|
5998
6574
|
__decorateClass([
|
|
5999
|
-
(0,
|
|
6575
|
+
(0, import_typeorm21.Column)("varchar", { default: "INR" })
|
|
6000
6576
|
], Order.prototype, "currency", 2);
|
|
6001
6577
|
__decorateClass([
|
|
6002
|
-
(0,
|
|
6578
|
+
(0, import_typeorm21.Column)("jsonb", { nullable: true })
|
|
6003
6579
|
], Order.prototype, "metadata", 2);
|
|
6004
6580
|
__decorateClass([
|
|
6005
|
-
(0,
|
|
6581
|
+
(0, import_typeorm21.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6006
6582
|
], Order.prototype, "createdAt", 2);
|
|
6007
6583
|
__decorateClass([
|
|
6008
|
-
(0,
|
|
6584
|
+
(0, import_typeorm21.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6009
6585
|
], Order.prototype, "updatedAt", 2);
|
|
6010
6586
|
__decorateClass([
|
|
6011
|
-
(0,
|
|
6587
|
+
(0, import_typeorm21.Column)({ type: "timestamp", nullable: true })
|
|
6012
6588
|
], Order.prototype, "deletedAt", 2);
|
|
6013
6589
|
__decorateClass([
|
|
6014
|
-
(0,
|
|
6590
|
+
(0, import_typeorm21.Column)("boolean", { default: false })
|
|
6015
6591
|
], Order.prototype, "deleted", 2);
|
|
6016
6592
|
__decorateClass([
|
|
6017
|
-
(0,
|
|
6593
|
+
(0, import_typeorm21.Column)("int", { nullable: true })
|
|
6018
6594
|
], Order.prototype, "createdBy", 2);
|
|
6019
6595
|
__decorateClass([
|
|
6020
|
-
(0,
|
|
6596
|
+
(0, import_typeorm21.Column)("int", { nullable: true })
|
|
6021
6597
|
], Order.prototype, "updatedBy", 2);
|
|
6022
6598
|
__decorateClass([
|
|
6023
|
-
(0,
|
|
6599
|
+
(0, import_typeorm21.Column)("int", { nullable: true })
|
|
6024
6600
|
], Order.prototype, "deletedBy", 2);
|
|
6025
6601
|
__decorateClass([
|
|
6026
|
-
(0,
|
|
6027
|
-
(0,
|
|
6602
|
+
(0, import_typeorm21.ManyToOne)(() => Order, (o) => o.children, { nullable: true, onDelete: "SET NULL" }),
|
|
6603
|
+
(0, import_typeorm21.JoinColumn)({ name: "parentOrderId" })
|
|
6028
6604
|
], Order.prototype, "parentOrder", 2);
|
|
6029
6605
|
__decorateClass([
|
|
6030
|
-
(0,
|
|
6606
|
+
(0, import_typeorm21.OneToMany)(() => Order, (o) => o.parentOrder)
|
|
6031
6607
|
], Order.prototype, "children", 2);
|
|
6032
6608
|
__decorateClass([
|
|
6033
|
-
(0,
|
|
6034
|
-
(0,
|
|
6609
|
+
(0, import_typeorm21.ManyToOne)(() => Contact, { onDelete: "CASCADE" }),
|
|
6610
|
+
(0, import_typeorm21.JoinColumn)({ name: "contactId" })
|
|
6035
6611
|
], Order.prototype, "contact", 2);
|
|
6036
6612
|
__decorateClass([
|
|
6037
|
-
(0,
|
|
6038
|
-
(0,
|
|
6613
|
+
(0, import_typeorm21.ManyToOne)(() => Address, { onDelete: "SET NULL" }),
|
|
6614
|
+
(0, import_typeorm21.JoinColumn)({ name: "billingAddressId" })
|
|
6039
6615
|
], Order.prototype, "billingAddress", 2);
|
|
6040
6616
|
__decorateClass([
|
|
6041
|
-
(0,
|
|
6042
|
-
(0,
|
|
6617
|
+
(0, import_typeorm21.ManyToOne)(() => Address, { onDelete: "SET NULL" }),
|
|
6618
|
+
(0, import_typeorm21.JoinColumn)({ name: "shippingAddressId" })
|
|
6043
6619
|
], Order.prototype, "shippingAddress", 2);
|
|
6044
6620
|
__decorateClass([
|
|
6045
|
-
(0,
|
|
6621
|
+
(0, import_typeorm21.OneToMany)("OrderItem", "order")
|
|
6046
6622
|
], Order.prototype, "items", 2);
|
|
6047
6623
|
__decorateClass([
|
|
6048
|
-
(0,
|
|
6624
|
+
(0, import_typeorm21.OneToMany)("Payment", "order")
|
|
6049
6625
|
], Order.prototype, "payments", 2);
|
|
6050
6626
|
Order = __decorateClass([
|
|
6051
|
-
(0,
|
|
6627
|
+
(0, import_typeorm21.Entity)("orders")
|
|
6052
6628
|
], Order);
|
|
6053
6629
|
|
|
6054
6630
|
// src/entities/payment.entity.ts
|
|
6055
|
-
var
|
|
6631
|
+
var import_typeorm22 = require("typeorm");
|
|
6056
6632
|
var Payment = class {
|
|
6057
6633
|
id;
|
|
6058
6634
|
orderId;
|
|
@@ -6075,73 +6651,73 @@ var Payment = class {
|
|
|
6075
6651
|
contact;
|
|
6076
6652
|
};
|
|
6077
6653
|
__decorateClass([
|
|
6078
|
-
(0,
|
|
6654
|
+
(0, import_typeorm22.PrimaryGeneratedColumn)()
|
|
6079
6655
|
], Payment.prototype, "id", 2);
|
|
6080
6656
|
__decorateClass([
|
|
6081
|
-
(0,
|
|
6657
|
+
(0, import_typeorm22.Column)("int")
|
|
6082
6658
|
], Payment.prototype, "orderId", 2);
|
|
6083
6659
|
__decorateClass([
|
|
6084
|
-
(0,
|
|
6660
|
+
(0, import_typeorm22.Column)("int", { nullable: true })
|
|
6085
6661
|
], Payment.prototype, "contactId", 2);
|
|
6086
6662
|
__decorateClass([
|
|
6087
|
-
(0,
|
|
6663
|
+
(0, import_typeorm22.Column)("decimal", { precision: 12, scale: 2 })
|
|
6088
6664
|
], Payment.prototype, "amount", 2);
|
|
6089
6665
|
__decorateClass([
|
|
6090
|
-
(0,
|
|
6666
|
+
(0, import_typeorm22.Column)("varchar", { default: "INR" })
|
|
6091
6667
|
], Payment.prototype, "currency", 2);
|
|
6092
6668
|
__decorateClass([
|
|
6093
|
-
(0,
|
|
6669
|
+
(0, import_typeorm22.Column)("varchar", { default: "pending" })
|
|
6094
6670
|
], Payment.prototype, "status", 2);
|
|
6095
6671
|
__decorateClass([
|
|
6096
|
-
(0,
|
|
6672
|
+
(0, import_typeorm22.Column)("varchar", { nullable: true })
|
|
6097
6673
|
], Payment.prototype, "method", 2);
|
|
6098
6674
|
__decorateClass([
|
|
6099
|
-
(0,
|
|
6675
|
+
(0, import_typeorm22.Column)("varchar", { nullable: true })
|
|
6100
6676
|
], Payment.prototype, "externalReference", 2);
|
|
6101
6677
|
__decorateClass([
|
|
6102
|
-
(0,
|
|
6678
|
+
(0, import_typeorm22.Column)("jsonb", { nullable: true })
|
|
6103
6679
|
], Payment.prototype, "metadata", 2);
|
|
6104
6680
|
__decorateClass([
|
|
6105
|
-
(0,
|
|
6681
|
+
(0, import_typeorm22.Column)({ type: "timestamp", nullable: true })
|
|
6106
6682
|
], Payment.prototype, "paidAt", 2);
|
|
6107
6683
|
__decorateClass([
|
|
6108
|
-
(0,
|
|
6684
|
+
(0, import_typeorm22.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6109
6685
|
], Payment.prototype, "createdAt", 2);
|
|
6110
6686
|
__decorateClass([
|
|
6111
|
-
(0,
|
|
6687
|
+
(0, import_typeorm22.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6112
6688
|
], Payment.prototype, "updatedAt", 2);
|
|
6113
6689
|
__decorateClass([
|
|
6114
|
-
(0,
|
|
6690
|
+
(0, import_typeorm22.Column)({ type: "timestamp", nullable: true })
|
|
6115
6691
|
], Payment.prototype, "deletedAt", 2);
|
|
6116
6692
|
__decorateClass([
|
|
6117
|
-
(0,
|
|
6693
|
+
(0, import_typeorm22.Column)("boolean", { default: false })
|
|
6118
6694
|
], Payment.prototype, "deleted", 2);
|
|
6119
6695
|
__decorateClass([
|
|
6120
|
-
(0,
|
|
6696
|
+
(0, import_typeorm22.Column)("int", { nullable: true })
|
|
6121
6697
|
], Payment.prototype, "createdBy", 2);
|
|
6122
6698
|
__decorateClass([
|
|
6123
|
-
(0,
|
|
6699
|
+
(0, import_typeorm22.Column)("int", { nullable: true })
|
|
6124
6700
|
], Payment.prototype, "updatedBy", 2);
|
|
6125
6701
|
__decorateClass([
|
|
6126
|
-
(0,
|
|
6702
|
+
(0, import_typeorm22.Column)("int", { nullable: true })
|
|
6127
6703
|
], Payment.prototype, "deletedBy", 2);
|
|
6128
6704
|
__decorateClass([
|
|
6129
|
-
(0,
|
|
6130
|
-
(0,
|
|
6705
|
+
(0, import_typeorm22.ManyToOne)(() => Order, (o) => o.payments, { onDelete: "CASCADE" }),
|
|
6706
|
+
(0, import_typeorm22.JoinColumn)({ name: "orderId" })
|
|
6131
6707
|
], Payment.prototype, "order", 2);
|
|
6132
6708
|
__decorateClass([
|
|
6133
|
-
(0,
|
|
6134
|
-
(0,
|
|
6709
|
+
(0, import_typeorm22.ManyToOne)(() => Contact, { onDelete: "SET NULL" }),
|
|
6710
|
+
(0, import_typeorm22.JoinColumn)({ name: "contactId" })
|
|
6135
6711
|
], Payment.prototype, "contact", 2);
|
|
6136
6712
|
Payment = __decorateClass([
|
|
6137
|
-
(0,
|
|
6713
|
+
(0, import_typeorm22.Entity)("payments")
|
|
6138
6714
|
], Payment);
|
|
6139
6715
|
|
|
6140
6716
|
// src/entities/chat-conversation.entity.ts
|
|
6141
|
-
var
|
|
6717
|
+
var import_typeorm24 = require("typeorm");
|
|
6142
6718
|
|
|
6143
6719
|
// src/entities/chat-message.entity.ts
|
|
6144
|
-
var
|
|
6720
|
+
var import_typeorm23 = require("typeorm");
|
|
6145
6721
|
var ChatMessage = class {
|
|
6146
6722
|
id;
|
|
6147
6723
|
conversationId;
|
|
@@ -6151,26 +6727,26 @@ var ChatMessage = class {
|
|
|
6151
6727
|
conversation;
|
|
6152
6728
|
};
|
|
6153
6729
|
__decorateClass([
|
|
6154
|
-
(0,
|
|
6730
|
+
(0, import_typeorm23.PrimaryGeneratedColumn)()
|
|
6155
6731
|
], ChatMessage.prototype, "id", 2);
|
|
6156
6732
|
__decorateClass([
|
|
6157
|
-
(0,
|
|
6733
|
+
(0, import_typeorm23.Column)("int")
|
|
6158
6734
|
], ChatMessage.prototype, "conversationId", 2);
|
|
6159
6735
|
__decorateClass([
|
|
6160
|
-
(0,
|
|
6736
|
+
(0, import_typeorm23.Column)("varchar")
|
|
6161
6737
|
], ChatMessage.prototype, "role", 2);
|
|
6162
6738
|
__decorateClass([
|
|
6163
|
-
(0,
|
|
6739
|
+
(0, import_typeorm23.Column)("text")
|
|
6164
6740
|
], ChatMessage.prototype, "content", 2);
|
|
6165
6741
|
__decorateClass([
|
|
6166
|
-
(0,
|
|
6742
|
+
(0, import_typeorm23.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6167
6743
|
], ChatMessage.prototype, "createdAt", 2);
|
|
6168
6744
|
__decorateClass([
|
|
6169
|
-
(0,
|
|
6170
|
-
(0,
|
|
6745
|
+
(0, import_typeorm23.ManyToOne)(() => ChatConversation, (c) => c.messages, { onDelete: "CASCADE" }),
|
|
6746
|
+
(0, import_typeorm23.JoinColumn)({ name: "conversationId" })
|
|
6171
6747
|
], ChatMessage.prototype, "conversation", 2);
|
|
6172
6748
|
ChatMessage = __decorateClass([
|
|
6173
|
-
(0,
|
|
6749
|
+
(0, import_typeorm23.Entity)("chat_messages")
|
|
6174
6750
|
], ChatMessage);
|
|
6175
6751
|
|
|
6176
6752
|
// src/entities/chat-conversation.entity.ts
|
|
@@ -6183,26 +6759,26 @@ var ChatConversation = class {
|
|
|
6183
6759
|
messages;
|
|
6184
6760
|
};
|
|
6185
6761
|
__decorateClass([
|
|
6186
|
-
(0,
|
|
6762
|
+
(0, import_typeorm24.PrimaryGeneratedColumn)()
|
|
6187
6763
|
], ChatConversation.prototype, "id", 2);
|
|
6188
6764
|
__decorateClass([
|
|
6189
|
-
(0,
|
|
6765
|
+
(0, import_typeorm24.Column)("int")
|
|
6190
6766
|
], ChatConversation.prototype, "contactId", 2);
|
|
6191
6767
|
__decorateClass([
|
|
6192
|
-
(0,
|
|
6768
|
+
(0, import_typeorm24.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6193
6769
|
], ChatConversation.prototype, "createdAt", 2);
|
|
6194
6770
|
__decorateClass([
|
|
6195
|
-
(0,
|
|
6771
|
+
(0, import_typeorm24.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6196
6772
|
], ChatConversation.prototype, "updatedAt", 2);
|
|
6197
6773
|
__decorateClass([
|
|
6198
|
-
(0,
|
|
6199
|
-
(0,
|
|
6774
|
+
(0, import_typeorm24.ManyToOne)(() => Contact, (c) => c.chatConversations, { onDelete: "CASCADE" }),
|
|
6775
|
+
(0, import_typeorm24.JoinColumn)({ name: "contactId" })
|
|
6200
6776
|
], ChatConversation.prototype, "contact", 2);
|
|
6201
6777
|
__decorateClass([
|
|
6202
|
-
(0,
|
|
6778
|
+
(0, import_typeorm24.OneToMany)(() => ChatMessage, (m) => m.conversation)
|
|
6203
6779
|
], ChatConversation.prototype, "messages", 2);
|
|
6204
6780
|
ChatConversation = __decorateClass([
|
|
6205
|
-
(0,
|
|
6781
|
+
(0, import_typeorm24.Entity)("chat_conversations")
|
|
6206
6782
|
], ChatConversation);
|
|
6207
6783
|
|
|
6208
6784
|
// src/entities/contact.entity.ts
|
|
@@ -6231,78 +6807,78 @@ var Contact = class {
|
|
|
6231
6807
|
chatConversations;
|
|
6232
6808
|
};
|
|
6233
6809
|
__decorateClass([
|
|
6234
|
-
(0,
|
|
6810
|
+
(0, import_typeorm25.PrimaryGeneratedColumn)()
|
|
6235
6811
|
], Contact.prototype, "id", 2);
|
|
6236
6812
|
__decorateClass([
|
|
6237
|
-
(0,
|
|
6813
|
+
(0, import_typeorm25.Column)("varchar")
|
|
6238
6814
|
], Contact.prototype, "name", 2);
|
|
6239
6815
|
__decorateClass([
|
|
6240
|
-
(0,
|
|
6816
|
+
(0, import_typeorm25.Column)("varchar", { unique: true })
|
|
6241
6817
|
], Contact.prototype, "email", 2);
|
|
6242
6818
|
__decorateClass([
|
|
6243
|
-
(0,
|
|
6819
|
+
(0, import_typeorm25.Column)("varchar", { nullable: true })
|
|
6244
6820
|
], Contact.prototype, "phone", 2);
|
|
6245
6821
|
__decorateClass([
|
|
6246
|
-
(0,
|
|
6822
|
+
(0, import_typeorm25.Column)("varchar", { nullable: true })
|
|
6247
6823
|
], Contact.prototype, "type", 2);
|
|
6248
6824
|
__decorateClass([
|
|
6249
|
-
(0,
|
|
6825
|
+
(0, import_typeorm25.Column)("varchar", { nullable: true })
|
|
6250
6826
|
], Contact.prototype, "company", 2);
|
|
6251
6827
|
__decorateClass([
|
|
6252
|
-
(0,
|
|
6828
|
+
(0, import_typeorm25.Column)("varchar", { nullable: true })
|
|
6253
6829
|
], Contact.prototype, "taxId", 2);
|
|
6254
6830
|
__decorateClass([
|
|
6255
|
-
(0,
|
|
6831
|
+
(0, import_typeorm25.Column)("text", { nullable: true })
|
|
6256
6832
|
], Contact.prototype, "notes", 2);
|
|
6257
6833
|
__decorateClass([
|
|
6258
|
-
(0,
|
|
6834
|
+
(0, import_typeorm25.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6259
6835
|
], Contact.prototype, "createdAt", 2);
|
|
6260
6836
|
__decorateClass([
|
|
6261
|
-
(0,
|
|
6837
|
+
(0, import_typeorm25.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6262
6838
|
], Contact.prototype, "updatedAt", 2);
|
|
6263
6839
|
__decorateClass([
|
|
6264
|
-
(0,
|
|
6840
|
+
(0, import_typeorm25.Column)({ type: "timestamp", nullable: true })
|
|
6265
6841
|
], Contact.prototype, "deletedAt", 2);
|
|
6266
6842
|
__decorateClass([
|
|
6267
|
-
(0,
|
|
6843
|
+
(0, import_typeorm25.Column)("boolean", { default: false })
|
|
6268
6844
|
], Contact.prototype, "deleted", 2);
|
|
6269
6845
|
__decorateClass([
|
|
6270
|
-
(0,
|
|
6846
|
+
(0, import_typeorm25.Column)("int", { nullable: true })
|
|
6271
6847
|
], Contact.prototype, "createdBy", 2);
|
|
6272
6848
|
__decorateClass([
|
|
6273
|
-
(0,
|
|
6849
|
+
(0, import_typeorm25.Column)("int", { nullable: true })
|
|
6274
6850
|
], Contact.prototype, "updatedBy", 2);
|
|
6275
6851
|
__decorateClass([
|
|
6276
|
-
(0,
|
|
6852
|
+
(0, import_typeorm25.Column)("int", { nullable: true })
|
|
6277
6853
|
], Contact.prototype, "deletedBy", 2);
|
|
6278
6854
|
__decorateClass([
|
|
6279
|
-
(0,
|
|
6855
|
+
(0, import_typeorm25.Column)("int", { nullable: true })
|
|
6280
6856
|
], Contact.prototype, "userId", 2);
|
|
6281
6857
|
__decorateClass([
|
|
6282
|
-
(0,
|
|
6283
|
-
(0,
|
|
6858
|
+
(0, import_typeorm25.ManyToOne)(() => User, { onDelete: "SET NULL" }),
|
|
6859
|
+
(0, import_typeorm25.JoinColumn)({ name: "userId" })
|
|
6284
6860
|
], Contact.prototype, "user", 2);
|
|
6285
6861
|
__decorateClass([
|
|
6286
|
-
(0,
|
|
6862
|
+
(0, import_typeorm25.OneToMany)(() => FormSubmission, (fs) => fs.contact)
|
|
6287
6863
|
], Contact.prototype, "form_submissions", 2);
|
|
6288
6864
|
__decorateClass([
|
|
6289
|
-
(0,
|
|
6865
|
+
(0, import_typeorm25.OneToMany)(() => Address, (a) => a.contact)
|
|
6290
6866
|
], Contact.prototype, "addresses", 2);
|
|
6291
6867
|
__decorateClass([
|
|
6292
|
-
(0,
|
|
6868
|
+
(0, import_typeorm25.OneToMany)(() => Order, (o) => o.contact)
|
|
6293
6869
|
], Contact.prototype, "orders", 2);
|
|
6294
6870
|
__decorateClass([
|
|
6295
|
-
(0,
|
|
6871
|
+
(0, import_typeorm25.OneToMany)(() => Payment, (p) => p.contact)
|
|
6296
6872
|
], Contact.prototype, "payments", 2);
|
|
6297
6873
|
__decorateClass([
|
|
6298
|
-
(0,
|
|
6874
|
+
(0, import_typeorm25.OneToMany)(() => ChatConversation, (c) => c.contact)
|
|
6299
6875
|
], Contact.prototype, "chatConversations", 2);
|
|
6300
6876
|
Contact = __decorateClass([
|
|
6301
|
-
(0,
|
|
6877
|
+
(0, import_typeorm25.Entity)("contacts")
|
|
6302
6878
|
], Contact);
|
|
6303
6879
|
|
|
6304
6880
|
// src/entities/config.entity.ts
|
|
6305
|
-
var
|
|
6881
|
+
var import_typeorm26 = require("typeorm");
|
|
6306
6882
|
var Config = class {
|
|
6307
6883
|
id;
|
|
6308
6884
|
settings;
|
|
@@ -6319,51 +6895,51 @@ var Config = class {
|
|
|
6319
6895
|
deletedBy;
|
|
6320
6896
|
};
|
|
6321
6897
|
__decorateClass([
|
|
6322
|
-
(0,
|
|
6898
|
+
(0, import_typeorm26.PrimaryGeneratedColumn)()
|
|
6323
6899
|
], Config.prototype, "id", 2);
|
|
6324
6900
|
__decorateClass([
|
|
6325
|
-
(0,
|
|
6901
|
+
(0, import_typeorm26.Column)("varchar")
|
|
6326
6902
|
], Config.prototype, "settings", 2);
|
|
6327
6903
|
__decorateClass([
|
|
6328
|
-
(0,
|
|
6904
|
+
(0, import_typeorm26.Column)("varchar")
|
|
6329
6905
|
], Config.prototype, "key", 2);
|
|
6330
6906
|
__decorateClass([
|
|
6331
|
-
(0,
|
|
6907
|
+
(0, import_typeorm26.Column)("varchar")
|
|
6332
6908
|
], Config.prototype, "value", 2);
|
|
6333
6909
|
__decorateClass([
|
|
6334
|
-
(0,
|
|
6910
|
+
(0, import_typeorm26.Column)("varchar", { default: "private" })
|
|
6335
6911
|
], Config.prototype, "type", 2);
|
|
6336
6912
|
__decorateClass([
|
|
6337
|
-
(0,
|
|
6913
|
+
(0, import_typeorm26.Column)("boolean", { default: false })
|
|
6338
6914
|
], Config.prototype, "encrypted", 2);
|
|
6339
6915
|
__decorateClass([
|
|
6340
|
-
(0,
|
|
6916
|
+
(0, import_typeorm26.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6341
6917
|
], Config.prototype, "createdAt", 2);
|
|
6342
6918
|
__decorateClass([
|
|
6343
|
-
(0,
|
|
6919
|
+
(0, import_typeorm26.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6344
6920
|
], Config.prototype, "updatedAt", 2);
|
|
6345
6921
|
__decorateClass([
|
|
6346
|
-
(0,
|
|
6922
|
+
(0, import_typeorm26.Column)({ type: "timestamp", nullable: true })
|
|
6347
6923
|
], Config.prototype, "deletedAt", 2);
|
|
6348
6924
|
__decorateClass([
|
|
6349
|
-
(0,
|
|
6925
|
+
(0, import_typeorm26.Column)("boolean", { default: false })
|
|
6350
6926
|
], Config.prototype, "deleted", 2);
|
|
6351
6927
|
__decorateClass([
|
|
6352
|
-
(0,
|
|
6928
|
+
(0, import_typeorm26.Column)("int", { nullable: true })
|
|
6353
6929
|
], Config.prototype, "createdBy", 2);
|
|
6354
6930
|
__decorateClass([
|
|
6355
|
-
(0,
|
|
6931
|
+
(0, import_typeorm26.Column)("int", { nullable: true })
|
|
6356
6932
|
], Config.prototype, "updatedBy", 2);
|
|
6357
6933
|
__decorateClass([
|
|
6358
|
-
(0,
|
|
6934
|
+
(0, import_typeorm26.Column)("int", { nullable: true })
|
|
6359
6935
|
], Config.prototype, "deletedBy", 2);
|
|
6360
6936
|
Config = __decorateClass([
|
|
6361
|
-
(0,
|
|
6362
|
-
(0,
|
|
6937
|
+
(0, import_typeorm26.Entity)("configs"),
|
|
6938
|
+
(0, import_typeorm26.Unique)(["settings", "key"])
|
|
6363
6939
|
], Config);
|
|
6364
6940
|
|
|
6365
6941
|
// src/entities/message-template.entity.ts
|
|
6366
|
-
var
|
|
6942
|
+
var import_typeorm27 = require("typeorm");
|
|
6367
6943
|
var MessageTemplate = class {
|
|
6368
6944
|
id;
|
|
6369
6945
|
channel;
|
|
@@ -6383,59 +6959,59 @@ var MessageTemplate = class {
|
|
|
6383
6959
|
deletedBy;
|
|
6384
6960
|
};
|
|
6385
6961
|
__decorateClass([
|
|
6386
|
-
(0,
|
|
6962
|
+
(0, import_typeorm27.PrimaryGeneratedColumn)()
|
|
6387
6963
|
], MessageTemplate.prototype, "id", 2);
|
|
6388
6964
|
__decorateClass([
|
|
6389
|
-
(0,
|
|
6965
|
+
(0, import_typeorm27.Column)("varchar")
|
|
6390
6966
|
], MessageTemplate.prototype, "channel", 2);
|
|
6391
6967
|
__decorateClass([
|
|
6392
|
-
(0,
|
|
6968
|
+
(0, import_typeorm27.Column)("varchar", { name: "template_key" })
|
|
6393
6969
|
], MessageTemplate.prototype, "templateKey", 2);
|
|
6394
6970
|
__decorateClass([
|
|
6395
|
-
(0,
|
|
6971
|
+
(0, import_typeorm27.Column)("varchar", { nullable: true })
|
|
6396
6972
|
], MessageTemplate.prototype, "name", 2);
|
|
6397
6973
|
__decorateClass([
|
|
6398
|
-
(0,
|
|
6974
|
+
(0, import_typeorm27.Column)("varchar", { nullable: true })
|
|
6399
6975
|
], MessageTemplate.prototype, "subject", 2);
|
|
6400
6976
|
__decorateClass([
|
|
6401
|
-
(0,
|
|
6977
|
+
(0, import_typeorm27.Column)("text", { default: "" })
|
|
6402
6978
|
], MessageTemplate.prototype, "body", 2);
|
|
6403
6979
|
__decorateClass([
|
|
6404
|
-
(0,
|
|
6980
|
+
(0, import_typeorm27.Column)("varchar", { name: "external_template_ref", nullable: true })
|
|
6405
6981
|
], MessageTemplate.prototype, "externalTemplateRef", 2);
|
|
6406
6982
|
__decorateClass([
|
|
6407
|
-
(0,
|
|
6983
|
+
(0, import_typeorm27.Column)({ type: "jsonb", nullable: true })
|
|
6408
6984
|
], MessageTemplate.prototype, "providerMeta", 2);
|
|
6409
6985
|
__decorateClass([
|
|
6410
|
-
(0,
|
|
6986
|
+
(0, import_typeorm27.Column)("boolean", { default: true })
|
|
6411
6987
|
], MessageTemplate.prototype, "enabled", 2);
|
|
6412
6988
|
__decorateClass([
|
|
6413
|
-
(0,
|
|
6989
|
+
(0, import_typeorm27.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6414
6990
|
], MessageTemplate.prototype, "createdAt", 2);
|
|
6415
6991
|
__decorateClass([
|
|
6416
|
-
(0,
|
|
6992
|
+
(0, import_typeorm27.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6417
6993
|
], MessageTemplate.prototype, "updatedAt", 2);
|
|
6418
6994
|
__decorateClass([
|
|
6419
|
-
(0,
|
|
6995
|
+
(0, import_typeorm27.Column)({ type: "timestamp", nullable: true })
|
|
6420
6996
|
], MessageTemplate.prototype, "deletedAt", 2);
|
|
6421
6997
|
__decorateClass([
|
|
6422
|
-
(0,
|
|
6998
|
+
(0, import_typeorm27.Column)("boolean", { default: false })
|
|
6423
6999
|
], MessageTemplate.prototype, "deleted", 2);
|
|
6424
7000
|
__decorateClass([
|
|
6425
|
-
(0,
|
|
7001
|
+
(0, import_typeorm27.Column)("int", { nullable: true })
|
|
6426
7002
|
], MessageTemplate.prototype, "createdBy", 2);
|
|
6427
7003
|
__decorateClass([
|
|
6428
|
-
(0,
|
|
7004
|
+
(0, import_typeorm27.Column)("int", { nullable: true })
|
|
6429
7005
|
], MessageTemplate.prototype, "updatedBy", 2);
|
|
6430
7006
|
__decorateClass([
|
|
6431
|
-
(0,
|
|
7007
|
+
(0, import_typeorm27.Column)("int", { nullable: true })
|
|
6432
7008
|
], MessageTemplate.prototype, "deletedBy", 2);
|
|
6433
7009
|
MessageTemplate = __decorateClass([
|
|
6434
|
-
(0,
|
|
7010
|
+
(0, import_typeorm27.Entity)("message_templates")
|
|
6435
7011
|
], MessageTemplate);
|
|
6436
7012
|
|
|
6437
7013
|
// src/entities/media.entity.ts
|
|
6438
|
-
var
|
|
7014
|
+
var import_typeorm28 = require("typeorm");
|
|
6439
7015
|
var Media = class {
|
|
6440
7016
|
id;
|
|
6441
7017
|
kind;
|
|
@@ -6454,57 +7030,57 @@ var Media = class {
|
|
|
6454
7030
|
deleted;
|
|
6455
7031
|
};
|
|
6456
7032
|
__decorateClass([
|
|
6457
|
-
(0,
|
|
7033
|
+
(0, import_typeorm28.PrimaryGeneratedColumn)()
|
|
6458
7034
|
], Media.prototype, "id", 2);
|
|
6459
7035
|
__decorateClass([
|
|
6460
|
-
(0,
|
|
7036
|
+
(0, import_typeorm28.Column)({ type: "varchar", length: 16, default: "file" })
|
|
6461
7037
|
], Media.prototype, "kind", 2);
|
|
6462
7038
|
__decorateClass([
|
|
6463
|
-
(0,
|
|
7039
|
+
(0, import_typeorm28.Column)({ type: "int", nullable: true })
|
|
6464
7040
|
], Media.prototype, "parentId", 2);
|
|
6465
7041
|
__decorateClass([
|
|
6466
|
-
(0,
|
|
6467
|
-
(0,
|
|
7042
|
+
(0, import_typeorm28.ManyToOne)(() => Media, (m) => m.children, { onDelete: "CASCADE" }),
|
|
7043
|
+
(0, import_typeorm28.JoinColumn)({ name: "parentId" })
|
|
6468
7044
|
], Media.prototype, "parent", 2);
|
|
6469
7045
|
__decorateClass([
|
|
6470
|
-
(0,
|
|
7046
|
+
(0, import_typeorm28.OneToMany)(() => Media, (m) => m.parent)
|
|
6471
7047
|
], Media.prototype, "children", 2);
|
|
6472
7048
|
__decorateClass([
|
|
6473
|
-
(0,
|
|
7049
|
+
(0, import_typeorm28.Column)("varchar")
|
|
6474
7050
|
], Media.prototype, "filename", 2);
|
|
6475
7051
|
__decorateClass([
|
|
6476
|
-
(0,
|
|
7052
|
+
(0, import_typeorm28.Column)("varchar", { nullable: true })
|
|
6477
7053
|
], Media.prototype, "url", 2);
|
|
6478
7054
|
__decorateClass([
|
|
6479
|
-
(0,
|
|
7055
|
+
(0, import_typeorm28.Column)("varchar", { nullable: true })
|
|
6480
7056
|
], Media.prototype, "mimeType", 2);
|
|
6481
7057
|
__decorateClass([
|
|
6482
|
-
(0,
|
|
7058
|
+
(0, import_typeorm28.Column)("int", { default: 0 })
|
|
6483
7059
|
], Media.prototype, "size", 2);
|
|
6484
7060
|
__decorateClass([
|
|
6485
|
-
(0,
|
|
7061
|
+
(0, import_typeorm28.Column)("varchar", { nullable: true })
|
|
6486
7062
|
], Media.prototype, "alt", 2);
|
|
6487
7063
|
__decorateClass([
|
|
6488
|
-
(0,
|
|
7064
|
+
(0, import_typeorm28.Column)("boolean", { default: false })
|
|
6489
7065
|
], Media.prototype, "isPublic", 2);
|
|
6490
7066
|
__decorateClass([
|
|
6491
|
-
(0,
|
|
7067
|
+
(0, import_typeorm28.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6492
7068
|
], Media.prototype, "createdAt", 2);
|
|
6493
7069
|
__decorateClass([
|
|
6494
|
-
(0,
|
|
7070
|
+
(0, import_typeorm28.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6495
7071
|
], Media.prototype, "updatedAt", 2);
|
|
6496
7072
|
__decorateClass([
|
|
6497
|
-
(0,
|
|
7073
|
+
(0, import_typeorm28.Column)({ type: "timestamp", nullable: true })
|
|
6498
7074
|
], Media.prototype, "deletedAt", 2);
|
|
6499
7075
|
__decorateClass([
|
|
6500
|
-
(0,
|
|
7076
|
+
(0, import_typeorm28.Column)("boolean", { default: false })
|
|
6501
7077
|
], Media.prototype, "deleted", 2);
|
|
6502
7078
|
Media = __decorateClass([
|
|
6503
|
-
(0,
|
|
7079
|
+
(0, import_typeorm28.Entity)("media")
|
|
6504
7080
|
], Media);
|
|
6505
7081
|
|
|
6506
7082
|
// src/entities/page.entity.ts
|
|
6507
|
-
var
|
|
7083
|
+
var import_typeorm29 = require("typeorm");
|
|
6508
7084
|
var Page = class {
|
|
6509
7085
|
id;
|
|
6510
7086
|
title;
|
|
@@ -6525,64 +7101,64 @@ var Page = class {
|
|
|
6525
7101
|
deletedBy;
|
|
6526
7102
|
};
|
|
6527
7103
|
__decorateClass([
|
|
6528
|
-
(0,
|
|
7104
|
+
(0, import_typeorm29.PrimaryGeneratedColumn)()
|
|
6529
7105
|
], Page.prototype, "id", 2);
|
|
6530
7106
|
__decorateClass([
|
|
6531
|
-
(0,
|
|
7107
|
+
(0, import_typeorm29.Column)("varchar")
|
|
6532
7108
|
], Page.prototype, "title", 2);
|
|
6533
7109
|
__decorateClass([
|
|
6534
|
-
(0,
|
|
7110
|
+
(0, import_typeorm29.Column)("varchar", { unique: true })
|
|
6535
7111
|
], Page.prototype, "slug", 2);
|
|
6536
7112
|
__decorateClass([
|
|
6537
|
-
(0,
|
|
7113
|
+
(0, import_typeorm29.Column)({ type: "jsonb", default: {} })
|
|
6538
7114
|
], Page.prototype, "content", 2);
|
|
6539
7115
|
__decorateClass([
|
|
6540
|
-
(0,
|
|
7116
|
+
(0, import_typeorm29.Column)("boolean", { default: false })
|
|
6541
7117
|
], Page.prototype, "published", 2);
|
|
6542
7118
|
__decorateClass([
|
|
6543
|
-
(0,
|
|
7119
|
+
(0, import_typeorm29.Column)("varchar", { default: "default" })
|
|
6544
7120
|
], Page.prototype, "theme", 2);
|
|
6545
7121
|
__decorateClass([
|
|
6546
|
-
(0,
|
|
7122
|
+
(0, import_typeorm29.Column)("int", { nullable: true })
|
|
6547
7123
|
], Page.prototype, "parentId", 2);
|
|
6548
7124
|
__decorateClass([
|
|
6549
|
-
(0,
|
|
6550
|
-
(0,
|
|
7125
|
+
(0, import_typeorm29.ManyToOne)(() => Page, { onDelete: "SET NULL" }),
|
|
7126
|
+
(0, import_typeorm29.JoinColumn)({ name: "parentId" })
|
|
6551
7127
|
], Page.prototype, "parent", 2);
|
|
6552
7128
|
__decorateClass([
|
|
6553
|
-
(0,
|
|
7129
|
+
(0, import_typeorm29.Column)("int", { nullable: true })
|
|
6554
7130
|
], Page.prototype, "seoId", 2);
|
|
6555
7131
|
__decorateClass([
|
|
6556
|
-
(0,
|
|
6557
|
-
(0,
|
|
7132
|
+
(0, import_typeorm29.ManyToOne)(() => Seo, { onDelete: "SET NULL" }),
|
|
7133
|
+
(0, import_typeorm29.JoinColumn)({ name: "seoId" })
|
|
6558
7134
|
], Page.prototype, "seo", 2);
|
|
6559
7135
|
__decorateClass([
|
|
6560
|
-
(0,
|
|
7136
|
+
(0, import_typeorm29.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6561
7137
|
], Page.prototype, "createdAt", 2);
|
|
6562
7138
|
__decorateClass([
|
|
6563
|
-
(0,
|
|
7139
|
+
(0, import_typeorm29.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6564
7140
|
], Page.prototype, "updatedAt", 2);
|
|
6565
7141
|
__decorateClass([
|
|
6566
|
-
(0,
|
|
7142
|
+
(0, import_typeorm29.Column)({ type: "timestamp", nullable: true })
|
|
6567
7143
|
], Page.prototype, "deletedAt", 2);
|
|
6568
7144
|
__decorateClass([
|
|
6569
|
-
(0,
|
|
7145
|
+
(0, import_typeorm29.Column)("boolean", { default: false })
|
|
6570
7146
|
], Page.prototype, "deleted", 2);
|
|
6571
7147
|
__decorateClass([
|
|
6572
|
-
(0,
|
|
7148
|
+
(0, import_typeorm29.Column)("int", { nullable: true })
|
|
6573
7149
|
], Page.prototype, "createdBy", 2);
|
|
6574
7150
|
__decorateClass([
|
|
6575
|
-
(0,
|
|
7151
|
+
(0, import_typeorm29.Column)("int", { nullable: true })
|
|
6576
7152
|
], Page.prototype, "updatedBy", 2);
|
|
6577
7153
|
__decorateClass([
|
|
6578
|
-
(0,
|
|
7154
|
+
(0, import_typeorm29.Column)("int", { nullable: true })
|
|
6579
7155
|
], Page.prototype, "deletedBy", 2);
|
|
6580
7156
|
Page = __decorateClass([
|
|
6581
|
-
(0,
|
|
7157
|
+
(0, import_typeorm29.Entity)("pages")
|
|
6582
7158
|
], Page);
|
|
6583
7159
|
|
|
6584
7160
|
// src/entities/product-category.entity.ts
|
|
6585
|
-
var
|
|
7161
|
+
var import_typeorm30 = require("typeorm");
|
|
6586
7162
|
var ProductCategory = class {
|
|
6587
7163
|
id;
|
|
6588
7164
|
name;
|
|
@@ -6606,75 +7182,75 @@ var ProductCategory = class {
|
|
|
6606
7182
|
collections;
|
|
6607
7183
|
};
|
|
6608
7184
|
__decorateClass([
|
|
6609
|
-
(0,
|
|
7185
|
+
(0, import_typeorm30.PrimaryGeneratedColumn)()
|
|
6610
7186
|
], ProductCategory.prototype, "id", 2);
|
|
6611
7187
|
__decorateClass([
|
|
6612
|
-
(0,
|
|
7188
|
+
(0, import_typeorm30.Column)("varchar")
|
|
6613
7189
|
], ProductCategory.prototype, "name", 2);
|
|
6614
7190
|
__decorateClass([
|
|
6615
|
-
(0,
|
|
7191
|
+
(0, import_typeorm30.Column)("varchar", { unique: true })
|
|
6616
7192
|
], ProductCategory.prototype, "slug", 2);
|
|
6617
7193
|
__decorateClass([
|
|
6618
|
-
(0,
|
|
7194
|
+
(0, import_typeorm30.Column)("int", { nullable: true })
|
|
6619
7195
|
], ProductCategory.prototype, "parentId", 2);
|
|
6620
7196
|
__decorateClass([
|
|
6621
|
-
(0,
|
|
7197
|
+
(0, import_typeorm30.Column)("varchar", { nullable: true })
|
|
6622
7198
|
], ProductCategory.prototype, "image", 2);
|
|
6623
7199
|
__decorateClass([
|
|
6624
|
-
(0,
|
|
7200
|
+
(0, import_typeorm30.Column)("text", { nullable: true })
|
|
6625
7201
|
], ProductCategory.prototype, "description", 2);
|
|
6626
7202
|
__decorateClass([
|
|
6627
|
-
(0,
|
|
7203
|
+
(0, import_typeorm30.Column)("jsonb", { nullable: true })
|
|
6628
7204
|
], ProductCategory.prototype, "metadata", 2);
|
|
6629
7205
|
__decorateClass([
|
|
6630
|
-
(0,
|
|
7206
|
+
(0, import_typeorm30.Column)("boolean", { default: true })
|
|
6631
7207
|
], ProductCategory.prototype, "active", 2);
|
|
6632
7208
|
__decorateClass([
|
|
6633
|
-
(0,
|
|
7209
|
+
(0, import_typeorm30.Column)("int", { default: 0 })
|
|
6634
7210
|
], ProductCategory.prototype, "sortOrder", 2);
|
|
6635
7211
|
__decorateClass([
|
|
6636
|
-
(0,
|
|
7212
|
+
(0, import_typeorm30.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6637
7213
|
], ProductCategory.prototype, "createdAt", 2);
|
|
6638
7214
|
__decorateClass([
|
|
6639
|
-
(0,
|
|
7215
|
+
(0, import_typeorm30.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6640
7216
|
], ProductCategory.prototype, "updatedAt", 2);
|
|
6641
7217
|
__decorateClass([
|
|
6642
|
-
(0,
|
|
7218
|
+
(0, import_typeorm30.Column)({ type: "timestamp", nullable: true })
|
|
6643
7219
|
], ProductCategory.prototype, "deletedAt", 2);
|
|
6644
7220
|
__decorateClass([
|
|
6645
|
-
(0,
|
|
7221
|
+
(0, import_typeorm30.Column)("boolean", { default: false })
|
|
6646
7222
|
], ProductCategory.prototype, "deleted", 2);
|
|
6647
7223
|
__decorateClass([
|
|
6648
|
-
(0,
|
|
7224
|
+
(0, import_typeorm30.Column)("int", { nullable: true })
|
|
6649
7225
|
], ProductCategory.prototype, "createdBy", 2);
|
|
6650
7226
|
__decorateClass([
|
|
6651
|
-
(0,
|
|
7227
|
+
(0, import_typeorm30.Column)("int", { nullable: true })
|
|
6652
7228
|
], ProductCategory.prototype, "updatedBy", 2);
|
|
6653
7229
|
__decorateClass([
|
|
6654
|
-
(0,
|
|
7230
|
+
(0, import_typeorm30.Column)("int", { nullable: true })
|
|
6655
7231
|
], ProductCategory.prototype, "deletedBy", 2);
|
|
6656
7232
|
__decorateClass([
|
|
6657
|
-
(0,
|
|
6658
|
-
(0,
|
|
7233
|
+
(0, import_typeorm30.ManyToOne)(() => ProductCategory, (c) => c.children, { onDelete: "SET NULL" }),
|
|
7234
|
+
(0, import_typeorm30.JoinColumn)({ name: "parentId" })
|
|
6659
7235
|
], ProductCategory.prototype, "parent", 2);
|
|
6660
7236
|
__decorateClass([
|
|
6661
|
-
(0,
|
|
7237
|
+
(0, import_typeorm30.OneToMany)(() => ProductCategory, (c) => c.parent)
|
|
6662
7238
|
], ProductCategory.prototype, "children", 2);
|
|
6663
7239
|
__decorateClass([
|
|
6664
|
-
(0,
|
|
7240
|
+
(0, import_typeorm30.OneToMany)("Product", "category")
|
|
6665
7241
|
], ProductCategory.prototype, "products", 2);
|
|
6666
7242
|
__decorateClass([
|
|
6667
|
-
(0,
|
|
7243
|
+
(0, import_typeorm30.OneToMany)("Collection", "category")
|
|
6668
7244
|
], ProductCategory.prototype, "collections", 2);
|
|
6669
7245
|
ProductCategory = __decorateClass([
|
|
6670
|
-
(0,
|
|
7246
|
+
(0, import_typeorm30.Entity)("product_categories")
|
|
6671
7247
|
], ProductCategory);
|
|
6672
7248
|
|
|
6673
7249
|
// src/entities/collection.entity.ts
|
|
6674
|
-
var
|
|
7250
|
+
var import_typeorm32 = require("typeorm");
|
|
6675
7251
|
|
|
6676
7252
|
// src/entities/brand.entity.ts
|
|
6677
|
-
var
|
|
7253
|
+
var import_typeorm31 = require("typeorm");
|
|
6678
7254
|
var Brand = class {
|
|
6679
7255
|
id;
|
|
6680
7256
|
name;
|
|
@@ -6697,65 +7273,65 @@ var Brand = class {
|
|
|
6697
7273
|
collections;
|
|
6698
7274
|
};
|
|
6699
7275
|
__decorateClass([
|
|
6700
|
-
(0,
|
|
7276
|
+
(0, import_typeorm31.PrimaryGeneratedColumn)()
|
|
6701
7277
|
], Brand.prototype, "id", 2);
|
|
6702
7278
|
__decorateClass([
|
|
6703
|
-
(0,
|
|
7279
|
+
(0, import_typeorm31.Column)("varchar")
|
|
6704
7280
|
], Brand.prototype, "name", 2);
|
|
6705
7281
|
__decorateClass([
|
|
6706
|
-
(0,
|
|
7282
|
+
(0, import_typeorm31.Column)("varchar", { unique: true })
|
|
6707
7283
|
], Brand.prototype, "slug", 2);
|
|
6708
7284
|
__decorateClass([
|
|
6709
|
-
(0,
|
|
7285
|
+
(0, import_typeorm31.Column)("varchar", { nullable: true })
|
|
6710
7286
|
], Brand.prototype, "logo", 2);
|
|
6711
7287
|
__decorateClass([
|
|
6712
|
-
(0,
|
|
7288
|
+
(0, import_typeorm31.Column)("jsonb", { nullable: true })
|
|
6713
7289
|
], Brand.prototype, "metadata", 2);
|
|
6714
7290
|
__decorateClass([
|
|
6715
|
-
(0,
|
|
7291
|
+
(0, import_typeorm31.Column)("text", { nullable: true })
|
|
6716
7292
|
], Brand.prototype, "description", 2);
|
|
6717
7293
|
__decorateClass([
|
|
6718
|
-
(0,
|
|
7294
|
+
(0, import_typeorm31.Column)("boolean", { default: true })
|
|
6719
7295
|
], Brand.prototype, "active", 2);
|
|
6720
7296
|
__decorateClass([
|
|
6721
|
-
(0,
|
|
7297
|
+
(0, import_typeorm31.Column)("int", { default: 0 })
|
|
6722
7298
|
], Brand.prototype, "sortOrder", 2);
|
|
6723
7299
|
__decorateClass([
|
|
6724
|
-
(0,
|
|
7300
|
+
(0, import_typeorm31.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6725
7301
|
], Brand.prototype, "createdAt", 2);
|
|
6726
7302
|
__decorateClass([
|
|
6727
|
-
(0,
|
|
7303
|
+
(0, import_typeorm31.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6728
7304
|
], Brand.prototype, "updatedAt", 2);
|
|
6729
7305
|
__decorateClass([
|
|
6730
|
-
(0,
|
|
7306
|
+
(0, import_typeorm31.Column)({ type: "timestamp", nullable: true })
|
|
6731
7307
|
], Brand.prototype, "deletedAt", 2);
|
|
6732
7308
|
__decorateClass([
|
|
6733
|
-
(0,
|
|
7309
|
+
(0, import_typeorm31.Column)("boolean", { default: false })
|
|
6734
7310
|
], Brand.prototype, "deleted", 2);
|
|
6735
7311
|
__decorateClass([
|
|
6736
|
-
(0,
|
|
7312
|
+
(0, import_typeorm31.Column)("int", { nullable: true })
|
|
6737
7313
|
], Brand.prototype, "createdBy", 2);
|
|
6738
7314
|
__decorateClass([
|
|
6739
|
-
(0,
|
|
7315
|
+
(0, import_typeorm31.Column)("int", { nullable: true })
|
|
6740
7316
|
], Brand.prototype, "updatedBy", 2);
|
|
6741
7317
|
__decorateClass([
|
|
6742
|
-
(0,
|
|
7318
|
+
(0, import_typeorm31.Column)("int", { nullable: true })
|
|
6743
7319
|
], Brand.prototype, "deletedBy", 2);
|
|
6744
7320
|
__decorateClass([
|
|
6745
|
-
(0,
|
|
7321
|
+
(0, import_typeorm31.Column)("int", { nullable: true })
|
|
6746
7322
|
], Brand.prototype, "seoId", 2);
|
|
6747
7323
|
__decorateClass([
|
|
6748
|
-
(0,
|
|
6749
|
-
(0,
|
|
7324
|
+
(0, import_typeorm31.ManyToOne)(() => Seo, { onDelete: "SET NULL" }),
|
|
7325
|
+
(0, import_typeorm31.JoinColumn)({ name: "seoId" })
|
|
6750
7326
|
], Brand.prototype, "seo", 2);
|
|
6751
7327
|
__decorateClass([
|
|
6752
|
-
(0,
|
|
7328
|
+
(0, import_typeorm31.OneToMany)("Product", "brand")
|
|
6753
7329
|
], Brand.prototype, "products", 2);
|
|
6754
7330
|
__decorateClass([
|
|
6755
|
-
(0,
|
|
7331
|
+
(0, import_typeorm31.OneToMany)("Collection", "brand")
|
|
6756
7332
|
], Brand.prototype, "collections", 2);
|
|
6757
7333
|
Brand = __decorateClass([
|
|
6758
|
-
(0,
|
|
7334
|
+
(0, import_typeorm31.Entity)("brands")
|
|
6759
7335
|
], Brand);
|
|
6760
7336
|
|
|
6761
7337
|
// src/entities/collection.entity.ts
|
|
@@ -6786,86 +7362,86 @@ var Collection = class {
|
|
|
6786
7362
|
products;
|
|
6787
7363
|
};
|
|
6788
7364
|
__decorateClass([
|
|
6789
|
-
(0,
|
|
7365
|
+
(0, import_typeorm32.PrimaryGeneratedColumn)()
|
|
6790
7366
|
], Collection.prototype, "id", 2);
|
|
6791
7367
|
__decorateClass([
|
|
6792
|
-
(0,
|
|
7368
|
+
(0, import_typeorm32.Column)("int", { nullable: true })
|
|
6793
7369
|
], Collection.prototype, "categoryId", 2);
|
|
6794
7370
|
__decorateClass([
|
|
6795
|
-
(0,
|
|
7371
|
+
(0, import_typeorm32.Column)("int", { nullable: true })
|
|
6796
7372
|
], Collection.prototype, "brandId", 2);
|
|
6797
7373
|
__decorateClass([
|
|
6798
|
-
(0,
|
|
7374
|
+
(0, import_typeorm32.Column)("varchar")
|
|
6799
7375
|
], Collection.prototype, "name", 2);
|
|
6800
7376
|
__decorateClass([
|
|
6801
|
-
(0,
|
|
7377
|
+
(0, import_typeorm32.Column)("varchar", { unique: true })
|
|
6802
7378
|
], Collection.prototype, "slug", 2);
|
|
6803
7379
|
__decorateClass([
|
|
6804
|
-
(0,
|
|
7380
|
+
(0, import_typeorm32.Column)("varchar", { nullable: true })
|
|
6805
7381
|
], Collection.prototype, "hsn", 2);
|
|
6806
7382
|
__decorateClass([
|
|
6807
|
-
(0,
|
|
7383
|
+
(0, import_typeorm32.Column)("text", { nullable: true })
|
|
6808
7384
|
], Collection.prototype, "description", 2);
|
|
6809
7385
|
__decorateClass([
|
|
6810
|
-
(0,
|
|
7386
|
+
(0, import_typeorm32.Column)("varchar", { nullable: true })
|
|
6811
7387
|
], Collection.prototype, "image", 2);
|
|
6812
7388
|
__decorateClass([
|
|
6813
|
-
(0,
|
|
7389
|
+
(0, import_typeorm32.Column)("jsonb", { nullable: true })
|
|
6814
7390
|
], Collection.prototype, "metadata", 2);
|
|
6815
7391
|
__decorateClass([
|
|
6816
|
-
(0,
|
|
7392
|
+
(0, import_typeorm32.Column)("jsonb", { nullable: true })
|
|
6817
7393
|
], Collection.prototype, "variants", 2);
|
|
6818
7394
|
__decorateClass([
|
|
6819
|
-
(0,
|
|
7395
|
+
(0, import_typeorm32.Column)("boolean", { default: true })
|
|
6820
7396
|
], Collection.prototype, "active", 2);
|
|
6821
7397
|
__decorateClass([
|
|
6822
|
-
(0,
|
|
7398
|
+
(0, import_typeorm32.Column)("int", { default: 0 })
|
|
6823
7399
|
], Collection.prototype, "sortOrder", 2);
|
|
6824
7400
|
__decorateClass([
|
|
6825
|
-
(0,
|
|
7401
|
+
(0, import_typeorm32.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6826
7402
|
], Collection.prototype, "createdAt", 2);
|
|
6827
7403
|
__decorateClass([
|
|
6828
|
-
(0,
|
|
7404
|
+
(0, import_typeorm32.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6829
7405
|
], Collection.prototype, "updatedAt", 2);
|
|
6830
7406
|
__decorateClass([
|
|
6831
|
-
(0,
|
|
7407
|
+
(0, import_typeorm32.Column)({ type: "timestamp", nullable: true })
|
|
6832
7408
|
], Collection.prototype, "deletedAt", 2);
|
|
6833
7409
|
__decorateClass([
|
|
6834
|
-
(0,
|
|
7410
|
+
(0, import_typeorm32.Column)("boolean", { default: false })
|
|
6835
7411
|
], Collection.prototype, "deleted", 2);
|
|
6836
7412
|
__decorateClass([
|
|
6837
|
-
(0,
|
|
7413
|
+
(0, import_typeorm32.Column)("int", { nullable: true })
|
|
6838
7414
|
], Collection.prototype, "createdBy", 2);
|
|
6839
7415
|
__decorateClass([
|
|
6840
|
-
(0,
|
|
7416
|
+
(0, import_typeorm32.Column)("int", { nullable: true })
|
|
6841
7417
|
], Collection.prototype, "updatedBy", 2);
|
|
6842
7418
|
__decorateClass([
|
|
6843
|
-
(0,
|
|
7419
|
+
(0, import_typeorm32.Column)("int", { nullable: true })
|
|
6844
7420
|
], Collection.prototype, "deletedBy", 2);
|
|
6845
7421
|
__decorateClass([
|
|
6846
|
-
(0,
|
|
7422
|
+
(0, import_typeorm32.Column)("int", { nullable: true })
|
|
6847
7423
|
], Collection.prototype, "seoId", 2);
|
|
6848
7424
|
__decorateClass([
|
|
6849
|
-
(0,
|
|
6850
|
-
(0,
|
|
7425
|
+
(0, import_typeorm32.ManyToOne)(() => Seo, { onDelete: "SET NULL" }),
|
|
7426
|
+
(0, import_typeorm32.JoinColumn)({ name: "seoId" })
|
|
6851
7427
|
], Collection.prototype, "seo", 2);
|
|
6852
7428
|
__decorateClass([
|
|
6853
|
-
(0,
|
|
6854
|
-
(0,
|
|
7429
|
+
(0, import_typeorm32.ManyToOne)(() => ProductCategory, (c) => c.collections, { onDelete: "SET NULL" }),
|
|
7430
|
+
(0, import_typeorm32.JoinColumn)({ name: "categoryId" })
|
|
6855
7431
|
], Collection.prototype, "category", 2);
|
|
6856
7432
|
__decorateClass([
|
|
6857
|
-
(0,
|
|
6858
|
-
(0,
|
|
7433
|
+
(0, import_typeorm32.ManyToOne)(() => Brand, (b) => b.collections, { onDelete: "SET NULL" }),
|
|
7434
|
+
(0, import_typeorm32.JoinColumn)({ name: "brandId" })
|
|
6859
7435
|
], Collection.prototype, "brand", 2);
|
|
6860
7436
|
__decorateClass([
|
|
6861
|
-
(0,
|
|
7437
|
+
(0, import_typeorm32.OneToMany)("Product", "collection")
|
|
6862
7438
|
], Collection.prototype, "products", 2);
|
|
6863
7439
|
Collection = __decorateClass([
|
|
6864
|
-
(0,
|
|
7440
|
+
(0, import_typeorm32.Entity)("collections")
|
|
6865
7441
|
], Collection);
|
|
6866
7442
|
|
|
6867
7443
|
// src/entities/product.entity.ts
|
|
6868
|
-
var
|
|
7444
|
+
var import_typeorm33 = require("typeorm");
|
|
6869
7445
|
var Product = class {
|
|
6870
7446
|
id;
|
|
6871
7447
|
collectionId;
|
|
@@ -6899,105 +7475,105 @@ var Product = class {
|
|
|
6899
7475
|
taxes;
|
|
6900
7476
|
};
|
|
6901
7477
|
__decorateClass([
|
|
6902
|
-
(0,
|
|
7478
|
+
(0, import_typeorm33.PrimaryGeneratedColumn)()
|
|
6903
7479
|
], Product.prototype, "id", 2);
|
|
6904
7480
|
__decorateClass([
|
|
6905
|
-
(0,
|
|
7481
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6906
7482
|
], Product.prototype, "collectionId", 2);
|
|
6907
7483
|
__decorateClass([
|
|
6908
|
-
(0,
|
|
7484
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6909
7485
|
], Product.prototype, "brandId", 2);
|
|
6910
7486
|
__decorateClass([
|
|
6911
|
-
(0,
|
|
7487
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6912
7488
|
], Product.prototype, "categoryId", 2);
|
|
6913
7489
|
__decorateClass([
|
|
6914
|
-
(0,
|
|
7490
|
+
(0, import_typeorm33.Column)("varchar", { nullable: true })
|
|
6915
7491
|
], Product.prototype, "sku", 2);
|
|
6916
7492
|
__decorateClass([
|
|
6917
|
-
(0,
|
|
7493
|
+
(0, import_typeorm33.Column)("varchar", { nullable: true })
|
|
6918
7494
|
], Product.prototype, "hsn", 2);
|
|
6919
7495
|
__decorateClass([
|
|
6920
|
-
(0,
|
|
7496
|
+
(0, import_typeorm33.Column)("varchar", { nullable: true })
|
|
6921
7497
|
], Product.prototype, "uom", 2);
|
|
6922
7498
|
__decorateClass([
|
|
6923
|
-
(0,
|
|
7499
|
+
(0, import_typeorm33.Column)("varchar", { default: "product" })
|
|
6924
7500
|
], Product.prototype, "type", 2);
|
|
6925
7501
|
__decorateClass([
|
|
6926
|
-
(0,
|
|
7502
|
+
(0, import_typeorm33.Column)("varchar", { unique: true, nullable: true })
|
|
6927
7503
|
], Product.prototype, "slug", 2);
|
|
6928
7504
|
__decorateClass([
|
|
6929
|
-
(0,
|
|
7505
|
+
(0, import_typeorm33.Column)("varchar", { nullable: true })
|
|
6930
7506
|
], Product.prototype, "name", 2);
|
|
6931
7507
|
__decorateClass([
|
|
6932
|
-
(0,
|
|
7508
|
+
(0, import_typeorm33.Column)("decimal", { precision: 12, scale: 2 })
|
|
6933
7509
|
], Product.prototype, "price", 2);
|
|
6934
7510
|
__decorateClass([
|
|
6935
|
-
(0,
|
|
7511
|
+
(0, import_typeorm33.Column)("decimal", { precision: 12, scale: 2, nullable: true })
|
|
6936
7512
|
], Product.prototype, "compareAtPrice", 2);
|
|
6937
7513
|
__decorateClass([
|
|
6938
|
-
(0,
|
|
7514
|
+
(0, import_typeorm33.Column)("int", { default: 0 })
|
|
6939
7515
|
], Product.prototype, "quantity", 2);
|
|
6940
7516
|
__decorateClass([
|
|
6941
|
-
(0,
|
|
7517
|
+
(0, import_typeorm33.Column)("varchar", { default: "draft" })
|
|
6942
7518
|
], Product.prototype, "status", 2);
|
|
6943
7519
|
__decorateClass([
|
|
6944
|
-
(0,
|
|
7520
|
+
(0, import_typeorm33.Column)("boolean", { default: false })
|
|
6945
7521
|
], Product.prototype, "featured", 2);
|
|
6946
7522
|
__decorateClass([
|
|
6947
|
-
(0,
|
|
7523
|
+
(0, import_typeorm33.Column)("jsonb", { nullable: true })
|
|
6948
7524
|
], Product.prototype, "metadata", 2);
|
|
6949
7525
|
__decorateClass([
|
|
6950
|
-
(0,
|
|
7526
|
+
(0, import_typeorm33.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6951
7527
|
], Product.prototype, "createdAt", 2);
|
|
6952
7528
|
__decorateClass([
|
|
6953
|
-
(0,
|
|
7529
|
+
(0, import_typeorm33.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
6954
7530
|
], Product.prototype, "updatedAt", 2);
|
|
6955
7531
|
__decorateClass([
|
|
6956
|
-
(0,
|
|
7532
|
+
(0, import_typeorm33.Column)({ type: "timestamp", nullable: true })
|
|
6957
7533
|
], Product.prototype, "deletedAt", 2);
|
|
6958
7534
|
__decorateClass([
|
|
6959
|
-
(0,
|
|
7535
|
+
(0, import_typeorm33.Column)("boolean", { default: false })
|
|
6960
7536
|
], Product.prototype, "deleted", 2);
|
|
6961
7537
|
__decorateClass([
|
|
6962
|
-
(0,
|
|
7538
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6963
7539
|
], Product.prototype, "createdBy", 2);
|
|
6964
7540
|
__decorateClass([
|
|
6965
|
-
(0,
|
|
7541
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6966
7542
|
], Product.prototype, "updatedBy", 2);
|
|
6967
7543
|
__decorateClass([
|
|
6968
|
-
(0,
|
|
7544
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6969
7545
|
], Product.prototype, "deletedBy", 2);
|
|
6970
7546
|
__decorateClass([
|
|
6971
|
-
(0,
|
|
7547
|
+
(0, import_typeorm33.Column)("int", { nullable: true })
|
|
6972
7548
|
], Product.prototype, "seoId", 2);
|
|
6973
7549
|
__decorateClass([
|
|
6974
|
-
(0,
|
|
6975
|
-
(0,
|
|
7550
|
+
(0, import_typeorm33.ManyToOne)(() => Seo, { onDelete: "SET NULL" }),
|
|
7551
|
+
(0, import_typeorm33.JoinColumn)({ name: "seoId" })
|
|
6976
7552
|
], Product.prototype, "seo", 2);
|
|
6977
7553
|
__decorateClass([
|
|
6978
|
-
(0,
|
|
6979
|
-
(0,
|
|
7554
|
+
(0, import_typeorm33.ManyToOne)(() => Collection, (c) => c.products, { onDelete: "SET NULL" }),
|
|
7555
|
+
(0, import_typeorm33.JoinColumn)({ name: "collectionId" })
|
|
6980
7556
|
], Product.prototype, "collection", 2);
|
|
6981
7557
|
__decorateClass([
|
|
6982
|
-
(0,
|
|
6983
|
-
(0,
|
|
7558
|
+
(0, import_typeorm33.ManyToOne)(() => Brand, (b) => b.products, { onDelete: "SET NULL" }),
|
|
7559
|
+
(0, import_typeorm33.JoinColumn)({ name: "brandId" })
|
|
6984
7560
|
], Product.prototype, "brand", 2);
|
|
6985
7561
|
__decorateClass([
|
|
6986
|
-
(0,
|
|
6987
|
-
(0,
|
|
7562
|
+
(0, import_typeorm33.ManyToOne)(() => ProductCategory, (c) => c.products, { onDelete: "SET NULL" }),
|
|
7563
|
+
(0, import_typeorm33.JoinColumn)({ name: "categoryId" })
|
|
6988
7564
|
], Product.prototype, "category", 2);
|
|
6989
7565
|
__decorateClass([
|
|
6990
|
-
(0,
|
|
7566
|
+
(0, import_typeorm33.OneToMany)("ProductAttribute", "product")
|
|
6991
7567
|
], Product.prototype, "attributes", 2);
|
|
6992
7568
|
__decorateClass([
|
|
6993
|
-
(0,
|
|
7569
|
+
(0, import_typeorm33.OneToMany)("ProductTax", "product")
|
|
6994
7570
|
], Product.prototype, "taxes", 2);
|
|
6995
7571
|
Product = __decorateClass([
|
|
6996
|
-
(0,
|
|
7572
|
+
(0, import_typeorm33.Entity)("products")
|
|
6997
7573
|
], Product);
|
|
6998
7574
|
|
|
6999
7575
|
// src/entities/attribute.entity.ts
|
|
7000
|
-
var
|
|
7576
|
+
var import_typeorm34 = require("typeorm");
|
|
7001
7577
|
var Attribute = class {
|
|
7002
7578
|
id;
|
|
7003
7579
|
name;
|
|
@@ -7016,56 +7592,56 @@ var Attribute = class {
|
|
|
7016
7592
|
deletedBy;
|
|
7017
7593
|
};
|
|
7018
7594
|
__decorateClass([
|
|
7019
|
-
(0,
|
|
7595
|
+
(0, import_typeorm34.PrimaryGeneratedColumn)()
|
|
7020
7596
|
], Attribute.prototype, "id", 2);
|
|
7021
7597
|
__decorateClass([
|
|
7022
|
-
(0,
|
|
7598
|
+
(0, import_typeorm34.Column)("varchar")
|
|
7023
7599
|
], Attribute.prototype, "name", 2);
|
|
7024
7600
|
__decorateClass([
|
|
7025
|
-
(0,
|
|
7601
|
+
(0, import_typeorm34.Column)("varchar", { unique: true })
|
|
7026
7602
|
], Attribute.prototype, "slug", 2);
|
|
7027
7603
|
__decorateClass([
|
|
7028
|
-
(0,
|
|
7604
|
+
(0, import_typeorm34.Column)("varchar", { default: "text" })
|
|
7029
7605
|
], Attribute.prototype, "type", 2);
|
|
7030
7606
|
__decorateClass([
|
|
7031
|
-
(0,
|
|
7607
|
+
(0, import_typeorm34.Column)("jsonb", { nullable: true })
|
|
7032
7608
|
], Attribute.prototype, "options", 2);
|
|
7033
7609
|
__decorateClass([
|
|
7034
|
-
(0,
|
|
7610
|
+
(0, import_typeorm34.Column)("jsonb", { nullable: true })
|
|
7035
7611
|
], Attribute.prototype, "metadata", 2);
|
|
7036
7612
|
__decorateClass([
|
|
7037
|
-
(0,
|
|
7613
|
+
(0, import_typeorm34.Column)("boolean", { default: true })
|
|
7038
7614
|
], Attribute.prototype, "active", 2);
|
|
7039
7615
|
__decorateClass([
|
|
7040
|
-
(0,
|
|
7616
|
+
(0, import_typeorm34.Column)("int", { default: 0 })
|
|
7041
7617
|
], Attribute.prototype, "sortOrder", 2);
|
|
7042
7618
|
__decorateClass([
|
|
7043
|
-
(0,
|
|
7619
|
+
(0, import_typeorm34.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7044
7620
|
], Attribute.prototype, "createdAt", 2);
|
|
7045
7621
|
__decorateClass([
|
|
7046
|
-
(0,
|
|
7622
|
+
(0, import_typeorm34.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7047
7623
|
], Attribute.prototype, "updatedAt", 2);
|
|
7048
7624
|
__decorateClass([
|
|
7049
|
-
(0,
|
|
7625
|
+
(0, import_typeorm34.Column)({ type: "timestamp", nullable: true })
|
|
7050
7626
|
], Attribute.prototype, "deletedAt", 2);
|
|
7051
7627
|
__decorateClass([
|
|
7052
|
-
(0,
|
|
7628
|
+
(0, import_typeorm34.Column)("boolean", { default: false })
|
|
7053
7629
|
], Attribute.prototype, "deleted", 2);
|
|
7054
7630
|
__decorateClass([
|
|
7055
|
-
(0,
|
|
7631
|
+
(0, import_typeorm34.Column)("int", { nullable: true })
|
|
7056
7632
|
], Attribute.prototype, "createdBy", 2);
|
|
7057
7633
|
__decorateClass([
|
|
7058
|
-
(0,
|
|
7634
|
+
(0, import_typeorm34.Column)("int", { nullable: true })
|
|
7059
7635
|
], Attribute.prototype, "updatedBy", 2);
|
|
7060
7636
|
__decorateClass([
|
|
7061
|
-
(0,
|
|
7637
|
+
(0, import_typeorm34.Column)("int", { nullable: true })
|
|
7062
7638
|
], Attribute.prototype, "deletedBy", 2);
|
|
7063
7639
|
Attribute = __decorateClass([
|
|
7064
|
-
(0,
|
|
7640
|
+
(0, import_typeorm34.Entity)("attributes")
|
|
7065
7641
|
], Attribute);
|
|
7066
7642
|
|
|
7067
7643
|
// src/entities/product-attribute.entity.ts
|
|
7068
|
-
var
|
|
7644
|
+
var import_typeorm35 = require("typeorm");
|
|
7069
7645
|
var ProductAttribute = class {
|
|
7070
7646
|
id;
|
|
7071
7647
|
productId;
|
|
@@ -7078,40 +7654,40 @@ var ProductAttribute = class {
|
|
|
7078
7654
|
attribute;
|
|
7079
7655
|
};
|
|
7080
7656
|
__decorateClass([
|
|
7081
|
-
(0,
|
|
7657
|
+
(0, import_typeorm35.PrimaryGeneratedColumn)()
|
|
7082
7658
|
], ProductAttribute.prototype, "id", 2);
|
|
7083
7659
|
__decorateClass([
|
|
7084
|
-
(0,
|
|
7660
|
+
(0, import_typeorm35.Column)("int")
|
|
7085
7661
|
], ProductAttribute.prototype, "productId", 2);
|
|
7086
7662
|
__decorateClass([
|
|
7087
|
-
(0,
|
|
7663
|
+
(0, import_typeorm35.Column)("int")
|
|
7088
7664
|
], ProductAttribute.prototype, "attributeId", 2);
|
|
7089
7665
|
__decorateClass([
|
|
7090
|
-
(0,
|
|
7666
|
+
(0, import_typeorm35.Column)("varchar")
|
|
7091
7667
|
], ProductAttribute.prototype, "value", 2);
|
|
7092
7668
|
__decorateClass([
|
|
7093
|
-
(0,
|
|
7669
|
+
(0, import_typeorm35.Column)("jsonb", { nullable: true })
|
|
7094
7670
|
], ProductAttribute.prototype, "metadata", 2);
|
|
7095
7671
|
__decorateClass([
|
|
7096
|
-
(0,
|
|
7672
|
+
(0, import_typeorm35.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7097
7673
|
], ProductAttribute.prototype, "createdAt", 2);
|
|
7098
7674
|
__decorateClass([
|
|
7099
|
-
(0,
|
|
7675
|
+
(0, import_typeorm35.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7100
7676
|
], ProductAttribute.prototype, "updatedAt", 2);
|
|
7101
7677
|
__decorateClass([
|
|
7102
|
-
(0,
|
|
7103
|
-
(0,
|
|
7678
|
+
(0, import_typeorm35.ManyToOne)(() => Product, (p) => p.attributes, { onDelete: "CASCADE" }),
|
|
7679
|
+
(0, import_typeorm35.JoinColumn)({ name: "productId" })
|
|
7104
7680
|
], ProductAttribute.prototype, "product", 2);
|
|
7105
7681
|
__decorateClass([
|
|
7106
|
-
(0,
|
|
7107
|
-
(0,
|
|
7682
|
+
(0, import_typeorm35.ManyToOne)(() => Attribute, { onDelete: "CASCADE" }),
|
|
7683
|
+
(0, import_typeorm35.JoinColumn)({ name: "attributeId" })
|
|
7108
7684
|
], ProductAttribute.prototype, "attribute", 2);
|
|
7109
7685
|
ProductAttribute = __decorateClass([
|
|
7110
|
-
(0,
|
|
7686
|
+
(0, import_typeorm35.Entity)("product_attributes")
|
|
7111
7687
|
], ProductAttribute);
|
|
7112
7688
|
|
|
7113
7689
|
// src/entities/tax.entity.ts
|
|
7114
|
-
var
|
|
7690
|
+
var import_typeorm36 = require("typeorm");
|
|
7115
7691
|
var Tax = class {
|
|
7116
7692
|
id;
|
|
7117
7693
|
name;
|
|
@@ -7130,56 +7706,56 @@ var Tax = class {
|
|
|
7130
7706
|
deletedBy;
|
|
7131
7707
|
};
|
|
7132
7708
|
__decorateClass([
|
|
7133
|
-
(0,
|
|
7709
|
+
(0, import_typeorm36.PrimaryGeneratedColumn)()
|
|
7134
7710
|
], Tax.prototype, "id", 2);
|
|
7135
7711
|
__decorateClass([
|
|
7136
|
-
(0,
|
|
7712
|
+
(0, import_typeorm36.Column)("varchar")
|
|
7137
7713
|
], Tax.prototype, "name", 2);
|
|
7138
7714
|
__decorateClass([
|
|
7139
|
-
(0,
|
|
7715
|
+
(0, import_typeorm36.Column)("varchar", { unique: true })
|
|
7140
7716
|
], Tax.prototype, "slug", 2);
|
|
7141
7717
|
__decorateClass([
|
|
7142
|
-
(0,
|
|
7718
|
+
(0, import_typeorm36.Column)("decimal", { precision: 5, scale: 2 })
|
|
7143
7719
|
], Tax.prototype, "rate", 2);
|
|
7144
7720
|
__decorateClass([
|
|
7145
|
-
(0,
|
|
7721
|
+
(0, import_typeorm36.Column)("boolean", { default: false })
|
|
7146
7722
|
], Tax.prototype, "isDefault", 2);
|
|
7147
7723
|
__decorateClass([
|
|
7148
|
-
(0,
|
|
7724
|
+
(0, import_typeorm36.Column)("text", { nullable: true })
|
|
7149
7725
|
], Tax.prototype, "description", 2);
|
|
7150
7726
|
__decorateClass([
|
|
7151
|
-
(0,
|
|
7727
|
+
(0, import_typeorm36.Column)("boolean", { default: true })
|
|
7152
7728
|
], Tax.prototype, "active", 2);
|
|
7153
7729
|
__decorateClass([
|
|
7154
|
-
(0,
|
|
7730
|
+
(0, import_typeorm36.Column)("jsonb", { nullable: true })
|
|
7155
7731
|
], Tax.prototype, "metadata", 2);
|
|
7156
7732
|
__decorateClass([
|
|
7157
|
-
(0,
|
|
7733
|
+
(0, import_typeorm36.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7158
7734
|
], Tax.prototype, "createdAt", 2);
|
|
7159
7735
|
__decorateClass([
|
|
7160
|
-
(0,
|
|
7736
|
+
(0, import_typeorm36.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7161
7737
|
], Tax.prototype, "updatedAt", 2);
|
|
7162
7738
|
__decorateClass([
|
|
7163
|
-
(0,
|
|
7739
|
+
(0, import_typeorm36.Column)({ type: "timestamp", nullable: true })
|
|
7164
7740
|
], Tax.prototype, "deletedAt", 2);
|
|
7165
7741
|
__decorateClass([
|
|
7166
|
-
(0,
|
|
7742
|
+
(0, import_typeorm36.Column)("boolean", { default: false })
|
|
7167
7743
|
], Tax.prototype, "deleted", 2);
|
|
7168
7744
|
__decorateClass([
|
|
7169
|
-
(0,
|
|
7745
|
+
(0, import_typeorm36.Column)("int", { nullable: true })
|
|
7170
7746
|
], Tax.prototype, "createdBy", 2);
|
|
7171
7747
|
__decorateClass([
|
|
7172
|
-
(0,
|
|
7748
|
+
(0, import_typeorm36.Column)("int", { nullable: true })
|
|
7173
7749
|
], Tax.prototype, "updatedBy", 2);
|
|
7174
7750
|
__decorateClass([
|
|
7175
|
-
(0,
|
|
7751
|
+
(0, import_typeorm36.Column)("int", { nullable: true })
|
|
7176
7752
|
], Tax.prototype, "deletedBy", 2);
|
|
7177
7753
|
Tax = __decorateClass([
|
|
7178
|
-
(0,
|
|
7754
|
+
(0, import_typeorm36.Entity)("taxes")
|
|
7179
7755
|
], Tax);
|
|
7180
7756
|
|
|
7181
7757
|
// src/entities/product-tax.entity.ts
|
|
7182
|
-
var
|
|
7758
|
+
var import_typeorm37 = require("typeorm");
|
|
7183
7759
|
var ProductTax = class {
|
|
7184
7760
|
id;
|
|
7185
7761
|
productId;
|
|
@@ -7191,37 +7767,37 @@ var ProductTax = class {
|
|
|
7191
7767
|
tax;
|
|
7192
7768
|
};
|
|
7193
7769
|
__decorateClass([
|
|
7194
|
-
(0,
|
|
7770
|
+
(0, import_typeorm37.PrimaryGeneratedColumn)()
|
|
7195
7771
|
], ProductTax.prototype, "id", 2);
|
|
7196
7772
|
__decorateClass([
|
|
7197
|
-
(0,
|
|
7773
|
+
(0, import_typeorm37.Column)("int")
|
|
7198
7774
|
], ProductTax.prototype, "productId", 2);
|
|
7199
7775
|
__decorateClass([
|
|
7200
|
-
(0,
|
|
7776
|
+
(0, import_typeorm37.Column)("int")
|
|
7201
7777
|
], ProductTax.prototype, "taxId", 2);
|
|
7202
7778
|
__decorateClass([
|
|
7203
|
-
(0,
|
|
7779
|
+
(0, import_typeorm37.Column)("decimal", { precision: 5, scale: 2, nullable: true })
|
|
7204
7780
|
], ProductTax.prototype, "rate", 2);
|
|
7205
7781
|
__decorateClass([
|
|
7206
|
-
(0,
|
|
7782
|
+
(0, import_typeorm37.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7207
7783
|
], ProductTax.prototype, "createdAt", 2);
|
|
7208
7784
|
__decorateClass([
|
|
7209
|
-
(0,
|
|
7785
|
+
(0, import_typeorm37.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7210
7786
|
], ProductTax.prototype, "updatedAt", 2);
|
|
7211
7787
|
__decorateClass([
|
|
7212
|
-
(0,
|
|
7213
|
-
(0,
|
|
7788
|
+
(0, import_typeorm37.ManyToOne)(() => Product, (p) => p.taxes, { onDelete: "CASCADE" }),
|
|
7789
|
+
(0, import_typeorm37.JoinColumn)({ name: "productId" })
|
|
7214
7790
|
], ProductTax.prototype, "product", 2);
|
|
7215
7791
|
__decorateClass([
|
|
7216
|
-
(0,
|
|
7217
|
-
(0,
|
|
7792
|
+
(0, import_typeorm37.ManyToOne)(() => Tax, { onDelete: "CASCADE" }),
|
|
7793
|
+
(0, import_typeorm37.JoinColumn)({ name: "taxId" })
|
|
7218
7794
|
], ProductTax.prototype, "tax", 2);
|
|
7219
7795
|
ProductTax = __decorateClass([
|
|
7220
|
-
(0,
|
|
7796
|
+
(0, import_typeorm37.Entity)("product_taxes")
|
|
7221
7797
|
], ProductTax);
|
|
7222
7798
|
|
|
7223
7799
|
// src/entities/order-item.entity.ts
|
|
7224
|
-
var
|
|
7800
|
+
var import_typeorm38 = require("typeorm");
|
|
7225
7801
|
var OrderItem = class {
|
|
7226
7802
|
id;
|
|
7227
7803
|
orderId;
|
|
@@ -7242,67 +7818,67 @@ var OrderItem = class {
|
|
|
7242
7818
|
product;
|
|
7243
7819
|
};
|
|
7244
7820
|
__decorateClass([
|
|
7245
|
-
(0,
|
|
7821
|
+
(0, import_typeorm38.PrimaryGeneratedColumn)()
|
|
7246
7822
|
], OrderItem.prototype, "id", 2);
|
|
7247
7823
|
__decorateClass([
|
|
7248
|
-
(0,
|
|
7824
|
+
(0, import_typeorm38.Column)("int")
|
|
7249
7825
|
], OrderItem.prototype, "orderId", 2);
|
|
7250
7826
|
__decorateClass([
|
|
7251
|
-
(0,
|
|
7827
|
+
(0, import_typeorm38.Column)("int")
|
|
7252
7828
|
], OrderItem.prototype, "productId", 2);
|
|
7253
7829
|
__decorateClass([
|
|
7254
|
-
(0,
|
|
7830
|
+
(0, import_typeorm38.Column)("int", { default: 1 })
|
|
7255
7831
|
], OrderItem.prototype, "quantity", 2);
|
|
7256
7832
|
__decorateClass([
|
|
7257
|
-
(0,
|
|
7833
|
+
(0, import_typeorm38.Column)("decimal", { precision: 12, scale: 2 })
|
|
7258
7834
|
], OrderItem.prototype, "unitPrice", 2);
|
|
7259
7835
|
__decorateClass([
|
|
7260
|
-
(0,
|
|
7836
|
+
(0, import_typeorm38.Column)("decimal", { precision: 12, scale: 2, default: 0 })
|
|
7261
7837
|
], OrderItem.prototype, "tax", 2);
|
|
7262
7838
|
__decorateClass([
|
|
7263
|
-
(0,
|
|
7839
|
+
(0, import_typeorm38.Column)("decimal", { precision: 12, scale: 2 })
|
|
7264
7840
|
], OrderItem.prototype, "total", 2);
|
|
7265
7841
|
__decorateClass([
|
|
7266
|
-
(0,
|
|
7842
|
+
(0, import_typeorm38.Column)("varchar", { nullable: true })
|
|
7267
7843
|
], OrderItem.prototype, "hsn", 2);
|
|
7268
7844
|
__decorateClass([
|
|
7269
|
-
(0,
|
|
7845
|
+
(0, import_typeorm38.Column)("varchar", { nullable: true })
|
|
7270
7846
|
], OrderItem.prototype, "uom", 2);
|
|
7271
7847
|
__decorateClass([
|
|
7272
|
-
(0,
|
|
7848
|
+
(0, import_typeorm38.Column)("varchar", { nullable: true })
|
|
7273
7849
|
], OrderItem.prototype, "productType", 2);
|
|
7274
7850
|
__decorateClass([
|
|
7275
|
-
(0,
|
|
7851
|
+
(0, import_typeorm38.Column)("decimal", { precision: 5, scale: 2, nullable: true })
|
|
7276
7852
|
], OrderItem.prototype, "taxRate", 2);
|
|
7277
7853
|
__decorateClass([
|
|
7278
|
-
(0,
|
|
7854
|
+
(0, import_typeorm38.Column)("varchar", { nullable: true })
|
|
7279
7855
|
], OrderItem.prototype, "taxCode", 2);
|
|
7280
7856
|
__decorateClass([
|
|
7281
|
-
(0,
|
|
7857
|
+
(0, import_typeorm38.Column)("jsonb", { nullable: true })
|
|
7282
7858
|
], OrderItem.prototype, "metadata", 2);
|
|
7283
7859
|
__decorateClass([
|
|
7284
|
-
(0,
|
|
7860
|
+
(0, import_typeorm38.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7285
7861
|
], OrderItem.prototype, "createdAt", 2);
|
|
7286
7862
|
__decorateClass([
|
|
7287
|
-
(0,
|
|
7863
|
+
(0, import_typeorm38.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7288
7864
|
], OrderItem.prototype, "updatedAt", 2);
|
|
7289
7865
|
__decorateClass([
|
|
7290
|
-
(0,
|
|
7291
|
-
(0,
|
|
7866
|
+
(0, import_typeorm38.ManyToOne)(() => Order, (o) => o.items, { onDelete: "CASCADE" }),
|
|
7867
|
+
(0, import_typeorm38.JoinColumn)({ name: "orderId" })
|
|
7292
7868
|
], OrderItem.prototype, "order", 2);
|
|
7293
7869
|
__decorateClass([
|
|
7294
|
-
(0,
|
|
7295
|
-
(0,
|
|
7870
|
+
(0, import_typeorm38.ManyToOne)(() => Product, { onDelete: "CASCADE" }),
|
|
7871
|
+
(0, import_typeorm38.JoinColumn)({ name: "productId" })
|
|
7296
7872
|
], OrderItem.prototype, "product", 2);
|
|
7297
7873
|
OrderItem = __decorateClass([
|
|
7298
|
-
(0,
|
|
7874
|
+
(0, import_typeorm38.Entity)("order_items")
|
|
7299
7875
|
], OrderItem);
|
|
7300
7876
|
|
|
7301
7877
|
// src/entities/knowledge-base-document.entity.ts
|
|
7302
|
-
var
|
|
7878
|
+
var import_typeorm40 = require("typeorm");
|
|
7303
7879
|
|
|
7304
7880
|
// src/entities/knowledge-base-chunk.entity.ts
|
|
7305
|
-
var
|
|
7881
|
+
var import_typeorm39 = require("typeorm");
|
|
7306
7882
|
var KnowledgeBaseChunk = class {
|
|
7307
7883
|
id;
|
|
7308
7884
|
documentId;
|
|
@@ -7312,26 +7888,26 @@ var KnowledgeBaseChunk = class {
|
|
|
7312
7888
|
document;
|
|
7313
7889
|
};
|
|
7314
7890
|
__decorateClass([
|
|
7315
|
-
(0,
|
|
7891
|
+
(0, import_typeorm39.PrimaryGeneratedColumn)()
|
|
7316
7892
|
], KnowledgeBaseChunk.prototype, "id", 2);
|
|
7317
7893
|
__decorateClass([
|
|
7318
|
-
(0,
|
|
7894
|
+
(0, import_typeorm39.Column)("int")
|
|
7319
7895
|
], KnowledgeBaseChunk.prototype, "documentId", 2);
|
|
7320
7896
|
__decorateClass([
|
|
7321
|
-
(0,
|
|
7897
|
+
(0, import_typeorm39.Column)("text")
|
|
7322
7898
|
], KnowledgeBaseChunk.prototype, "content", 2);
|
|
7323
7899
|
__decorateClass([
|
|
7324
|
-
(0,
|
|
7900
|
+
(0, import_typeorm39.Column)("int", { default: 0 })
|
|
7325
7901
|
], KnowledgeBaseChunk.prototype, "chunkIndex", 2);
|
|
7326
7902
|
__decorateClass([
|
|
7327
|
-
(0,
|
|
7903
|
+
(0, import_typeorm39.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7328
7904
|
], KnowledgeBaseChunk.prototype, "createdAt", 2);
|
|
7329
7905
|
__decorateClass([
|
|
7330
|
-
(0,
|
|
7331
|
-
(0,
|
|
7906
|
+
(0, import_typeorm39.ManyToOne)(() => KnowledgeBaseDocument, (d) => d.chunks, { onDelete: "CASCADE" }),
|
|
7907
|
+
(0, import_typeorm39.JoinColumn)({ name: "documentId" })
|
|
7332
7908
|
], KnowledgeBaseChunk.prototype, "document", 2);
|
|
7333
7909
|
KnowledgeBaseChunk = __decorateClass([
|
|
7334
|
-
(0,
|
|
7910
|
+
(0, import_typeorm39.Entity)("knowledge_base_chunks")
|
|
7335
7911
|
], KnowledgeBaseChunk);
|
|
7336
7912
|
|
|
7337
7913
|
// src/entities/knowledge-base-document.entity.ts
|
|
@@ -7345,32 +7921,32 @@ var KnowledgeBaseDocument = class {
|
|
|
7345
7921
|
chunks;
|
|
7346
7922
|
};
|
|
7347
7923
|
__decorateClass([
|
|
7348
|
-
(0,
|
|
7924
|
+
(0, import_typeorm40.PrimaryGeneratedColumn)()
|
|
7349
7925
|
], KnowledgeBaseDocument.prototype, "id", 2);
|
|
7350
7926
|
__decorateClass([
|
|
7351
|
-
(0,
|
|
7927
|
+
(0, import_typeorm40.Column)("varchar")
|
|
7352
7928
|
], KnowledgeBaseDocument.prototype, "name", 2);
|
|
7353
7929
|
__decorateClass([
|
|
7354
|
-
(0,
|
|
7930
|
+
(0, import_typeorm40.Column)("varchar", { nullable: true })
|
|
7355
7931
|
], KnowledgeBaseDocument.prototype, "sourceUrl", 2);
|
|
7356
7932
|
__decorateClass([
|
|
7357
|
-
(0,
|
|
7933
|
+
(0, import_typeorm40.Column)("text")
|
|
7358
7934
|
], KnowledgeBaseDocument.prototype, "content", 2);
|
|
7359
7935
|
__decorateClass([
|
|
7360
|
-
(0,
|
|
7936
|
+
(0, import_typeorm40.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7361
7937
|
], KnowledgeBaseDocument.prototype, "createdAt", 2);
|
|
7362
7938
|
__decorateClass([
|
|
7363
|
-
(0,
|
|
7939
|
+
(0, import_typeorm40.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7364
7940
|
], KnowledgeBaseDocument.prototype, "updatedAt", 2);
|
|
7365
7941
|
__decorateClass([
|
|
7366
|
-
(0,
|
|
7942
|
+
(0, import_typeorm40.OneToMany)(() => KnowledgeBaseChunk, (c) => c.document)
|
|
7367
7943
|
], KnowledgeBaseDocument.prototype, "chunks", 2);
|
|
7368
7944
|
KnowledgeBaseDocument = __decorateClass([
|
|
7369
|
-
(0,
|
|
7945
|
+
(0, import_typeorm40.Entity)("knowledge_base_documents")
|
|
7370
7946
|
], KnowledgeBaseDocument);
|
|
7371
7947
|
|
|
7372
7948
|
// src/entities/cart.entity.ts
|
|
7373
|
-
var
|
|
7949
|
+
var import_typeorm41 = require("typeorm");
|
|
7374
7950
|
var Cart = class {
|
|
7375
7951
|
id;
|
|
7376
7952
|
guestToken;
|
|
@@ -7383,39 +7959,39 @@ var Cart = class {
|
|
|
7383
7959
|
items;
|
|
7384
7960
|
};
|
|
7385
7961
|
__decorateClass([
|
|
7386
|
-
(0,
|
|
7962
|
+
(0, import_typeorm41.PrimaryGeneratedColumn)()
|
|
7387
7963
|
], Cart.prototype, "id", 2);
|
|
7388
7964
|
__decorateClass([
|
|
7389
|
-
(0,
|
|
7965
|
+
(0, import_typeorm41.Column)("varchar", { nullable: true })
|
|
7390
7966
|
], Cart.prototype, "guestToken", 2);
|
|
7391
7967
|
__decorateClass([
|
|
7392
|
-
(0,
|
|
7968
|
+
(0, import_typeorm41.Column)("int", { nullable: true })
|
|
7393
7969
|
], Cart.prototype, "contactId", 2);
|
|
7394
7970
|
__decorateClass([
|
|
7395
|
-
(0,
|
|
7971
|
+
(0, import_typeorm41.Column)("varchar", { default: "INR" })
|
|
7396
7972
|
], Cart.prototype, "currency", 2);
|
|
7397
7973
|
__decorateClass([
|
|
7398
|
-
(0,
|
|
7974
|
+
(0, import_typeorm41.Column)({ type: "timestamp", nullable: true })
|
|
7399
7975
|
], Cart.prototype, "expiresAt", 2);
|
|
7400
7976
|
__decorateClass([
|
|
7401
|
-
(0,
|
|
7977
|
+
(0, import_typeorm41.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7402
7978
|
], Cart.prototype, "createdAt", 2);
|
|
7403
7979
|
__decorateClass([
|
|
7404
|
-
(0,
|
|
7980
|
+
(0, import_typeorm41.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7405
7981
|
], Cart.prototype, "updatedAt", 2);
|
|
7406
7982
|
__decorateClass([
|
|
7407
|
-
(0,
|
|
7408
|
-
(0,
|
|
7983
|
+
(0, import_typeorm41.ManyToOne)(() => Contact, { onDelete: "CASCADE" }),
|
|
7984
|
+
(0, import_typeorm41.JoinColumn)({ name: "contactId" })
|
|
7409
7985
|
], Cart.prototype, "contact", 2);
|
|
7410
7986
|
__decorateClass([
|
|
7411
|
-
(0,
|
|
7987
|
+
(0, import_typeorm41.OneToMany)("CartItem", "cart")
|
|
7412
7988
|
], Cart.prototype, "items", 2);
|
|
7413
7989
|
Cart = __decorateClass([
|
|
7414
|
-
(0,
|
|
7990
|
+
(0, import_typeorm41.Entity)("carts")
|
|
7415
7991
|
], Cart);
|
|
7416
7992
|
|
|
7417
7993
|
// src/entities/cart-item.entity.ts
|
|
7418
|
-
var
|
|
7994
|
+
var import_typeorm42 = require("typeorm");
|
|
7419
7995
|
var CartItem = class {
|
|
7420
7996
|
id;
|
|
7421
7997
|
cartId;
|
|
@@ -7428,40 +8004,40 @@ var CartItem = class {
|
|
|
7428
8004
|
product;
|
|
7429
8005
|
};
|
|
7430
8006
|
__decorateClass([
|
|
7431
|
-
(0,
|
|
8007
|
+
(0, import_typeorm42.PrimaryGeneratedColumn)()
|
|
7432
8008
|
], CartItem.prototype, "id", 2);
|
|
7433
8009
|
__decorateClass([
|
|
7434
|
-
(0,
|
|
8010
|
+
(0, import_typeorm42.Column)("int")
|
|
7435
8011
|
], CartItem.prototype, "cartId", 2);
|
|
7436
8012
|
__decorateClass([
|
|
7437
|
-
(0,
|
|
8013
|
+
(0, import_typeorm42.Column)("int")
|
|
7438
8014
|
], CartItem.prototype, "productId", 2);
|
|
7439
8015
|
__decorateClass([
|
|
7440
|
-
(0,
|
|
8016
|
+
(0, import_typeorm42.Column)("int", { default: 1 })
|
|
7441
8017
|
], CartItem.prototype, "quantity", 2);
|
|
7442
8018
|
__decorateClass([
|
|
7443
|
-
(0,
|
|
8019
|
+
(0, import_typeorm42.Column)("jsonb", { nullable: true })
|
|
7444
8020
|
], CartItem.prototype, "metadata", 2);
|
|
7445
8021
|
__decorateClass([
|
|
7446
|
-
(0,
|
|
8022
|
+
(0, import_typeorm42.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7447
8023
|
], CartItem.prototype, "createdAt", 2);
|
|
7448
8024
|
__decorateClass([
|
|
7449
|
-
(0,
|
|
8025
|
+
(0, import_typeorm42.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7450
8026
|
], CartItem.prototype, "updatedAt", 2);
|
|
7451
8027
|
__decorateClass([
|
|
7452
|
-
(0,
|
|
7453
|
-
(0,
|
|
8028
|
+
(0, import_typeorm42.ManyToOne)(() => Cart, (c) => c.items, { onDelete: "CASCADE" }),
|
|
8029
|
+
(0, import_typeorm42.JoinColumn)({ name: "cartId" })
|
|
7454
8030
|
], CartItem.prototype, "cart", 2);
|
|
7455
8031
|
__decorateClass([
|
|
7456
|
-
(0,
|
|
7457
|
-
(0,
|
|
8032
|
+
(0, import_typeorm42.ManyToOne)(() => Product, { onDelete: "CASCADE" }),
|
|
8033
|
+
(0, import_typeorm42.JoinColumn)({ name: "productId" })
|
|
7458
8034
|
], CartItem.prototype, "product", 2);
|
|
7459
8035
|
CartItem = __decorateClass([
|
|
7460
|
-
(0,
|
|
8036
|
+
(0, import_typeorm42.Entity)("cart_items")
|
|
7461
8037
|
], CartItem);
|
|
7462
8038
|
|
|
7463
8039
|
// src/entities/wishlist.entity.ts
|
|
7464
|
-
var
|
|
8040
|
+
var import_typeorm43 = require("typeorm");
|
|
7465
8041
|
var Wishlist = class {
|
|
7466
8042
|
id;
|
|
7467
8043
|
guestId;
|
|
@@ -7473,36 +8049,36 @@ var Wishlist = class {
|
|
|
7473
8049
|
items;
|
|
7474
8050
|
};
|
|
7475
8051
|
__decorateClass([
|
|
7476
|
-
(0,
|
|
8052
|
+
(0, import_typeorm43.PrimaryGeneratedColumn)()
|
|
7477
8053
|
], Wishlist.prototype, "id", 2);
|
|
7478
8054
|
__decorateClass([
|
|
7479
|
-
(0,
|
|
8055
|
+
(0, import_typeorm43.Column)("varchar", { nullable: true })
|
|
7480
8056
|
], Wishlist.prototype, "guestId", 2);
|
|
7481
8057
|
__decorateClass([
|
|
7482
|
-
(0,
|
|
8058
|
+
(0, import_typeorm43.Column)("int", { nullable: true })
|
|
7483
8059
|
], Wishlist.prototype, "contactId", 2);
|
|
7484
8060
|
__decorateClass([
|
|
7485
|
-
(0,
|
|
8061
|
+
(0, import_typeorm43.Column)("varchar", { default: "default" })
|
|
7486
8062
|
], Wishlist.prototype, "name", 2);
|
|
7487
8063
|
__decorateClass([
|
|
7488
|
-
(0,
|
|
8064
|
+
(0, import_typeorm43.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7489
8065
|
], Wishlist.prototype, "createdAt", 2);
|
|
7490
8066
|
__decorateClass([
|
|
7491
|
-
(0,
|
|
8067
|
+
(0, import_typeorm43.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7492
8068
|
], Wishlist.prototype, "updatedAt", 2);
|
|
7493
8069
|
__decorateClass([
|
|
7494
|
-
(0,
|
|
7495
|
-
(0,
|
|
8070
|
+
(0, import_typeorm43.ManyToOne)(() => Contact, { onDelete: "CASCADE" }),
|
|
8071
|
+
(0, import_typeorm43.JoinColumn)({ name: "contactId" })
|
|
7496
8072
|
], Wishlist.prototype, "contact", 2);
|
|
7497
8073
|
__decorateClass([
|
|
7498
|
-
(0,
|
|
8074
|
+
(0, import_typeorm43.OneToMany)("WishlistItem", "wishlist")
|
|
7499
8075
|
], Wishlist.prototype, "items", 2);
|
|
7500
8076
|
Wishlist = __decorateClass([
|
|
7501
|
-
(0,
|
|
8077
|
+
(0, import_typeorm43.Entity)("wishlists")
|
|
7502
8078
|
], Wishlist);
|
|
7503
8079
|
|
|
7504
8080
|
// src/entities/wishlist-item.entity.ts
|
|
7505
|
-
var
|
|
8081
|
+
var import_typeorm44 = require("typeorm");
|
|
7506
8082
|
var WishlistItem = class {
|
|
7507
8083
|
id;
|
|
7508
8084
|
wishlistId;
|
|
@@ -7514,35 +8090,71 @@ var WishlistItem = class {
|
|
|
7514
8090
|
product;
|
|
7515
8091
|
};
|
|
7516
8092
|
__decorateClass([
|
|
7517
|
-
(0,
|
|
8093
|
+
(0, import_typeorm44.PrimaryGeneratedColumn)()
|
|
7518
8094
|
], WishlistItem.prototype, "id", 2);
|
|
7519
8095
|
__decorateClass([
|
|
7520
|
-
(0,
|
|
8096
|
+
(0, import_typeorm44.Column)("int")
|
|
7521
8097
|
], WishlistItem.prototype, "wishlistId", 2);
|
|
7522
8098
|
__decorateClass([
|
|
7523
|
-
(0,
|
|
8099
|
+
(0, import_typeorm44.Column)("int")
|
|
7524
8100
|
], WishlistItem.prototype, "productId", 2);
|
|
7525
8101
|
__decorateClass([
|
|
7526
|
-
(0,
|
|
8102
|
+
(0, import_typeorm44.Column)("jsonb", { nullable: true })
|
|
7527
8103
|
], WishlistItem.prototype, "metadata", 2);
|
|
7528
8104
|
__decorateClass([
|
|
7529
|
-
(0,
|
|
8105
|
+
(0, import_typeorm44.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7530
8106
|
], WishlistItem.prototype, "createdAt", 2);
|
|
7531
8107
|
__decorateClass([
|
|
7532
|
-
(0,
|
|
8108
|
+
(0, import_typeorm44.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
7533
8109
|
], WishlistItem.prototype, "updatedAt", 2);
|
|
7534
8110
|
__decorateClass([
|
|
7535
|
-
(0,
|
|
7536
|
-
(0,
|
|
8111
|
+
(0, import_typeorm44.ManyToOne)(() => Wishlist, (w) => w.items, { onDelete: "CASCADE" }),
|
|
8112
|
+
(0, import_typeorm44.JoinColumn)({ name: "wishlistId" })
|
|
7537
8113
|
], WishlistItem.prototype, "wishlist", 2);
|
|
7538
8114
|
__decorateClass([
|
|
7539
|
-
(0,
|
|
7540
|
-
(0,
|
|
8115
|
+
(0, import_typeorm44.ManyToOne)(() => Product, { onDelete: "CASCADE" }),
|
|
8116
|
+
(0, import_typeorm44.JoinColumn)({ name: "productId" })
|
|
7541
8117
|
], WishlistItem.prototype, "product", 2);
|
|
7542
8118
|
WishlistItem = __decorateClass([
|
|
7543
|
-
(0,
|
|
8119
|
+
(0, import_typeorm44.Entity)("wishlist_items")
|
|
7544
8120
|
], WishlistItem);
|
|
7545
8121
|
|
|
8122
|
+
// src/entities/llm-agent-knowledge-document.entity.ts
|
|
8123
|
+
var import_typeorm45 = require("typeorm");
|
|
8124
|
+
var LlmAgentKnowledgeDocument = class {
|
|
8125
|
+
id;
|
|
8126
|
+
agentId;
|
|
8127
|
+
documentId;
|
|
8128
|
+
createdAt;
|
|
8129
|
+
agent;
|
|
8130
|
+
document;
|
|
8131
|
+
};
|
|
8132
|
+
__decorateClass([
|
|
8133
|
+
(0, import_typeorm45.PrimaryGeneratedColumn)()
|
|
8134
|
+
], LlmAgentKnowledgeDocument.prototype, "id", 2);
|
|
8135
|
+
__decorateClass([
|
|
8136
|
+
(0, import_typeorm45.Column)("int")
|
|
8137
|
+
], LlmAgentKnowledgeDocument.prototype, "agentId", 2);
|
|
8138
|
+
__decorateClass([
|
|
8139
|
+
(0, import_typeorm45.Column)("int")
|
|
8140
|
+
], LlmAgentKnowledgeDocument.prototype, "documentId", 2);
|
|
8141
|
+
__decorateClass([
|
|
8142
|
+
(0, import_typeorm45.Column)({ type: "timestamp", default: () => "CURRENT_TIMESTAMP" })
|
|
8143
|
+
], LlmAgentKnowledgeDocument.prototype, "createdAt", 2);
|
|
8144
|
+
__decorateClass([
|
|
8145
|
+
(0, import_typeorm45.ManyToOne)(() => LlmAgent, { onDelete: "CASCADE" }),
|
|
8146
|
+
(0, import_typeorm45.JoinColumn)({ name: "agentId" })
|
|
8147
|
+
], LlmAgentKnowledgeDocument.prototype, "agent", 2);
|
|
8148
|
+
__decorateClass([
|
|
8149
|
+
(0, import_typeorm45.ManyToOne)(() => KnowledgeBaseDocument, { onDelete: "CASCADE" }),
|
|
8150
|
+
(0, import_typeorm45.JoinColumn)({ name: "documentId" })
|
|
8151
|
+
], LlmAgentKnowledgeDocument.prototype, "document", 2);
|
|
8152
|
+
LlmAgentKnowledgeDocument = __decorateClass([
|
|
8153
|
+
(0, import_typeorm45.Entity)("llm_agent_knowledge_documents"),
|
|
8154
|
+
(0, import_typeorm45.Unique)("UQ_llm_agent_knowledge_agent_document", ["agentId", "documentId"]),
|
|
8155
|
+
(0, import_typeorm45.Index)("IDX_llm_agent_knowledge_agent", ["agentId"])
|
|
8156
|
+
], LlmAgentKnowledgeDocument);
|
|
8157
|
+
|
|
7546
8158
|
// src/entities/index.ts
|
|
7547
8159
|
var CMS_ENTITY_MAP = {
|
|
7548
8160
|
users: User,
|
|
@@ -7582,7 +8194,9 @@ var CMS_ENTITY_MAP = {
|
|
|
7582
8194
|
carts: Cart,
|
|
7583
8195
|
cart_items: CartItem,
|
|
7584
8196
|
wishlists: Wishlist,
|
|
7585
|
-
wishlist_items: WishlistItem
|
|
8197
|
+
wishlist_items: WishlistItem,
|
|
8198
|
+
llm_agents: LlmAgent,
|
|
8199
|
+
llm_agent_knowledge_documents: LlmAgentKnowledgeDocument
|
|
7586
8200
|
};
|
|
7587
8201
|
|
|
7588
8202
|
// src/auth/permission-entities.ts
|
|
@@ -7920,7 +8534,7 @@ function getNextAuthOptions(config) {
|
|
|
7920
8534
|
}
|
|
7921
8535
|
|
|
7922
8536
|
// src/api/crud.ts
|
|
7923
|
-
var
|
|
8537
|
+
var import_typeorm46 = require("typeorm");
|
|
7924
8538
|
var DATE_COLUMN_TYPES = /* @__PURE__ */ new Set([
|
|
7925
8539
|
"date",
|
|
7926
8540
|
"datetime",
|
|
@@ -7965,7 +8579,7 @@ function pickColumnUpdates(repo, body) {
|
|
|
7965
8579
|
}
|
|
7966
8580
|
function buildSearchWhereClause(repo, search) {
|
|
7967
8581
|
const cols = new Set(repo.metadata.columns.map((c) => c.propertyName));
|
|
7968
|
-
const term = (0,
|
|
8582
|
+
const term = (0, import_typeorm46.ILike)(`%${search}%`);
|
|
7969
8583
|
const ors = [];
|
|
7970
8584
|
for (const field of ["name", "title", "slug", "email", "filename"]) {
|
|
7971
8585
|
if (cols.has(field)) ors.push({ [field]: term });
|
|
@@ -8130,10 +8744,10 @@ function createCrudHandler(dataSource, entityMap, options) {
|
|
|
8130
8744
|
const inventory = searchParams.get("inventory")?.trim();
|
|
8131
8745
|
const productWhere = { deleted: false };
|
|
8132
8746
|
if (statusFilter) productWhere.status = statusFilter;
|
|
8133
|
-
if (inventory === "in_stock") productWhere.quantity = (0,
|
|
8747
|
+
if (inventory === "in_stock") productWhere.quantity = (0, import_typeorm46.MoreThan)(0);
|
|
8134
8748
|
if (inventory === "out_of_stock") productWhere.quantity = 0;
|
|
8135
8749
|
if (search && typeof search === "string" && search.trim()) {
|
|
8136
|
-
productWhere.name = (0,
|
|
8750
|
+
productWhere.name = (0, import_typeorm46.ILike)(`%${search.trim()}%`);
|
|
8137
8751
|
}
|
|
8138
8752
|
const [data2, total2] = await repo2.findAndCount({
|
|
8139
8753
|
where: Object.keys(productWhere).length ? productWhere : void 0,
|
|
@@ -8201,7 +8815,7 @@ function createCrudHandler(dataSource, entityMap, options) {
|
|
|
8201
8815
|
}
|
|
8202
8816
|
if (typeFilter) {
|
|
8203
8817
|
qb.andWhere(
|
|
8204
|
-
new
|
|
8818
|
+
new import_typeorm46.Brackets((sq) => {
|
|
8205
8819
|
sq.where("m.kind = :folderKind", { folderKind: "folder" }).orWhere("m.mimeType LIKE :mtp", {
|
|
8206
8820
|
mtp: `${typeFilter}/%`
|
|
8207
8821
|
});
|
|
@@ -8757,6 +9371,314 @@ function createUserAuthApiRouter(config) {
|
|
|
8757
9371
|
};
|
|
8758
9372
|
}
|
|
8759
9373
|
|
|
9374
|
+
// src/api/llm-agent-knowledge-handlers.ts
|
|
9375
|
+
var import_typeorm47 = require("typeorm");
|
|
9376
|
+
var INGEST_CHUNK_CHARS = 900;
|
|
9377
|
+
var MAX_CHUNKS_PER_UPLOAD = 400;
|
|
9378
|
+
var EMBED_CONCURRENCY = 5;
|
|
9379
|
+
var MAX_PDF_BYTES = 25 * 1024 * 1024;
|
|
9380
|
+
var TEXT_FILE_TYPES = /* @__PURE__ */ new Set(["text/plain", "text/markdown", "application/json"]);
|
|
9381
|
+
var KB_LOG = "[llm-agent-knowledge]";
|
|
9382
|
+
function llmEmbedDebug() {
|
|
9383
|
+
const v = process.env.LLM_EMBED_DEBUG?.toLowerCase();
|
|
9384
|
+
return v === "1" || v === "true" || v === "yes";
|
|
9385
|
+
}
|
|
9386
|
+
function isPdfUpload(mime, fileName) {
|
|
9387
|
+
if (mime === "application/pdf") return true;
|
|
9388
|
+
const n = fileName.toLowerCase();
|
|
9389
|
+
return n.endsWith(".pdf");
|
|
9390
|
+
}
|
|
9391
|
+
async function extractTextFromPdf(buffer) {
|
|
9392
|
+
const pdfParse = await import("pdf-parse");
|
|
9393
|
+
const data = await pdfParse(buffer);
|
|
9394
|
+
return (data?.text ?? "").trim();
|
|
9395
|
+
}
|
|
9396
|
+
async function writeEmbeddingsConcurrent(dataSource, embed, chunks, concurrency) {
|
|
9397
|
+
let next = 0;
|
|
9398
|
+
let written = 0;
|
|
9399
|
+
let failed = 0;
|
|
9400
|
+
let skippedEmpty = 0;
|
|
9401
|
+
async function worker() {
|
|
9402
|
+
for (; ; ) {
|
|
9403
|
+
const i = next++;
|
|
9404
|
+
if (i >= chunks.length) return;
|
|
9405
|
+
const c = chunks[i];
|
|
9406
|
+
try {
|
|
9407
|
+
const emb = await embed(c.content);
|
|
9408
|
+
if (emb?.length) {
|
|
9409
|
+
const vectorStr = "[" + emb.join(",") + "]";
|
|
9410
|
+
await dataSource.query(
|
|
9411
|
+
`UPDATE knowledge_base_chunks SET embedding = $1::vector WHERE id = $2`,
|
|
9412
|
+
[vectorStr, c.id]
|
|
9413
|
+
);
|
|
9414
|
+
written++;
|
|
9415
|
+
} else {
|
|
9416
|
+
skippedEmpty++;
|
|
9417
|
+
if (llmEmbedDebug()) {
|
|
9418
|
+
console.warn(`${KB_LOG} embed() returned empty vector`, { chunkId: c.id });
|
|
9419
|
+
}
|
|
9420
|
+
}
|
|
9421
|
+
} catch (err) {
|
|
9422
|
+
failed++;
|
|
9423
|
+
console.error(`${KB_LOG} embedding DB update failed`, {
|
|
9424
|
+
chunkId: c.id,
|
|
9425
|
+
err: err instanceof Error ? err.message : String(err)
|
|
9426
|
+
});
|
|
9427
|
+
}
|
|
9428
|
+
}
|
|
9429
|
+
}
|
|
9430
|
+
const n = Math.max(1, Math.min(concurrency, chunks.length));
|
|
9431
|
+
await Promise.all(Array.from({ length: n }, () => worker()));
|
|
9432
|
+
const summary = {
|
|
9433
|
+
chunkCount: chunks.length,
|
|
9434
|
+
written,
|
|
9435
|
+
failed,
|
|
9436
|
+
skippedEmpty
|
|
9437
|
+
};
|
|
9438
|
+
if (skippedEmpty > 0 && written === 0) {
|
|
9439
|
+
summary.hint = "embed() returned empty vectors \u2014 see [LLM embed] logs (often HTTP 404 on /v1/embeddings, or wrong response shape).";
|
|
9440
|
+
}
|
|
9441
|
+
console.error(`${KB_LOG} embedding pass finished`, summary);
|
|
9442
|
+
return { written, failed };
|
|
9443
|
+
}
|
|
9444
|
+
function splitIntoChunks(text, maxLen) {
|
|
9445
|
+
const t = text.trim();
|
|
9446
|
+
if (!t) return [];
|
|
9447
|
+
const chunks = [];
|
|
9448
|
+
for (let i = 0; i < t.length; i += maxLen) {
|
|
9449
|
+
chunks.push(t.slice(i, i + maxLen));
|
|
9450
|
+
}
|
|
9451
|
+
return chunks;
|
|
9452
|
+
}
|
|
9453
|
+
async function findAgentBySlug(dataSource, llmAgents, slug) {
|
|
9454
|
+
const repo = dataSource.getRepository(llmAgents);
|
|
9455
|
+
return repo.findOne({
|
|
9456
|
+
where: { slug, deleted: false }
|
|
9457
|
+
});
|
|
9458
|
+
}
|
|
9459
|
+
function createLlmAgentKnowledgeHandlers(config) {
|
|
9460
|
+
const { dataSource, entityMap, getCms, json, requireAuth, requireEntityPermission } = config;
|
|
9461
|
+
const kbDoc = entityMap.knowledge_base_documents;
|
|
9462
|
+
const kbChunk = entityMap.knowledge_base_chunks;
|
|
9463
|
+
const llmAgents = entityMap.llm_agents;
|
|
9464
|
+
const junction = entityMap.llm_agent_knowledge_documents;
|
|
9465
|
+
if (!kbDoc || !kbChunk || !llmAgents || !junction) {
|
|
9466
|
+
return null;
|
|
9467
|
+
}
|
|
9468
|
+
async function gate(req, action) {
|
|
9469
|
+
const a = await requireAuth(req);
|
|
9470
|
+
if (a) return a;
|
|
9471
|
+
if (requireEntityPermission) {
|
|
9472
|
+
const pe = await requireEntityPermission(req, "llm_agents", action);
|
|
9473
|
+
if (pe) return pe;
|
|
9474
|
+
}
|
|
9475
|
+
return null;
|
|
9476
|
+
}
|
|
9477
|
+
return {
|
|
9478
|
+
async list(req, slug) {
|
|
9479
|
+
const denied = await gate(req, "read");
|
|
9480
|
+
if (denied) return denied;
|
|
9481
|
+
try {
|
|
9482
|
+
const agent = await findAgentBySlug(dataSource, llmAgents, slug);
|
|
9483
|
+
if (!agent) return json({ error: "Agent not found" }, { status: 404 });
|
|
9484
|
+
const linkRepo = dataSource.getRepository(junction);
|
|
9485
|
+
const links = await linkRepo.find({ where: { agentId: agent.id } });
|
|
9486
|
+
const docIds = [...new Set(links.map((l) => l.documentId))];
|
|
9487
|
+
if (docIds.length === 0) return json({ documents: [] });
|
|
9488
|
+
const docRepo = dataSource.getRepository(kbDoc);
|
|
9489
|
+
const docs = await docRepo.find({ where: { id: (0, import_typeorm47.In)(docIds) } });
|
|
9490
|
+
const byId = new Map(docs.map((d) => [d.id, d]));
|
|
9491
|
+
const documents = docIds.map((id) => {
|
|
9492
|
+
const d = byId.get(id);
|
|
9493
|
+
return d ? { id: d.id, name: d.name } : null;
|
|
9494
|
+
}).filter(Boolean);
|
|
9495
|
+
return json({ documents });
|
|
9496
|
+
} catch (err) {
|
|
9497
|
+
const msg = err instanceof Error ? err.message : "Failed to list knowledge";
|
|
9498
|
+
return json({ error: msg }, { status: 500 });
|
|
9499
|
+
}
|
|
9500
|
+
},
|
|
9501
|
+
async post(req, slug) {
|
|
9502
|
+
const denied = await gate(req, "update");
|
|
9503
|
+
if (denied) return denied;
|
|
9504
|
+
try {
|
|
9505
|
+
const agent = await findAgentBySlug(dataSource, llmAgents, slug);
|
|
9506
|
+
if (!agent) return json({ error: "Agent not found" }, { status: 404 });
|
|
9507
|
+
let name = "";
|
|
9508
|
+
let text = "";
|
|
9509
|
+
let sourceUrl = null;
|
|
9510
|
+
let existingDocumentId = null;
|
|
9511
|
+
const ct = req.headers.get("content-type") || "";
|
|
9512
|
+
if (ct.includes("application/json")) {
|
|
9513
|
+
const body = await req.json();
|
|
9514
|
+
existingDocumentId = typeof body?.documentId === "number" && Number.isFinite(body.documentId) ? body.documentId : null;
|
|
9515
|
+
name = (body?.name ?? "").trim();
|
|
9516
|
+
text = (body?.text ?? "").trim();
|
|
9517
|
+
sourceUrl = typeof body?.sourceUrl === "string" && body.sourceUrl.trim() ? body.sourceUrl.trim() : null;
|
|
9518
|
+
} else if (ct.includes("multipart/form-data")) {
|
|
9519
|
+
const form = await req.formData();
|
|
9520
|
+
name = form.get("name")?.trim() ?? "";
|
|
9521
|
+
text = form.get("text")?.trim() ?? "";
|
|
9522
|
+
const file = form.get("file");
|
|
9523
|
+
if (file && typeof file !== "string" && "arrayBuffer" in file) {
|
|
9524
|
+
const f = file;
|
|
9525
|
+
const mime = (f.type || "").split(";")[0].trim().toLowerCase();
|
|
9526
|
+
const buf = Buffer.from(await f.arrayBuffer());
|
|
9527
|
+
if (TEXT_FILE_TYPES.has(mime)) {
|
|
9528
|
+
const decoded = buf.toString("utf8");
|
|
9529
|
+
if (!text) text = decoded;
|
|
9530
|
+
} else if (isPdfUpload(mime, f.name || "")) {
|
|
9531
|
+
if (buf.length > MAX_PDF_BYTES) {
|
|
9532
|
+
return json(
|
|
9533
|
+
{ error: `PDF too large (max ${Math.floor(MAX_PDF_BYTES / (1024 * 1024))}MB)` },
|
|
9534
|
+
{ status: 413 }
|
|
9535
|
+
);
|
|
9536
|
+
}
|
|
9537
|
+
try {
|
|
9538
|
+
const extracted = await extractTextFromPdf(buf);
|
|
9539
|
+
if (!text) text = extracted;
|
|
9540
|
+
} catch {
|
|
9541
|
+
return json(
|
|
9542
|
+
{ error: "Could not read PDF text (file may be encrypted, corrupt, or image-only)" },
|
|
9543
|
+
{ status: 422 }
|
|
9544
|
+
);
|
|
9545
|
+
}
|
|
9546
|
+
} else {
|
|
9547
|
+
return json(
|
|
9548
|
+
{
|
|
9549
|
+
error: "Unsupported file type; use text/plain, text/markdown, application/json, or application/pdf"
|
|
9550
|
+
},
|
|
9551
|
+
{ status: 415 }
|
|
9552
|
+
);
|
|
9553
|
+
}
|
|
9554
|
+
if (!name && f.name) name = f.name.replace(/\.[^/.]+$/, "") || f.name;
|
|
9555
|
+
}
|
|
9556
|
+
} else {
|
|
9557
|
+
return json({ error: "Use application/json or multipart/form-data" }, { status: 400 });
|
|
9558
|
+
}
|
|
9559
|
+
const linkRepo = dataSource.getRepository(junction);
|
|
9560
|
+
if (existingDocumentId != null) {
|
|
9561
|
+
const docRepo2 = dataSource.getRepository(kbDoc);
|
|
9562
|
+
const existing = await docRepo2.findOne({ where: { id: existingDocumentId } });
|
|
9563
|
+
if (!existing) return json({ error: "documentId not found" }, { status: 404 });
|
|
9564
|
+
const dup2 = await linkRepo.findOne({
|
|
9565
|
+
where: { agentId: agent.id, documentId: existingDocumentId }
|
|
9566
|
+
});
|
|
9567
|
+
if (!dup2) {
|
|
9568
|
+
await linkRepo.save(linkRepo.create({ agentId: agent.id, documentId: existingDocumentId }));
|
|
9569
|
+
}
|
|
9570
|
+
return json({ documentId: existingDocumentId, linked: true, created: false });
|
|
9571
|
+
}
|
|
9572
|
+
if (!text) return json({ error: "text or file with text content is required" }, { status: 400 });
|
|
9573
|
+
if (!name) name = "Untitled";
|
|
9574
|
+
const parts = splitIntoChunks(text, INGEST_CHUNK_CHARS);
|
|
9575
|
+
if (parts.length === 0) {
|
|
9576
|
+
return json({ error: "text or file with text content is required" }, { status: 400 });
|
|
9577
|
+
}
|
|
9578
|
+
if (parts.length > MAX_CHUNKS_PER_UPLOAD) {
|
|
9579
|
+
return json(
|
|
9580
|
+
{
|
|
9581
|
+
error: `Document is too large for one upload (${parts.length} chunks; max ${MAX_CHUNKS_PER_UPLOAD}). Split into smaller files.`
|
|
9582
|
+
},
|
|
9583
|
+
{ status: 413 }
|
|
9584
|
+
);
|
|
9585
|
+
}
|
|
9586
|
+
const docRepo = dataSource.getRepository(kbDoc);
|
|
9587
|
+
const chunkRepo = dataSource.getRepository(kbChunk);
|
|
9588
|
+
const now = /* @__PURE__ */ new Date();
|
|
9589
|
+
const doc = await docRepo.save(
|
|
9590
|
+
docRepo.create({ name, content: text, sourceUrl, createdAt: now, updatedAt: now })
|
|
9591
|
+
);
|
|
9592
|
+
const docId = doc.id;
|
|
9593
|
+
const chunkRows = parts.map(
|
|
9594
|
+
(content, i) => chunkRepo.create({ documentId: docId, content, chunkIndex: i, createdAt: now })
|
|
9595
|
+
);
|
|
9596
|
+
const savedList = await chunkRepo.save(chunkRows);
|
|
9597
|
+
const savedChunks = savedList.map(
|
|
9598
|
+
(row, i) => ({
|
|
9599
|
+
id: row.id,
|
|
9600
|
+
content: parts[i]
|
|
9601
|
+
})
|
|
9602
|
+
);
|
|
9603
|
+
const dup = await linkRepo.findOne({ where: { agentId: agent.id, documentId: docId } });
|
|
9604
|
+
if (!dup) {
|
|
9605
|
+
await linkRepo.save(linkRepo.create({ agentId: agent.id, documentId: docId }));
|
|
9606
|
+
}
|
|
9607
|
+
let embeddingsWritten = 0;
|
|
9608
|
+
let embeddingsFailed = 0;
|
|
9609
|
+
try {
|
|
9610
|
+
const cms = await getCms();
|
|
9611
|
+
const llm = cms.getPlugin("llm");
|
|
9612
|
+
if (llm?.embed && savedChunks.length > 0) {
|
|
9613
|
+
console.info(`${KB_LOG} starting embedding pass`, { slug, chunkCount: savedChunks.length });
|
|
9614
|
+
const embedBound = (text2) => llm.embed(text2);
|
|
9615
|
+
const { written, failed } = await writeEmbeddingsConcurrent(
|
|
9616
|
+
dataSource,
|
|
9617
|
+
embedBound,
|
|
9618
|
+
savedChunks,
|
|
9619
|
+
EMBED_CONCURRENCY
|
|
9620
|
+
);
|
|
9621
|
+
embeddingsWritten = written;
|
|
9622
|
+
embeddingsFailed = failed;
|
|
9623
|
+
} else {
|
|
9624
|
+
console.error(`${KB_LOG} embeddings skipped`, {
|
|
9625
|
+
slug,
|
|
9626
|
+
hasLlmPlugin: !!llm,
|
|
9627
|
+
hasEmbed: typeof llm?.embed === "function",
|
|
9628
|
+
chunkCount: savedChunks.length,
|
|
9629
|
+
hint: !llm || typeof llm.embed !== "function" ? "LLM plugin missing or no embed(); check LLM_GATEWAY_URL + LLM_API_KEY so llm plugin initializes." : void 0
|
|
9630
|
+
});
|
|
9631
|
+
}
|
|
9632
|
+
} catch (embErr) {
|
|
9633
|
+
const detail = embErr instanceof Error ? embErr.message : String(embErr);
|
|
9634
|
+
console.error(`${KB_LOG} embedding step threw before/during batch`, { slug, detail, embErr });
|
|
9635
|
+
return json(
|
|
9636
|
+
{
|
|
9637
|
+
documentId: docId,
|
|
9638
|
+
chunkCount: savedChunks.length,
|
|
9639
|
+
created: true,
|
|
9640
|
+
linked: true,
|
|
9641
|
+
embeddingsWritten: 0,
|
|
9642
|
+
embeddingsFailed: savedChunks.length,
|
|
9643
|
+
warning: "Document saved and linked; embedding step failed.",
|
|
9644
|
+
detail
|
|
9645
|
+
},
|
|
9646
|
+
{ status: 201 }
|
|
9647
|
+
);
|
|
9648
|
+
}
|
|
9649
|
+
return json({
|
|
9650
|
+
documentId: docId,
|
|
9651
|
+
chunkCount: savedChunks.length,
|
|
9652
|
+
created: true,
|
|
9653
|
+
linked: true,
|
|
9654
|
+
embeddingsWritten,
|
|
9655
|
+
embeddingsFailed
|
|
9656
|
+
});
|
|
9657
|
+
} catch (err) {
|
|
9658
|
+
const msg = err instanceof Error ? err.message : "Failed to ingest knowledge";
|
|
9659
|
+
const name = err instanceof Error ? err.name : "";
|
|
9660
|
+
return json({ error: msg, errorName: name || void 0 }, { status: 500 });
|
|
9661
|
+
}
|
|
9662
|
+
},
|
|
9663
|
+
async unlink(req, slug, documentIdStr) {
|
|
9664
|
+
const denied = await gate(req, "update");
|
|
9665
|
+
if (denied) return denied;
|
|
9666
|
+
const documentId = parseInt(documentIdStr, 10);
|
|
9667
|
+
if (!Number.isFinite(documentId)) return json({ error: "Invalid document id" }, { status: 400 });
|
|
9668
|
+
try {
|
|
9669
|
+
const agent = await findAgentBySlug(dataSource, llmAgents, slug);
|
|
9670
|
+
if (!agent) return json({ error: "Agent not found" }, { status: 404 });
|
|
9671
|
+
const linkRepo = dataSource.getRepository(junction);
|
|
9672
|
+
await linkRepo.delete({ agentId: agent.id, documentId });
|
|
9673
|
+
return json({ ok: true });
|
|
9674
|
+
} catch (err) {
|
|
9675
|
+
const msg = err instanceof Error ? err.message : "Failed to unlink";
|
|
9676
|
+
return json({ error: msg }, { status: 500 });
|
|
9677
|
+
}
|
|
9678
|
+
}
|
|
9679
|
+
};
|
|
9680
|
+
}
|
|
9681
|
+
|
|
8760
9682
|
// src/api/message-template-admin-handlers.ts
|
|
8761
9683
|
init_sms_defaults();
|
|
8762
9684
|
function createSmsMessageTemplateHandlers(config) {
|
|
@@ -9006,6 +9928,26 @@ function createAdminRolesHandlers(config) {
|
|
|
9006
9928
|
}
|
|
9007
9929
|
|
|
9008
9930
|
// src/api/cms-api-handler.ts
|
|
9931
|
+
var KNOWLEDGE_SUFFIX = "knowledge";
|
|
9932
|
+
function matchLlmAgentKnowledgeRoute(path) {
|
|
9933
|
+
const p = path[0] === "api" ? path.slice(1) : path;
|
|
9934
|
+
if (p[0] !== "llm_agents" || p.length < 2) return null;
|
|
9935
|
+
const seg1 = p[1];
|
|
9936
|
+
if (!seg1) return null;
|
|
9937
|
+
if (p[2] === KNOWLEDGE_SUFFIX) {
|
|
9938
|
+
return {
|
|
9939
|
+
slug: seg1,
|
|
9940
|
+
documentId: p.length >= 4 ? p[3] : void 0
|
|
9941
|
+
};
|
|
9942
|
+
}
|
|
9943
|
+
if (seg1.endsWith(KNOWLEDGE_SUFFIX) && seg1.length > KNOWLEDGE_SUFFIX.length) {
|
|
9944
|
+
const slug = seg1.slice(0, -KNOWLEDGE_SUFFIX.length);
|
|
9945
|
+
if (!slug) return null;
|
|
9946
|
+
if (p.length === 2) return { slug, documentId: void 0 };
|
|
9947
|
+
if (p.length === 3) return { slug, documentId: p[2] };
|
|
9948
|
+
}
|
|
9949
|
+
return null;
|
|
9950
|
+
}
|
|
9009
9951
|
var DEFAULT_EXCLUDE = /* @__PURE__ */ new Set([
|
|
9010
9952
|
"users",
|
|
9011
9953
|
"password_reset_tokens",
|
|
@@ -9018,7 +9960,8 @@ var DEFAULT_EXCLUDE = /* @__PURE__ */ new Set([
|
|
|
9018
9960
|
"cart_items",
|
|
9019
9961
|
"wishlists",
|
|
9020
9962
|
"wishlist_items",
|
|
9021
|
-
"message_templates"
|
|
9963
|
+
"message_templates",
|
|
9964
|
+
"llm_agent_knowledge_documents"
|
|
9022
9965
|
]);
|
|
9023
9966
|
function createCmsApiHandler(config) {
|
|
9024
9967
|
const {
|
|
@@ -9042,6 +9985,7 @@ function createCmsApiHandler(config) {
|
|
|
9042
9985
|
userProfile,
|
|
9043
9986
|
settings: settingsConfig,
|
|
9044
9987
|
chat: chatConfig,
|
|
9988
|
+
llmAgentKnowledge: llmAgentKnowledgeConfig,
|
|
9045
9989
|
requireEntityPermission: userRequireEntityPermission,
|
|
9046
9990
|
getSessionUser
|
|
9047
9991
|
} = config;
|
|
@@ -9149,6 +10093,17 @@ function createCmsApiHandler(config) {
|
|
|
9149
10093
|
requireEntityPermission: requireEntityPermissionEffective
|
|
9150
10094
|
});
|
|
9151
10095
|
const chatHandlers = chatConfig ? createChatHandlers(chatConfig) : null;
|
|
10096
|
+
const llmAgentKnowledgeMerged = llmAgentKnowledgeConfig ?? (chatConfig ? {
|
|
10097
|
+
dataSource: chatConfig.dataSource,
|
|
10098
|
+
entityMap: chatConfig.entityMap,
|
|
10099
|
+
getCms: chatConfig.getCms,
|
|
10100
|
+
json: chatConfig.json,
|
|
10101
|
+
requireAuth: chatConfig.requireAuth
|
|
10102
|
+
} : void 0);
|
|
10103
|
+
const llmAgentKnowledgeHandlers = llmAgentKnowledgeMerged ? createLlmAgentKnowledgeHandlers({
|
|
10104
|
+
...llmAgentKnowledgeMerged,
|
|
10105
|
+
requireEntityPermission: requireEntityPermissionEffective
|
|
10106
|
+
}) : null;
|
|
9152
10107
|
function resolveResource(segment) {
|
|
9153
10108
|
const model = pathToModel(segment);
|
|
9154
10109
|
return crudResources.includes(model) ? model : segment;
|
|
@@ -9260,7 +10215,32 @@ function createCmsApiHandler(config) {
|
|
|
9260
10215
|
if (method === "GET") return smsMessageTemplateHandlers.GET(req);
|
|
9261
10216
|
if (method === "PUT") return smsMessageTemplateHandlers.PUT(req);
|
|
9262
10217
|
}
|
|
10218
|
+
{
|
|
10219
|
+
const kbMatch = matchLlmAgentKnowledgeRoute(path);
|
|
10220
|
+
if (kbMatch) {
|
|
10221
|
+
if (!llmAgentKnowledgeHandlers) {
|
|
10222
|
+
return config.json(
|
|
10223
|
+
{
|
|
10224
|
+
error: "LLM agent knowledge is not available",
|
|
10225
|
+
hint: "With chat enabled, routes usually work automatically. Otherwise pass llmAgentKnowledge. If this persists, ensure entityMap includes knowledge_base_documents, knowledge_base_chunks, llm_agent_knowledge_documents, and run migrations."
|
|
10226
|
+
},
|
|
10227
|
+
{ status: 503 }
|
|
10228
|
+
);
|
|
10229
|
+
}
|
|
10230
|
+
const { slug, documentId } = kbMatch;
|
|
10231
|
+
if (method === "DELETE" && documentId != null && documentId !== "") {
|
|
10232
|
+
return llmAgentKnowledgeHandlers.unlink(req, slug, documentId);
|
|
10233
|
+
}
|
|
10234
|
+
if (method === "GET" && (documentId == null || documentId === "")) {
|
|
10235
|
+
return llmAgentKnowledgeHandlers.list(req, slug);
|
|
10236
|
+
}
|
|
10237
|
+
if (method === "POST" && (documentId == null || documentId === "")) {
|
|
10238
|
+
return llmAgentKnowledgeHandlers.post(req, slug);
|
|
10239
|
+
}
|
|
10240
|
+
}
|
|
10241
|
+
}
|
|
9263
10242
|
if (path[0] === "chat" && chatHandlers) {
|
|
10243
|
+
if (path.length === 2 && path[1] === "config" && method === "GET") return chatHandlers.publicConfig(req);
|
|
9264
10244
|
if (path.length === 2 && path[1] === "identify" && method === "POST") return chatHandlers.identify(req);
|
|
9265
10245
|
if (path.length === 4 && path[1] === "conversations" && path[3] === "messages" && method === "GET") return chatHandlers.getMessages(req, path[2]);
|
|
9266
10246
|
if (path.length === 2 && path[1] === "messages" && method === "POST") return chatHandlers.postMessage(req);
|
|
@@ -9329,7 +10309,7 @@ function createCmsApiHandler(config) {
|
|
|
9329
10309
|
}
|
|
9330
10310
|
|
|
9331
10311
|
// src/api/storefront-handlers.ts
|
|
9332
|
-
var
|
|
10312
|
+
var import_typeorm48 = require("typeorm");
|
|
9333
10313
|
|
|
9334
10314
|
// src/lib/is-valid-signup-email.ts
|
|
9335
10315
|
var MAX_EMAIL = 254;
|
|
@@ -9560,7 +10540,7 @@ function createStorefrontApiHandler(config) {
|
|
|
9560
10540
|
const u = await userRepo().findOne({ where: { id: userId } });
|
|
9561
10541
|
if (!u) return null;
|
|
9562
10542
|
const unclaimed = await contactRepo().findOne({
|
|
9563
|
-
where: { email: u.email, userId: (0,
|
|
10543
|
+
where: { email: u.email, userId: (0, import_typeorm48.IsNull)(), deleted: false }
|
|
9564
10544
|
});
|
|
9565
10545
|
if (unclaimed) {
|
|
9566
10546
|
await contactRepo().update(unclaimed.id, { userId });
|
|
@@ -10601,7 +11581,7 @@ function createStorefrontApiHandler(config) {
|
|
|
10601
11581
|
const previewByOrder = {};
|
|
10602
11582
|
if (orderIds.length) {
|
|
10603
11583
|
const oItems = await orderItemRepo().find({
|
|
10604
|
-
where: { orderId: (0,
|
|
11584
|
+
where: { orderId: (0, import_typeorm48.In)(orderIds) },
|
|
10605
11585
|
relations: ["product"],
|
|
10606
11586
|
order: { id: "ASC" }
|
|
10607
11587
|
});
|
|
@@ -10766,6 +11746,7 @@ console.log("\u{1F525} USING LOCAL CMS CORE (index.ts loaded) \u{1F525}");
|
|
|
10766
11746
|
FormSubmission,
|
|
10767
11747
|
KnowledgeBaseChunk,
|
|
10768
11748
|
KnowledgeBaseDocument,
|
|
11749
|
+
LlmAgent,
|
|
10769
11750
|
LlmService,
|
|
10770
11751
|
Media,
|
|
10771
11752
|
MessageTemplate,
|
|
@@ -10815,6 +11796,7 @@ console.log("\u{1F525} USING LOCAL CMS CORE (index.ts loaded) \u{1F525}");
|
|
|
10815
11796
|
createForgotPasswordHandler,
|
|
10816
11797
|
createFormBySlugHandler,
|
|
10817
11798
|
createInviteAcceptHandler,
|
|
11799
|
+
createLlmAgentKnowledgeHandlers,
|
|
10818
11800
|
createMediaZipExtractHandler,
|
|
10819
11801
|
createOtpChallenge,
|
|
10820
11802
|
createSetPasswordHandler,
|
|
@@ -10848,13 +11830,17 @@ console.log("\u{1F525} USING LOCAL CMS CORE (index.ts loaded) \u{1F525}");
|
|
|
10848
11830
|
isZipMedia,
|
|
10849
11831
|
joinRecipientsForSend,
|
|
10850
11832
|
linkUnclaimedContactToUser,
|
|
11833
|
+
llmAgentToChatAgentOptions,
|
|
10851
11834
|
llmPlugin,
|
|
10852
11835
|
loadPublicThemeSettings,
|
|
10853
11836
|
localStoragePlugin,
|
|
10854
11837
|
mergeEmailLayoutCompanyDetails,
|
|
11838
|
+
mergeGuardrailsIntoSystemPrompt,
|
|
10855
11839
|
mergeSeoBySlug,
|
|
10856
11840
|
normalizePhoneE164,
|
|
10857
11841
|
parseEmailRecipientsFromConfig,
|
|
11842
|
+
parseHfInferenceEmbeddingBody,
|
|
11843
|
+
parseLlmAgentValidationRules,
|
|
10858
11844
|
paymentPlugin,
|
|
10859
11845
|
permissionRowsToRecord,
|
|
10860
11846
|
queueEmail,
|
|
@@ -10886,6 +11872,8 @@ console.log("\u{1F525} USING LOCAL CMS CORE (index.ts loaded) \u{1F525}");
|
|
|
10886
11872
|
smsPlugin,
|
|
10887
11873
|
truncateText,
|
|
10888
11874
|
validateSlug,
|
|
11875
|
+
validateUserMessageAgainstAgentRules,
|
|
11876
|
+
validateUserMessageAgainstStructuredRules,
|
|
10889
11877
|
verifyAndConsumeOtpChallenge,
|
|
10890
11878
|
verifyOtpCodeHash
|
|
10891
11879
|
});
|