@anvil-works/anvil-cli 0.8.0-canary.5 → 0.8.0-canary.6

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/api.d.ts CHANGED
@@ -10,6 +10,7 @@ export { AppIdCandidate, AppIdWithContext, CheckoutAppListItem, detectAppIdsByCo
10
10
  export { ANVIL_SYNC_CLIENT_ID, getAccountsForUrl, getAvailableAnvilUrls, getValidAuthToken, hasTokensForUrl, verifyAndStoreTokens, LoginResult, LogoutResult, logout, TokenData, clearInMemoryTokens, setInMemoryTokens, verifyAuth, } from "./services/auth";
11
11
  export { DeviceAuthorizationResponse, OAuthTokenResponse, pollDeviceAuthorization, requestDeviceAuthorization, } from "./services/oauth-login";
12
12
  export { CheckoutCloneOptions, CheckoutExecutionDeps, CheckoutOptions, CheckoutResult, executeCheckout, getDefaultDestinationDirectory, isDirectoryNonEmpty, isPathInsideGitRepo, parseCheckoutInput, ParsedCheckoutInput, sanitizeDirectoryName, validateCheckoutDestination, } from "./commands/checkout";
13
+ export { createCheckoutPickerSource, type CheckoutPickerDeps, type CheckoutPickerSourceController, type CheckoutPickerSourceOptions, } from "./commands/checkout-picker";
13
14
  export { buildGitAuthDoctorReport, formatGitAuthDoctorReport, inspectCredentialHelperCommand, parseCredentialHelperCommand, } from "./commands/gitAuth";
14
15
  export type { CredentialFillResult, GitAuthDoctorAppReport, GitAuthDoctorFinding, GitAuthDoctorRemote, GitAuthDoctorReport, GitAuthDoctorStatus, GitCredentialHelperDetails, GitCredentialSimulation, } from "./commands/gitAuth";
15
16
  export { executeGitCredentialOperation } from "./commands/gitCredential";
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface CheckoutPickerSourceOptions {
9
9
  maxAutoPagesPerCall?: number;
10
10
  initialQuery?: string;
11
11
  }
12
- interface CheckoutPickerSourceController {
12
+ export interface CheckoutPickerSourceController {
13
13
  source: (term: string | undefined, opt: {
14
14
  signal: AbortSignal;
15
15
  }) => Promise<Array<{
@@ -21,5 +21,4 @@ interface CheckoutPickerSourceController {
21
21
  }
22
22
  export declare function createCheckoutPickerSource(anvilUrl: string, username: string | undefined, deps: CheckoutPickerDeps, options?: CheckoutPickerSourceOptions): CheckoutPickerSourceController;
23
23
  export declare function selectAppForCheckout(anvilUrl: string, username: string | undefined, deps: CheckoutPickerDeps, initialQuery?: string): Promise<string | null>;
24
- export {};
25
24
  //# sourceMappingURL=checkout-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkout-picker.d.ts","sourceRoot":"","sources":["../../src/commands/checkout-picker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIjF,MAAM,WAAW,kBAAkB;IAC/B,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACnD;AAWD,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,8BAA8B;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACjK;AAyFD,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,kBAAkB,EACxB,OAAO,GAAE,2BAAgC,GAC1C,8BAA8B,CAoIhC;AAiUD,wBAAsB,oBAAoB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,kBAAkB,EACxB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB"}
1
+ {"version":3,"file":"checkout-picker.d.ts","sourceRoot":"","sources":["../../src/commands/checkout-picker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuB,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAIjF,MAAM,WAAW,kBAAkB;IAC/B,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;CACnD;AAWD,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACjK;AAyFD,wBAAgB,0BAA0B,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,kBAAkB,EACxB,OAAO,GAAE,2BAAgC,GAC1C,8BAA8B,CAoIhC;AAiUD,wBAAsB,oBAAoB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,IAAI,EAAE,kBAAkB,EACxB,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB"}
package/dist/index.js CHANGED
@@ -7387,6 +7387,7 @@ var __webpack_exports__ = {};
7387
7387
  verifyAndStoreTokens: ()=>auth_verifyAndStoreTokens,
7388
7388
  formatValidationPath: ()=>formatValidationPath,
7389
7389
  resolveAnvilUrl: ()=>resolveAnvilUrl,
7390
+ createCheckoutPickerSource: ()=>createCheckoutPickerSource,
7390
7391
  buildGitAuthDoctorReport: ()=>buildGitAuthDoctorReport,
7391
7392
  parseCheckoutInput: ()=>parseCheckoutInput,
7392
7393
  formatGitAuthDoctorReport: ()=>formatGitAuthDoctorReport,
@@ -19879,6 +19880,182 @@ print(json.dumps({"issues": issues}))
19879
19880
  }
19880
19881
  throw new Error("Device login expired before it was approved.");
19881
19882
  }
19883
+ const CHECKOUT_ERROR_VALUE = "__ERROR__";
19884
+ function isAbortLikeError(error) {
19885
+ if (error instanceof Error && "AbortError" === error.name) return true;
19886
+ if ("object" == typeof error && null !== error) {
19887
+ const maybeType = error.type;
19888
+ const maybeMessage = error.message;
19889
+ if ("network_error" === maybeType && "string" == typeof maybeMessage && maybeMessage.toLowerCase().includes("abort")) return true;
19890
+ }
19891
+ const message = errors_getErrorMessage(error).toLowerCase();
19892
+ return "aborted" === message || message.includes("aborted");
19893
+ }
19894
+ function normalizePickerQuery(term) {
19895
+ return (term || "").trim();
19896
+ }
19897
+ function parseNonNegativeMs(raw) {
19898
+ if (null == raw) return null;
19899
+ const parsed = Number(raw);
19900
+ if (!Number.isFinite(parsed) || parsed < 0) return null;
19901
+ return parsed;
19902
+ }
19903
+ function getCheckoutPickerDelayMs() {
19904
+ const fromEnv = parseNonNegativeMs(process.env.ANVIL_CHECKOUT_PICKER_DELAY_MS);
19905
+ if (null != fromEnv) return fromEnv;
19906
+ return 0;
19907
+ }
19908
+ function getCheckoutPickerPaginationDelayMs() {
19909
+ return getCheckoutPickerDelayMs();
19910
+ }
19911
+ function formatLastEdited(lastEdited) {
19912
+ if (!lastEdited) return;
19913
+ return external_chalk_default().gray(`Last edited: ${lastEdited}`);
19914
+ }
19915
+ function formatAppPickerLabel(app) {
19916
+ const appName = app.app_name || "Unnamed App";
19917
+ return `${external_chalk_default().cyan(appName)} ${external_chalk_default().gray(`(${app.app_id})`)}`;
19918
+ }
19919
+ async function waitForDebounce(ms, signal) {
19920
+ if (ms <= 0) return;
19921
+ if (signal.aborted) throw new Error("aborted");
19922
+ await new Promise((resolve, reject)=>{
19923
+ const timer = setTimeout(()=>{
19924
+ cleanup();
19925
+ resolve();
19926
+ }, ms);
19927
+ const onAbort = ()=>{
19928
+ cleanup();
19929
+ reject(new Error("aborted"));
19930
+ };
19931
+ const cleanup = ()=>{
19932
+ clearTimeout(timer);
19933
+ signal.removeEventListener("abort", onAbort);
19934
+ };
19935
+ signal.addEventListener("abort", onAbort, {
19936
+ once: true
19937
+ });
19938
+ });
19939
+ }
19940
+ function createCheckoutPickerSource(anvilUrl, username, deps, options = {}) {
19941
+ const pageSize = options.pageSize ?? 20;
19942
+ const debounceMs = options.debounceMs ?? 200;
19943
+ const staleTimeMs = options.staleTimeMs ?? 30000;
19944
+ const maxAutoPagesPerCall = options.maxAutoPagesPerCall ?? 8;
19945
+ const initialQuery = normalizePickerQuery(options.initialQuery);
19946
+ const simulatedDelayMs = getCheckoutPickerDelayMs();
19947
+ const paginationDelayMs = getCheckoutPickerPaginationDelayMs();
19948
+ const cache = new Map();
19949
+ const getState = (query)=>{
19950
+ const existing = cache.get(query);
19951
+ if (existing) return existing;
19952
+ const created = {
19953
+ items: [],
19954
+ nextCursor: null,
19955
+ exhausted: false,
19956
+ lastError: null,
19957
+ updatedAt: 0,
19958
+ inFlight: null
19959
+ };
19960
+ cache.set(query, created);
19961
+ return created;
19962
+ };
19963
+ const fetchPage = async (query, signal, options = {})=>{
19964
+ const state = getState(query);
19965
+ if (state.inFlight) return void await state.inFlight;
19966
+ state.inFlight = (async ()=>{
19967
+ try {
19968
+ if (simulatedDelayMs > 0) await new Promise((resolve)=>setTimeout(resolve, simulatedDelayMs));
19969
+ if (options.cursor && paginationDelayMs > 0) await new Promise((resolve)=>setTimeout(resolve, paginationDelayMs));
19970
+ const response = await deps.listAppsForCheckout({
19971
+ anvilUrl,
19972
+ username,
19973
+ limit: pageSize,
19974
+ cursor: options.cursor,
19975
+ q: query || void 0,
19976
+ signal
19977
+ });
19978
+ if (options.reset) state.items = [
19979
+ ...response.apps
19980
+ ];
19981
+ else state.items.push(...response.apps);
19982
+ state.nextCursor = response.next_cursor;
19983
+ state.exhausted = !response.next_cursor;
19984
+ state.lastError = null;
19985
+ state.updatedAt = Date.now();
19986
+ } catch (e) {
19987
+ if (!signal.aborted && !isAbortLikeError(e)) {
19988
+ const message = errors_getErrorMessage(e);
19989
+ state.lastError = message;
19990
+ state.updatedAt = Date.now();
19991
+ }
19992
+ } finally{
19993
+ state.inFlight = null;
19994
+ }
19995
+ })();
19996
+ await state.inFlight;
19997
+ };
19998
+ const ensureLoaded = async (query, signal)=>{
19999
+ const state = getState(query);
20000
+ const isStale = Date.now() - state.updatedAt > staleTimeMs;
20001
+ if (0 === state.items.length) {
20002
+ await waitForDebounce(debounceMs, signal);
20003
+ await fetchPage(query, signal, {
20004
+ cursor: void 0,
20005
+ reset: false
20006
+ });
20007
+ } else if (state.lastError) {
20008
+ await waitForDebounce(debounceMs, signal);
20009
+ await fetchPage(query, signal, {
20010
+ cursor: void 0,
20011
+ reset: true
20012
+ });
20013
+ } else if (isStale) {
20014
+ await waitForDebounce(debounceMs, signal);
20015
+ await fetchPage(query, signal, {
20016
+ cursor: void 0,
20017
+ reset: true
20018
+ });
20019
+ }
20020
+ let pagesLoaded = 0;
20021
+ while(state.nextCursor && pagesLoaded < maxAutoPagesPerCall){
20022
+ if (signal.aborted) throw new Error("aborted");
20023
+ const cursor = state.nextCursor;
20024
+ await fetchPage(query, signal, {
20025
+ cursor,
20026
+ reset: false
20027
+ });
20028
+ pagesLoaded += 1;
20029
+ }
20030
+ };
20031
+ return {
20032
+ source: async (term, { signal })=>{
20033
+ const query = normalizePickerQuery(term) || initialQuery;
20034
+ if (signal.aborted) return [];
20035
+ await ensureLoaded(query, signal);
20036
+ const state = getState(query);
20037
+ if (state.lastError) return [
20038
+ {
20039
+ name: `${external_chalk_default().yellow("Fetch failed")} ${external_chalk_default().gray(`(${state.lastError})`)}`,
20040
+ value: CHECKOUT_ERROR_VALUE,
20041
+ disabled: true
20042
+ }
20043
+ ];
20044
+ const summary = state.nextCursor ? external_chalk_default().gray(`Loaded ${state.items.length} apps • more available`) : external_chalk_default().gray(`Loaded ${state.items.length} apps`);
20045
+ const choices = state.items.map((app)=>({
20046
+ name: formatAppPickerLabel(app),
20047
+ value: app.app_id,
20048
+ description: formatLastEdited(app.last_edited)
20049
+ }));
20050
+ choices.unshift({
20051
+ name: summary,
20052
+ value: CHECKOUT_ERROR_VALUE,
20053
+ disabled: true
20054
+ });
20055
+ return choices;
20056
+ }
20057
+ };
20058
+ }
19882
20059
  require("inquirer");
19883
20060
  require("ora");
19884
20061
  const defaultGitAuthDoctorDeps = {
@@ -20707,6 +20884,7 @@ exports.branchFromEnvironmentVersion = __webpack_exports__.branchFromEnvironment
20707
20884
  exports.buildGitAuthDoctorReport = __webpack_exports__.buildGitAuthDoctorReport;
20708
20885
  exports.checkUncommittedChanges = __webpack_exports__.checkUncommittedChanges;
20709
20886
  exports.clearInMemoryTokens = __webpack_exports__.clearInMemoryTokens;
20887
+ exports.createCheckoutPickerSource = __webpack_exports__.createCheckoutPickerSource;
20710
20888
  exports.createWatchDiagnostic = __webpack_exports__.createWatchDiagnostic;
20711
20889
  exports.createWatchDiagnosticFromMessage = __webpack_exports__.createWatchDiagnosticFromMessage;
20712
20890
  exports.deleteConfig = __webpack_exports__.deleteConfig;
@@ -20799,6 +20977,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
20799
20977
  "buildGitAuthDoctorReport",
20800
20978
  "checkUncommittedChanges",
20801
20979
  "clearInMemoryTokens",
20980
+ "createCheckoutPickerSource",
20802
20981
  "createWatchDiagnostic",
20803
20982
  "createWatchDiagnosticFromMessage",
20804
20983
  "deleteConfig",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvil-works/anvil-cli",
3
- "version": "0.8.0-canary.5",
3
+ "version": "0.8.0-canary.6",
4
4
  "description": "CLI tool for developing Anvil apps locally",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/api.d.ts",