atmx-cli 0.102.0 → 0.105.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.
@@ -142,11 +142,24 @@ function generateSDKContent(contracts, isReact) {
142
142
  }
143
143
  }
144
144
  else {
145
- // Vanilla Web generator logic
146
- content += ` ${fnName}(args?: Record<string, any>): string {\n`;
147
- content += ` const argsStr = args && Object.keys(args).length > 0 ? JSON.stringify(args) : '';\n`;
148
- content += ` return \`${namespace}.${endpoint.name}(\${argsStr})\`;\n`;
149
- content += ` },\n`;
145
+ // ✨ UPGRADED: Vanilla Web static compiler methods mapped to dynamic objects
146
+ content += ` ${fnName}: Object.assign(\n`;
147
+ content += ` (args?: Record<string, any>): string => {\n`;
148
+ content += ` const argsStr = args && Object.keys(args).length > 0 ? JSON.stringify(args) : '';\n`;
149
+ content += ` return \`${namespace}.${endpoint.name}(\${argsStr})\`;\n`;
150
+ content += ` },\n`;
151
+ content += ` {\n`;
152
+ content += ` invalidate(args?: Record<string, any>) {\n`;
153
+ content += ` (window as any).atmx?.invalidate("${namespace}.${endpoint.name}", args);\n`;
154
+ content += ` },\n`;
155
+ content += ` setData(data: any, args?: Record<string, any>) {\n`;
156
+ content += ` (window as any).atmx?.setQueryData("${namespace}.${endpoint.name}", args || {}, data);\n`;
157
+ content += ` },\n`;
158
+ content += ` mutate(payload: any = {}, args?: Record<string, any>): Promise<any> {\n`;
159
+ content += ` return (window as any).atmx?.mutate("${namespace}.${endpoint.name}", args, payload);\n`;
160
+ content += ` }\n`;
161
+ content += ` }\n`;
162
+ content += ` ),\n`;
150
163
  }
151
164
  }
152
165
  content += `};\n\n`;
@@ -163,10 +176,25 @@ function generateSDKContent(contracts, isReact) {
163
176
  content += ` if (prop in target) {\n`;
164
177
  content += ` return Reflect.get(target, prop, receiver);\n`;
165
178
  content += ` }\n`;
166
- content += ` // If Alpine tries to access a namespace that doesn't exist yet, return a nested Proxy!\n`;
179
+ content += ` // Create a dynamic namespace proxy\n`;
167
180
  content += ` return new Proxy({}, {\n`;
168
181
  content += ` get(subTarget: any, subProp: string) {\n`;
169
- content += ` return () => \`\${String(prop)}.\${String(subProp)}()\`;\n`;
182
+ content += ` // Return a callable function that returns the string definition\n`;
183
+ content += ` const routeFn = (args?: Record<string, any>) => {\n`;
184
+ content += ` const argsStr = args && Object.keys(args).length > 0 ? JSON.stringify(args) : '';\n`;
185
+ content += ` return \`\${String(prop)}.\${String(subProp)}(\${argsStr})\`;\n`;
186
+ content += ` };\n`;
187
+ content += ` // Attach typed helper methods directly to the function!\n`;
188
+ content += ` routeFn.invalidate = (args?: Record<string, any>) => {\n`;
189
+ content += ` (window as any).atmx?.invalidate(\`\${String(prop)}.\${String(subProp)}\`, args);\n`;
190
+ content += ` };\n`;
191
+ content += ` routeFn.setData = (data: any, args?: Record<string, any>) => {\n`;
192
+ content += ` (window as any).atmx?.setQueryData(\`\${String(prop)}.\${String(subProp)}\`, args || {}, data);\n`;
193
+ content += ` };\n`;
194
+ content += ` routeFn.mutate = (payload: any = {}, args?: Record<string, any>): Promise<any> => {\n`;
195
+ content += ` return (window as any).atmx?.mutate(\`\${String(prop)}.\${String(subProp)}\`, args, payload);\n`;
196
+ content += ` };\n`;
197
+ content += ` return routeFn;\n`;
170
198
  content += ` }\n`;
171
199
  content += ` });\n`;
172
200
  content += ` }\n`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atmx-cli",
3
- "version": "0.102.0",
3
+ "version": "0.105.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -149,11 +149,24 @@ export function generateSDKContent(
149
149
  content += ` },\n`;
150
150
  }
151
151
  } else {
152
- // Vanilla Web generator logic
153
- content += ` ${fnName}(args?: Record<string, any>): string {\n`;
154
- content += ` const argsStr = args && Object.keys(args).length > 0 ? JSON.stringify(args) : '';\n`;
155
- content += ` return \`${namespace}.${endpoint.name}(\${argsStr})\`;\n`;
156
- content += ` },\n`;
152
+ // ✨ UPGRADED: Vanilla Web static compiler methods mapped to dynamic objects
153
+ content += ` ${fnName}: Object.assign(\n`;
154
+ content += ` (args?: Record<string, any>): string => {\n`;
155
+ content += ` const argsStr = args && Object.keys(args).length > 0 ? JSON.stringify(args) : '';\n`;
156
+ content += ` return \`${namespace}.${endpoint.name}(\${argsStr})\`;\n`;
157
+ content += ` },\n`;
158
+ content += ` {\n`;
159
+ content += ` invalidate(args?: Record<string, any>) {\n`;
160
+ content += ` (window as any).atmx?.invalidate("${namespace}.${endpoint.name}", args);\n`;
161
+ content += ` },\n`;
162
+ content += ` setData(data: any, args?: Record<string, any>) {\n`;
163
+ content += ` (window as any).atmx?.setQueryData("${namespace}.${endpoint.name}", args || {}, data);\n`;
164
+ content += ` },\n`;
165
+ content += ` mutate(payload: any = {}, args?: Record<string, any>): Promise<any> {\n`;
166
+ content += ` return (window as any).atmx?.mutate("${namespace}.${endpoint.name}", args, payload);\n`;
167
+ content += ` }\n`;
168
+ content += ` }\n`;
169
+ content += ` ),\n`;
157
170
  }
158
171
  }
159
172
  content += `};\n\n`;
@@ -172,10 +185,25 @@ export function generateSDKContent(
172
185
  content += ` if (prop in target) {\n`;
173
186
  content += ` return Reflect.get(target, prop, receiver);\n`;
174
187
  content += ` }\n`;
175
- content += ` // If Alpine tries to access a namespace that doesn't exist yet, return a nested Proxy!\n`;
188
+ content += ` // Create a dynamic namespace proxy\n`;
176
189
  content += ` return new Proxy({}, {\n`;
177
190
  content += ` get(subTarget: any, subProp: string) {\n`;
178
- content += ` return () => \`\${String(prop)}.\${String(subProp)}()\`;\n`;
191
+ content += ` // Return a callable function that returns the string definition\n`;
192
+ content += ` const routeFn = (args?: Record<string, any>) => {\n`;
193
+ content += ` const argsStr = args && Object.keys(args).length > 0 ? JSON.stringify(args) : '';\n`;
194
+ content += ` return \`\${String(prop)}.\${String(subProp)}(\${argsStr})\`;\n`;
195
+ content += ` };\n`;
196
+ content += ` // Attach typed helper methods directly to the function!\n`;
197
+ content += ` routeFn.invalidate = (args?: Record<string, any>) => {\n`;
198
+ content += ` (window as any).atmx?.invalidate(\`\${String(prop)}.\${String(subProp)}\`, args);\n`;
199
+ content += ` };\n`;
200
+ content += ` routeFn.setData = (data: any, args?: Record<string, any>) => {\n`;
201
+ content += ` (window as any).atmx?.setQueryData(\`\${String(prop)}.\${String(subProp)}\`, args || {}, data);\n`;
202
+ content += ` };\n`;
203
+ content += ` routeFn.mutate = (payload: any = {}, args?: Record<string, any>): Promise<any> => {\n`;
204
+ content += ` return (window as any).atmx?.mutate(\`\${String(prop)}.\${String(subProp)}\`, args, payload);\n`;
205
+ content += ` };\n`;
206
+ content += ` return routeFn;\n`;
179
207
  content += ` }\n`;
180
208
  content += ` });\n`;
181
209
  content += ` }\n`;