@absolutejs/commerce 0.1.0-beta.0 → 0.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,88 @@
1
+ // @bun
2
+ // src/drizzle/index.ts
3
+ import {
4
+ boolean,
5
+ integer,
6
+ jsonb,
7
+ pgTable,
8
+ text,
9
+ timestamp,
10
+ uuid,
11
+ varchar
12
+ } from "drizzle-orm/pg-core";
13
+ var commerceDesigns = pgTable("designs", {
14
+ created_at: timestamp().notNull().defaultNow(),
15
+ id: uuid().defaultRandom().primaryKey(),
16
+ image_url: varchar({ length: 600 }).notNull(),
17
+ name: varchar({ length: 120 }).notNull(),
18
+ public: boolean().notNull().default(true)
19
+ });
20
+ var commerceDiscounts = pgTable("discounts", {
21
+ active: boolean().notNull().default(true),
22
+ amount_off: integer(),
23
+ code: varchar({ length: 60 }).primaryKey(),
24
+ created_at: timestamp().notNull().defaultNow(),
25
+ expires_at: timestamp(),
26
+ max_uses: integer(),
27
+ percent_off: integer(),
28
+ used_count: integer().notNull().default(0)
29
+ });
30
+ var commerceOrders = pgTable("orders", {
31
+ amount_total: integer(),
32
+ artwork_urls: jsonb().$type().default([]),
33
+ carrier: varchar({ length: 80 }),
34
+ cart_snapshot: jsonb().$type().default([]),
35
+ created_at: timestamp().notNull().defaultNow(),
36
+ currency: varchar({ length: 10 }),
37
+ customer_email: varchar({ length: 320 }),
38
+ digitized_at: timestamp(),
39
+ digitized_url: varchar({ length: 600 }),
40
+ fulfillment: varchar({ length: 20 }),
41
+ label_url: varchar({ length: 600 }),
42
+ line_items: jsonb().$type().default([]),
43
+ payment_status: varchar({ length: 50 }),
44
+ production_stage: varchar({ length: 20 }),
45
+ proof_note: text(),
46
+ proof_status: varchar({ length: 20 }),
47
+ proof_token: varchar({ length: 64 }),
48
+ proof_url: varchar({ length: 600 }),
49
+ rejection_reason: text(),
50
+ session_id: varchar({ length: 255 }).primaryKey(),
51
+ shipped_at: timestamp(),
52
+ shipping: jsonb().$type(),
53
+ status: varchar({ length: 50 }).notNull(),
54
+ tracking_number: varchar({ length: 160 })
55
+ });
56
+ var commerceQuotes = pgTable("quotes", {
57
+ artwork_urls: jsonb().$type().default([]),
58
+ company: varchar({ length: 200 }),
59
+ created_at: timestamp().notNull().defaultNow(),
60
+ customer_email: varchar({ length: 320 }).notNull(),
61
+ deadline: varchar({ length: 120 }),
62
+ deposit_amount: integer(),
63
+ deposit_status: varchar({ length: 20 }),
64
+ id: uuid().defaultRandom().primaryKey(),
65
+ locations: text(),
66
+ name: varchar({ length: 200 }).notNull(),
67
+ notes: text(),
68
+ phone: varchar({ length: 60 }),
69
+ product: varchar({ length: 120 }),
70
+ quantity: integer(),
71
+ quote_message: text(),
72
+ quoted_amount: integer(),
73
+ quoted_at: timestamp(),
74
+ status: varchar({ length: 20 }).notNull().default("new")
75
+ });
76
+ var commerceDrizzleSchema = {
77
+ designs: commerceDesigns,
78
+ discounts: commerceDiscounts,
79
+ orders: commerceOrders,
80
+ quotes: commerceQuotes
81
+ };
82
+ export {
83
+ commerceQuotes,
84
+ commerceOrders,
85
+ commerceDrizzleSchema,
86
+ commerceDiscounts,
87
+ commerceDesigns
88
+ };
package/dist/index.js CHANGED
@@ -27,6 +27,8 @@ var formatPrice = (value, currency = "USD") => {
27
27
  return code === "USD" ? `$${value.toFixed(2)}` : `${value.toFixed(2)} ${code}`;
28
28
  };
29
29
  // src/core/orders.ts
30
+ var clampPercent = (percent) => Math.min(100, Math.max(0, percent));
31
+ var depositCents = (totalCents, percent) => percent > 0 ? Math.round(totalCents * clampPercent(percent) / 100) : 0;
30
32
  var PRODUCTION_STAGES = [
31
33
  "queued",
32
34
  "digitizing",
@@ -63,6 +65,7 @@ export {
63
65
  fromCents,
64
66
  formatPrice,
65
67
  discountAmountCents,
68
+ depositCents,
66
69
  cartSubtotal,
67
70
  cartSetupTotal,
68
71
  cartCount,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/commerce",
3
- "version": "0.1.0-beta.0",
3
+ "version": "0.2.0-beta.0",
4
4
  "description": "Provider-agnostic commerce primitives (cart, orders, fulfillment, shipping) for AbsoluteJS",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,18 +21,36 @@
21
21
  ".": {
22
22
  "import": "./dist/index.js",
23
23
  "types": "./dist/index.d.ts"
24
+ },
25
+ "./client": {
26
+ "browser": "./dist/client/index.js",
27
+ "import": "./dist/client/index.js",
28
+ "types": "./dist/client/index.d.ts"
29
+ },
30
+ "./drizzle": {
31
+ "import": "./dist/drizzle/index.js",
32
+ "types": "./dist/drizzle/index.d.ts"
24
33
  }
25
34
  },
26
35
  "license": "BSL-1.1",
27
36
  "author": "Alex Kahn",
28
37
  "scripts": {
29
- "build": "rm -rf dist && bun build ./src/index.ts --outdir dist --target bun && tsc --emitDeclarationOnly --project tsconfig.json",
38
+ "build": "rm -rf dist && bun build ./src/index.ts ./src/drizzle/index.ts --outdir dist --target bun --external drizzle-orm && bun build ./src/client/index.ts --outdir dist/client --target browser --format esm && tsc --emitDeclarationOnly --project tsconfig.json",
30
39
  "format": "prettier --write \"./**/*.{js,ts,json,md}\"",
31
40
  "release": "bun run build && bun publish --tag beta",
32
41
  "typecheck": "tsc --noEmit"
33
42
  },
43
+ "peerDependencies": {
44
+ "drizzle-orm": ">=0.30.0"
45
+ },
46
+ "peerDependenciesMeta": {
47
+ "drizzle-orm": {
48
+ "optional": true
49
+ }
50
+ },
34
51
  "devDependencies": {
35
52
  "@types/bun": "1.3.9",
53
+ "drizzle-orm": "^0.44.0",
36
54
  "typescript": "^5.9.3"
37
55
  }
38
56
  }