@adobedjangir/commerce-admin-management 0.0.17 → 0.0.18

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/README.md CHANGED
@@ -51,15 +51,24 @@ and an extension point for host apps to add their own pages and actions.
51
51
  aio app init my-commerce-admin
52
52
  cd my-commerce-admin
53
53
 
54
- # 2. Install. The postinstall bumps the host's package.json to the
55
- # React 18 / Spectrum 4 floor and re-runs `npm install` automatically.
56
- npm install @adobedjangir/commerce-admin-management
54
+ # 2. Install with --legacy-peer-deps on first install.
55
+ # aio's default template pins React 16; this package requires React 18.
56
+ npm install --legacy-peer-deps @adobedjangir/commerce-admin-management
57
57
 
58
- # 3. Fill in .env (see required values below)
59
- cp env.dist .env
58
+ # 3. Run the setup helper. Bumps host deps to React 18 / Spectrum 4 floor,
59
+ # scaffolds web-src/, removes the dx/excshell/1 boilerplate, and
60
+ # generates AIO_DB_REGION + SYSTEM_CONFIG_CRYPT_KEY in .env.
61
+ npx @adobedjangir/commerce-admin-management-setup
62
+
63
+ # 4. Apply the bumped versions
64
+ rm -rf node_modules package-lock.json
65
+ npm install
66
+
67
+ # 5. Fill in any missing .env values (OAUTH_*) — region + crypt key are
68
+ # auto-generated by step 3.
60
69
  $EDITOR .env
61
70
 
62
- # 4. Deploy. ABDB is auto-provisioned; actions + web assets ship to CDN.
71
+ # 6. Deploy. ABDB is auto-provisioned; actions + web assets ship to CDN.
63
72
  aio app deploy
64
73
  ```
65
74
 
@@ -36,9 +36,13 @@ runtimeManifest:
36
36
  LOG_LEVEL: debug
37
37
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
38
38
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
39
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
39
40
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
41
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
40
42
  OAUTH_ORG_ID: $OAUTH_ORG_ID
43
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
41
44
  OAUTH_SCOPES: $OAUTH_SCOPES
45
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
42
46
  AIO_DB_REGION: $AIO_DB_REGION
43
47
  annotations:
44
48
  require-adobe-auth: false
@@ -52,9 +56,13 @@ runtimeManifest:
52
56
  LOG_LEVEL: debug
53
57
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
54
58
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
59
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
55
60
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
61
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
56
62
  OAUTH_ORG_ID: $OAUTH_ORG_ID
63
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
57
64
  OAUTH_SCOPES: $OAUTH_SCOPES
65
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
58
66
  AIO_DB_REGION: $AIO_DB_REGION
59
67
  annotations:
60
68
  require-adobe-auth: false
@@ -68,9 +76,13 @@ runtimeManifest:
68
76
  LOG_LEVEL: debug
69
77
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
70
78
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
79
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
71
80
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
81
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
72
82
  OAUTH_ORG_ID: $OAUTH_ORG_ID
83
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
73
84
  OAUTH_SCOPES: $OAUTH_SCOPES
85
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
74
86
  AIO_DB_REGION: $AIO_DB_REGION
75
87
  annotations:
76
88
  require-adobe-auth: false
@@ -83,9 +95,13 @@ runtimeManifest:
83
95
  inputs:
84
96
  LOG_LEVEL: debug
85
97
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
98
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
86
99
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
100
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
87
101
  OAUTH_ORG_ID: $OAUTH_ORG_ID
102
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
88
103
  OAUTH_SCOPES: $OAUTH_SCOPES
104
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
89
105
  AIO_DB_REGION: $AIO_DB_REGION
90
106
  annotations:
91
107
  require-adobe-auth: false
@@ -99,9 +115,13 @@ runtimeManifest:
99
115
  LOG_LEVEL: debug
100
116
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
101
117
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
118
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
102
119
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
120
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
103
121
  OAUTH_ORG_ID: $OAUTH_ORG_ID
122
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
104
123
  OAUTH_SCOPES: $OAUTH_SCOPES
124
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
105
125
  AIO_DB_REGION: $AIO_DB_REGION
106
126
  annotations:
107
127
  require-adobe-auth: false
@@ -118,9 +138,13 @@ runtimeManifest:
118
138
  LOG_LEVEL: debug
119
139
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
120
140
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
141
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
121
142
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
143
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
122
144
  OAUTH_ORG_ID: $OAUTH_ORG_ID
145
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
123
146
  OAUTH_SCOPES: $OAUTH_SCOPES
147
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
124
148
  AIO_DB_REGION: $AIO_DB_REGION
125
149
  annotations:
126
150
  require-adobe-auth: false
@@ -134,9 +158,13 @@ runtimeManifest:
134
158
  LOG_LEVEL: debug
135
159
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
136
160
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
161
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
137
162
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
163
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
138
164
  OAUTH_ORG_ID: $OAUTH_ORG_ID
165
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
139
166
  OAUTH_SCOPES: $OAUTH_SCOPES
167
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
140
168
  AIO_DB_REGION: $AIO_DB_REGION
141
169
  annotations:
142
170
  require-adobe-auth: false
@@ -150,9 +178,13 @@ runtimeManifest:
150
178
  LOG_LEVEL: debug
151
179
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
152
180
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
181
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
153
182
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
183
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
154
184
  OAUTH_ORG_ID: $OAUTH_ORG_ID
185
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
155
186
  OAUTH_SCOPES: $OAUTH_SCOPES
187
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
156
188
  AIO_DB_REGION: $AIO_DB_REGION
157
189
  annotations:
158
190
  require-adobe-auth: false
@@ -166,9 +198,13 @@ runtimeManifest:
166
198
  LOG_LEVEL: debug
167
199
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
168
200
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
201
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
169
202
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
203
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
170
204
  OAUTH_ORG_ID: $OAUTH_ORG_ID
205
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
171
206
  OAUTH_SCOPES: $OAUTH_SCOPES
207
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
172
208
  AIO_DB_REGION: $AIO_DB_REGION
173
209
  annotations:
174
210
  require-adobe-auth: false
@@ -182,9 +218,13 @@ runtimeManifest:
182
218
  LOG_LEVEL: debug
183
219
  SYSTEM_CONFIG_CRYPT_KEY: $SYSTEM_CONFIG_CRYPT_KEY
184
220
  OAUTH_CLIENT_ID: $OAUTH_CLIENT_ID
221
+ IMS_OAUTH_S2S_CLIENT_ID: $IMS_OAUTH_S2S_CLIENT_ID
185
222
  OAUTH_CLIENT_SECRET: $OAUTH_CLIENT_SECRET
223
+ IMS_OAUTH_S2S_CLIENT_SECRET: $IMS_OAUTH_S2S_CLIENT_SECRET
186
224
  OAUTH_ORG_ID: $OAUTH_ORG_ID
225
+ IMS_OAUTH_S2S_ORG_ID: $IMS_OAUTH_S2S_ORG_ID
187
226
  OAUTH_SCOPES: $OAUTH_SCOPES
227
+ IMS_OAUTH_S2S_SCOPES: $IMS_OAUTH_S2S_SCOPES
188
228
  AIO_DB_REGION: $AIO_DB_REGION
189
229
  annotations:
190
230
  require-adobe-auth: false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobedjangir/commerce-admin-management",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "Schema-driven system configuration for Adobe Commerce App Builder sync apps. Magento-style scoped config in Adobe App Builder Database (ABDB) with encryption, Commerce REST helpers, and React Admin UI.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Adobe Inc.",
package/scripts/setup.js CHANGED
@@ -655,6 +655,62 @@ function ensureHostDeps (projectRoot) {
655
655
  *
656
656
  * Returns { changed, set: [{key, source}], file }.
657
657
  */
658
+ /**
659
+ * Mirror IMS_OAUTH_S2S_* → OAUTH_* in the host's .env. Newer Adobe Developer
660
+ * Console templates use the IMS_OAUTH_S2S_ prefix; our actions still read
661
+ * the legacy OAUTH_ names. We append aliases so both work — only when
662
+ * IMS_OAUTH_S2S_* is set and OAUTH_* isn't. Idempotent: re-running won't
663
+ * duplicate the block (we identify our own mirror block by its comment).
664
+ */
665
+ function mirrorImsOauthAliases (projectRoot) {
666
+ const envPath = path.join(projectRoot, '.env')
667
+ if (!fs.existsSync(envPath)) return { changed: false, reason: 'no-env' }
668
+ let env = ''
669
+ try { env = fs.readFileSync(envPath, 'utf8') } catch (_) { return { changed: false, reason: 'unreadable' } }
670
+
671
+ const grab = (k) => {
672
+ const m = env.match(new RegExp('^' + k + '=(.*)$', 'm'))
673
+ return m ? m[1] : ''
674
+ }
675
+ const id = grab('IMS_OAUTH_S2S_CLIENT_ID')
676
+ const sec = grab('IMS_OAUTH_S2S_CLIENT_SECRET')
677
+ const org = grab('IMS_OAUTH_S2S_ORG_ID')
678
+ let scopes = grab('IMS_OAUTH_S2S_SCOPES')
679
+
680
+ if (!id || !sec || !org) return { changed: false, reason: 'ims-vars-missing' }
681
+
682
+ // SCOPES is often a JSON array; the action expects a comma-separated string.
683
+ if (scopes.trim().startsWith('[')) {
684
+ try { scopes = JSON.parse(scopes).join(', ') } catch (_) { /* leave as-is */ }
685
+ }
686
+
687
+ // If OAUTH_* already non-empty, leave the user's values alone.
688
+ const existing = {
689
+ OAUTH_CLIENT_ID: grab('OAUTH_CLIENT_ID'),
690
+ OAUTH_CLIENT_SECRET: grab('OAUTH_CLIENT_SECRET'),
691
+ OAUTH_ORG_ID: grab('OAUTH_ORG_ID'),
692
+ OAUTH_SCOPES: grab('OAUTH_SCOPES')
693
+ }
694
+ const anyMissing = Object.values(existing).some((v) => !v)
695
+ if (!anyMissing) return { changed: false, reason: 'already-aliased' }
696
+
697
+ // Strip any previously-mirrored block so re-runs don't accumulate.
698
+ env = env.replace(/\n# Aliases mirrored from IMS_OAUTH_S2S_\*[\s\S]*?(?=\n[A-Z_]+=|\n*$)/g, '')
699
+
700
+ const block = [
701
+ '',
702
+ '# Aliases mirrored from IMS_OAUTH_S2S_* — required by the commerce-admin-management actions.',
703
+ `OAUTH_CLIENT_ID=${id}`,
704
+ `OAUTH_CLIENT_SECRET=${sec}`,
705
+ `OAUTH_ORG_ID=${org}`,
706
+ `OAUTH_SCOPES=${scopes}`,
707
+ ''
708
+ ].join('\n')
709
+
710
+ fs.writeFileSync(envPath, env + block, 'utf8')
711
+ return { changed: true }
712
+ }
713
+
658
714
  function ensureEnvDefaults (projectRoot) {
659
715
  const envPath = path.join(projectRoot, '.env')
660
716
  let lines = []
@@ -782,6 +838,12 @@ function main () {
782
838
  console.log(`[@adobedjangir/commerce-admin-management] .env ${s.source}: ${s.key}`)
783
839
  }
784
840
  }
841
+ // Newer Adobe Developer Console templates use IMS_OAUTH_S2S_* prefix in
842
+ // .env. Our actions still read OAUTH_*. Mirror automatically so both work.
843
+ const mirror = mirrorImsOauthAliases(projectRoot)
844
+ if (mirror.changed) {
845
+ console.log('[@adobedjangir/commerce-admin-management] .env mirrored IMS_OAUTH_S2S_* → OAUTH_*')
846
+ }
785
847
 
786
848
  // Bump host package.json so React-18 + Spectrum-4 peers are satisfied
787
849
  // without the consumer running a long `npm install --save react@^18 ...`