@teleporthq/teleport-plugin-next-workflows 0.43.39 → 0.43.40
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/__tests__/ecommerce-customhandler-rewriter.test.ts +65 -32
- package/__tests__/payment-charge-user-handler-serialization.test.ts +94 -0
- package/__tests__/stock-decrement-audit.test.ts +19 -0
- package/dist/cjs/ecommerce/stock-decrement.d.ts.map +1 -1
- package/dist/cjs/ecommerce/stock-decrement.js +45 -36
- package/dist/cjs/ecommerce/stock-decrement.js.map +1 -1
- package/dist/cjs/nodes/payment/payment-charge-user.d.ts.map +1 -1
- package/dist/cjs/nodes/payment/payment-charge-user.js +40 -32
- package/dist/cjs/nodes/payment/payment-charge-user.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/ecommerce/stock-decrement.d.ts.map +1 -1
- package/dist/esm/ecommerce/stock-decrement.js +45 -36
- package/dist/esm/ecommerce/stock-decrement.js.map +1 -1
- package/dist/esm/nodes/payment/payment-charge-user.d.ts.map +1 -1
- package/dist/esm/nodes/payment/payment-charge-user.js +40 -32
- package/dist/esm/nodes/payment/payment-charge-user.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/ecommerce/stock-decrement.ts +51 -36
- package/src/nodes/payment/payment-charge-user.ts +40 -34
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { rewriteLowStockCustomHandlers, __testables } from '../src/ecommerce-customhandler-rewriter'
|
|
2
|
+
import { STOCK_DECREMENT_MARKER } from '../src/ecommerce/stock-decrement'
|
|
2
3
|
|
|
3
4
|
const {
|
|
4
5
|
looksLikeLowStockSelectBuilder,
|
|
@@ -508,6 +509,22 @@ describe('looksLikeStockDecrementBuilder — pattern detection', () => {
|
|
|
508
509
|
const rewritten = buildStockDecrementBuilder(false)
|
|
509
510
|
expect(looksLikeStockDecrementBuilder(rewritten)).toBe(false)
|
|
510
511
|
})
|
|
512
|
+
|
|
513
|
+
it('self-heals a legacy rewrite that permanently zeroes NULL (unlimited) stock', () => {
|
|
514
|
+
// A project generated before the NULL-preserving fix already carries
|
|
515
|
+
// the marker, so the marker check alone can't distinguish "already
|
|
516
|
+
// correct" from "already rewritten but still buggy". Detect the old
|
|
517
|
+
// `GREATEST(0, COALESCE(quantity, 0) - …)` shape specifically so the
|
|
518
|
+
// NEXT regeneration upgrades it to the NULL-preserving SQL instead of
|
|
519
|
+
// leaving an existing project's unlimited-stock products stuck at 0
|
|
520
|
+
// forever.
|
|
521
|
+
const legacyRewrite = `${STOCK_DECREMENT_MARKER}
|
|
522
|
+
function customHandler() {
|
|
523
|
+
var setClause = "quantity = GREATEST(0, COALESCE(quantity, 0) - CASE id" + caseExpr + " ELSE 0 END)";
|
|
524
|
+
return { query: "UPDATE teleport_products SET " + setClause, affected: ['a'] };
|
|
525
|
+
}`
|
|
526
|
+
expect(looksLikeStockDecrementBuilder(legacyRewrite)).toBe(true)
|
|
527
|
+
})
|
|
511
528
|
})
|
|
512
529
|
|
|
513
530
|
describe('buildStockDecrementBuilder — semantic behaviour', () => {
|
|
@@ -528,16 +545,19 @@ describe('buildStockDecrementBuilder — semantic behaviour', () => {
|
|
|
528
545
|
},
|
|
529
546
|
])
|
|
530
547
|
// Two semantic guards in the SET clause:
|
|
531
|
-
// * \`
|
|
532
|
-
//
|
|
533
|
-
//
|
|
534
|
-
//
|
|
535
|
-
// * \`GREATEST(0, …)\` floors
|
|
536
|
-
// we never persist a negative stock value —
|
|
537
|
-
// confusing signal in the admin panel ("we
|
|
538
|
-
// have?"). Once a row sits at exactly 0
|
|
539
|
-
// pre-flight refuses further orders
|
|
540
|
-
|
|
548
|
+
// * \`CASE WHEN quantity IS NULL THEN NULL …\` leaves an
|
|
549
|
+
// unlimited-stock product (quantity never set by the
|
|
550
|
+
// merchant) untouched forever — an order must never turn
|
|
551
|
+
// "infinite stock" into a finite, trackable 0.
|
|
552
|
+
// * \`GREATEST(0, …)\` floors a TRACKED row's post-decrement
|
|
553
|
+
// value at 0 so we never persist a negative stock value —
|
|
554
|
+
// that would be a confusing signal in the admin panel ("we
|
|
555
|
+
// sold more than we have?"). Once a row sits at exactly 0
|
|
556
|
+
// the cart-availability pre-flight refuses further orders
|
|
557
|
+
// against it.
|
|
558
|
+
expect(r.query).toContain(
|
|
559
|
+
'SET quantity = CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST(0, quantity - (CASE id'
|
|
560
|
+
)
|
|
541
561
|
expect(r.query).toContain("WHEN 'a' THEN 2")
|
|
542
562
|
expect(r.query).toContain("WHEN 'b' THEN 3")
|
|
543
563
|
expect(r.query).toContain('ELSE 0')
|
|
@@ -589,14 +609,16 @@ describe('buildStockDecrementBuilder — semantic behaviour', () => {
|
|
|
589
609
|
const r = fn({}, [{ items: [{ productId: 'a', quantity: 2 }] }])
|
|
590
610
|
expect(r.query).toContain('RETURNING id')
|
|
591
611
|
expect(r.query).toContain('quantity AS new_quantity')
|
|
592
|
-
// \`old_quantity\` reconstructs an approximate pre-SET value.
|
|
593
|
-
//
|
|
594
|
-
//
|
|
595
|
-
//
|
|
612
|
+
// \`old_quantity\` reconstructs an approximate pre-SET value. A row
|
|
613
|
+
// whose (post-update) \`new_quantity\` is NULL was NULL before too
|
|
614
|
+
// (the SET clause never touches a NULL row); for a tracked row,
|
|
615
|
+
// the GREATEST(0, …) clamp in SET means we can't perfectly invert
|
|
616
|
+
// the arithmetic (a row that decremented from 1 → 0 with delta 2
|
|
617
|
+
// also would have shown 0 with delta 1), but for the downstream
|
|
596
618
|
// low-stock SELECT only \`new_quantity\` matters, so a conservative
|
|
597
619
|
// floored approximation is fine.
|
|
598
620
|
expect(r.query).toMatch(
|
|
599
|
-
|
|
621
|
+
/\(CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST\(0,\s*quantity\s*\+\s*\(CASE id[\s\S]*?\)\)\s*END\)\s*AS old_quantity/
|
|
600
622
|
)
|
|
601
623
|
})
|
|
602
624
|
|
|
@@ -629,22 +651,30 @@ describe('buildStockDecrementBuilder — semantic behaviour', () => {
|
|
|
629
651
|
expect(/(?<!')';/.test(r.query)).toBe(false)
|
|
630
652
|
})
|
|
631
653
|
|
|
632
|
-
it('
|
|
654
|
+
it('lets orders proceed against NULL-quantity (unlimited stock) rows WITHOUT ever making them finite', () => {
|
|
633
655
|
// A new project's products table is seeded with NULL quantity
|
|
634
|
-
// everywhere
|
|
635
|
-
//
|
|
636
|
-
//
|
|
637
|
-
//
|
|
638
|
-
//
|
|
639
|
-
//
|
|
640
|
-
//
|
|
641
|
-
//
|
|
656
|
+
// everywhere, and the cart-availability pre-flight treats NULL as
|
|
657
|
+
// "unlimited stock" — so those orders reach this UPDATE. The
|
|
658
|
+
// WHERE guard's "quantity IS NULL OR …" lets the row through, but
|
|
659
|
+
// the SET clause's "CASE WHEN quantity IS NULL THEN NULL …" must
|
|
660
|
+
// leave the value untouched: an unlimited product decrementing on
|
|
661
|
+
// its first order would otherwise floor to 0 and become
|
|
662
|
+
// permanently out-of-stock, even though the merchant never set a
|
|
663
|
+
// finite count. Only rows that already carry a real, finite
|
|
664
|
+
// quantity are actually decremented.
|
|
642
665
|
const r = fn({}, [{ items: [{ productId: 'a', quantity: 1 }] }])
|
|
643
666
|
expect(r.query).toContain('quantity IS NULL OR quantity >=')
|
|
644
|
-
expect(r.query).toContain(
|
|
667
|
+
expect(r.query).toContain(
|
|
668
|
+
'CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST(0, quantity - (CASE id'
|
|
669
|
+
)
|
|
645
670
|
// The legacy "quantity IS NOT NULL" filter that used to skip NULL
|
|
646
|
-
// rows must
|
|
671
|
+
// rows entirely must stay gone — the row still needs to be
|
|
672
|
+
// touched (so its RETURNING row is available to callers), just
|
|
673
|
+
// without changing its value.
|
|
647
674
|
expect(r.query).not.toContain('quantity IS NOT NULL')
|
|
675
|
+
// The old (buggy) shape unconditionally bootstrapped a NULL row
|
|
676
|
+
// to 0 via COALESCE — that must be gone entirely now.
|
|
677
|
+
expect(r.query).not.toContain('COALESCE(quantity, 0)')
|
|
648
678
|
})
|
|
649
679
|
|
|
650
680
|
it('accepts a bare cart-items array (legacy callers pass [items] directly)', () => {
|
|
@@ -664,13 +694,16 @@ describe('buildStockDecrementBuilder — semantic behaviour', () => {
|
|
|
664
694
|
const r = fn({}, [{ items: [{ productId: 'a', quantity: 3 }] }])
|
|
665
695
|
expect(r.query).not.toContain('quantity >=')
|
|
666
696
|
// The legacy "quantity IS NOT NULL" filter has been removed; the
|
|
667
|
-
// SET clause now uses
|
|
668
|
-
//
|
|
669
|
-
//
|
|
670
|
-
//
|
|
671
|
-
//
|
|
697
|
+
// SET clause now uses "CASE WHEN quantity IS NULL THEN NULL …" so
|
|
698
|
+
// NULL-quantity (unlimited-stock) rows stay untouched — even with
|
|
699
|
+
// backorders allowed, an unlimited product is never turned into a
|
|
700
|
+
// finite, trackable one. Tracked rows still floor at 0 —
|
|
701
|
+
// backorders semantically mean "let the order through even if
|
|
702
|
+
// stock is short", not "let the stock counter go negative".
|
|
672
703
|
expect(r.query).not.toContain('quantity IS NOT NULL')
|
|
673
|
-
expect(r.query).toContain(
|
|
704
|
+
expect(r.query).toContain(
|
|
705
|
+
'CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST(0, quantity - (CASE id'
|
|
706
|
+
)
|
|
674
707
|
})
|
|
675
708
|
|
|
676
709
|
it('still uses RETURNING so the low-stock SELECT sees what changed', () => {
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { paymentChargeUser } from '../src/nodes/payment/payment-charge-user'
|
|
2
|
+
|
|
3
|
+
// Regression coverage for a production bug: clicking "Pay Now" on a
|
|
4
|
+
// Stripe checkout failed with
|
|
5
|
+
// { "success": false, "error": "Oo is not defined", "provider": "stripe" }
|
|
6
|
+
//
|
|
7
|
+
// Root cause: `generateHandler()` builds the final server-route handler by
|
|
8
|
+
// calling `.toString()` on several TypeScript functions independently and
|
|
9
|
+
// concatenating the source text (see `../src/nodes/types.ts`'s
|
|
10
|
+
// `handlerToString` docs). Two currency-code arrays
|
|
11
|
+
// (STRIPE_ZERO_DECIMAL_CURRENCIES / STRIPE_THREE_DECIMAL_CURRENCIES) used
|
|
12
|
+
// to be declared as top-level consts and referenced from inside
|
|
13
|
+
// `toStripeMinorUnits`. That's fine in an unminified build, but this
|
|
14
|
+
// package is itself bundled + minified by consumers (teleport-gui's
|
|
15
|
+
// browser packer, via webpack/Terser) before `generateHandler()` ever
|
|
16
|
+
// runs — the minifier is free to rename an unused-by-name top-level
|
|
17
|
+
// const (nothing calls it by string, only a runtime `.toString()` read
|
|
18
|
+
// does, which the minifier can't see), and it renamed the declaration
|
|
19
|
+
// away from what the reconstructed `var STRIPE_ZERO_DECIMAL_CURRENCIES =
|
|
20
|
+
// [...]` text in `generateHandler()` assumed. The result: the generated
|
|
21
|
+
// workflow segment file declared the array under the ORIGINAL name but
|
|
22
|
+
// `toStripeMinorUnits`'s serialized body referenced the MINIFIER-RENAMED
|
|
23
|
+
// name (e.g. a mangled `Oo`), which was never declared anywhere in the
|
|
24
|
+
// generated file — a `ReferenceError` the first time a Stripe charge ran
|
|
25
|
+
// with a zero- or three-decimal currency.
|
|
26
|
+
//
|
|
27
|
+
// The fix moves both arrays to be declared LOCAL to `toStripeMinorUnits`
|
|
28
|
+
// so the declaration and every reference to it live in the SAME
|
|
29
|
+
// `.toString()` snapshot — a consistent rename can never separate them.
|
|
30
|
+
describe('payment-charge-user handler serialization survives minification-style renaming', () => {
|
|
31
|
+
const handlerSource = paymentChargeUser.generateHandler()
|
|
32
|
+
|
|
33
|
+
it('does not reference the old top-level currency-array identifiers anywhere', () => {
|
|
34
|
+
// These names no longer exist ANYWHERE in the source — not as a
|
|
35
|
+
// declaration, not as a reference. If a future edit reintroduces a
|
|
36
|
+
// top-level const referenced only from inside a separately
|
|
37
|
+
// `.toString()`'d function, this is the shape of bug that comes back.
|
|
38
|
+
expect(handlerSource).not.toContain('STRIPE_ZERO_DECIMAL_CURRENCIES')
|
|
39
|
+
expect(handlerSource).not.toContain('STRIPE_THREE_DECIMAL_CURRENCIES')
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('declares the currency arrays INSIDE toStripeMinorUnits, not reconstructed separately', () => {
|
|
43
|
+
const fnStart = handlerSource.indexOf('function toStripeMinorUnits')
|
|
44
|
+
expect(fnStart).toBeGreaterThan(-1)
|
|
45
|
+
// The next function declaration marks the end of toStripeMinorUnits's
|
|
46
|
+
// body (functions are concatenated back-to-back by generateHandler()).
|
|
47
|
+
const nextFnStart = handlerSource.indexOf('function chargeWithStripe', fnStart)
|
|
48
|
+
expect(nextFnStart).toBeGreaterThan(fnStart)
|
|
49
|
+
const body = handlerSource.slice(fnStart, nextFnStart)
|
|
50
|
+
expect(body).toContain('JPY')
|
|
51
|
+
expect(body).toContain('BHD')
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('produces syntactically valid, runnable JavaScript end-to-end', () => {
|
|
55
|
+
// Evaluating the FULL concatenated handler source (not just one
|
|
56
|
+
// function in isolation) is what actually catches an orphaned
|
|
57
|
+
// free-variable reference — exactly like requiring the generated
|
|
58
|
+
// workflow segment .js file would in production.
|
|
59
|
+
expect(() => new Function(handlerSource + '\nreturn payment_charge_user;')()).not.toThrow()
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
describe('toStripeMinorUnits — extracted from the serialized handler source', () => {
|
|
63
|
+
const toStripeMinorUnits = (() => {
|
|
64
|
+
const fnStart = handlerSource.indexOf('function toStripeMinorUnits')
|
|
65
|
+
const nextFnStart = handlerSource.indexOf('function chargeWithStripe', fnStart)
|
|
66
|
+
const body = handlerSource.slice(fnStart, nextFnStart)
|
|
67
|
+
return new Function(body + '\nreturn toStripeMinorUnits;')() as (
|
|
68
|
+
major: unknown,
|
|
69
|
+
currency: string
|
|
70
|
+
) => number
|
|
71
|
+
})()
|
|
72
|
+
|
|
73
|
+
it('converts a standard (2-decimal) currency to minor units', () => {
|
|
74
|
+
expect(toStripeMinorUnits(19.99, 'usd')).toBe(1999)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
it('passes zero-decimal currencies through rounded, unmultiplied', () => {
|
|
78
|
+
// This is the exact code path that threw "Oo is not defined" in
|
|
79
|
+
// production — a JPY (zero-decimal) charge.
|
|
80
|
+
expect(toStripeMinorUnits(500, 'JPY')).toBe(500)
|
|
81
|
+
expect(toStripeMinorUnits(500.6, 'jpy')).toBe(501)
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('multiplies three-decimal currencies by 1000', () => {
|
|
85
|
+
expect(toStripeMinorUnits(1.5, 'BHD')).toBe(1500)
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('returns 0 for non-finite or non-positive amounts', () => {
|
|
89
|
+
expect(toStripeMinorUnits(0, 'usd')).toBe(0)
|
|
90
|
+
expect(toStripeMinorUnits(-5, 'usd')).toBe(0)
|
|
91
|
+
expect(toStripeMinorUnits(NaN, 'usd')).toBe(0)
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
})
|
|
@@ -82,6 +82,25 @@ describe('classifyStockWriteSite — single-node categorisation', () => {
|
|
|
82
82
|
expect(result.category).toBe('order-decrement')
|
|
83
83
|
})
|
|
84
84
|
|
|
85
|
+
it('categorises the current NULL-preserving rewritten decrement as order-decrement', () => {
|
|
86
|
+
// This is the exact shape buildStockDecrementBuilder emits today —
|
|
87
|
+
// the SET clause guards NULL (unlimited-stock) rows with a CASE
|
|
88
|
+
// instead of the old COALESCE-based bootstrap. The auditor must not
|
|
89
|
+
// regress this to "unknown" and start spamming console.warn on
|
|
90
|
+
// every generation of a correctly-behaving project.
|
|
91
|
+
const currentRewrite = `${STOCK_DECREMENT_MARKER}
|
|
92
|
+
function customHandler() {
|
|
93
|
+
var setClause = "quantity = CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST(0, quantity - (CASE id" + caseExpr + " ELSE 0 END)) END";
|
|
94
|
+
var query = "UPDATE teleport_products SET " + setClause + " WHERE id IN ('a')";
|
|
95
|
+
return { query: query, affected: ['a'] };
|
|
96
|
+
}`
|
|
97
|
+
const result = classifyStockWriteSite('Place Order 1', {
|
|
98
|
+
type: 'general-custom-js',
|
|
99
|
+
config: { code: currentRewrite },
|
|
100
|
+
})
|
|
101
|
+
expect(result.category).toBe('order-decrement')
|
|
102
|
+
})
|
|
103
|
+
|
|
85
104
|
it('categorises our REWRITTEN decrement EVEN WHEN the SQL is split across string concatenation', () => {
|
|
86
105
|
// This is the exact shape our buildStockDecrementBuilder emits:
|
|
87
106
|
// the SQL is built up via "UPDATE teleport_products SET " + setClause
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stock-decrement.d.ts","sourceRoot":"","sources":["../../../src/ecommerce/stock-decrement.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAKxD,eAAO,MAAM,sBAAsB,uCAAuC,CAAA;AAU1E,eAAO,MAAM,8BAA8B,SAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"stock-decrement.d.ts","sourceRoot":"","sources":["../../../src/ecommerce/stock-decrement.ts"],"names":[],"mappings":"AAwCA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAKxD,eAAO,MAAM,sBAAsB,uCAAuC,CAAA;AAU1E,eAAO,MAAM,8BAA8B,SAAU,MAAM,KAAG,OAgC7D,CAAA;AAsBD,eAAO,MAAM,4BAA4B,q5BAsBrC,CAAA;AA8BJ,eAAO,MAAM,0BAA0B,oBAAqB,OAAO,KAAG,MAwGrE,CAAA;AAsBD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,UAAU,GAAG,YAAY,CAAA;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,QAAQ,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAAA;IAGjD,UAAU,EAAE,MAAM,CAAA;CACnB;AA0ED,eAAO,MAAM,sBAAsB,iBACnB,MAAM,QACd;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KAClD;IAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAuC5D,CAAA;AAID,eAAO,MAAM,mBAAmB,SAAU,WAAW,KAAG,cAAc,EAwErE,CAAA;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,KAAK,EAAE,cAAc,EAAE,CAAA;IACvB,cAAc,EAAE,cAAc,EAAE,CAAA;IAChC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAID,eAAO,MAAM,oBAAoB,SAAU,WAAW,KAAG,eAQxD,CAAA;AAMD,eAAO,MAAM,qBAAqB,SAAU,WAAW,KAAG,eAmEzD,CAAA;AAuMD,UAAU,YAAY;IACpB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,iCAAiC,SAAU,WAAW,KAAG,YA6BrE,CAAA"}
|
|
@@ -57,6 +57,19 @@ const looksLikeStockDecrementBuilder = (code) => {
|
|
|
57
57
|
return false;
|
|
58
58
|
}
|
|
59
59
|
if (code.indexOf(exports.STOCK_DECREMENT_MARKER) >= 0) {
|
|
60
|
+
// Already our rewrite. A prior rewriter version (the
|
|
61
|
+
// `GREATEST(0, COALESCE(quantity, 0) - …)` shape below) permanently
|
|
62
|
+
// floored an unlimited-stock (NULL quantity) product to 0 the first
|
|
63
|
+
// time an order touched it — turning "infinite stock" into
|
|
64
|
+
// "out of stock" forever. Re-match that legacy shape so the next
|
|
65
|
+
// regeneration upgrades already-rewritten projects to the current,
|
|
66
|
+
// NULL-preserving SQL (`buildStockDecrementBuilder` below). A rewrite
|
|
67
|
+
// that already carries the NULL guard is up to date — leave it alone.
|
|
68
|
+
if (code.indexOf('teleport_products') >= 0 &&
|
|
69
|
+
/quantity\s*=\s*GREATEST\s*\(\s*\d+\s*,\s*COALESCE\s*\(\s*quantity/i.test(code) &&
|
|
70
|
+
code.indexOf('WHEN quantity IS NULL THEN NULL') < 0) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
60
73
|
return false;
|
|
61
74
|
}
|
|
62
75
|
if (code.indexOf('teleport_products') < 0) {
|
|
@@ -184,31 +197,27 @@ ${STOCK_DECREMENT_HELPERS}
|
|
|
184
197
|
// the row AFTER the SET clause runs (so bare \`quantity\` would
|
|
185
198
|
// be the new value, not the old).
|
|
186
199
|
//
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
//
|
|
190
|
-
//
|
|
191
|
-
//
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
//
|
|
195
|
-
//
|
|
196
|
-
//
|
|
197
|
-
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
//
|
|
203
|
-
var setClause = "quantity = GREATEST(0, COALESCE(quantity, 0) - CASE id" + caseExpr + " ELSE 0 END), updated_at = NOW()";
|
|
204
|
-
// \`old_quantity\` in RETURNING reconstructs the pre-update value.
|
|
205
|
-
// After the GREATEST clamp the SET value is no longer
|
|
206
|
-
// "old - delta" — it might be 0 because of the floor. So we can't
|
|
200
|
+
// \`teleport_products.quantity\` is NULL for every product the
|
|
201
|
+
// merchant hasn't given a finite count — that NULL means
|
|
202
|
+
// "unlimited stock", not "zero stock waiting to be bootstrapped".
|
|
203
|
+
// The SET clause's \`CASE WHEN quantity IS NULL THEN NULL …\` guard
|
|
204
|
+
// leaves those rows untouched forever: an unlimited product must
|
|
205
|
+
// stay unlimited across every order, not silently become
|
|
206
|
+
// out-of-stock (0) the first time someone buys it. Only a row
|
|
207
|
+
// that already carries a real, finite count is decremented, and
|
|
208
|
+
// \`GREATEST(0, …)\` floors THAT arithmetic at zero so we never
|
|
209
|
+
// persist a negative quantity for a tracked product.
|
|
210
|
+
var setClause = "quantity = CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST(0, quantity - (CASE id" + caseExpr + " ELSE 0 END)) END, updated_at = NOW()";
|
|
211
|
+
// \`old_quantity\` in RETURNING reconstructs the pre-update value. A
|
|
212
|
+
// row whose (post-update) \`new_quantity\` is NULL was NULL before too
|
|
213
|
+
// (the SET clause never changes a NULL row), so \`old_quantity\` is
|
|
214
|
+
// NULL as well. For a tracked row, the GREATEST clamp means the SET
|
|
215
|
+
// value is no longer "old - delta" once it floors at 0, so we can't
|
|
207
216
|
// just invert the SET expression; instead we expose 0 as a
|
|
208
217
|
// conservative lower bound for what was there before. Downstream
|
|
209
218
|
// (low-stock SELECT) only uses \`new_quantity\` for the threshold
|
|
210
219
|
// comparison, so this approximation is fine.
|
|
211
|
-
var returningClause = "RETURNING id, quantity AS new_quantity, GREATEST(0,
|
|
220
|
+
var returningClause = "RETURNING id, quantity AS new_quantity, (CASE WHEN quantity IS NULL THEN NULL ELSE GREATEST(0, quantity + (CASE id" + caseExpr + " ELSE 0 END)) END) AS old_quantity";
|
|
212
221
|
|
|
213
222
|
// When backorders are DISALLOWED we add a per-row guard:
|
|
214
223
|
// AND (quantity IS NULL OR quantity >= CASE id ... END)
|
|
@@ -219,17 +228,12 @@ ${STOCK_DECREMENT_HELPERS}
|
|
|
219
228
|
// would otherwise allow two simultaneous orders to drive stock
|
|
220
229
|
// below zero.
|
|
221
230
|
//
|
|
222
|
-
// The "quantity IS NULL OR" clause
|
|
223
|
-
//
|
|
224
|
-
//
|
|
225
|
-
//
|
|
226
|
-
//
|
|
227
|
-
//
|
|
228
|
-
// decrement the row holds an integer (now floored at 0 by the
|
|
229
|
-
// GREATEST clamp in the SET clause) and from then on the normal
|
|
230
|
-
// \`quantity >= delta\` guard is enforced — so the merchant sees
|
|
231
|
-
// the zero value in the admin panel and gets a clear "set initial
|
|
232
|
-
// stock for this product" signal.
|
|
231
|
+
// The "quantity IS NULL OR" clause lets unlimited-stock products
|
|
232
|
+
// through the guard so the row is still touched (its RETURNING row
|
|
233
|
+
// still surfaces to the caller, e.g. for the low-stock SELECT) — the
|
|
234
|
+
// SET clause above then leaves the value itself untouched, so an
|
|
235
|
+
// unlimited product stays unlimited no matter how many orders are
|
|
236
|
+
// placed against it, with or without backorders enabled.
|
|
233
237
|
var whereClause;
|
|
234
238
|
if (ALLOW_BACKORDERS) {
|
|
235
239
|
whereClause = "WHERE id IN (" + quotedIds + ")";
|
|
@@ -289,10 +293,12 @@ const looksLikeOrderDecrementCustomHandler = (code) => {
|
|
|
289
293
|
// Belt-and-braces: even when the marker is present, the code must
|
|
290
294
|
// actually be a stock-decrement (not, say, an unrelated rewritten
|
|
291
295
|
// node that happens to live next to teleport_products references).
|
|
292
|
-
// Accept
|
|
293
|
-
//
|
|
294
|
-
//
|
|
295
|
-
//
|
|
296
|
+
// Accept every shape `buildStockDecrementBuilder` has emitted over
|
|
297
|
+
// time: the legacy concat shape (`quantity = quantity - CASE id …`),
|
|
298
|
+
// the COALESCE safety-wrapped shape (`quantity = GREATEST(0,
|
|
299
|
+
// COALESCE(quantity, 0) - CASE id …)`), and the current
|
|
300
|
+
// NULL-preserving shape (`quantity = CASE WHEN quantity IS NULL
|
|
301
|
+
// THEN NULL ELSE GREATEST(0, quantity - CASE id …) END`).
|
|
296
302
|
if (code.indexOf('teleport_products') >= 0) {
|
|
297
303
|
if (/quantity\s*=\s*quantity\s*-/.test(code)) {
|
|
298
304
|
return true;
|
|
@@ -300,6 +306,9 @@ const looksLikeOrderDecrementCustomHandler = (code) => {
|
|
|
300
306
|
if (/quantity\s*=\s*GREATEST\s*\(\s*\d+\s*,\s*COALESCE\s*\(\s*quantity/i.test(code)) {
|
|
301
307
|
return true;
|
|
302
308
|
}
|
|
309
|
+
if (/quantity\s*=\s*CASE\s+WHEN\s+quantity\s+IS\s+NULL\s+THEN\s+NULL\s+ELSE\s+GREATEST/i.test(code)) {
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
303
312
|
}
|
|
304
313
|
return false;
|
|
305
314
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stock-decrement.js","sourceRoot":"","sources":["../../../src/ecommerce/stock-decrement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stock-decrement.js","sourceRoot":"","sources":["../../../src/ecommerce/stock-decrement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-charge-user.d.ts","sourceRoot":"","sources":["../../../../src/nodes/payment/payment-charge-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"payment-charge-user.d.ts","sourceRoot":"","sources":["../../../../src/nodes/payment/payment-charge-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA0dhE,eAAO,MAAM,iBAAiB,EAAE,oBAwB/B,CAAA"}
|
|
@@ -2,30 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.paymentChargeUser = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
|
-
// Stripe treats these currencies as zero-decimal (no fractional units). The
|
|
6
|
-
// amount passed to the Stripe API must be the whole-currency integer, not
|
|
7
|
-
// multiplied by 100. See https://stripe.com/docs/currencies#zero-decimal
|
|
8
|
-
const STRIPE_ZERO_DECIMAL_CURRENCIES = [
|
|
9
|
-
'BIF',
|
|
10
|
-
'CLP',
|
|
11
|
-
'DJF',
|
|
12
|
-
'GNF',
|
|
13
|
-
'JPY',
|
|
14
|
-
'KMF',
|
|
15
|
-
'KRW',
|
|
16
|
-
'MGA',
|
|
17
|
-
'PYG',
|
|
18
|
-
'RWF',
|
|
19
|
-
'UGX',
|
|
20
|
-
'VND',
|
|
21
|
-
'VUV',
|
|
22
|
-
'XAF',
|
|
23
|
-
'XOF',
|
|
24
|
-
'XPF',
|
|
25
|
-
];
|
|
26
|
-
// Currencies where the smallest unit is 1/1000 of the major unit. Stripe
|
|
27
|
-
// expects amounts in the smallest unit (e.g. 1.500 JOD -> 1500).
|
|
28
|
-
const STRIPE_THREE_DECIMAL_CURRENCIES = ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'];
|
|
29
5
|
// Contract for the `amount` config field:
|
|
30
6
|
// A floating-point number in the MAJOR currency unit (e.g. 99.99 USD,
|
|
31
7
|
// 9999 JPY). Individual line items use the same `unitAmount` semantics.
|
|
@@ -134,16 +110,54 @@ async function payment_charge_user(config, _context) {
|
|
|
134
110
|
// smallest-unit integer. Zero-decimal currencies pass through rounded;
|
|
135
111
|
// three-decimal currencies multiply by 1000; everything else multiplies by
|
|
136
112
|
// 100. Always returns a safe non-negative integer.
|
|
113
|
+
//
|
|
114
|
+
// The currency lists are declared LOCAL to this function rather than as
|
|
115
|
+
// shared top-level consts. `generateHandler()` below assembles the final
|
|
116
|
+
// handler by calling `.toString()` on several functions independently and
|
|
117
|
+
// concatenating the source; a top-level const is fine in an unminified
|
|
118
|
+
// build, but when this package itself is bundled + minified by a consumer
|
|
119
|
+
// (e.g. teleport-gui's browser packer, built with webpack/Terser), the
|
|
120
|
+
// minifier is free to rename the top-level const's declaration — nothing
|
|
121
|
+
// in the bundle calls it by name, only this runtime `.toString()` read
|
|
122
|
+
// does, which is invisible to the minifier. `toStripeMinorUnits.toString()`
|
|
123
|
+
// would then embed a reference to a name (e.g. a mangled `Oo`) that is
|
|
124
|
+
// never declared anywhere in the generated workflow segment file, throwing
|
|
125
|
+
// "<mangled name> is not defined" the first time a Stripe charge runs.
|
|
126
|
+
// Declaring the lists inside the function keeps the declaration and every
|
|
127
|
+
// reference to it in the SAME `.toString()` snapshot, so a consistent
|
|
128
|
+
// rename by the minifier can never separate them. See `resolveProviderSecret`
|
|
129
|
+
// above for the same class of bug with the `process` global.
|
|
137
130
|
function toStripeMinorUnits(major, currency) {
|
|
131
|
+
const zeroDecimalCurrencies = [
|
|
132
|
+
'BIF',
|
|
133
|
+
'CLP',
|
|
134
|
+
'DJF',
|
|
135
|
+
'GNF',
|
|
136
|
+
'JPY',
|
|
137
|
+
'KMF',
|
|
138
|
+
'KRW',
|
|
139
|
+
'MGA',
|
|
140
|
+
'PYG',
|
|
141
|
+
'RWF',
|
|
142
|
+
'UGX',
|
|
143
|
+
'VND',
|
|
144
|
+
'VUV',
|
|
145
|
+
'XAF',
|
|
146
|
+
'XOF',
|
|
147
|
+
'XPF',
|
|
148
|
+
];
|
|
149
|
+
// Currencies where the smallest unit is 1/1000 of the major unit. Stripe
|
|
150
|
+
// expects amounts in the smallest unit (e.g. 1.500 JOD -> 1500).
|
|
151
|
+
const threeDecimalCurrencies = ['BHD', 'IQD', 'JOD', 'KWD', 'LYD', 'OMR', 'TND'];
|
|
138
152
|
const amt = Number(major);
|
|
139
153
|
if (!isFinite(amt) || amt <= 0) {
|
|
140
154
|
return 0;
|
|
141
155
|
}
|
|
142
156
|
const upper = String(currency || '').toUpperCase();
|
|
143
|
-
if (
|
|
157
|
+
if (zeroDecimalCurrencies.indexOf(upper) >= 0) {
|
|
144
158
|
return Math.round(amt);
|
|
145
159
|
}
|
|
146
|
-
if (
|
|
160
|
+
if (threeDecimalCurrencies.indexOf(upper) >= 0) {
|
|
147
161
|
return Math.round(amt * 1000);
|
|
148
162
|
}
|
|
149
163
|
return Math.round(amt * 100);
|
|
@@ -390,12 +404,6 @@ exports.paymentChargeUser = {
|
|
|
390
404
|
},
|
|
391
405
|
generateHandler() {
|
|
392
406
|
return ((0, types_1.handlerToString)(payment_charge_user) +
|
|
393
|
-
'\nvar STRIPE_ZERO_DECIMAL_CURRENCIES = ' +
|
|
394
|
-
JSON.stringify(STRIPE_ZERO_DECIMAL_CURRENCIES) +
|
|
395
|
-
';' +
|
|
396
|
-
'\nvar STRIPE_THREE_DECIMAL_CURRENCIES = ' +
|
|
397
|
-
JSON.stringify(STRIPE_THREE_DECIMAL_CURRENCIES) +
|
|
398
|
-
';' +
|
|
399
407
|
'\n' +
|
|
400
408
|
resolveProviderSecret.toString() +
|
|
401
409
|
'\n' +
|