@slicemachine/init 0.1.1-dev-plugins-m3.2 → 0.1.1-dev-plugins-m3.4

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.
@@ -52,7 +52,7 @@ const getRandomRepositoryDomain = () => {
52
52
  };
53
53
  const formatRepositoryDomain = (rawDomain) => {
54
54
  let domain = rawDomain.toLowerCase();
55
- domain = domain.replaceAll(" ", "-").replaceAll("_", "-");
55
+ domain = domain.replace(/\s/g, "-").replace(/_/g, "-");
56
56
  domain = domain.replace(/[^a-z0-9-]/g, "");
57
57
  domain = domain.replace(/(^-+)|(-+$)/g, "");
58
58
  domain = domain.replace(/-{2,}/g, "-");
@@ -1 +1 @@
1
- {"version":3,"file":"repositoryDomain.cjs","sources":["../../../src/lib/repositoryDomain.ts"],"sourcesContent":["const abc123 = `abcdefghijklmnopqrstuvwxyz0123456789`;\n\n// 11 characters long or less adjectives\nconst ADJECTIVES = [\n\t\"adorable\",\n\t\"beautiful\",\n\t\"charming\",\n\t\"cloudy\",\n\t\"delightful\",\n\t\"focused\",\n\t\"honest\",\n\t\"inspiring\",\n\t\"lovable\",\n\t\"melodious\",\n\t\"pleasant\",\n\t\"pretty\",\n\t\"shiny\",\n\t\"sugary\",\n\t\"tall\",\n\t\"valliant\",\n].filter((adjective) => adjective.length <= 11);\n\n// 11 characters long or less bakeries\nconst BAKERIES = [\n\t\"baguette\",\n\t\"briouat\",\n\t\"crepe\",\n\t\"croissant\",\n\t\"donut\",\n\t\"eclair\",\n\t\"flaons\",\n\t\"kolompeh\",\n\t\"macaron\",\n\t\"paste\",\n\t\"pretzel\",\n\t\"rustico\",\n\t\"semla\",\n\t\"strudel\",\n\t\"taiyaki\",\n\t\"toast\",\n].filter((bakery) => bakery.length <= 11);\n\nconst pickRandom = (arrOrString: string | string[]): string => {\n\treturn arrOrString[Math.floor(Math.random() * arrOrString.length)];\n};\n\nconst randomString = (length: number): string => {\n\tlet result = \"\";\n\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += pickRandom(abc123);\n\t}\n\n\treturn result;\n};\n\nexport const getRandomRepositoryDomain = (): string => {\n\treturn formatRepositoryDomain(\n\t\t`${pickRandom(ADJECTIVES)}-${pickRandom(BAKERIES)}-${randomString(6)}`,\n\t);\n};\n\nexport const formatRepositoryDomain = (rawDomain: string): string => {\n\t// Lowercase anything\n\tlet domain = rawDomain.toLowerCase();\n\n\t/**\n\t * Replace whitespaces and underscores with hyphens\n\t */\n\tdomain = domain.replaceAll(\" \", \"-\").replaceAll(\"_\", \"-\");\n\n\t/**\n\t * Replace not allowed characters\n\t *\n\t * @see https://regex101.com/r/f2Hr0k/1\n\t */\n\tdomain = domain.replace(/[^a-z0-9-]/g, \"\");\n\n\t/**\n\t * Trim leading and trailing hyphens\n\t *\n\t * @see https://regex101.com/r/ivngfc/1\n\t */\n\tdomain = domain.replace(/(^-+)|(-+$)/g, \"\");\n\n\t/**\n\t * Replace multi hyphens\n\t *\n\t * @see https://regex101.com/r/t9qxh0/1\n\t */\n\tdomain = domain.replace(/-{2,}/g, \"-\");\n\n\treturn domain;\n};\n\nconst isFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n): boolean => {\n\treturn (\n\t\tmaybeFormattedRepositoryDomain ===\n\t\tformatRepositoryDomain(maybeFormattedRepositoryDomain)\n\t);\n};\n\nconst assertFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n\tcaller: string,\n): void => {\n\tif (!isFormattedRepositoryDomain(maybeFormattedRepositoryDomain)) {\n\t\tthrow new TypeError(\n\t\t\t`\\`${caller}()\\` can only validate formatted repository domains, use the \\`formatRepositoryDomain()\\` first.`,\n\t\t);\n\t}\n};\n\nexport const ValidationErrors = {\n\tLessThan4: \"LessThan4\",\n\tMoreThan30: \"MoreThan30\",\n\tAlreadyExists: \"AlreadyExists\",\n} as const;\ntype ValidationErrors =\n\t(typeof ValidationErrors)[keyof typeof ValidationErrors];\n\ntype ValidateRepositoryDomainArgs = { domain: string };\ntype ValidateRepositoryDomainReturnType = Record<\n\tExclude<ValidationErrors, \"AlreadyExists\"> | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomain = (\n\targs: ValidateRepositoryDomainArgs,\n): ValidateRepositoryDomainReturnType => {\n\tassertFormattedRepositoryDomain(args.domain, \"validateRepositoryDomain\");\n\n\tconst errors: Record<Exclude<ValidationErrors, \"AlreadyExists\">, boolean> = {\n\t\t/**\n\t\t * Checks non [a-z] first character\n\t\t *\n\t\t * @see https://regex101.com/r/OBZ6UH/1\n\t\t */\n\t\t[ValidationErrors.LessThan4]: args.domain.length < 4,\n\t\t[ValidationErrors.MoreThan30]: args.domain.length > 30,\n\t};\n\n\treturn {\n\t\t...errors,\n\t\thasErrors: Object.values(errors).some(Boolean),\n\t};\n};\n\ntype ValidateRepositoryDomainAndAvailabilityArgs = {\n\tdomain: string;\n\texistsFn: (domain: string) => boolean | Promise<boolean>;\n};\ntype ValidateRepositoryDomainAndAvailabilityReturnType = Record<\n\tValidationErrors | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomainAndAvailability = async (\n\targs: ValidateRepositoryDomainAndAvailabilityArgs,\n): Promise<ValidateRepositoryDomainAndAvailabilityReturnType> => {\n\tassertFormattedRepositoryDomain(\n\t\targs.domain,\n\t\t\"validateRepositoryDomainAndAvailability\",\n\t);\n\n\tconst errors = validateRepositoryDomain(args);\n\n\tif (!errors.hasErrors && (await args.existsFn(args.domain))) {\n\t\treturn {\n\t\t\t...errors,\n\t\t\t[ValidationErrors.AlreadyExists]: true,\n\t\t\thasErrors: true,\n\t\t};\n\t}\n\n\treturn {\n\t\t...errors,\n\t\t[ValidationErrors.AlreadyExists]: false,\n\t};\n};\n\ntype GetErrorMessageForRepositoryDomainValidationArgs = {\n\tvalidation:\n\t\t| ValidateRepositoryDomainReturnType\n\t\t| ValidateRepositoryDomainAndAvailabilityReturnType;\n\tdisplayDomain?: string;\n};\nexport const getErrorMessageForRepositoryDomainValidation = (\n\targs: GetErrorMessageForRepositoryDomainValidationArgs,\n): string | null => {\n\tif (args.validation.hasErrors) {\n\t\tconst formattedErrors: string[] = [];\n\n\t\tif (args.validation.LessThan4) {\n\t\t\tformattedErrors.push(\"must be 4 characters long or more\");\n\t\t}\n\t\tif (args.validation.MoreThan30) {\n\t\t\tformattedErrors.push(\"must be 30 characters long or less\");\n\t\t}\n\t\tif (\n\t\t\tValidationErrors.AlreadyExists in args.validation &&\n\t\t\targs.validation.AlreadyExists\n\t\t) {\n\t\t\tformattedErrors.push(\"is already taken\");\n\t\t}\n\n\t\tif (!formattedErrors.length) {\n\t\t\tformattedErrors.push(\n\t\t\t\t`has unhandled errors ${JSON.stringify(args.validation)}`,\n\t\t\t);\n\t\t}\n\n\t\treturn `Repository name${\n\t\t\targs.displayDomain ? ` ${args.displayDomain}` : \"\"\n\t\t} ${formattedErrors.join(\" and \")}`;\n\t}\n\n\treturn null;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repositoryDomain.cjs","sources":["../../../src/lib/repositoryDomain.ts"],"sourcesContent":["const abc123 = `abcdefghijklmnopqrstuvwxyz0123456789`;\n\n// 11 characters long or less adjectives\nconst ADJECTIVES = [\n\t\"adorable\",\n\t\"beautiful\",\n\t\"charming\",\n\t\"cloudy\",\n\t\"delightful\",\n\t\"focused\",\n\t\"honest\",\n\t\"inspiring\",\n\t\"lovable\",\n\t\"melodious\",\n\t\"pleasant\",\n\t\"pretty\",\n\t\"shiny\",\n\t\"sugary\",\n\t\"tall\",\n\t\"valliant\",\n].filter((adjective) => adjective.length <= 11);\n\n// 11 characters long or less bakeries\nconst BAKERIES = [\n\t\"baguette\",\n\t\"briouat\",\n\t\"crepe\",\n\t\"croissant\",\n\t\"donut\",\n\t\"eclair\",\n\t\"flaons\",\n\t\"kolompeh\",\n\t\"macaron\",\n\t\"paste\",\n\t\"pretzel\",\n\t\"rustico\",\n\t\"semla\",\n\t\"strudel\",\n\t\"taiyaki\",\n\t\"toast\",\n].filter((bakery) => bakery.length <= 11);\n\nconst pickRandom = (arrOrString: string | string[]): string => {\n\treturn arrOrString[Math.floor(Math.random() * arrOrString.length)];\n};\n\nconst randomString = (length: number): string => {\n\tlet result = \"\";\n\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += pickRandom(abc123);\n\t}\n\n\treturn result;\n};\n\nexport const getRandomRepositoryDomain = (): string => {\n\treturn formatRepositoryDomain(\n\t\t`${pickRandom(ADJECTIVES)}-${pickRandom(BAKERIES)}-${randomString(6)}`,\n\t);\n};\n\nexport const formatRepositoryDomain = (rawDomain: string): string => {\n\t// Lowercase anything\n\tlet domain = rawDomain.toLowerCase();\n\n\t/**\n\t * Replace whitespaces and underscores with hyphens\n\t */\n\tdomain = domain.replace(/\\s/g, \"-\").replace(/_/g, \"-\");\n\n\t/**\n\t * Replace not allowed characters\n\t *\n\t * @see https://regex101.com/r/f2Hr0k/1\n\t */\n\tdomain = domain.replace(/[^a-z0-9-]/g, \"\");\n\n\t/**\n\t * Trim leading and trailing hyphens\n\t *\n\t * @see https://regex101.com/r/ivngfc/1\n\t */\n\tdomain = domain.replace(/(^-+)|(-+$)/g, \"\");\n\n\t/**\n\t * Replace multi hyphens\n\t *\n\t * @see https://regex101.com/r/t9qxh0/1\n\t */\n\tdomain = domain.replace(/-{2,}/g, \"-\");\n\n\treturn domain;\n};\n\nconst isFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n): boolean => {\n\treturn (\n\t\tmaybeFormattedRepositoryDomain ===\n\t\tformatRepositoryDomain(maybeFormattedRepositoryDomain)\n\t);\n};\n\nconst assertFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n\tcaller: string,\n): void => {\n\tif (!isFormattedRepositoryDomain(maybeFormattedRepositoryDomain)) {\n\t\tthrow new TypeError(\n\t\t\t`\\`${caller}()\\` can only validate formatted repository domains, use the \\`formatRepositoryDomain()\\` first.`,\n\t\t);\n\t}\n};\n\nexport const ValidationErrors = {\n\tLessThan4: \"LessThan4\",\n\tMoreThan30: \"MoreThan30\",\n\tAlreadyExists: \"AlreadyExists\",\n} as const;\ntype ValidationErrors =\n\t(typeof ValidationErrors)[keyof typeof ValidationErrors];\n\ntype ValidateRepositoryDomainArgs = { domain: string };\ntype ValidateRepositoryDomainReturnType = Record<\n\tExclude<ValidationErrors, \"AlreadyExists\"> | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomain = (\n\targs: ValidateRepositoryDomainArgs,\n): ValidateRepositoryDomainReturnType => {\n\tassertFormattedRepositoryDomain(args.domain, \"validateRepositoryDomain\");\n\n\tconst errors: Record<Exclude<ValidationErrors, \"AlreadyExists\">, boolean> = {\n\t\t/**\n\t\t * Checks non [a-z] first character\n\t\t *\n\t\t * @see https://regex101.com/r/OBZ6UH/1\n\t\t */\n\t\t[ValidationErrors.LessThan4]: args.domain.length < 4,\n\t\t[ValidationErrors.MoreThan30]: args.domain.length > 30,\n\t};\n\n\treturn {\n\t\t...errors,\n\t\thasErrors: Object.values(errors).some(Boolean),\n\t};\n};\n\ntype ValidateRepositoryDomainAndAvailabilityArgs = {\n\tdomain: string;\n\texistsFn: (domain: string) => boolean | Promise<boolean>;\n};\ntype ValidateRepositoryDomainAndAvailabilityReturnType = Record<\n\tValidationErrors | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomainAndAvailability = async (\n\targs: ValidateRepositoryDomainAndAvailabilityArgs,\n): Promise<ValidateRepositoryDomainAndAvailabilityReturnType> => {\n\tassertFormattedRepositoryDomain(\n\t\targs.domain,\n\t\t\"validateRepositoryDomainAndAvailability\",\n\t);\n\n\tconst errors = validateRepositoryDomain(args);\n\n\tif (!errors.hasErrors && (await args.existsFn(args.domain))) {\n\t\treturn {\n\t\t\t...errors,\n\t\t\t[ValidationErrors.AlreadyExists]: true,\n\t\t\thasErrors: true,\n\t\t};\n\t}\n\n\treturn {\n\t\t...errors,\n\t\t[ValidationErrors.AlreadyExists]: false,\n\t};\n};\n\ntype GetErrorMessageForRepositoryDomainValidationArgs = {\n\tvalidation:\n\t\t| ValidateRepositoryDomainReturnType\n\t\t| ValidateRepositoryDomainAndAvailabilityReturnType;\n\tdisplayDomain?: string;\n};\nexport const getErrorMessageForRepositoryDomainValidation = (\n\targs: GetErrorMessageForRepositoryDomainValidationArgs,\n): string | null => {\n\tif (args.validation.hasErrors) {\n\t\tconst formattedErrors: string[] = [];\n\n\t\tif (args.validation.LessThan4) {\n\t\t\tformattedErrors.push(\"must be 4 characters long or more\");\n\t\t}\n\t\tif (args.validation.MoreThan30) {\n\t\t\tformattedErrors.push(\"must be 30 characters long or less\");\n\t\t}\n\t\tif (\n\t\t\tValidationErrors.AlreadyExists in args.validation &&\n\t\t\targs.validation.AlreadyExists\n\t\t) {\n\t\t\tformattedErrors.push(\"is already taken\");\n\t\t}\n\n\t\tif (!formattedErrors.length) {\n\t\t\tformattedErrors.push(\n\t\t\t\t`has unhandled errors ${JSON.stringify(args.validation)}`,\n\t\t\t);\n\t\t}\n\n\t\treturn `Repository name${\n\t\t\targs.displayDomain ? ` ${args.displayDomain}` : \"\"\n\t\t} ${formattedErrors.join(\" and \")}`;\n\t}\n\n\treturn null;\n};\n"],"names":[],"mappings":";;AAAA,MAAM,SAAS;AAGf,MAAM,aAAa;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACA,EAAC,OAAO,CAAC,cAAc,UAAU,UAAU,EAAE;AAG9C,MAAM,WAAW;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACA,EAAC,OAAO,CAAC,WAAW,OAAO,UAAU,EAAE;AAExC,MAAM,aAAa,CAAC,gBAA0C;AACtD,SAAA,YAAY,KAAK,MAAM,KAAK,WAAW,YAAY,MAAM,CAAC;AAClE;AAEA,MAAM,eAAe,CAAC,WAA0B;AAC/C,MAAI,SAAS;AAEb,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAChC,cAAU,WAAW,MAAM;AAAA,EAC3B;AAEM,SAAA;AACR;AAEO,MAAM,4BAA4B,MAAa;AAC9C,SAAA,uBACN,GAAG,WAAW,UAAU,KAAK,WAAW,QAAQ,KAAK,aAAa,CAAC,GAAG;AAExE;AAEa,MAAA,yBAAyB,CAAC,cAA6B;AAE/D,MAAA,SAAS,UAAU;AAKvB,WAAS,OAAO,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,GAAG;AAO5C,WAAA,OAAO,QAAQ,eAAe,EAAE;AAOhC,WAAA,OAAO,QAAQ,gBAAgB,EAAE;AAOjC,WAAA,OAAO,QAAQ,UAAU,GAAG;AAE9B,SAAA;AACR;AAEA,MAAM,8BAA8B,CACnC,mCACY;AAEX,SAAA,mCACA,uBAAuB,8BAA8B;AAEvD;AAEA,MAAM,kCAAkC,CACvC,gCACA,WACS;AACL,MAAA,CAAC,4BAA4B,8BAA8B,GAAG;AAC3D,UAAA,IAAI,UACT,KAAK,wGAAwG;AAAA,EAE9G;AACF;AAEO,MAAM,mBAAmB;AAAA,EAC/B,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;;AAUH,MAAA,2BAA2B,CACvC,SACuC;AACP,kCAAA,KAAK,QAAQ,0BAA0B;AAEvE,QAAM,SAAsE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM3E,CAAC,iBAAiB,SAAS,GAAG,KAAK,OAAO,SAAS;AAAA,IACnD,CAAC,iBAAiB,UAAU,GAAG,KAAK,OAAO,SAAS;AAAA,EAAA;AAG9C,SAAA;AAAA,IACN,GAAG;AAAA,IACH,WAAW,OAAO,OAAO,MAAM,EAAE,KAAK,OAAO;AAAA,EAAA;AAE/C;AAUa,MAAA,0CAA0C,OACtD,SAC+D;AAE9D,kCAAA,KAAK,QACL,yCAAyC;AAGpC,QAAA,SAAS,yBAAyB,IAAI;AAExC,MAAA,CAAC,OAAO,aAAc,MAAM,KAAK,SAAS,KAAK,MAAM,GAAI;AACrD,WAAA;AAAA,MACN,GAAG;AAAA,MACH,CAAC,iBAAiB,aAAa,GAAG;AAAA,MAClC,WAAW;AAAA,IAAA;AAAA,EAEZ;AAEM,SAAA;AAAA,IACN,GAAG;AAAA,IACH,CAAC,iBAAiB,aAAa,GAAG;AAAA,EAAA;AAEpC;AAQa,MAAA,+CAA+C,CAC3D,SACkB;AACd,MAAA,KAAK,WAAW,WAAW;AAC9B,UAAM,kBAA4B,CAAA;AAE9B,QAAA,KAAK,WAAW,WAAW;AAC9B,sBAAgB,KAAK,mCAAmC;AAAA,IACxD;AACG,QAAA,KAAK,WAAW,YAAY;AAC/B,sBAAgB,KAAK,oCAAoC;AAAA,IACzD;AACD,QACC,iBAAiB,iBAAiB,KAAK,cACvC,KAAK,WAAW,eACf;AACD,sBAAgB,KAAK,kBAAkB;AAAA,IACvC;AAEG,QAAA,CAAC,gBAAgB,QAAQ;AAC5B,sBAAgB,KACf,wBAAwB,KAAK,UAAU,KAAK,UAAU,GAAG;AAAA,IAE1D;AAEM,WAAA,kBACN,KAAK,gBAAgB,IAAI,KAAK,kBAAkB,MAC7C,gBAAgB,KAAK,OAAO;AAAA,EAChC;AAEM,SAAA;AACR;;;;;;;"}
@@ -50,7 +50,7 @@ const getRandomRepositoryDomain = () => {
50
50
  };
51
51
  const formatRepositoryDomain = (rawDomain) => {
52
52
  let domain = rawDomain.toLowerCase();
53
- domain = domain.replaceAll(" ", "-").replaceAll("_", "-");
53
+ domain = domain.replace(/\s/g, "-").replace(/_/g, "-");
54
54
  domain = domain.replace(/[^a-z0-9-]/g, "");
55
55
  domain = domain.replace(/(^-+)|(-+$)/g, "");
56
56
  domain = domain.replace(/-{2,}/g, "-");
@@ -1 +1 @@
1
- {"version":3,"file":"repositoryDomain.js","sources":["../../../src/lib/repositoryDomain.ts"],"sourcesContent":["const abc123 = `abcdefghijklmnopqrstuvwxyz0123456789`;\n\n// 11 characters long or less adjectives\nconst ADJECTIVES = [\n\t\"adorable\",\n\t\"beautiful\",\n\t\"charming\",\n\t\"cloudy\",\n\t\"delightful\",\n\t\"focused\",\n\t\"honest\",\n\t\"inspiring\",\n\t\"lovable\",\n\t\"melodious\",\n\t\"pleasant\",\n\t\"pretty\",\n\t\"shiny\",\n\t\"sugary\",\n\t\"tall\",\n\t\"valliant\",\n].filter((adjective) => adjective.length <= 11);\n\n// 11 characters long or less bakeries\nconst BAKERIES = [\n\t\"baguette\",\n\t\"briouat\",\n\t\"crepe\",\n\t\"croissant\",\n\t\"donut\",\n\t\"eclair\",\n\t\"flaons\",\n\t\"kolompeh\",\n\t\"macaron\",\n\t\"paste\",\n\t\"pretzel\",\n\t\"rustico\",\n\t\"semla\",\n\t\"strudel\",\n\t\"taiyaki\",\n\t\"toast\",\n].filter((bakery) => bakery.length <= 11);\n\nconst pickRandom = (arrOrString: string | string[]): string => {\n\treturn arrOrString[Math.floor(Math.random() * arrOrString.length)];\n};\n\nconst randomString = (length: number): string => {\n\tlet result = \"\";\n\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += pickRandom(abc123);\n\t}\n\n\treturn result;\n};\n\nexport const getRandomRepositoryDomain = (): string => {\n\treturn formatRepositoryDomain(\n\t\t`${pickRandom(ADJECTIVES)}-${pickRandom(BAKERIES)}-${randomString(6)}`,\n\t);\n};\n\nexport const formatRepositoryDomain = (rawDomain: string): string => {\n\t// Lowercase anything\n\tlet domain = rawDomain.toLowerCase();\n\n\t/**\n\t * Replace whitespaces and underscores with hyphens\n\t */\n\tdomain = domain.replaceAll(\" \", \"-\").replaceAll(\"_\", \"-\");\n\n\t/**\n\t * Replace not allowed characters\n\t *\n\t * @see https://regex101.com/r/f2Hr0k/1\n\t */\n\tdomain = domain.replace(/[^a-z0-9-]/g, \"\");\n\n\t/**\n\t * Trim leading and trailing hyphens\n\t *\n\t * @see https://regex101.com/r/ivngfc/1\n\t */\n\tdomain = domain.replace(/(^-+)|(-+$)/g, \"\");\n\n\t/**\n\t * Replace multi hyphens\n\t *\n\t * @see https://regex101.com/r/t9qxh0/1\n\t */\n\tdomain = domain.replace(/-{2,}/g, \"-\");\n\n\treturn domain;\n};\n\nconst isFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n): boolean => {\n\treturn (\n\t\tmaybeFormattedRepositoryDomain ===\n\t\tformatRepositoryDomain(maybeFormattedRepositoryDomain)\n\t);\n};\n\nconst assertFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n\tcaller: string,\n): void => {\n\tif (!isFormattedRepositoryDomain(maybeFormattedRepositoryDomain)) {\n\t\tthrow new TypeError(\n\t\t\t`\\`${caller}()\\` can only validate formatted repository domains, use the \\`formatRepositoryDomain()\\` first.`,\n\t\t);\n\t}\n};\n\nexport const ValidationErrors = {\n\tLessThan4: \"LessThan4\",\n\tMoreThan30: \"MoreThan30\",\n\tAlreadyExists: \"AlreadyExists\",\n} as const;\ntype ValidationErrors =\n\t(typeof ValidationErrors)[keyof typeof ValidationErrors];\n\ntype ValidateRepositoryDomainArgs = { domain: string };\ntype ValidateRepositoryDomainReturnType = Record<\n\tExclude<ValidationErrors, \"AlreadyExists\"> | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomain = (\n\targs: ValidateRepositoryDomainArgs,\n): ValidateRepositoryDomainReturnType => {\n\tassertFormattedRepositoryDomain(args.domain, \"validateRepositoryDomain\");\n\n\tconst errors: Record<Exclude<ValidationErrors, \"AlreadyExists\">, boolean> = {\n\t\t/**\n\t\t * Checks non [a-z] first character\n\t\t *\n\t\t * @see https://regex101.com/r/OBZ6UH/1\n\t\t */\n\t\t[ValidationErrors.LessThan4]: args.domain.length < 4,\n\t\t[ValidationErrors.MoreThan30]: args.domain.length > 30,\n\t};\n\n\treturn {\n\t\t...errors,\n\t\thasErrors: Object.values(errors).some(Boolean),\n\t};\n};\n\ntype ValidateRepositoryDomainAndAvailabilityArgs = {\n\tdomain: string;\n\texistsFn: (domain: string) => boolean | Promise<boolean>;\n};\ntype ValidateRepositoryDomainAndAvailabilityReturnType = Record<\n\tValidationErrors | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomainAndAvailability = async (\n\targs: ValidateRepositoryDomainAndAvailabilityArgs,\n): Promise<ValidateRepositoryDomainAndAvailabilityReturnType> => {\n\tassertFormattedRepositoryDomain(\n\t\targs.domain,\n\t\t\"validateRepositoryDomainAndAvailability\",\n\t);\n\n\tconst errors = validateRepositoryDomain(args);\n\n\tif (!errors.hasErrors && (await args.existsFn(args.domain))) {\n\t\treturn {\n\t\t\t...errors,\n\t\t\t[ValidationErrors.AlreadyExists]: true,\n\t\t\thasErrors: true,\n\t\t};\n\t}\n\n\treturn {\n\t\t...errors,\n\t\t[ValidationErrors.AlreadyExists]: false,\n\t};\n};\n\ntype GetErrorMessageForRepositoryDomainValidationArgs = {\n\tvalidation:\n\t\t| ValidateRepositoryDomainReturnType\n\t\t| ValidateRepositoryDomainAndAvailabilityReturnType;\n\tdisplayDomain?: string;\n};\nexport const getErrorMessageForRepositoryDomainValidation = (\n\targs: GetErrorMessageForRepositoryDomainValidationArgs,\n): string | null => {\n\tif (args.validation.hasErrors) {\n\t\tconst formattedErrors: string[] = [];\n\n\t\tif (args.validation.LessThan4) {\n\t\t\tformattedErrors.push(\"must be 4 characters long or more\");\n\t\t}\n\t\tif (args.validation.MoreThan30) {\n\t\t\tformattedErrors.push(\"must be 30 characters long or less\");\n\t\t}\n\t\tif (\n\t\t\tValidationErrors.AlreadyExists in args.validation &&\n\t\t\targs.validation.AlreadyExists\n\t\t) {\n\t\t\tformattedErrors.push(\"is already taken\");\n\t\t}\n\n\t\tif (!formattedErrors.length) {\n\t\t\tformattedErrors.push(\n\t\t\t\t`has unhandled errors ${JSON.stringify(args.validation)}`,\n\t\t\t);\n\t\t}\n\n\t\treturn `Repository name${\n\t\t\targs.displayDomain ? ` ${args.displayDomain}` : \"\"\n\t\t} ${formattedErrors.join(\" and \")}`;\n\t}\n\n\treturn null;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repositoryDomain.js","sources":["../../../src/lib/repositoryDomain.ts"],"sourcesContent":["const abc123 = `abcdefghijklmnopqrstuvwxyz0123456789`;\n\n// 11 characters long or less adjectives\nconst ADJECTIVES = [\n\t\"adorable\",\n\t\"beautiful\",\n\t\"charming\",\n\t\"cloudy\",\n\t\"delightful\",\n\t\"focused\",\n\t\"honest\",\n\t\"inspiring\",\n\t\"lovable\",\n\t\"melodious\",\n\t\"pleasant\",\n\t\"pretty\",\n\t\"shiny\",\n\t\"sugary\",\n\t\"tall\",\n\t\"valliant\",\n].filter((adjective) => adjective.length <= 11);\n\n// 11 characters long or less bakeries\nconst BAKERIES = [\n\t\"baguette\",\n\t\"briouat\",\n\t\"crepe\",\n\t\"croissant\",\n\t\"donut\",\n\t\"eclair\",\n\t\"flaons\",\n\t\"kolompeh\",\n\t\"macaron\",\n\t\"paste\",\n\t\"pretzel\",\n\t\"rustico\",\n\t\"semla\",\n\t\"strudel\",\n\t\"taiyaki\",\n\t\"toast\",\n].filter((bakery) => bakery.length <= 11);\n\nconst pickRandom = (arrOrString: string | string[]): string => {\n\treturn arrOrString[Math.floor(Math.random() * arrOrString.length)];\n};\n\nconst randomString = (length: number): string => {\n\tlet result = \"\";\n\n\tfor (let i = 0; i < length; i++) {\n\t\tresult += pickRandom(abc123);\n\t}\n\n\treturn result;\n};\n\nexport const getRandomRepositoryDomain = (): string => {\n\treturn formatRepositoryDomain(\n\t\t`${pickRandom(ADJECTIVES)}-${pickRandom(BAKERIES)}-${randomString(6)}`,\n\t);\n};\n\nexport const formatRepositoryDomain = (rawDomain: string): string => {\n\t// Lowercase anything\n\tlet domain = rawDomain.toLowerCase();\n\n\t/**\n\t * Replace whitespaces and underscores with hyphens\n\t */\n\tdomain = domain.replace(/\\s/g, \"-\").replace(/_/g, \"-\");\n\n\t/**\n\t * Replace not allowed characters\n\t *\n\t * @see https://regex101.com/r/f2Hr0k/1\n\t */\n\tdomain = domain.replace(/[^a-z0-9-]/g, \"\");\n\n\t/**\n\t * Trim leading and trailing hyphens\n\t *\n\t * @see https://regex101.com/r/ivngfc/1\n\t */\n\tdomain = domain.replace(/(^-+)|(-+$)/g, \"\");\n\n\t/**\n\t * Replace multi hyphens\n\t *\n\t * @see https://regex101.com/r/t9qxh0/1\n\t */\n\tdomain = domain.replace(/-{2,}/g, \"-\");\n\n\treturn domain;\n};\n\nconst isFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n): boolean => {\n\treturn (\n\t\tmaybeFormattedRepositoryDomain ===\n\t\tformatRepositoryDomain(maybeFormattedRepositoryDomain)\n\t);\n};\n\nconst assertFormattedRepositoryDomain = (\n\tmaybeFormattedRepositoryDomain: string,\n\tcaller: string,\n): void => {\n\tif (!isFormattedRepositoryDomain(maybeFormattedRepositoryDomain)) {\n\t\tthrow new TypeError(\n\t\t\t`\\`${caller}()\\` can only validate formatted repository domains, use the \\`formatRepositoryDomain()\\` first.`,\n\t\t);\n\t}\n};\n\nexport const ValidationErrors = {\n\tLessThan4: \"LessThan4\",\n\tMoreThan30: \"MoreThan30\",\n\tAlreadyExists: \"AlreadyExists\",\n} as const;\ntype ValidationErrors =\n\t(typeof ValidationErrors)[keyof typeof ValidationErrors];\n\ntype ValidateRepositoryDomainArgs = { domain: string };\ntype ValidateRepositoryDomainReturnType = Record<\n\tExclude<ValidationErrors, \"AlreadyExists\"> | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomain = (\n\targs: ValidateRepositoryDomainArgs,\n): ValidateRepositoryDomainReturnType => {\n\tassertFormattedRepositoryDomain(args.domain, \"validateRepositoryDomain\");\n\n\tconst errors: Record<Exclude<ValidationErrors, \"AlreadyExists\">, boolean> = {\n\t\t/**\n\t\t * Checks non [a-z] first character\n\t\t *\n\t\t * @see https://regex101.com/r/OBZ6UH/1\n\t\t */\n\t\t[ValidationErrors.LessThan4]: args.domain.length < 4,\n\t\t[ValidationErrors.MoreThan30]: args.domain.length > 30,\n\t};\n\n\treturn {\n\t\t...errors,\n\t\thasErrors: Object.values(errors).some(Boolean),\n\t};\n};\n\ntype ValidateRepositoryDomainAndAvailabilityArgs = {\n\tdomain: string;\n\texistsFn: (domain: string) => boolean | Promise<boolean>;\n};\ntype ValidateRepositoryDomainAndAvailabilityReturnType = Record<\n\tValidationErrors | \"hasErrors\",\n\tboolean\n>;\nexport const validateRepositoryDomainAndAvailability = async (\n\targs: ValidateRepositoryDomainAndAvailabilityArgs,\n): Promise<ValidateRepositoryDomainAndAvailabilityReturnType> => {\n\tassertFormattedRepositoryDomain(\n\t\targs.domain,\n\t\t\"validateRepositoryDomainAndAvailability\",\n\t);\n\n\tconst errors = validateRepositoryDomain(args);\n\n\tif (!errors.hasErrors && (await args.existsFn(args.domain))) {\n\t\treturn {\n\t\t\t...errors,\n\t\t\t[ValidationErrors.AlreadyExists]: true,\n\t\t\thasErrors: true,\n\t\t};\n\t}\n\n\treturn {\n\t\t...errors,\n\t\t[ValidationErrors.AlreadyExists]: false,\n\t};\n};\n\ntype GetErrorMessageForRepositoryDomainValidationArgs = {\n\tvalidation:\n\t\t| ValidateRepositoryDomainReturnType\n\t\t| ValidateRepositoryDomainAndAvailabilityReturnType;\n\tdisplayDomain?: string;\n};\nexport const getErrorMessageForRepositoryDomainValidation = (\n\targs: GetErrorMessageForRepositoryDomainValidationArgs,\n): string | null => {\n\tif (args.validation.hasErrors) {\n\t\tconst formattedErrors: string[] = [];\n\n\t\tif (args.validation.LessThan4) {\n\t\t\tformattedErrors.push(\"must be 4 characters long or more\");\n\t\t}\n\t\tif (args.validation.MoreThan30) {\n\t\t\tformattedErrors.push(\"must be 30 characters long or less\");\n\t\t}\n\t\tif (\n\t\t\tValidationErrors.AlreadyExists in args.validation &&\n\t\t\targs.validation.AlreadyExists\n\t\t) {\n\t\t\tformattedErrors.push(\"is already taken\");\n\t\t}\n\n\t\tif (!formattedErrors.length) {\n\t\t\tformattedErrors.push(\n\t\t\t\t`has unhandled errors ${JSON.stringify(args.validation)}`,\n\t\t\t);\n\t\t}\n\n\t\treturn `Repository name${\n\t\t\targs.displayDomain ? ` ${args.displayDomain}` : \"\"\n\t\t} ${formattedErrors.join(\" and \")}`;\n\t}\n\n\treturn null;\n};\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const name = "@slicemachine/init";
4
- const version = "0.1.1-dev-plugins-m3.2";
4
+ const version = "0.1.1-dev-plugins-m3.4";
5
5
  const description = "Init Prismic Slice Machine in your project";
6
6
  const keywords = [
7
7
  "typescript",
@@ -54,7 +54,7 @@ const scripts = {
54
54
  const dependencies = {
55
55
  "@antfu/ni": "^0.20.0",
56
56
  "@lihbr/listr-update-renderer": "^0.5.3",
57
- "@slicemachine/manager": "0.1.1-dev-plugins-m3.2",
57
+ "@slicemachine/manager": "0.1.1-dev-plugins-m3.4",
58
58
  chalk: "^4.1.2",
59
59
  globby: "^13.1.3",
60
60
  listr: "^0.14.3",
@@ -66,7 +66,7 @@ const dependencies = {
66
66
  };
67
67
  const devDependencies = {
68
68
  "@size-limit/preset-small-lib": "^8.2.4",
69
- "@slicemachine/plugin-kit": "0.1.8-dev-plugins-m3.2",
69
+ "@slicemachine/plugin-kit": "0.1.8-dev-plugins-m3.4",
70
70
  "@types/listr": "^0.14.4",
71
71
  "@types/prompts": "^2.4.3",
72
72
  "@types/semver": "^7.3.13",
@@ -92,7 +92,7 @@ const devDependencies = {
92
92
  "vite-plugin-sdk": "^0.1.1",
93
93
  vitest: "^0.27.3"
94
94
  };
95
- const gitHead = "97c0b9943af33864c308306cae6eb924a01d9ac6";
95
+ const gitHead = "7e5980c90b43f55e9ad3ff0885201fdf2f37b34d";
96
96
  const pkg = {
97
97
  name,
98
98
  version,
@@ -1,5 +1,5 @@
1
1
  const name = "@slicemachine/init";
2
- const version = "0.1.1-dev-plugins-m3.2";
2
+ const version = "0.1.1-dev-plugins-m3.4";
3
3
  const description = "Init Prismic Slice Machine in your project";
4
4
  const keywords = [
5
5
  "typescript",
@@ -52,7 +52,7 @@ const scripts = {
52
52
  const dependencies = {
53
53
  "@antfu/ni": "^0.20.0",
54
54
  "@lihbr/listr-update-renderer": "^0.5.3",
55
- "@slicemachine/manager": "0.1.1-dev-plugins-m3.2",
55
+ "@slicemachine/manager": "0.1.1-dev-plugins-m3.4",
56
56
  chalk: "^4.1.2",
57
57
  globby: "^13.1.3",
58
58
  listr: "^0.14.3",
@@ -64,7 +64,7 @@ const dependencies = {
64
64
  };
65
65
  const devDependencies = {
66
66
  "@size-limit/preset-small-lib": "^8.2.4",
67
- "@slicemachine/plugin-kit": "0.1.8-dev-plugins-m3.2",
67
+ "@slicemachine/plugin-kit": "0.1.8-dev-plugins-m3.4",
68
68
  "@types/listr": "^0.14.4",
69
69
  "@types/prompts": "^2.4.3",
70
70
  "@types/semver": "^7.3.13",
@@ -90,7 +90,7 @@ const devDependencies = {
90
90
  "vite-plugin-sdk": "^0.1.1",
91
91
  vitest: "^0.27.3"
92
92
  };
93
- const gitHead = "97c0b9943af33864c308306cae6eb924a01d9ac6";
93
+ const gitHead = "7e5980c90b43f55e9ad3ff0885201fdf2f37b34d";
94
94
  const pkg = {
95
95
  name,
96
96
  version,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slicemachine/init",
3
- "version": "0.1.1-dev-plugins-m3.2",
3
+ "version": "0.1.1-dev-plugins-m3.4",
4
4
  "description": "Init Prismic Slice Machine in your project",
5
5
  "keywords": [
6
6
  "typescript",
@@ -53,7 +53,7 @@
53
53
  "dependencies": {
54
54
  "@antfu/ni": "^0.20.0",
55
55
  "@lihbr/listr-update-renderer": "^0.5.3",
56
- "@slicemachine/manager": "0.1.1-dev-plugins-m3.2",
56
+ "@slicemachine/manager": "0.1.1-dev-plugins-m3.4",
57
57
  "chalk": "^4.1.2",
58
58
  "globby": "^13.1.3",
59
59
  "listr": "^0.14.3",
@@ -65,7 +65,7 @@
65
65
  },
66
66
  "devDependencies": {
67
67
  "@size-limit/preset-small-lib": "^8.2.4",
68
- "@slicemachine/plugin-kit": "0.1.8-dev-plugins-m3.2",
68
+ "@slicemachine/plugin-kit": "0.1.8-dev-plugins-m3.4",
69
69
  "@types/listr": "^0.14.4",
70
70
  "@types/prompts": "^2.4.3",
71
71
  "@types/semver": "^7.3.13",
@@ -91,5 +91,5 @@
91
91
  "vite-plugin-sdk": "^0.1.1",
92
92
  "vitest": "^0.27.3"
93
93
  },
94
- "gitHead": "97c0b9943af33864c308306cae6eb924a01d9ac6"
94
+ "gitHead": "7e5980c90b43f55e9ad3ff0885201fdf2f37b34d"
95
95
  }
@@ -67,7 +67,7 @@ export const formatRepositoryDomain = (rawDomain: string): string => {
67
67
  /**
68
68
  * Replace whitespaces and underscores with hyphens
69
69
  */
70
- domain = domain.replaceAll(" ", "-").replaceAll("_", "-");
70
+ domain = domain.replace(/\s/g, "-").replace(/_/g, "-");
71
71
 
72
72
  /**
73
73
  * Replace not allowed characters