MCPcopy
hub / github.com/grafana/k6 / Require

Method Require

js/modules/require_impl.go:16–68  ·  view source on GitHub ↗

Require is the actual call that implements require

(specifier string)

Source from the content-addressed store, hash-verified

14
15// Require is the actual call that implements require
16func (ms *ModuleSystem) Require(specifier string) (*sobek.Object, error) {
17 if !ms.resolver.locked {
18 if err := ms.resolver.usage.Uint64("usage/require", 1); err != nil {
19 ms.resolver.logger.WithError(err).Warn("couldn't report usage")
20 }
21 }
22
23 if specifier == "" {
24 return nil, errors.New("require() can't be used with an empty specifier")
25 }
26
27 rt := ms.vu.Runtime()
28 parentModuleStr := getCurrentModuleScript(ms.vu)
29
30 parentModule, _ := ms.resolver.sobekModuleResolver(nil, parentModuleStr)
31 m, err := ms.resolver.sobekModuleResolver(parentModule, specifier)
32 if err != nil {
33 return nil, err
34 }
35 if wm, ok := m.(*goModule); ok {
36 var gmi *goModuleInstance
37 gmi, err = ms.getModuleInstanceFromGoModule(wm)
38 if err != nil {
39 return nil, err
40 }
41 exports := toESModuleExports(gmi.mi.Exports())
42 return rt.ToValue(exports).ToObject(rt), nil
43 }
44 err = m.Link()
45 if err != nil {
46 return nil, err
47 }
48 var promise *sobek.Promise
49 if c, ok := m.(sobek.CyclicModuleRecord); ok {
50 promise = rt.CyclicModuleRecordEvaluate(c, ms.resolver.sobekModuleResolver)
51 } else {
52 panic(fmt.Sprintf("expected sobek.CyclicModuleRecord, but for some reason got a %T", m))
53 }
54 promisesThenIgnore(rt, promise)
55 switch promise.State() {
56 case sobek.PromiseStateRejected:
57 err = promise.Result().Export().(error) //nolint:forcetypeassert
58 case sobek.PromiseStateFulfilled:
59 default:
60 }
61 if err != nil {
62 return nil, err
63 }
64 if cjs, ok := m.(*cjsModule); ok {
65 return rt.GetModuleInstance(cjs).(*cjsModuleInstance).exports, nil //nolint:forcetypeassert
66 }
67 return rt.NamespaceObjectFor(m), nil
68}
69
70func (ms *ModuleSystem) getModuleInstanceFromGoModule(wm *goModule) (wmi *goModuleInstance, err error) {
71 rt := ms.vu.Runtime()

Callers 1

requireMethod · 0.80

Calls 13

getCurrentModuleScriptFunction · 0.85
toESModuleExportsFunction · 0.85
promisesThenIgnoreFunction · 0.85
Uint64Method · 0.80
WarnMethod · 0.80
sobekModuleResolverMethod · 0.80
ExportMethod · 0.80
ResultMethod · 0.80
RuntimeMethod · 0.65
ExportsMethod · 0.65
StateMethod · 0.65

Tested by

no test coverage detected