@awiki/dsh-plugin 0.2.5 → 0.3.0-rc.2
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 +69 -28
- package/README.zh.md +60 -21
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/cordis.patch.yml +0 -8
- package/lib/client.js +6755 -2022
- package/lib/client.js.map +1 -1
- package/lib/index.js +1321 -72
- package/lib/model-proxy-contract.js +8 -1
- package/lib/provider.js +3 -1
- package/lib/{sdk-adapter-DKgkyApB.mjs → sdk-adapter-BIbsJmRj.mjs} +245 -4
- package/lib/typert.host.js +944 -57
- package/lib/typert.remote-client.d.ts +37 -1
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +944 -57
- package/lib/types/client/AwikiGroupAccessNotice.d.ts +12 -0
- package/lib/types/client/AwikiGroupAccessNotice.d.ts.map +1 -0
- package/lib/types/client/AwikiGroupAccessNotice.js +31 -0
- package/lib/types/client/AwikiGroupAccessNotice.js.map +1 -0
- package/lib/types/client/AwikiGroupDetails.d.ts +23 -0
- package/lib/types/client/AwikiGroupDetails.d.ts.map +1 -0
- package/lib/types/client/AwikiGroupDetails.js +144 -0
- package/lib/types/client/AwikiGroupDetails.js.map +1 -0
- package/lib/types/client/AwikiIdentityAccess.d.ts +22 -0
- package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -0
- package/lib/types/client/AwikiIdentityAccess.js +156 -0
- package/lib/types/client/AwikiIdentityAccess.js.map +1 -0
- package/lib/types/client/AwikiIdentityPage.d.ts +11 -0
- package/lib/types/client/AwikiIdentityPage.d.ts.map +1 -0
- package/lib/types/client/AwikiIdentityPage.js +8 -0
- package/lib/types/client/AwikiIdentityPage.js.map +1 -0
- package/lib/types/client/AwikiMail.d.ts +2 -1
- package/lib/types/client/AwikiMail.d.ts.map +1 -1
- package/lib/types/client/AwikiMail.js +157 -33
- package/lib/types/client/AwikiMail.js.map +1 -1
- package/lib/types/client/AwikiOnboarding.d.ts.map +1 -1
- package/lib/types/client/AwikiOnboarding.js +29 -9
- package/lib/types/client/AwikiOnboarding.js.map +1 -1
- package/lib/types/client/AwikiOverlay.d.ts +0 -5
- package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
- package/lib/types/client/AwikiOverlay.js +202 -129
- package/lib/types/client/AwikiOverlay.js.map +1 -1
- package/lib/types/client/AwikiProfileCard.d.ts +9 -0
- package/lib/types/client/AwikiProfileCard.d.ts.map +1 -0
- package/lib/types/client/AwikiProfileCard.js +90 -0
- package/lib/types/client/AwikiProfileCard.js.map +1 -0
- package/lib/types/client/AwikiRecoveryForm.d.ts +27 -0
- package/lib/types/client/AwikiRecoveryForm.d.ts.map +1 -0
- package/lib/types/client/AwikiRecoveryForm.js +152 -0
- package/lib/types/client/AwikiRecoveryForm.js.map +1 -0
- package/lib/types/client/AwikiSettingsSection.d.ts +0 -2
- package/lib/types/client/AwikiSettingsSection.d.ts.map +1 -1
- package/lib/types/client/AwikiSettingsSection.js +18 -16
- package/lib/types/client/AwikiSettingsSection.js.map +1 -1
- package/lib/types/client/MentionText.d.ts +7 -0
- package/lib/types/client/MentionText.d.ts.map +1 -0
- package/lib/types/client/MentionText.js +10 -0
- package/lib/types/client/MentionText.js.map +1 -0
- package/lib/types/client/controller.d.ts +131 -3
- package/lib/types/client/controller.d.ts.map +1 -1
- package/lib/types/client/controller.js +908 -29
- package/lib/types/client/controller.js.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +24 -4
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/mail-list-cache.d.ts +15 -0
- package/lib/types/client/mail-list-cache.d.ts.map +1 -0
- package/lib/types/client/mail-list-cache.js +212 -0
- package/lib/types/client/mail-list-cache.js.map +1 -0
- package/lib/types/client/mentions.d.ts +51 -0
- package/lib/types/client/mentions.d.ts.map +1 -0
- package/lib/types/client/mentions.js +165 -0
- package/lib/types/client/mentions.js.map +1 -0
- package/lib/types/client/model-proxy-controller.d.ts +4 -0
- package/lib/types/client/model-proxy-controller.d.ts.map +1 -1
- package/lib/types/client/model-proxy-controller.js +68 -3
- package/lib/types/client/model-proxy-controller.js.map +1 -1
- package/lib/types/client/recharge-availability.d.ts +1 -1
- package/lib/types/client/recharge-availability.d.ts.map +1 -1
- package/lib/types/client/recharge-availability.js +1 -1
- package/lib/types/client/recharge-availability.js.map +1 -1
- package/lib/types/client/settings-locales.d.ts +1 -1
- package/lib/types/client/settings-locales.d.ts.map +1 -1
- package/lib/types/client/settings-locales.js +14 -8
- package/lib/types/client/settings-locales.js.map +1 -1
- package/lib/types/client/slots.d.ts +27 -2
- package/lib/types/client/slots.d.ts.map +1 -1
- package/lib/types/conversation-preferences.d.ts +20 -0
- package/lib/types/conversation-preferences.d.ts.map +1 -0
- package/lib/types/conversation-preferences.js +294 -0
- package/lib/types/conversation-preferences.js.map +1 -0
- package/lib/types/index.d.ts +45 -6
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +562 -23
- package/lib/types/index.js.map +1 -1
- package/lib/types/model-proxy-contract.d.ts +6 -0
- package/lib/types/model-proxy-contract.d.ts.map +1 -1
- package/lib/types/model-proxy-contract.js +6 -0
- package/lib/types/model-proxy-contract.js.map +1 -1
- package/lib/types/provider-api.d.ts +29 -1
- package/lib/types/provider-api.d.ts.map +1 -1
- package/lib/types/provider.d.ts.map +1 -1
- package/lib/types/provider.js +2 -0
- package/lib/types/provider.js.map +1 -1
- package/lib/types/sdk-adapter.d.ts +18 -1
- package/lib/types/sdk-adapter.d.ts.map +1 -1
- package/lib/types/sdk-adapter.js +277 -4
- package/lib/types/sdk-adapter.js.map +1 -1
- package/lib/types/sent-mail-store.d.ts +22 -0
- package/lib/types/sent-mail-store.d.ts.map +1 -0
- package/lib/types/sent-mail-store.js +246 -0
- package/lib/types/sent-mail-store.js.map +1 -0
- package/lib/types/types.d.ts +183 -2
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/package.json +15 -26
- package/lib/model-proxy.js +0 -383
- package/lib/types/client/model-account-settings-availability.d.ts +0 -4
- package/lib/types/client/model-account-settings-availability.d.ts.map +0 -1
- package/lib/types/client/model-account-settings-availability.js +0 -4
- package/lib/types/client/model-account-settings-availability.js.map +0 -1
- package/lib/types/model-proxy.d.ts +0 -14
- package/lib/types/model-proxy.d.ts.map +0 -1
- package/lib/types/model-proxy.js +0 -371
- package/lib/types/model-proxy.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Client release gate for AWiki account recharge. */
|
|
2
2
|
/** Change only this value when the public recharge flow is ready to ship. */
|
|
3
|
-
export declare const AWIKI_RECHARGE_ENABLED =
|
|
3
|
+
export declare const AWIKI_RECHARGE_ENABLED = true;
|
|
4
4
|
/** Stable internal error used when a caller bypasses the guarded UI. */
|
|
5
5
|
export declare const AWIKI_RECHARGE_DISABLED_ERROR = "awiki_recharge_disabled";
|
|
6
6
|
//# sourceMappingURL=recharge-availability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recharge-availability.d.ts","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"recharge-availability.d.ts","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAE1C,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,4BAA4B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Client release gate for AWiki account recharge. */
|
|
2
2
|
/** Change only this value when the public recharge flow is ready to ship. */
|
|
3
|
-
export const AWIKI_RECHARGE_ENABLED =
|
|
3
|
+
export const AWIKI_RECHARGE_ENABLED = true;
|
|
4
4
|
/** Stable internal error used when a caller bypasses the guarded UI. */
|
|
5
5
|
export const AWIKI_RECHARGE_DISABLED_ERROR = 'awiki_recharge_disabled';
|
|
6
6
|
//# sourceMappingURL=recharge-availability.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recharge-availability.js","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,
|
|
1
|
+
{"version":3,"file":"recharge-availability.js","sourceRoot":"","sources":["../../../src/client/recharge-availability.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Bilingual copy for the AWiki settings section. */
|
|
2
2
|
/** Keys owned by the AWiki settings page. */
|
|
3
|
-
export type AwikiSettingsKey = 'nav' | 'intro' | 'tabAccount' | 'tabUsage' | 'tabAdvanced' | 'accountBalance' | 'billingMode' | 'billingStrict' | 'billingBypass' | 'billingBypassNotice' | 'modelStatus' | 'statusEnabled' | 'statusDisabled' | 'enableModels' | 'disableModels' | 'enablingModels' | 'disablingModels' | 'modelsEnabled' | 'modelsDisabled' | 'modelActionFailed' | 'insufficientBalanceTitle' | 'insufficientBalanceDescription' | 'modelAccessUnavailableTitle' | 'modelAccessUnavailable' | 'modelAccountLoading' | 'modelAccountUnavailable' | 'paymentsUnavailable' | 'rechargeComingSoonTitle' | 'rechargeComingSoonDescription' | 'rechargeComingSoonAcknowledge' | 'rechargeComingSoonClose' | 'rechargeAmount' | 'createRecharge' | 'creatingRecharge' | 'invalidRechargeAmount' | 'rechargeCreated' | 'rechargeFailed' | 'rechargePaid' | 'rechargeClosed' | 'rechargeStatusFailed' | 'paymentWindowFailed' | 'paymentQrAlt' | 'paymentQrHint' | 'paymentQrFailed' | 'pendingRechargeTitle' | 'pendingRechargeDescription' | 'pendingRechargeLimit' | 'continuePayment' | 'changeRechargeAmount' | 'cancelRechargeDialogTitle' | 'cancelRechargeDialogDescription' | 'cancelRechargeWarning' | 'confirmCancelRecharge' | 'cancellingRecharge' | 'rechargeCancelled' | 'rechargeCancelFailed' | 'refreshPaymentStatus' | 'refreshingPaymentStatus' | 'rechargeOrderStatus' | 'orderPending' | 'orderPaid' | 'orderClosed' | 'usageLoading' | 'usageDescription' | 'usageDescriptionBypass' | 'reloadUsage' | 'usageEmpty' | 'usageTokens' | 'usageCalculated' | 'usageCharged' | 'usageNoPrice' | 'onboardingUseApiKey' | 'onboardingLater' | 'onboardingClose' | 'onboardingConnectTitle' | 'onboardingIdentityUnavailable' | 'onboardingModelTitle' | 'onboardingRegistrationDescription' | 'onboardingRestoreTitle' | 'onboardingRestoreDescription' | 'onboardingRestore' | 'onboardingEnableTitle' | 'onboardingBypassDescription' | 'onboardingStrictDescription' | 'onboardingInsufficientBalanceDescription' | 'onboardingPendingRechargeDescription' | 'goToRecharge' | 'identityLoading' | 'identitySignedOutRequired' | 'identityRegistrationRequired' | 'identityRestoring' | 'domainLabel' | 'domainDescription' | 'defaultValue' | 'save' | 'saving' | 'reset' | 'saved' | 'restartNotice' | 'identityNotice' | 'invalidDomain' | 'saveFailed' | 'loading' | 'unavailable' | 'readOnly' | 'dangerTitle' | 'dangerDescription' | 'clearLocalData' | 'clearDialogTitle' | 'clearDialogDescription' | 'clearScope' | 'clearRemoteNotice' | 'clearConfirmationLabel' | 'clearConfirmationPhrase' | 'clearConfirm' | 'clearing' | 'clearSucceeded' | 'clearFailed' | 'cancel';
|
|
3
|
+
export type AwikiSettingsKey = 'nav' | 'intro' | 'tabAccount' | 'tabUsage' | 'tabAdvanced' | 'accountBalance' | 'billingMode' | 'billingStrict' | 'billingBypass' | 'billingBypassNotice' | 'modelStatus' | 'statusEnabled' | 'statusDisabled' | 'enableModels' | 'disableModels' | 'enablingModels' | 'disablingModels' | 'modelsEnabled' | 'modelsDisabled' | 'modelActionFailed' | 'insufficientBalanceTitle' | 'insufficientBalanceDescription' | 'modelAccessUnavailableTitle' | 'modelAccessUnavailable' | 'modelAccountLoading' | 'modelAccountUnavailable' | 'paymentsUnavailable' | 'rechargeComingSoonTitle' | 'rechargeComingSoonDescription' | 'rechargeComingSoonAcknowledge' | 'rechargeComingSoonClose' | 'rechargeAmount' | 'createRecharge' | 'creatingRecharge' | 'invalidRechargeAmount' | 'rechargeCreated' | 'rechargeFailed' | 'rechargePaid' | 'rechargeClosed' | 'rechargeStatusFailed' | 'paymentWindowFailed' | 'paymentQrAlt' | 'paymentQrHint' | 'paymentQrFailed' | 'pendingRechargeTitle' | 'pendingRechargeDescription' | 'pendingRechargeLimit' | 'continuePayment' | 'changeRechargeAmount' | 'cancelRechargeDialogTitle' | 'cancelRechargeDialogDescription' | 'cancelRechargeWarning' | 'confirmCancelRecharge' | 'cancellingRecharge' | 'rechargeCancelled' | 'rechargeCancelFailed' | 'refreshPaymentStatus' | 'refreshingPaymentStatus' | 'rechargeOrderStatus' | 'orderPending' | 'orderPaid' | 'orderClosed' | 'usageLoading' | 'usageDescription' | 'usageDescriptionBypass' | 'reloadUsage' | 'usageEmpty' | 'usageTokens' | 'usageCalculated' | 'usageCharged' | 'usageNoPrice' | 'onboardingUseApiKey' | 'onboardingLater' | 'onboardingClose' | 'onboardingConnectTitle' | 'onboardingIdentityUnavailable' | 'onboardingModelTitle' | 'onboardingRegistrationDescription' | 'onboardingRestoreTitle' | 'onboardingRestoreDescription' | 'onboardingRecoveryRequiredTitle' | 'onboardingRecoveryRequiredDescription' | 'onboardingRestore' | 'onboardingEnableTitle' | 'onboardingBypassDescription' | 'onboardingStrictDescription' | 'onboardingInsufficientBalanceDescription' | 'onboardingPendingRechargeDescription' | 'goToRecharge' | 'identityLoading' | 'identitySignedOutRequired' | 'identityRegistrationRequired' | 'identityRecoveryRequired' | 'identityRestoring' | 'domainLabel' | 'domainDescription' | 'defaultValue' | 'save' | 'saving' | 'reset' | 'saved' | 'restartNotice' | 'identityNotice' | 'invalidDomain' | 'saveFailed' | 'loading' | 'unavailable' | 'readOnly' | 'dangerTitle' | 'dangerDescription' | 'clearLocalData' | 'clearDialogTitle' | 'clearDialogDescription' | 'clearScope' | 'clearRemoteNotice' | 'clearConfirmationLabel' | 'clearConfirmationPhrase' | 'clearConfirm' | 'clearing' | 'clearSucceeded' | 'clearFailed' | 'cancel';
|
|
4
4
|
/** Simplified Chinese dictionary. */
|
|
5
5
|
export declare const zh: Record<AwikiSettingsKey, string>;
|
|
6
6
|
/** English dictionary. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-locales.d.ts","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,OAAO,GACP,YAAY,GACZ,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,0BAA0B,GAC1B,gCAAgC,GAChC,6BAA6B,GAC7B,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,yBAAyB,GACzB,+BAA+B,GAC/B,+BAA+B,GAC/B,yBAAyB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,sBAAsB,GACtB,4BAA4B,GAC5B,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,2BAA2B,GAC3B,iCAAiC,GACjC,uBAAuB,GACvB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,yBAAyB,GACzB,qBAAqB,GACrB,cAAc,GACd,WAAW,GACX,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,wBAAwB,GACxB,+BAA+B,GAC/B,sBAAsB,GACtB,mCAAmC,GACnC,wBAAwB,GACxB,8BAA8B,GAC9B,mBAAmB,GACnB,uBAAuB,GACvB,6BAA6B,GAC7B,6BAA6B,GAC7B,0CAA0C,GAC1C,sCAAsC,GACtC,cAAc,GACd,iBAAiB,GACjB,2BAA2B,GAC3B,8BAA8B,GAC9B,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,SAAS,GACT,aAAa,GACb,UAAU,GACV,aAAa,GACb,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,YAAY,GACZ,mBAAmB,GACnB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,QAAQ,CAAA;AAEZ,qCAAqC;AACrC,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"settings-locales.d.ts","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,6CAA6C;AAC7C,MAAM,MAAM,gBAAgB,GACxB,KAAK,GACL,OAAO,GACP,YAAY,GACZ,UAAU,GACV,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,eAAe,GACf,qBAAqB,GACrB,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,eAAe,GACf,gBAAgB,GAChB,mBAAmB,GACnB,0BAA0B,GAC1B,gCAAgC,GAChC,6BAA6B,GAC7B,wBAAwB,GACxB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,yBAAyB,GACzB,+BAA+B,GAC/B,+BAA+B,GAC/B,yBAAyB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,sBAAsB,GACtB,qBAAqB,GACrB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,sBAAsB,GACtB,4BAA4B,GAC5B,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,2BAA2B,GAC3B,iCAAiC,GACjC,uBAAuB,GACvB,uBAAuB,GACvB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,yBAAyB,GACzB,qBAAqB,GACrB,cAAc,GACd,WAAW,GACX,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,wBAAwB,GACxB,aAAa,GACb,YAAY,GACZ,aAAa,GACb,iBAAiB,GACjB,cAAc,GACd,cAAc,GACd,qBAAqB,GACrB,iBAAiB,GACjB,iBAAiB,GACjB,wBAAwB,GACxB,+BAA+B,GAC/B,sBAAsB,GACtB,mCAAmC,GACnC,wBAAwB,GACxB,8BAA8B,GAC9B,iCAAiC,GACjC,uCAAuC,GACvC,mBAAmB,GACnB,uBAAuB,GACvB,6BAA6B,GAC7B,6BAA6B,GAC7B,0CAA0C,GAC1C,sCAAsC,GACtC,cAAc,GACd,iBAAiB,GACjB,2BAA2B,GAC3B,8BAA8B,GAC9B,0BAA0B,GAC1B,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,MAAM,GACN,QAAQ,GACR,OAAO,GACP,OAAO,GACP,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,YAAY,GACZ,SAAS,GACT,aAAa,GACb,UAAU,GACV,aAAa,GACb,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,YAAY,GACZ,mBAAmB,GACnB,wBAAwB,GACxB,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,QAAQ,CAAA;AAEZ,qCAAqC;AACrC,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CA2H/C,CAAA;AAED,0BAA0B;AAC1B,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CA2H/C,CAAA;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAU,kBAAkB;QAC1B,gBAAgB,EAAE,gBAAgB,CAAA;KACnC;CACF"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/** Simplified Chinese dictionary. */
|
|
3
3
|
export const zh = {
|
|
4
4
|
nav: 'AWiki',
|
|
5
|
-
intro: '管理 AWiki
|
|
5
|
+
intro: '管理 AWiki 托管模型账户、用量和身份高级设置。',
|
|
6
6
|
tabAccount: '账户与充值',
|
|
7
7
|
tabUsage: '用量明细',
|
|
8
8
|
tabAdvanced: '高级设置',
|
|
@@ -81,6 +81,8 @@ export const zh = {
|
|
|
81
81
|
onboardingRegistrationDescription: '创建或使用当前设备的 AWiki 身份,即可通过 AWiki 托管代理服务访问 DeepSeek 模型。',
|
|
82
82
|
onboardingRestoreTitle: '恢复 AWiki 身份',
|
|
83
83
|
onboardingRestoreDescription: '这台设备保留了一个已退出的 AWiki 身份。恢复后可以继续使用原账户。',
|
|
84
|
+
onboardingRecoveryRequiredTitle: '需要重新恢复 AWiki 身份',
|
|
85
|
+
onboardingRecoveryRequiredDescription: '当前设备的旧身份凭证已失效。验证原绑定手机号并恢复后,才能继续使用 AWiki 账户和托管模型。',
|
|
84
86
|
onboardingRestore: '恢复身份',
|
|
85
87
|
onboardingEnableTitle: '启用 AWiki 托管模型',
|
|
86
88
|
onboardingBypassDescription: '当前为开发联调模式,可直接启用模型,不会扣减账户余额。',
|
|
@@ -91,6 +93,7 @@ export const zh = {
|
|
|
91
93
|
identityLoading: '正在读取 AWiki 身份状态…',
|
|
92
94
|
identitySignedOutRequired: '当前 AWiki 身份已退出。恢复这台设备保留的身份后,才能查看账户余额、充值和用量。',
|
|
93
95
|
identityRegistrationRequired: '请先通过 AWiki 面板创建身份,再查看账户余额、充值和用量。',
|
|
96
|
+
identityRecoveryRequired: '当前设备的 AWiki 身份凭证已失效。请在 AWiki 面板验证绑定手机号并恢复身份后,再查看账户余额、充值和用量。',
|
|
94
97
|
identityRestoring: '正在恢复…',
|
|
95
98
|
domainLabel: '默认域名',
|
|
96
99
|
domainDescription: '输入纯域名,不要包含协议、路径或端口。',
|
|
@@ -107,24 +110,24 @@ export const zh = {
|
|
|
107
110
|
unavailable: '当前连接无法修改 Host 设置。请在运行 DeepSeek Harness 的本机打开此页面。',
|
|
108
111
|
readOnly: '当前设置文件为只读。',
|
|
109
112
|
dangerTitle: '危险区域',
|
|
110
|
-
dangerDescription: '永久清除此安装中的 AWiki
|
|
113
|
+
dangerDescription: '永久清除此安装中的 AWiki 凭证与消息数据。清除后需要重新验证绑定手机号才能恢复原身份。',
|
|
111
114
|
clearLocalData: '清空本地 AWiki 数据',
|
|
112
115
|
clearDialogTitle: '确认清空本地 AWiki 数据',
|
|
113
116
|
clearDialogDescription: '这是不可恢复的危险操作。请确认你了解以下影响后再继续。',
|
|
114
117
|
clearScope: '本地 DID、私钥、访问令牌、注册草稿、会话记录和附件索引都会被永久删除。',
|
|
115
|
-
clearRemoteNotice: '服务端 AWiki 账号与 Handle
|
|
118
|
+
clearRemoteNotice: '服务端 AWiki 账号与 Handle 不会被删除;之后可在 AWiki 面板使用完整 Handle、绑定手机号和验证码恢复原身份,但已清除的本地消息与附件索引不会恢复。',
|
|
116
119
|
clearConfirmationLabel: '请输入“{phrase}”以确认:',
|
|
117
120
|
clearConfirmationPhrase: '永久清空',
|
|
118
121
|
clearConfirm: '永久清空',
|
|
119
122
|
clearing: '正在清空…',
|
|
120
|
-
clearSucceeded: '本地 AWiki
|
|
123
|
+
clearSucceeded: '本地 AWiki 数据已清空。原身份可通过 Handle 和绑定手机号恢复,已清除的本地数据无法恢复。',
|
|
121
124
|
clearFailed: '未能清空本地 AWiki 数据,未完成删除。请重试。',
|
|
122
125
|
cancel: '取消',
|
|
123
126
|
};
|
|
124
127
|
/** English dictionary. */
|
|
125
128
|
export const en = {
|
|
126
129
|
nav: 'AWiki',
|
|
127
|
-
intro: 'Manage
|
|
130
|
+
intro: 'Manage the AWiki-hosted DeepSeek account, usage, and advanced identity settings.',
|
|
128
131
|
tabAccount: 'Account & Recharge',
|
|
129
132
|
tabUsage: 'Usage',
|
|
130
133
|
tabAdvanced: 'Advanced',
|
|
@@ -203,6 +206,8 @@ export const en = {
|
|
|
203
206
|
onboardingRegistrationDescription: 'Create or use this device’s AWiki identity to access DeepSeek through AWiki’s hosted proxy service.',
|
|
204
207
|
onboardingRestoreTitle: 'Restore AWiki identity',
|
|
205
208
|
onboardingRestoreDescription: 'This device retains a signed-out AWiki identity. Restore it to continue using the existing account.',
|
|
209
|
+
onboardingRecoveryRequiredTitle: 'Recover the AWiki identity again',
|
|
210
|
+
onboardingRecoveryRequiredDescription: 'The previous identity credential on this device is no longer valid. Verify the bound phone and recover it before using the AWiki account or hosted models.',
|
|
206
211
|
onboardingRestore: 'Restore identity',
|
|
207
212
|
onboardingEnableTitle: 'Enable AWiki-hosted DeepSeek',
|
|
208
213
|
onboardingBypassDescription: 'Development bypass is active, so models can be enabled without reducing the account balance.',
|
|
@@ -213,6 +218,7 @@ export const en = {
|
|
|
213
218
|
identityLoading: 'Loading the AWiki identity…',
|
|
214
219
|
identitySignedOutRequired: 'The AWiki identity is signed out. Restore the identity retained on this device to view the account, recharge, and usage.',
|
|
215
220
|
identityRegistrationRequired: 'Create an identity from the AWiki panel before viewing the account, recharge, and usage.',
|
|
221
|
+
identityRecoveryRequired: 'The AWiki credential on this device is no longer valid. Recover the identity from the AWiki panel before viewing the account, recharge, and usage.',
|
|
216
222
|
identityRestoring: 'Restoring…',
|
|
217
223
|
domainLabel: 'Default domain',
|
|
218
224
|
domainDescription: 'Enter a bare domain without a protocol, path, or port.',
|
|
@@ -229,17 +235,17 @@ export const en = {
|
|
|
229
235
|
unavailable: 'This connection cannot edit Host settings. Open this page on the machine running DeepSeek Harness.',
|
|
230
236
|
readOnly: 'The settings document is read-only.',
|
|
231
237
|
dangerTitle: 'Danger zone',
|
|
232
|
-
dangerDescription: 'Permanently clear the AWiki
|
|
238
|
+
dangerDescription: 'Permanently clear the AWiki credentials and message data stored by this installation. Restoring the identity will require phone verification.',
|
|
233
239
|
clearLocalData: 'Clear local AWiki data',
|
|
234
240
|
clearDialogTitle: 'Clear local AWiki data?',
|
|
235
241
|
clearDialogDescription: 'This is an irreversible operation. Confirm that you understand the impact before continuing.',
|
|
236
242
|
clearScope: 'The local DID, private keys, access token, registration draft, conversations, and attachment index will be permanently deleted.',
|
|
237
|
-
clearRemoteNotice: 'The server-side AWiki account and Handle are not deleted.
|
|
243
|
+
clearRemoteNotice: 'The server-side AWiki account and Handle are not deleted. You can restore the original identity from the AWiki panel with its full Handle, bound phone number, and verification code, but cleared local messages and attachment indexes cannot be restored.',
|
|
238
244
|
clearConfirmationLabel: 'Type “{phrase}” to confirm:',
|
|
239
245
|
clearConfirmationPhrase: 'PERMANENTLY CLEAR',
|
|
240
246
|
clearConfirm: 'Clear permanently',
|
|
241
247
|
clearing: 'Clearing…',
|
|
242
|
-
clearSucceeded: 'Local AWiki data was cleared and cannot be recovered.',
|
|
248
|
+
clearSucceeded: 'Local AWiki data was cleared. The identity can be restored with its Handle and bound phone number, but the cleared local data cannot be recovered.',
|
|
243
249
|
clearFailed: 'Local AWiki data could not be cleared. Deletion did not complete. Try again.',
|
|
244
250
|
cancel: 'Cancel',
|
|
245
251
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-locales.js","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"AAAA,qDAAqD;
|
|
1
|
+
{"version":3,"file":"settings-locales.js","sourceRoot":"","sources":["../../../src/client/settings-locales.ts"],"names":[],"mappings":"AAAA,qDAAqD;AA+HrD,qCAAqC;AACrC,MAAM,CAAC,MAAM,EAAE,GAAqC;IAClD,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,4BAA4B;IACnC,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,MAAM;IACnB,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,MAAM;IACnB,aAAa,EAAE,MAAM;IACrB,aAAa,EAAE,MAAM;IACrB,mBAAmB,EAAE,yBAAyB;IAC9C,WAAW,EAAE,YAAY;IACzB,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,OAAO;IACvB,eAAe,EAAE,OAAO;IACxB,aAAa,EAAE,wCAAwC;IACvD,cAAc,EAAE,4BAA4B;IAC5C,iBAAiB,EAAE,oBAAoB;IACvC,wBAAwB,EAAE,MAAM;IAChC,8BAA8B,EAAE,yCAAyC;IACzE,2BAA2B,EAAE,QAAQ;IACrC,sBAAsB,EAAE,yBAAyB;IACjD,mBAAmB,EAAE,oBAAoB;IACzC,uBAAuB,EAAE,mBAAmB;IAC5C,mBAAmB,EAAE,aAAa;IAClC,uBAAuB,EAAE,WAAW;IACpC,6BAA6B,EAAE,6BAA6B;IAC5D,6BAA6B,EAAE,KAAK;IACpC,uBAAuB,EAAE,MAAM;IAC/B,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,MAAM;IACtB,gBAAgB,EAAE,OAAO;IACzB,qBAAqB,EAAE,qBAAqB;IAC5C,eAAe,EAAE,oCAAoC;IACrD,cAAc,EAAE,WAAW;IAC3B,YAAY,EAAE,6BAA6B;IAC3C,cAAc,EAAE,UAAU;IAC1B,oBAAoB,EAAE,aAAa;IACnC,mBAAmB,EAAE,kBAAkB;IACvC,YAAY,EAAE,UAAU;IACxB,aAAa,EAAE,kBAAkB;IACjC,eAAe,EAAE,qBAAqB;IACtC,oBAAoB,EAAE,QAAQ;IAC9B,0BAA0B,EAAE,wBAAwB;IACpD,oBAAoB,EAAE,sCAAsC;IAC5D,eAAe,EAAE,MAAM;IACvB,oBAAoB,EAAE,SAAS;IAC/B,yBAAyB,EAAE,WAAW;IACtC,+BAA+B,EAAE,wCAAwC;IACzE,qBAAqB,EAAE,wBAAwB;IAC/C,qBAAqB,EAAE,MAAM;IAC7B,kBAAkB,EAAE,OAAO;IAC3B,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,QAAQ;IAC9B,uBAAuB,EAAE,OAAO;IAChC,mBAAmB,EAAE,eAAe;IACpC,YAAY,EAAE,MAAM;IACpB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,WAAW;IACzB,gBAAgB,EAAE,iBAAiB;IACnC,sBAAsB,EAAE,0CAA0C;IAClE,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,MAAM;IACvB,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,OAAO;IACrB,mBAAmB,EAAE,YAAY;IACjC,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,QAAQ;IACzB,sBAAsB,EAAE,UAAU;IAClC,6BAA6B,EAAE,iBAAiB;IAChD,oBAAoB,EAAE,eAAe;IACrC,iCAAiC,EAAE,sDAAsD;IACzF,sBAAsB,EAAE,aAAa;IACrC,4BAA4B,EAAE,sCAAsC;IACpE,+BAA+B,EAAE,iBAAiB;IAClD,qCAAqC,EAAE,kDAAkD;IACzF,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,eAAe;IACtC,2BAA2B,EAAE,6BAA6B;IAC1D,2BAA2B,EAAE,8CAA8C;IAC3E,wCAAwC,EAAE,2CAA2C;IACrF,oCAAoC,EAAE,wCAAwC;IAC9E,YAAY,EAAE,MAAM;IACpB,eAAe,EAAE,kBAAkB;IACnC,yBAAyB,EAAE,6CAA6C;IACxE,4BAA4B,EAAE,kCAAkC;IAChE,wBAAwB,EAAE,6DAA6D;IACvF,iBAAiB,EAAE,OAAO;IAC1B,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,qBAAqB;IACxC,YAAY,EAAE,cAAc;IAC5B,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,MAAM;IACb,aAAa,EAAE,0BAA0B;IACzC,cAAc,EAAE,mDAAmD;IACnE,aAAa,EAAE,uBAAuB;IACtC,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,kDAAkD;IAC/D,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,MAAM;IACnB,iBAAiB,EAAE,gDAAgD;IACnE,cAAc,EAAE,eAAe;IAC/B,gBAAgB,EAAE,iBAAiB;IACnC,sBAAsB,EAAE,6BAA6B;IACrD,UAAU,EAAE,uCAAuC;IACnD,iBAAiB,EAAE,wFAAwF;IAC3G,sBAAsB,EAAE,mBAAmB;IAC3C,uBAAuB,EAAE,MAAM;IAC/B,YAAY,EAAE,MAAM;IACpB,QAAQ,EAAE,OAAO;IACjB,cAAc,EAAE,qDAAqD;IACrE,WAAW,EAAE,4BAA4B;IACzC,MAAM,EAAE,IAAI;CACb,CAAA;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,EAAE,GAAqC;IAClD,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,kFAAkF;IACzF,UAAU,EAAE,oBAAoB;IAChC,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,UAAU;IACvB,cAAc,EAAE,iBAAiB;IACjC,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,oBAAoB;IACnC,aAAa,EAAE,aAAa;IAC5B,mBAAmB,EAAE,8EAA8E;IACnG,WAAW,EAAE,uBAAuB;IACpC,aAAa,EAAE,SAAS;IACxB,cAAc,EAAE,UAAU;IAC1B,YAAY,EAAE,8BAA8B;IAC5C,aAAa,EAAE,+BAA+B;IAC9C,cAAc,EAAE,WAAW;IAC3B,eAAe,EAAE,YAAY;IAC7B,aAAa,EAAE,yEAAyE;IACxF,cAAc,EAAE,gFAAgF;IAChG,iBAAiB,EAAE,yDAAyD;IAC5E,wBAAwB,EAAE,sBAAsB;IAChD,8BAA8B,EAAE,sHAAsH;IACtJ,2BAA2B,EAAE,yBAAyB;IACtD,sBAAsB,EAAE,kFAAkF;IAC1G,mBAAmB,EAAE,4CAA4C;IACjE,uBAAuB,EAAE,mDAAmD;IAC5E,mBAAmB,EAAE,4DAA4D;IACjF,uBAAuB,EAAE,yBAAyB;IAClD,6BAA6B,EAAE,4GAA4G;IAC3I,6BAA6B,EAAE,QAAQ;IACvC,uBAAuB,EAAE,cAAc;IACvC,cAAc,EAAE,uBAAuB;IACvC,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,WAAW;IAC7B,qBAAqB,EAAE,yEAAyE;IAChG,eAAe,EAAE,mHAAmH;IACpI,cAAc,EAAE,0CAA0C;IAC1D,YAAY,EAAE,sFAAsF;IACpG,cAAc,EAAE,gCAAgC;IAChD,oBAAoB,EAAE,6CAA6C;IACnE,mBAAmB,EAAE,6DAA6D;IAClF,YAAY,EAAE,yBAAyB;IACvC,aAAa,EAAE,yDAAyD;IACxE,eAAe,EAAE,6EAA6E;IAC9F,oBAAoB,EAAE,wBAAwB;IAC9C,0BAA0B,EAAE,uCAAuC;IACnE,oBAAoB,EAAE,kHAAkH;IACxI,eAAe,EAAE,kBAAkB;IACnC,oBAAoB,EAAE,0BAA0B;IAChD,yBAAyB,EAAE,6BAA6B;IACxD,+BAA+B,EAAE,kGAAkG;IACnI,qBAAqB,EAAE,yEAAyE;IAChG,qBAAqB,EAAE,cAAc;IACrC,kBAAkB,EAAE,aAAa;IACjC,iBAAiB,EAAE,kEAAkE;IACrF,oBAAoB,EAAE,mFAAmF;IACzG,oBAAoB,EAAE,wBAAwB;IAC9C,uBAAuB,EAAE,aAAa;IACtC,mBAAmB,EAAE,wBAAwB;IAC7C,YAAY,EAAE,kBAAkB;IAChC,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,QAAQ;IACrB,YAAY,EAAE,sBAAsB;IACpC,gBAAgB,EAAE,6BAA6B;IAC/C,sBAAsB,EAAE,kFAAkF;IAC1G,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,mCAAmC;IAC/C,WAAW,EAAE,QAAQ;IACrB,eAAe,EAAE,YAAY;IAC7B,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,iBAAiB;IAC/B,mBAAmB,EAAE,gBAAgB;IACrC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,kBAAkB;IACnC,sBAAsB,EAAE,eAAe;IACvC,6BAA6B,EAAE,4CAA4C;IAC3E,oBAAoB,EAAE,2BAA2B;IACjD,iCAAiC,EAAE,qGAAqG;IACxI,sBAAsB,EAAE,wBAAwB;IAChD,4BAA4B,EAAE,qGAAqG;IACnI,+BAA+B,EAAE,kCAAkC;IACnE,qCAAqC,EAAE,4JAA4J;IACnM,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,8BAA8B;IACrD,2BAA2B,EAAE,8FAA8F;IAC3H,2BAA2B,EAAE,uFAAuF;IACpH,wCAAwC,EAAE,mGAAmG;IAC7I,oCAAoC,EAAE,8HAA8H;IACpK,YAAY,EAAE,gBAAgB;IAC9B,eAAe,EAAE,6BAA6B;IAC9C,yBAAyB,EAAE,0HAA0H;IACrJ,4BAA4B,EAAE,0FAA0F;IACxH,wBAAwB,EAAE,oJAAoJ;IAC9K,iBAAiB,EAAE,YAAY;IAC/B,WAAW,EAAE,gBAAgB;IAC7B,iBAAiB,EAAE,wDAAwD;IAC3E,YAAY,EAAE,mBAAmB;IACjC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,QAAQ;IACf,aAAa,EAAE,yDAAyD;IACxE,cAAc,EAAE,+GAA+G;IAC/H,aAAa,EAAE,yCAAyC;IACxD,UAAU,EAAE,wDAAwD;IACpE,OAAO,EAAE,yBAAyB;IAClC,WAAW,EAAE,oGAAoG;IACjH,QAAQ,EAAE,qCAAqC;IAC/C,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,+IAA+I;IAClK,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,yBAAyB;IAC3C,sBAAsB,EAAE,8FAA8F;IACtH,UAAU,EAAE,iIAAiI;IAC7I,iBAAiB,EAAE,6PAA6P;IAChR,sBAAsB,EAAE,6BAA6B;IACrD,uBAAuB,EAAE,mBAAmB;IAC5C,YAAY,EAAE,mBAAmB;IACjC,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE,oJAAoJ;IACpK,WAAW,EAAE,8EAA8E;IAC3F,MAAM,EAAE,QAAQ;CACjB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Composed props and injected browser operations for the AWiki overlay. */
|
|
2
2
|
import type { HostObservable, InjectFace, PropsRuntime, PropsStore } from '@deepseek-ai/dsh-client-ui-slots';
|
|
3
|
-
import type { AwikiAttachmentId, AwikiConversationId, AwikiCreateGroupResult, AwikiDownloadedAttachment, AwikiIdentity, AwikiMessageId, AwikiMailAccount, AwikiMailInboxPage, AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailMarkReadResult, AwikiMailMessage, AwikiMailReadRequest, AwikiMailSendRequest, AwikiMailSendResult, AwikiRegistrationOtpRequest, AwikiRegistrationOtpResult, AwikiRegistrationRequest, AwikiConversationSummary, AwikiSession } from '@awiki/dsh-plugin/types';
|
|
3
|
+
import type { AwikiAttachmentId, AwikiConversationId, AwikiCreateGroupResult, AwikiDownloadedAttachment, AwikiIdentityAccessInspection, AwikiIdentityAccessInspectionRequest, AwikiIdentity, AwikiGroupMember, AwikiGroupMemberRecord, AwikiGroupRebindRecoverySummary, AwikiGroupSnapshot, AwikiMessageId, AwikiMailAccount, AwikiMailInboxPage, AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailMarkReadResult, AwikiMailMessage, AwikiMailReadRequest, AwikiMailSendRequest, AwikiMailSendResult, AwikiRegistrationOtpRequest, AwikiRegistrationOtpResult, AwikiRegistrationRequest, AwikiProfile, AwikiRecoveryOtpRequest, AwikiRecoveryOtpResult, AwikiRecoveryPrepareRequest, AwikiRecoveryProgress, AwikiConversationSummary, AwikiSession, AwikiUpdateProfileRequest, AwikiMention } from '@awiki/dsh-plugin/types';
|
|
4
4
|
import type { AwikiActionResult, AwikiView } from './controller.ts';
|
|
5
5
|
import type { createAwikiOverlayStore } from './store.ts';
|
|
6
6
|
/** Injected browser actions; components never receive Cordis ctx or Remote. */
|
|
@@ -13,6 +13,8 @@ export interface AwikiInjected {
|
|
|
13
13
|
open: () => Promise<AwikiActionResult>;
|
|
14
14
|
/** Stop polling and invalidate work when the overlay is unmounted. */
|
|
15
15
|
close: () => void;
|
|
16
|
+
/** Determine whether one Handle should use registration or Recovery V4. */
|
|
17
|
+
inspectIdentityAccess: (request: AwikiIdentityAccessInspectionRequest) => Promise<AwikiActionResult<AwikiIdentityAccessInspection>>;
|
|
16
18
|
/**
|
|
17
19
|
* Request a registration verification code.
|
|
18
20
|
* @param request - desired Handle and verification phone number.
|
|
@@ -25,8 +27,23 @@ export interface AwikiInjected {
|
|
|
25
27
|
registerIdentity: (request: AwikiRegistrationRequest) => Promise<AwikiActionResult<AwikiIdentity>>;
|
|
26
28
|
/** Update the deployment identity's public WNS display name. */
|
|
27
29
|
updateDisplayName: (displayName: string) => Promise<AwikiActionResult<AwikiIdentity>>;
|
|
30
|
+
updateProfile: (request: AwikiUpdateProfileRequest) => Promise<AwikiActionResult<AwikiProfile>>;
|
|
31
|
+
sendRecoveryOtp: (request: AwikiRecoveryOtpRequest) => Promise<AwikiActionResult<AwikiRecoveryOtpResult>>;
|
|
32
|
+
prepareRecovery: (request: Omit<AwikiRecoveryPrepareRequest, 'operationId'>) => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
|
|
33
|
+
activateRecovery: () => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
|
|
34
|
+
refreshRecoveryStatus: () => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
|
|
35
|
+
resumeRecovery: () => Promise<AwikiActionResult<AwikiRecoveryProgress>>;
|
|
36
|
+
discardRecovery: () => Promise<AwikiActionResult>;
|
|
28
37
|
/** Load the next conversation page with the Host-owned cursor. */
|
|
29
38
|
loadMoreConversations: () => Promise<AwikiActionResult>;
|
|
39
|
+
/** Retry Core-owned migration for old groups restored after Handle recovery. */
|
|
40
|
+
retryGroupRebindRecovery: () => Promise<AwikiActionResult<AwikiGroupRebindRecoverySummary>>;
|
|
41
|
+
/** Hide only the current recovery-summary revision. */
|
|
42
|
+
dismissGroupRecoveryNotice: () => Promise<AwikiActionResult>;
|
|
43
|
+
/** Remove one conversation from this installation's recent roster. */
|
|
44
|
+
hideConversation: (conversationId: AwikiConversationId) => Promise<AwikiActionResult>;
|
|
45
|
+
/** Restore one locally hidden conversation. */
|
|
46
|
+
restoreConversation: (conversationId: AwikiConversationId) => Promise<AwikiActionResult>;
|
|
30
47
|
/**
|
|
31
48
|
* Open an existing direct conversation or a local draft for one Handle.
|
|
32
49
|
* @param handle - peer Handle or DID typed by the user.
|
|
@@ -34,6 +51,12 @@ export interface AwikiInjected {
|
|
|
34
51
|
startDirectChat: (handle: string) => Promise<AwikiActionResult>;
|
|
35
52
|
/** Create a group with initial members and open its canonical conversation. */
|
|
36
53
|
createGroup: (name: string, members: readonly string[]) => Promise<AwikiActionResult<AwikiCreateGroupResult>>;
|
|
54
|
+
joinGroup: (groupDid: string) => Promise<AwikiActionResult<AwikiGroupSnapshot>>;
|
|
55
|
+
refreshSelectedGroup: () => Promise<AwikiActionResult>;
|
|
56
|
+
loadMoreGroupMembers: () => Promise<AwikiActionResult>;
|
|
57
|
+
addSelectedGroupMember: (member: string) => Promise<AwikiActionResult<AwikiGroupMember>>;
|
|
58
|
+
removeSelectedGroupMember: (member: AwikiGroupMemberRecord) => Promise<AwikiActionResult<AwikiGroupMember>>;
|
|
59
|
+
leaveSelectedGroup: () => Promise<AwikiActionResult>;
|
|
37
60
|
/**
|
|
38
61
|
* Select one conversation or return to the roster.
|
|
39
62
|
* @param conversationId - conversation identifier, or `null` for the roster.
|
|
@@ -51,7 +74,7 @@ export interface AwikiInjected {
|
|
|
51
74
|
* Send text to the selected conversation.
|
|
52
75
|
* @param text - non-empty composer text.
|
|
53
76
|
*/
|
|
54
|
-
sendText: (text: string, clientMessageId?: AwikiMessageId) => Promise<AwikiActionResult>;
|
|
77
|
+
sendText: (text: string, clientMessageId?: AwikiMessageId, mentions?: readonly AwikiMention[]) => Promise<AwikiActionResult>;
|
|
55
78
|
/**
|
|
56
79
|
* Send one JSON-safe file payload to the selected conversation.
|
|
57
80
|
* @param file - file metadata, base64 bytes, and an optional caption.
|
|
@@ -73,6 +96,8 @@ export interface AwikiInjected {
|
|
|
73
96
|
logout: () => Promise<AwikiActionResult<AwikiSession>>;
|
|
74
97
|
/** Resume the same locally preserved identity. */
|
|
75
98
|
login: () => Promise<AwikiActionResult<AwikiSession>>;
|
|
99
|
+
/** Clear the preserved local identity only after the component's destructive confirmation. */
|
|
100
|
+
clearLocalIdentity: () => Promise<AwikiActionResult>;
|
|
76
101
|
/** Read the current deployment mailbox account on demand. */
|
|
77
102
|
getMailAccount: () => Promise<AwikiActionResult<AwikiMailAccount>>;
|
|
78
103
|
/** List one bounded mailbox page on demand. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/client/slots.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,KAAK,EACV,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EACrD,MAAM,kCAAkC,CAAA;AAEzC,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,EACb,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAEzD,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,gEAAgE;QAChE,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,CAAA;KACjC,CAAA;IACD,yGAAyG;IACzG,IAAI,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACtC,sEAAsE;IACtE,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB;;;OAGG;IACH,mBAAmB,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,OAAO,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAA;IACrH;;;OAGG;IACH,gBAAgB,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA;IAClG,gEAAgE;IAChE,iBAAiB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA;IACrF,kEAAkE;IAClE,qBAAqB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACvD;;;OAGG;IACH,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC/D,+EAA+E;IAC/E,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC7G;;;OAGG;IACH,kBAAkB,EAAE,CAAC,cAAc,EAAE,mBAAmB,GAAG,IAAI,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC9F,+EAA+E;IAC/E,4BAA4B,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC9D,sEAAsE;IACtE,gBAAgB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClD,qEAAqE;IACrE,qBAAqB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAA;IACjF,0DAA0D;IAC1D,mBAAmB,EAAE,CAAC,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;IACtF;;;OAGG;IACH,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../../src/client/slots.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AwikiConversationPreferenceMutation, AwikiConversationPreferences, AwikiDid } from './types.ts';
|
|
2
|
+
/** Validate one browser mutation before entering private Host persistence. */
|
|
3
|
+
export declare function normalizeConversationPreferenceMutation(value: unknown): AwikiConversationPreferenceMutation | undefined;
|
|
4
|
+
/** Atomic identity-scoped product preferences, independent of Core membership and history. */
|
|
5
|
+
export declare class AwikiConversationPreferenceStore {
|
|
6
|
+
private readonly hostDirectory;
|
|
7
|
+
private readonly directory;
|
|
8
|
+
private mutation;
|
|
9
|
+
constructor(stateRoot: string);
|
|
10
|
+
get(ownerDid: AwikiDid): Promise<AwikiConversationPreferences>;
|
|
11
|
+
update(ownerDid: AwikiDid, request: AwikiConversationPreferenceMutation): Promise<AwikiConversationPreferences>;
|
|
12
|
+
clear(): Promise<void>;
|
|
13
|
+
private load;
|
|
14
|
+
private write;
|
|
15
|
+
private ensureDirectory;
|
|
16
|
+
private hasDirectory;
|
|
17
|
+
private path;
|
|
18
|
+
private key;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=conversation-preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-preferences.d.ts","sourceRoot":"","sources":["../../src/conversation-preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,mCAAmC,EACnC,4BAA4B,EAC5B,QAAQ,EAGT,MAAM,YAAY,CAAA;AAyInB,8EAA8E;AAC9E,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,mCAAmC,GAAG,SAAS,CAoBjD;AAED,8FAA8F;AAC9F,qBAAa,gCAAgC;IAC3C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAmC;gBAEhC,SAAS,EAAE,MAAM;IAKvB,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAKpE,MAAM,CACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,4BAA4B,CAAC;IAsC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAerB,IAAI;YAkBJ,KAAK;YAgBL,eAAe;YAWf,YAAY;IAW1B,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { chmod, lstat, mkdir, readFile, rm, rename, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const STORE_VERSION = 1;
|
|
5
|
+
const STORE_DIRECTORY = 'conversation-preferences';
|
|
6
|
+
const MAX_STORE_BYTES = 2 * 1024 * 1024;
|
|
7
|
+
const MAX_HIDDEN_CONVERSATIONS = 500;
|
|
8
|
+
const MAX_IDENTIFIER_CHARACTERS = 2_048;
|
|
9
|
+
const MAX_TITLE_CHARACTERS = 1_024;
|
|
10
|
+
const MAX_PREVIEW_CHARACTERS = 4_096;
|
|
11
|
+
const MAX_HANDLE_CHARACTERS = 512;
|
|
12
|
+
const MAX_RECOVERY_SIGNATURE_CHARACTERS = 128;
|
|
13
|
+
function invalidState() {
|
|
14
|
+
throw new TypeError('awiki: conversation preferences are invalid');
|
|
15
|
+
}
|
|
16
|
+
function isMissing(error) {
|
|
17
|
+
return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
|
|
18
|
+
}
|
|
19
|
+
function isFileExists(error) {
|
|
20
|
+
return typeof error === 'object' && error !== null && 'code' in error && error.code === 'EEXIST';
|
|
21
|
+
}
|
|
22
|
+
function isRecord(value) {
|
|
23
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24
|
+
}
|
|
25
|
+
function boundedString(value, maximum) {
|
|
26
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > maximum * 2)
|
|
27
|
+
invalidState();
|
|
28
|
+
if (Array.from(value).length > maximum)
|
|
29
|
+
invalidState();
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function optionalString(value, maximum) {
|
|
33
|
+
return value === undefined ? undefined : boundedString(value, maximum);
|
|
34
|
+
}
|
|
35
|
+
function optionalCount(value) {
|
|
36
|
+
if (value === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (!Number.isSafeInteger(value) || value < 0 || value > 0xffff_ffff)
|
|
39
|
+
invalidState();
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
function optionalTimestamp(value) {
|
|
43
|
+
if (value === undefined)
|
|
44
|
+
return undefined;
|
|
45
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
46
|
+
invalidState();
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
/** Rebuild a bounded display-only snapshot before it reaches private persistence. */
|
|
50
|
+
function conversation(value) {
|
|
51
|
+
if (!isRecord(value))
|
|
52
|
+
invalidState();
|
|
53
|
+
const kind = value.kind;
|
|
54
|
+
const id = boundedString(value.id, MAX_IDENTIFIER_CHARACTERS);
|
|
55
|
+
const title = boundedString(value.title, MAX_TITLE_CHARACTERS);
|
|
56
|
+
const unreadCount = optionalCount(value.unreadCount);
|
|
57
|
+
const lastMessageAt = optionalTimestamp(value.lastMessageAt);
|
|
58
|
+
const lastMessagePreview = optionalString(value.lastMessagePreview, MAX_PREVIEW_CHARACTERS);
|
|
59
|
+
const common = {
|
|
60
|
+
id,
|
|
61
|
+
title,
|
|
62
|
+
...(unreadCount === undefined ? {} : { unreadCount }),
|
|
63
|
+
...(lastMessageAt === undefined ? {} : { lastMessageAt }),
|
|
64
|
+
...(lastMessagePreview === undefined ? {} : { lastMessagePreview }),
|
|
65
|
+
};
|
|
66
|
+
if (kind === 'direct') {
|
|
67
|
+
const peerDid = boundedString(value.peerDid, MAX_IDENTIFIER_CHARACTERS);
|
|
68
|
+
if (!peerDid.startsWith('did:'))
|
|
69
|
+
invalidState();
|
|
70
|
+
const peerHandle = optionalString(value.peerHandle, MAX_HANDLE_CHARACTERS);
|
|
71
|
+
const displayName = optionalString(value.displayName, MAX_TITLE_CHARACTERS);
|
|
72
|
+
return {
|
|
73
|
+
kind,
|
|
74
|
+
...common,
|
|
75
|
+
peerDid: peerDid,
|
|
76
|
+
...(peerHandle === undefined ? {} : { peerHandle: peerHandle }),
|
|
77
|
+
...(displayName === undefined ? {} : { displayName }),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (kind === 'group') {
|
|
81
|
+
const groupDid = boundedString(value.groupDid, MAX_IDENTIFIER_CHARACTERS);
|
|
82
|
+
if (!groupDid.startsWith('did:'))
|
|
83
|
+
invalidState();
|
|
84
|
+
return { kind, ...common, groupDid: groupDid };
|
|
85
|
+
}
|
|
86
|
+
invalidState();
|
|
87
|
+
}
|
|
88
|
+
function hiddenPreference(value) {
|
|
89
|
+
if (!isRecord(value) || !Number.isSafeInteger(value.hiddenAt) || value.hiddenAt < 0)
|
|
90
|
+
invalidState();
|
|
91
|
+
return { conversation: conversation(value.conversation), hiddenAt: value.hiddenAt };
|
|
92
|
+
}
|
|
93
|
+
function preferences(value, expectedOwnerDid) {
|
|
94
|
+
if (!isRecord(value)
|
|
95
|
+
|| value.version !== STORE_VERSION
|
|
96
|
+
|| value.ownerDid !== String(expectedOwnerDid)
|
|
97
|
+
|| !Array.isArray(value.hiddenConversations)
|
|
98
|
+
|| value.hiddenConversations.length > MAX_HIDDEN_CONVERSATIONS)
|
|
99
|
+
invalidState();
|
|
100
|
+
const hiddenConversations = value.hiddenConversations.map(hiddenPreference);
|
|
101
|
+
const seen = new Set();
|
|
102
|
+
for (const hidden of hiddenConversations) {
|
|
103
|
+
if (seen.has(hidden.conversation.id))
|
|
104
|
+
invalidState();
|
|
105
|
+
seen.add(hidden.conversation.id);
|
|
106
|
+
}
|
|
107
|
+
const dismissedGroupRecoverySignature = optionalString(value.dismissedGroupRecoverySignature, MAX_RECOVERY_SIGNATURE_CHARACTERS);
|
|
108
|
+
return {
|
|
109
|
+
version: STORE_VERSION,
|
|
110
|
+
ownerDid: String(expectedOwnerDid),
|
|
111
|
+
hiddenConversations,
|
|
112
|
+
...(dismissedGroupRecoverySignature === undefined ? {} : { dismissedGroupRecoverySignature }),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function publicPreferences(value) {
|
|
116
|
+
return {
|
|
117
|
+
hiddenConversations: value.hiddenConversations.map(hidden => ({
|
|
118
|
+
conversation: { ...hidden.conversation },
|
|
119
|
+
hiddenAt: hidden.hiddenAt,
|
|
120
|
+
})),
|
|
121
|
+
...(value.dismissedGroupRecoverySignature === undefined
|
|
122
|
+
? {}
|
|
123
|
+
: { dismissedGroupRecoverySignature: value.dismissedGroupRecoverySignature }),
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function emptyPreferences(ownerDid) {
|
|
127
|
+
return { version: STORE_VERSION, ownerDid: String(ownerDid), hiddenConversations: [] };
|
|
128
|
+
}
|
|
129
|
+
/** Validate one browser mutation before entering private Host persistence. */
|
|
130
|
+
export function normalizeConversationPreferenceMutation(value) {
|
|
131
|
+
try {
|
|
132
|
+
if (!isRecord(value))
|
|
133
|
+
return undefined;
|
|
134
|
+
if (value.action === 'hide')
|
|
135
|
+
return { action: 'hide', conversation: conversation(value.conversation) };
|
|
136
|
+
if (value.action === 'restore') {
|
|
137
|
+
return {
|
|
138
|
+
action: 'restore',
|
|
139
|
+
conversationId: boundedString(value.conversationId, MAX_IDENTIFIER_CHARACTERS),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (value.action === 'dismiss-group-recovery') {
|
|
143
|
+
return {
|
|
144
|
+
action: 'dismiss-group-recovery',
|
|
145
|
+
signature: boundedString(value.signature, MAX_RECOVERY_SIGNATURE_CHARACTERS),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
/** Atomic identity-scoped product preferences, independent of Core membership and history. */
|
|
155
|
+
export class AwikiConversationPreferenceStore {
|
|
156
|
+
hostDirectory;
|
|
157
|
+
directory;
|
|
158
|
+
mutation = Promise.resolve();
|
|
159
|
+
constructor(stateRoot) {
|
|
160
|
+
this.hostDirectory = join(stateRoot, '.host');
|
|
161
|
+
this.directory = join(this.hostDirectory, STORE_DIRECTORY);
|
|
162
|
+
}
|
|
163
|
+
async get(ownerDid) {
|
|
164
|
+
await this.mutation;
|
|
165
|
+
return publicPreferences(await this.load(ownerDid));
|
|
166
|
+
}
|
|
167
|
+
update(ownerDid, request) {
|
|
168
|
+
const mutate = async () => {
|
|
169
|
+
const normalized = normalizeConversationPreferenceMutation(request);
|
|
170
|
+
if (normalized === undefined)
|
|
171
|
+
invalidState();
|
|
172
|
+
const current = await this.load(ownerDid);
|
|
173
|
+
let next;
|
|
174
|
+
switch (normalized.action) {
|
|
175
|
+
case 'hide': {
|
|
176
|
+
const snapshot = normalized.conversation;
|
|
177
|
+
const hidden = current.hiddenConversations.filter(item => item.conversation.id !== snapshot.id);
|
|
178
|
+
hidden.unshift({ conversation: snapshot, hiddenAt: Date.now() });
|
|
179
|
+
next = { ...current, hiddenConversations: hidden.slice(0, MAX_HIDDEN_CONVERSATIONS) };
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case 'restore': {
|
|
183
|
+
const conversationId = normalized.conversationId;
|
|
184
|
+
next = {
|
|
185
|
+
...current,
|
|
186
|
+
hiddenConversations: current.hiddenConversations.filter(item => item.conversation.id !== conversationId),
|
|
187
|
+
};
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
case 'dismiss-group-recovery': {
|
|
191
|
+
const signature = normalized.signature;
|
|
192
|
+
next = { ...current, dismissedGroupRecoverySignature: signature };
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
default:
|
|
196
|
+
invalidState();
|
|
197
|
+
}
|
|
198
|
+
await this.write(ownerDid, next);
|
|
199
|
+
return publicPreferences(next);
|
|
200
|
+
};
|
|
201
|
+
const pending = this.mutation.then(mutate, mutate);
|
|
202
|
+
this.mutation = pending.then(() => undefined, () => undefined);
|
|
203
|
+
return pending;
|
|
204
|
+
}
|
|
205
|
+
async clear() {
|
|
206
|
+
await this.mutation;
|
|
207
|
+
try {
|
|
208
|
+
if (!(await this.hasDirectory(this.hostDirectory)))
|
|
209
|
+
return;
|
|
210
|
+
const metadata = await lstat(this.directory);
|
|
211
|
+
if (metadata.isSymbolicLink() || !metadata.isDirectory()) {
|
|
212
|
+
await unlink(this.directory);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
await rm(this.directory, { recursive: true, force: true });
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
if (!isMissing(error))
|
|
219
|
+
throw error;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async load(ownerDid) {
|
|
223
|
+
if (!(await this.hasDirectory(this.hostDirectory)) || !(await this.hasDirectory(this.directory))) {
|
|
224
|
+
return emptyPreferences(ownerDid);
|
|
225
|
+
}
|
|
226
|
+
const path = this.path(ownerDid);
|
|
227
|
+
try {
|
|
228
|
+
const metadata = await lstat(path);
|
|
229
|
+
if (!metadata.isFile() || metadata.isSymbolicLink() || metadata.size > MAX_STORE_BYTES)
|
|
230
|
+
invalidState();
|
|
231
|
+
const text = await readFile(path, 'utf8');
|
|
232
|
+
if (Buffer.byteLength(text, 'utf8') > MAX_STORE_BYTES)
|
|
233
|
+
invalidState();
|
|
234
|
+
return preferences(JSON.parse(text), ownerDid);
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
if (isMissing(error))
|
|
238
|
+
return emptyPreferences(ownerDid);
|
|
239
|
+
if (error instanceof SyntaxError)
|
|
240
|
+
invalidState();
|
|
241
|
+
throw error;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
async write(ownerDid, value) {
|
|
245
|
+
const snapshot = preferences(value, ownerDid);
|
|
246
|
+
const text = `${JSON.stringify(snapshot)}\n`;
|
|
247
|
+
if (Buffer.byteLength(text, 'utf8') > MAX_STORE_BYTES)
|
|
248
|
+
invalidState();
|
|
249
|
+
await this.ensureDirectory();
|
|
250
|
+
const path = this.path(ownerDid);
|
|
251
|
+
const temporary = join(this.directory, `.${this.key(ownerDid)}.${randomUUID()}.tmp`);
|
|
252
|
+
try {
|
|
253
|
+
await writeFile(temporary, text, { flag: 'wx', mode: 0o600 });
|
|
254
|
+
await rename(temporary, path);
|
|
255
|
+
await chmod(path, 0o600);
|
|
256
|
+
}
|
|
257
|
+
finally {
|
|
258
|
+
await unlink(temporary).catch(() => undefined);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async ensureDirectory() {
|
|
262
|
+
await mkdir(this.hostDirectory, { recursive: true, mode: 0o700 });
|
|
263
|
+
if (!(await this.hasDirectory(this.hostDirectory)))
|
|
264
|
+
invalidState();
|
|
265
|
+
await chmod(this.hostDirectory, 0o700);
|
|
266
|
+
await mkdir(this.directory, { mode: 0o700 }).catch((error) => {
|
|
267
|
+
if (!isFileExists(error))
|
|
268
|
+
throw error;
|
|
269
|
+
});
|
|
270
|
+
if (!(await this.hasDirectory(this.directory)))
|
|
271
|
+
invalidState();
|
|
272
|
+
await chmod(this.directory, 0o700);
|
|
273
|
+
}
|
|
274
|
+
async hasDirectory(path) {
|
|
275
|
+
try {
|
|
276
|
+
const metadata = await lstat(path);
|
|
277
|
+
if (!metadata.isDirectory() || metadata.isSymbolicLink())
|
|
278
|
+
invalidState();
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
if (isMissing(error))
|
|
283
|
+
return false;
|
|
284
|
+
throw error;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
path(ownerDid) {
|
|
288
|
+
return join(this.directory, `${this.key(ownerDid)}.json`);
|
|
289
|
+
}
|
|
290
|
+
key(ownerDid) {
|
|
291
|
+
return createHash('sha256').update(String(ownerDid)).digest('hex');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=conversation-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-preferences.js","sourceRoot":"","sources":["../../src/conversation-preferences.ts"],"names":[],"mappings":"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"}
|