@infuro/cms-core 1.0.9 → 1.0.10

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.
Files changed (41) hide show
  1. package/dist/admin.cjs +2562 -1176
  2. package/dist/admin.cjs.map +1 -1
  3. package/dist/admin.d.cts +41 -2
  4. package/dist/admin.d.ts +41 -2
  5. package/dist/admin.js +2596 -1214
  6. package/dist/admin.js.map +1 -1
  7. package/dist/api.cjs +1695 -151
  8. package/dist/api.cjs.map +1 -1
  9. package/dist/api.d.cts +2 -1
  10. package/dist/api.d.ts +2 -1
  11. package/dist/api.js +1689 -146
  12. package/dist/api.js.map +1 -1
  13. package/dist/auth.cjs +153 -9
  14. package/dist/auth.cjs.map +1 -1
  15. package/dist/auth.d.cts +17 -27
  16. package/dist/auth.d.ts +17 -27
  17. package/dist/auth.js +143 -8
  18. package/dist/auth.js.map +1 -1
  19. package/dist/cli.cjs +1 -1
  20. package/dist/cli.cjs.map +1 -1
  21. package/dist/cli.js +1 -1
  22. package/dist/cli.js.map +1 -1
  23. package/dist/helpers-dlrF_49e.d.cts +60 -0
  24. package/dist/helpers-dlrF_49e.d.ts +60 -0
  25. package/dist/{index-P5ajDo8-.d.ts → index-C_CZLmHD.d.cts} +88 -1
  26. package/dist/{index-P5ajDo8-.d.cts → index-DeO4AnAj.d.ts} +88 -1
  27. package/dist/index.cjs +3340 -715
  28. package/dist/index.cjs.map +1 -1
  29. package/dist/index.d.cts +154 -5
  30. package/dist/index.d.ts +154 -5
  31. package/dist/index.js +2821 -223
  32. package/dist/index.js.map +1 -1
  33. package/dist/migrations/1772178563555-ChatAndKnowledgeBase.ts +33 -17
  34. package/dist/migrations/1774300000000-RbacSeedGroupsAndPermissionUnique.ts +24 -0
  35. package/dist/migrations/1774300000001-SeedAdministratorUsersPermission.ts +35 -0
  36. package/dist/migrations/1774400000000-CustomerAdminAccessContactUser.ts +37 -0
  37. package/dist/migrations/1774400000001-StorefrontCartWishlist.ts +100 -0
  38. package/dist/migrations/1774400000002-WishlistGuestId.ts +29 -0
  39. package/dist/migrations/1774500000000-ProductCollectionHsn.ts +15 -0
  40. package/package.json +13 -7
  41. /package/{dist → src/admin}/admin.css +0 -0
@@ -5,35 +5,51 @@ export class ChatAndKnowledgeBase1772178563555 implements MigrationInterface {
5
5
 
6
6
  public async up(queryRunner: QueryRunner): Promise<void> {
7
7
  await queryRunner.query(
8
- `CREATE TABLE "knowledge_base_documents" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "sourceUrl" character varying, "content" text NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_knowledge_base_documents" PRIMARY KEY ("id"))`
8
+ `CREATE TABLE IF NOT EXISTS "knowledge_base_documents" ("id" SERIAL NOT NULL, "name" character varying NOT NULL, "sourceUrl" character varying, "content" text NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_knowledge_base_documents" PRIMARY KEY ("id"))`
9
9
  );
10
10
  await queryRunner.query(
11
- `CREATE TABLE "knowledge_base_chunks" ("id" SERIAL NOT NULL, "documentId" integer NOT NULL, "content" text NOT NULL, "chunkIndex" integer NOT NULL DEFAULT 0, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_knowledge_base_chunks" PRIMARY KEY ("id"))`
11
+ `CREATE TABLE IF NOT EXISTS "knowledge_base_chunks" ("id" SERIAL NOT NULL, "documentId" integer NOT NULL, "content" text NOT NULL, "chunkIndex" integer NOT NULL DEFAULT 0, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_knowledge_base_chunks" PRIMARY KEY ("id"))`
12
12
  );
13
13
  await queryRunner.query(
14
- `CREATE TABLE "chat_conversations" ("id" SERIAL NOT NULL, "contactId" integer NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_chat_conversations" PRIMARY KEY ("id"))`
14
+ `CREATE TABLE IF NOT EXISTS "chat_conversations" ("id" SERIAL NOT NULL, "contactId" integer NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_chat_conversations" PRIMARY KEY ("id"))`
15
15
  );
16
16
  await queryRunner.query(
17
- `CREATE TABLE "chat_messages" ("id" SERIAL NOT NULL, "conversationId" integer NOT NULL, "role" character varying NOT NULL, "content" text NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_chat_messages" PRIMARY KEY ("id"))`
17
+ `CREATE TABLE IF NOT EXISTS "chat_messages" ("id" SERIAL NOT NULL, "conversationId" integer NOT NULL, "role" character varying NOT NULL, "content" text NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_chat_messages" PRIMARY KEY ("id"))`
18
18
  );
19
+
20
+ await queryRunner.query(`
21
+ DO $$ BEGIN
22
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_knowledge_base_chunks_document') THEN
23
+ ALTER TABLE "knowledge_base_chunks" ADD CONSTRAINT "FK_knowledge_base_chunks_document" FOREIGN KEY ("documentId") REFERENCES "knowledge_base_documents"("id") ON DELETE CASCADE ON UPDATE NO ACTION;
24
+ END IF;
25
+ END $$;`);
26
+ await queryRunner.query(`
27
+ DO $$ BEGIN
28
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_chat_conversations_contact') THEN
29
+ ALTER TABLE "chat_conversations" ADD CONSTRAINT "FK_chat_conversations_contact" FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE CASCADE ON UPDATE NO ACTION;
30
+ END IF;
31
+ END $$;`);
32
+ await queryRunner.query(`
33
+ DO $$ BEGIN
34
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_chat_messages_conversation') THEN
35
+ ALTER TABLE "chat_messages" ADD CONSTRAINT "FK_chat_messages_conversation" FOREIGN KEY ("conversationId") REFERENCES "chat_conversations"("id") ON DELETE CASCADE ON UPDATE NO ACTION;
36
+ END IF;
37
+ END $$;`);
38
+ }
39
+
40
+ public async down(queryRunner: QueryRunner): Promise<void> {
19
41
  await queryRunner.query(
20
- `ALTER TABLE "knowledge_base_chunks" ADD CONSTRAINT "FK_knowledge_base_chunks_document" FOREIGN KEY ("documentId") REFERENCES "knowledge_base_documents"("id") ON DELETE CASCADE ON UPDATE NO ACTION`
42
+ `ALTER TABLE "chat_messages" DROP CONSTRAINT IF EXISTS "FK_chat_messages_conversation"`
21
43
  );
22
44
  await queryRunner.query(
23
- `ALTER TABLE "chat_conversations" ADD CONSTRAINT "FK_chat_conversations_contact" FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE CASCADE ON UPDATE NO ACTION`
45
+ `ALTER TABLE "chat_conversations" DROP CONSTRAINT IF EXISTS "FK_chat_conversations_contact"`
24
46
  );
25
47
  await queryRunner.query(
26
- `ALTER TABLE "chat_messages" ADD CONSTRAINT "FK_chat_messages_conversation" FOREIGN KEY ("conversationId") REFERENCES "chat_conversations"("id") ON DELETE CASCADE ON UPDATE NO ACTION`
48
+ `ALTER TABLE "knowledge_base_chunks" DROP CONSTRAINT IF EXISTS "FK_knowledge_base_chunks_document"`
27
49
  );
28
- }
29
-
30
- public async down(queryRunner: QueryRunner): Promise<void> {
31
- await queryRunner.query(`ALTER TABLE "chat_messages" DROP CONSTRAINT "FK_chat_messages_conversation"`);
32
- await queryRunner.query(`ALTER TABLE "chat_conversations" DROP CONSTRAINT "FK_chat_conversations_contact"`);
33
- await queryRunner.query(`ALTER TABLE "knowledge_base_chunks" DROP CONSTRAINT "FK_knowledge_base_chunks_document"`);
34
- await queryRunner.query(`DROP TABLE "chat_messages"`);
35
- await queryRunner.query(`DROP TABLE "chat_conversations"`);
36
- await queryRunner.query(`DROP TABLE "knowledge_base_chunks"`);
37
- await queryRunner.query(`DROP TABLE "knowledge_base_documents"`);
50
+ await queryRunner.query(`DROP TABLE IF EXISTS "chat_messages"`);
51
+ await queryRunner.query(`DROP TABLE IF EXISTS "chat_conversations"`);
52
+ await queryRunner.query(`DROP TABLE IF EXISTS "knowledge_base_chunks"`);
53
+ await queryRunner.query(`DROP TABLE IF EXISTS "knowledge_base_documents"`);
38
54
  }
39
55
  }
@@ -0,0 +1,24 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class RbacSeedGroupsAndPermissionUnique1774300000000 implements MigrationInterface {
4
+ name = 'RbacSeedGroupsAndPermissionUnique1774300000000';
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`
8
+ DELETE FROM permissions a USING permissions b
9
+ WHERE a.id > b.id AND a."groupId" = b."groupId" AND a.entity = b.entity
10
+ `);
11
+ await queryRunner.query(`
12
+ CREATE UNIQUE INDEX IF NOT EXISTS "UQ_permissions_group_entity"
13
+ ON "permissions" ("groupId", "entity")
14
+ `);
15
+ await queryRunner.query(`
16
+ INSERT INTO "user_groups" ("name") VALUES ('Administrator'), ('Content Editor'), ('Store Manager')
17
+ ON CONFLICT ("name") DO NOTHING
18
+ `);
19
+ }
20
+
21
+ public async down(queryRunner: QueryRunner): Promise<void> {
22
+ await queryRunner.query(`DROP INDEX IF EXISTS "UQ_permissions_group_entity"`);
23
+ }
24
+ }
@@ -0,0 +1,35 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ /**
4
+ * Grants Administrator group explicit permissions on users, user_groups, and permissions (full CRUD).
5
+ * Super-admin bypass still applies at runtime; these rows give consistency and any code that reads from DB.
6
+ */
7
+ export class SeedAdministratorUsersPermission1774300000001 implements MigrationInterface {
8
+ name = 'SeedAdministratorUsersPermission1774300000001';
9
+
10
+ public async up(queryRunner: QueryRunner): Promise<void> {
11
+ for (const entity of ['users', 'user_groups', 'permissions']) {
12
+ await queryRunner.query(`
13
+ INSERT INTO "permissions" ("groupId", entity, "canCreate", "canRead", "canUpdate", "canDelete")
14
+ SELECT g.id, '${entity}', true, true, true, true
15
+ FROM "user_groups" g
16
+ WHERE g.name = 'Administrator' AND g.deleted = false
17
+ ON CONFLICT ("groupId", entity) DO UPDATE SET
18
+ "canCreate" = EXCLUDED."canCreate",
19
+ "canRead" = EXCLUDED."canRead",
20
+ "canUpdate" = EXCLUDED."canUpdate",
21
+ "canDelete" = EXCLUDED."canDelete",
22
+ "updatedAt" = now()
23
+ `);
24
+ }
25
+ }
26
+
27
+ public async down(queryRunner: QueryRunner): Promise<void> {
28
+ await queryRunner.query(`
29
+ DELETE FROM "permissions" p
30
+ USING "user_groups" g
31
+ WHERE p."groupId" = g.id AND g.name = 'Administrator'
32
+ AND p.entity IN ('users', 'user_groups', 'permissions')
33
+ `);
34
+ }
35
+ }
@@ -0,0 +1,37 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class CustomerAdminAccessContactUser1774400000000 implements MigrationInterface {
4
+ name = 'CustomerAdminAccessContactUser1774400000000';
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "adminAccess" boolean NOT NULL DEFAULT false`);
8
+ await queryRunner.query(`
9
+ UPDATE "users" u SET "adminAccess" = true
10
+ FROM "user_groups" g
11
+ WHERE u."groupId" = g.id AND g.deleted = false
12
+ AND g.name IN ('Administrator', 'Content Editor', 'Store Manager')
13
+ `);
14
+ await queryRunner.query(`ALTER TABLE "contacts" ADD COLUMN IF NOT EXISTS "userId" integer`);
15
+ await queryRunner.query(`
16
+ CREATE UNIQUE INDEX IF NOT EXISTS "UQ_contacts_userId" ON "contacts" ("userId") WHERE "userId" IS NOT NULL
17
+ `);
18
+ await queryRunner.query(`
19
+ DO $$ BEGIN
20
+ ALTER TABLE "contacts" ADD CONSTRAINT "FK_contacts_userId"
21
+ FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE NO ACTION;
22
+ EXCEPTION WHEN duplicate_object THEN NULL;
23
+ END $$
24
+ `);
25
+ await queryRunner.query(`
26
+ INSERT INTO "user_groups" ("name") VALUES ('Customer')
27
+ ON CONFLICT ("name") DO NOTHING
28
+ `);
29
+ }
30
+
31
+ public async down(queryRunner: QueryRunner): Promise<void> {
32
+ await queryRunner.query(`ALTER TABLE "contacts" DROP CONSTRAINT IF EXISTS "FK_contacts_userId"`);
33
+ await queryRunner.query(`DROP INDEX IF EXISTS "UQ_contacts_userId"`);
34
+ await queryRunner.query(`ALTER TABLE "contacts" DROP COLUMN IF EXISTS "userId"`);
35
+ await queryRunner.query(`ALTER TABLE "users" DROP COLUMN IF EXISTS "adminAccess"`);
36
+ }
37
+ }
@@ -0,0 +1,100 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class StorefrontCartWishlist1774400000001 implements MigrationInterface {
4
+ name = 'StorefrontCartWishlist1774400000001';
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`
8
+ CREATE TABLE IF NOT EXISTS "carts" (
9
+ "id" SERIAL NOT NULL,
10
+ "guestToken" character varying,
11
+ "contactId" integer,
12
+ "currency" character varying NOT NULL DEFAULT 'INR',
13
+ "expiresAt" TIMESTAMP,
14
+ "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
15
+ "updatedAt" TIMESTAMP NOT NULL DEFAULT now(),
16
+ CONSTRAINT "PK_carts" PRIMARY KEY ("id"),
17
+ CONSTRAINT "CHK_carts_owner" CHECK (
18
+ ("guestToken" IS NOT NULL AND "contactId" IS NULL) OR
19
+ ("guestToken" IS NULL AND "contactId" IS NOT NULL)
20
+ )
21
+ )
22
+ `);
23
+ await queryRunner.query(
24
+ `CREATE UNIQUE INDEX IF NOT EXISTS "UQ_carts_guestToken" ON "carts" ("guestToken") WHERE "guestToken" IS NOT NULL`,
25
+ );
26
+ await queryRunner.query(
27
+ `CREATE UNIQUE INDEX IF NOT EXISTS "UQ_carts_contactId" ON "carts" ("contactId") WHERE "contactId" IS NOT NULL`,
28
+ );
29
+ await queryRunner.query(`
30
+ ALTER TABLE "carts" ADD CONSTRAINT "FK_carts_contactId"
31
+ FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE CASCADE ON UPDATE NO ACTION
32
+ `);
33
+
34
+ await queryRunner.query(`
35
+ CREATE TABLE IF NOT EXISTS "cart_items" (
36
+ "id" SERIAL NOT NULL,
37
+ "cartId" integer NOT NULL,
38
+ "productId" integer NOT NULL,
39
+ "quantity" integer NOT NULL DEFAULT 1,
40
+ "metadata" jsonb,
41
+ "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
42
+ "updatedAt" TIMESTAMP NOT NULL DEFAULT now(),
43
+ CONSTRAINT "PK_cart_items" PRIMARY KEY ("id"),
44
+ CONSTRAINT "UQ_cart_items_cart_product" UNIQUE ("cartId", "productId")
45
+ )
46
+ `);
47
+ await queryRunner.query(`
48
+ ALTER TABLE "cart_items" ADD CONSTRAINT "FK_cart_items_cartId"
49
+ FOREIGN KEY ("cartId") REFERENCES "carts"("id") ON DELETE CASCADE ON UPDATE NO ACTION
50
+ `);
51
+ await queryRunner.query(`
52
+ ALTER TABLE "cart_items" ADD CONSTRAINT "FK_cart_items_productId"
53
+ FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE CASCADE ON UPDATE NO ACTION
54
+ `);
55
+
56
+ await queryRunner.query(`
57
+ CREATE TABLE IF NOT EXISTS "wishlists" (
58
+ "id" SERIAL NOT NULL,
59
+ "contactId" integer NOT NULL,
60
+ "name" character varying NOT NULL DEFAULT 'default',
61
+ "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
62
+ "updatedAt" TIMESTAMP NOT NULL DEFAULT now(),
63
+ CONSTRAINT "PK_wishlists" PRIMARY KEY ("id"),
64
+ CONSTRAINT "UQ_wishlists_contact_name" UNIQUE ("contactId", "name")
65
+ )
66
+ `);
67
+ await queryRunner.query(`
68
+ ALTER TABLE "wishlists" ADD CONSTRAINT "FK_wishlists_contactId"
69
+ FOREIGN KEY ("contactId") REFERENCES "contacts"("id") ON DELETE CASCADE ON UPDATE NO ACTION
70
+ `);
71
+
72
+ await queryRunner.query(`
73
+ CREATE TABLE IF NOT EXISTS "wishlist_items" (
74
+ "id" SERIAL NOT NULL,
75
+ "wishlistId" integer NOT NULL,
76
+ "productId" integer NOT NULL,
77
+ "metadata" jsonb,
78
+ "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
79
+ "updatedAt" TIMESTAMP NOT NULL DEFAULT now(),
80
+ CONSTRAINT "PK_wishlist_items" PRIMARY KEY ("id"),
81
+ CONSTRAINT "UQ_wishlist_items_list_product" UNIQUE ("wishlistId", "productId")
82
+ )
83
+ `);
84
+ await queryRunner.query(`
85
+ ALTER TABLE "wishlist_items" ADD CONSTRAINT "FK_wishlist_items_wishlistId"
86
+ FOREIGN KEY ("wishlistId") REFERENCES "wishlists"("id") ON DELETE CASCADE ON UPDATE NO ACTION
87
+ `);
88
+ await queryRunner.query(`
89
+ ALTER TABLE "wishlist_items" ADD CONSTRAINT "FK_wishlist_items_productId"
90
+ FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE CASCADE ON UPDATE NO ACTION
91
+ `);
92
+ }
93
+
94
+ public async down(queryRunner: QueryRunner): Promise<void> {
95
+ await queryRunner.query(`DROP TABLE IF EXISTS "wishlist_items"`);
96
+ await queryRunner.query(`DROP TABLE IF EXISTS "wishlists"`);
97
+ await queryRunner.query(`DROP TABLE IF EXISTS "cart_items"`);
98
+ await queryRunner.query(`DROP TABLE IF EXISTS "carts"`);
99
+ }
100
+ }
@@ -0,0 +1,29 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ /** Adds guestId to wishlists so the same guest_id cookie can own both cart and wishlist (plan: single guestId for both). */
4
+ export class WishlistGuestId1774400000002 implements MigrationInterface {
5
+ name = 'WishlistGuestId1774400000002';
6
+
7
+ public async up(queryRunner: QueryRunner): Promise<void> {
8
+ await queryRunner.query(`ALTER TABLE "wishlists" ADD COLUMN IF NOT EXISTS "guestId" character varying`);
9
+ await queryRunner.query(`ALTER TABLE "wishlists" ALTER COLUMN "contactId" DROP NOT NULL`);
10
+ await queryRunner.query(`ALTER TABLE "wishlists" DROP CONSTRAINT IF EXISTS "CHK_wishlists_owner"`);
11
+ await queryRunner.query(`
12
+ ALTER TABLE "wishlists" ADD CONSTRAINT "CHK_wishlists_owner" CHECK (
13
+ ("guestId" IS NOT NULL AND "contactId" IS NULL) OR
14
+ ("guestId" IS NULL AND "contactId" IS NOT NULL)
15
+ )
16
+ `);
17
+ await queryRunner.query(
18
+ `CREATE UNIQUE INDEX IF NOT EXISTS "UQ_wishlists_guestId" ON "wishlists" ("guestId") WHERE "guestId" IS NOT NULL`,
19
+ );
20
+ }
21
+
22
+ public async down(queryRunner: QueryRunner): Promise<void> {
23
+ await queryRunner.query(`DROP INDEX IF EXISTS "UQ_wishlists_guestId"`);
24
+ await queryRunner.query(`ALTER TABLE "wishlists" DROP CONSTRAINT IF EXISTS "CHK_wishlists_owner"`);
25
+ await queryRunner.query(`ALTER TABLE "wishlists" DROP COLUMN IF EXISTS "guestId"`);
26
+ await queryRunner.query(`DELETE FROM "wishlists" WHERE "contactId" IS NULL`);
27
+ await queryRunner.query(`ALTER TABLE "wishlists" ALTER COLUMN "contactId" SET NOT NULL`);
28
+ }
29
+ }
@@ -0,0 +1,15 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class ProductCollectionHsn1774500000000 implements MigrationInterface {
4
+ name = 'ProductCollectionHsn1774500000000';
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`ALTER TABLE "products" ADD COLUMN IF NOT EXISTS "hsn" character varying`);
8
+ await queryRunner.query(`ALTER TABLE "collections" ADD COLUMN IF NOT EXISTS "hsn" character varying`);
9
+ }
10
+
11
+ public async down(queryRunner: QueryRunner): Promise<void> {
12
+ await queryRunner.query(`ALTER TABLE "collections" DROP COLUMN IF EXISTS "hsn"`);
13
+ await queryRunner.query(`ALTER TABLE "products" DROP COLUMN IF EXISTS "hsn"`);
14
+ }
15
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infuro/cms-core",
3
- "version": "1.0.9",
3
+ "version": "1.0.10",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -12,7 +12,8 @@
12
12
  "infuro-cms": "./dist/cli.js"
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "src/admin/admin.css"
16
17
  ],
17
18
  "exports": {
18
19
  ".": {
@@ -50,10 +51,10 @@
50
51
  "import": "./dist/theme.js",
51
52
  "require": "./dist/theme.cjs"
52
53
  },
53
- "./admin.css": "./dist/admin.css"
54
+ "./admin.css": "./src/admin/admin.css"
54
55
  },
55
56
  "scripts": {
56
- "build": "tsup && cp src/admin/admin.css dist/admin.css && mkdir -p dist/migrations && cp -r src/migrations/. dist/migrations/",
57
+ "build": "tsup && mkdir -p dist/migrations && cp -r src/migrations/. dist/migrations/",
57
58
  "dev": "tsup --watch",
58
59
  "link": "npm run build && npm link",
59
60
  "prepublishOnly": "npm run build"
@@ -72,7 +73,7 @@
72
73
  "@types/nodemailer": "^6.4.0",
73
74
  "@types/papaparse": "^5.3.14",
74
75
  "@types/react": "19.0.8",
75
- "next": "15.1.9",
76
+ "next": "^15.5.13",
76
77
  "next-auth": "^4.24.11",
77
78
  "react": "19.0.1",
78
79
  "react-dom": "19.0.1",
@@ -82,6 +83,10 @@
82
83
  },
83
84
  "dependencies": {
84
85
  "@aws-sdk/client-s3": "^3.858.0",
86
+ "bullmq": "^5.34.0",
87
+ "fastq": "^1.20.0",
88
+ "ioredis": "^5.7.0",
89
+ "lru-cache": "^11.0.0",
85
90
  "@aws-sdk/client-ses": "^3.858.0",
86
91
  "@radix-ui/react-avatar": "^1.1.10",
87
92
  "@radix-ui/react-checkbox": "^1.3.2",
@@ -101,11 +106,12 @@
101
106
  "googleapis": "^154.1.0",
102
107
  "lucide-react": "^0.476.0",
103
108
  "next-themes": "^0.2.1",
104
- "nodemailer": "^6.9.0",
109
+ "nodemailer": "^8.0.2",
105
110
  "papaparse": "^5.4.1",
106
111
  "razorpay": "^2.9.6",
107
112
  "react-chartjs-2": "^5.3.0",
108
- "react-quill-new": "^3.3.3",
113
+ "jodit": "^4.6.2",
114
+ "jodit-react": "^5.2.19",
109
115
  "reflect-metadata": "^0.2.2",
110
116
  "sonner": "^2.0.6",
111
117
  "stripe": "^20.4.1",
File without changes