@forgecart/cli 1.1.0 → 2.1.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.
Files changed (181) hide show
  1. package/dist/bin/forgecart.d.ts +2 -0
  2. package/dist/bin/forgecart.js +4 -0
  3. package/dist/bin/forgecart.js.map +1 -0
  4. package/dist/src/cli.d.ts +14 -1
  5. package/dist/src/cli.js +30 -15
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/commands/init.d.ts +39 -2
  8. package/dist/src/commands/init.js +173 -301
  9. package/dist/src/commands/init.js.map +1 -1
  10. package/dist/src/commands/placeholders.d.ts +19 -0
  11. package/dist/src/commands/placeholders.js +109 -0
  12. package/dist/src/commands/placeholders.js.map +1 -0
  13. package/dist/src/output.d.ts +11 -0
  14. package/dist/src/output.js +16 -0
  15. package/dist/src/output.js.map +1 -0
  16. package/package.json +21 -11
  17. package/templates/storefront/.env.example +12 -0
  18. package/templates/storefront/.forgecartignore +2 -0
  19. package/templates/storefront/Procfile +1 -0
  20. package/templates/storefront/README.md +87 -0
  21. package/templates/storefront/next.config.js +14 -0
  22. package/templates/storefront/package.json +25 -0
  23. package/templates/storefront/postcss.config.js +6 -0
  24. package/templates/storefront/src/app/cart/page.tsx +88 -0
  25. package/templates/storefront/src/app/globals.css +13 -0
  26. package/templates/storefront/src/app/layout.tsx +32 -0
  27. package/templates/storefront/src/app/page.tsx +49 -0
  28. package/templates/storefront/src/app/products/[slug]/not-found.tsx +20 -0
  29. package/templates/storefront/src/app/products/[slug]/page.tsx +61 -0
  30. package/templates/storefront/src/app/products/page.tsx +27 -0
  31. package/templates/storefront/src/components/Header.tsx +47 -0
  32. package/templates/storefront/src/components/ProductCard.tsx +40 -0
  33. package/templates/storefront/src/components/ProductPurchase.tsx +91 -0
  34. package/templates/storefront/src/lib/cart-actions.ts +148 -0
  35. package/templates/storefront/src/lib/cart-context.tsx +88 -0
  36. package/templates/storefront/src/lib/forgecart.ts +187 -0
  37. package/{dist/templates/storefront-additions → templates/storefront}/tailwind.config.js +1 -1
  38. package/templates/storefront/tsconfig.json +23 -0
  39. package/LICENSE +0 -21
  40. package/README.md +0 -179
  41. package/bin/forgecart.js +0 -3
  42. package/dist/package.json +0 -50
  43. package/dist/src/cli.d.ts.map +0 -1
  44. package/dist/src/commands/delete.d.ts +0 -3
  45. package/dist/src/commands/delete.d.ts.map +0 -1
  46. package/dist/src/commands/delete.js +0 -60
  47. package/dist/src/commands/delete.js.map +0 -1
  48. package/dist/src/commands/deploy.d.ts +0 -3
  49. package/dist/src/commands/deploy.d.ts.map +0 -1
  50. package/dist/src/commands/deploy.js +0 -243
  51. package/dist/src/commands/deploy.js.map +0 -1
  52. package/dist/src/commands/env.d.ts +0 -3
  53. package/dist/src/commands/env.d.ts.map +0 -1
  54. package/dist/src/commands/env.js +0 -158
  55. package/dist/src/commands/env.js.map +0 -1
  56. package/dist/src/commands/init.d.ts.map +0 -1
  57. package/dist/src/commands/list.d.ts +0 -3
  58. package/dist/src/commands/list.d.ts.map +0 -1
  59. package/dist/src/commands/list.js +0 -65
  60. package/dist/src/commands/list.js.map +0 -1
  61. package/dist/src/commands/login.d.ts +0 -3
  62. package/dist/src/commands/login.d.ts.map +0 -1
  63. package/dist/src/commands/login.js +0 -120
  64. package/dist/src/commands/login.js.map +0 -1
  65. package/dist/src/commands/logs.d.ts +0 -3
  66. package/dist/src/commands/logs.d.ts.map +0 -1
  67. package/dist/src/commands/logs.js +0 -88
  68. package/dist/src/commands/logs.js.map +0 -1
  69. package/dist/src/commands/scale.d.ts +0 -3
  70. package/dist/src/commands/scale.d.ts.map +0 -1
  71. package/dist/src/commands/scale.js +0 -49
  72. package/dist/src/commands/scale.js.map +0 -1
  73. package/dist/src/commands/status.d.ts +0 -3
  74. package/dist/src/commands/status.d.ts.map +0 -1
  75. package/dist/src/commands/status.js +0 -90
  76. package/dist/src/commands/status.js.map +0 -1
  77. package/dist/src/commands/whoami.d.ts +0 -3
  78. package/dist/src/commands/whoami.d.ts.map +0 -1
  79. package/dist/src/commands/whoami.js +0 -59
  80. package/dist/src/commands/whoami.js.map +0 -1
  81. package/dist/src/index.d.ts +0 -3
  82. package/dist/src/index.d.ts.map +0 -1
  83. package/dist/src/index.js +0 -5
  84. package/dist/src/index.js.map +0 -1
  85. package/dist/src/lib/api-client.d.ts +0 -34
  86. package/dist/src/lib/api-client.d.ts.map +0 -1
  87. package/dist/src/lib/api-client.js +0 -141
  88. package/dist/src/lib/api-client.js.map +0 -1
  89. package/dist/src/lib/archive.d.ts +0 -9
  90. package/dist/src/lib/archive.d.ts.map +0 -1
  91. package/dist/src/lib/archive.js +0 -118
  92. package/dist/src/lib/archive.js.map +0 -1
  93. package/dist/src/lib/config-updater.d.ts +0 -10
  94. package/dist/src/lib/config-updater.d.ts.map +0 -1
  95. package/dist/src/lib/config-updater.js +0 -34
  96. package/dist/src/lib/config-updater.js.map +0 -1
  97. package/dist/src/lib/config.d.ts +0 -53
  98. package/dist/src/lib/config.d.ts.map +0 -1
  99. package/dist/src/lib/config.js +0 -162
  100. package/dist/src/lib/config.js.map +0 -1
  101. package/dist/src/lib/env-sync.d.ts +0 -44
  102. package/dist/src/lib/env-sync.d.ts.map +0 -1
  103. package/dist/src/lib/env-sync.js +0 -207
  104. package/dist/src/lib/env-sync.js.map +0 -1
  105. package/dist/src/lib/logger.d.ts +0 -15
  106. package/dist/src/lib/logger.d.ts.map +0 -1
  107. package/dist/src/lib/logger.js +0 -54
  108. package/dist/src/lib/logger.js.map +0 -1
  109. package/dist/src/lib/nx-generator.d.ts +0 -22
  110. package/dist/src/lib/nx-generator.d.ts.map +0 -1
  111. package/dist/src/lib/nx-generator.js +0 -345
  112. package/dist/src/lib/nx-generator.js.map +0 -1
  113. package/dist/src/lib/standalone.d.ts +0 -28
  114. package/dist/src/lib/standalone.d.ts.map +0 -1
  115. package/dist/src/lib/standalone.js +0 -107
  116. package/dist/src/lib/standalone.js.map +0 -1
  117. package/dist/src/types/index.d.ts +0 -80
  118. package/dist/src/types/index.d.ts.map +0 -1
  119. package/dist/src/types/index.js +0 -14
  120. package/dist/src/types/index.js.map +0 -1
  121. package/dist/src/utils/spinner.d.ts +0 -16
  122. package/dist/src/utils/spinner.d.ts.map +0 -1
  123. package/dist/src/utils/spinner.js +0 -88
  124. package/dist/src/utils/spinner.js.map +0 -1
  125. package/dist/src/utils/validation.d.ts +0 -12
  126. package/dist/src/utils/validation.d.ts.map +0 -1
  127. package/dist/src/utils/validation.js +0 -82
  128. package/dist/src/utils/validation.js.map +0 -1
  129. package/dist/templates/application-additions/.forgecartignore +0 -37
  130. package/dist/templates/application-additions/Procfile +0 -1
  131. package/dist/templates/application-additions/src/app/app.module.ts +0 -16
  132. package/dist/templates/application-additions/src/services/forgecart.service.ts +0 -62
  133. package/dist/templates/application-additions/src/services/index.ts +0 -2
  134. package/dist/templates/application-additions/src/services/product-event-listener.service.ts +0 -150
  135. package/dist/templates/application-e2e-additions/src/support/global-setup.ts +0 -16
  136. package/dist/templates/application-e2e-additions/src/support/test-setup.ts +0 -9
  137. package/dist/templates/storefront-additions/.forgecartignore +0 -64
  138. package/dist/templates/storefront-additions/Procfile +0 -1
  139. package/dist/templates/storefront-additions/package.json +0 -11
  140. package/dist/templates/storefront-additions/postcss.config.js +0 -5
  141. package/dist/templates/storefront-additions/src/app/cart/page.tsx +0 -77
  142. package/dist/templates/storefront-additions/src/app/global.css +0 -1
  143. package/dist/templates/storefront-additions/src/app/layout.tsx +0 -25
  144. package/dist/templates/storefront-additions/src/app/page.tsx +0 -43
  145. package/dist/templates/storefront-additions/src/components/AddToCartButton.tsx +0 -29
  146. package/dist/templates/storefront-additions/src/components/CartItem.tsx +0 -82
  147. package/dist/templates/storefront-additions/src/components/Header.tsx +0 -42
  148. package/dist/templates/storefront-additions/src/components/ProductCard.tsx +0 -57
  149. package/dist/templates/storefront-additions/src/components/QuantitySelector.tsx +0 -35
  150. package/dist/templates/storefront-additions/src/context/CartContext.tsx +0 -158
  151. package/dist/templates/storefront-additions/src/lib/forgecart.ts +0 -22
  152. package/dist/templates/storefront-e2e-additions/playwright.config.ts +0 -26
  153. package/dist/templates/storefront-e2e-additions/src/example.spec.ts +0 -11
  154. package/dist/templates/workspace/.nxignore +0 -2
  155. package/templates/application-additions/.forgecartignore +0 -37
  156. package/templates/application-additions/Procfile +0 -1
  157. package/templates/application-additions/src/app/app.module.ts +0 -16
  158. package/templates/application-additions/src/services/forgecart.service.ts +0 -62
  159. package/templates/application-additions/src/services/index.ts +0 -2
  160. package/templates/application-additions/src/services/product-event-listener.service.ts +0 -150
  161. package/templates/application-e2e-additions/src/support/global-setup.ts +0 -16
  162. package/templates/application-e2e-additions/src/support/test-setup.ts +0 -9
  163. package/templates/storefront-additions/.forgecartignore +0 -64
  164. package/templates/storefront-additions/Procfile +0 -1
  165. package/templates/storefront-additions/package.json +0 -11
  166. package/templates/storefront-additions/postcss.config.js +0 -5
  167. package/templates/storefront-additions/src/app/cart/page.tsx +0 -77
  168. package/templates/storefront-additions/src/app/global.css +0 -1
  169. package/templates/storefront-additions/src/app/layout.tsx +0 -25
  170. package/templates/storefront-additions/src/app/page.tsx +0 -43
  171. package/templates/storefront-additions/src/components/AddToCartButton.tsx +0 -29
  172. package/templates/storefront-additions/src/components/CartItem.tsx +0 -82
  173. package/templates/storefront-additions/src/components/Header.tsx +0 -42
  174. package/templates/storefront-additions/src/components/ProductCard.tsx +0 -57
  175. package/templates/storefront-additions/src/components/QuantitySelector.tsx +0 -35
  176. package/templates/storefront-additions/src/context/CartContext.tsx +0 -158
  177. package/templates/storefront-additions/src/lib/forgecart.ts +0 -22
  178. package/templates/storefront-additions/tailwind.config.js +0 -8
  179. package/templates/storefront-e2e-additions/playwright.config.ts +0 -26
  180. package/templates/storefront-e2e-additions/src/example.spec.ts +0 -11
  181. package/templates/workspace/.nxignore +0 -2
@@ -1,158 +0,0 @@
1
- 'use client'
2
-
3
- import {
4
- createContext,
5
- useContext,
6
- useState,
7
- useEffect,
8
- useCallback,
9
- ReactNode,
10
- } from 'react'
11
- import forgecart from '../lib/forgecart'
12
-
13
- interface CartLine {
14
- id: string
15
- quantity: number
16
- productVariant: {
17
- id: string
18
- name: string
19
- price: number
20
- priceWithTax: number
21
- currencyCode: string
22
- }
23
- featuredAsset?: {
24
- preview: string
25
- }
26
- unitPriceWithTax: number
27
- linePriceWithTax: number
28
- }
29
-
30
- interface Cart {
31
- id: string
32
- lines: CartLine[]
33
- totalQuantity: number
34
- subTotalWithTax: number
35
- totalWithTax: number
36
- currencyCode: string
37
- }
38
-
39
- interface CartContextType {
40
- cart: Cart | null
41
- loading: boolean
42
- itemCount: number
43
- addToCart: (productVariantId: string, quantity: number) => Promise<void>
44
- updateQuantity: (orderLineId: string, quantity: number) => Promise<void>
45
- removeItem: (orderLineId: string) => Promise<void>
46
- refreshCart: () => Promise<void>
47
- }
48
-
49
- const CartContext = createContext<CartContextType | undefined>(undefined)
50
-
51
- export function CartProvider({ children }: { children: ReactNode }) {
52
- const [cart, setCart] = useState<Cart | null>(null)
53
- const [loading, setLoading] = useState(true)
54
-
55
- const refreshCart = useCallback(async () => {
56
- try {
57
- const result = await forgecart.shop.order.activeOrder()
58
- if (result.activeOrder) {
59
- setCart(result.activeOrder as unknown as Cart)
60
- } else {
61
- setCart(null)
62
- }
63
- } catch (error) {
64
- console.error('Failed to fetch cart:', error)
65
- } finally {
66
- setLoading(false)
67
- }
68
- }, [])
69
-
70
- useEffect(() => {
71
- refreshCart()
72
- }, [refreshCart])
73
-
74
- const addToCart = async (productVariantId: string, quantity: number) => {
75
- setLoading(true)
76
- try {
77
- const result = await forgecart.shop.order.addItemToOrder({
78
- productVariantId,
79
- quantity,
80
- })
81
- if (
82
- result.addItemToOrder &&
83
- result.addItemToOrder.__typename === 'Order'
84
- ) {
85
- setCart(result.addItemToOrder as unknown as Cart)
86
- }
87
- } catch (error) {
88
- console.error('Failed to add item:', error)
89
- } finally {
90
- setLoading(false)
91
- }
92
- }
93
-
94
- const updateQuantity = async (orderLineId: string, quantity: number) => {
95
- setLoading(true)
96
- try {
97
- const result = await forgecart.shop.order.adjustOrderLine({
98
- orderLineId,
99
- quantity,
100
- })
101
- if (
102
- result.adjustOrderLine &&
103
- result.adjustOrderLine.__typename === 'Order'
104
- ) {
105
- setCart(result.adjustOrderLine as unknown as Cart)
106
- }
107
- } catch (error) {
108
- console.error('Failed to update quantity:', error)
109
- } finally {
110
- setLoading(false)
111
- }
112
- }
113
-
114
- const removeItem = async (orderLineId: string) => {
115
- setLoading(true)
116
- try {
117
- const result = await forgecart.shop.order.removeOrderLine({
118
- orderLineId,
119
- })
120
- if (
121
- result.removeOrderLine &&
122
- result.removeOrderLine.__typename === 'Order'
123
- ) {
124
- setCart(result.removeOrderLine as unknown as Cart)
125
- }
126
- } catch (error) {
127
- console.error('Failed to remove item:', error)
128
- } finally {
129
- setLoading(false)
130
- }
131
- }
132
-
133
- const itemCount = cart?.totalQuantity ?? 0
134
-
135
- return (
136
- <CartContext.Provider
137
- value={{
138
- cart,
139
- loading,
140
- itemCount,
141
- addToCart,
142
- updateQuantity,
143
- removeItem,
144
- refreshCart,
145
- }}
146
- >
147
- {children}
148
- </CartContext.Provider>
149
- )
150
- }
151
-
152
- export function useCart() {
153
- const context = useContext(CartContext)
154
- if (!context) {
155
- throw new Error('useCart must be used within CartProvider')
156
- }
157
- return context
158
- }
@@ -1,22 +0,0 @@
1
- import { ForgeCartSDK } from '@forgecart/sdk'
2
-
3
- // Singleton instance of the ForgeCart SDK
4
- // Initialized once to maintain socket connection
5
- let sdkInstance: ForgeCartSDK | null = null
6
-
7
- export function getForgeCartSDK(): ForgeCartSDK {
8
- if (!sdkInstance) {
9
- sdkInstance = new ForgeCartSDK({
10
- endpoint:
11
- process.env.NEXT_PUBLIC_FORGECART_API_URL ||
12
- 'https://api.forgecart.com',
13
- token: process.env.NEXT_PUBLIC_FORGECART_CHANNEL_TOKEN || '',
14
- })
15
- }
16
- return sdkInstance
17
- }
18
-
19
- // Export singleton instance for convenience
20
- export const forgecart = getForgeCartSDK()
21
-
22
- export default forgecart
@@ -1,8 +0,0 @@
1
- /** @type {import('tailwindcss').Config} */
2
- module.exports = {
3
- content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'],
4
- theme: {
5
- extend: {},
6
- },
7
- plugins: [],
8
- }
@@ -1,26 +0,0 @@
1
- import { defineConfig, devices } from '@playwright/test'
2
- import { nxE2EPreset } from '@nx/playwright/preset'
3
-
4
- import { workspaceRoot } from '@nx/devkit'
5
-
6
- const baseURL = process.env['BASE_URL'] || 'http://localhost:4200'
7
-
8
- export default defineConfig({
9
- ...nxE2EPreset(__filename, { testDir: './src' }),
10
- use: {
11
- baseURL,
12
- trace: 'on-first-retry',
13
- },
14
- webServer: {
15
- command: 'npx nx run storefront:dev',
16
- url: 'http://localhost:4200',
17
- reuseExistingServer: !process.env.CI,
18
- cwd: workspaceRoot,
19
- },
20
- projects: [
21
- {
22
- name: 'chromium',
23
- use: { ...devices['Desktop Chrome'] },
24
- },
25
- ],
26
- })
@@ -1,11 +0,0 @@
1
- import { test, expect } from '@playwright/test'
2
-
3
- test('has title', async ({ page }) => {
4
- await page.goto('/')
5
- expect(await page.locator('h1').innerText()).toContain('Our Products')
6
- })
7
-
8
- test('has cart link', async ({ page }) => {
9
- await page.goto('/')
10
- await expect(page.locator('a[href="/cart"]')).toBeVisible()
11
- })
@@ -1,2 +0,0 @@
1
- # ForgeCart deployment directories - exclude from Nx project detection
2
- .forgecart