Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: use tegg v4 #765

Merged
merged 15 commits into from
Mar 5, 2025
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"plugins": ["import"],
"rules": {
"import/no-cycle": "error"
}
}
9 changes: 5 additions & 4 deletions app.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import path from 'node:path';
import { readFile } from 'node:fs/promises';
import { Application } from 'egg';
import { ChangesStreamService } from './app/core/service/ChangesStreamService';
import { Application, ILifecycleBoot } from 'egg';
import { ChangesStreamService } from './app/core/service/ChangesStreamService.js';

declare module 'egg' {
interface Application {
binaryHTML: string;
}
}

export default class CnpmcoreAppHook {
export default class CnpmcoreAppHook implements ILifecycleBoot {
private readonly app: Application;

constructor(app: Application) {
this.app = app;
this.app.binaryHTML = '';
}

async configWillLoad() {
configWillLoad() {
const app = this.app;
// https://github.com/eggjs/tegg/blob/master/plugin/orm/app.ts#L37
// store query sql to log
Expand All @@ -40,6 +40,7 @@ export default class CnpmcoreAppHook {
// 应用退出时执行
// 需要暂停当前执行的 changesStream task
async beforeClose() {
// const { ChangesStreamService } = await import('./app/core/service/ChangesStreamService.js');
const changesStreamService = await this.app.getEggObject(ChangesStreamService);
await changesStreamService.suspendSync(true);
}
Expand Down
2 changes: 1 addition & 1 deletion app/common/FileUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import url from 'node:url';
import { randomBytes } from 'node:crypto';
import { EggContextHttpClient, HttpClientResponse } from 'egg';
import mime from 'mime-types';
import dayjs from './dayjs';
import dayjs from './dayjs.js';

interface DownloadToTempfileOptionalConfig {
retries?: number,
Expand Down
13 changes: 7 additions & 6 deletions app/common/PackageUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import { createReadStream } from 'node:fs';
import { Readable } from 'node:stream';
import { pipeline } from 'node:stream/promises';
import * as ssri from 'ssri';
// @ts-expect-error type error
import tar from '@fengmk2/tar';
import { AuthorType, PackageJSONType } from '../repository/PackageRepository';
import type { AuthorType, PackageJSONType } from '../repository/PackageRepository.js';


// /@cnpm%2ffoo
Expand All @@ -12,7 +13,7 @@ import { AuthorType, PackageJSONType } from '../repository/PackageRepository';
// /foo
// name max length is 214 chars
// https://www.npmjs.com/package/path-to-regexp#custom-matching-parameters
export const FULLNAME_REG_STRING = '@[^/]{1,220}\/[^/]{1,220}|@[^%]+\%2[fF][^/]{1,220}|[^@/]{1,220}';
export const FULLNAME_REG_STRING = '@[^/]{1,220}/[^/]{1,220}|@[^%]+%2[fF][^/]{1,220}|[^@/]{1,220}';

export function getScopeAndName(fullname: string): string[] {
if (fullname.startsWith('@')) {
Expand Down Expand Up @@ -86,7 +87,7 @@ export async function hasShrinkWrapInTgz(contentOrFile: Uint8Array | string): Pr
const parser = tar.t({
// options.strict 默认为 false,会忽略 Recoverable errors,例如 tar 解析失败
// 详见 https://github.com/isaacs/node-tar#warnings-and-errors
onentry(entry) {
onentry(entry: any) {
if (entry.path === 'package/npm-shrinkwrap.json') {
hasShrinkWrap = true;
abortController.abort();
Expand Down Expand Up @@ -122,16 +123,16 @@ export async function extractPackageJSON(tarballBytes: Buffer): Promise<PackageJ
return new Promise((resolve, reject) => {
Readable.from(tarballBytes)
.pipe(tar.t({
filter: name => name === 'package/package.json',
onentry: async entry => {
filter: (name: string) => name === 'package/package.json',
onentry: async (entry: any) => {
const chunks: Buffer[] = [];
for await (const chunk of entry) {
chunks.push(chunk);
}
try {
const data = Buffer.concat(chunks);
return resolve(JSON.parse(data.toString()));
} catch (err) {
} catch {
reject(new Error('Error parsing package.json'));
}
},
Expand Down
2 changes: 1 addition & 1 deletion app/common/adapter/BugVersionStore.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { AccessLevel, SingletonProto } from '@eggjs/tegg';
import { BugVersion } from '../../core/entity/BugVersion';
import { BugVersion } from '../../core/entity/BugVersion.js';

@SingletonProto({
accessLevel: AccessLevel.PUBLIC,
Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/NFSAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
} from '@eggjs/tegg';
import { Pointcut } from '@eggjs/tegg/aop';
import { EggLogger } from 'egg';
import { AsyncTimer } from '../aop/AsyncTimer';
import { NFSClient } from '../typing';
import { AsyncTimer } from '../aop/AsyncTimer.js';
import { NFSClient } from '../typing.js';

const INSTANCE_NAME = 'nfsAdapter';

Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/NPMRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import {
HttpClientRequestOptions,
HttpClientResponse,
} from 'egg';
import { PackageManifestType } from '../../repository/PackageRepository';
import { isTimeoutError } from '../ErrorUtil';
import { PackageManifestType } from '../../repository/PackageRepository.js';
import { isTimeoutError } from '../ErrorUtil.js';

type HttpMethod = HttpClientRequestOptions['method'];

Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/binary/AbstractBinary.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ImplDecorator, Inject, QualifierImplDecoratorUtil } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { EggHttpClient, EggLogger } from 'egg';
import { BinaryName, BinaryTaskConfig } from '../../../../config/binaries';
import { BinaryType } from '../../enum/Binary.js';
import { BinaryName, BinaryTaskConfig } from '../../../../config/binaries.js';

export type BinaryItem = {
name: string;
Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/binary/ApiBinary.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { Inject, SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { EggAppConfig } from 'egg';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Api)
Expand Down
8 changes: 4 additions & 4 deletions app/common/adapter/binary/BucketBinary.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName, BinaryTaskConfig } from '../../../../config/binaries';
import path from 'node:path';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary.js';
import binaries, { BinaryName, BinaryTaskConfig } from '../../../../config/binaries.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Bucket)
Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/binary/ChromeForTestingBinary.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { basename } from 'node:path';
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.ChromeForTesting)
Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/binary/CypressBinary.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Cypress)
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/binary/EdgedriverBinary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import path from 'node:path';
import { SingletonProto } from '@eggjs/tegg';
import {
AbstractBinary, FetchResult, BinaryItem, BinaryAdapter,
} from './AbstractBinary';
import { BinaryType } from '../../enum/Binary';
} from './AbstractBinary.js';
import { BinaryType } from '../../enum/Binary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Edgedriver)
Expand Down Expand Up @@ -175,7 +175,7 @@ export class EdgedriverBinary extends AbstractBinary {
#parseItems(xml: string): BinaryItem[] {
const items: BinaryItem[] = [];
// <Blob><Name>124.0.2478.97/edgedriver_arm64.zip</Name><Url>https://msedgewebdriverstorage.blob.core.windows.net/edgewebdriver/124.0.2478.97/edgedriver_arm64.zip</Url><Properties><Last-Modified>Fri, 10 May 2024 18:35:44 GMT</Last-Modified><Etag>0x8DC712000713C13</Etag><Content-Length>9191362</Content-Length><Content-Type>application/octet-stream</Content-Type><Content-Encoding /><Content-Language /><Content-MD5>1tjPTf5JU6KKB06Qf1JOGw==</Content-MD5><Cache-Control /><BlobType>BlockBlob</BlobType><LeaseStatus>unlocked</LeaseStatus></Properties></Blob>
const fileRe = /<Blob><Name>([^<]+?)<\/Name><Url>([^<]+?)<\/Url><Properties><Last\-Modified>([^<]+?)<\/Last\-Modified><Etag>(?:[^<]+?)<\/Etag><Content\-Length>(\d+)<\/Content\-Length>/g;
const fileRe = /<Blob><Name>([^<]+?)<\/Name><Url>([^<]+?)<\/Url><Properties><Last-Modified>([^<]+?)<\/Last-Modified><Etag>(?:[^<]+?)<\/Etag><Content-Length>(\d+)<\/Content-Length>/g;
const matchItems = xml.matchAll(fileRe);
for (const m of matchItems) {
const fullname = m[1].trim();
Expand Down
8 changes: 4 additions & 4 deletions app/common/adapter/binary/ElectronBinary.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName } from '../../../../config/binaries';
import { BinaryAdapter, BinaryItem, FetchResult } from './AbstractBinary';
import { GithubBinary } from './GithubBinary';
import binaries, { BinaryName } from '../../../../config/binaries.js';
import { BinaryType } from '../../enum/Binary.js';
import { BinaryAdapter, BinaryItem, FetchResult } from './AbstractBinary.js';
import { GithubBinary } from './GithubBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Electron)
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/binary/GithubBinary.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName, BinaryTaskConfig } from '../../../../config/binaries';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import binaries, { BinaryName, BinaryTaskConfig } from '../../../../config/binaries.js';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.GitHub)
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/binary/ImageminBinary.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName } from '../../../../config/binaries';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import binaries, { BinaryName } from '../../../../config/binaries.js';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Imagemin)
Expand Down
8 changes: 4 additions & 4 deletions app/common/adapter/binary/NodeBinary.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { basename } from 'node:path';
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName } from '../../../../config/binaries';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BinaryType } from '../../enum/Binary.js';
import binaries, { BinaryName } from '../../../../config/binaries.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Node)
Expand Down Expand Up @@ -30,7 +30,7 @@ export class NodeBinary extends AbstractBinary {
// <a href="/dist/v18.15.0/SHASUMS256.txt.asc">SHASUMS256.txt.asc</a> 04-Nov-2024 17:29 3.7 KB
// <a href="/dist/v18.15.0/SHASUMS256.txt.sig">SHASUMS256.txt.sig</a> 04-Nov-2024 17:29 310 B
// <a href="/dist/v18.15.0/SHASUMS256.txt">SHASUMS256.txt</a> 04-Nov-2024 17:29 3.2 KB
const re = /<a href="([^\"]+?)"[^>]*?>[^<]+?<\/a>\s+?((?:[\w\-]+? \w{2}\:\d{2})|\-)\s+?([\d\.\-\s\w]+)/ig;
const re = /<a href="([^"]+?)"[^>]*?>[^<]+?<\/a>\s+?((?:[\w-]+? \w{2}:\d{2})|-)\s+?([\d.\-\s\w]+)/ig;
const matchs = html.matchAll(re);
const items: BinaryItem[] = [];
for (const m of matchs) {
Expand Down
8 changes: 4 additions & 4 deletions app/common/adapter/binary/NodePreGypBinary.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName } from '../../../../config/binaries';
import { join } from 'node:path';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { SingletonProto } from '@eggjs/tegg';
import binaries, { BinaryName } from '../../../../config/binaries.js';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.NodePreGyp)
Expand Down
8 changes: 4 additions & 4 deletions app/common/adapter/binary/NwjsBinary.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries from '../../../../config/binaries';
import { FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BucketBinary } from './BucketBinary';
import binaries from '../../../../config/binaries.js';
import { BinaryType } from '../../enum/Binary.js';
import { FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';
import { BucketBinary } from './BucketBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Nwjs)
Expand Down
5 changes: 2 additions & 3 deletions app/common/adapter/binary/PlaywrightBinary.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@

import { AbstractBinary, BinaryAdapter, BinaryItem, FetchResult } from './AbstractBinary';
import util from 'node:util';
import path from 'node:path';
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, BinaryAdapter, BinaryItem, FetchResult } from './AbstractBinary.js';

const PACKAGE_URL = 'https://registry.npmjs.com/playwright-core';
const DOWNLOAD_HOST = 'https://playwright.azureedge.net/';
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/binary/PrismaBinary.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import path from 'node:path';
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import binaries, { BinaryName } from '../../../../config/binaries';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BinaryType } from '../../enum/Binary.js';
import binaries, { BinaryName } from '../../../../config/binaries.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Prisma)
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/binary/PuppeteerBinary.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Puppeteer)
Expand Down Expand Up @@ -37,7 +37,7 @@ export class PuppeteerBinary extends AbstractBinary {
// };
const unpkgURL = 'https://unpkg.com/puppeteer-core@latest/lib/cjs/puppeteer/revisions.js';
const text = await this.requestXml(unpkgURL);
const m = /chromium:\s+\'(\d+)\'\,/.exec(text);
const m = /chromium:\s+'(\d+)',/.exec(text);
if (m && !chromiumRevisions.has(m[1])) {
chromiumRevisions.set(m[1], new Date().toISOString());
}
Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/binary/SqlcipherBinary.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { SingletonProto } from '@eggjs/tegg';
import { BinaryType } from '../../enum/Binary';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary';
import { BinaryType } from '../../enum/Binary.js';
import { AbstractBinary, FetchResult, BinaryItem, BinaryAdapter } from './AbstractBinary.js';

@SingletonProto()
@BinaryAdapter(BinaryType.Sqlcipher)
Expand Down
4 changes: 2 additions & 2 deletions app/common/adapter/changesStream/AbstractChangesStream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import {
Inject,
QualifierImplDecoratorUtil,
} from '@eggjs/tegg';
import { RegistryType } from '../../../common/enum/Registry';
import { Registry } from '../../../core/entity/Registry';
import { RegistryType } from '../../../common/enum/Registry.js';
import { Registry } from '../../../core/entity/Registry.js';
import {
EggHttpClient,
EggLogger,
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/changesStream/CnpmcoreChangesStream.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { RegistryType } from '../../../common/enum/Registry';
import { Registry } from '../../../core/entity/Registry';
import { E500 } from 'egg-errors';
import { AbstractChangeStream, RegistryChangesStream } from './AbstractChangesStream';
import { RegistryType } from '../../../common/enum/Registry.js';
import { Registry } from '../../../core/entity/Registry.js';
import { AbstractChangeStream, RegistryChangesStream } from './AbstractChangesStream.js';

@SingletonProto()
@RegistryChangesStream(RegistryType.Cnpmcore)
Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/changesStream/CnpmjsorgChangesStream.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { RegistryType } from '../../../common/enum/Registry';
import { Registry } from '../../../core/entity/Registry';
import { E500 } from 'egg-errors';
import { AbstractChangeStream, RegistryChangesStream } from './AbstractChangesStream';
import { RegistryType } from '../../../common/enum/Registry.js';
import { Registry } from '../../../core/entity/Registry.js';
import { AbstractChangeStream, RegistryChangesStream } from './AbstractChangesStream.js';

const MAX_LIMIT = 10000;

Expand Down
6 changes: 3 additions & 3 deletions app/common/adapter/changesStream/NpmChangesStream.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { SingletonProto } from '@eggjs/tegg';
import { E500 } from 'egg-errors';
import { RegistryType } from '../../../common/enum/Registry';
import { Registry } from '../../../core/entity/Registry';
import { AbstractChangeStream, ChangesStreamChange, RegistryChangesStream } from './AbstractChangesStream';
import { RegistryType } from '../../../common/enum/Registry.js';
import { Registry } from '../../../core/entity/Registry.js';
import { AbstractChangeStream, ChangesStreamChange, RegistryChangesStream } from './AbstractChangesStream.js';

@SingletonProto()
@RegistryChangesStream(RegistryType.Npm)
Expand Down
2 changes: 1 addition & 1 deletion app/common/dayjs.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';
import customParseFormat from 'dayjs/plugin/customParseFormat.js';
dayjs.extend(customParseFormat);

export default dayjs;
3 changes: 2 additions & 1 deletion app/common/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
"name": "cnpmcore-common",
"eggModule": {
"name": "cnpmcoreCommon"
}
},
"type": "module"
}
Loading
Loading