UNPKG

@azure-utils/storybooks

Version:

Utils to upload and manage Storybooks via Azure Functions and storage.

1 lines 3.65 kB
{"version":3,"file":"azure-data-tables-MtZoiS66.mjs","names":["projectId: string","tableSuffix: TableSuffix","context: InvocationContext","tableClient: TableClient","queryOptions?: ListAzureTableEntitiesOptions<T>","entities: TableEntityResultPage<T>"],"sources":["../src/utils/azure-data-tables.ts"],"sourcesContent":["import {\n TableClient,\n TableEntityResult,\n TableEntityResultPage,\n} from \"@azure/data-tables\";\nimport type { InvocationContext } from \"@azure/functions\";\nimport { DEFAULT_SERVICE_NAME } from \"./constants\";\n\ntype TableSuffix = \"Builds\" | \"Labels\";\n\nexport function generateProjectAzureTableName(\n projectId: string,\n tableSuffix: TableSuffix\n): string {\n return `${DEFAULT_SERVICE_NAME}${projectId\n .replace(/\\W+/g, \"\")\n .toUpperCase()}${tableSuffix}`;\n}\n\nexport type ListAzureTableEntitiesOptions<T extends Record<string, unknown>> = {\n limit?: number;\n filter?: string | ((item: T) => boolean);\n select?: string[];\n sort?: \"latest\" | ((a: T, b: T) => number);\n};\n\nexport async function listAzureTableEntities<T extends Record<string, unknown>>(\n context: InvocationContext,\n tableClient: TableClient,\n queryOptions?: ListAzureTableEntitiesOptions<T>\n): Promise<Array<TableEntityResult<T>>> {\n const { limit, filter, select, sort = \"latest\" } = queryOptions || {};\n try {\n await tableClient.createTable();\n const iterator = tableClient.listEntities<T>({\n queryOptions: {\n filter: typeof filter === \"string\" ? filter : undefined,\n select: select as string[],\n },\n });\n\n let entities: TableEntityResultPage<T> = [];\n if (limit) {\n for await (const page of iterator.byPage({ maxPageSize: limit })) {\n entities = page; // Take the first page as the entities result\n break;\n }\n } else {\n for await (const page of iterator.byPage()) {\n entities.push(...page);\n }\n }\n\n if (typeof filter === \"function\") {\n entities = entities.filter(filter);\n }\n\n if (sort) {\n if (typeof sort === \"function\") {\n entities.sort(sort);\n } else {\n switch (sort) {\n case \"latest\":\n entities.sort((a, b) => {\n if (!a.timestamp || !b.timestamp) return 0;\n const aDate = new Date(a.timestamp);\n const bDate = new Date(b.timestamp);\n return bDate.getTime() - aDate.getTime();\n });\n break;\n }\n }\n }\n\n return entities;\n } catch (error) {\n context.error(\n `Error listing Azure Table '${tableClient.tableName}' entities:`,\n error\n );\n return [];\n }\n}\n"],"mappings":";;;AAUA,SAAgB,8BACdA,WACAC,aACQ;AACR,QAAO,GAAG,uBAAuB,UAC9B,QAAQ,QAAQ,GAAG,CACnB,aAAa,GAAG,aAAa;AACjC;AASD,eAAsB,uBACpBC,SACAC,aACAC,cACsC;CACtC,MAAM,EAAE,OAAO,QAAQ,QAAQ,OAAO,UAAU,GAAG,gBAAgB,CAAE;AACrE,KAAI;EACF,MAAM,YAAY,aAAa;EAC/B,MAAM,WAAW,YAAY,aAAgB,EAC3C,cAAc;GACZ,QAAQ,OAAO,WAAW,WAAW,SAAS;GACtC;EACT,EACF,EAAC;EAEF,IAAIC,WAAqC,CAAE;AAC3C,MAAI,MACF,YAAW,MAAM,QAAQ,SAAS,OAAO,EAAE,aAAa,MAAO,EAAC,EAAE;GAChE,WAAW;AACX;EACD;MAED,YAAW,MAAM,QAAQ,SAAS,QAAQ,EACxC,SAAS,KAAK,GAAG,KAAK;AAI1B,MAAI,OAAO,WAAW,YACpB,WAAW,SAAS,OAAO,OAAO;AAGpC,MAAI,KACF,KAAI,OAAO,SAAS,YAClB,SAAS,KAAK,KAAK;MAEnB,SAAQ,MAAR;GACE,KAAK;IACH,SAAS,KAAK,CAAC,GAAG,MAAM;AACtB,SAAI,CAAC,EAAE,aAAa,CAAC,EAAE,UAAW,QAAO;KACzC,MAAM,QAAQ,IAAI,KAAK,EAAE;KACzB,MAAM,QAAQ,IAAI,KAAK,EAAE;AACzB,YAAO,MAAM,SAAS,GAAG,MAAM,SAAS;IACzC,EAAC;AACF;EACH;AAIL,SAAO;CACR,SAAQ,OAAO;EACd,QAAQ,MACN,CAAC,2BAA2B,EAAE,YAAY,UAAU,WAAW,CAAC,EAChE,MACD;AACD,SAAO,CAAE;CACV;AACF"}