@adobedjangir/commerce-admin-management 0.0.9 → 0.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 (2) hide show
  1. package/package.json +1 -1
  2. package/scripts/setup.js +38 -11
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobedjangir/commerce-admin-management",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
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
@@ -69,29 +69,56 @@ function updateExistingExtensionBlock (content) {
69
69
  return next !== content ? next : null
70
70
  }
71
71
 
72
+ /**
73
+ * Remove the boilerplate `dx/excshell/1` extension block that aio's default
74
+ * `app init` ships with. The host can only run one extension point per
75
+ * project for our purposes, and `commerce/backend-ui/1` is what this
76
+ * package needs — leaving `dx/excshell/1` in place causes aio to try
77
+ * building BOTH, which fails on the excshell side because we don't ship
78
+ * any code for it.
79
+ *
80
+ * Matches a 2-space-indented `dx/excshell/1:` block followed by any
81
+ * deeper-indented nested lines, terminating when we see a non-indented
82
+ * line or a sibling extension. Safe to run repeatedly — no-op if absent.
83
+ */
84
+ function stripExcshellBlock (content) {
85
+ const re = /^[ \t]*dx\/excshell\/1:[ \t]*\n(?:[ \t]+[^\n]*\n)*/m
86
+ if (!re.test(content)) return { content, changed: false }
87
+ const next = content.replace(re, '')
88
+ return { content: next, changed: true }
89
+ }
90
+
72
91
  function patchAppConfig (content) {
73
- if (alreadyLinked(content)) {
74
- return { content, changed: false, reason: 'already-linked' }
92
+ // First strip the boilerplate dx/excshell/1 block — see stripExcshellBlock.
93
+ const excshell = stripExcshellBlock(content)
94
+ let working = excshell.content
95
+
96
+ if (alreadyLinked(working)) {
97
+ return {
98
+ content: working,
99
+ changed: excshell.changed,
100
+ reason: excshell.changed ? 'stripped-excshell' : 'already-linked'
101
+ }
75
102
  }
76
103
 
77
- if (hasExtensionPoint(content)) {
78
- const updated = updateExistingExtensionBlock(content)
104
+ if (hasExtensionPoint(working)) {
105
+ const updated = updateExistingExtensionBlock(working)
79
106
  if (updated) {
80
107
  return { content: updated, changed: true, reason: 'updated-existing-extension' }
81
108
  }
82
- return { content, changed: false, reason: 'extension-exists-unmodified' }
109
+ return { content: working, changed: excshell.changed, reason: 'extension-exists-unmodified' }
83
110
  }
84
111
 
85
- if (/^extensions:[ \t]*\n/m.test(content)) {
112
+ if (/^extensions:[ \t]*\n/m.test(working)) {
86
113
  const injection = ` ${EXTENSION_POINT}:\n $include: ${INCLUDE_REL}\n`
87
- const next = content.replace(/^extensions:[ \t]*\n/m, `extensions:\n${injection}`)
88
- if (next !== content) {
114
+ const next = working.replace(/^extensions:[ \t]*\n/m, `extensions:\n${injection}`)
115
+ if (next !== working) {
89
116
  return { content: next, changed: true, reason: 'added-under-extensions' }
90
117
  }
91
118
  }
92
119
 
93
- if (!/^extensions:/m.test(content)) {
94
- const trimmed = content.replace(/\s+$/, '')
120
+ if (!/^extensions:/m.test(working)) {
121
+ const trimmed = working.replace(/\s+$/, '')
95
122
  const separator = trimmed.length > 0 ? '\n\n' : ''
96
123
  return {
97
124
  content: `${trimmed}${separator}${buildExtensionBlock()}\n`,
@@ -100,7 +127,7 @@ function patchAppConfig (content) {
100
127
  }
101
128
  }
102
129
 
103
- return { content, changed: false, reason: 'no-change' }
130
+ return { content: working, changed: excshell.changed, reason: excshell.changed ? 'stripped-excshell' : 'no-change' }
104
131
  }
105
132
 
106
133
  // ────────────────────────────────────────────────────────────────────────────