kybernus 2.1.0 → 2.2.0

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.
Files changed (175) hide show
  1. package/node_modules/{@isaacs/balanced-match → balanced-match}/README.md +7 -10
  2. package/node_modules/{@isaacs/balanced-match → balanced-match}/package.json +5 -16
  3. package/node_modules/{@isaacs/brace-expansion → brace-expansion}/README.md +2 -5
  4. package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/commonjs/index.js +1 -1
  5. package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/commonjs/index.js.map +1 -1
  6. package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/esm/index.js +1 -1
  7. package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/esm/index.js.map +1 -1
  8. package/node_modules/{@isaacs/brace-expansion → brace-expansion}/package.json +9 -5
  9. package/node_modules/glob/dist/commonjs/glob.d.ts +8 -0
  10. package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -1
  11. package/node_modules/glob/dist/commonjs/glob.js +2 -1
  12. package/node_modules/glob/dist/commonjs/glob.js.map +1 -1
  13. package/node_modules/glob/dist/commonjs/index.min.js +4 -0
  14. package/node_modules/glob/dist/commonjs/index.min.js.map +7 -0
  15. package/node_modules/glob/dist/commonjs/pattern.d.ts +3 -0
  16. package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -1
  17. package/node_modules/glob/dist/commonjs/pattern.js +4 -0
  18. package/node_modules/glob/dist/commonjs/pattern.js.map +1 -1
  19. package/node_modules/glob/dist/esm/glob.d.ts +8 -0
  20. package/node_modules/glob/dist/esm/glob.d.ts.map +1 -1
  21. package/node_modules/glob/dist/esm/glob.js +2 -1
  22. package/node_modules/glob/dist/esm/glob.js.map +1 -1
  23. package/node_modules/glob/dist/esm/index.min.js +4 -0
  24. package/node_modules/glob/dist/esm/index.min.js.map +7 -0
  25. package/node_modules/glob/dist/esm/pattern.d.ts +3 -0
  26. package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -1
  27. package/node_modules/glob/dist/esm/pattern.js +4 -0
  28. package/node_modules/glob/dist/esm/pattern.js.map +1 -1
  29. package/node_modules/glob/package.json +30 -10
  30. package/node_modules/lru-cache/package.json +7 -7
  31. package/node_modules/minimatch/README.md +3 -1
  32. package/node_modules/minimatch/dist/commonjs/ast.d.ts.map +1 -1
  33. package/node_modules/minimatch/dist/commonjs/ast.js +37 -27
  34. package/node_modules/minimatch/dist/commonjs/ast.js.map +1 -1
  35. package/node_modules/minimatch/dist/commonjs/brace-expressions.d.ts.map +1 -1
  36. package/node_modules/minimatch/dist/commonjs/brace-expressions.js +2 -4
  37. package/node_modules/minimatch/dist/commonjs/brace-expressions.js.map +1 -1
  38. package/node_modules/minimatch/dist/commonjs/escape.js +4 -4
  39. package/node_modules/minimatch/dist/commonjs/escape.js.map +1 -1
  40. package/node_modules/minimatch/dist/commonjs/index.d.ts +50 -0
  41. package/node_modules/minimatch/dist/commonjs/index.d.ts.map +1 -1
  42. package/node_modules/minimatch/dist/commonjs/index.js +37 -31
  43. package/node_modules/minimatch/dist/commonjs/index.js.map +1 -1
  44. package/node_modules/minimatch/dist/commonjs/unescape.js +4 -4
  45. package/node_modules/minimatch/dist/commonjs/unescape.js.map +1 -1
  46. package/node_modules/minimatch/dist/esm/ast.d.ts.map +1 -1
  47. package/node_modules/minimatch/dist/esm/ast.js +37 -27
  48. package/node_modules/minimatch/dist/esm/ast.js.map +1 -1
  49. package/node_modules/minimatch/dist/esm/brace-expressions.d.ts.map +1 -1
  50. package/node_modules/minimatch/dist/esm/brace-expressions.js +2 -4
  51. package/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -1
  52. package/node_modules/minimatch/dist/esm/escape.js +4 -4
  53. package/node_modules/minimatch/dist/esm/escape.js.map +1 -1
  54. package/node_modules/minimatch/dist/esm/index.d.ts +50 -0
  55. package/node_modules/minimatch/dist/esm/index.d.ts.map +1 -1
  56. package/node_modules/minimatch/dist/esm/index.js +37 -31
  57. package/node_modules/minimatch/dist/esm/index.js.map +1 -1
  58. package/node_modules/minimatch/dist/esm/unescape.js +4 -4
  59. package/node_modules/minimatch/dist/esm/unescape.js.map +1 -1
  60. package/node_modules/minimatch/package.json +3 -3
  61. package/node_modules/minipass/LICENSE.md +55 -0
  62. package/node_modules/minipass/dist/commonjs/index.d.ts +12 -16
  63. package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -1
  64. package/node_modules/minipass/dist/commonjs/index.js +13 -3
  65. package/node_modules/minipass/dist/commonjs/index.js.map +1 -1
  66. package/node_modules/minipass/dist/esm/index.d.ts +12 -16
  67. package/node_modules/minipass/dist/esm/index.d.ts.map +1 -1
  68. package/node_modules/minipass/dist/esm/index.js +3 -1
  69. package/node_modules/minipass/dist/esm/index.js.map +1 -1
  70. package/node_modules/minipass/package.json +9 -14
  71. package/node_modules/rimraf/README.md +29 -0
  72. package/node_modules/rimraf/dist/commonjs/fs.d.ts +9 -8
  73. package/node_modules/rimraf/dist/commonjs/fs.d.ts.map +1 -1
  74. package/node_modules/rimraf/dist/commonjs/index.d.ts.map +1 -1
  75. package/node_modules/rimraf/dist/commonjs/index.js +9 -3
  76. package/node_modules/rimraf/dist/commonjs/index.js.map +1 -1
  77. package/node_modules/rimraf/dist/commonjs/opt-arg.d.ts.map +1 -1
  78. package/node_modules/rimraf/dist/commonjs/opt-arg.js +2 -1
  79. package/node_modules/rimraf/dist/commonjs/opt-arg.js.map +1 -1
  80. package/node_modules/rimraf/dist/commonjs/path-arg.d.ts.map +1 -1
  81. package/node_modules/rimraf/dist/commonjs/path-arg.js +2 -1
  82. package/node_modules/rimraf/dist/commonjs/path-arg.js.map +1 -1
  83. package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts +2 -2
  84. package/node_modules/rimraf/dist/commonjs/readdir-or-error.d.ts.map +1 -1
  85. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.d.ts.map +1 -1
  86. package/node_modules/rimraf/dist/commonjs/rimraf-move-remove.js.map +1 -1
  87. package/node_modules/rimraf/dist/commonjs/rimraf-posix.d.ts.map +1 -1
  88. package/node_modules/rimraf/dist/commonjs/rimraf-posix.js +1 -2
  89. package/node_modules/rimraf/dist/commonjs/rimraf-posix.js.map +1 -1
  90. package/node_modules/rimraf/dist/commonjs/rimraf-windows.d.ts.map +1 -1
  91. package/node_modules/rimraf/dist/commonjs/rimraf-windows.js.map +1 -1
  92. package/node_modules/rimraf/dist/esm/bin.mjs.map +1 -1
  93. package/node_modules/rimraf/dist/esm/fs.d.ts +9 -8
  94. package/node_modules/rimraf/dist/esm/fs.d.ts.map +1 -1
  95. package/node_modules/rimraf/dist/esm/index.d.ts.map +1 -1
  96. package/node_modules/rimraf/dist/esm/index.js +10 -4
  97. package/node_modules/rimraf/dist/esm/index.js.map +1 -1
  98. package/node_modules/rimraf/dist/esm/opt-arg.d.ts.map +1 -1
  99. package/node_modules/rimraf/dist/esm/opt-arg.js +2 -1
  100. package/node_modules/rimraf/dist/esm/opt-arg.js.map +1 -1
  101. package/node_modules/rimraf/dist/esm/path-arg.d.ts.map +1 -1
  102. package/node_modules/rimraf/dist/esm/path-arg.js +2 -1
  103. package/node_modules/rimraf/dist/esm/path-arg.js.map +1 -1
  104. package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts +2 -2
  105. package/node_modules/rimraf/dist/esm/readdir-or-error.d.ts.map +1 -1
  106. package/node_modules/rimraf/dist/esm/rimraf-move-remove.d.ts.map +1 -1
  107. package/node_modules/rimraf/dist/esm/rimraf-move-remove.js +1 -1
  108. package/node_modules/rimraf/dist/esm/rimraf-move-remove.js.map +1 -1
  109. package/node_modules/rimraf/dist/esm/rimraf-posix.d.ts.map +1 -1
  110. package/node_modules/rimraf/dist/esm/rimraf-posix.js +1 -2
  111. package/node_modules/rimraf/dist/esm/rimraf-posix.js.map +1 -1
  112. package/node_modules/rimraf/dist/esm/rimraf-windows.d.ts.map +1 -1
  113. package/node_modules/rimraf/dist/esm/rimraf-windows.js +1 -1
  114. package/node_modules/rimraf/dist/esm/rimraf-windows.js.map +1 -1
  115. package/node_modules/rimraf/package.json +4 -19
  116. package/package.json +2 -2
  117. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/controller/AuthController.java.hbs +38 -42
  118. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/controller/ItemController.java.hbs +42 -0
  119. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/controller/PaymentsController.java.hbs +65 -22
  120. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/model/Item.java.hbs +38 -0
  121. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/model/User.java.hbs +41 -0
  122. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/repository/ItemRepository.java.hbs +9 -0
  123. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/repository/UserRepository.java.hbs +13 -0
  124. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/service/AuthService.java.hbs +62 -0
  125. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/service/StripeService.java.hbs +18 -18
  126. package/templates/java-spring/mvc/src/main/java/{{packagePath}}/{{projectNamePascalCase}}Application.java.hbs +2 -0
  127. package/templates/nestjs/mvc/package.json.hbs +6 -2
  128. package/templates/nestjs/mvc/prisma/schema.prisma.hbs +31 -0
  129. package/templates/nestjs/mvc/src/app.module.ts.hbs +3 -1
  130. package/templates/nestjs/mvc/src/auth/auth.service.ts.hbs +34 -31
  131. package/templates/nestjs/mvc/src/payments/payments.service.ts.hbs +26 -6
  132. package/templates/nestjs/mvc/src/prisma/prisma.module.ts.hbs +9 -0
  133. package/templates/nestjs/mvc/src/prisma/prisma.service.ts.hbs +15 -0
  134. package/templates/nestjs/mvc/src/services/items.service.ts.hbs +33 -20
  135. package/templates/nextjs/mvc/package.json.hbs +1 -0
  136. package/templates/nextjs/mvc/prisma/schema.prisma.hbs +60 -6
  137. package/templates/nextjs/mvc/src/app/api/webhook/route.ts.hbs +23 -18
  138. package/templates/nodejs-express/mvc/package.json.hbs +8 -4
  139. package/templates/nodejs-express/mvc/prisma/schema.prisma.hbs +31 -0
  140. package/templates/nodejs-express/mvc/src/config/database.ts.hbs +2 -9
  141. package/templates/nodejs-express/mvc/src/controllers/auth.controller.ts.hbs +40 -58
  142. package/templates/nodejs-express/mvc/src/controllers/items.controller.ts.hbs +29 -0
  143. package/templates/nodejs-express/mvc/src/models/README.md.hbs +10 -0
  144. package/templates/nodejs-express/mvc/src/prisma/client.ts.hbs +3 -0
  145. package/templates/nodejs-express/mvc/src/services/auth.service.ts.hbs +71 -0
  146. package/templates/nodejs-express/mvc/src/services/stripe.service.ts.hbs +35 -25
  147. package/templates/python-fastapi/mvc/app/controllers/auth.py.hbs +25 -16
  148. package/templates/python-fastapi/mvc/app/controllers/items.py.hbs +9 -7
  149. package/templates/python-fastapi/mvc/app/controllers/payments.py.hbs +42 -15
  150. package/templates/python-fastapi/mvc/app/database.py.hbs +17 -0
  151. package/templates/python-fastapi/mvc/app/main.py.hbs +4 -0
  152. package/templates/python-fastapi/mvc/app/models/item.py.hbs +11 -8
  153. package/templates/python-fastapi/mvc/app/models/user.py.hbs +15 -0
  154. package/templates/python-fastapi/mvc/app/repositories/item_repository.py.hbs +15 -0
  155. package/templates/python-fastapi/mvc/app/repositories/user_repository.py.hbs +15 -0
  156. package/templates/python-fastapi/mvc/app/services/item_service.py.hbs +17 -19
  157. package/node_modules/minipass/LICENSE +0 -15
  158. /package/node_modules/{@isaacs/balanced-match → balanced-match}/LICENSE.md +0 -0
  159. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/commonjs/index.d.ts +0 -0
  160. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/commonjs/index.d.ts.map +0 -0
  161. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/commonjs/index.js +0 -0
  162. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/commonjs/index.js.map +0 -0
  163. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/commonjs/package.json +0 -0
  164. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/esm/index.d.ts +0 -0
  165. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/esm/index.d.ts.map +0 -0
  166. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/esm/index.js +0 -0
  167. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/esm/index.js.map +0 -0
  168. /package/node_modules/{@isaacs/balanced-match → balanced-match}/dist/esm/package.json +0 -0
  169. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/LICENSE +0 -0
  170. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/commonjs/index.d.ts +0 -0
  171. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/commonjs/index.d.ts.map +0 -0
  172. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/commonjs/package.json +0 -0
  173. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/esm/index.d.ts +0 -0
  174. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/esm/index.d.ts.map +0 -0
  175. /package/node_modules/{@isaacs/brace-expansion → brace-expansion}/dist/esm/package.json +0 -0
@@ -1,32 +1,59 @@
1
- from fastapi import APIRouter, HTTPException
1
+ from fastapi import APIRouter, HTTPException, Request, Depends
2
2
  from pydantic import BaseModel
3
+ from sqlalchemy.orm import Session
4
+ import stripe
3
5
  import os
6
+ from app.database import get_db
4
7
 
5
8
  router = APIRouter()
6
9
 
10
+ stripe.api_key = os.getenv("STRIPE_SECRET_KEY")
11
+ webhook_secret = os.getenv("STRIPE_WEBHOOK_SECRET")
12
+
7
13
  class CheckoutRequest(BaseModel):
8
14
  price_id: str
9
15
  customer_id: str | None = None
10
16
 
11
17
  @router.post("/checkout")
12
18
  async def create_checkout(data: CheckoutRequest):
13
- # Stripe integration would go here
14
- # For now, return mock data
15
- return {
16
- "checkout_url": f"https://checkout.stripe.com/session_{data.price_id}",
17
- "session_id": "cs_test_1234567890"
18
- }
19
+ try:
20
+ session = stripe.checkout.Session.create(
21
+ mode="subscription",
22
+ payment_method_types=["card"],
23
+ line_items=[{"price": data.price_id, "quantity": 1}],
24
+ customer=data.customer_id,
25
+ success_url=f"{os.getenv('FRONTEND_URL')}/success?session_id={{CHECKOUT_SESSION_ID}}",
26
+ cancel_url=f"{os.getenv('FRONTEND_URL')}/cancel",
27
+ )
28
+ return {"checkout_url": session.url, "session_id": session.id}
29
+ except Exception as e:
30
+ raise HTTPException(status_code=500, detail=str(e))
19
31
 
20
32
  @router.post("/webhook")
21
- async def stripe_webhook(payload: dict):
22
- # Handle Stripe webhook events
23
- event_type = payload.get("type")
33
+ async def stripe_webhook(request: Request, db: Session = Depends(get_db)):
34
+ payload = await request.body()
35
+ sig_header = request.headers.get("stripe-signature")
36
+
37
+ try:
38
+ event = stripe.Webhook.construct_event(
39
+ payload, sig_header, webhook_secret
40
+ )
41
+ except ValueError as e:
42
+ raise HTTPException(status_code=400, detail="Invalid payload")
43
+ except stripe.error.SignatureVerificationError as e:
44
+ raise HTTPException(status_code=400, detail="Invalid signature")
45
+
46
+ event_type = event.get("type")
24
47
 
25
48
  if event_type == "checkout.session.completed":
26
- # Handle successful checkout
27
- pass
49
+ session = event.get("data").get("object")
50
+ print(f"Checkout completed: {session.get('id')}")
51
+ # Update user in db
28
52
  elif event_type == "customer.subscription.updated":
29
- # Handle subscription update
30
- pass
31
-
53
+ subscription = event.get("data").get("object")
54
+ print(f"Subscription updated: {subscription.get('id')}")
55
+ elif event_type == "customer.subscription.deleted":
56
+ subscription = event.get("data").get("object")
57
+ print(f"Subscription deleted: {subscription.get('id')}")
58
+
32
59
  return {"received": True}
@@ -0,0 +1,17 @@
1
+ from sqlalchemy import create_engine
2
+ from sqlalchemy.orm import sessionmaker, declarative_base
3
+ import os
4
+
5
+ DATABASE_URL = os.getenv("DATABASE_URL", "postgresql://postgres:postgres@localhost:5432/{{projectNameSnakeCase}}")
6
+
7
+ engine = create_engine(DATABASE_URL)
8
+ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
9
+
10
+ Base = declarative_base()
11
+
12
+ def get_db():
13
+ db = SessionLocal()
14
+ try:
15
+ yield db
16
+ finally:
17
+ db.close()
@@ -1,5 +1,9 @@
1
1
  from fastapi import FastAPI
2
2
  from app.controllers import health, auth, items, payments
3
+ from app.database import engine, Base
4
+
5
+ # Create tables (In production, use Alembic migrations instead)
6
+ Base.metadata.create_all(bind=engine)
3
7
 
4
8
  app = FastAPI(title="{{projectName}}")
5
9
 
@@ -1,11 +1,14 @@
1
- from dataclasses import dataclass, field
1
+ from sqlalchemy import Column, String, Float, DateTime
2
+ from app.database import Base
2
3
  from datetime import datetime
3
- from typing import Optional
4
4
  import uuid
5
5
 
6
- @dataclass
7
- class Item:
8
- id: str = field(default_factory=lambda: str(uuid.uuid4()))
9
- name: str = ""
10
- description: Optional[str] = None
11
- created_at: datetime = field(default_factory=datetime.now)
6
+ class Item(Base):
7
+ __tablename__ = "items"
8
+
9
+ id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
10
+ name = Column(String, nullable=False)
11
+ description = Column(String, nullable=True)
12
+ price = Column(Float, nullable=True)
13
+ created_at = Column(DateTime, default=datetime.utcnow)
14
+ updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
@@ -0,0 +1,15 @@
1
+ from sqlalchemy import Column, String, DateTime
2
+ from app.database import Base
3
+ from datetime import datetime
4
+ import uuid
5
+
6
+ class User(Base):
7
+ __tablename__ = "users"
8
+
9
+ id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4()))
10
+ email = Column(String, unique=True, index=True, nullable=False)
11
+ name = Column(String, nullable=True)
12
+ password = Column(String, nullable=False)
13
+ stripe_customer_id = Column(String, nullable=True)
14
+ created_at = Column(DateTime, default=datetime.utcnow)
15
+ updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
@@ -0,0 +1,15 @@
1
+ from sqlalchemy.orm import Session
2
+ from app.models.item import Item
3
+
4
+ class ItemRepository:
5
+ def get_all(self, db: Session) -> list[Item]:
6
+ return db.query(Item).all()
7
+
8
+ def get_by_id(self, db: Session, item_id: str) -> Item | None:
9
+ return db.query(Item).filter(Item.id == item_id).first()
10
+
11
+ def create(self, db: Session, item: Item) -> Item:
12
+ db.add(item)
13
+ db.commit()
14
+ db.refresh(item)
15
+ return item
@@ -0,0 +1,15 @@
1
+ from sqlalchemy.orm import Session
2
+ from app.models.user import User
3
+
4
+ class UserRepository:
5
+ def get_by_email(self, db: Session, email: str) -> User | None:
6
+ return db.query(User).filter(User.email == email).first()
7
+
8
+ def get_by_id(self, db: Session, user_id: str) -> User | None:
9
+ return db.query(User).filter(User.id == user_id).first()
10
+
11
+ def create(self, db: Session, user: User) -> User:
12
+ db.add(user)
13
+ db.commit()
14
+ db.refresh(user)
15
+ return user
@@ -1,24 +1,22 @@
1
+ from sqlalchemy.orm import Session
1
2
  from app.models.item import Item
2
3
  from app.schemas.item import ItemCreate
3
- from typing import List, Optional
4
+ from app.repositories.item_repository import ItemRepository
4
5
 
5
6
  class ItemService:
6
7
  def __init__(self):
7
- self.items: dict[str, Item] = {}
8
-
9
- def list_items(self) -> List[Item]:
10
- return list(self.items.values())
11
-
12
- def create_item(self, item_data: ItemCreate) -> Item:
13
- item = Item(name=item_data.name, description=item_data.description)
14
- self.items[item.id] = item
15
- return item
16
-
17
- def get_item(self, item_id: str) -> Optional[Item]:
18
- return self.items.get(item_id)
19
-
20
- def delete_item(self, item_id: str) -> bool:
21
- if item_id in self.items:
22
- del self.items[item_id]
23
- return True
24
- return False
8
+ self.item_repo = ItemRepository()
9
+
10
+ def list_items(self, db: Session):
11
+ return self.item_repo.get_all(db)
12
+
13
+ def create_item(self, item_data: ItemCreate, db: Session):
14
+ db_item = Item(
15
+ name=item_data.name,
16
+ description=item_data.description,
17
+ price=item_data.price
18
+ )
19
+ return self.item_repo.create(db, db_item)
20
+
21
+ def get_item(self, item_id: str, db: Session):
22
+ return self.item_repo.get_by_id(db, item_id)
@@ -1,15 +0,0 @@
1
- The ISC License
2
-
3
- Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors
4
-
5
- Permission to use, copy, modify, and/or distribute this software for any
6
- purpose with or without fee is hereby granted, provided that the above
7
- copyright notice and this permission notice appear in all copies.
8
-
9
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15
- IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.