@wix/cli-app 1.1.39 → 1.1.41
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/build/CreateVersionCommand-NJC6EUQ6.js +4 -0
- package/build/CreateVersionCommand-NJC6EUQ6.js.map +1 -0
- package/build/DevCommand-7VFOSZMO.js +4 -0
- package/build/DevCommand-7VFOSZMO.js.map +1 -0
- package/build/{GenerateCommand-7ZGIGNPF.js → GenerateCommand-VISY3267.js} +21 -21
- package/build/GenerateCommand-VISY3267.js.map +1 -0
- package/build/LogsCommand-5HFJDCHS.js +4 -0
- package/build/LogsCommand-5HFJDCHS.js.map +1 -0
- package/build/PreviewCommand-R3AOKI4K.js +4 -0
- package/build/{ServeCommand-T5PQKB57.js → ServeCommand-QS4FDP4T.js} +2 -2
- package/build/build-BFTLTFIN.js +4 -0
- package/build/build-BFTLTFIN.js.map +1 -0
- package/build/{chunk-KLTGX7JQ.js → chunk-3HELHIBJ.js} +2 -2
- package/build/chunk-3OFSARA2.js +4 -0
- package/build/chunk-3OFSARA2.js.map +1 -0
- package/build/{chunk-TRE6G7GA.js → chunk-5YVFVF4T.js} +2 -2
- package/build/chunk-62SRA77S.js +4 -0
- package/build/{chunk-35BUZ7CK.js.map → chunk-62SRA77S.js.map} +1 -1
- package/build/{chunk-6QCQALVT.js → chunk-6MMLDNFM.js} +2 -2
- package/build/{chunk-IBNMP32R.js → chunk-7RL4TN6T.js} +2 -2
- package/build/chunk-B2BRLGRZ.js +4 -0
- package/build/{chunk-7OVUUUVH.js → chunk-GF543SV4.js} +2 -2
- package/build/chunk-IZOKP4UZ.js +4 -0
- package/build/chunk-IZOKP4UZ.js.map +1 -0
- package/build/chunk-L7P6I5SY.js +4 -0
- package/build/{chunk-BW3SDDV3.js.map → chunk-L7P6I5SY.js.map} +1 -1
- package/build/chunk-LRONHC7Z.js +10 -0
- package/build/chunk-LRONHC7Z.js.map +1 -0
- package/build/{chunk-4YU6J2EW.js → chunk-NCYXC7TY.js} +2 -2
- package/build/chunk-RL3KEEB6.js +11 -0
- package/build/{chunk-QT3P4FJP.js.map → chunk-RL3KEEB6.js.map} +1 -1
- package/build/{chunk-3Q7TAN43.js → chunk-RUZJ2NCD.js} +2 -2
- package/build/chunk-SQGBFWJ2.js +114 -0
- package/build/chunk-SQGBFWJ2.js.map +1 -0
- package/build/{chunk-PBBKM3Z3.js → chunk-T3UD2OLT.js} +51 -51
- package/build/chunk-T3UD2OLT.js.map +1 -0
- package/build/chunk-UGTXCT5B.js +100 -0
- package/build/chunk-UGTXCT5B.js.map +1 -0
- package/build/chunk-ZTW5IT5T.js +4 -0
- package/build/chunk-ZTW5IT5T.js.map +1 -0
- package/build/cloudflare-runtime/entry.js +365 -0
- package/build/cloudflare-runtime/getRegisteredExtensions.js +166 -0
- package/build/devtools-4JFNYU2B.js +10 -0
- package/build/devtools-4JFNYU2B.js.map +1 -0
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/build/miniflare/worker-entry.js +2767 -0
- package/build/platform-sdk/chunk-DGX4CFXG.js +2 -0
- package/build/platform-sdk/chunk-DGX4CFXG.js.map +1 -0
- package/build/platform-sdk/chunk-UZ376HBX.js +2 -0
- package/build/platform-sdk/chunk-UZ376HBX.js.map +1 -0
- package/build/platform-sdk/dashboard.js +1 -1
- package/build/platform-sdk/dashboard.js.map +1 -1
- package/build/platform-sdk/editor.js +1 -1
- package/build/platform-sdk/site.js +1 -1
- package/build/{preview-HS2NEMQI.js → preview-KSI26ITH.js} +2 -2
- package/build/render-command-D47LZ2TZ.js +4 -0
- package/build/render-command-D47LZ2TZ.js.map +1 -0
- package/client.d.ts +2 -3
- package/package.json +10 -10
- package/templates/api/files/api.ts.ejs +8 -8
- package/templates/event/dependencies.json +5 -0
- package/templates/event/files/event.ts.ejs +2 -2
- package/templates/service-plugin/ecom-additional-fees/files/plugin.ts.ejs +1 -1
- package/templates/service-plugin/ecom-discounts-trigger/files/plugin.ts.ejs +2 -2
- package/templates/service-plugin/ecom-payment-settings/files/plugin.ts.ejs +2 -2
- package/templates/service-plugin/ecom-shipping-rates/files/plugin.ts.ejs +1 -1
- package/templates/service-plugin/ecom-validations/files/plugin.ts.ejs +2 -2
- package/build/CreateVersionCommand-C6UP5ORQ.js +0 -4
- package/build/CreateVersionCommand-C6UP5ORQ.js.map +0 -1
- package/build/DevCommand-BO6KQHRP.js +0 -4
- package/build/DevCommand-BO6KQHRP.js.map +0 -1
- package/build/GenerateCommand-7ZGIGNPF.js.map +0 -1
- package/build/LogsCommand-W5CRI6WA.js +0 -4
- package/build/LogsCommand-W5CRI6WA.js.map +0 -1
- package/build/PreviewCommand-DWQCCBBZ.js +0 -4
- package/build/build-CNTVWU2X.js +0 -4
- package/build/build-CNTVWU2X.js.map +0 -1
- package/build/chunk-35BUZ7CK.js +0 -4
- package/build/chunk-BW3SDDV3.js +0 -4
- package/build/chunk-GK5AZX2F.js +0 -4
- package/build/chunk-I2Z6OIJW.js +0 -4
- package/build/chunk-I2Z6OIJW.js.map +0 -1
- package/build/chunk-JVH77HC6.js +0 -4
- package/build/chunk-JVH77HC6.js.map +0 -1
- package/build/chunk-MIBBNKYS.js +0 -116
- package/build/chunk-MIBBNKYS.js.map +0 -1
- package/build/chunk-PBBKM3Z3.js.map +0 -1
- package/build/chunk-QDPEZ5A2.js +0 -4
- package/build/chunk-QDPEZ5A2.js.map +0 -1
- package/build/chunk-QT3P4FJP.js +0 -11
- package/build/chunk-R3JUFM5X.js +0 -100
- package/build/chunk-R3JUFM5X.js.map +0 -1
- package/build/chunk-RZI5OJAA.js +0 -10
- package/build/chunk-RZI5OJAA.js.map +0 -1
- package/build/chunk-VAOLKVA2.js +0 -4
- package/build/chunk-VAOLKVA2.js.map +0 -1
- package/build/devtools-LGJXFI3T.js +0 -10
- package/build/devtools-LGJXFI3T.js.map +0 -1
- package/build/platform-sdk/chunk-OSR2I5MY.js +0 -2
- package/build/platform-sdk/chunk-OSR2I5MY.js.map +0 -1
- package/build/platform-sdk/chunk-SHVQ4QZG.js +0 -2
- package/build/platform-sdk/chunk-SHVQ4QZG.js.map +0 -1
- package/build/render-command-FB3VVOAQ.js +0 -4
- package/build/render-command-FB3VVOAQ.js.map +0 -1
- /package/build/{PreviewCommand-DWQCCBBZ.js.map → PreviewCommand-R3AOKI4K.js.map} +0 -0
- /package/build/{ServeCommand-T5PQKB57.js.map → ServeCommand-QS4FDP4T.js.map} +0 -0
- /package/build/{chunk-KLTGX7JQ.js.map → chunk-3HELHIBJ.js.map} +0 -0
- /package/build/{chunk-TRE6G7GA.js.map → chunk-5YVFVF4T.js.map} +0 -0
- /package/build/{chunk-6QCQALVT.js.map → chunk-6MMLDNFM.js.map} +0 -0
- /package/build/{chunk-IBNMP32R.js.map → chunk-7RL4TN6T.js.map} +0 -0
- /package/build/{chunk-GK5AZX2F.js.map → chunk-B2BRLGRZ.js.map} +0 -0
- /package/build/{chunk-7OVUUUVH.js.map → chunk-GF543SV4.js.map} +0 -0
- /package/build/{chunk-4YU6J2EW.js.map → chunk-NCYXC7TY.js.map} +0 -0
- /package/build/{chunk-3Q7TAN43.js.map → chunk-RUZJ2NCD.js.map} +0 -0
- /package/build/{preview-HS2NEMQI.js.map → preview-KSI26ITH.js.map} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as _createRequire } from 'node:module';
|
|
2
|
+
const require = _createRequire(import.meta.url);
|
|
3
|
+
import{v as u,w as a}from"./chunk-SQGBFWJ2.js";import{g as l,h as f,w as N}from"./chunk-UGTXCT5B.js";import{e as k,h as i}from"./chunk-V4TR6DCM.js";i();import{randomUUID as U}from"node:crypto";function L(r,t){r.updateDefaults(V(t))}function V(r){return r?{_client_id:r,_uuid:r,logged_user_id:r,logged_account_id:r,target_account_id:r}:{_client_id:U()}}i();import{uptime as R}from"node:process";i();var w=k(N(),1);import b from"node:os";import{platform as B,version as F}from"node:process";function x({cliVersion:r,flow:t}){return{...t?{flow:t}:{},cliVersion:r,isCI:w.default,nodeVersion:F,osName:J(),osVersion:b.release()}}function J(){switch(B){case"darwin":return"mac";case"win32":return"windows";default:return"linux"}}var y=()=>Math.round(R()*1e3);function h({biLogger:r,command:t,flow:S,cliVersion:E,projectId:p,extensions:o,extraFields:c}){let v=t.opts(),C=t.args,O=new Set(["apiKey"]),d=Object.fromEntries(Object.entries(v).map(([e,s])=>{let _=O.has(e)?"<censored>":s;return[e,_]})),n={command:t.name(),arguments:C.join(","),flags:Object.keys(d).length?JSON.stringify(d):""};return r.report(u({...x({cliVersion:E,flow:S}),...n,...p?{projectId:p}:{},...c?{extraFields:JSON.stringify(c)}:{},isValid:!0})),{succeed(){r.report(a({...n,...o?{extensions:JSON.stringify(o)}:{},duration:y(),isSuccess:!0,isValid:!0}))},failed(e){let s=l(e)?{errorType:f(e)?"SystemError":"UserError",errorName:e.name,errorMessage:e.message}:e instanceof Error?{errorType:"UnknownError",errorName:e.name,errorMessage:e.message}:{errorType:"UnknownError",errorMessage:JSON.stringify(e)};r.report(a({...n,...s,...o?{extensions:JSON.stringify(o)}:{},duration:y(),isSuccess:!1,isValid:!0}))}}}i();export{L as a,h as b};
|
|
4
|
+
//# sourceMappingURL=chunk-ZTW5IT5T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../cli-telemetry/src/add-user-fields.ts","../../cli-telemetry/src/command-bi-event.ts","../../cli-telemetry/src/environment.ts","../../cli-telemetry/src/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { BiLogger } from '@wix/wix-bi-logger-client';\n\nexport function addUserFields(logger: BiLogger, userId: string) {\n logger.updateDefaults(resolveUserFields(userId));\n}\n\nexport function resolveUserFields(userId?: string): Record<string, string> {\n if (!userId) {\n // anonymous users need to have an identifier for the bi platform to accept the event\n return {\n _client_id: randomUUID(),\n };\n }\n\n return {\n _client_id: userId,\n _uuid: userId,\n logged_user_id: userId,\n logged_account_id: userId,\n target_account_id: userId,\n };\n}\n","import type { BiLogger } from '@wix/wix-bi-logger-client';\nimport {\n wixCliCliCommand,\n wixCliCliCommandStatus,\n} from '@wix/bi-logger-wix-cli/v2';\nimport { isCliError, isCliSystemError } from '@wix/cli-error';\nimport { uptime } from 'node:process';\nimport { getEnvironmentInfo } from './environment.js';\n\ninterface CommandLike {\n name: () => string;\n args: string[];\n opts: () => Record<string, unknown>;\n}\n\nconst getDuration = () => Math.round(uptime() * 1000);\n\nexport function reportCommandStartEvent({\n biLogger,\n command,\n flow,\n cliVersion,\n projectId,\n extensions,\n extraFields,\n}: {\n biLogger: BiLogger;\n command: CommandLike;\n flow: 'Apps' | 'Sites' | null;\n cliVersion: string;\n projectId?: string;\n extensions?: Record<string, number>;\n extraFields?: Record<string, unknown>;\n}) {\n const options = command.opts();\n const args = command.args;\n\n const privateOptions = new Set(['apiKey']);\n const sanitizedOptions = Object.fromEntries(\n Object.entries(options).map(([flagName, flagValue]) => {\n const value = privateOptions.has(flagName) ? '<censored>' : flagValue;\n return [flagName, value];\n })\n );\n\n const commandFields = {\n command: command.name(),\n arguments: args.join(','),\n flags: Object.keys(sanitizedOptions).length\n ? JSON.stringify(sanitizedOptions)\n : '',\n };\n\n void biLogger.report(\n wixCliCliCommand({\n ...getEnvironmentInfo({ cliVersion, flow }),\n ...commandFields,\n ...(projectId ? { projectId } : {}),\n ...(extraFields ? { extraFields: JSON.stringify(extraFields) } : {}),\n isValid: true,\n })\n );\n\n return {\n succeed() {\n void biLogger.report(\n wixCliCliCommandStatus({\n ...commandFields,\n ...(extensions ? { extensions: JSON.stringify(extensions) } : {}),\n duration: getDuration(),\n isSuccess: true,\n isValid: true,\n })\n );\n },\n failed(error: unknown) {\n const errorFields = isCliError(error)\n ? {\n errorType: isCliSystemError(error) ? 'SystemError' : 'UserError',\n errorName: error.name,\n errorMessage: error.message,\n }\n : error instanceof Error\n ? {\n errorType: 'UnknownError',\n errorName: error.name,\n errorMessage: error.message,\n }\n : {\n errorType: 'UnknownError',\n errorMessage: JSON.stringify(error),\n };\n\n void biLogger.report(\n wixCliCliCommandStatus({\n ...commandFields,\n ...errorFields,\n ...(extensions ? { extensions: JSON.stringify(extensions) } : {}),\n duration: getDuration(),\n isSuccess: false,\n isValid: true,\n })\n );\n },\n };\n}\n","import os from 'node:os';\nimport { platform, version as nodeVersion } from 'node:process';\nimport isCI from 'is-ci';\n\nexport function getEnvironmentInfo({\n cliVersion,\n flow,\n}: {\n cliVersion: string;\n flow: 'Sites' | 'Apps' | null;\n}) {\n return {\n ...(flow ? { flow } : {}),\n cliVersion,\n isCI,\n nodeVersion,\n osName: getOsName(),\n osVersion: os.release(),\n };\n}\n\nexport type EnvironmentInfo = ReturnType<typeof getEnvironmentInfo>;\n\n// https://stackoverflow.com/a/8684009\nfunction getOsName() {\n switch (platform) {\n case 'darwin':\n return 'mac';\n case 'win32':\n return 'windows';\n default:\n return 'linux';\n }\n}\n","export type { BiLogger } from '@wix/wix-bi-logger-client';\nexport { createBiLogger } from './create-bi-logger.js';\nexport { reportCommandStartEvent } from './command-bi-event.js';\nexport { addUserFields } from './add-user-fields.js';\n"],"mappings":";;oJAAAA,IAAA,OAAS,cAAAC,MAAkB,cAGpB,SAASC,EAAcC,EAAkBC,EAAgB,CAC9DD,EAAO,eAAeE,EAAkBD,CAAM,CAAC,CACjD,CAEO,SAASC,EAAkBD,EAAyC,CACzE,OAAKA,EAOE,CACL,WAAYA,EACZ,MAAOA,EACP,eAAgBA,EAChB,kBAAmBA,EACnB,kBAAmBA,CACrB,EAXS,CACL,WAAYH,EAAW,CACzB,CAUJ,CCtBAK,IAMA,OAAS,UAAAC,MAAc,eCNvBC,IAEA,IAAAC,EAAiB,SAFjB,OAAOC,MAAQ,UACf,OAAS,YAAAC,EAAU,WAAWC,MAAmB,eAG1C,SAASC,EAAmB,CACjC,WAAAC,EACA,KAAAC,CACF,EAGG,CACD,MAAO,CACL,GAAIA,EAAO,CAAE,KAAAA,CAAK,EAAI,CAAC,EACvB,WAAAD,EACA,OAAAE,QACA,YAAAJ,EACA,OAAQK,EAAU,EAClB,UAAWP,EAAG,QAAQ,CACxB,CACF,CAKA,SAASO,GAAY,CACnB,OAAQN,EAAU,CAChB,IAAK,SACH,MAAO,MACT,IAAK,QACH,MAAO,UACT,QACE,MAAO,OACX,CACF,CDlBA,IAAMO,EAAc,IAAM,KAAK,MAAMC,EAAO,EAAI,GAAI,EAE7C,SAASC,EAAwB,CACtC,SAAAC,EACA,QAAAC,EACA,KAAAC,EACA,WAAAC,EACA,UAAAC,EACA,WAAAC,EACA,YAAAC,CACF,EAQG,CACD,IAAMC,EAAUN,EAAQ,KAAK,EACvBO,EAAOP,EAAQ,KAEfQ,EAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,EACnCC,EAAmB,OAAO,YAC9B,OAAO,QAAQH,CAAO,EAAE,IAAI,CAAC,CAACI,EAAUC,CAAS,IAAM,CACrD,IAAMC,EAAQJ,EAAe,IAAIE,CAAQ,EAAI,aAAeC,EAC5D,MAAO,CAACD,EAAUE,CAAK,CACzB,CAAC,CACH,EAEMC,EAAgB,CACpB,QAASb,EAAQ,KAAK,EACtB,UAAWO,EAAK,KAAK,GAAG,EACxB,MAAO,OAAO,KAAKE,CAAgB,EAAE,OACjC,KAAK,UAAUA,CAAgB,EAC/B,EACN,EAEA,OAAKV,EAAS,OACZe,EAAiB,CACf,GAAGC,EAAmB,CAAE,WAAAb,EAAY,KAAAD,CAAK,CAAC,EAC1C,GAAGY,EACH,GAAIV,EAAY,CAAE,UAAAA,CAAU,EAAI,CAAC,EACjC,GAAIE,EAAc,CAAE,YAAa,KAAK,UAAUA,CAAW,CAAE,EAAI,CAAC,EAClE,QAAS,EACX,CAAC,CACH,EAEO,CACL,SAAU,CACHN,EAAS,OACZiB,EAAuB,CACrB,GAAGH,EACH,GAAIT,EAAa,CAAE,WAAY,KAAK,UAAUA,CAAU,CAAE,EAAI,CAAC,EAC/D,SAAUR,EAAY,EACtB,UAAW,GACX,QAAS,EACX,CAAC,CACH,CACF,EACA,OAAOqB,EAAgB,CACrB,IAAMC,EAAcC,EAAWF,CAAK,EAChC,CACE,UAAWG,EAAiBH,CAAK,EAAI,cAAgB,YACrD,UAAWA,EAAM,KACjB,aAAcA,EAAM,OACtB,EACAA,aAAiB,MACjB,CACE,UAAW,eACX,UAAWA,EAAM,KACjB,aAAcA,EAAM,OACtB,EACA,CACE,UAAW,eACX,aAAc,KAAK,UAAUA,CAAK,CACpC,EAEClB,EAAS,OACZiB,EAAuB,CACrB,GAAGH,EACH,GAAGK,EACH,GAAId,EAAa,CAAE,WAAY,KAAK,UAAUA,CAAU,CAAE,EAAI,CAAC,EAC/D,SAAUR,EAAY,EACtB,UAAW,GACX,QAAS,EACX,CAAC,CACH,CACF,CACF,CACF,CEzGAyB","names":["init_esm_shims","randomUUID","addUserFields","logger","userId","resolveUserFields","init_esm_shims","uptime","init_esm_shims","import_is_ci","os","platform","nodeVersion","getEnvironmentInfo","cliVersion","flow","isCI","getOsName","getDuration","uptime","reportCommandStartEvent","biLogger","command","flow","cliVersion","projectId","extensions","extraFields","options","args","privateOptions","sanitizedOptions","flagName","flagValue","value","commandFields","wixCliCliCommand","getEnvironmentInfo","wixCliCliCommandStatus","error","errorFields","isCliError","isCliSystemError","init_esm_shims"]}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
// src/utils.ts
|
|
2
|
+
import { dirname, sep } from "node:path";
|
|
3
|
+
import { AppStrategy } from "@wix/sdk";
|
|
4
|
+
var supportedMethods = ["GET", "POST", "PUT", "DELETE"];
|
|
5
|
+
function deriveTagName(elementPath) {
|
|
6
|
+
return dirname(elementPath).split(sep).at(-1);
|
|
7
|
+
}
|
|
8
|
+
function createAppStrategy(opts = {}) {
|
|
9
|
+
return AppStrategy({
|
|
10
|
+
...opts,
|
|
11
|
+
appId: import.meta.env.APP_ID,
|
|
12
|
+
appSecret: import.meta.env.APP_SECRET,
|
|
13
|
+
publicKey: import.meta.env.PUBLIC_KEY
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function isMethodSupported(method) {
|
|
17
|
+
return supportedMethods.includes(method);
|
|
18
|
+
}
|
|
19
|
+
function isAPI(value) {
|
|
20
|
+
return typeof value === "object" && value !== null && supportedMethods.some((method) => method in value);
|
|
21
|
+
}
|
|
22
|
+
function formatError(error) {
|
|
23
|
+
if (import.meta.env.DEV && error instanceof Error) {
|
|
24
|
+
return error.stack;
|
|
25
|
+
}
|
|
26
|
+
return "internal server error";
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/apiHandler.ts
|
|
30
|
+
var ApiHandler = class {
|
|
31
|
+
constructor(apis2, callsHandler) {
|
|
32
|
+
this.callsHandler = callsHandler;
|
|
33
|
+
this.apis = Object.entries(apis2).reduce(
|
|
34
|
+
(acc, [key, value]) => {
|
|
35
|
+
return {
|
|
36
|
+
...acc,
|
|
37
|
+
[deriveTagName(key)]: value
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
{}
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
apis;
|
|
44
|
+
async handle(name, request) {
|
|
45
|
+
const { method } = request;
|
|
46
|
+
if (!isMethodSupported(method)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (!name) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const mod = this.apis[name];
|
|
53
|
+
if (!mod) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const api = await mod();
|
|
57
|
+
if (!isAPI(api)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const handler = api[method];
|
|
61
|
+
if (!handler) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
if (!this.callsHandler) {
|
|
65
|
+
throw new Error("passing a `callsHandler` is required for running APIs");
|
|
66
|
+
}
|
|
67
|
+
const accessToken = request.headers.get("Authorization");
|
|
68
|
+
return this.callsHandler.run(accessToken, null, () => handler(request));
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/eventsHandler.ts
|
|
73
|
+
import { createClient } from "@wix/sdk";
|
|
74
|
+
var EventHandler = class {
|
|
75
|
+
constructor(events2, callsHandler) {
|
|
76
|
+
this.events = events2;
|
|
77
|
+
this.callsHandler = callsHandler;
|
|
78
|
+
this.wixClient = createClient({
|
|
79
|
+
auth: createAppStrategy()
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
|
+
wixClient;
|
|
84
|
+
registeredEvents = /* @__PURE__ */ new Map();
|
|
85
|
+
async initialize() {
|
|
86
|
+
this.wixClient.enableContext("global");
|
|
87
|
+
for (const [eventFilename, loadEventFile] of Object.entries(this.events)) {
|
|
88
|
+
const unbind = this.wixClient.webhooks.on(
|
|
89
|
+
"registered",
|
|
90
|
+
(eventDefinition) => {
|
|
91
|
+
const existingRegisteredEvents = this.registeredEvents.get(eventFilename) ?? [];
|
|
92
|
+
this.registeredEvents.set(eventFilename, [
|
|
93
|
+
...existingRegisteredEvents,
|
|
94
|
+
eventDefinition.type
|
|
95
|
+
]);
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
try {
|
|
99
|
+
await loadEventFile();
|
|
100
|
+
} finally {
|
|
101
|
+
unbind();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async handle(request) {
|
|
106
|
+
if (!this.callsHandler) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
"passing a `callsHandler` is required for running events"
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
const processedEvent = await this.wixClient.webhooks.parseRequest(request);
|
|
112
|
+
return this.callsHandler.run(
|
|
113
|
+
null,
|
|
114
|
+
processedEvent.instanceId,
|
|
115
|
+
() => this.wixClient.webhooks.executeHandlers(processedEvent)
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
getRegisteredEvents() {
|
|
119
|
+
const entries = Array.from(this.registeredEvents.entries());
|
|
120
|
+
return entries.reduce(
|
|
121
|
+
(acc, [filename, registeredEvents]) => {
|
|
122
|
+
return {
|
|
123
|
+
...acc,
|
|
124
|
+
[filename]: registeredEvents
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
{}
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
// src/servicePluginHandler.ts
|
|
133
|
+
import { createClient as createClient2 } from "@wix/sdk";
|
|
134
|
+
var ServicePluginHandler = class {
|
|
135
|
+
constructor(servicePlugins2, callsHandler) {
|
|
136
|
+
this.servicePlugins = servicePlugins2;
|
|
137
|
+
this.callsHandler = callsHandler;
|
|
138
|
+
this.wixClient = createClient2({
|
|
139
|
+
auth: createAppStrategy()
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
|
+
wixClient;
|
|
144
|
+
registeredServicePlugins = /* @__PURE__ */ new Map();
|
|
145
|
+
async initialize() {
|
|
146
|
+
this.wixClient.enableContext("global");
|
|
147
|
+
for (const [servicePluginFilename, loadServicePluginFile] of Object.entries(
|
|
148
|
+
this.servicePlugins
|
|
149
|
+
)) {
|
|
150
|
+
const unbind = this.wixClient.servicePlugins.on(
|
|
151
|
+
"registered",
|
|
152
|
+
(servicePluginDefinition) => {
|
|
153
|
+
this.registeredServicePlugins.set(
|
|
154
|
+
servicePluginFilename,
|
|
155
|
+
servicePluginDefinition.componentType
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
try {
|
|
160
|
+
await loadServicePluginFile();
|
|
161
|
+
} finally {
|
|
162
|
+
unbind();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
getRegisteredServicePlugins() {
|
|
167
|
+
const entries = Array.from(this.registeredServicePlugins.entries());
|
|
168
|
+
return entries.reduce(
|
|
169
|
+
(acc, [filename, registeredServicePlugin]) => {
|
|
170
|
+
return {
|
|
171
|
+
...acc,
|
|
172
|
+
[filename]: registeredServicePlugin
|
|
173
|
+
};
|
|
174
|
+
},
|
|
175
|
+
{}
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
async handle(request) {
|
|
179
|
+
if (!this.callsHandler) {
|
|
180
|
+
throw new Error(
|
|
181
|
+
"passing a `callsHandler` is required for running service plugins"
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
const processedRequest = await this.wixClient.servicePlugins.parseRequest(
|
|
185
|
+
request
|
|
186
|
+
);
|
|
187
|
+
const { instanceId } = processedRequest.metadata;
|
|
188
|
+
const servicePluginData = await this.callsHandler.run(
|
|
189
|
+
null,
|
|
190
|
+
instanceId,
|
|
191
|
+
() => this.wixClient.servicePlugins.executeHandler(
|
|
192
|
+
processedRequest,
|
|
193
|
+
request.url
|
|
194
|
+
)
|
|
195
|
+
);
|
|
196
|
+
return Response.json(servicePluginData);
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
// src/callsHandler.ts
|
|
201
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
202
|
+
import { createClient as createClient3 } from "@wix/sdk";
|
|
203
|
+
|
|
204
|
+
// ../cli-test-overrides/src/unsafe.ts
|
|
205
|
+
import process from "node:process";
|
|
206
|
+
|
|
207
|
+
// ../cli-test-overrides/src/constants.ts
|
|
208
|
+
var TEST_OVERRIDES_ENV_VAR = "WIX_CLI_TEST_OVERRIDES";
|
|
209
|
+
|
|
210
|
+
// ../cli-test-overrides/src/unsafe.ts
|
|
211
|
+
function getTestOverrides() {
|
|
212
|
+
const rawOverrides = process.env[TEST_OVERRIDES_ENV_VAR];
|
|
213
|
+
if (!rawOverrides) {
|
|
214
|
+
return {};
|
|
215
|
+
}
|
|
216
|
+
return JSON.parse(rawOverrides);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// src/callsHandler.ts
|
|
220
|
+
var CallsHandler = class {
|
|
221
|
+
wixClient;
|
|
222
|
+
elevatedWixClient;
|
|
223
|
+
asyncLocalStorage = new AsyncLocalStorage();
|
|
224
|
+
constructor() {
|
|
225
|
+
this.wixClient = createClient3({
|
|
226
|
+
auth: {
|
|
227
|
+
getAuthHeaders: (host) => {
|
|
228
|
+
const store = this.asyncLocalStorage.getStore();
|
|
229
|
+
if (!store || !store.auth) {
|
|
230
|
+
throw new Error("Cannot find an authentication strategy");
|
|
231
|
+
}
|
|
232
|
+
return store.auth.getAuthHeaders(host);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
this.elevatedWixClient = createClient3({
|
|
237
|
+
auth: {
|
|
238
|
+
getAuthHeaders: async (host) => {
|
|
239
|
+
const store = this.asyncLocalStorage.getStore();
|
|
240
|
+
if (!store) {
|
|
241
|
+
throw new Error("Cannot find an authentication strategy");
|
|
242
|
+
}
|
|
243
|
+
if (store.elevatedAuth) {
|
|
244
|
+
return store.elevatedAuth.getAuthHeaders(host);
|
|
245
|
+
}
|
|
246
|
+
if (!store.auth) {
|
|
247
|
+
throw new Error("Cannot find an elevated authentication strategy");
|
|
248
|
+
}
|
|
249
|
+
return store.auth.elevated().then((elevatedAuth) => elevatedAuth.getAuthHeaders(host));
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
async initialize() {
|
|
255
|
+
this.wixClient.enableContext("global");
|
|
256
|
+
this.elevatedWixClient.enableContext("global", { elevated: true });
|
|
257
|
+
}
|
|
258
|
+
async run(accessToken, instanceId, fn) {
|
|
259
|
+
const { sdkAuthServerBaseUrl: authServerBaseUrl } = getTestOverrides();
|
|
260
|
+
const auth = accessToken ? createAppStrategy({ accessToken, authServerBaseUrl }) : null;
|
|
261
|
+
const elevatedAuth = instanceId ? createAppStrategy({ instanceId, authServerBaseUrl }) : null;
|
|
262
|
+
return this.asyncLocalStorage.run({ auth, elevatedAuth }, fn);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// src/initialize.ts
|
|
267
|
+
var logError = (error) => {
|
|
268
|
+
console.error(error instanceof Error ? error.stack : error);
|
|
269
|
+
};
|
|
270
|
+
async function initialize({
|
|
271
|
+
apis: apis2,
|
|
272
|
+
events: events2,
|
|
273
|
+
servicePlugins: servicePlugins2
|
|
274
|
+
}) {
|
|
275
|
+
const callsHandler = new CallsHandler();
|
|
276
|
+
const apiHandler = new ApiHandler(apis2, callsHandler);
|
|
277
|
+
const eventsHandler = new EventHandler(events2, callsHandler);
|
|
278
|
+
const servicePluginHandler = new ServicePluginHandler(
|
|
279
|
+
servicePlugins2,
|
|
280
|
+
callsHandler
|
|
281
|
+
);
|
|
282
|
+
await eventsHandler.initialize();
|
|
283
|
+
await servicePluginHandler.initialize();
|
|
284
|
+
await callsHandler.initialize();
|
|
285
|
+
return {
|
|
286
|
+
async fetch(request) {
|
|
287
|
+
if (request.method === "OPTIONS") {
|
|
288
|
+
return new Response("{}", {
|
|
289
|
+
status: 200,
|
|
290
|
+
headers: {
|
|
291
|
+
"Access-Control-Allow-Origin": "*",
|
|
292
|
+
"Access-Control-Allow-Methods": "*",
|
|
293
|
+
"Access-Control-Allow-Headers": "Authorization,Content-Type"
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
const url = new URL(request.url);
|
|
298
|
+
const [endpointName, pathName] = url.pathname.split("/").filter(Boolean);
|
|
299
|
+
if (import.meta.env.DEV) {
|
|
300
|
+
if (endpointName === "__get-registered-events") {
|
|
301
|
+
return Response.json(eventsHandler.getRegisteredEvents());
|
|
302
|
+
}
|
|
303
|
+
if (endpointName === "__get-registered-service-plugins") {
|
|
304
|
+
return Response.json(
|
|
305
|
+
servicePluginHandler.getRegisteredServicePlugins()
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (endpointName === "service-plugins") {
|
|
310
|
+
return servicePluginHandler.handle(request).catch((error) => {
|
|
311
|
+
logError(error);
|
|
312
|
+
return new Response(formatError(error), { status: 500 });
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
if (endpointName === "webhooks") {
|
|
316
|
+
return eventsHandler.handle(request).then(() => {
|
|
317
|
+
return new Response("ok");
|
|
318
|
+
}).catch((error) => {
|
|
319
|
+
logError(error);
|
|
320
|
+
return new Response(formatError(error), { status: 500 });
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
if (endpointName === "functions") {
|
|
324
|
+
const response = await apiHandler.handle(pathName, request).catch((error) => {
|
|
325
|
+
logError(error);
|
|
326
|
+
return new Response(formatError(error), { status: 500 });
|
|
327
|
+
}).then((response2) => {
|
|
328
|
+
if (response2) {
|
|
329
|
+
response2.headers.append("Access-Control-Allow-Origin", "*");
|
|
330
|
+
response2.headers.append("Access-Control-Allow-Methods", "*");
|
|
331
|
+
response2.headers.append("Access-Control-Allow-Headers", "*");
|
|
332
|
+
return response2;
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
if (response) {
|
|
336
|
+
return response;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return new Response("not found", { status: 404 });
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// src/globPatterns.ts
|
|
345
|
+
var apis = import.meta.glob("/src/backend/api/*/api.ts", {
|
|
346
|
+
eager: false
|
|
347
|
+
});
|
|
348
|
+
var events = import.meta.glob("/src/backend/events/*/event.ts", {
|
|
349
|
+
eager: false
|
|
350
|
+
});
|
|
351
|
+
var servicePlugins = import.meta.glob(
|
|
352
|
+
"/src/backend/service-plugins/*/*/plugin.ts",
|
|
353
|
+
{
|
|
354
|
+
eager: false
|
|
355
|
+
}
|
|
356
|
+
);
|
|
357
|
+
|
|
358
|
+
// src/entry.ts
|
|
359
|
+
var entry_default = await initialize({ apis, events, servicePlugins });
|
|
360
|
+
if (import.meta.hot) {
|
|
361
|
+
import.meta.hot.accept();
|
|
362
|
+
}
|
|
363
|
+
export {
|
|
364
|
+
entry_default as default
|
|
365
|
+
};
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// src/eventsHandler.ts
|
|
2
|
+
import { createClient } from "@wix/sdk";
|
|
3
|
+
|
|
4
|
+
// src/utils.ts
|
|
5
|
+
import { AppStrategy } from "@wix/sdk";
|
|
6
|
+
function createAppStrategy(opts = {}) {
|
|
7
|
+
return AppStrategy({
|
|
8
|
+
...opts,
|
|
9
|
+
appId: import.meta.env.APP_ID,
|
|
10
|
+
appSecret: import.meta.env.APP_SECRET,
|
|
11
|
+
publicKey: import.meta.env.PUBLIC_KEY
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// src/eventsHandler.ts
|
|
16
|
+
var EventHandler = class {
|
|
17
|
+
constructor(events2, callsHandler) {
|
|
18
|
+
this.events = events2;
|
|
19
|
+
this.callsHandler = callsHandler;
|
|
20
|
+
this.wixClient = createClient({
|
|
21
|
+
auth: createAppStrategy()
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
wixClient;
|
|
26
|
+
registeredEvents = /* @__PURE__ */ new Map();
|
|
27
|
+
async initialize() {
|
|
28
|
+
this.wixClient.enableContext("global");
|
|
29
|
+
for (const [eventFilename, loadEventFile] of Object.entries(this.events)) {
|
|
30
|
+
const unbind = this.wixClient.webhooks.on(
|
|
31
|
+
"registered",
|
|
32
|
+
(eventDefinition) => {
|
|
33
|
+
const existingRegisteredEvents = this.registeredEvents.get(eventFilename) ?? [];
|
|
34
|
+
this.registeredEvents.set(eventFilename, [
|
|
35
|
+
...existingRegisteredEvents,
|
|
36
|
+
eventDefinition.type
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
try {
|
|
41
|
+
await loadEventFile();
|
|
42
|
+
} finally {
|
|
43
|
+
unbind();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async handle(request) {
|
|
48
|
+
if (!this.callsHandler) {
|
|
49
|
+
throw new Error(
|
|
50
|
+
"passing a `callsHandler` is required for running events"
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
const processedEvent = await this.wixClient.webhooks.parseRequest(request);
|
|
54
|
+
return this.callsHandler.run(
|
|
55
|
+
null,
|
|
56
|
+
processedEvent.instanceId,
|
|
57
|
+
() => this.wixClient.webhooks.executeHandlers(processedEvent)
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
getRegisteredEvents() {
|
|
61
|
+
const entries = Array.from(this.registeredEvents.entries());
|
|
62
|
+
return entries.reduce(
|
|
63
|
+
(acc, [filename, registeredEvents]) => {
|
|
64
|
+
return {
|
|
65
|
+
...acc,
|
|
66
|
+
[filename]: registeredEvents
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
{}
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// src/servicePluginHandler.ts
|
|
75
|
+
import { createClient as createClient2 } from "@wix/sdk";
|
|
76
|
+
var ServicePluginHandler = class {
|
|
77
|
+
constructor(servicePlugins2, callsHandler) {
|
|
78
|
+
this.servicePlugins = servicePlugins2;
|
|
79
|
+
this.callsHandler = callsHandler;
|
|
80
|
+
this.wixClient = createClient2({
|
|
81
|
+
auth: createAppStrategy()
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
|
+
wixClient;
|
|
86
|
+
registeredServicePlugins = /* @__PURE__ */ new Map();
|
|
87
|
+
async initialize() {
|
|
88
|
+
this.wixClient.enableContext("global");
|
|
89
|
+
for (const [servicePluginFilename, loadServicePluginFile] of Object.entries(
|
|
90
|
+
this.servicePlugins
|
|
91
|
+
)) {
|
|
92
|
+
const unbind = this.wixClient.servicePlugins.on(
|
|
93
|
+
"registered",
|
|
94
|
+
(servicePluginDefinition) => {
|
|
95
|
+
this.registeredServicePlugins.set(
|
|
96
|
+
servicePluginFilename,
|
|
97
|
+
servicePluginDefinition.componentType
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
try {
|
|
102
|
+
await loadServicePluginFile();
|
|
103
|
+
} finally {
|
|
104
|
+
unbind();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
getRegisteredServicePlugins() {
|
|
109
|
+
const entries = Array.from(this.registeredServicePlugins.entries());
|
|
110
|
+
return entries.reduce(
|
|
111
|
+
(acc, [filename, registeredServicePlugin]) => {
|
|
112
|
+
return {
|
|
113
|
+
...acc,
|
|
114
|
+
[filename]: registeredServicePlugin
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
{}
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
async handle(request) {
|
|
121
|
+
if (!this.callsHandler) {
|
|
122
|
+
throw new Error(
|
|
123
|
+
"passing a `callsHandler` is required for running service plugins"
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
const processedRequest = await this.wixClient.servicePlugins.parseRequest(
|
|
127
|
+
request
|
|
128
|
+
);
|
|
129
|
+
const { instanceId } = processedRequest.metadata;
|
|
130
|
+
const servicePluginData = await this.callsHandler.run(
|
|
131
|
+
null,
|
|
132
|
+
instanceId,
|
|
133
|
+
() => this.wixClient.servicePlugins.executeHandler(
|
|
134
|
+
processedRequest,
|
|
135
|
+
request.url
|
|
136
|
+
)
|
|
137
|
+
);
|
|
138
|
+
return Response.json(servicePluginData);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// src/globPatterns.ts
|
|
143
|
+
var apis = import.meta.glob("/src/backend/api/*/api.ts", {
|
|
144
|
+
eager: false
|
|
145
|
+
});
|
|
146
|
+
var events = import.meta.glob("/src/backend/events/*/event.ts", {
|
|
147
|
+
eager: false
|
|
148
|
+
});
|
|
149
|
+
var servicePlugins = import.meta.glob(
|
|
150
|
+
"/src/backend/service-plugins/*/*/plugin.ts",
|
|
151
|
+
{
|
|
152
|
+
eager: false
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
// src/getRegisteredExtensions.ts
|
|
157
|
+
var eventsHandler = new EventHandler(events);
|
|
158
|
+
var servicePluginHandler = new ServicePluginHandler(servicePlugins);
|
|
159
|
+
await eventsHandler.initialize();
|
|
160
|
+
await servicePluginHandler.initialize();
|
|
161
|
+
var getRegisteredEvents = async () => eventsHandler.getRegisteredEvents();
|
|
162
|
+
var getRegisteredServicePlugins = async () => servicePluginHandler.getRegisteredServicePlugins();
|
|
163
|
+
export {
|
|
164
|
+
getRegisteredEvents,
|
|
165
|
+
getRegisteredServicePlugins
|
|
166
|
+
};
|