@anby/platform-sdk 0.7.2 → 0.9.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.
- package/dist/cjs/apps/publish.d.ts.map +1 -1
- package/dist/cjs/apps/publish.js +36 -8
- package/dist/cjs/apps/publish.js.map +1 -1
- package/dist/cjs/entities/handler.d.ts.map +1 -1
- package/dist/cjs/entities/handler.js +70 -17
- package/dist/cjs/entities/handler.js.map +1 -1
- package/dist/cjs/vite/index.d.ts +5 -10
- package/dist/cjs/vite/index.d.ts.map +1 -1
- package/dist/cjs/vite/index.js +224 -40
- package/dist/cjs/vite/index.js.map +1 -1
- package/dist/esm/apps/publish.js +36 -8
- package/dist/esm/apps/publish.js.map +1 -1
- package/dist/esm/entities/handler.js +70 -17
- package/dist/esm/entities/handler.js.map +1 -1
- package/dist/esm/vite/index.js +226 -42
- package/dist/esm/vite/index.js.map +1 -1
- package/package.json +1 -1
- package/src/apps/publish.ts +40 -12
- package/src/entities/handler.ts +72 -18
- package/src/vite/index.ts +252 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/apps/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/apps/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAK3E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C;;;;;;;;OAQG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAcD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GACnC,OAAO,CAAC,WAAW,CAAC,CAMtB;AA6ED,wBAAsB,sBAAsB,CAC1C,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkHlC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,iBAAsB,GAAG,IAAI,CAMpE"}
|
package/dist/cjs/apps/publish.js
CHANGED
|
@@ -53,6 +53,7 @@ const node_path_1 = require("node:path");
|
|
|
53
53
|
const manifest_schema_1 = require("@anby/manifest-schema");
|
|
54
54
|
const index_js_1 = require("../auth/index.js");
|
|
55
55
|
const schema_js_1 = require("../entities/schema.js");
|
|
56
|
+
const identity_js_1 = require("../entities/identity.js");
|
|
56
57
|
async function loadManifest(path) {
|
|
57
58
|
const raw = await (0, promises_1.readFile)(path, 'utf-8');
|
|
58
59
|
const parsed = JSON.parse(raw);
|
|
@@ -168,12 +169,7 @@ async function publishAppFromManifest(opts = {}) {
|
|
|
168
169
|
registryUrl = 'http://localhost:3003';
|
|
169
170
|
}
|
|
170
171
|
}
|
|
171
|
-
const internalApiSecret = opts.internalApiSecret ?? process.env.INTERNAL_API_SECRET ?? '';
|
|
172
|
-
if (!internalApiSecret) {
|
|
173
|
-
throw new Error('INTERNAL_API_SECRET is not set — cannot sign publish request');
|
|
174
|
-
}
|
|
175
172
|
const submittedBy = opts.submittedBy ?? manifest.id;
|
|
176
|
-
const signature = (0, index_js_1.signHmac)(submittedBy, internalApiSecret);
|
|
177
173
|
const body = {
|
|
178
174
|
id: manifest.id,
|
|
179
175
|
name: manifest.name,
|
|
@@ -188,14 +184,46 @@ async function publishAppFromManifest(opts = {}) {
|
|
|
188
184
|
changelog: opts.changelog,
|
|
189
185
|
manifest,
|
|
190
186
|
};
|
|
187
|
+
const bodyJson = JSON.stringify(body);
|
|
188
|
+
// Prefer Ed25519 app identity signing (no INTERNAL_API_SECRET needed).
|
|
189
|
+
// Falls back to HMAC for first-time publish (before app has an identity).
|
|
190
|
+
let authHeaders;
|
|
191
|
+
let identity = null;
|
|
192
|
+
try {
|
|
193
|
+
identity = (0, identity_js_1.getAppIdentity)();
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Not configured — fall back to HMAC
|
|
197
|
+
}
|
|
198
|
+
if (identity && identity.appId === manifest.id) {
|
|
199
|
+
// Ed25519 path — re-publishing own app
|
|
200
|
+
const signed = (0, identity_js_1.signAppRequest)({
|
|
201
|
+
identity,
|
|
202
|
+
tenantId: '',
|
|
203
|
+
body: bodyJson,
|
|
204
|
+
});
|
|
205
|
+
authHeaders = { ...signed };
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
// HMAC path — first-time publish or cross-app publish
|
|
209
|
+
const internalApiSecret = opts.internalApiSecret ?? process.env.INTERNAL_API_SECRET ?? '';
|
|
210
|
+
if (!internalApiSecret) {
|
|
211
|
+
throw new Error('INTERNAL_API_SECRET is not set and no app identity configured — cannot sign publish request. ' +
|
|
212
|
+
'Run `anby login && anby init` to register the app first.');
|
|
213
|
+
}
|
|
214
|
+
const signature = (0, index_js_1.signHmac)(submittedBy, internalApiSecret);
|
|
215
|
+
authHeaders = {
|
|
216
|
+
'x-internal-user': submittedBy,
|
|
217
|
+
'x-internal-signature': signature,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
191
220
|
const res = await fetch(`${registryUrl}/registry/apps`, {
|
|
192
221
|
method: 'POST',
|
|
193
222
|
headers: {
|
|
194
223
|
'Content-Type': 'application/json',
|
|
195
|
-
|
|
196
|
-
'x-internal-signature': signature,
|
|
224
|
+
...authHeaders,
|
|
197
225
|
},
|
|
198
|
-
body:
|
|
226
|
+
body: bodyJson,
|
|
199
227
|
});
|
|
200
228
|
if (!res.ok) {
|
|
201
229
|
const errBody = await res.text();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/apps/publish.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/apps/publish.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4FH,gDAQC;AA6ED,wDAoHC;AAOD,8CAMC;AAhTD,+CAA4C;AAC5C,yCAA+D;AAC/D,2DAA2E;AAC3E,+CAA4C;AAC5C,qDAAuD;AACvD,yDAAyE;AAgEzE,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,MAAM,GAAG,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IAC9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAgB,EAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,eAAe,IAAI,qBAAqB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CACtC,OAAkC,EAAE;IAEpC,MAAM,YAAY,GAAG,IAAA,mBAAO,EAC1B,IAAI,CAAC,YAAY,IAAI,IAAA,gBAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wBAAwB,CAAC,CACnE,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,mBAAmB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,mBAAmB,CAChC,QAAqB,EACrB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAExD,MAAM,WAAW,GAAG,IAAA,mBAAO,EAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3B,yDAAyD;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;QACD,0DAA0D;QAC1D,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChC,kEAAkE;QAClE,yCAAyC;QACzC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO;gBACL,GAAG,KAAK;gBACR,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAA,0BAAc,EAAC,KAAK,CAAC,MAAM,CAAC;aACrE,CAAC;QACJ,CAAC;QACD,8DAA8D;QAC9D,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAA,sBAAU,EAAC,KAAK,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,MAAM;YACd,CAAC,CAAC,IAAA,mBAAO,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,IAAA,mBAAQ,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,CAAC,IAAI,oCAAoC,UAAU,GAAG;gBACpE,IAAK,GAAa,CAAC,OAAO,GAAG,CAChC,CAAC;QACJ,CAAC;QACD,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,CAAC,IAAI,qBAAqB,UAAU,uBAAwB,GAAa,CAAC,OAAO,EAAE,CACpG,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,MAAM;YACd,cAAc,EAAE,IAAA,0BAAc,EAAC,MAAM,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE;YACR,GAAG,QAAQ,CAAC,QAAQ;YACpB,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,OAA0B,EAAE;IAE5B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,mBAAO,EAC1B,IAAI,CAAC,YAAY,IAAI,IAAA,gBAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,wBAAwB,CAAC,CACnE,CAAC;QACF,oEAAoE;QACpE,mEAAmE;QACnE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAE5D,MAAM,SAAS,GACb,IAAI,CAAC,SAAS;YACd,OAAO,CAAC,GAAG,CAAC,cAAc;YAC1B,oBAAoB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAE9C,oEAAoE;QACpE,sEAAsE;QACtE,iEAAiE;QACjE,uEAAuE;QACvE,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,+DAA+D;gBAC/D,MAAM,EAAE,4BAA4B,EAAE,GAAG,wDAAa,uBAAuB,GAAC,CAAC;gBAC/E,WAAW,GAAG,MAAM,4BAA4B,EAAE,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,kEAAkE;gBAClE,WAAW,GAAG,uBAAuB,CAAC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,EAAE,CAAC;QAEpD,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACzD,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS;YACT,WAAW;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ;SACT,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,uEAAuE;QACvE,0EAA0E;QAC1E,IAAI,WAAmC,CAAC;QACxC,IAAI,QAAQ,GAAoD,IAAI,CAAC;QACrE,IAAI,CAAC;YACH,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;YAC/C,uCAAuC;YACvC,MAAM,MAAM,GAAG,IAAA,4BAAc,EAAC;gBAC5B,QAAQ;gBACR,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YACH,WAAW,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,MAAM,iBAAiB,GACrB,IAAI,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;YAClE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CACb,+FAA+F;oBAC7F,0DAA0D,CAC7D,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,IAAA,mBAAQ,EAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;YAC3D,WAAW,GAAG;gBACZ,iBAAiB,EAAE,WAAW;gBAC9B,sBAAsB,EAAE,SAAS;aAClC,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,gBAAgB,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,WAAW;aACf;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,CAAC,MAAM,MAAM,OAAO,EAAE,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;QACtD,OAAO,CAAC,GAAG,CACT,4BAA4B,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,OAAO,WAAW,eAAe,SAAS,GAAG,CACzG,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACV,0DAA2D,GAAa,CAAC,OAAO,EAAE,CACnF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,OAA0B,EAAE;IAC5D,sBAAsB,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9D,OAAO,CAAC,IAAI,CACV,sDAAuD,GAAa,CAAC,OAAO,EAAE,CAC/E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/entities/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC9C,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qEAAqE;IACrE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3F;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC1C;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,aAAa;IAK3D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,IAAI,CAA4C;gBAGrC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,KAAa;IAG5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/entities/handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC9C,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qEAAqE;IACrE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC3F;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC1C;AAED;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,aAAa;IAK3D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,IAAI,CAA4C;gBAGrC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,KAAa;IAG5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;CASzC;AAED;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;CAGzC;AA6FD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAOD,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,yBAAyB,EACvC,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,gBAAgB,CAAC,CA2G3B;AAsFD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CAajB;AAED,wBAAgB,0BAA0B,CACxC,CAAC,EAAE,gBAAgB,GAClB,QAAQ,CAQV;AAED,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,yBAAyB,EACvC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAMnB"}
|
|
@@ -29,7 +29,7 @@ exports.dispatchEntityRequest = dispatchEntityRequest;
|
|
|
29
29
|
exports.requestToDispatch = requestToDispatch;
|
|
30
30
|
exports.dispatchResponseToResponse = dispatchResponseToResponse;
|
|
31
31
|
exports.handleEntityRemixRequest = handleEntityRemixRequest;
|
|
32
|
-
const
|
|
32
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
33
33
|
const errors_js_1 = require("./errors.js");
|
|
34
34
|
/**
|
|
35
35
|
* Registry-public-key verifier. Fetches /registry/entity-token/public-key
|
|
@@ -67,17 +67,10 @@ class RegistryPublicKeyVerifier {
|
|
|
67
67
|
if (!this.publicKey || !this.algo) {
|
|
68
68
|
throw new Error('RegistryPublicKeyVerifier not initialized');
|
|
69
69
|
}
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
? ['HS256']
|
|
75
|
-
: (['EdDSA', 'RS256']);
|
|
76
|
-
const decoded = jsonwebtoken_1.default.verify(token, this.publicKey, {
|
|
77
|
-
algorithms,
|
|
78
|
-
issuer: 'anby-registry',
|
|
79
|
-
});
|
|
80
|
-
return assertAndReturnClaims(decoded);
|
|
70
|
+
// Verify via Node crypto directly — jsonwebtoken/jws don't support
|
|
71
|
+
// Ed25519 key parsing, so EdDSA tokens fail with "Unknown key type
|
|
72
|
+
// 'ed25519'". Node crypto.verify handles Ed25519 natively.
|
|
73
|
+
return verifyJwtNative(token, this.publicKey, this.algo);
|
|
81
74
|
}
|
|
82
75
|
}
|
|
83
76
|
exports.RegistryPublicKeyVerifier = RegistryPublicKeyVerifier;
|
|
@@ -91,14 +84,74 @@ class SharedSecretVerifier {
|
|
|
91
84
|
this.secret = secret;
|
|
92
85
|
}
|
|
93
86
|
verify(token) {
|
|
94
|
-
|
|
95
|
-
algorithms: ['HS256'],
|
|
96
|
-
issuer: 'anby-registry',
|
|
97
|
-
});
|
|
98
|
-
return assertAndReturnClaims(decoded);
|
|
87
|
+
return verifyJwtNative(token, this.secret, 'HS256');
|
|
99
88
|
}
|
|
100
89
|
}
|
|
101
90
|
exports.SharedSecretVerifier = SharedSecretVerifier;
|
|
91
|
+
function verifyJwtNative(token, keyMaterial, expectedAlgo) {
|
|
92
|
+
const parts = token.split('.');
|
|
93
|
+
if (parts.length !== 3)
|
|
94
|
+
throw new Error('malformed JWT');
|
|
95
|
+
const [h64, p64, s64] = parts;
|
|
96
|
+
const header = safeJsonParse(base64urlDecode(h64).toString('utf8'));
|
|
97
|
+
const payload = safeJsonParse(base64urlDecode(p64).toString('utf8'));
|
|
98
|
+
const signature = base64urlDecode(s64);
|
|
99
|
+
const signingInput = Buffer.from(`${h64}.${p64}`);
|
|
100
|
+
if (typeof header.alg !== 'string')
|
|
101
|
+
throw new Error('missing alg');
|
|
102
|
+
// Only accept the algo the verifier was initialized with, to prevent
|
|
103
|
+
// algorithm-confusion attacks.
|
|
104
|
+
if (header.alg !== expectedAlgo) {
|
|
105
|
+
throw new Error(`algorithm mismatch: expected ${expectedAlgo}, got ${header.alg}`);
|
|
106
|
+
}
|
|
107
|
+
let ok = false;
|
|
108
|
+
if (header.alg === 'EdDSA') {
|
|
109
|
+
const pubKey = node_crypto_1.default.createPublicKey(keyMaterial);
|
|
110
|
+
ok = node_crypto_1.default.verify(null, signingInput, pubKey, signature);
|
|
111
|
+
}
|
|
112
|
+
else if (header.alg === 'RS256') {
|
|
113
|
+
const pubKey = node_crypto_1.default.createPublicKey(keyMaterial);
|
|
114
|
+
ok = node_crypto_1.default.verify('sha256', signingInput, pubKey, signature);
|
|
115
|
+
}
|
|
116
|
+
else if (header.alg === 'HS256') {
|
|
117
|
+
const mac = node_crypto_1.default
|
|
118
|
+
.createHmac('sha256', keyMaterial)
|
|
119
|
+
.update(signingInput)
|
|
120
|
+
.digest();
|
|
121
|
+
ok = signature.length === mac.length && node_crypto_1.default.timingSafeEqual(mac, signature);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
throw new Error(`unsupported algorithm: ${header.alg}`);
|
|
125
|
+
}
|
|
126
|
+
if (!ok)
|
|
127
|
+
throw new Error('signature verification failed');
|
|
128
|
+
// Standard claim checks: issuer + expiry + not-before.
|
|
129
|
+
const now = Math.floor(Date.now() / 1000);
|
|
130
|
+
if (payload.iss !== 'anby-registry') {
|
|
131
|
+
throw new Error('invalid issuer');
|
|
132
|
+
}
|
|
133
|
+
if (typeof payload.exp === 'number' && payload.exp < now) {
|
|
134
|
+
throw new Error('token expired');
|
|
135
|
+
}
|
|
136
|
+
if (typeof payload.nbf === 'number' && payload.nbf > now) {
|
|
137
|
+
throw new Error('token not yet valid');
|
|
138
|
+
}
|
|
139
|
+
return assertAndReturnClaims(payload);
|
|
140
|
+
}
|
|
141
|
+
function base64urlDecode(s) {
|
|
142
|
+
return Buffer.from(s, 'base64url');
|
|
143
|
+
}
|
|
144
|
+
function safeJsonParse(s) {
|
|
145
|
+
try {
|
|
146
|
+
const v = JSON.parse(s);
|
|
147
|
+
if (!v || typeof v !== 'object')
|
|
148
|
+
throw new Error('non-object');
|
|
149
|
+
return v;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
throw new Error('malformed JWT segment');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
102
155
|
function assertAndReturnClaims(decoded) {
|
|
103
156
|
assertValidClaims(decoded);
|
|
104
157
|
return decoded;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/entities/handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/entities/handler.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/vite/index.d.ts
CHANGED
|
@@ -4,17 +4,12 @@ export interface AnbyVitePluginOptions {
|
|
|
4
4
|
manifestPath?: string;
|
|
5
5
|
/** Output path for generated types relative to vite root. Default: `./.anby/types.d.ts`. */
|
|
6
6
|
outFile?: string;
|
|
7
|
-
/**
|
|
8
|
-
* Output path for the wire-format manifest static asset, relative to
|
|
9
|
-
* vite root. Default: `./public/_anby/manifest.json`.
|
|
10
|
-
*
|
|
11
|
-
* The Marketplace Submit-app form fetches this file from
|
|
12
|
-
* `${publicUrl}/_anby/manifest.json` to publish a running app without
|
|
13
|
-
* the operator pasting any JSON. Vite (dev) and Remix (prod) both
|
|
14
|
-
* serve files in `public/` as static assets, so the same artifact
|
|
15
|
-
* works in every runtime — no middleware, no Remix route file.
|
|
16
|
-
*/
|
|
7
|
+
/** Output path for the wire-format manifest static asset. Default: `./public/_anby/manifest.json`. */
|
|
17
8
|
manifestArtifactPath?: string;
|
|
9
|
+
/** Source directories to scan for entity/event usage. Default: `['./app']`. */
|
|
10
|
+
scanDirs?: string[];
|
|
11
|
+
/** Disable auto-scan (only codegen from manifest). Default: false. */
|
|
12
|
+
disableAutoScan?: boolean;
|
|
18
13
|
}
|
|
19
14
|
export declare function anbyVitePlugin(opts?: AnbyVitePluginOptions): Plugin;
|
|
20
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vite/index.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAGnC,MAAM,WAAW,qBAAqB;IACpC,4FAA4F;IAC5F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAoPD,wBAAgB,cAAc,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,CA+GvE"}
|
package/dist/cjs/vite/index.js
CHANGED
|
@@ -2,36 +2,196 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.anbyVitePlugin = anbyVitePlugin;
|
|
4
4
|
/**
|
|
5
|
-
* @anby/platform-sdk/vite — Vite plugin for
|
|
5
|
+
* @anby/platform-sdk/vite — Vite plugin for Anby app integration.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Two responsibilities:
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* 1. **Auto-scan** source code to discover entity/event declarations and
|
|
10
|
+
* keep `anby-app.manifest.json` in sync — developer never edits
|
|
11
|
+
* provides/requires by hand.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
+
* 2. **Codegen** typed module augmentations (`.anby/types.d.ts`) so
|
|
14
|
+
* `publishEvent` gets compile-time type checking.
|
|
13
15
|
*
|
|
14
|
-
*
|
|
15
|
-
* plugins: [
|
|
16
|
-
* anbyVitePlugin(),
|
|
17
|
-
* remix({...}),
|
|
18
|
-
* ],
|
|
19
|
-
* });
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* On every dev start (and on every change to `anby-app.manifest.json`),
|
|
23
|
-
* the plugin reads the manifest's `provides.events` and `requires.events`
|
|
24
|
-
* arrays and writes typed module augmentations to `.anby/types.d.ts`. The
|
|
25
|
-
* SDK's `publishEvent` overload picks up the merged `AppProvidedEvents`
|
|
26
|
-
* interface and gives the dev compile-time errors on unknown event names.
|
|
27
|
-
*
|
|
28
|
-
* The plugin imports `vite` only as a TYPE — `import type { Plugin }` is
|
|
29
|
-
* erased at compile time, so the SDK package does NOT need to ship vite
|
|
30
|
-
* as a runtime dependency. Apps that use this plugin already have vite.
|
|
16
|
+
* Runs on every dev start and on source/manifest file changes.
|
|
31
17
|
*/
|
|
32
18
|
const node_fs_1 = require("node:fs");
|
|
33
19
|
const node_path_1 = require("node:path");
|
|
34
20
|
const publish_js_1 = require("../apps/publish.js");
|
|
21
|
+
/**
|
|
22
|
+
* Scan source files for SDK API usage patterns:
|
|
23
|
+
* - getEntityClient('org.period@v1') → requires entity
|
|
24
|
+
* - publishEvent({ type: 'org.node.created' ... }) → provides event
|
|
25
|
+
* - app/schemas/*.v*.json files → provides entities
|
|
26
|
+
*/
|
|
27
|
+
function scanSourceCode(root, scanDirs) {
|
|
28
|
+
const providesEvents = new Set();
|
|
29
|
+
const requiresEntities = new Set();
|
|
30
|
+
const providesEntities = [];
|
|
31
|
+
// 1. Scan for entity schema files: app/schemas/{name}.{version}.json
|
|
32
|
+
const schemasDir = (0, node_path_1.resolve)(root, 'app/schemas');
|
|
33
|
+
if ((0, node_fs_1.existsSync)(schemasDir)) {
|
|
34
|
+
try {
|
|
35
|
+
const files = (0, node_fs_1.readdirSync)(schemasDir);
|
|
36
|
+
for (const file of files) {
|
|
37
|
+
// Match: org-period.v1.json → name=org.period, version=v1
|
|
38
|
+
const match = file.match(/^(.+)\.(v\d+)\.json$/);
|
|
39
|
+
if (match) {
|
|
40
|
+
const rawName = match[1]; // "org-period"
|
|
41
|
+
const version = match[2]; // "v1"
|
|
42
|
+
// Convert filename to entity name: "org-period" → "org.period"
|
|
43
|
+
const entityName = rawName.replace(/-/g, '.');
|
|
44
|
+
const schemaPath = `./app/schemas/${file}`;
|
|
45
|
+
providesEntities.push({ name: entityName, version, schema: schemaPath });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// schemas dir unreadable — skip
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// 2. Scan source files for API usage patterns
|
|
54
|
+
for (const dir of scanDirs) {
|
|
55
|
+
const absDir = (0, node_path_1.isAbsolute)(dir) ? dir : (0, node_path_1.resolve)(root, dir);
|
|
56
|
+
if (!(0, node_fs_1.existsSync)(absDir))
|
|
57
|
+
continue;
|
|
58
|
+
walkFiles(absDir, (filePath) => {
|
|
59
|
+
if (!filePath.match(/\.(ts|tsx|js|jsx)$/))
|
|
60
|
+
return;
|
|
61
|
+
// Skip node_modules and generated files
|
|
62
|
+
if (filePath.includes('node_modules') || filePath.includes('.anby/'))
|
|
63
|
+
return;
|
|
64
|
+
let content;
|
|
65
|
+
try {
|
|
66
|
+
content = (0, node_fs_1.readFileSync)(filePath, 'utf-8');
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Pattern 1: getEntityClient('org.period@v1')
|
|
72
|
+
const entityClientRegex1 = /getEntityClient\s*\(\s*['"]([^'"]+@[^'"]+)['"]/g;
|
|
73
|
+
for (const match of content.matchAll(entityClientRegex1)) {
|
|
74
|
+
requiresEntities.add(match[1]); // e.g. "org.period@v1"
|
|
75
|
+
}
|
|
76
|
+
// Pattern 2: getEntityClient(tenantId, 'org.period', 'v1') or getEntityClient<T>(tenantId, 'org.period', 'v1')
|
|
77
|
+
const entityClientRegex2 = /getEntityClient\s*(?:<[^>]+>)?\s*\([^,]+,\s*['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]/g;
|
|
78
|
+
for (const match of content.matchAll(entityClientRegex2)) {
|
|
79
|
+
requiresEntities.add(`${match[1]}@${match[2]}`); // e.g. "org.period@v1"
|
|
80
|
+
}
|
|
81
|
+
// publishEvent({ type: 'org.node.created' ... })
|
|
82
|
+
const publishEventRegex = /publishEvent\s*\(\s*\{[^}]*?type\s*:\s*['"]([^'"]+)['"]/g;
|
|
83
|
+
for (const match of content.matchAll(publishEventRegex)) {
|
|
84
|
+
providesEvents.add(match[1]);
|
|
85
|
+
}
|
|
86
|
+
// createEvent({ type: 'org.node.created' ... })
|
|
87
|
+
const createEventRegex = /createEvent\s*\(\s*\{[^}]*?type\s*:\s*['"]([^'"]+)['"]/g;
|
|
88
|
+
for (const match of content.matchAll(createEventRegex)) {
|
|
89
|
+
providesEvents.add(match[1]);
|
|
90
|
+
}
|
|
91
|
+
// Type union declarations near publishEvent context:
|
|
92
|
+
// type: 'org.node.created' | 'org.node.updated' | 'org.node.deleted'
|
|
93
|
+
// Matches dotted string literals in union type annotations
|
|
94
|
+
const typeUnionRegex = /type\s*:\s*((?:['"][a-z][a-z0-9.]*[a-z0-9]['"](?:\s*\|\s*)?)+)/g;
|
|
95
|
+
for (const unionMatch of content.matchAll(typeUnionRegex)) {
|
|
96
|
+
const unionStr = unionMatch[1];
|
|
97
|
+
const literalRegex = /['"]([a-z][a-z0-9]*(?:\.[a-z][a-z0-9]*)+)['"]/g;
|
|
98
|
+
for (const litMatch of unionStr.matchAll(literalRegex)) {
|
|
99
|
+
providesEvents.add(litMatch[1]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
providesEntities,
|
|
106
|
+
providesEvents: [...providesEvents].sort(),
|
|
107
|
+
requiresEntities: [...requiresEntities].sort(),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function walkFiles(dir, callback) {
|
|
111
|
+
let entries;
|
|
112
|
+
try {
|
|
113
|
+
entries = (0, node_fs_1.readdirSync)(dir);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
const full = (0, node_path_1.join)(dir, entry);
|
|
120
|
+
try {
|
|
121
|
+
const stat = (0, node_fs_1.statSync)(full);
|
|
122
|
+
if (stat.isDirectory()) {
|
|
123
|
+
if (entry === 'node_modules' || entry === '.anby' || entry === 'build')
|
|
124
|
+
continue;
|
|
125
|
+
walkFiles(full, callback);
|
|
126
|
+
}
|
|
127
|
+
else if (stat.isFile()) {
|
|
128
|
+
callback(full);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// skip unreadable
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ── Manifest sync: merge scan results into manifest ───────────────────
|
|
137
|
+
function syncManifest(manifestPath, scan) {
|
|
138
|
+
if (!(0, node_fs_1.existsSync)(manifestPath))
|
|
139
|
+
return false;
|
|
140
|
+
let raw;
|
|
141
|
+
try {
|
|
142
|
+
raw = (0, node_fs_1.readFileSync)(manifestPath, 'utf-8');
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const manifest = JSON.parse(raw);
|
|
148
|
+
let changed = false;
|
|
149
|
+
// Sync provides.entities
|
|
150
|
+
if (scan.providesEntities.length > 0) {
|
|
151
|
+
const current = JSON.stringify(manifest.provides?.entities ?? []);
|
|
152
|
+
const scanned = JSON.stringify(scan.providesEntities);
|
|
153
|
+
if (current !== scanned) {
|
|
154
|
+
manifest.provides = manifest.provides || {};
|
|
155
|
+
manifest.provides.entities = scan.providesEntities;
|
|
156
|
+
changed = true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Sync provides.events
|
|
160
|
+
if (scan.providesEvents.length > 0) {
|
|
161
|
+
const current = JSON.stringify((manifest.provides?.events ?? []).slice().sort());
|
|
162
|
+
const scanned = JSON.stringify(scan.providesEvents);
|
|
163
|
+
if (current !== scanned) {
|
|
164
|
+
manifest.provides = manifest.provides || {};
|
|
165
|
+
manifest.provides.events = scan.providesEvents;
|
|
166
|
+
changed = true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Sync requires.entities
|
|
170
|
+
if (scan.requiresEntities.length > 0) {
|
|
171
|
+
const current = JSON.stringify((manifest.requires?.entities ?? []).slice().sort());
|
|
172
|
+
const scanned = JSON.stringify(scan.requiresEntities);
|
|
173
|
+
if (current !== scanned) {
|
|
174
|
+
manifest.requires = manifest.requires || {};
|
|
175
|
+
manifest.requires.entities = scan.requiresEntities;
|
|
176
|
+
changed = true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (changed) {
|
|
180
|
+
(0, node_fs_1.writeFileSync)(manifestPath, JSON.stringify(manifest, null, 2) + '\n');
|
|
181
|
+
console.log('[anby-vite] ✔ Auto-updated manifest from source code scan');
|
|
182
|
+
const parts = [];
|
|
183
|
+
if (scan.providesEntities.length)
|
|
184
|
+
parts.push(`provides ${scan.providesEntities.length} entities`);
|
|
185
|
+
if (scan.providesEvents.length)
|
|
186
|
+
parts.push(`provides ${scan.providesEvents.length} events`);
|
|
187
|
+
if (scan.requiresEntities.length)
|
|
188
|
+
parts.push(`requires ${scan.requiresEntities.length} entities`);
|
|
189
|
+
if (parts.length)
|
|
190
|
+
console.log(`[anby-vite] ${parts.join(', ')}`);
|
|
191
|
+
}
|
|
192
|
+
return changed;
|
|
193
|
+
}
|
|
194
|
+
// ── Codegen: typed module augmentations ───────────────────────────────
|
|
35
195
|
function renderTypes(provides, requires) {
|
|
36
196
|
const sections = [];
|
|
37
197
|
sections.push('// Generated by @anby/platform-sdk/vite — DO NOT EDIT.');
|
|
@@ -60,7 +220,6 @@ function renderTypes(provides, requires) {
|
|
|
60
220
|
}
|
|
61
221
|
sections.push('}');
|
|
62
222
|
sections.push('');
|
|
63
|
-
// Pure declaration file marker
|
|
64
223
|
sections.push('export {};');
|
|
65
224
|
sections.push('');
|
|
66
225
|
return sections.join('\n');
|
|
@@ -72,13 +231,30 @@ function readManifestEvents(manifestAbsPath) {
|
|
|
72
231
|
const requires = Array.isArray(parsed.requires?.events) ? parsed.requires.events : [];
|
|
73
232
|
return { provides, requires };
|
|
74
233
|
}
|
|
234
|
+
// ── Plugin ────────────────────────────────────────────────────────────
|
|
75
235
|
function anbyVitePlugin(opts = {}) {
|
|
76
236
|
const manifestRelative = opts.manifestPath ?? './anby-app.manifest.json';
|
|
77
237
|
const outRelative = opts.outFile ?? './.anby/types.d.ts';
|
|
78
238
|
const artifactRelative = opts.manifestArtifactPath ?? './public/_anby/manifest.json';
|
|
239
|
+
const scanDirsRelative = opts.scanDirs ?? ['./app'];
|
|
240
|
+
const autoScan = opts.disableAutoScan !== true;
|
|
241
|
+
let root = '';
|
|
79
242
|
let resolvedManifest = '';
|
|
80
243
|
let resolvedOut = '';
|
|
81
244
|
let resolvedArtifact = '';
|
|
245
|
+
function runAutoScan() {
|
|
246
|
+
if (!autoScan)
|
|
247
|
+
return;
|
|
248
|
+
if (!(0, node_fs_1.existsSync)(resolvedManifest))
|
|
249
|
+
return;
|
|
250
|
+
try {
|
|
251
|
+
const scan = scanSourceCode(root, scanDirsRelative);
|
|
252
|
+
syncManifest(resolvedManifest, scan);
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
console.warn(`[anby-vite] auto-scan failed: ${err.message}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
82
258
|
function generateTypes() {
|
|
83
259
|
if (!(0, node_fs_1.existsSync)(resolvedManifest)) {
|
|
84
260
|
console.warn(`[anby-vite] manifest not found at ${resolvedManifest} — skipping codegen`);
|
|
@@ -94,13 +270,6 @@ function anbyVitePlugin(opts = {}) {
|
|
|
94
270
|
console.warn(`[anby-vite] codegen failed: ${err.message}`);
|
|
95
271
|
}
|
|
96
272
|
}
|
|
97
|
-
/**
|
|
98
|
-
* Generate `public/_anby/manifest.json` — the wire-format manifest
|
|
99
|
-
* with all `provides.entities[].schema` paths resolved to inline JSON
|
|
100
|
-
* content. Vite/Remix serve `public/` as static assets in both dev
|
|
101
|
-
* and production, so this single artifact powers the Marketplace
|
|
102
|
-
* Submit-app form everywhere.
|
|
103
|
-
*/
|
|
104
273
|
async function generateManifestArtifact() {
|
|
105
274
|
if (!(0, node_fs_1.existsSync)(resolvedManifest))
|
|
106
275
|
return;
|
|
@@ -116,15 +285,14 @@ function anbyVitePlugin(opts = {}) {
|
|
|
116
285
|
}
|
|
117
286
|
}
|
|
118
287
|
function regenerateAll() {
|
|
119
|
-
|
|
120
|
-
|
|
288
|
+
runAutoScan(); // 1. Scan code → update manifest
|
|
289
|
+
generateTypes(); // 2. Read manifest → generate types
|
|
290
|
+
void generateManifestArtifact(); // 3. Read manifest → generate wire artifact
|
|
121
291
|
}
|
|
122
292
|
return {
|
|
123
293
|
name: '@anby/platform-sdk/vite',
|
|
124
294
|
configResolved(config) {
|
|
125
|
-
|
|
126
|
-
// This is robust against pnpm workspaces / symlinks / monorepos.
|
|
127
|
-
const root = config.root;
|
|
295
|
+
root = config.root;
|
|
128
296
|
resolvedManifest = (0, node_path_1.isAbsolute)(manifestRelative)
|
|
129
297
|
? manifestRelative
|
|
130
298
|
: (0, node_path_1.resolve)(root, manifestRelative);
|
|
@@ -139,13 +307,29 @@ function anbyVitePlugin(opts = {}) {
|
|
|
139
307
|
regenerateAll();
|
|
140
308
|
},
|
|
141
309
|
configureServer(server) {
|
|
142
|
-
// Watch
|
|
143
|
-
// against the resolved path so we don't false-trigger on other
|
|
144
|
-
// manifest.json files in the workspace (e.g., node_modules).
|
|
310
|
+
// Watch manifest + source dirs
|
|
145
311
|
server.watcher.add(resolvedManifest);
|
|
312
|
+
for (const dir of scanDirsRelative) {
|
|
313
|
+
const absDir = (0, node_path_1.isAbsolute)(dir) ? dir : (0, node_path_1.resolve)(root, dir);
|
|
314
|
+
if ((0, node_fs_1.existsSync)(absDir))
|
|
315
|
+
server.watcher.add(absDir);
|
|
316
|
+
}
|
|
317
|
+
let scanTimer = null;
|
|
146
318
|
server.watcher.on('change', (changedPath) => {
|
|
147
|
-
|
|
148
|
-
|
|
319
|
+
const abs = (0, node_path_1.resolve)(changedPath);
|
|
320
|
+
if (abs === resolvedManifest) {
|
|
321
|
+
// Manifest changed directly — regenerate types + artifact (no re-scan)
|
|
322
|
+
generateTypes();
|
|
323
|
+
void generateManifestArtifact();
|
|
324
|
+
}
|
|
325
|
+
else if (changedPath.match(/\.(ts|tsx|js|jsx)$/)) {
|
|
326
|
+
// Debounce source scans — many files change at once during HMR
|
|
327
|
+
if (scanTimer)
|
|
328
|
+
clearTimeout(scanTimer);
|
|
329
|
+
scanTimer = setTimeout(() => {
|
|
330
|
+
scanTimer = null;
|
|
331
|
+
regenerateAll();
|
|
332
|
+
}, 2000);
|
|
149
333
|
}
|
|
150
334
|
});
|
|
151
335
|
},
|